diff options
Diffstat (limited to 'examples/cairo_snippets/snippets_png.py')
-rwxr-xr-x | examples/cairo_snippets/snippets_png.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/examples/cairo_snippets/snippets_png.py b/examples/cairo_snippets/snippets_png.py new file mode 100755 index 0000000..b499c6c --- /dev/null +++ b/examples/cairo_snippets/snippets_png.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python +"""Python version of cairo-demo/cairo_snippets/cairo_snippets_png.c +""" + +from __future__ import division +from math import pi as M_PI # used by many snippets +import sys + +import cairo +if not cairo.HAS_PNG_FUNCTIONS: + raise SystemExit ('cairo was not compiled with PNG support') + +from snippets import snip_list, snippet_normalize + + +width, height = 256, 256 # used by snippet_normalize() + + +def do_snippet (snippet): + if verbose_mode: + print 'processing %s' % snippet, + + surface = cairo.ImageSurface (cairo.FORMAT_ARGB32, width, height) + cr = cairo.Context (surface) + + cr.save() + try: + execfile ('snippets/%s.py' % snippet, globals(), locals()) + except: +# exc_type, exc_value = sys.exc_info()[:2] +# print >> sys.stderr, exc_type, exc_value + raise + else: + cr.restore() + surface.write_to_png ('snippets/%s.png' % snippet) + + if verbose_mode: + print + +if __name__ == '__main__': + verbose_mode = True + if len(sys.argv) > 1 and sys.argv[1] == '-s': + verbose_mode = False + del sys.argv[1] + + if len(sys.argv) > 1: # do specified snippets + snippet_list = sys.argv[1:] + else: # do all snippets + snippet_list = snip_list + + for s in snippet_list: + do_snippet (s) |