diff options
author | C. Scott Ananian <cscott@cscott.net> | 2011-11-10 23:33:09 (GMT) |
---|---|---|
committer | C. Scott Ananian <cscott@cscott.net> | 2011-11-10 23:33:09 (GMT) |
commit | 79f5678feeb16910c27ac6c24e93ca0f8b479c8d (patch) | |
tree | 71e79afc594338dd56f1d2dea5737cf30e993272 /util/gtkcompat.py | |
parent | 5a01e94347c1cd78b0deb4fc64c649536ae6ac1f (diff) |
Fix 'read pixel' operation under GTK3 (now faster in GTK2 as well).
Diffstat (limited to 'util/gtkcompat.py')
-rw-r--r-- | util/gtkcompat.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/util/gtkcompat.py b/util/gtkcompat.py index c188a13..87622b8 100644 --- a/util/gtkcompat.py +++ b/util/gtkcompat.py @@ -29,6 +29,7 @@ except ValueError, ImportError: import gconf import pango as Pango import pangocairo as PangoCairo + import cairo Gdk = Gtk.gdk Rectangle = Gdk.Rectangle @@ -42,6 +43,16 @@ except ValueError, ImportError: Gdk.cairo_set_source_pixbuf = \ lambda cr, img, x, y: cr.set_source_pixbuf(img, x, y) + def gdk_pixbuf_get_from_surface(surface, x, y, w, h): + pixmap = Gdk.Pixmap(None, w, h, 24) + cr = pixmap.cairo_create() + cr.set_source_surface(surface, -x, -y) + cr.rectangle(0,0,w,h); + cr.set_operator(cairo.OPERATOR_SOURCE) + cr.fill() + cmap = Gdk.colormap_get_system() + return Gdk.pixbuf_get_from_drawable(None, pixmap, cmap, 0, 0, 0, 0, w, h) + Gdk.pixbuf_get_from_surface = gdk_pixbuf_get_from_surface class GdkEventMask: EXPOSURE_MASK = Gdk.EXPOSURE_MASK |