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 ] ]

Reply via email to