home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / share / doc / python-gnome2-desktop / examples / rsvg / rsvg-cairo.py
Encoding:
Python Source  |  2006-04-18  |  1023 b   |  52 lines

  1. #!/usr/bin/env python
  2.  
  3. import sys
  4. import cairo
  5. import rsvg
  6. import gtk
  7.  
  8.  
  9. BORDER_WIDTH = 10
  10.  
  11.  
  12. def delete_cb(win, event):
  13.     gtk.main_quit()
  14.  
  15.  
  16. def expose_cairo(win, event, svg):
  17.  
  18.     x, y, w, h = win.allocation
  19.     cr = win.window.cairo_create()
  20.     cr.set_source_color(win.style.fg[win.state])
  21.     cr.rectangle(BORDER_WIDTH, BORDER_WIDTH,
  22.                  w - 2*BORDER_WIDTH, h - 2*BORDER_WIDTH)
  23.     cr.set_line_width(5.0)
  24.     cr.set_line_join(cairo.LINE_JOIN_ROUND)
  25.     cr.stroke()
  26.  
  27.     if svg != None:
  28.         svg.render_cairo(cr)
  29.  
  30.     return True
  31.  
  32. def main():
  33.     win = gtk.Window ()
  34.     win.connect("delete-event", delete_cb)
  35.  
  36.     svg = None
  37.     if (len (sys.argv) > 1):
  38.         svg = rsvg.Handle(file=sys.argv[1])
  39.     else:
  40.         raise SystemExit("need svg file")
  41.  
  42.     win.connect("expose-event", expose_cairo, svg)
  43.  
  44.     print svg.props.width, svg.props.height, svg.props.em, svg.props.ex
  45.  
  46.     win.show_all()
  47.     win.connect("destroy", lambda w: gtk.main_quit())
  48.     gtk.main()
  49.  
  50. if __name__ == '__main__':
  51.     main()
  52.