/static/june_2007_style/circle.py

https://bitbucket.org/h_morita_dbcls/galaxy-central · Python · 55 lines · 36 code · 15 blank · 4 comment · 5 complexity · afd2a18b492ebe15ed429ac36df08387 MD5 · raw file

  1. #!/usr/bin/env python
  2. """
  3. usage: %prog width height bg_color hatch_color [color alpha stop_pos] +
  4. """
  5. from __future__ import division
  6. import sys
  7. import cairo
  8. from math import pi
  9. assert sys.version_info[:2] >= ( 2, 4 )
  10. def parse_css_color( color ):
  11. if color.startswith( '#' ):
  12. color = color[1:]
  13. if len( color ) == 3:
  14. r = int( color[0], 16 )
  15. g = int( color[1], 16 )
  16. b = int( color[2], 16 )
  17. elif len( color ) == 6:
  18. r = int( color[0:2], 16 )
  19. g = int( color[2:4], 16 )
  20. b = int( color[4:6], 16 )
  21. else:
  22. raise Exception( "Color should be 3 hex numbers" )
  23. return r/256, g/256, b/256
  24. size = int( sys.argv[1] )
  25. surface = cairo.ImageSurface( cairo.FORMAT_ARGB32, size, size )
  26. c = cairo.Context( surface )
  27. c.set_line_width( 1 )
  28. c.arc( size / 2.0, size / 2.0, ( size - 1 ) / 2.0, 0, 2 * pi )
  29. c.set_source_rgb( *parse_css_color( sys.argv[2] ) )
  30. c.fill_preserve()
  31. c.set_source_rgb( *parse_css_color( sys.argv[3] ) )
  32. c.stroke()
  33. t = size / 4.0
  34. arrow = sys.argv[4]
  35. if arrow == 'right':
  36. c.move_to( t + 1, t )
  37. c.line_to( 3*t - 1, 2*t )
  38. c.line_to( t + 1, 3*t )
  39. c.stroke()
  40. surface.write_to_png( "/dev/stdout" )