Karl Ramberg uploaded a new version of Graphics to project The Trunk:
http://source.squeak.org/trunk/Graphics-kfr.436.mcz==================== Summary ====================
Name: Graphics-kfr.436
Author: kfr
Time: 22 August 2020, 11:47:40.557622 am
UUID: 50875d76-6a37-3c49-a0b7-97d9186fb2d6
Ancestors: Graphics-mt.433
I wanted to subclass Rectangle with a instance variable to carry some state, but these methodes indirected to Point>>corner: so it broke the override and returned a ordinary Rectangle instead of my fancy new subclass SuperRectangle
Updated to use #first to get the first element and #allButFirstDo: to iterate over the rest.
(Suggested by Levente Uzonyi)
=============== Diff against Graphics-mt.433 ===============
Item was changed:
----- Method: Rectangle class>>encompassing: (in category 'instance creation') -----
encompassing: listOfPoints
"A number of callers of encompass: should use this method."
| topLeft bottomRight |
+ topLeft := bottomRight := listOfPoints first.
+ listOfPoints allButFirstDo:
+ [:p |topLeft := topLeft min: p.
+ bottomRight := bottomRight max: p].
+ ^self origin: topLeft corner: bottomRight
+ !
- topLeft := bottomRight := nil.
- listOfPoints do:
- [:p | topLeft == nil
- ifTrue: [topLeft := bottomRight := p]
- ifFalse: [topLeft := topLeft min: p.
- bottomRight := bottomRight max: p]].
- ^ topLeft corner: bottomRight!
Item was changed:
----- Method: Rectangle class>>merging: (in category 'instance creation') -----
merging: listOfRects
"A number of callers of merge: should use this method."
+ | bottomRight topLeft |
+ topLeft := listOfRects first topLeft.
+ bottomRight := listOfRects first bottomRight.
- | minX minY maxX maxY |
listOfRects
+ allButFirstDo: [:r | topLeft := topLeft min: r topLeft.
+ bottomRight := bottomRight max: r bottomRight].
+ ^self origin: topLeft corner: bottomRight.
+ !
- do: [:r | minX
- ifNil: [minX := r topLeft x. minY := r topLeft y.
- maxX := r bottomRight x. maxY := r bottomRight y]
- ifNotNil: [minX := minX min: r topLeft x. minY := minY min: r topLeft y.
- maxX := maxX max: r bottomRight x. maxY := maxY max: r bottomRight y]].
- ^ minX@minY corner: maxX@maxY!