Lightningbeam/GUI/GtkGI/Images_xlib.py

37 lines
1.1 KiB
Python

#
# Python GUI - Images - Gtk
#
from gi.repository import Gdk
from GtkImageScaling import gtk_scale_pixbuf
from GImages import Image as GImage
class Image(GImage):
def _init_from_file(self, file):
self._gdk_pixbuf = GdkPixbuf.Pixbuf.new_from_file(file)
def get_width(self):
return self._gdk_pixbuf.get_width()
def get_height(self):
return self._gdk_pixbuf.get_height()
def draw(self, canvas, src_rect, dst_rect):
sx, sy, sr, sb = src_rect
dx, dy, dr, db = dst_rect
sw = sr - sx
sh = sb - sy
dw = dr - dx
dh = db - dy
gdk_pixbuf = self._gdk_pixbuf
if sw <> dw or sh <> dh:
gdk_scaled_pixbuf = gtk_scale_pixbuf(gdk_pixbuf, sx, sy, sw, sh, dw, dh)
canvas._gdk_drawable.draw_pixbuf(
canvas._gdk_gc, gdk_scaled_pixbuf,
0, 0, dx, dy, dw, dh, Gdk.RGB_DITHER_NORMAL, 0, 0)
else:
canvas._gdk_drawable.draw_pixbuf(
canvas._gdk_gc, self._gdk_pixbuf,
sx, sy, dx, dy, sw, sh, Gdk.RGB_DITHER_NORMAL, 0, 0)