[squeak-dev] The Trunk: Morphic-bf.627.mcz

Chris Muller asqueaker at gmail.com
Tue Oct 9 23:58:22 UTC 2012


I removed my Inbox submission (Morphic-cmm.442) for fixing this which
you rejected in June 2010.  I'm glad you finally found a solution that
works for you.


On Tue, Oct 9, 2012 at 5:01 PM,  <commits at source.squeak.org> wrote:
> Bert Freudenberg uploaded a new version of Morphic to project The Trunk:
> http://source.squeak.org/trunk/Morphic-bf.627.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-bf.627
> Author: bf
> Time: 9 October 2012, 3:00:33.903 pm
> UUID: 2d7d0432-9723-4629-a850-3371eb3aca8b
> Ancestors: Morphic-bf.626
>
> For drawing rotated forms less than 32 bits deep, use Form paint rule.
>
> =============== Diff against Morphic-bf.626 ===============
>
> Item was changed:
>   ----- Method: FormCanvas>>transformBy:clippingTo:during:smoothing: (in category 'drawing-support') -----
>   transformBy: aDisplayTransform clippingTo: aClipRect during: aBlock    smoothing: cellSize
>
>         "Note: This method has been originally copied from TransformationMorph."
>         | innerRect patchRect sourceQuad warp start subCanvas |
>         (aDisplayTransform isPureTranslation) ifTrue:[
>                 ^aBlock value: (self copyOffset: aDisplayTransform offset negated truncated
>                                                         clipRect: aClipRect)
>         ].
>         "Prepare an appropriate warp from patch to innerRect"
>         innerRect := aClipRect.
>         patchRect := (aDisplayTransform globalBoundsToLocal: innerRect) truncated.
>         sourceQuad := (aDisplayTransform sourceQuadFor: innerRect)
>                                         collect: [:p | p - patchRect topLeft].
>         warp := self warpFrom: sourceQuad toRect: innerRect.
>
>         "Render the submorphs visible in the clipping rectangle, as patchForm"
>         start := (self depth = 1 and: [self isShadowDrawing not])
>                 "If this is true B&W, then we need a first pass for erasure."
>                 ifTrue: [1] ifFalse: [2].
>         start to: 2 do:
>                 [:i | "If i=1 we first make a shadow and erase it for opaque whites in B&W"
>                 subCanvas := self class extent: patchRect extent depth: self depth.
>                 i=1     ifTrue: [subCanvas shadowColor: Color black.
>                                         warp combinationRule: Form erase]
>                         ifFalse: [self isShadowDrawing ifTrue:
>                                         [subCanvas shadowColor: self shadowColor].
> +                               warp combinationRule: (self depth = 32
> +                                       ifTrue: [Form blendAlphaScaled]
> +                                       ifFalse: [Form paint])].
> -                                       warp combinationRule: (self depth = 32 ifTrue: [Form blendAlphaScaled] ifFalse: [Form blend])].
>                 subCanvas
>                         translateBy: patchRect topLeft negated
>                         during: aBlock.
>                 warp sourceForm: subCanvas form; cellSize: cellSize; warpBits.
>                 warp sourceForm: nil.  subCanvas := nil "release space for next loop"]
>   !
>
>


More information about the Squeak-dev mailing list