I can think of two things:
- Inadequate control of hue. Adding, subtracting, and setting hue is not enough. In rose.cfdg I wanted to have the petals start as red at the periphery and trend to yellow in the center. But I kept overshooting past yellow to green. So I resorted to a hack of fading to transparent and having a solid yellow rose underneath unfade from transparent to solid.
There needs to be a syntax for saying "add x to hue, but don't go past y" and probably also "take me x% closer to hue y". Also, the GarishRainbow example is not really that garish because I had to do something to stop it from going past purple back to red. I don't know what kind of feature we could add to stop the rainbow at purple. Maybe a general recursion depth limit. - I don't like that we created a new syntax element for specifying the color and alpha parameters. I wonder if we should just allow normal shape adjustments on the startshape line. If you want a canvas with color then you need to have a hue or sat adjustment in startshape, even if it is a meaningless 'hue =0'. To enable alpha you would need to have an alpha adjustment ('a =1' or 'a =0'). These color adjustments could also be used to set the background to something other than opaque white. But there are two things about this approach that are kind of ugly:
- The syntax allows transforms (size, rotate, flip, etc) but do we want to allow them to actually have meaning? If we did then we would have a strange hybrid: color adjusters change the background and geometry adjusters change the initial shape.
- Some canvas parameters, such as watercolor blending, will not have a corresponding shape adjustment factor.