Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 789a4dca4953f037223e830336ef4af3 > files > 1073

python-enthought-enable-3.2.0-2mdv2010.0.i586.rpm

from math import sin, cos, pi

from numpy import array, arange

import enthought.kiva
from enthought.kiva import agg

def draw_circle(gc,radius=2):
    gc.begin_path()
    angle = 0
    gc.move_to(radius*cos(angle), radius*sin(angle))
    for angle in arange(pi/4.,2*pi,pi/4.):
        gc.line_to(radius*cos(angle), radius*sin(angle))
    gc.close_path()
    gc.fill_path()

star_points = [(-20,-30),
               (0, 30),
               (20,-30),
               (-30,10),
               (30,10),
               (-20,-30)]
ring_point = (0,35)                   
ring_radius = 5

#fill_color = array((1.0,0,0))
fill_color = array((200.,184.,106.))/255.
point_color = array((.3,.3,.3))
line_color = point_color

for i in range(len(star_points)+1):
    gc = agg.GraphicsContextArray((800,800))
    gc.scale_ctm(8.0,8.0)
    gc.translate_ctm(50,50)

    # draw star
    gc.set_alpha(.5)
    x,y = star_points[0]
    gc.move_to(x,y)
    for x,y in star_points[1:]:
        gc.line_to(x,y)    
    gc.close_path()
    gc.set_fill_color(fill_color)
    gc.get_fill_color()
    gc.fill_path()
    
      
    gc.set_alpha(.4)
    gc.set_stroke_color(line_color)
    gc.set_fill_color(line_color)
    gc.set_line_width(12)
    
    if i > 0:
        gc.save_state()
        x,y = star_points[0]
        gc.translate_ctm(x,y)
        draw_circle(gc)
        gc.restore_state()
            
    if i > 1:
        points = star_points[:i]
        gc.save_state()
        x,y = points[0]
        gc.move_to(x,y)        
        for x,y in points[1:]:
            gc.line_to(x,y)                      
        gc.stroke_path()  
        gc.restore_state()  
             
    """
    for x,y in points:
        gc.save_state()
        gc.translate_ctm(x,y)
        draw_circle(gc)
        gc.restore_state()
    """
    gc.save("star_path%d.bmp" % i)
    
# draw star
line_color = (0.0,0.0,0.0)
gc = agg.GraphicsContextArray((800,800))
gc.scale_ctm(8.0,8.0)
gc.translate_ctm(50,50)
print 'line color:', line_color
print 'fill color:', fill_color
gc.set_stroke_color(line_color)
gc.set_fill_color(fill_color)
gc.set_line_width(12)
x,y = star_points[0]
gc.move_to(x,y)
for x,y in star_points[1:]:
    gc.line_to(x,y)    
gc.close_path()
gc.set_fill_color(fill_color)
gc.get_fill_color()
gc.draw_path()
gc.save("star_path7.bmp")

# draw star
gc = agg.GraphicsContextArray((1700,400))
line_color = (0.0,0.0,0.0)
gc.scale_ctm(4.0,4.0)

offsets = array(((0,0),(80,0),(160,0),(240,0),(320,0)))
modes = [agg.FILL, agg.EOF_FILL, agg.STROKE, agg.FILL_STROKE, agg.EOF_FILL_STROKE]
pairs = zip(modes, offsets)
center = array((50,50))
for mode, offset in pairs:
    gc.save_state()
    xo,yo = center+offset
    gc.translate_ctm(xo,yo)
    print 'line color:', line_color
    print 'fill color:', fill_color
    gc.set_stroke_color(line_color)
    gc.set_fill_color(fill_color)
    gc.set_line_width(12)
    x,y = star_points[0]
    gc.move_to(x,y)
    for x,y in star_points[1:]:
        gc.line_to(x,y)    
    gc.close_path()
    gc.set_fill_color(fill_color)
    gc.get_fill_color()
    gc.draw_path(mode)
    gc.restore_state()
gc.save("star_path8.bmp")