#BUGFIX by cg
authorClaus Gittinger <cg@exept.de>
Mon, 14 Jan 2019 15:03:35 +0100
changeset 3635 74101a749a34
parent 3634 b97f51aaa9ac
child 3636 197a2fbb8c5d
#BUGFIX by cg class: ImageEditor changed: #changeHLSOfColors: #makeSelectedColorShifted #processSelectedColorsWith:
ImageEditor.st
--- a/ImageEditor.st	Thu Jan 03 14:19:29 2019 +0100
+++ b/ImageEditor.st	Mon Jan 14 15:03:35 2019 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 1997-1998 by eXept Software AG
               All Rights Reserved
@@ -5836,8 +5834,8 @@
         resourceSelector notNil ifTrue:[
             ^ resources 
                     string:(self modified 
-                            ifTrue:['ImageEditor (modified): %1 » %2']
-                            ifFalse:['ImageEditor: %1 » %2'])
+                            ifTrue:['ImageEditor (modified): %1 » %2']
+                            ifFalse:['ImageEditor: %1 » %2'])
                     with:resourceClass name
                     with:resourceSelector
         ].
@@ -5870,8 +5868,8 @@
         resourceSelector notNil ifTrue:[
             ^ resources 
                     string:(self modified 
-                            ifTrue:['Image (modified) from: %1 » %2']
-                            ifFalse:['Image from: %1 » %2'])
+                            ifTrue:['Image (modified) from: %1 » %2']
+                            ifFalse:['Image from: %1 » %2'])
                     with:resourceClass name
                     with:resourceSelector
         ].
@@ -6803,10 +6801,12 @@
         image := imageEditView image.
         originalColormap := image colorMap copy.
         originalPixels := image bits.
-        red := (colorsToShift collect:[:clr | clr red]) average.
-        green := (colorsToShift collect:[:clr | clr green]) average.
-        blue := (colorsToShift collect:[:clr | clr blue]) average.
-        avgColor := Color red:red green:green blue:blue.
+        colorsToShift size > 0 ifTrue:[
+            red := (colorsToShift collect:[:clr | clr red]) average.
+            green := (colorsToShift collect:[:clr | clr green]) average.
+            blue := (colorsToShift collect:[:clr | clr blue]) average.
+            avgColor := Color red:red green:green blue:blue.
+        ].    
         avgColorHolder value:avgColor.
 
         previewImage := self image magnifiedPreservingRatioTo:100@100.
@@ -6891,16 +6891,20 @@
     bindings at:#hueShiftAmount put:(hueShift := 0 asValue).
     hueShift onChangeEvaluate:shiftAction.
 
-    bindings at:#lightAmount put:(lightValue := 100 asValue).
+    bindings at:#lightAmount put:(lightValue := 1.0 asValue).
     lightValue onChangeEvaluate:shiftAction.
 
-    bindings at:#saturationAmount put:(saturationValue := 100 asValue).
+    bindings at:#saturationAmount put:(saturationValue := 1.0 asValue).
     saturationValue onChangeEvaluate:shiftAction.
 
     bindings at:#acceptChannel put:acceptChannel.
     bindings at:#hlsColor put:avgColorHolder.
     bindings at:#previewImageHolder put:previewImageHolder.
 
+    bindings at:#resetHueShift put:[ hueShift value: 0 ].
+    bindings at:#resetLightFactor put:[ lightValue value: 1.0 ].
+    bindings at:#resetSaturationFactor put:[ saturationValue value: 1.0 ].
+
     (self openDialogInterface:#changeHLSDialogSpec withBindings:bindings) 
     ifFalse:[ 
         anyChange ifTrue:[
@@ -6918,6 +6922,7 @@
     ].
 
     "Modified (comment): / 28-08-2017 / 13:04:44 / cg"
+    "Modified: / 14-01-2019 / 14:52:50 / Claus Gittinger"
 !
 
 clearColormapEntry0AndMaskedPixels
@@ -7461,10 +7466,13 @@
     
     "/ if there is a mask, it is at position 1 in the table
     cmapOffset := self hasTransparentColorInColorList ifTrue:[1] ifFalse:[0].
-    colors := self selectedColors value collect:[:idx | cMap at:idx-cmapOffset].
+    colors := self selectedColors value 
+                select:[:idx | idx > cmapOffset]
+                thenCollect:[:idx | cMap at:idx-cmapOffset].
     self changeHLSOfColors:colors.
 
     "Modified: / 05-09-2017 / 09:03:47 / cg"
+    "Modified: / 14-01-2019 / 14:46:51 / Claus Gittinger"
 !
 
 makeSelectedColorSlightlyBrighter
@@ -7662,6 +7670,11 @@
             oldColors := cMap asArray.
             processingSubset := false.
         ] ifFalse:[
+            selectedColorIndices := selectedColorIndices select:[:idx | idx > maskOffset].
+            selectedColorIndices isEmpty ifTrue:[
+                Dialog warn:'Please select any non-mask color'.
+                ^ self.
+            ].        
             oldColors := selectedColorIndices collect:[:idx | cMap at:idx-maskOffset].
             processingSubset := true.
         ].
@@ -7669,7 +7682,7 @@
     imageEditView makeUndo.
 
     modifiedColormap := cMap asNewArray.
-    (selectedColorIndices max - maskOffset)  > modifiedColormap size ifTrue:[
+    (selectedColorIndices max - maskOffset) > modifiedColormap size ifTrue:[
         |t|
         t := Array new:(selectedColorIndices max - maskOffset).
         t replaceFrom:1 with:modifiedColormap.
@@ -7708,7 +7721,7 @@
     self selectedColors value:selectedColorIndices.
 
     "Modified: / 08-10-2017 / 09:20:13 / cg"
-    "Modified: / 27-05-2018 / 10:34:25 / Claus Gittinger"
+    "Modified: / 14-01-2019 / 14:56:49 / Claus Gittinger"
 !
 
 reduceNumberOfColors