--- a/ImageEditor.st Sun May 09 18:19:59 1999 +0200
+++ b/ImageEditor.st Mon May 10 13:07:40 1999 +0200
@@ -861,379 +861,376 @@
<resource: #menu>
- ^
-
- #(#Menu
-
- #(
- #(#MenuItem
- #label: 'About'
- #translateLabel: true
- #activeHelpKey: #about
- #labelImage: #(#ResourceRetriever nil #menuIcon)
- #submenuChannel: #menuAbout
+ ^
+ #(#Menu
+ #(
+ #(#MenuItem
+ #label: 'About'
+ #translateLabel: true
+ #activeHelpKey: #about
+ #labelImage: #(#ResourceRetriever nil #menuIcon)
+ #submenuChannel: #menuAbout
+ )
+ #(#MenuItem
+ #label: 'File'
+ #translateLabel: true
+ #activeHelpKey: #file
+ #submenu:
+ #(#Menu
+ #(
+ #(#MenuItem
+ #label: 'New...'
+ #translateLabel: true
+ #value: #doNewImage
+ #activeHelpKey: #fileNewImage
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Load...'
+ #translateLabel: true
+ #value: #doLoadFromClass
+ #activeHelpKey: #fileLoadFromClass
+ )
+ #(#MenuItem
+ #label: 'Load From File...'
+ #translateLabel: true
+ #value: #doLoadFromFile
+ #activeHelpKey: #fileLoadFromFile
+ )
+ #(#MenuItem
+ #label: 'Grab From Screen'
+ #translateLabel: true
+ #value: #grabScreenImage
+ #activeHelpKey: #fileGrabImage
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Save'
+ #translateLabel: true
+ #value: #doSaveMethod
+ #activeHelpKey: #fileSaveMethod
+ #enabled: #imageIsLoadedAndClassDefined
+ )
+ #(#MenuItem
+ #label: 'Save As...'
+ #translateLabel: true
+ #value: #doSaveMethodAs
+ #activeHelpKey: #fileSaveMethodAs
+ #enabled: #imageIsLoaded
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Save To File...'
+ #translateLabel: true
+ #value: #doSaveImageFileAs
+ #activeHelpKey: #fileSaveAs
+ #enabled: #imageIsLoaded
+ )
+ #(#MenuItem
+ #label: 'Save Mask To File...'
+ #translateLabel: true
+ #value: #doSaveImageMaskFileAs
+ #activeHelpKey: #fileSaveMaskAs
+ #enabled: #imageIsLoaded
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Print'
+ #translateLabel: true
+ #value: #doPrint
+ #activeHelpKey: #filePrint
+ #enabled: #imageIsLoaded
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Browse Class'
+ #translateLabel: true
+ #value: #doBrowseClass
+ #activeHelpKey: #fileBrowseClass
+ #enabled: #hasClassDefined
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Exit'
+ #translateLabel: true
+ #value: #closeRequest
+ #activeHelpKey: #fileExit
+ )
+ )
+ nil
+ nil
)
- #(#MenuItem
- #label: 'File'
- #translateLabel: true
- #activeHelpKey: #file
- #submenu:
+ )
+ #(#MenuItem
+ #label: 'Edit'
+ #translateLabel: true
+ #activeHelpKey: #edit
+ #enabled: #imageIsLoaded
+ #submenu:
+ #(#Menu
+ #(
+ #(#MenuItem
+ #label: 'Undo'
+ #translateLabel: true
+ #value: #doUndo
+ #activeHelpKey: #editUndo
+ #enabled: #valueOfCanUndo
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Flip - Vertical'
+ #translateLabel: true
+ #value: #doFlipVertical
+ #activeHelpKey: #editFlipVertical
+ )
+ #(#MenuItem
+ #label: 'Flip - Horizontal'
+ #translateLabel: true
+ #value: #doFlipHorizontal
+ #activeHelpKey: #editFlipHorizontal
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Resize...'
+ #translateLabel: true
+ #value: #doResizeImage
+ #activeHelpKey: #editResize
+ )
+ #(#MenuItem
+ #label: 'Magnify...'
+ #translateLabel: true
+ #value: #doMagnifyImage
+ #activeHelpKey: #editMagnifyImage
+ )
+ #(#MenuItem
+ #label: 'Rotate...'
+ #translateLabel: true
+ #value: #doRotateImage
+ #activeHelpKey: #editRotate
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Crop'
+ #translateLabel: true
+ #submenu:
#(#Menu
-
- #(
- #(#MenuItem
- #label: 'New...'
- #translateLabel: true
- #value: #doNewImage
- #activeHelpKey: #fileNewImage
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Load...'
- #translateLabel: true
- #value: #doLoadFromClass
- #activeHelpKey: #fileLoadFromClass
- )
- #(#MenuItem
- #label: 'Load From File...'
- #translateLabel: true
- #value: #doLoadFromFile
- #activeHelpKey: #fileLoadFromFile
- )
- #(#MenuItem
- #label: 'Grab From Screen'
- #translateLabel: true
- #value: #grabScreenImage
- #activeHelpKey: #fileGrabImage
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Save'
- #translateLabel: true
- #value: #doSaveMethod
- #activeHelpKey: #fileSaveMethod
- #enabled: #imageIsLoadedAndClassDefined
- )
- #(#MenuItem
- #label: 'Save As...'
- #translateLabel: true
- #value: #doSaveMethodAs
- #activeHelpKey: #fileSaveMethodAs
- #enabled: #imageIsLoaded
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Save To File...'
- #translateLabel: true
- #value: #doSaveImageFileAs
- #activeHelpKey: #fileSaveAs
- #enabled: #imageIsLoaded
- )
- #(#MenuItem
- #label: 'Save Mask To File...'
- #translateLabel: true
- #value: #doSaveImageMaskFileAs
- #activeHelpKey: #fileSaveMaskAs
- #enabled: #imageIsLoaded
- )
- #(#MenuItem
- #label: '-'
+ #(
+ #(#MenuItem
+ #label: 'All'
+ #translateLabel: true
+ #value: #doCropAll
+ #activeHelpKey: #cropAll
)
- #(#MenuItem
- #label: 'Print'
- #translateLabel: true
- #value: #doPrint
- #activeHelpKey: #filePrint
- #enabled: #imageIsLoaded
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Browse Class'
- #translateLabel: true
- #value: #doBrowseClass
- #activeHelpKey: #fileBrowseClass
- #enabled: #hasClassDefined
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Exit'
- #translateLabel: true
- #value: #closeRequest
- #activeHelpKey: #fileExit
- )
- ) nil
- nil
- )
- )
- #(#MenuItem
- #label: 'Edit'
- #translateLabel: true
- #activeHelpKey: #edit
- #enabled: #imageIsLoaded
- #submenu:
- #(#Menu
-
- #(
- #(#MenuItem
- #label: 'Undo'
- #translateLabel: true
- #value: #doUndo
- #activeHelpKey: #editUndo
- #enabled: #valueOfCanUndo
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Flip - Vertical'
- #translateLabel: true
- #value: #doFlipVertical
- #activeHelpKey: #editFlipVertical
- )
- #(#MenuItem
- #label: 'Flip - Horizontal'
- #translateLabel: true
- #value: #doFlipHorizontal
- #activeHelpKey: #editFlipHorizontal
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Resize...'
- #translateLabel: true
- #value: #doResizeImage
- #activeHelpKey: #editResize
- )
- #(#MenuItem
- #label: 'Magnify...'
- #translateLabel: true
- #value: #doMagnifyImage
- #activeHelpKey: #editMagnifyImage
- )
- #(#MenuItem
- #label: 'Rotate...'
- #translateLabel: true
- #value: #doRotateImage
- #activeHelpKey: #editRotate
- )
- #(#MenuItem
- #label: '-'
+ #(#MenuItem
+ #label: '-'
)
- #(#MenuItem
- #label: 'Crop'
- #translateLabel: true
- #submenu:
- #(#Menu
-
- #(
- #(#MenuItem
- #label: 'All'
- #translateLabel: true
- #value: #doCropAll
- #activeHelpKey: #cropAll
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Left'
- #translateLabel: true
- #value: #doCropLeft
- #activeHelpKey: #cropLeft
- )
- #(#MenuItem
- #label: 'Right'
- #translateLabel: true
- #value: #doCropRight
- #activeHelpKey: #cropRight
- )
- #(#MenuItem
- #label: 'Top'
- #translateLabel: true
- #value: #doCropTop
- #activeHelpKey: #cropTop
- )
- #(#MenuItem
- #label: 'Bottom'
- #translateLabel: true
- #value: #doCropBottom
- #activeHelpKey: #cropBottom
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Manual...'
- #translateLabel: true
- #value: #doCropManual
- #activeHelpKey: #cropManual
- )
- ) nil
- nil
- )
+ #(#MenuItem
+ #label: 'Left'
+ #translateLabel: true
+ #value: #doCropLeft
+ #activeHelpKey: #cropLeft
+ )
+ #(#MenuItem
+ #label: 'Right'
+ #translateLabel: true
+ #value: #doCropRight
+ #activeHelpKey: #cropRight
)
- ) nil
- nil
- )
- )
- #(#MenuItem
- #label: 'ColorMap'
- #translateLabel: true
- #activeHelpKey: #colorMap
- #enabled: #imageIsLoaded
- #submenu:
- #(#Menu
-
- #(
- #(#MenuItem
- #label: '8-Plane'
- #translateLabel: true
- #value: #colorMapMode:
- #activeHelpKey: #colorMap8
- #argument: '8-plane'
- #choice: #colorMapMode
- #choiceValue: '8-plane'
+ #(#MenuItem
+ #label: 'Top'
+ #translateLabel: true
+ #value: #doCropTop
+ #activeHelpKey: #cropTop
)
- #(#MenuItem
- #label: '4-Plane'
- #translateLabel: true
- #value: #colorMapMode:
- #activeHelpKey: #colorMap4
- #argument: '4-plane'
- #choice: #colorMapMode
- #choiceValue: '4-plane'
+ #(#MenuItem
+ #label: 'Bottom'
+ #translateLabel: true
+ #value: #doCropBottom
+ #activeHelpKey: #cropBottom
)
- #(#MenuItem
- #label: '2-Plane'
- #translateLabel: true
- #value: #colorMapMode:
- #activeHelpKey: #colorMap2
- #argument: '2-plane'
- #choice: #colorMapMode
- #choiceValue: '2-plane'
+ #(#MenuItem
+ #label: '-'
)
- #(#MenuItem
- #label: '1-Plane'
- #translateLabel: true
- #value: #colorMapMode:
- #activeHelpKey: #colorMap1
- #argument: '1-plane'
- #choice: #colorMapMode
- #choiceValue: '1-plane'
+ #(#MenuItem
+ #label: 'Manual...'
+ #translateLabel: true
+ #value: #doCropManual
+ #activeHelpKey: #cropManual
)
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: '8-Plane + Mask'
- #translateLabel: true
- #value: #colorMapMode:
- #activeHelpKey: #colorMap8M
- #argument: '8-plane + mask'
- #choice: #colorMapMode
- #choiceValue: '8-plane + mask'
- )
- #(#MenuItem
- #label: '4-Plane + Mask'
- #translateLabel: true
- #value: #colorMapMode:
- #activeHelpKey: #colorMap4M
- #argument: '4-plane + mask'
- #choice: #colorMapMode
- #choiceValue: '4-plane + mask'
- )
- #(#MenuItem
- #label: '2-Plane + Mask'
- #translateLabel: true
- #value: #colorMapMode:
- #activeHelpKey: #colorMap2M
- #argument: '2-plane + mask'
- #choice: #colorMapMode
- #choiceValue: '2-plane + mask'
- )
- #(#MenuItem
- #label: '1-Plane + Mask'
- #translateLabel: true
- #value: #colorMapMode:
- #activeHelpKey: #colorMap1M
- #argument: '1-plane + mask'
- #choice: #colorMapMode
- #choiceValue: '1-plane + mask'
- )
- #(#MenuItem
- #label: '-'
- )
- #(#MenuItem
- #label: 'Compress colormap'
- #translateLabel: true
- #value: #compressColorMap
- #activeHelpKey: #compressColormap
- #enabled: #hasColormap
- )
- #(#MenuItem
- #label: 'Sort colormap'
- #translateLabel: true
- #value: #sortColorMap
- #enabled: #hasColormap
- )
- ) nil
+ )
+ nil
nil
+ )
)
+ )
+ nil
+ nil
)
- #(#MenuItem
- #label: 'Settings'
- #translateLabel: true
- #submenu:
- #(#Menu
-
- #(
- #(#MenuItem
- #label: 'Grid Magnification...'
- #translateLabel: true
- #value: #doChangeGridMagnification
- #activeHelpKey: #settingsGridMagnification
- )
-"/ #(#MenuItem
-"/ #label: '-'
-"/ )
-"/ #(#MenuItem
-"/ #label: 'Fonts'
-"/ #translateLabel: true
-"/ #submenuChannel: #menuFont
-"/ )
- ) nil
- nil
+ )
+ #(#MenuItem
+ #label: 'ColorMap'
+ #translateLabel: true
+ #activeHelpKey: #colorMap
+ #enabled: #imageIsLoaded
+ #submenu:
+ #(#Menu
+ #(
+ #(#MenuItem
+ #label: '8-Plane'
+ #translateLabel: true
+ #value: #colorMapMode:
+ #activeHelpKey: #colorMap8
+ #argument: '8-plane'
+ #choice: #colorMapMode
+ #choiceValue: '8-plane'
+ )
+ #(#MenuItem
+ #label: '4-Plane'
+ #translateLabel: true
+ #value: #colorMapMode:
+ #activeHelpKey: #colorMap4
+ #argument: '4-plane'
+ #choice: #colorMapMode
+ #choiceValue: '4-plane'
+ )
+ #(#MenuItem
+ #label: '2-Plane'
+ #translateLabel: true
+ #value: #colorMapMode:
+ #activeHelpKey: #colorMap2
+ #argument: '2-plane'
+ #choice: #colorMapMode
+ #choiceValue: '2-plane'
+ )
+ #(#MenuItem
+ #label: '1-Plane'
+ #translateLabel: true
+ #value: #colorMapMode:
+ #activeHelpKey: #colorMap1
+ #argument: '1-plane'
+ #choice: #colorMapMode
+ #choiceValue: '1-plane'
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: '8-Plane + Mask'
+ #translateLabel: true
+ #value: #colorMapMode:
+ #activeHelpKey: #colorMap8M
+ #argument: '8-plane + mask'
+ #choice: #colorMapMode
+ #choiceValue: '8-plane + mask'
+ )
+ #(#MenuItem
+ #label: '4-Plane + Mask'
+ #translateLabel: true
+ #value: #colorMapMode:
+ #activeHelpKey: #colorMap4M
+ #argument: '4-plane + mask'
+ #choice: #colorMapMode
+ #choiceValue: '4-plane + mask'
)
- )
- #(#MenuItem
- #label: 'History'
- #translateLabel: true
- #activeHelpKey: #history
- #submenuChannel: #menuHistory
+ #(#MenuItem
+ #label: '2-Plane + Mask'
+ #translateLabel: true
+ #value: #colorMapMode:
+ #activeHelpKey: #colorMap2M
+ #argument: '2-plane + mask'
+ #choice: #colorMapMode
+ #choiceValue: '2-plane + mask'
+ )
+ #(#MenuItem
+ #label: '1-Plane + Mask'
+ #translateLabel: true
+ #value: #colorMapMode:
+ #activeHelpKey: #colorMap1M
+ #argument: '1-plane + mask'
+ #choice: #colorMapMode
+ #choiceValue: '1-plane + mask'
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Compress colormap'
+ #translateLabel: true
+ #value: #compressColorMap
+ #activeHelpKey: #compressColormap
+ #enabled: #hasColormap
+ )
+ #(#MenuItem
+ #label: 'Sort colormap'
+ #translateLabel: true
+ #value: #sortColorMap
+ #enabled: #hasColormap
+ )
+ #(#MenuItem
+ #label: '-'
+ )
+ #(#MenuItem
+ #label: 'Reduce number of colors...'
+ #translateLabel: true
+ #value: #reduceNumberOfColors
+ )
+ )
+ nil
+ nil
)
- #(#MenuItem
- #label: 'Help'
- #translateLabel: true
- #startGroup: #right
- #activeHelpKey: #help
- #submenuChannel: #menuHelp
+ )
+ #(#MenuItem
+ #label: 'Settings'
+ #translateLabel: true
+ #submenu:
+ #(#Menu
+ #(
+ #(#MenuItem
+ #label: 'Grid Magnification...'
+ #translateLabel: true
+ #value: #doChangeGridMagnification
+ #activeHelpKey: #settingsGridMagnification
+ )
+ )
+ nil
+ nil
)
- ) nil
- nil
+ )
+ #(#MenuItem
+ #label: 'History'
+ #translateLabel: true
+ #activeHelpKey: #history
+ #submenuChannel: #menuHistory
+ )
+ #(#MenuItem
+ #label: 'Help'
+ #translateLabel: true
+ #startGroup: #right
+ #activeHelpKey: #help
+ #submenuChannel: #menuHelp
+ )
+ )
+ nil
+ nil
)
-
- "Modified: / 30.9.1998 / 23:53:12 / cg"
!
menuMouseButtonColors
@@ -1590,6 +1587,12 @@
^ self
].
].
+
+ changedObject == imageEditView undoImages ifTrue:[
+ self valueOfCanUndo value:(changedObject notEmpty).
+ ^ self.
+ ].
+
super update:something with:aParameter from:changedObject
"Modified: / 18.8.1998 / 17:18:42 / cg"
@@ -1946,6 +1949,7 @@
evaluate the postOpenAction"
imageEditView masterApplication: self.
+ imageEditView undoImages addDependent:self.
imageEditView imageInfoHolder:(self imageInfoHolder).
imageEditView activityInfoHolder:(self activityInfoHolder).
@@ -2108,6 +2112,7 @@
oldImage depth == 8 ifTrue:[
tmpBits := oldImage bits
] ifFalse:[
+ colorMapMode value:prevMode.
self warn:('Too many colors in image ( ', oldImage usedColors size printString , ').').
^ self
]
@@ -2331,6 +2336,33 @@
"Modified: / 15.9.1998 / 17:53:32 / cg"
!
+reduceNumberOfColors
+ |s n anyChange img|
+
+ s := Dialog request:'Number of color bits to strip (1-7) ?'.
+ s isNil ifTrue:[^ self].
+ n := Integer readFrom:s onError:0.
+ (n between:1 and:7) ifFalse:[
+ Dialog warn:'Image unchanged'.
+ ^ self
+ ].
+
+ imageEditView makeUndo.
+ self withExecuteCursorDo:[
+ anyChange := imageEditView reduceColorResolutionBy:n.
+ anyChange ifFalse:[
+ Dialog warn:'Image unchanged'.
+ ] ifTrue:[
+ img := imageEditView image.
+ imageEditView image:img.
+ self listOfColors contents:(img colorMap).
+ self findColorMapMode.
+ self updateLabelsAndHistory.
+ Dialog information:(img usedColors size printString , ' colors used.')
+ ]
+ ].
+!
+
sortColorMap
"calculates a new color map for the image, sorting colors"