I saw in bleedingEdge it is different and looks better.
Now I was wondering why shape did not do the rendering and I thought
that this is may be because a shape can be used for doing something else
than rendering. For example clipping or as igor mentioned defining the
shape of the interaction
drawOnSpartaCanvas: aCanvas
"Actually render receiver on aCanvas in local bounds.
Override to customize.
aCanvas is an instance of AthensCanvas
aCanvas must not be nil"
self assert: self shape path context isNotNil.
aCanvas
clipPreserveBy: self shape during: [
aCanvas paintGroup: [
aCanvas setPaint: self shape fillPaint.
aCanvas fillPreserve.
aCanvas paintMode source.
aCanvas setStrokePaint: self shape strokePaint.
aCanvas stroke ] ]
unprotectedFullDrawOnSpartaCanvas: aCanvas
"Draw the full structure on the given Canvas withing drawing bounds
without caring about any errors and visibility. I am responsible for
clipping and transforming canvas's path to local coordinates
to allow simpler actual drawing in drawOnAthensCanvas:
Additional checks should be implemented in fullDrawOnAthensCanvas:
aCanvas is an instance of AthensCanvas.
aCanvas must not be nil.
@see BlElement>>#fullDrawOnAthensCanvas:
@see BlElement>>#drawOnAthensCanvas:"
self shape adaptTo: self.
self shape path context: aCanvas.
aCanvas
transform: self transformation
during: [
self clippingStrategy
clip: self
on: aCanvas
during: [ self drawOnSpartaCanvas: aCanvas ]
childrenDuring: [ self drawChildrenOnSpartaCanvas:
aCanvas ] ]