summaryrefslogtreecommitdiff
path: root/pango-view/viewer-cairo.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2009-03-14 21:33:07 -0400
committerBehdad Esfahbod <behdad@behdad.org>2009-03-14 21:33:07 -0400
commitdf05d117a5c168fb90138d7d6bae760c1b2851af (patch)
tree128d53734e16723adbdee38762f9f5d57c9c5c1c /pango-view/viewer-cairo.c
parent3310b979c486e38182d89132d6b6b3e3d7ffb728 (diff)
downloadpango-df05d117a5c168fb90138d7d6bae760c1b2851af.tar.gz
Bug 523166 – pango-view opens display even when invoked with -q
Works now.
Diffstat (limited to 'pango-view/viewer-cairo.c')
-rw-r--r--pango-view/viewer-cairo.c85
1 files changed, 77 insertions, 8 deletions
diff --git a/pango-view/viewer-cairo.c b/pango-view/viewer-cairo.c
index eb56d455..0f3cd5ca 100644
--- a/pango-view/viewer-cairo.c
+++ b/pango-view/viewer-cairo.c
@@ -21,16 +21,21 @@
#include "config.h"
#include "viewer-cairo.h"
+#include "viewer-render.h"
+
+#include <cairo.h>
+
+
#ifdef HAVE_CAIRO_XLIB
#include "viewer-x.h"
#include <cairo-xlib.h>
static cairo_surface_t *
-cairo_x_view_create_surface (gpointer instance,
- gpointer surface,
- int width,
- int height)
+cairo_x_view_iface_create_surface (gpointer instance,
+ gpointer surface,
+ int width,
+ int height)
{
XViewer *x = (XViewer *)instance;
Drawable drawable = (Drawable) surface;
@@ -42,12 +47,76 @@ cairo_x_view_create_surface (gpointer instance,
static CairoViewerIface cairo_x_viewer_iface = {
&x_viewer,
- cairo_x_view_create_surface
+ cairo_x_view_iface_create_surface
};
+#endif /* HAVE_CAIRO_XLIB */
-const CairoViewerIface *
-get_default_cairo_viewer_iface (void)
+
+
+static gpointer
+cairo_image_view_create (const PangoViewer *klass G_GNUC_UNUSED)
+{
+ return NULL;
+}
+
+static void
+cairo_image_view_destroy (gpointer instance G_GNUC_UNUSED)
+{
+}
+
+static gpointer
+cairo_image_view_create_surface (gpointer instance,
+ int width,
+ int height)
+{
+ /* TODO: Be smarter about format? */
+ return cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height);
+}
+
+static void
+cairo_image_view_destroy_surface (gpointer instance,
+ gpointer surface)
+{
+ cairo_surface_destroy (surface);
+}
+
+const PangoViewer cairo_image_viewer = {
+ "CairoImage",
+ NULL,
+ NULL,
+ cairo_image_view_create,
+ cairo_image_view_destroy,
+ NULL,
+ cairo_image_view_create_surface,
+ cairo_image_view_destroy_surface,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+static cairo_surface_t *
+cairo_image_view_iface_create_surface (gpointer instance,
+ gpointer surface,
+ int width,
+ int height)
{
- return &cairo_x_viewer_iface;
+ return surface;
}
+
+static CairoViewerIface cairo_image_viewer_iface = {
+ &cairo_image_viewer,
+ cairo_image_view_iface_create_surface
+};
+
+const CairoViewerIface *
+get_cairo_viewer_iface (void)
+{
+#ifdef HAVE_CAIRO_XLIB
+ if (opt_display)
+ return &cairo_x_viewer_iface;
#endif /* HAVE_CAIRO_XLIB */
+
+ return &cairo_image_viewer_iface;
+}