BlElement >>drawStrokeOnAthensCanvas: aCanvas "Actually render stroke of a receiver on aCanvas in local bounds. Override to customize. aCanvas is an instance of AthensCanvas aCanvas must not be nil" | pathTransform strokePath strokeScaling strokeOffset | "fast exit if stroke has no width or it is transparent" (self shape strokePaint width <= 0 or: [ self shape strokePaint isTransparent ]) ifTrue: [ ^ self ]. pathTransform := aCanvas pathTransform. strokePath := self shape path strokePathOn: aCanvas. strokeScaling := self shape path strokeScaling. strokeOffset := self shape path strokeOffset. pathTransform restoreAfter:[ pathTransform translateBy: strokeOffset * strokeScaling. pathTransform scaleBy: strokeScaling. aCanvas setPaint: self shape strokePaint; drawShape: strokePath ] BlElement >>drawFillOnAthensCanvas: aCanvas "Actually render fill of a receiver on aCanvas in local bounds. Override to customize. aCanvas is an instance of AthensCanvas aCanvas must not be nil" | pathTransform fillPath fillScaling fillOffset | pathTransform := aCanvas pathTransform. "fast exit if fill is transparent" (self shape fillPaint isTransparent) ifTrue: [ ^ self ]. fillPath := self shape path fillPathOn: aCanvas. fillScaling := self shape path fillScaling. fillOffset := self shape path fillOffset. pathTransform restoreAfter: [ pathTransform translateBy: fillOffset * fillScaling. pathTransform scaleBy: fillScaling. aCanvas setPaint: self shape fillPaint; drawShape: fillPath ]