[squeak-dev] The Trunk: MorphicExtras-hjh.210.mcz

H. Hirzel hannes.hirzel at gmail.com
Tue Oct 3 17:28:27 UTC 2017


Clarification:

The previous mail is about a way to find out how the NullEncoder and
subclasses hierarchy works.

The discussion in the thread 'What is the task of NullEncoder?' has
shown in the meantime that it is NOT a good idea to move Canvas from

    FlattenEncoder subclass: #Canvas

to

    Object subclass: Canvas

It should be kept as is. To have the Postscript support smoke test is
still a good thing though. There should be actually more Postscript
tests ....

--Hannes

On 9/30/17, H. Hirzel <hannes.hirzel at gmail.com> wrote:
> Thank you for the commit, David.
>
> This test now nicely shows what happens if you move
>
>     FlattenEncoder subclass: #Canvas
>
> to
>
>     Object subclass: Canvas
>
> thus separating the Canvas hierarchy from the NullEncoder -
> FlattenEncoder hierarchy.
>
>
> -------------------------
> The fix just needs a class CanvasWithEncoder [1] with three methods
> inserted as a subclass of Canvas and as a superclass of
> PostscriptCanvas.
>
> Maybe there are more methods needed for other test cases.
>
> And I do not understand yet where #filterSelector comes into action.
> See thread 'NullEncoder'.
>
> --Hannes
> ---------------------------
>
> [1] Class CanvasWithEncoder inserted between under Canvas and above
> PostScriptCanvas
>
>
> 'From Squeak6.0alpha of 28 September 2017 [latest update: #17405] on
> 30 September 2017 at 6:17:59 pm'!
> Canvas subclass: #CanvasWithEncoder
> 	instanceVariableNames: 'target filterSelector'
> 	classVariableNames: ''
> 	poolDictionaries: ''
> 	category: 'Morphic-Support'!
> !CanvasWithEncoder commentStamp: 'hjh 9/30/2017 15:58' prior: 0!
> A CanvasWithEncoder maintains a target to keep an Encoder which is
> used by subclasses to execute drawing commands.
>
> Instance Variables
> 	filterSelector:		<Object>
> 	target:		<Object>
>
> filterSelector
> 	- xxxxx
>
> target
> 	- xxxxx
> !
>
>
> !CanvasWithEncoder methodsFor: 'as yet unclassified' stamp: 'hjh
> 9/30/2017 15:02'!
> contents
> 	^target contents.! !
>
> !CanvasWithEncoder methodsFor: 'as yet unclassified' stamp: 'hjh
> 9/30/2017 15:00'!
> initWithTarget:aTarget
> 	target := aTarget.
> 	filterSelector := self class filterSelector.
> 	^self.! !
>
> !CanvasWithEncoder methodsFor: 'as yet unclassified' stamp: 'hjh
> 9/30/2017 14:59'!
> reset
> 	"Reset the canvas."
>
> 	self  initWithTarget: self class defaultTarget.! !
>
>
> On Sat, 30 Sep 2017 16:11:48 0000, commits at source.squeak.org
> <commits at source.squeak.org> wrote:
>> David T. Lewis uploaded a new version of MorphicExtras to project The
>> Trunk:
>> http://source.squeak.org/trunk/MorphicExtras-hjh.210.mcz
>>
>> ==================== Summary ====================
>>
>> Name: MorphicExtras-hjh.210
>> Author: hjh
>> Time: 30 September 2017, 11:55:17.310454 am
>> UUID: 3a05acb5-0d83-424c-8471-b7b5af288d35
>> Ancestors: MorphicExtras-tpr.209
>>
>> A smoke test for Postscript support.
>>
>> =============== Diff against MorphicExtras-tpr.209 ===============
>>
>> Item was added:
>> + TestCase subclass: #EPSCanvasTest
>> + 	instanceVariableNames: ''
>> + 	classVariableNames: ''
>> + 	poolDictionaries: ''
>> + 	category: 'MorphicExtras-Postscript Canvases'!
>>
>> Item was added:
>> + ----- Method: EPSCanvasTest>>testSmokeTest (in category 'as yet
>> unclassified') -----
>> + testSmokeTest
>> + | epsCode |
>> + epsCode := (RectangleMorph new asEPS).
>> +
>> + self assert: epsCode lines first = '%!!PS-Adobe-2.0 EPSF-2.0'.
>> +
>> + self assert: (epsCode lines detect: [:line | line beginsWith: '%start
>> morph:  a RectangleMorph'] ifNone: [nil]) notNil.
>> +
>> + self assert: epsCode lines last = '%%EOF'
>> + !
>>
>>
>>
>


More information about the Squeak-dev mailing list