Hi Blockers

I do not really understand why drawOnAthensCanvas: is not defined on BlShape
(especially when we see how many self space are defined in this method.
And this is one of the few things I thought I understood from bloc (grouping the rendering in a separate object).


drawOnAthensCanvas: aCanvas
    "Actually render receiver on aCanvas in local bounds.
    Override to customize.
    aCanvas is an instance of AthensCanvas
    aCanvas must not be nil"

    | pathTransform |
    pathTransform := aCanvas pathTransform.
    "First we fill"
    pathTransform
        restoreAfter:
            [ | path fillExtent fillTranslation |
            "We fill inside natural element's bounds"
fillExtent := self shape path fillExtentFor: self shape inBounds: self localBounds.
            path := self shape path pathOn: aCanvas forExtent: fillExtent.
            "Translate fill if needed"
            fillTranslation := self shape path
                fillTranslationFor: self shape
                inBounds: self localBounds.
            pathTransform translateBy: fillTranslation.
            aCanvas
                setPaint: self shape fillPaint;
                drawShape: path ].
    pathTransform
        restoreAfter:
            [ | path strokeExtent strokeTranslation |
            "We stroke inside natural element's bounds"
strokeExtent := self shape path strokeExtentFor: self shape inBounds: self localBounds. path := self shape path pathOn: aCanvas forExtent: strokeExtent.
            "Translate stroke if needed"
            strokeTranslation := self shape path
                strokeTranslationFor: self shape
                inBounds: self localBounds.
            pathTransform translateBy: strokeTranslation.
            aCanvas
                setPaint: self shape strokePaint;
                drawShape: path ]

Reply via email to