Learning Compose. 

Trying the code below to rotate images. 

The rotate function seems to work on the line-drawn "V" but not on the 
colored checker box. 

How do I fix this so the rotate function works for drawings like the 
checker box?

Some outputs attached.

Thank you for your advice.


********

using Compose
using Color 

# draw a black box
function blackbox()
   compose(context(), rectangle(), fill("black"))
end

# draw a blue box
function bluebox()
   compose(context(), rectangle(), fill("lightblue"))
end

# join pic2 to pic1 horizontally
function hsplice(pic1, pic2)
   compose(context(), compose(context(0.0, 0.0, 0.5, 1.0), pic1),
           compose(context(0.5, 0.0, 0.5, 1.0), pic2))
end

# join pic2 to pic1 vertically
function vsplice(pic1, pic2)
   compose(context(), compose(context(0.0, 0.0, 1, 0.5), pic1),
           compose(context(0.0, 0.5, 1, 0.5), pic2))
end

# rotate pic counter-clockwise 90 degrees
function rotate(pic)
    compose(context(rotation=Rotation(-pi/2)), pic)
end

# draw a checker pattern
function checker(p1, p2)
   compose(vsplice(hsplice(p1, p2),
                   hsplice(p2, p1)))
end


# cpic is a blue and black checker picture
cpic = checker(bluebox(), blackbox())

# cimg receives cpic
cimg = SVG("cpic.svg", 8cm, 8cm)

# draw cpic to cimg
draw(cimg, cpic)

#rotate checker:
rpic = rotate(cpic)
rimg = SVG("rpic.svg", 8cm, 8cm)
draw(rimg, rpic)

# check rotate function:

# points to draw a "V"
Vpoints = [ (0.2, 0),
            (0.5, 1),
            (0.8, 0) ]


# draw a V:
vpic = compose(context(), stroke("black"), line(Vpoints))

# file for "V" drawing:
vimg = SVG("vimg.svg", 8cm, 8cm)

# draw vimg:
draw(vimg, vpic)

# rotate vpic:
rvpic = rotate(vpic)
rvimg = SVG("rvimg.svg", 8cm, 8cm)
draw(rvimg, rvpic)



Reply via email to