So the comment I propose mixing what you said with my understanding:

I'm an abstract class which introduce a filter between a drawing request and the final output, handled by #mapColor:

For each potential pixel operation like:��source -> op -> output
it introducing a color mapping stage:��source -> op -> mapping -> output

Then #mapColor: can be redefined in subclasses to implement more specific behavior. For example:
- ShadowDrawingCanvas will replace the rendered color with the color of shadow (if not transparent).
- AlphaBlendingCanvas will add or intensify alpha of rendered color.

For an easy to understand example see ��#drawPolygon:color:borderWidth:borderColor:

ShadowDrawingCanvas:
see ColorMappingCanvas comment.

AlphaBlendingCanvas:
see ColorMappingCanvas comment.


Laurent.

On Mon, Feb 14, 2011 at 7:57 PM, Igor Stasenko <siguctua@gmail.com> wrote:
On 14 February 2011 18:45, laurent laffont <laurent.laffont@gmail.com> wrote:
> Today: ��ColorMappingCanvas
>

As far as i understood, this class is abstract, and its subclasses
implement more specific behavior
- shadow
- semitransparency mapping


The idea of is kind of canvas is to modify/filter the final output in
rendering pipe..
i.e., for each potential pixel operation like:

source -> op -> output

it introducing a color mapping stage:

source -> op -> mapping -> output


So, then for instance you could make a subclass which could turn all
colors to be grayscale (disregarding that initial input was in
colors).

in fact i think this guy took wrong direction. It is much more
effective to let the canvas to draw whatever it wants to some
backup/temporary surface, and once it done, simply blit + color-map
result to destination form using one, single strike.


--
Best regards,
Igor Stasenko AKA sig.