diff options
Diffstat (limited to 'show_svg.py')
-rw-r--r-- | show_svg.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/show_svg.py b/show_svg.py new file mode 100644 index 0000000..bd76ed1 --- /dev/null +++ b/show_svg.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python + +import sys +import cairo +import rsvg +import gtk + + +BORDER_WIDTH = 10 + + +def delete_cb(win, event): + gtk.main_quit() + + +def expose_cairo(win, event, svg): + + x, y, w, h = win.allocation + cr = win.window.cairo_create() + cr.set_source_color(win.style.fg[win.state]) + cr.rectangle(BORDER_WIDTH, BORDER_WIDTH, + w - 2*BORDER_WIDTH, h - 2*BORDER_WIDTH) + cr.set_line_width(5.0) + cr.set_line_join(cairo.LINE_JOIN_ROUND) + cr.stroke() + + if svg != None: + matrix = cairo.Matrix(3,0,0,3,0, 0) + #cairo.Matrix.rotate( matrix, prop.rot ) + cr.transform (matrix) + svg.render_cairo(cr) + + return True + +def main(): + win = gtk.Window () + win.connect("delete-event", delete_cb) + + svg = None + if (len (sys.argv) > 1): + svg = rsvg.Handle(file=sys.argv[1]) + else: + raise SystemExit("need svg file") + + win.connect("expose-event", expose_cairo, svg) + + print svg.props.width, svg.props.height, svg.props.em, svg.props.ex + + win.show_all() + win.connect("destroy", lambda w: gtk.main_quit()) + gtk.main() + +if __name__ == '__main__': + main() |