/* FIXME: Should probably buffer calls to libtiff with TIFFSetWarningHandler
*/
+#include "config.h"
+
+#include <config.h>
#include <stdio.h>
#include <glib.h>
+#include <glib/gi18n.h>
#include "tiffio.h"
#include "tiff2ps.h"
#include "ev-document-misc.h"
#include "ev-document-thumbnails.h"
#include "ev-file-exporter.h"
+#include "ev-file-helpers.h"
struct _TiffDocumentClass
{
static void tiff_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface);
static void tiff_document_document_file_exporter_iface_init (EvFileExporterIface *iface);
-G_DEFINE_TYPE_WITH_CODE (TiffDocument, tiff_document, G_TYPE_OBJECT,
- { G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT,
- tiff_document_document_iface_init);
+EV_BACKEND_REGISTER_WITH_CODE (TiffDocument, tiff_document,
+ {
G_IMPLEMENT_INTERFACE (EV_TYPE_DOCUMENT_THUMBNAILS,
tiff_document_document_thumbnails_iface_init);
G_IMPLEMENT_INTERFACE (EV_TYPE_FILE_EXPORTER,
gint rowstride, bytes;
guchar *pixels = NULL;
guchar *p;
- GdkPixbuf *pixbuf;
- GdkPixbuf *scaled_pixbuf;
- GdkPixbuf *rotated_pixbuf;
cairo_surface_t *surface;
cairo_surface_t *rotated_surface;
static const cairo_user_data_key_t key;
if (width <= 0 || height <= 0)
return NULL;
+#ifdef HAVE_CAIRO_FORMAT_STRIDE_FOR_WIDTH
+ rowstride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, width);
+#else
rowstride = width * 4;
if (rowstride / 4 != width)
/* overflow */
return NULL;
-
+#endif
+
bytes = height * rowstride;
if (bytes / rowstride != height)
/* overflow */