Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1004.mcz==================== Summary ====================
Name: Morphic-mt.1004
Author: mt
Time: 4 September 2015, 8:37:36.913 am
UUID: a6373ade-f974-0e41-8609-316d092a7215
Ancestors: Morphic-eem.1003
Do not degrade rounded rectangles to ovals if the radius happens to be bigger than the extent. Ovals do not look at all like rectangles. Especially wide ones.
=============== Diff against Morphic-eem.1003 ===============
Item was changed:
----- Method: BalloonCanvas>>frameRoundRect:radius:width:color: (in category 'drawing-rectangles') -----
frameRoundRect: aRectangle radius: radius width: borderWidth color: borderColor
| outerPoints innerRect innerRadius innerPoints |
(borderWidth isZero or:[borderColor isTransparent])
ifTrue:[^self].
radius asPoint <= (0@0)
ifTrue:[^self frameRectangle: aRectangle width: borderWidth color: borderColor].
- (radius * 2) asPoint >= aRectangle extent
- ifTrue:[^self frameOval: aRectangle width: borderWidth color: borderColor].
"decompose inner rectangle into bezier shape"
innerRect := aRectangle insetBy: borderWidth.
innerRect area <= 0
ifTrue:[^self fillRoundRect: aRectangle radius: radius fillStyle: borderColor].
innerRadius := (radius - borderWidth) asPoint.
innerPoints := self makeRoundRectShape: innerRect radius: innerRadius.
"decompose outer rectangle into bezier shape"
outerPoints := self makeRoundRectShape: aRectangle radius: radius.
self
drawGeneralBezierShape: (Array with: outerPoints with: innerPoints)
color: borderColor
borderWidth: 0
borderColor: nil.!
Item was changed:
----- Method: FormCanvas>>frameRoundRect:radius:width:color: (in category 'drawing-rectangles') -----
frameRoundRect: aRectangle radius: radius width: borderWidth color: borderColor
"Frame a rounded rectangle with the given attributes."
| innerRect |
(borderWidth isZero or:[borderColor isTransparent])
ifTrue:[^self].
radius asPoint <= (0@0)
ifTrue:[^self frameRectangle: aRectangle width: borderWidth color: borderColor].
- (radius * 2) asPoint >= aRectangle extent
- ifTrue:[^self frameOval: aRectangle width: borderWidth color: borderColor].
"decompose inner rectangle into bezier shape"
innerRect := aRectangle insetBy: borderWidth.
innerRect area <= 0
ifTrue:[^self fillRoundRect: aRectangle radius: radius fillStyle: borderColor].
self setFillColor: borderColor.
port
frameRoundRect: (aRectangle translateBy: origin) truncated
radius: radius truncated
borderWidth: borderWidth truncated.
!