Hello, very good remark. This is one of the main consequence of the design review we made recently. In the first design, this was the case, the drawing was delegated. For now, it is a known issue of the current design. Cheers Alain
On 25 févr. 2016, at 09:56, stepharo <stepharo@free.fr> wrote:
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 ]