[squeak-dev] The Trunk: Morphic-mt.1592.mcz
Marcel Taeumel
marcel.taeumel at hpi.de
Sun Dec 8 14:40:19 UTC 2019
Hi Christoph,
yeah, that decision has to be made on a case-by-case basis. It's still a long way to go to improve (or even fix) the modularity issues of Etoys. Still, it's nothing to be worried about for the upcoming 5.3 release. :-)
Best,
Marcel
Am 07.12.2019 19:13:19 schrieb Thiede, Christoph <christoph.thiede at student.hpi.uni-potsdam.de>:
Just when you're moving things from Etoys into Morphic, what's about the other way around?
In Morph category classification:
Wouldn't #demandsBoolean belong into Etoys?
What was #modalTile for and is it obsolete now?
Then all the #is*Tile selectors: Shouldn't they be moved into an Etoys extension category and their senders too? That looks terribly coupled ...
Best,
Christoph
Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag von commits at source.squeak.org <commits at source.squeak.org>
Gesendet: Freitag, 22. November 2019 17:39:01
An: squeak-dev at lists.squeakfoundation.org; packages at lists.squeakfoundation.org
Betreff: [squeak-dev] The Trunk: Morphic-mt.1592.mcz
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1592.mcz [http://source.squeak.org/trunk/Morphic-mt.1592.mcz]
==================== Summary ====================
Name: Morphic-mt.1592
Author: mt
Time: 22 November 2019, 5:38:54.489669 pm
UUID: 7611ae0c-a1d0-ea42-84c5-0d2474fe2643
Ancestors: Morphic-mt.1591
Move rotation-specific stuff from Etoys to Morphic. It is used in Morphic anyway.
#heading, #heading:
#rotationDegrees, #rotationDegrees:
#referencePosition, #referencePosition:
#forwardDirection, #forwardDirection:
=============== Diff against Morphic-mt.1591 ===============
Item was added:
+ ----- Method: CircleMorph>>heading (in category 'rotate scale and flex') -----
+ heading
+ "Overwritten to store the angle in #forwardDirection."
+
+ ^ self rotationDegrees!
Item was changed:
+ ----- Method: CircleMorph>>heading: (in category 'rotate scale and flex') -----
- ----- Method: CircleMorph>>heading: (in category 'geometry eToy') -----
heading: newHeading
+ "Overwritten to store the angle in #forwardDirection."
+
- "Set the receiver's heading (in eToy terms).
- Note that circles never use flex shells."
self rotationDegrees: newHeading.!
Item was changed:
+ ----- Method: MatrixTransformMorph>>heading (in category 'rotate scale and flex') -----
- ----- Method: MatrixTransformMorph>>heading (in category 'geometry eToy') -----
heading
"Return the receiver's heading (in eToy terms)"
^ self forwardDirection + self innerAngle!
Item was added:
+ ----- Method: MatrixTransformMorph>>heading: (in category 'rotate scale and flex') -----
+ heading: newHeading
+ "Set the receiver's heading (in eToy terms)"
+ self rotateBy: ((newHeading - self forwardDirection) - self innerAngle).!
Item was changed:
+ ----- Method: MatrixTransformMorph>>setDirectionFrom: (in category 'rotate scale and flex') -----
- ----- Method: MatrixTransformMorph>>setDirectionFrom: (in category 'geometry eToy') -----
setDirectionFrom: aPoint
| delta degrees |
delta := (self transformFromWorld globalPointToLocal: aPoint) - super rotationCenter.
degrees := delta degrees + 90.0.
self forwardDirection: (degrees \\ 360) rounded.
!
Item was changed:
+ ----- Method: Morph>>forwardDirection (in category 'rotate scale and flex') -----
- ----- Method: Morph>>forwardDirection (in category 'accessing') -----
forwardDirection
+ "Return the receiver's offset to distinguish #heading from #rotationDegrees."
+
+ ^ self valueOfProperty: #forwardDirection ifAbsent: [0.0]!
- "Return the receiver's forward direction (in eToy terms)"
- ^self valueOfProperty: #forwardDirection ifAbsent:[0.0]!
Item was added:
+ ----- Method: Morph>>forwardDirection: (in category 'rotate scale and flex') -----
+ forwardDirection: newDirection
+
+ self setProperty: #forwardDirection toValue: newDirection.!
Item was added:
+ ----- Method: Morph>>heading (in category 'rotate scale and flex') -----
+ heading
+ "Answer the current heading, which is #rotationDegrees relative to the #forwardDirection."
+
+ ^ self rotationDegrees + self forwardDirection!
Item was added:
+ ----- Method: Morph>>heading: (in category 'rotate scale and flex') -----
+ heading: newHeading
+
+ self rotationDegrees: (newHeading - self forwardDirection).!
Item was changed:
----- Method: Morph>>rotationDegrees (in category 'rotate scale and flex') -----
rotationDegrees
- "Default implementation."
+ self isFlexed ifFalse: [^ 0.0].
+ self owner in: [:flexShell | ^ flexShell rotationDegrees].!
- ^ 0.0
- !
Item was added:
+ ----- Method: Morph>>rotationDegrees: (in category 'rotate scale and flex') -----
+ rotationDegrees: degrees
+
+ self isFlexed ifFalse: [self addFlexShell].
+ self owner in: [:flexShell | flexShell rotationDegrees: degrees].!
Item was added:
+ ----- Method: Morph>>setDirectionFrom: (in category 'rotate scale and flex') -----
+ setDirectionFrom: aPoint
+ | delta degrees |
+ delta := (self transformFromWorld globalPointToLocal: aPoint) - self referencePosition.
+ degrees := delta degrees + 90.0.
+ self forwardDirection: (degrees \\ 360) rounded.
+ !
Item was added:
+ ----- Method: PolygonMorph>>heading (in category 'rotate scale and flex') -----
+ heading
+ "Overwritten to store the angle in #forwardDirection."
+
+ ^ self rotationDegrees!
Item was added:
+ ----- Method: PolygonMorph>>heading: (in category 'rotate scale and flex') -----
+ heading: newHeading
+ "Overwritten to store the angle in #forwardDirection."
+
+ self rotationDegrees: newHeading.!
Item was changed:
+ ----- Method: PolygonMorph>>rotationDegrees: (in category 'rotate scale and flex') -----
- ----- Method: PolygonMorph>>rotationDegrees: (in category 'halo control') -----
rotationDegrees: degrees
| flex center |
(center := self valueOfProperty: #referencePosition) ifNil:
[self setProperty: #referencePosition toValue: (center := self bounds center)].
flex := (MorphicTransform offset: center negated)
withAngle: (degrees - self forwardDirection) degreesToRadians.
self setVertices: (vertices collect: [:v | (flex transform: v) - flex offset]).
self forwardDirection: degrees.
!
Item was added:
+ ----- Method: SketchMorph>>heading: (in category 'rotate scale and flex') -----
+ heading: newHeading
+ "If not rotating normally, change forward direction rather than heading"
+ rotationStyle == #normal ifTrue:[^super heading: newHeading].
+ self isFlexed
+ ifTrue:[self forwardDirection: newHeading - owner rotationDegrees]
+ ifFalse:[self forwardDirection: newHeading].
+ self layoutChanged!
Item was removed:
- ----- Method: TransformationMorph>>degreesOfFlex (in category 'geometry eToy') -----
- degreesOfFlex
- "Return any rotation due to flexing"
- ^ self rotationDegrees!
Item was changed:
+ ----- Method: TransformationMorph>>forwardDirection (in category 'rotate scale and flex') -----
- ----- Method: TransformationMorph>>forwardDirection (in category 'accessing') -----
forwardDirection
"Return the rendee's forward direction.
If I have no rendee then return 0.0 degrees "
| rendee |
( rendee := self renderedMorph) == self ifTrue: [ ^ 0.0 ] .
^ rendee forwardDirection!
Item was changed:
+ ----- Method: TransformationMorph>>forwardDirection: (in category 'rotate scale and flex') -----
- ----- Method: TransformationMorph>>forwardDirection: (in category 'geometry eToy') -----
forwardDirection: degrees
"If we have a rendee set its forward direction. Else do nothing."
| rendee |
( rendee := self renderedMorph) == self ifTrue: [ ^ self ] .
^rendee forwardDirection: degrees!
Item was changed:
+ ----- Method: TransformationMorph>>heading (in category 'rotate scale and flex') -----
- ----- Method: TransformationMorph>>heading (in category 'geometry eToy') -----
heading
"End recusion when necessary."
| rendee |
(rendee := self renderedMorph) == self ifTrue: [ ^0.0 ] .
^ rendee heading!
Item was changed:
+ ----- Method: TransformationMorph>>heading: (in category 'rotate scale and flex') -----
- ----- Method: TransformationMorph>>heading: (in category 'geometry eToy') -----
heading: newHeading
"If we have a rendee set its heading. Else do nothing."
| rendee |
( rendee := self renderedMorph) == self ifTrue: [ ^ self ] .
^rendee heading: newHeading!
Item was changed:
----- Method: TransformationMorph>>rotationDegrees (in category 'rotate scale and flex') -----
rotationDegrees
+ "Overwritten because we can directly inform about the rotation."
+
^ self angle radiansToDegrees negated!
Item was changed:
+ ----- Method: TransformationMorph>>rotationDegrees: (in category 'rotate scale and flex') -----
- ----- Method: TransformationMorph>>rotationDegrees: (in category 'accessing') -----
rotationDegrees: degrees
+ "Overwritten because we know how to rotate our submorphs."
+
self adjustAfter:[self angle: degrees degreesToRadians negated]!
Item was changed:
+ ----- Method: TransformationMorph>>setDirectionFrom: (in category 'rotate scale and flex') -----
- ----- Method: TransformationMorph>>setDirectionFrom: (in category 'geometry eToy') -----
setDirectionFrom: aPoint
| delta degrees inner |
inner := self renderedMorph.
inner == self ifTrue:[^self].
delta := (inner transformFromWorld globalPointToLocal: aPoint) - inner referencePosition.
degrees := delta degrees + 90.0.
self forwardDirection: (degrees \\ 360) rounded.
!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20191208/f7f16cfb/attachment.html>
More information about the Squeak-dev
mailing list
|