ImageEditor.st
changeset 3458 159bab42fdbb
parent 3443 b9d9eb4b34f9
child 3459 f264db47ed05
equal deleted inserted replaced
3457:3f3ea99e8af5 3458:159bab42fdbb
  3042                   label: 'Reduce Number of Colors by Masking Bits...'
  3042                   label: 'Reduce Number of Colors by Masking Bits...'
  3043                   itemValue: reduceNumberOfColors
  3043                   itemValue: reduceNumberOfColors
  3044                   translateLabel: true
  3044                   translateLabel: true
  3045                 )
  3045                 )
  3046                (MenuItem
  3046                (MenuItem
  3047                   label: 'Dither to Depth...'
       
  3048                   itemValue: ditherToDepth
       
  3049                   translateLabel: true
       
  3050                 )
       
  3051                (MenuItem
       
  3052                   label: '-'
  3047                   label: '-'
  3053                 )
  3048                 )
  3054                (MenuItem
  3049                (MenuItem
  3055                   enabled: imageIsLoadedHolder
  3050                   enabled: imageIsLoadedHolder
  3056                   label: 'Brighten'
  3051                   label: 'Brighten'
  3085                   label: 'Make GrayScale'
  3080                   label: 'Make GrayScale'
  3086                   itemValue: makeGrayScaleImage
  3081                   itemValue: makeGrayScaleImage
  3087                   translateLabel: true
  3082                   translateLabel: true
  3088                 )
  3083                 )
  3089                (MenuItem
  3084                (MenuItem
       
  3085                   label: 'Make Monochrome'
       
  3086                   itemValue: makeMonochromeImage
       
  3087                   translateLabel: true
       
  3088                 )
       
  3089                (MenuItem
       
  3090                   label: 'Make Inverse'
       
  3091                   itemValue: makeInverse
       
  3092                   translateLabel: true
       
  3093                 )
       
  3094                (MenuItem
       
  3095                   label: '-'
       
  3096                 )
       
  3097                (MenuItem
  3090                   enabled: allowedToChangeImageDimensionAndDepth
  3098                   enabled: allowedToChangeImageDimensionAndDepth
  3091                   label: 'Make dithered 8Bit Palette'
  3099                   label: 'Make dithered 8Bit Palette'
  3092                   itemValue: makeDitheredPaletteImage
  3100                   itemValue: makeDitheredPaletteImage
  3093                   translateLabel: true
  3101                   translateLabel: true
  3094                   isVisible: false
  3102                   isVisible: false
  3095                 )
  3103                 )
  3096                (MenuItem
  3104                (MenuItem
  3097                   label: 'Make Inverse'
  3105                   label: 'Dither to Depth...'
  3098                   itemValue: makeInverse
  3106                   itemValue: ditherToDepth
       
  3107                   translateLabel: true
       
  3108                 )
       
  3109                (MenuItem
       
  3110                   label: 'Threshold to Depth...'
       
  3111                   itemValue: thresholdToDepth
  3099                   translateLabel: true
  3112                   translateLabel: true
  3100                 )
  3113                 )
  3101                (MenuItem
  3114                (MenuItem
  3102                   label: '-'
  3115                   label: '-'
  3103                 )
  3116                 )
  3183          )
  3196          )
  3184         nil
  3197         nil
  3185         nil
  3198         nil
  3186       )
  3199       )
  3187 
  3200 
  3188     "Modified: / 16-02-2017 / 10:27:13 / cg"
  3201     "Modified: / 24-08-2017 / 15:25:00 / cg"
  3189 !
  3202 !
  3190 
  3203 
  3191 menuEdit
  3204 menuEdit
  3192     "This resource specification was automatically generated
  3205     "This resource specification was automatically generated
  3193      by the MenuEditor of ST/X."
  3206      by the MenuEditor of ST/X."
  7833 
  7846 
  7834     rotationString := Dialog 
  7847     rotationString := Dialog 
  7835                         request:(resources string:'Rotate by (degrees, clockwise):')
  7848                         request:(resources string:'Rotate by (degrees, clockwise):')
  7836                         list:#( '-90' '90' '180' '45' '-45'  '135' '-135' ) 
  7849                         list:#( '-90' '90' '180' '45' '-45'  '135' '-135' ) 
  7837                         initialAnswer:90.
  7850                         initialAnswer:90.
  7838     rotationString isEmptyOrNil ifTrue:[^ self].    "/ cancelled
  7851     rotationString isEmptyOrNil ifTrue:[^ self].    "/ canceled
  7839     rotation := Number readFrom:rotationString onError:[nil].
  7852     rotation := Number readFrom:rotationString onError:[nil].
  7840     rotation isNil ifTrue:[^ self].   
  7853     rotation isNil ifTrue:[^ self].   
  7841 
  7854 
  7842 "/    box := EnterBox new.
  7855 "/    box := EnterBox new.
  7843 "/    box title:(resources string:'Rotate by (degrees, clockwise):').
  7856 "/    box title:(resources string:'Rotate by (degrees, clockwise):').
  7850 
  7863 
  7851     imageEditView rotateImageBy:rotation.
  7864     imageEditView rotateImageBy:rotation.
  7852     self updateInfoLabel.
  7865     self updateInfoLabel.
  7853 
  7866 
  7854     "Modified: / 18-03-2012 / 14:41:14 / cg"
  7867     "Modified: / 18-03-2012 / 14:41:14 / cg"
       
  7868     "Modified (comment): / 24-08-2017 / 15:02:57 / cg"
  7855 !
  7869 !
  7856 
  7870 
  7857 doShiftManual
  7871 doShiftManual
  7858     "let user specify amount and shift"
  7872     "let user specify amount and shift"
  7859 
  7873 
  7933 doUndo
  7947 doUndo
  7934     "reverses last edit action"
  7948     "reverses last edit action"
  7935 
  7949 
  7936     imageEditView undo.
  7950     imageEditView undo.
  7937     self updateImagePreView
  7951     self updateImagePreView
       
  7952 !
       
  7953 
       
  7954 makeMonochromeImage
       
  7955     "let user choose a threshold, then convert to monochrome"
       
  7956     
       
  7957     |image userInput thresholdBrighness|
       
  7958 
       
  7959     image := imageEditView image.
       
  7960     
       
  7961     Dialog modifyingBoxWith:[:box |
       
  7962         |preview slider update thresholdValue|
       
  7963 
       
  7964         thresholdValue := 0.5 asValue.
       
  7965 
       
  7966         box enterField converter:(PrintConverter new initForNumber).
       
  7967         box enterField model:thresholdValue.
       
  7968         box verticalPanel extent:1.0 @ 300.
       
  7969         
       
  7970         box verticalPanel add:(slider := HorizontalSlider new start:0 stop:1 step:0.05).
       
  7971         slider model:thresholdValue.
       
  7972         slider width:1.0; leftInset:4; rightInset:4.
       
  7973 
       
  7974         box verticalPanel add:(preview := ImageView new).
       
  7975         preview extent:1.0 @300.
       
  7976         preview level:-1.
       
  7977         box verticalPanel horizontalLayout:#fitSpace.
       
  7978         
       
  7979         update := 
       
  7980             [
       
  7981                 |s t|
       
  7982 
       
  7983                 t := thresholdValue value clampBetween:0 and:1.   
       
  7984                 preview image:((image asThresholdMonochromeImage:t)
       
  7985                             magnifiedPreservingRatioTo:preview extent).
       
  7986             ].
       
  7987         update value.
       
  7988         box enterField acceptOnLostFocus:true.
       
  7989         box enterField acceptOnLeave:true.
       
  7990         thresholdValue onChangeEvaluate:update.
       
  7991         "/ box height:400.
       
  7992     ] do:[
       
  7993         userInput := Dialog request:'Treshold (0=black; 1=white) ?' initialAnswer:0.5.
       
  7994     ].
       
  7995     userInput isEmptyOrNil ifTrue:[^ self].
       
  7996     thresholdBrighness := Number readFrom:userInput onError:nil.
       
  7997     thresholdBrighness isNil ifTrue:[^ self].
       
  7998 
       
  7999     thresholdBrighness := thresholdBrighness clampBetween:0 and:1.
       
  8000     imageEditView newImageWithUndo:(image asThresholdMonochromeImage:thresholdBrighness)
       
  8001 
       
  8002     "Created: / 24-08-2017 / 15:26:44 / cg"
       
  8003     "Modified (comment): / 24-08-2017 / 16:43:32 / cg"
  7938 ! !
  8004 ! !
  7939 
  8005 
  7940 !ImageEditor methodsFor:'user actions-image sequences'!
  8006 !ImageEditor methodsFor:'user actions-image sequences'!
  7941 
  8007 
  7942 editEachImageFromSequence
  8008 editEachImageFromSequence