#UI_ENHANCEMENT by cg
class: ImageEditor
class definition
changed:
#doMagnifyImage
#doMagnifyImageBy
remember user's last choice of magnification
and smoothing
--- a/ImageEditor.st Mon Mar 19 17:56:07 2018 +0100
+++ b/ImageEditor.st Tue Mar 27 13:42:15 2018 +0200
@@ -20,7 +20,8 @@
allowedToChangeImageDimensionAndDepth savedImage savedFile'
classVariableNames:'DefaultRelativeSizes LastColormapMode LastDirectory
LastSizeString LastURL MaskClipboard LastDepth
- LastNumThresholdGrayColors'
+ LastNumThresholdGrayColors LastMagnifyTo LastMagnifyBy
+ LastMagnifySmoothing'
poolDictionaries:''
category:'Interface-UIPainter'
!
@@ -8333,14 +8334,14 @@
|box newSize image antiAliased|
- antiAliased := false asValue.
+ antiAliased := (LastMagnifySmoothing ? false) asValue.
image := imageEditView image.
box := EnterBox new.
box title:(resources string:'Images new size:').
box okText:(resources string:'OK').
box abortText:(resources string:'Cancel').
- box initialText:image extent printString.
+ box initialText:(LastMagnifyTo ? image extent) printString.
box verticalPanel add:(CheckBox label:(resources string:'Antialias/Smooth') model:antiAliased).
box showAtPointer.
@@ -8351,6 +8352,8 @@
self warn:'Please enter the new size as ''x @ y''.'.
^ self.
].
+ LastMagnifyTo := newSize.
+ LastMagnifySmoothing := antiAliased value.
antiAliased value ifTrue:[
((newSize x < image width) or:[(newSize y < image height)]) ifTrue:[
imageEditView magnifySmoothingTo:newSize.
@@ -8370,21 +8373,20 @@
doMagnifyImageBy
"magnifies the current image (by a scale)"
- |oldSize newSize scaleString scale image antiAliased smoothing|
+ |oldSize newSize scaleString scale image smoothing|
image := imageEditView image.
oldSize := image extent.
- antiAliased := false asValue.
- smoothing := false asValue.
+ smoothing := (LastMagnifySmoothing ? false) asValue.
Dialog modifyingBoxWith:[:box |
- box verticalPanel add:(CheckBox label:(resources string:'Antialias/Smooth') model:antiAliased).
+ box verticalPanel add:(CheckBox label:(resources string:'Antialias/Smooth') model:smoothing).
"/ box verticalPanel add:(CheckBox label:(resources string:'Smoothing') model:smoothing).
] do:[
scaleString := Dialog
request:(resources string:'Scale factor (<1 to shrink; >1 to magnify):')
- initialAnswer:'1'
+ initialAnswer:(LastMagnifyBy ? 1) printString
list:#('0.1' '0.25' '0.3' '0.5' '1.5' '2' '3' '4').
].
scaleString isNil ifTrue:[^ self].
@@ -8396,8 +8398,12 @@
self warn:'please enter a scale factor (<1 to shrink; >1 to magnify).'.
^ self.
].
+
+ LastMagnifyBy := scale.
+ LastMagnifySmoothing := smoothing value.
+
newSize := oldSize * scale.
- antiAliased value ifTrue:[
+ smoothing value ifTrue:[
scale < 1 ifTrue:[
imageEditView magnifySmoothingBy:scale.
] ifFalse:[