class: ImageEditor
authorClaus Gittinger <cg@exept.de>
Thu, 26 Mar 2015 10:39:11 +0100
changeset 3200 eae3e88c5cb1
parent 3199 ebfabb8002d1
child 3201 69860a2e404e
class: ImageEditor added: #doNewMaskFromClipboard changed: #localHelpTexts #menuFile
ImageEditor.st
--- a/ImageEditor.st	Wed Mar 25 15:20:01 2015 +0100
+++ b/ImageEditor.st	Thu Mar 26 10:39:11 2015 +0100
@@ -473,6 +473,12 @@
 #fileNewImage
 'Create a new image'
 
+#fileNewImageFromClipboard
+'Create a new image and initialize it from the clipboard'
+
+#fileNewMaskFromClipboard
+'Paste the image in the clipboard as a mask. Must be a depth-1 image'
+
 #filePrint
 'Print the image on a postscript printer'
 
@@ -2811,11 +2817,16 @@
             itemValue: doNewImage
           )
          (MenuItem
-            activeHelpKey: fileNewImage
+            activeHelpKey: fileNewImageFromClipboard
             label: 'New from ClipBoard'
             itemValue: doNewImageFromClipboard
           )
          (MenuItem
+            activeHelpKey: fileNewMaskFromClipboard
+            label: 'Mask from ClipBoard'
+            itemValue: doNewMaskFromClipboard
+          )
+         (MenuItem
             label: '-'
           )
          (MenuItem
@@ -7003,6 +7014,34 @@
     ]
 !
 
+doNewMaskFromClipboard
+    |mask image newImage|
+
+    self checkModified ifFalse:[ ^ self ].
+
+    mask := imageEditView clipBoard.
+    mask isImageOrForm ifFalse:[
+        mask := Image readFrom:(mask asString) onError:nil.
+        mask isNil ifTrue:[
+            Dialog warn:'Clipboard does not contain an image I can use/understand'.
+            ^ self.
+        ].
+    ].
+    (image:= imageEditView image) isNil ifTrue:[
+        image := mask.
+    ].
+    mask extent ~= image extent ifTrue:[
+        mask := imageEditView resizedImage:mask to:image extent.
+    ].
+    newImage := image copy.
+    newImage mask:mask.
+    imageEditView newImageWithUndo:newImage.
+    self updateAfterImageChange.
+"/    self updateColorsFromImage:image.
+"/    self findColorMapMode.
+"/    self updateLabelsAndHistory.
+!
+
 grabScreenImage
     "let user choose an area and grab that are for editing"