diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2009-03-14 21:33:07 -0400 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2009-03-14 21:33:07 -0400 |
commit | df05d117a5c168fb90138d7d6bae760c1b2851af (patch) | |
tree | 128d53734e16723adbdee38762f9f5d57c9c5c1c /pango-view/viewer-cairo.c | |
parent | 3310b979c486e38182d89132d6b6b3e3d7ffb728 (diff) | |
download | pango-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.c | 85 |
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; +} |