--- a/ImageEditor.st Sat Nov 29 00:23:48 2008 +0100
+++ b/ImageEditor.st Wed Dec 03 17:47:23 2008 +0100
@@ -743,7 +743,7 @@
label: 'HLS Edit Dialog'
name: 'HLS Edit Dialog'
min: (Point 10 10)
- bounds: (Rectangle 0 0 312 183)
+ bounds: (Rectangle 0 0 312 258)
)
component:
(SpecCollection
@@ -827,11 +827,31 @@
step: 1
)
(LabelSpec
+ label: 'Color Shift'
+ name: 'Label2'
+ layout: (LayoutFrame 5 0 110 0 -15 0.5 132 0)
+ translateLabel: true
+ )
+ (LabelSpec
name: 'HueColorLabel'
- layout: (LayoutFrame 10 0.0 109 0 -10 1.0 148 0)
+ layout: (LayoutFrame 18 0.0 133 0 -41 0.5 217 0)
+ level: -1
backgroundChannel: hlsColor
translateLabel: true
)
+ (LabelSpec
+ label: 'Preview'
+ name: 'Label3'
+ layout: (LayoutFrame 5 0.5 110 0 -5 1 132 0)
+ translateLabel: true
+ )
+ (LabelSpec
+ name: 'PreviewLabel'
+ layout: (LayoutFrame 36 0.5 133 0 -23 1.0 217 0)
+ level: -1
+ translateLabel: true
+ labelChannel: previewImageHolder
+ )
(HorizontalPanelViewSpec
name: 'HorizontalPanel1'
layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
@@ -4014,24 +4034,35 @@
|bindings hueShift lightValue saturationValue originalColormap firstChange acceptChannel
shiftAction avgColorHolder avgColor shiftedColor shiftProcess readySema
- originalPixels p|
+ originalPixels p previewImage previewImageHolder originalPreviewColormap originalPreviewPixels
+ anyChange |
"/ compute the averageColor in the background (while asking user)
+ avgColorHolder := nil asValue.
+ previewImageHolder := nil asValue.
+
readySema := Semaphore new.
[
|image|
image := imageEditView image.
originalColormap := image colorMap copy.
+ originalPixels := image bits.
avgColor := image averageColor.
- originalPixels := image bits.
+ avgColorHolder value:avgColor.
+
+ previewImage := self image magnifiedPreservingRatioTo:100@100.
+ previewImageHolder value: previewImage.
+ originalPreviewColormap := previewImage colorMap copy.
+ originalPreviewPixels := previewImage bits.
+
readySema signal.
] forkAt:7.
acceptChannel := TriggerValue new.
- avgColorHolder := avgColor asValue.
firstChange := true.
+ anyChange := false.
shiftedColor := [:clr :hShift :lFactor :sFactor |
Color
@@ -4048,6 +4079,7 @@
firstChange ifTrue:[
imageEditView makeUndo.
firstChange := false.
+ anyChange := true.
].
readySema notNil ifTrue:[readySema wait. readySema := nil].
@@ -4057,6 +4089,13 @@
avgColorHolder value:(shiftedColor value:avgColor value:hShift value:lFactor value:sFactor).
+ previewImage
+ colorMap:originalPreviewColormap copy;
+ bits:originalPreviewPixels copy;
+ release;
+ colorMapProcessing:[:clr | shiftedColor value:clr value:hShift value:lFactor value:sFactor].
+ previewImageHolder value:nil; value:previewImage.
+
shiftProcess notNil ifTrue:[
shiftProcess terminate.
shiftProcess waitUntilTerminated.
@@ -4089,10 +4128,11 @@
bindings at:#acceptChannel put:acceptChannel.
bindings at:#hlsColor put:avgColorHolder.
+ bindings at:#previewImageHolder put:previewImageHolder.
(self openDialogInterface:#changeHLSDialogSpec withBindings:bindings)
ifFalse:[
- firstChange ~~ true ifTrue:[
+ anyChange ifTrue:[
imageEditView undo
]
].
@@ -4100,8 +4140,11 @@
(p := shiftProcess) notNil ifTrue:[
p waitUntilTerminated.
].
- self updateImage.
- self updateImagePreView.
+
+ anyChange ifTrue:[
+ self updateImage.
+ self updateImagePreView.
+ ].
!
clearMaskedPixels