ImageEditor.st
author Patrik Svestka <patrik.svestka@gmail.com>
Wed, 14 Nov 2018 12:07:51 +0100
branchjv
changeset 3630 5e718e0a754e
parent 3370 c88532134a2b
child 3374 2cb3e68941a8
permissions -rw-r--r--
Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present

- All source *.st files are now Unicode UTF8 without BOM
Files are in two groups (fileOut works this way in Smalltalk/X):
- containing a unicode character have "{ Encoding: utf8 }" at the header
- ASCII only are without the header
tz@400
     1
"
tz@767
     2
 COPYRIGHT (c) 1997-1998 by eXept Software AG
tz@400
     3
              All Rights Reserved
tz@400
     4
tz@400
     5
 This software is furnished under a license and may be used
tz@400
     6
 only in accordance with the terms of that license and with the
tz@405
     7
 inclusion of the above copyright notice. This software may not
tz@400
     8
 be provided or otherwise made available to, or used by, any
tz@405
     9
 other person. No title to or ownership of the software is
tz@400
    10
 hereby transferred.
tz@400
    11
"
cg@1376
    12
"{ Package: 'stx:libtool2' }"
cg@1376
    13
cg@3180
    14
"{ NameSpace: Smalltalk }"
cg@3180
    15
cg@1975
    16
ResourceSpecEditor subclass:#ImageEditor
tz@975
    17
	instanceVariableNames:'imageEditView colorMapMode editMode mouseKeyColorMode
cg@1960
    18
		selectedColorIndex postOpenAction imageSeqNr drawingColormap
cg@2767
    19
		lastShiftUsedWrap lastGrabbedScreenArea
cg@2767
    20
		allowedToChangeImageDimensionAndDepth'
cg@1640
    21
	classVariableNames:'LastDirectory LastSizeString MaskClipboard LastColormapMode
cg@2796
    22
		DefaultRelativeSizes LastURL'
cg@929
    23
	poolDictionaries:''
cg@929
    24
	category:'Interface-UIPainter'
tz@400
    25
!
tz@400
    26
tz@400
    27
!ImageEditor class methodsFor:'documentation'!
tz@400
    28
tz@400
    29
copyright
tz@400
    30
"
tz@767
    31
 COPYRIGHT (c) 1997-1998 by eXept Software AG
tz@400
    32
              All Rights Reserved
tz@400
    33
tz@400
    34
 This software is furnished under a license and may be used
tz@400
    35
 only in accordance with the terms of that license and with the
tz@405
    36
 inclusion of the above copyright notice. This software may not
tz@400
    37
 be provided or otherwise made available to, or used by, any
tz@405
    38
 other person. No title to or ownership of the software is
tz@400
    39
 hereby transferred.
tz@400
    40
"
tz@400
    41
!
tz@400
    42
tz@400
    43
documentation
tz@400
    44
"
tz@737
    45
    Image Editor allows you to create, design, modify or just inspect images.
tz@400
    46
tz@400
    47
    [start with:]
tz@400
    48
        ImageEditor open
tz@941
    49
        ImageEditor openOnClass:Icon andSelector:#startIcon
tz@400
    50
tz@400
    51
    [see also:]
tz@400
    52
        ImageEditView Image
tz@400
    53
tz@400
    54
    [author:]
tz@544
    55
        Thomas Zwick, eXept Software AG
cg@1806
    56
        Claus Gittinger, eXept Software AG
tz@400
    57
"
tz@400
    58
! !
tz@400
    59
tz@400
    60
!ImageEditor class methodsFor:'instance creation'!
tz@400
    61
sv@3357
    62
openLoadingImageWith:aBlock modal:modalBoolean
cg@1975
    63
    "opens an Image Editor on anImage"
cg@1975
    64
cg@1975
    65
    |editor|
cg@1975
    66
cg@1975
    67
    editor := self new.
cg@1975
    68
    editor allButOpen.
cg@1975
    69
    aBlock value:editor.
sv@3357
    70
    modalBoolean ifTrue:[
sv@3357
    71
        editor openWindowModal.
sv@3357
    72
    ] ifFalse:[
sv@3357
    73
        editor openWindow.
sv@3357
    74
    ].
cg@2764
    75
    ^ editor
cg@1975
    76
!
cg@1975
    77
tz@400
    78
openModalOnClass: aClass andSelector: aSelector
cg@1975
    79
    "opens a modal Image Editor on aClass and aSelector.
cg@1975
    80
     Returns the real name of the edited resource method (in case, user changed it)."
cg@1975
    81
cg@1975
    82
    |imageEditor imageEditView className resourceClass resourceSelector| 
tz@400
    83
tz@400
    84
    imageEditor := self new.
tz@767
    85
tz@900
    86
    aClass isClass  ifTrue: [className := aClass name].
tz@900
    87
    aClass isString ifTrue: [className := aClass].      
tz@903
    88
    aClass isNil    ifTrue: [className := ''].      
tz@400
    89
cg@2764
    90
    imageEditor postOpenAction: [
cg@2764
    91
            imageEditView := imageEditor imageEditView. 
cg@2764
    92
            imageEditor loadFromOrPrepareForClass: aClass andSelector: aSelector
cg@2764
    93
        ].
tz@400
    94
    imageEditor openModal.
tz@400
    95
cg@1975
    96
    resourceClass := imageEditView resourceClass.
cg@1975
    97
    resourceSelector := imageEditView resourceSelector.
cg@1975
    98
cg@1975
    99
    (resourceClass isNil or:[resourceSelector isNil]) ifTrue:[^ nil].
cg@1975
   100
    ^ Array with:resourceClass with:resourceSelector
cg@1966
   101
cg@1966
   102
    "
cg@1966
   103
     self openModalOnClass: self andSelector: #leftMouseKeyIcon
cg@1966
   104
    "
tz@400
   105
!
tz@400
   106
sv@3357
   107
openModalOnFile:aFileName
sv@3357
   108
    "opens an Image Editor on aFileName"
sv@3357
   109
sv@3357
   110
    self openLoadingImageWith:[:editor | 
sv@3357
   111
        editor loadFromFile:aFileName.
sv@3357
   112
    ] modal:true.
sv@3357
   113
sv@3357
   114
    "
sv@3357
   115
     self openModalOnFile: '../../goodies/bitmaps/gifImages/back.gif'
sv@3357
   116
    "
sv@3357
   117
!
sv@3357
   118
cg@2764
   119
openModalOnImage:anImage
cg@2764
   120
    "opens a modal Image Editor on an image.
cg@2764
   121
     Returns the modified image or nil if unsaved/unchanged"
cg@2764
   122
cg@2764
   123
    |imageEditor imageEditView newImage| 
cg@2764
   124
cg@2764
   125
    imageEditor := self new.
cg@2767
   126
    imageEditor allowedToChangeImageDimensionAndDepth:false.
cg@2764
   127
    imageEditor postOpenAction: [
cg@2764
   128
            imageEditView := imageEditor imageEditView. 
cg@2764
   129
            imageEditor loadFromImage: anImage
cg@2764
   130
        ].
cg@2764
   131
    imageEditor openModal.
cg@2764
   132
cg@2766
   133
    newImage := imageEditor savedImage.
cg@2764
   134
    ^ newImage
cg@2764
   135
!
cg@2764
   136
cg@1966
   137
openOnClass:aClass andSelector:aSelector
cg@1966
   138
    "opens an Image Editor on aClass and aSelector"
tz@400
   139
cg@2764
   140
    self openLoadingImageWith:[:editor | 
cg@2764
   141
        editor loadFromClass:aClass theNonMetaclass andSelector:aSelector.
sv@3357
   142
    ] modal:false.
cg@1057
   143
cg@1966
   144
    "
cg@1966
   145
     self openOnClass:self andSelector:#leftMouseKeyIcon
cg@1966
   146
     self openOnClass:self andSelector:nil
cg@1966
   147
    "
cg@1966
   148
cg@1057
   149
    "Modified: / 16.3.1999 / 21:33:49 / cg"
tz@400
   150
!
tz@400
   151
cg@1966
   152
openOnFile:aFileName
cg@1966
   153
    "opens an Image Editor on aFileName"
cg@1966
   154
cg@2764
   155
    self openLoadingImageWith:[:editor | 
cg@2764
   156
        editor loadFromFile:aFileName.
sv@3357
   157
    ] modal:false.
cg@1966
   158
tz@767
   159
    "
cg@1975
   160
     self openOnFile: '../../goodies/bitmaps/gifImages/back.gif'
tz@767
   161
    "
tz@400
   162
cg@1057
   163
    "Modified: / 16.3.1999 / 21:33:25 / cg"
tz@400
   164
!
tz@400
   165
cg@1966
   166
openOnImage:anImage
cg@1966
   167
    "opens an Image Editor on anImage"
tz@400
   168
cg@2764
   169
    self openLoadingImageWith:[:editor | 
cg@2764
   170
        editor loadFromImage: anImage.
sv@3357
   171
    ] modal:false
cg@1053
   172
cg@1966
   173
    "
cg@1966
   174
     self openOnImage: Icon startIcon
cg@1966
   175
    "
cg@1966
   176
cg@1053
   177
    "Modified: / 11.3.1999 / 16:18:33 / cg"
tz@400
   178
! !
tz@400
   179
tz@400
   180
!ImageEditor class methodsFor:'accessing'!
tz@400
   181
tz@400
   182
listOfColorMaps
tz@767
   183
    "returns the list of default color maps for a new image"
tz@400
   184
tz@400
   185
    |colorMap|
tz@898
   186
tz@400
   187
    (colorMap := OrderedCollection new)
tz@400
   188
        add: Color black;
tz@400
   189
        add: Color white;
tz@400
   190
        add: Color red;
tz@400
   191
        add: Color green;
tz@400
   192
        add: Color blue;
tz@400
   193
        add: Color cyan;
tz@400
   194
        add: Color yellow;
tz@400
   195
        add: Color magenta;
tz@898
   196
        add: (Color redByte: 127 greenByte:   0 blueByte:   0);
tz@898
   197
        add: (Color redByte:   0 greenByte: 127 blueByte:   0);
tz@898
   198
        add: (Color redByte:   0 greenByte:   0 blueByte: 127);
tz@898
   199
        add: (Color redByte:   0 greenByte: 127 blueByte: 127);
tz@898
   200
        add: (Color redByte: 127 greenByte: 127 blueByte:   0);
tz@898
   201
        add: (Color redByte: 127 greenByte:   0 blueByte: 127);
tz@898
   202
        add: (Color redByte: 127 greenByte: 127 blueByte: 127);
tz@898
   203
        add: (Color redByte: 170 greenByte: 170 blueByte: 170).
tz@898
   204
cg@3346
   205
    0 to: 5 do: [:r|                                                    
cg@3346
   206
        0 to: 5 do: [:g|
cg@3346
   207
            0 to: 5 do: [:b|
tz@898
   208
                colorMap add: (Color redByte: (r*255//5) ceiling greenByte: (g*255//5) ceiling blueByte: (b*255//5) ceiling)
tz@400
   209
            ]
tz@400
   210
        ]
tz@400
   211
    ].
tz@400
   212
cg@3346
   213
    1 to: 25 do: [:g|                             
tz@898
   214
        colorMap add: (Color redByte: (g*255//26) ceiling greenByte: (g*255//26) ceiling blueByte: (g*255//26) ceiling)
tz@400
   215
    ].
tz@400
   216
cg@1847
   217
    ^ Dictionary new
cg@2571
   218
        at: #depth32 put:(FixedPalette redShift:16 redMask:16rFF greenShift:8 greenMask:16rFF blueShift:0 blueMask:16rFF);
cg@1847
   219
        at: #depth24 put:(FixedPalette redShift:16 redMask:16rFF greenShift:8 greenMask:16rFF blueShift:0 blueMask:16rFF);
cg@1847
   220
        at: #masked24 put:(FixedPalette redShift:16 redMask:16rFF greenShift:8 greenMask:16rFF blueShift:0 blueMask:16rFF);
cg@1847
   221
        at: #depth16 put:(FixedPalette redShift:11 redMask:16r1F greenShift:5 greenMask:16r3F blueShift:0 blueMask:16r1F);
cg@1847
   222
        at: #masked16 put:(FixedPalette redShift:11 redMask:16r1F greenShift:5 greenMask:16r3F blueShift:0 blueMask:16r1F);
cg@1847
   223
        at: #depth8  put: colorMap;
cg@1847
   224
        at: #masked8 put: colorMap;
cg@1847
   225
        at: #depth4  put: (colorMap copyFrom: 1 to: 16);
cg@1847
   226
        at: #masked4 put: (colorMap copyFrom: 1 to: 16);
cg@1847
   227
        at: #depth2  put: (colorMap copyFrom: 1 to: 4);
cg@1847
   228
        at: #masked2 put: (colorMap copyFrom: 1 to: 4);
cg@1847
   229
        at: #depth1  put: (colorMap copyFrom: 1 to: 2);
cg@1847
   230
        at: #masked1 put: (colorMap copyFrom: 1 to: 2);
tz@400
   231
        yourself
tz@400
   232
!
tz@400
   233
tz@400
   234
listOfDefaultSizes
tz@767
   235
    "returns the list of default sizes for a new image"
tz@400
   236
cg@1960
   237
    ^ #('8x8' '16x16' '22x22' '32x32' '48x48' '64x64')
cg@932
   238
cg@932
   239
    "Modified: / 31.7.1998 / 01:57:34 / cg"
cg@1847
   240
!
cg@1847
   241
cg@1847
   242
namesOfColorMaps
cg@1847
   243
    ^ Dictionary new
cg@2571
   244
        at: #depth32 put: '32-plane (rgba)';
cg@1847
   245
        at: #depth24 put: '24-plane';
cg@1847
   246
        at: #masked24 put: '24-plane + mask';
cg@1847
   247
        at: #depth16 put: '16-plane';
cg@1847
   248
        at: #masked16 put: '16-plane + mask';
cg@1847
   249
        at: #depth8  put: ' 8-plane';
cg@1847
   250
        at: #masked8 put: ' 8-plane + mask';
cg@1847
   251
        at: #depth4  put: ' 4-plane';
cg@1847
   252
        at: #masked4 put: ' 4-plane + mask';
cg@1847
   253
        at: #depth2  put: ' 2-plane';
cg@1847
   254
        at: #masked2 put: ' 2-plane + mask';
cg@1847
   255
        at: #depth1  put: ' 1-plane';
cg@1847
   256
        at: #masked1 put: ' 1-plane + mask' ;
cg@1847
   257
        yourself
tz@400
   258
! !
tz@400
   259
tz@460
   260
!ImageEditor class methodsFor:'help specs'!
tz@460
   261
cg@1545
   262
flyByHelpSpec
cg@1545
   263
    <resource: #help>
cg@1545
   264
cg@2871
   265
    ^super flyByHelpSpec addPairsFrom:(self localHelpTexts)
cg@2871
   266
cg@2871
   267
    "Modified: / 19-01-2012 / 13:29:48 / cg"
cg@1545
   268
!
cg@1545
   269
tz@460
   270
helpSpec
tz@737
   271
    "This resource specification was automatically generated
tz@737
   272
     by the UIHelpTool of ST/X."
tz@737
   273
tz@737
   274
    "Do not manually edit this!! If it is corrupted,
tz@737
   275
     the UIHelpTool may not be able to read the specification."
tz@460
   276
tz@460
   277
    "
tz@737
   278
     UIHelpTool openOnClass:ImageEditor    
tz@460
   279
    "
tz@460
   280
tz@737
   281
    <resource: #help>
tz@737
   282
cg@2871
   283
    ^ super helpSpec addPairsFrom:(self localHelpTexts)
cg@2871
   284
cg@2871
   285
    "Modified: / 19-01-2012 / 13:29:42 / cg"
cg@2871
   286
!
cg@2871
   287
cg@2871
   288
localHelpTexts
cg@2871
   289
    "This resource specification was automatically generated
cg@2871
   290
     by the UIHelpTool of ST/X."
cg@2871
   291
cg@2871
   292
    "Do not manually edit this!! If it is corrupted,
cg@2871
   293
     the UIHelpTool may not be able to read the specification."
cg@2871
   294
cg@2871
   295
    "
cg@2871
   296
     UIHelpTool openOnClass:ImageEditor    
cg@2871
   297
    "
cg@2871
   298
cg@2871
   299
    <resource: #help>
cg@2871
   300
cg@2871
   301
    ^ #(
cg@2871
   302
cg@2871
   303
#xdrawModeBox
cg@2871
   304
'Rectangle'
cg@2871
   305
cg@2871
   306
#xdrawModeCopy
cg@2871
   307
'Copy'
cg@2871
   308
cg@2871
   309
#xdrawModeFill
cg@2871
   310
'Flood-fill'
cg@2871
   311
cg@2871
   312
#xdrawModeFilledBox
cg@2871
   313
'Filled rectangle'
cg@2871
   314
cg@2871
   315
#xdrawModePaste
cg@2871
   316
'Paste'
cg@2871
   317
cg@2871
   318
#xdrawModePasteUnder
cg@2871
   319
'Paste under'
cg@2871
   320
cg@2871
   321
#xdrawModePasteWithMask
cg@2871
   322
'Paste with Mask'
cg@2871
   323
cg@2871
   324
#xdrawModePoint
cg@2871
   325
'Point'
cg@2871
   326
cg@2871
   327
#xfileGrabImage
cg@2871
   328
'Pick from screen'
cg@2871
   329
cg@2871
   330
#xfileLoadFromClass
cg@2871
   331
'Load from method...'
cg@2871
   332
cg@2871
   333
#xfileLoadFromFile
cg@2871
   334
'Load from file...'
cg@2871
   335
cg@2871
   336
#xfileNewImage
cg@2871
   337
'New image'
cg@2871
   338
cg@2871
   339
#filePrint
cg@2871
   340
'Print'
cg@2871
   341
cg@2871
   342
#xfileSaveAs
cg@2871
   343
'Save to file...'
cg@2871
   344
cg@2871
   345
#xfileSaveMaskAs
cg@2871
   346
'Save mask to file...'
cg@2871
   347
cg@2871
   348
#xfileSaveMethod
cg@2871
   349
'Save as method'
cg@2871
   350
cg@2871
   351
#xfileSaveMethodAs
cg@2871
   352
'Save as Method...'
cg@2871
   353
cg@2871
   354
#nextImageInSequence
cg@2871
   355
'Go to the next image in the animated gif image sequence.'
cg@2871
   356
cg@2871
   357
#previousImageInSequence
cg@2871
   358
'Go to the previous image in the animated gif image sequence.'
tz@460
   359
tz@460
   360
#colorMap
cg@2765
   361
'ColorMap functions'
cg@929
   362
cg@929
   363
#colorMap1
cg@2765
   364
'Convert to depth-1 image'
cg@929
   365
cg@986
   366
#colorMap1M
cg@2765
   367
'Convert to depth-1 image plus mask'
cg@986
   368
cg@929
   369
#colorMap2
cg@2765
   370
'Convert to depth-2 image'
cg@2765
   371
cg@2765
   372
#colorMap24
cg@2765
   373
'Convert to depth-24 image (rgb)'
cg@929
   374
cg@986
   375
#colorMap2M
cg@2765
   376
'Convert to depth-2 image plus mask'
cg@2765
   377
cg@2765
   378
#colorMap32
cg@2765
   379
'Convert to depth-32 image (rgba)'
cg@986
   380
cg@929
   381
#colorMap4
cg@2765
   382
'Convert to depth-4 image'
cg@929
   383
cg@986
   384
#colorMap4M
cg@2765
   385
'Convert to depth-4 image plus mask'
cg@986
   386
cg@929
   387
#colorMap8
cg@2765
   388
'Convert to depth-8 image'
cg@929
   389
cg@929
   390
#colorMap8M
cg@2765
   391
'Convert to depth-8 image plus mask'
cg@2571
   392
cg@986
   393
#colorMapTable
cg@2765
   394
'Shows a list of used colors of the image'
cg@986
   395
cg@929
   396
#compressColormap
cg@2765
   397
'Remove unneeded entries from the colorMap'
tz@460
   398
cg@1045
   399
#cropAll
cg@2765
   400
'Find and remove all borders'
cg@986
   401
cg@1045
   402
#cropBottom
cg@2765
   403
'Find and remove bottom border'
cg@986
   404
cg@1045
   405
#cropLeft
cg@2765
   406
'Find and remove left border'
cg@986
   407
cg@1045
   408
#cropManual
cg@986
   409
'Specify border(s) to remove.'
cg@986
   410
cg@1045
   411
#cropRight
cg@2765
   412
'Find and remove right border'
cg@986
   413
cg@1045
   414
#cropTop
cg@2765
   415
'Find and remove top border'
tz@487
   416
tz@460
   417
#drawModeBox
cg@2765
   418
'Rectangle Drawing Mode'
tz@460
   419
cg@2375
   420
#drawModeCircle
cg@2765
   421
'Circle Drawing Mode'
cg@2375
   422
tz@460
   423
#drawModeCopy
cg@2765
   424
'Area Copy Mode'
tz@460
   425
tz@460
   426
#drawModeFill
cg@2765
   427
'Flood Fill Mode'
tz@460
   428
tz@460
   429
#drawModeFilledBox
cg@2765
   430
'Filled Rectangle Drawing Mode'
tz@460
   431
tz@460
   432
#drawModePaste
cg@2765
   433
'Paste Mode'
cg@914
   434
cg@914
   435
#drawModePasteUnder
cg@2765
   436
'Paste-Under Mode'
cg@1637
   437
cg@1637
   438
#drawModePasteWithMask
cg@2765
   439
'Paste-with-Mask Mode'
tz@460
   440
tz@460
   441
#drawModePoint
cg@2765
   442
'Point Drawing Mode'
cg@2375
   443
cg@1639
   444
#drawModeSpecial
cg@2871
   445
'Special operations (select rectangle, then choose operation)'
cg@1639
   446
cg@2765
   447
#drawModeSpray
cg@2765
   448
'Spray Drawing Mode'
cg@2765
   449
tz@460
   450
#editFlipHorizontal
cg@2765
   451
'Flip the image horizontally'
tz@460
   452
tz@460
   453
#editFlipVertical
cg@2765
   454
'Flip the image vertically'
tz@460
   455
tz@460
   456
#editMagnifyImage
cg@2765
   457
'Magnify the image'
tz@460
   458
tz@460
   459
#editNegate
cg@2765
   460
'Invert the images colors'
tz@460
   461
tz@460
   462
#editResize
cg@2765
   463
'Resize the image (preserving the old image)'
tz@460
   464
tz@460
   465
#editRotate
cg@2765
   466
'Rotate the image'
tz@460
   467
cg@2701
   468
#fileGrabImageFromScreen
cg@2765
   469
'Pick an image from the screen (specify area)'
cg@2701
   470
cg@2701
   471
#fileGrabImageFromWindow
cg@2765
   472
'Pick an image from a window on the screen (click on window)'
cg@929
   473
tz@460
   474
#fileLoadFromClass
cg@2765
   475
'Select and load an image from a resource method'
tz@460
   476
tz@460
   477
#fileLoadFromFile
cg@2765
   478
'Select and load an image from a file'
tz@460
   479
cg@2796
   480
#fileLoadFromURL
cg@2796
   481
'Load an image from the net, given its URL'
cg@2796
   482
tz@460
   483
#fileNewImage
cg@914
   484
'Create a new image'
tz@460
   485
cg@3200
   486
#fileNewImageFromClipboard
cg@3200
   487
'Create a new image and initialize it from the clipboard'
cg@3200
   488
cg@3200
   489
#fileNewMaskFromClipboard
cg@3200
   490
'Paste the image in the clipboard as a mask. Must be a depth-1 image'
cg@3200
   491
tz@460
   492
#filePrint
cg@2765
   493
'Print the image on a postscript printer'
cg@2765
   494
cg@2765
   495
#fileSave
cg@2765
   496
'Save the image'
tz@460
   497
tz@460
   498
#fileSaveAs
cg@2765
   499
'Save the image to a file'
cg@2765
   500
cg@2765
   501
#fileSaveButtonImageAs
cg@2765
   502
'Save an image of a button with the image to a file (for html use)'
tz@460
   503
tz@460
   504
#fileSaveMaskAs
cg@2765
   505
'Save the mask of the image to a file'
ca@1613
   506
tz@460
   507
#fileSaveMethod
cg@2765
   508
'Save the image as resource method in the current class and selector'
tz@460
   509
tz@460
   510
#fileSaveMethodAs
cg@2765
   511
'Save the image as resource method in a class'
tz@460
   512
tz@487
   513
#magnificationNumber
cg@2765
   514
'Shows the current magnification'
tz@487
   515
tz@487
   516
#magnifyImageDown
cg@2765
   517
'Decrease magnification'
tz@487
   518
tz@487
   519
#magnifyImageUp
cg@2765
   520
'Increase magnification'
tz@487
   521
tz@487
   522
#mouseKeyColorMode
cg@2765
   523
'Toggle between left and right mouse button color'
tz@487
   524
tz@487
   525
#previewView
cg@2765
   526
'Shows a preview of the image'
tz@487
   527
tz@905
   528
#settingsGridMagnification
cg@2765
   529
'Change the grid magnification of the edit view'
tz@905
   530
tz@460
   531
)
cg@2871
   532
cg@2871
   533
    "Created: / 19-01-2012 / 13:29:31 / cg"
tz@460
   534
! !
tz@460
   535
tz@737
   536
!ImageEditor class methodsFor:'image specs'!
tz@737
   537
cg@2272
   538
circleIcon
sv@3121
   539
    <resource: #image>
cg@2272
   540
    "This resource specification was automatically generated
cg@2272
   541
     by the ImageEditor of ST/X."
cg@2272
   542
    "Do not manually edit this!! If it is corrupted,
cg@2272
   543
     the ImageEditor may not be able to read the specification."
cg@2272
   544
    "
cg@2272
   545
     self circleIcon inspect
cg@2272
   546
     ImageEditor openOnClass:self andSelector:#circleIcon
sv@3121
   547
     Icon flushCachedIcons"
sv@3121
   548
    
sv@3121
   549
    ^ Icon constantNamed:'ImageEditor class circleIcon'
sv@3121
   550
        ifAbsentPut:[
sv@3121
   551
            (Depth1Image new)
sv@3121
   552
                width:14;
sv@3121
   553
                height:14;
sv@3121
   554
                photometric:(#palette);
sv@3121
   555
                bitsPerSample:(#( 1 ));
sv@3121
   556
                samplesPerPixel:(1);
sv@3121
   557
                bits:(ByteArray 
sv@3121
   558
                            fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@C@@@@@@@@@@@@@@@a');
sv@3121
   559
                colorMapFromArray:#[ 0 0 0 255 0 0 ];
sv@3121
   560
                mask:((ImageMask new)
sv@3121
   561
                            width:14;
sv@3121
   562
                            height:14;
sv@3121
   563
                            bits:(ByteArray 
sv@3121
   564
                                        fromPackedString:'@@@@@@N@CF@PDA@PH@  BB@HDA@PD@1 @8@@@@@a');
sv@3121
   565
                            yourself);
sv@3121
   566
                yourself
sv@3121
   567
        ]
sv@3121
   568
!
sv@3121
   569
sv@3121
   570
copyIcon
cg@2272
   571
    <resource: #image>
cg@1637
   572
    "This resource specification was automatically generated
cg@1637
   573
     by the ImageEditor of ST/X."
cg@1637
   574
    "Do not manually edit this!! If it is corrupted,
cg@1637
   575
     the ImageEditor may not be able to read the specification."
cg@1637
   576
    "
cg@1637
   577
     self copyIcon inspect
cg@1637
   578
     ImageEditor openOnClass:self andSelector:#copyIcon
sv@3121
   579
     Icon flushCachedIcons"
sv@3121
   580
    
sv@3121
   581
    ^ Icon constantNamed:'ImageEditor class copyIcon'
sv@3121
   582
        ifAbsentPut:[
sv@3121
   583
            (Depth2Image new)
sv@3121
   584
                width:14;
sv@3121
   585
                height:14;
sv@3121
   586
                photometric:(#palette);
sv@3121
   587
                bitsPerSample:(#( 2 ));
sv@3121
   588
                samplesPerPixel:(1);
sv@3121
   589
                bits:(ByteArray 
sv@3121
   590
                            fromPackedString:'@@@@@@@@@@@** @@J)UUTB*Z*)@*&**PJ)**$B*Z*)@*&**PJ)**$@@Z*)@@F**P@AUUT@@@@@@b');
sv@3121
   591
                colorMapFromArray:#[ 0 0 0 0 0 128 255 255 255 ];
sv@3121
   592
                mask:((ImageMask new)
sv@3121
   593
                            width:14;
sv@3121
   594
                            height:14;
sv@3121
   595
                            bits:(ByteArray 
sv@3121
   596
                                        fromPackedString:'@@C? O>@??3??O?<??3??O?<??3??@_<A?0@@@@a');
sv@3121
   597
                            yourself);
sv@3121
   598
                yourself
sv@3121
   599
        ]
cg@1637
   600
!
cg@1637
   601
sv@2155
   602
defaultIcon
sv@2155
   603
    <resource: #programImage>
sv@2155
   604
sv@2155
   605
    ^ ToolbarIconLibrary startImageEditorIcon
sv@2155
   606
!
sv@2155
   607
cg@2871
   608
fillGradientRectIcon
sv@3121
   609
    <resource: #image>
cg@2871
   610
    "This resource specification was automatically generated
cg@2871
   611
     by the ImageEditor of ST/X."
cg@2871
   612
    "Do not manually edit this!! If it is corrupted,
cg@2871
   613
     the ImageEditor may not be able to read the specification."
cg@2871
   614
    "
cg@2871
   615
     self fillGradientRectIcon inspect
cg@2871
   616
     ImageEditor openOnClass:self andSelector:#fillGradientRectIcon
sv@3121
   617
     Icon flushCachedIcons"
sv@3121
   618
    
sv@3121
   619
    ^ Icon constantNamed:'ImageEditor class fillGradientRectIcon'
sv@3121
   620
        ifAbsentPut:[
sv@3121
   621
            (Depth4Image new)
sv@3121
   622
                width:14;
sv@3121
   623
                height:14;
sv@3121
   624
                photometric:(#palette);
sv@3121
   625
                bitsPerSample:(#[ 4 ]);
sv@3121
   626
                samplesPerPixel:(1);
sv@3121
   627
                bits:(ByteArray 
sv@3121
   628
                            fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ADQDQDQ@@@QDQDQDP@@BH"H"H"@@@"H"H"H @@L3L3L3L@@CL3L3L3@@@QDQDQDP@@DQDQDQD@@@@@@@@@
sv@3121
   629
@@@@@@@@@@@b');
sv@3121
   630
                colorMapFromArray:#[ 0 0 0 255 0 0 127 0 0 191 0 0 63 0 0 ];
sv@3121
   631
                mask:((ImageMask new)
sv@3121
   632
                            width:14;
sv@3121
   633
                            height:14;
sv@3121
   634
                            bits:(ByteArray 
sv@3121
   635
                                        fromPackedString:'@@@@@C?0O?@?<C?0O?@?<C?0O?@?<C?0@@@@@@@a');
sv@3121
   636
                            yourself);
sv@3121
   637
                yourself
sv@3121
   638
        ]
sv@3121
   639
!
sv@3121
   640
sv@3121
   641
fillHorizontalGradientRectIcon
cg@2871
   642
    <resource: #image>
cg@2871
   643
    "This resource specification was automatically generated
cg@2871
   644
     by the ImageEditor of ST/X."
cg@2871
   645
    "Do not manually edit this!! If it is corrupted,
cg@2871
   646
     the ImageEditor may not be able to read the specification."
cg@2871
   647
    "
cg@2871
   648
     self fillHorizontalGradientRectIcon inspect
cg@2871
   649
     ImageEditor openOnClass:self andSelector:#fillHorizontalGradientRectIcon
sv@3121
   650
     Icon flushCachedIcons"
sv@3121
   651
    
sv@3121
   652
    ^ Icon constantNamed:'ImageEditor class fillHorizontalGradientRectIcon'
sv@3121
   653
        ifAbsentPut:[
sv@3121
   654
            (Depth4Image new)
sv@3121
   655
                width:14;
sv@3121
   656
                height:14;
sv@3121
   657
                photometric:(#palette);
sv@3121
   658
                bitsPerSample:(#[ 4 ]);
sv@3121
   659
                samplesPerPixel:(1);
sv@3121
   660
                bits:(ByteArray 
sv@3121
   661
                            fromPackedString:'@@@@@@@@@@@@@@@@@@@@@DP"L1D@@@ADH#LQ@@@@QBH3DP@@@DP"L1D@@@ADH#LQ@@@@QBH3DP@@@DP"L1D@@@ADH#LQ@@@@QBH3DP@@@DP"L1D@@@@@@@@@
sv@3121
   662
@@@@@@@@@@@b');
sv@3121
   663
                colorMapFromArray:#[ 0 0 0 255 0 0 127 0 0 191 0 0 63 0 0 ];
sv@3121
   664
                mask:((ImageMask new)
sv@3121
   665
                            width:14;
sv@3121
   666
                            height:14;
sv@3121
   667
                            bits:(ByteArray 
sv@3121
   668
                                        fromPackedString:'@@@@@C?0O?@?<C?0O?@?<C?0O?@?<C?0@@@@@@@a');
sv@3121
   669
                            yourself);
sv@3121
   670
                yourself
sv@3121
   671
        ]
sv@3121
   672
!
sv@3121
   673
sv@3121
   674
fillIcon
cg@2871
   675
    <resource: #image>
cg@1637
   676
    "This resource specification was automatically generated
cg@1637
   677
     by the ImageEditor of ST/X."
cg@1637
   678
    "Do not manually edit this!! If it is corrupted,
cg@1637
   679
     the ImageEditor may not be able to read the specification."
cg@1637
   680
    "
cg@1637
   681
     self fillIcon inspect
cg@1637
   682
     ImageEditor openOnClass:self andSelector:#fillIcon
sv@3121
   683
     Icon flushCachedIcons"
sv@3121
   684
    
sv@3121
   685
    ^ Icon constantNamed:'ImageEditor class fillIcon'
sv@3121
   686
        ifAbsentPut:[
sv@3121
   687
            (Depth2Image new)
sv@3121
   688
                width:14;
sv@3121
   689
                height:14;
sv@3121
   690
                photometric:(#palette);
sv@3121
   691
                bitsPerSample:(#( 2 ));
sv@3121
   692
                samplesPerPixel:(1);
sv@3121
   693
                bits:(ByteArray 
sv@3121
   694
                            fromPackedString:'@@@@@@@@@@@@@ @@@@*H@@D*(@@DUUP@EAUU@AAEU@@@@U@@DDA@@@@@@@@PP@@@@@@@@@@@@@@b');
sv@3121
   695
                colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ];
sv@3121
   696
                mask:((ImageMask new)
sv@3121
   697
                            width:14;
sv@3121
   698
                            height:14;
sv@3121
   699
                            bits:(ByteArray 
sv@3121
   700
                                        fromPackedString:'C @Q@BN@I<@?8C?0[?!!G<@O P\@@ D@@@@@@@@@a');
sv@3121
   701
                            yourself);
sv@3121
   702
                yourself
sv@3121
   703
        ]
sv@3121
   704
!
sv@3121
   705
sv@3121
   706
fillRectIcon
cg@1637
   707
    <resource: #image>
cg@1637
   708
    "This resource specification was automatically generated
cg@1637
   709
     by the ImageEditor of ST/X."
cg@1637
   710
    "Do not manually edit this!! If it is corrupted,
cg@1637
   711
     the ImageEditor may not be able to read the specification."
cg@1637
   712
    "
cg@1637
   713
     self fillRectIcon inspect
cg@1637
   714
     ImageEditor openOnClass:self andSelector:#fillRectIcon
sv@3121
   715
     Icon flushCachedIcons"
sv@3121
   716
    
sv@3121
   717
    ^ Icon constantNamed:'ImageEditor class fillRectIcon'
sv@3121
   718
        ifAbsentPut:[
sv@3121
   719
            (Depth1Image new)
sv@3121
   720
                width:14;
sv@3121
   721
                height:14;
sv@3121
   722
                photometric:(#palette);
sv@3121
   723
                bitsPerSample:(#( 1 ));
sv@3121
   724
                samplesPerPixel:(1);
sv@3121
   725
                bits:(ByteArray 
sv@3121
   726
                            fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@@@@@@@@@@@@D@@@@a');
sv@3121
   727
                colorMapFromArray:#[ 0 0 0 255 0 0 ];
sv@3121
   728
                mask:((ImageMask new)
sv@3121
   729
                            width:14;
sv@3121
   730
                            height:14;
sv@3121
   731
                            bits:(ByteArray 
sv@3121
   732
                                        fromPackedString:'@@@@@C?0O?@?<C?0O?@?<C?0O?@?<C?0@@@@@@@a');
sv@3121
   733
                            yourself);
sv@3121
   734
                yourself
sv@3121
   735
        ]
sv@3121
   736
!
sv@3121
   737
sv@3121
   738
fillVerticalGradientRectIcon
cg@1637
   739
    <resource: #image>
cg@2871
   740
    "This resource specification was automatically generated
cg@2871
   741
     by the ImageEditor of ST/X."
cg@2871
   742
    "Do not manually edit this!! If it is corrupted,
cg@2871
   743
     the ImageEditor may not be able to read the specification."
cg@2871
   744
    "
cg@2871
   745
     self fillGradientRectIcon inspect
cg@2871
   746
     ImageEditor openOnClass:self andSelector:#fillGradientRectIcon
sv@3121
   747
     Icon flushCachedIcons"
sv@3121
   748
    
sv@3121
   749
    ^ Icon constantNamed:'ImageEditor class fillGradientRectIcon'
sv@3121
   750
        ifAbsentPut:[
sv@3121
   751
            (Depth4Image new)
sv@3121
   752
                width:14;
sv@3121
   753
                height:14;
sv@3121
   754
                photometric:(#palette);
sv@3121
   755
                bitsPerSample:(#[ 4 ]);
sv@3121
   756
                samplesPerPixel:(1);
sv@3121
   757
                bits:(ByteArray 
sv@3121
   758
                            fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ADQDQDQ@@@QDQDQDP@@BH"H"H"@@@"H"H"H @@L3L3L3L@@CL3L3L3@@@QDQDQDP@@DQDQDQD@@@@@@@@@
sv@3121
   759
@@@@@@@@@@@b');
sv@3121
   760
                colorMapFromArray:#[ 0 0 0 255 0 0 127 0 0 191 0 0 63 0 0 ];
sv@3121
   761
                mask:((ImageMask new)
sv@3121
   762
                            width:14;
sv@3121
   763
                            height:14;
sv@3121
   764
                            bits:(ByteArray 
sv@3121
   765
                                        fromPackedString:'@@@@@C?0O?@?<C?0O?@?<C?0O?@?<C?0@@@@@@@a');
sv@3121
   766
                            yourself);
sv@3121
   767
                yourself
sv@3121
   768
        ]
sv@3121
   769
sv@3121
   770
    "Created: / 19-01-2012 / 13:44:51 / cg"
sv@3121
   771
!
sv@3121
   772
sv@3121
   773
flipHorizontalIcon
cg@2871
   774
    <resource: #image>
cg@2837
   775
    "This resource specification was automatically generated
cg@2837
   776
     by the ImageEditor of ST/X."
cg@2837
   777
    "Do not manually edit this!! If it is corrupted,
cg@2837
   778
     the ImageEditor may not be able to read the specification."
cg@2837
   779
    "
cg@2837
   780
     self flipHorizontalIcon inspect
cg@2837
   781
     ImageEditor openOnClass:self andSelector:#flipHorizontalIcon
sv@3121
   782
     Icon flushCachedIcons"
sv@3121
   783
    
sv@3121
   784
    ^ Icon constantNamed:'ImageEditor class flipHorizontalIcon'
sv@3121
   785
        ifAbsentPut:[
sv@3121
   786
            (Depth1Image new)
sv@3121
   787
                width:14;
sv@3121
   788
                height:14;
sv@3121
   789
                photometric:(#palette);
sv@3121
   790
                bitsPerSample:(#( 1 ));
sv@3121
   791
                samplesPerPixel:(1);
sv@3121
   792
                bits:(ByteArray 
sv@3121
   793
                            fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a');
sv@3121
   794
                colorMapFromArray:#[ 0 0 0 ];
sv@3121
   795
                mask:((ImageMask new)
sv@3121
   796
                            width:14;
sv@3121
   797
                            height:14;
sv@3121
   798
                            bits:(ByteArray 
sv@3121
   799
                                        fromPackedString:'@@@A@C?8HP )JC$8_?1??C$8JR !!BC?8@P@@@@@a');
sv@3121
   800
                            yourself);
sv@3121
   801
                yourself
sv@3121
   802
        ]
sv@3121
   803
!
sv@3121
   804
sv@3121
   805
flipVerticalIcon
cg@2837
   806
    <resource: #image>
cg@2837
   807
    "This resource specification was automatically generated
cg@2837
   808
     by the ImageEditor of ST/X."
cg@2837
   809
    "Do not manually edit this!! If it is corrupted,
cg@2837
   810
     the ImageEditor may not be able to read the specification."
cg@2837
   811
    "
cg@2837
   812
     self flipVerticalIcon inspect
cg@2837
   813
     ImageEditor openOnClass:self andSelector:#flipVerticalIcon
sv@3121
   814
     Icon flushCachedIcons"
sv@3121
   815
    
sv@3121
   816
    ^ Icon constantNamed:'ImageEditor class flipVerticalIcon'
sv@3121
   817
        ifAbsentPut:[
sv@3121
   818
            (Depth1Image new)
sv@3121
   819
                width:14;
sv@3121
   820
                height:14;
sv@3121
   821
                photometric:(#palette);
sv@3121
   822
                bitsPerSample:(#( 1 ));
sv@3121
   823
                samplesPerPixel:(1);
sv@3121
   824
                bits:(ByteArray 
sv@3121
   825
                            fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a');
sv@3121
   826
                colorMapFromArray:#[ 0 0 0 ];
sv@3121
   827
                mask:((ImageMask new)
sv@3121
   828
                            width:14;
sv@3121
   829
                            height:14;
sv@3121
   830
                            bits:(ByteArray 
sv@3121
   831
                                        fromPackedString:'@@@C@C?0I9@/4BLPH1A?>BLPH1@/4B^PO?@C@@@a');
sv@3121
   832
                            yourself);
sv@3121
   833
                yourself
sv@3121
   834
        ]
sv@3121
   835
!
sv@3121
   836
sv@3121
   837
leftMouseKeyIcon
cg@2837
   838
    <resource: #image>
tz@737
   839
    "This resource specification was automatically generated
tz@737
   840
     by the ImageEditor of ST/X."
tz@737
   841
    "Do not manually edit this!! If it is corrupted,
tz@737
   842
     the ImageEditor may not be able to read the specification."
tz@737
   843
    "
cg@1405
   844
     self leftMouseKeyIcon inspect
tz@737
   845
     ImageEditor openOnClass:self andSelector:#leftMouseKeyIcon
sv@3121
   846
     Icon flushCachedIcons"
sv@3121
   847
    
sv@3121
   848
    ^ Icon constantNamed:'ImageEditor class leftMouseKeyIcon'
sv@3121
   849
        ifAbsentPut:[
sv@3121
   850
            (Depth2Image new)
sv@3121
   851
                width:16;
sv@3121
   852
                height:16;
sv@3121
   853
                photometric:(#palette);
sv@3121
   854
                bitsPerSample:(#( 2 ));
sv@3121
   855
                samplesPerPixel:(1);
sv@3121
   856
                bits:(ByteArray 
sv@3121
   857
                            fromPackedString:'@@@@@@@@@@@@@@@@@EJJ@@AR" @@T((@@@@@@@B** @@**(@@J**@@B** @@**(@@J**@@@**@@@@@@@@@@@@@@a');
sv@3121
   858
                colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ];
sv@3121
   859
                mask:((ImageMask new)
sv@3121
   860
                            width:16;
sv@3121
   861
                            height:16;
sv@3121
   862
                            bits:(ByteArray 
sv@3121
   863
                                        fromPackedString:'@@@@@@?0G? _>A?8G? _>A?8G? _>A?8G? O<@_ @@@b');
sv@3121
   864
                            yourself);
sv@3121
   865
                yourself
sv@3121
   866
        ]
sv@3121
   867
!
sv@3121
   868
sv@3121
   869
pasteIcon
tz@737
   870
    <resource: #image>
cg@1637
   871
    "This resource specification was automatically generated
cg@1637
   872
     by the ImageEditor of ST/X."
cg@1637
   873
    "Do not manually edit this!! If it is corrupted,
cg@1637
   874
     the ImageEditor may not be able to read the specification."
cg@1637
   875
    "
cg@1637
   876
     self pasteIcon inspect
cg@1637
   877
     ImageEditor openOnClass:self andSelector:#pasteIcon
sv@3121
   878
     Icon flushCachedIcons"
sv@3121
   879
    
sv@3121
   880
    ^ Icon constantNamed:'ImageEditor class pasteIcon'
sv@3121
   881
        ifAbsentPut:[
sv@3121
   882
            (Depth4Image new)
sv@3121
   883
                width:14;
sv@3121
   884
                height:14;
sv@3121
   885
                photometric:(#palette);
sv@3121
   886
                bitsPerSample:(#( 4 ));
sv@3121
   887
                samplesPerPixel:(1);
sv@3121
   888
                bits:(ByteArray 
sv@3121
   889
                            fromPackedString:'@@@@@@@@@@@@AU@@@@@CHE@E@2@@@ QDQD@0@@L@@@@@H@@BL#H2L#@@@QDQDQL @@D3L@@@@@@AL3A&Y&X@@SL0Y A&@@D3LF@@A @AL3A&@FX@@QDPY&Y&
sv@3121
   890
@@@@@@@@@@@b');
sv@3121
   891
                colorMapFromArray:#[ 0 0 0 0 0 128 128 128 0 128 128 128 212 208 200 255 255 0 255 255 255 ];
sv@3121
   892
                mask:((ImageMask new)
sv@3121
   893
                            width:14;
sv@3121
   894
                            height:14;
sv@3121
   895
                            bits:(ByteArray 
sv@3121
   896
                                        fromPackedString:'C0A?8O?0??C?<O?0??C?>O?8??#?>O?8_? G>@@a');
sv@3121
   897
                            yourself);
sv@3121
   898
                yourself
sv@3121
   899
        ]
sv@3121
   900
!
sv@3121
   901
sv@3121
   902
pasteUnderIcon
cg@1637
   903
    <resource: #image>
cg@1637
   904
    "This resource specification was automatically generated
cg@1637
   905
     by the ImageEditor of ST/X."
cg@1637
   906
    "Do not manually edit this!! If it is corrupted,
cg@1637
   907
     the ImageEditor may not be able to read the specification."
cg@1637
   908
    "
cg@1637
   909
     self pasteUnderIcon inspect
cg@1637
   910
     ImageEditor openOnClass:self andSelector:#pasteUnderIcon
sv@3121
   911
     Icon flushCachedIcons"
sv@3121
   912
    
sv@3121
   913
    ^ Icon constantNamed:'ImageEditor class pasteUnderIcon'
sv@3121
   914
        ifAbsentPut:[
sv@3121
   915
            (Depth4Image new)
sv@3121
   916
                width:14;
sv@3121
   917
                height:14;
sv@3121
   918
                photometric:(#palette);
sv@3121
   919
                bitsPerSample:(#( 4 ));
sv@3121
   920
                samplesPerPixel:(1);
sv@3121
   921
                bits:(ByteArray 
sv@3121
   922
                            fromPackedString:'@@@@@@@@@@@@AU@@@@@CHE@E@2@@@ QDQD@0@@L@@@@@H@@BL#H2L#@@@QDQDQL @@D3L3LP@@@AL3L3E&X@@SL3L0A&@@D3L3@@A @AL3L3@FX@@QDQDQY&
sv@3121
   923
@@@@@@@@@@@b');
sv@3121
   924
                colorMapFromArray:#[ 0 0 0 0 0 128 128 128 0 128 128 128 212 208 200 255 255 0 255 255 255 ];
sv@3121
   925
                mask:((ImageMask new)
sv@3121
   926
                            width:14;
sv@3121
   927
                            height:14;
sv@3121
   928
                            bits:(ByteArray 
sv@3121
   929
                                        fromPackedString:'C0A?8O?0??C?<O?0??C?>O?8??#?>O?8_? G>@@a');
sv@3121
   930
                            yourself);
sv@3121
   931
                yourself
sv@3121
   932
        ]
sv@3121
   933
!
sv@3121
   934
sv@3121
   935
pasteWithMaskIcon
cg@1637
   936
    <resource: #image>
cg@1637
   937
    "This resource specification was automatically generated
cg@1637
   938
     by the ImageEditor of ST/X."
cg@1637
   939
    "Do not manually edit this!! If it is corrupted,
cg@1637
   940
     the ImageEditor may not be able to read the specification."
cg@1637
   941
    "
cg@1637
   942
     self pasteWithMaskIcon inspect
cg@1637
   943
     ImageEditor openOnClass:self andSelector:#pasteWithMaskIcon
sv@3121
   944
     Icon flushCachedIcons"
sv@3121
   945
    
sv@3121
   946
    ^ Icon constantNamed:'ImageEditor class pasteWithMaskIcon'
sv@3121
   947
        ifAbsentPut:[
sv@3121
   948
            (Depth4Image new)
sv@3121
   949
                width:14;
sv@3121
   950
                height:14;
sv@3121
   951
                photometric:(#palette);
sv@3121
   952
                bitsPerSample:(#( 4 ));
sv@3121
   953
                samplesPerPixel:(1);
sv@3121
   954
                bits:(ByteArray 
sv@3121
   955
                            fromPackedString:'@@@@@@@@@@@@AU@@@@@CHE@E@2@@@ QDQD@0@@L@@@@@H@@BL#H2L#@@@QDQDQL @@D3L@@@@@@AL3@3M&X@@SL0L3A&@@D3LCL0A @AL3@3LFX@@QDPY&Y&
sv@3121
   956
@@@@@@@@@@@b');
sv@3121
   957
                colorMapFromArray:#[ 0 0 0 0 0 128 128 128 0 128 128 128 212 208 200 255 255 0 255 255 255 ];
sv@3121
   958
                mask:((ImageMask new)
sv@3121
   959
                            width:14;
sv@3121
   960
                            height:14;
sv@3121
   961
                            bits:(ByteArray 
sv@3121
   962
                                        fromPackedString:'C0A?8O?0??C?<O?0??C?>O?8??#?>O?8_? G>@@a');
sv@3121
   963
                            yourself);
sv@3121
   964
                yourself
sv@3121
   965
        ]
sv@3121
   966
!
sv@3121
   967
sv@3121
   968
pointIcon
cg@1637
   969
    <resource: #image>
cg@1637
   970
    "This resource specification was automatically generated
cg@1637
   971
     by the ImageEditor of ST/X."
cg@1637
   972
    "Do not manually edit this!! If it is corrupted,
cg@1637
   973
     the ImageEditor may not be able to read the specification."
cg@1637
   974
    "
cg@1637
   975
     self pointIcon inspect
cg@1637
   976
     ImageEditor openOnClass:self andSelector:#pointIcon
sv@3121
   977
     Icon flushCachedIcons"
sv@3121
   978
    
sv@3121
   979
    ^ Icon constantNamed:'ImageEditor class pointIcon'
sv@3121
   980
        ifAbsentPut:[
sv@3121
   981
            (Depth1Image new)
sv@3121
   982
                width:14;
sv@3121
   983
                height:14;
sv@3121
   984
                photometric:(#palette);
sv@3121
   985
                bitsPerSample:(#( 1 ));
sv@3121
   986
                samplesPerPixel:(1);
sv@3121
   987
                bits:(ByteArray 
sv@3121
   988
                            fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@C@@@@@@@@@@@@@@@a');
sv@3121
   989
                colorMapFromArray:#[ 0 0 0 255 255 255 ];
sv@3121
   990
                mask:((ImageMask new)
sv@3121
   991
                            width:14;
sv@3121
   992
                            height:14;
sv@3121
   993
                            bits:(ByteArray 
sv@3121
   994
                                        fromPackedString:'@@@@@@@0@G@@8@G@@8@G@@8@G@@X@@@@@@@@@@@a');
sv@3121
   995
                            yourself);
sv@3121
   996
                yourself
sv@3121
   997
        ]
sv@3121
   998
!
sv@3121
   999
sv@3121
  1000
rectIcon
cg@1637
  1001
    <resource: #image>
cg@1637
  1002
    "This resource specification was automatically generated
cg@1637
  1003
     by the ImageEditor of ST/X."
cg@1637
  1004
    "Do not manually edit this!! If it is corrupted,
cg@1637
  1005
     the ImageEditor may not be able to read the specification."
cg@1637
  1006
    "
cg@1637
  1007
     self rectIcon inspect
cg@1637
  1008
     ImageEditor openOnClass:self andSelector:#rectIcon
sv@3121
  1009
     Icon flushCachedIcons"
sv@3121
  1010
    
sv@3121
  1011
    ^ Icon constantNamed:'ImageEditor class rectIcon'
sv@3121
  1012
        ifAbsentPut:[
sv@3121
  1013
            (Depth1Image new)
sv@3121
  1014
                width:14;
sv@3121
  1015
                height:14;
sv@3121
  1016
                photometric:(#palette);
sv@3121
  1017
                bitsPerSample:(#( 1 ));
sv@3121
  1018
                samplesPerPixel:(1);
sv@3121
  1019
                bits:(ByteArray 
sv@3121
  1020
                            fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@C@@@@@@@@@@@@@@@a');
sv@3121
  1021
                colorMapFromArray:#[ 0 0 0 255 0 0 ];
sv@3121
  1022
                mask:((ImageMask new)
sv@3121
  1023
                            width:14;
sv@3121
  1024
                            height:14;
sv@3121
  1025
                            bits:(ByteArray 
sv@3121
  1026
                                        fromPackedString:'@@@@@C?0HA@ DB@PHA@ DB@PHA@ DC?0@@@@@@@a');
sv@3121
  1027
                            yourself);
sv@3121
  1028
                yourself
sv@3121
  1029
        ]
sv@3121
  1030
!
sv@3121
  1031
sv@3121
  1032
rightMouseKeyIcon
cg@1637
  1033
    <resource: #image>
tz@737
  1034
    "This resource specification was automatically generated
tz@737
  1035
     by the ImageEditor of ST/X."
tz@737
  1036
    "Do not manually edit this!! If it is corrupted,
tz@737
  1037
     the ImageEditor may not be able to read the specification."
tz@737
  1038
    "
cg@1405
  1039
     self rightMouseKeyIcon inspect
tz@737
  1040
     ImageEditor openOnClass:self andSelector:#rightMouseKeyIcon
sv@3121
  1041
     Icon flushCachedIcons"
sv@3121
  1042
    
sv@3121
  1043
    ^ Icon constantNamed:'ImageEditor class rightMouseKeyIcon'
sv@3121
  1044
        ifAbsentPut:[
sv@3121
  1045
            (Depth2Image new)
sv@3121
  1046
                width:16;
sv@3121
  1047
                height:16;
sv@3121
  1048
                photometric:(#palette);
sv@3121
  1049
                bitsPerSample:(#( 2 ));
sv@3121
  1050
                samplesPerPixel:(1);
sv@3121
  1051
                bits:(ByteArray 
sv@3121
  1052
                            fromPackedString:'@@@@@@@@@@@@@@@@@JJE@@B"!!P@@((T@@@@@@@B** @@**(@@J**@@B** @@**(@@J**@@@**@@@@@@@@@@@@@@a');
sv@3121
  1053
                colorMapFromArray:#[ 0 0 0 255 0 0 255 255 255 ];
sv@3121
  1054
                mask:((ImageMask new)
sv@3121
  1055
                            width:16;
sv@3121
  1056
                            height:16;
sv@3121
  1057
                            bits:(ByteArray 
sv@3121
  1058
                                        fromPackedString:'@@@@@@?0G? _>A?8G? _>A?8G? _>A?8G? O<@_ @@@b');
sv@3121
  1059
                            yourself);
sv@3121
  1060
                yourself
sv@3121
  1061
        ]
sv@3121
  1062
!
sv@3121
  1063
cg@3191
  1064
smoothIcon
cg@3191
  1065
    "This resource specification was automatically generated
cg@3191
  1066
     by the ImageEditor of ST/X."
cg@3191
  1067
cg@3191
  1068
    "Do not manually edit this!! If it is corrupted,
cg@3191
  1069
     the ImageEditor may not be able to read the specification."
cg@3191
  1070
cg@3191
  1071
    "
cg@3191
  1072
     self smoothIcon inspect
cg@3191
  1073
     ImageEditor openOnClass:self andSelector:#smoothIcon
cg@3191
  1074
     Icon flushCachedIcons
cg@3191
  1075
    "
cg@3191
  1076
cg@3191
  1077
    <resource: #image>
cg@3191
  1078
cg@3191
  1079
    ^Icon
cg@3191
  1080
        constantNamed:'ImageEditor smoothIcon'
cg@3191
  1081
        ifAbsentPut:[(Depth4Image new) width:14; height:14; bits:(ByteArray fromPackedString:'@@@@@@@@@@@RH@@@H!!@@HRD@@RD @BHQ@@DRH@@ADP@ADP@@@@@QD@@@@@@@DQ@@@@@@@ADP@@@@@QD@@QD@@BHQ@@DRH@@!!HP@AHR@@D"@@@BHP@@@@@@@@
cg@3191
  1082
@@@@@@@@@@@b') ; colorMapFromArray:#[127 126 127 255 0 0 255 255 255]; mask:((ImageMask new) width:14; height:14; bits:(ByteArray fromPackedString:'_?1<_G1<_G1??D_DQ<QG1G?<_G1<_G1<_?0@@@@a') ; yourself); yourself]
cg@3191
  1083
!
cg@3191
  1084
sv@3121
  1085
specialCircleIcon
tz@737
  1086
    <resource: #image>
cg@2881
  1087
    "This resource specification was automatically generated
cg@2881
  1088
     by the ImageEditor of ST/X."
cg@2881
  1089
    "Do not manually edit this!! If it is corrupted,
cg@2881
  1090
     the ImageEditor may not be able to read the specification."
cg@2881
  1091
    "
cg@2881
  1092
     self specialCircleIcon inspect
cg@2881
  1093
     ImageEditor openOnClass:self andSelector:#specialCircleIcon
sv@3121
  1094
     Icon flushCachedIcons"
sv@3121
  1095
    
sv@3121
  1096
    ^ Icon constantNamed:'ImageEditor class specialCircleIcon'
sv@3121
  1097
        ifAbsentPut:[
sv@3121
  1098
            (Depth1Image new)
sv@3121
  1099
                width:14;
sv@3121
  1100
                height:14;
sv@3121
  1101
                photometric:(#palette);
sv@3121
  1102
                bitsPerSample:(#( 1 ));
sv@3121
  1103
                samplesPerPixel:(1);
sv@3121
  1104
                bits:(ByteArray 
sv@3121
  1105
                            fromPackedString:'@@L@@@!!BDB@ D4@HP@!!@BD@HHA@PHP!!@@@@@@@@a');
sv@3121
  1106
                colorMapFromArray:#[ 0 0 0 255 0 0 ];
sv@3121
  1107
                mask:((ImageMask new)
sv@3121
  1108
                            width:14;
sv@3121
  1109
                            height:14;
sv@3121
  1110
                            bits:(ByteArray 
sv@3121
  1111
                                        fromPackedString:'@@@@@@-@D2@''$D^HQ8!!G"DLHH1@PH@-@@0@@@@@a');
sv@3121
  1112
                            yourself);
sv@3121
  1113
                yourself
sv@3121
  1114
        ]
sv@3121
  1115
!
sv@3121
  1116
sv@3121
  1117
specialIcon
cg@2881
  1118
    <resource: #image>
cg@1637
  1119
    "This resource specification was automatically generated
cg@1637
  1120
     by the ImageEditor of ST/X."
cg@1637
  1121
    "Do not manually edit this!! If it is corrupted,
cg@1637
  1122
     the ImageEditor may not be able to read the specification."
cg@1637
  1123
    "
cg@1637
  1124
     self specialIcon inspect
cg@1637
  1125
     ImageEditor openOnClass:self andSelector:#specialIcon
sv@3121
  1126
     Icon flushCachedIcons"
sv@3121
  1127
    
sv@3121
  1128
    ^ Icon constantNamed:'ImageEditor class specialIcon'
sv@3121
  1129
        ifAbsentPut:[
sv@3121
  1130
            (Depth1Image new)
sv@3121
  1131
                width:14;
sv@3121
  1132
                height:14;
sv@3121
  1133
                photometric:(#palette);
sv@3121
  1134
                bitsPerSample:(#( 1 ));
sv@3121
  1135
                samplesPerPixel:(1);
sv@3121
  1136
                bits:(ByteArray 
sv@3121
  1137
                            fromPackedString:'@@L@@G!!:P@!!@B4@HP@!!@BD@HP@!!@BW!!8@@@@@@@a');
sv@3121
  1138
                colorMapFromArray:#[ 0 0 0 255 0 0 ];
sv@3121
  1139
                mask:((ImageMask new)
sv@3121
  1140
                            width:14;
sv@3121
  1141
                            height:14;
sv@3121
  1142
                            bits:(ByteArray 
sv@3121
  1143
                                        fromPackedString:'@@@@@G-8P0!!G"D^HQ8!!G"DLHP0!!@BG-8@0@@@@@a');
sv@3121
  1144
                            yourself);
sv@3121
  1145
                yourself
sv@3121
  1146
        ]
sv@3121
  1147
!
sv@3121
  1148
sv@3121
  1149
sprayIcon
cg@2375
  1150
    "This resource specification was automatically generated
cg@2375
  1151
     by the ImageEditor of ST/X."
cg@3191
  1152
cg@2375
  1153
    "Do not manually edit this!! If it is corrupted,
cg@2375
  1154
     the ImageEditor may not be able to read the specification."
cg@3191
  1155
cg@2375
  1156
    "
cg@2375
  1157
     self sprayIcon inspect
cg@2375
  1158
     ImageEditor openOnClass:self andSelector:#sprayIcon
cg@3191
  1159
     Icon flushCachedIcons
cg@3191
  1160
    "
cg@3191
  1161
cg@3191
  1162
    <resource: #image>
cg@3191
  1163
cg@3191
  1164
    ^Icon
cg@3191
  1165
        constantNamed:'ImageEditor sprayIcon'
cg@3191
  1166
        ifAbsentPut:[(Depth4Image new) width:14; height:14; bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@P@@@@@@DA@P@@@@@PDA@@@@@@@PDA@@@@@@@PD@@@@"H@@PD@@@H"@@@@@@@ADP@@@@@@@QD@@@@@@@DQ@@@@@@@ADP@@
cg@3191
  1167
@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 0 0 255 255 255]; mask:((ImageMask new) width:14; height:14; bits:(ByteArray fromPackedString:'@@@@@@@HA%PF*@ITA2 O%@>@C8@O @>@C8@O @@a') ; yourself); yourself]
martin@1433
  1168
! !
tz@737
  1169
tz@400
  1170
!ImageEditor class methodsFor:'interface specs'!
tz@400
  1171
cg@1650
  1172
changeHLSDialogSpec
cg@1650
  1173
    "This resource specification was automatically generated
cg@1650
  1174
     by the UIPainter of ST/X."
cg@1650
  1175
cg@1650
  1176
    "Do not manually edit this!! If it is corrupted,
cg@1650
  1177
     the UIPainter may not be able to read the specification."
cg@1650
  1178
cg@1650
  1179
    "
cg@1650
  1180
     UIPainter new openOnClass:ImageEditor andSelector:#changeHLSDialogSpec
cg@1650
  1181
     ImageEditor new openInterface:#changeHLSDialogSpec
cg@1650
  1182
    "
cg@1650
  1183
cg@1650
  1184
    <resource: #canvas>
cg@1650
  1185
cg@1650
  1186
    ^ 
sv@1740
  1187
     #(FullSpec
sv@1740
  1188
        name: changeHLSDialogSpec
sv@1740
  1189
        window: 
sv@1740
  1190
       (WindowSpec
sv@1740
  1191
          label: 'HLS Edit Dialog'
sv@1740
  1192
          name: 'HLS Edit Dialog'
sv@1740
  1193
          min: (Point 10 10)
cg@2438
  1194
          bounds: (Rectangle 0 0 312 258)
cg@1650
  1195
        )
sv@1740
  1196
        component: 
sv@1740
  1197
       (SpecCollection
sv@1740
  1198
          collection: (
sv@1740
  1199
           (LabelSpec
sv@1740
  1200
              label: 'Hue-Shift:'
sv@1740
  1201
              name: 'HueLabel'
sv@1740
  1202
              layout: (LayoutFrame 20 0 21 0 120 0 43 0)
sv@1740
  1203
              translateLabel: true
sv@1740
  1204
              adjust: right
cg@1650
  1205
            )
sv@1740
  1206
           (InputFieldSpec
sv@1740
  1207
              name: 'HueShiftEntryField'
sv@1740
  1208
              layout: (LayoutFrame 123 0 21 0 166 0 43 0)
sv@1740
  1209
              tabable: true
sv@1740
  1210
              model: hueShiftAmount
sv@1740
  1211
              type: numberInRange
sv@1740
  1212
              minValue: 0
sv@1740
  1213
              maxValue: 360
sv@1740
  1214
              acceptChannel: acceptChannel
sv@1740
  1215
              acceptOnPointerLeave: false
cg@1650
  1216
            )
sv@1740
  1217
           (ThumbWheelSpec
sv@1740
  1218
              name: 'HueWheel'
sv@1740
  1219
              layout: (LayoutFrame 180 0 22 0 297 0 42 0)
sv@1740
  1220
              model: hueShiftAmount
sv@1740
  1221
              orientation: horizontal
sv@1740
  1222
              step: 1
sv@1740
  1223
              endlessRotation: true
cg@1650
  1224
            )
sv@1740
  1225
           (LabelSpec
sv@1740
  1226
              label: 'Light Factor:'
sv@1740
  1227
              name: 'LightLabel'
sv@1740
  1228
              layout: (LayoutFrame 18 0 50 0 120 0 72 0)
sv@1740
  1229
              translateLabel: true
sv@1740
  1230
              adjust: right
cg@1650
  1231
            )
sv@1740
  1232
           (InputFieldSpec
sv@1740
  1233
              name: 'LightEntryField'
sv@1740
  1234
              layout: (LayoutFrame 123 0 50 0 166 0 72 0)
sv@1740
  1235
              tabable: true
sv@1740
  1236
              model: lightAmount
sv@1740
  1237
              type: numberInRange
sv@1740
  1238
              minValue: 0
sv@1740
  1239
              maxValue: 1000
sv@1740
  1240
              acceptChannel: acceptChannel
sv@1740
  1241
              acceptOnPointerLeave: false
cg@1650
  1242
            )
sv@1740
  1243
           (ThumbWheelSpec
sv@1740
  1244
              name: 'LightWheel'
sv@1740
  1245
              layout: (LayoutFrame 180 0 51 0 297 0 71 0)
sv@1740
  1246
              model: lightAmount
sv@1740
  1247
              orientation: horizontal
sv@1740
  1248
              stop: 1000
sv@1740
  1249
              step: 1
cg@1650
  1250
            )
sv@1740
  1251
           (LabelSpec
sv@1740
  1252
              label: 'Saturation Factor:'
sv@1740
  1253
              name: 'SaturationLabel'
sv@1740
  1254
              layout: (LayoutFrame 9 0 79 0 120 0 101 0)
sv@1740
  1255
              translateLabel: true
sv@1740
  1256
              adjust: right
cg@1650
  1257
            )
sv@1740
  1258
           (InputFieldSpec
sv@1740
  1259
              name: 'SaturationEntryField'
sv@1740
  1260
              layout: (LayoutFrame 123 0 79 0 166 0 101 0)
sv@1740
  1261
              tabable: true
sv@1740
  1262
              model: saturationAmount
sv@1740
  1263
              type: numberInRange
sv@1740
  1264
              minValue: 0
sv@1740
  1265
              maxValue: 1000
sv@1740
  1266
              acceptChannel: acceptChannel
sv@1740
  1267
              acceptOnPointerLeave: false
cg@1650
  1268
            )
sv@1740
  1269
           (ThumbWheelSpec
sv@1740
  1270
              name: 'SaturationWheel'
sv@1740
  1271
              layout: (LayoutFrame 180 0 80 0 297 0 100 0)
sv@1740
  1272
              model: saturationAmount
sv@1740
  1273
              orientation: horizontal
sv@1740
  1274
              stop: 1000
sv@1740
  1275
              step: 1
cg@1650
  1276
            )
sv@1740
  1277
           (LabelSpec
cg@2438
  1278
              label: 'Color Shift'
cg@2438
  1279
              name: 'Label2'
cg@2438
  1280
              layout: (LayoutFrame 5 0 110 0 -15 0.5 132 0)
cg@2438
  1281
              translateLabel: true
cg@2438
  1282
            )
cg@2438
  1283
           (LabelSpec
sv@1740
  1284
              name: 'HueColorLabel'
cg@2438
  1285
              layout: (LayoutFrame 18 0.0 133 0 -41 0.5 217 0)
cg@2438
  1286
              level: -1
cg@1975
  1287
              backgroundChannel: hlsColor
sv@1740
  1288
              translateLabel: true
cg@1650
  1289
            )
cg@2438
  1290
           (LabelSpec
cg@2438
  1291
              label: 'Preview'
cg@2438
  1292
              name: 'Label3'
cg@2438
  1293
              layout: (LayoutFrame 5 0.5 110 0 -5 1 132 0)
cg@2438
  1294
              translateLabel: true
cg@2438
  1295
            )
cg@2438
  1296
           (LabelSpec
cg@2438
  1297
              name: 'PreviewLabel'
cg@2438
  1298
              layout: (LayoutFrame 36 0.5 133 0 -23 1.0 217 0)
cg@2438
  1299
              level: -1
cg@2438
  1300
              translateLabel: true
cg@2438
  1301
              labelChannel: previewImageHolder
cg@2438
  1302
            )
sv@1740
  1303
           (HorizontalPanelViewSpec
sv@1740
  1304
              name: 'HorizontalPanel1'
sv@1740
  1305
              layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
sv@1740
  1306
              horizontalLayout: fitSpace
sv@1740
  1307
              verticalLayout: center
sv@1740
  1308
              horizontalSpace: 3
sv@1740
  1309
              verticalSpace: 3
sv@1740
  1310
              reverseOrderIfOKAtLeft: true
sv@1740
  1311
              component: 
sv@1740
  1312
             (SpecCollection
sv@1740
  1313
                collection: (
sv@1740
  1314
                 (ActionButtonSpec
sv@1740
  1315
                    label: 'Cancel'
sv@1740
  1316
                    name: 'Button1'
sv@1740
  1317
                    translateLabel: true
sv@1740
  1318
                    tabable: true
sv@1740
  1319
                    model: cancel
sv@1740
  1320
                    extent: (Point 151 22)
cg@1650
  1321
                  )
sv@1740
  1322
                 (ActionButtonSpec
sv@1740
  1323
                    label: 'OK'
sv@1740
  1324
                    name: 'Button2'
sv@1740
  1325
                    translateLabel: true
sv@1740
  1326
                    tabable: true
sv@1740
  1327
                    model: accept
sv@1740
  1328
                    extent: (Point 152 22)
cg@1650
  1329
                  )
cg@1650
  1330
                 )
cg@1650
  1331
               
cg@1650
  1332
              )
cg@1650
  1333
            )
cg@1650
  1334
           )
cg@1650
  1335
         
cg@1650
  1336
        )
cg@1650
  1337
      )
cg@1650
  1338
!
cg@1650
  1339
sv@1740
  1340
cropDialogSpec
tz@737
  1341
    "This resource specification was automatically generated
tz@737
  1342
     by the UIPainter of ST/X."
tz@519
  1343
tz@737
  1344
    "Do not manually edit this!! If it is corrupted,
tz@737
  1345
     the UIPainter may not be able to read the specification."
tz@519
  1346
tz@519
  1347
    "
sv@1740
  1348
     UIPainter new openOnClass:ImageEditor andSelector:#cropDialogSpec
sv@1740
  1349
     ImageEditor new openInterface:#cropDialogSpec
tz@519
  1350
    "
tz@519
  1351
tz@519
  1352
    <resource: #canvas>
tz@519
  1353
cg@1457
  1354
    ^ 
sv@1740
  1355
     #(FullSpec
sv@1740
  1356
        name: cropDialogSpec
sv@1740
  1357
        window: 
sv@1740
  1358
       (WindowSpec
sv@1740
  1359
          label: 'Crop Border(s)'
sv@1740
  1360
          name: 'Crop Border(s)'
sv@1740
  1361
          min: (Point 10 10)
sv@1740
  1362
          bounds: (Rectangle 14 46 259 229)
cg@1457
  1363
        )
sv@1740
  1364
        component: 
sv@1740
  1365
       (SpecCollection
sv@1740
  1366
          collection: (
sv@1740
  1367
           (LabelSpec
sv@1740
  1368
              label: 'Left:'
sv@1740
  1369
              name: 'GropLeftLabel'
sv@1740
  1370
              layout: (LayoutFrame 14 0 21 0 90 0 43 0)
sv@1740
  1371
              translateLabel: true
sv@1740
  1372
              adjust: right
cg@1457
  1373
            )
sv@1740
  1374
           (InputFieldSpec
sv@1740
  1375
              name: 'GropLeftEntryField'
sv@1740
  1376
              layout: (LayoutFrame 95 0 21 0 132 0 43 0)
sv@1740
  1377
              tabable: true
sv@1740
  1378
              model: left
sv@1740
  1379
              type: number
sv@1740
  1380
              acceptChannel: acceptChannel
sv@1740
  1381
              acceptOnPointerLeave: false
cg@1502
  1382
            )
sv@1740
  1383
           (ActionButtonSpec
sv@1740
  1384
              label: 'Now'
sv@1740
  1385
              name: 'GropLeftNowButton'
sv@1740
  1386
              layout: (LayoutFrame 148 0 21 0 221 0 43 0)
sv@1740
  1387
              translateLabel: true
sv@1740
  1388
              tabable: true
sv@1740
  1389
              model: gropLeftNow
sv@1740
  1390
              autoRepeat: true
cg@1457
  1391
            )
sv@1740
  1392
           (LabelSpec
sv@1740
  1393
              label: 'Right:'
sv@1740
  1394
              name: 'GropRightLabel'
sv@1740
  1395
              layout: (LayoutFrame 14 0 51 0 90 0 73 0)
sv@1740
  1396
              translateLabel: true
sv@1740
  1397
              adjust: right
cg@1457
  1398
            )
sv@1740
  1399
           (InputFieldSpec
sv@1740
  1400
              name: 'GropRightEntryField'
sv@1740
  1401
              layout: (LayoutFrame 95 0 51 0 132 0 73 0)
sv@1740
  1402
              tabable: true
sv@1740
  1403
              model: right
sv@1740
  1404
              type: number
sv@1740
  1405
              acceptChannel: acceptChannel
sv@1740
  1406
              acceptOnPointerLeave: false
cg@1502
  1407
            )
sv@1740
  1408
           (ActionButtonSpec
sv@1740
  1409
              label: 'Now'
sv@1740
  1410
              name: 'GropRightButton'
sv@1740
  1411
              layout: (LayoutFrame 148 0 51 0 221 0 73 0)
sv@1740
  1412
              translateLabel: true
sv@1740
  1413
              tabable: true
sv@1740
  1414
              model: gropRightNow
sv@1740
  1415
              autoRepeat: true
cg@1457
  1416
            )
sv@1740
  1417
           (LabelSpec
sv@1740
  1418
              label: 'Top:'
sv@1740
  1419
              name: 'GropTopLabel'
sv@1740
  1420
              layout: (LayoutFrame 14 0 81 0 90 0 103 0)
sv@1740
  1421
              translateLabel: true
sv@1740
  1422
              adjust: right
cg@1457
  1423
            )
sv@1740
  1424
           (InputFieldSpec
sv@1740
  1425
              name: 'GropTopEntryField'
sv@1740
  1426
              layout: (LayoutFrame 95 0 81 0 132 0 103 0)
sv@1740
  1427
              tabable: true
sv@1740
  1428
              model: top
sv@1740
  1429
              type: number
sv@1740
  1430
              acceptChannel: acceptChannel
sv@1740
  1431
              acceptOnPointerLeave: false
cg@1502
  1432
            )
sv@1740
  1433
           (ActionButtonSpec
sv@1740
  1434
              label: 'Now'
sv@1740
  1435
              name: 'GropTopButton'
sv@1740
  1436
              layout: (LayoutFrame 148 0 81 0 221 0 103 0)
sv@1740
  1437
              translateLabel: true
sv@1740
  1438
              tabable: true
sv@1740
  1439
              model: gropTopNow
sv@1740
  1440
              autoRepeat: true
cg@1457
  1441
            )
sv@1740
  1442
           (LabelSpec
sv@1740
  1443
              label: 'Bottom:'
sv@1740
  1444
              name: 'GropBottomLabel'
sv@1740
  1445
              layout: (LayoutFrame 14 0 111 0 90 0 133 0)
sv@1740
  1446
              translateLabel: true
sv@1740
  1447
              adjust: right
cg@1457
  1448
            )
sv@1740
  1449
           (InputFieldSpec
sv@1740
  1450
              name: 'GropBottomEntryField'
sv@1740
  1451
              layout: (LayoutFrame 95 0 111 0 132 0 133 0)
sv@1740
  1452
              tabable: true
sv@1740
  1453
              model: bottom
sv@1740
  1454
              type: number
sv@1740
  1455
              acceptChannel: acceptChannel
sv@1740
  1456
              acceptOnPointerLeave: false
cg@1502
  1457
            )
sv@1740
  1458
           (ActionButtonSpec
sv@1740
  1459
              label: 'Now'
sv@1740
  1460
              name: 'GropBottomButton'
sv@1740
  1461
              layout: (LayoutFrame 148 0 111 0 221 0 133 0)
sv@1740
  1462
              translateLabel: true
sv@1740
  1463
              tabable: true
sv@1740
  1464
              model: gropBottomNow
sv@1740
  1465
              autoRepeat: true
cg@1457
  1466
            )
sv@1740
  1467
           (HorizontalPanelViewSpec
sv@1740
  1468
              name: 'HorizontalPanel1'
sv@1740
  1469
              layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
sv@1740
  1470
              horizontalLayout: fitSpace
sv@1740
  1471
              verticalLayout: center
sv@1740
  1472
              horizontalSpace: 3
sv@1740
  1473
              verticalSpace: 3
sv@1740
  1474
              reverseOrderIfOKAtLeft: true
sv@1740
  1475
              component: 
sv@1740
  1476
             (SpecCollection
sv@1740
  1477
                collection: (
sv@1740
  1478
                 (ActionButtonSpec
sv@1740
  1479
                    label: 'Cancel'
sv@1740
  1480
                    name: 'Button1'
sv@1740
  1481
                    translateLabel: true
sv@1740
  1482
                    tabable: true
sv@1740
  1483
                    model: cancel
sv@1740
  1484
                    extent: (Point 77 22)
cg@1490
  1485
                  )
sv@1740
  1486
                 (ActionButtonSpec
sv@1740
  1487
                    label: 'Apply'
sv@1740
  1488
                    name: 'Button3'
sv@1740
  1489
                    translateLabel: true
sv@1740
  1490
                    tabable: true
sv@1740
  1491
                    model: applyAction
sv@1740
  1492
                    extent: (Point 78 22)
cg@1457
  1493
                  )
sv@1740
  1494
                 (ActionButtonSpec
sv@1740
  1495
                    label: 'OK'
sv@1740
  1496
                    name: 'Button2'
sv@1740
  1497
                    translateLabel: true
sv@1740
  1498
                    tabable: true
sv@1740
  1499
                    model: accept
sv@1740
  1500
                    extent: (Point 78 22)
cg@1457
  1501
                  )
cg@1457
  1502
                 )
cg@1457
  1503
               
cg@986
  1504
              )
cg@1457
  1505
            )
cg@1457
  1506
           )
cg@1457
  1507
         
cg@1457
  1508
        )
cg@986
  1509
      )
cg@986
  1510
!
cg@986
  1511
sv@1740
  1512
dialogSpecForNewImage
cg@1557
  1513
    "This resource specification was automatically generated
cg@1557
  1514
     by the UIPainter of ST/X."
cg@1557
  1515
cg@1557
  1516
    "Do not manually edit this!! If it is corrupted,
cg@1557
  1517
     the UIPainter may not be able to read the specification."
cg@1557
  1518
cg@1557
  1519
    "
sv@1740
  1520
     UIPainter new openOnClass:ImageEditor andSelector:#dialogSpecForNewImage
sv@1740
  1521
     ImageEditor new openInterface:#dialogSpecForNewImage
cg@1557
  1522
    "
cg@1557
  1523
cg@1557
  1524
    <resource: #canvas>
cg@1557
  1525
cg@1557
  1526
    ^ 
sv@1740
  1527
     #(FullSpec
sv@1740
  1528
        name: dialogSpecForNewImage
sv@1740
  1529
        window: 
sv@1740
  1530
       (WindowSpec
sv@1740
  1531
          label: 'New Image'
sv@1740
  1532
          name: 'New Image'
sv@1740
  1533
          min: (Point 10 10)
cg@1806
  1534
          bounds: (Rectangle 0 0 301 119)
cg@1557
  1535
        )
sv@1740
  1536
        component: 
sv@1740
  1537
       (SpecCollection
sv@1740
  1538
          collection: (
sv@1740
  1539
           (ViewSpec
sv@1740
  1540
              name: 'View'
sv@1740
  1541
              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 -35 1.0)
sv@1740
  1542
              level: 1
sv@1740
  1543
              component: 
sv@1740
  1544
             (SpecCollection
sv@1740
  1545
                collection: (
sv@1740
  1546
                 (FramedBoxSpec
sv@1740
  1547
                    label: 'Size'
sv@1740
  1548
                    name: 'framedBox1'
sv@1740
  1549
                    layout: (LayoutFrame 1 0.0 7 0.0 0 0.4 76 0)
cg@1806
  1550
                    style: (FontDescription helvetica medium roman 12)
sv@1740
  1551
                    labelPosition: topLeft
cg@1806
  1552
                    translateLabel: true
sv@1740
  1553
                    component: 
sv@1740
  1554
                   (SpecCollection
sv@1740
  1555
                      collection: (
sv@1740
  1556
                       (ComboBoxSpec
sv@1740
  1557
                          name: 'defaultSizesComboBox'
sv@1740
  1558
                          layout: (LayoutFrame 0 0.0 10 0.0 0 1 35 0.0)
sv@1740
  1559
                          model: selectionOfSize
sv@1740
  1560
                          type: string
sv@1740
  1561
                          acceptOnPointerLeave: false
sv@1740
  1562
                          comboList: listOfDefaultSizes
sv@1740
  1563
                          isFilenameBox: false
sv@1740
  1564
                        )
sv@1740
  1565
                       )
sv@1740
  1566
                     
sv@1740
  1567
                    )
cg@1557
  1568
                  )
sv@1740
  1569
                 (FramedBoxSpec
sv@1740
  1570
                    label: 'Color Map'
sv@1740
  1571
                    name: 'framedBox2'
sv@1740
  1572
                    layout: (LayoutFrame 0 0.4 7 0.0 -1 1.0 76 0)
cg@1806
  1573
                    style: (FontDescription helvetica medium roman 12)
sv@1740
  1574
                    labelPosition: topLeft
cg@1806
  1575
                    translateLabel: true
sv@1740
  1576
                    component: 
sv@1740
  1577
                   (SpecCollection
sv@1740
  1578
                      collection: (
sv@1740
  1579
                       (ComboListSpec
sv@1740
  1580
                          name: 'colorMapComboBox'
sv@1740
  1581
                          layout: (LayoutFrame 0 0.0 10 0.0 0 1 35 0.0)
sv@1740
  1582
                          model: selectionOfColorMap
sv@1740
  1583
                          comboList: listOfColorMaps
sv@1740
  1584
                          useIndex: false
cg@1847
  1585
                          hidePullDownMenuButton: false
sv@1740
  1586
                        )
sv@1740
  1587
                       )
sv@1740
  1588
                     
sv@1740
  1589
                    )
cg@1557
  1590
                  )
cg@1557
  1591
                 )
cg@1557
  1592
               
cg@1557
  1593
              )
cg@1557
  1594
            )
sv@1740
  1595
           (UISubSpecification
sv@1740
  1596
              name: 'windowSpecForCommitWithoutChannels'
sv@1740
  1597
              layout: (LayoutFrame 2 0.0 -26 1 -2 1.0 -2 1.0)
sv@1740
  1598
              minorKey: windowSpecForCommitWithoutChannels
cg@1713
  1599
            )
cg@1557
  1600
           )
cg@1557
  1601
         
cg@1557
  1602
        )
cg@1557
  1603
      )
cg@1557
  1604
!
cg@1557
  1605
sv@1740
  1606
shiftDialogSpec
cg@1480
  1607
    "This resource specification was automatically generated
cg@1480
  1608
     by the UIPainter of ST/X."
cg@1480
  1609
cg@1480
  1610
    "Do not manually edit this!! If it is corrupted,
cg@1480
  1611
     the UIPainter may not be able to read the specification."
cg@1480
  1612
cg@1480
  1613
    "
sv@1740
  1614
     UIPainter new openOnClass:ImageEditor andSelector:#shiftDialogSpec
sv@1740
  1615
     ImageEditor new openInterface:#shiftDialogSpec
cg@1480
  1616
    "
cg@1480
  1617
cg@1480
  1618
    <resource: #canvas>
cg@1480
  1619
cg@1480
  1620
    ^ 
sv@1740
  1621
     #(FullSpec
sv@1740
  1622
        name: shiftDialogSpec
sv@1740
  1623
        window: 
sv@1740
  1624
       (WindowSpec
sv@1740
  1625
          label: 'Shift'
sv@1740
  1626
          name: 'Shift'
sv@1740
  1627
          min: (Point 10 10)
sv@1740
  1628
          bounds: (Rectangle 14 46 259 229)
cg@1480
  1629
        )
sv@1740
  1630
        component: 
sv@1740
  1631
       (SpecCollection
sv@1740
  1632
          collection: (
sv@1740
  1633
           (LabelSpec
sv@1740
  1634
              label: 'Amount:'
sv@1740
  1635
              name: 'AmountLabel'
sv@1740
  1636
              layout: (LayoutFrame 14 0 21 0 90 0 43 0)
sv@1740
  1637
              translateLabel: true
sv@1740
  1638
              adjust: right
cg@1480
  1639
            )
sv@1740
  1640
           (InputFieldSpec
sv@1740
  1641
              name: 'AmountEntryField'
sv@1740
  1642
              layout: (LayoutFrame 95 0 21 0 139 0 43 0)
sv@1740
  1643
              tabable: true
sv@1740
  1644
              model: shiftAmount
sv@1740
  1645
              type: number
sv@1740
  1646
              acceptChannel: acceptChannel
sv@1740
  1647
              acceptOnPointerLeave: false
cg@1480
  1648
            )
sv@1740
  1649
           (HorizontalPanelViewSpec
sv@1740
  1650
              name: 'HorizontalPanel1'
sv@1740
  1651
              layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
sv@1740
  1652
              horizontalLayout: fitSpace
sv@1740
  1653
              verticalLayout: center
sv@1740
  1654
              horizontalSpace: 3
sv@1740
  1655
              verticalSpace: 3
sv@1740
  1656
              reverseOrderIfOKAtLeft: true
sv@1740
  1657
              component: 
sv@1740
  1658
             (SpecCollection
sv@1740
  1659
                collection: (
sv@1740
  1660
                 (ActionButtonSpec
sv@1740
  1661
                    label: 'Cancel'
sv@1740
  1662
                    name: 'Button1'
sv@1740
  1663
                    translateLabel: true
sv@1740
  1664
                    tabable: true
sv@1740
  1665
                    model: cancel
sv@1740
  1666
                    extent: (Point 118 22)
cg@1480
  1667
                  )
sv@1740
  1668
                 (ActionButtonSpec
sv@1740
  1669
                    label: 'OK'
sv@1740
  1670
                    name: 'Button2'
sv@1740
  1671
                    translateLabel: true
sv@1740
  1672
                    tabable: true
sv@1740
  1673
                    model: accept
sv@1740
  1674
                    extent: (Point 118 22)
cg@1480
  1675
                  )
cg@1480
  1676
                 )
cg@1480
  1677
               
cg@1480
  1678
              )
cg@1480
  1679
            )
sv@1740
  1680
           (ArrowButtonSpec
sv@1740
  1681
              name: 'upArrowButton'
sv@1740
  1682
              layout: (LayoutFrame 105 0 63 0 127 0 85 0)
sv@1740
  1683
              model: shiftUpNow
sv@1740
  1684
              isTriggerOnDown: true
sv@1740
  1685
              autoRepeat: true
sv@1740
  1686
              actionValue: ''
sv@1740
  1687
              direction: up
sv@1740
  1688
            )
sv@1740
  1689
           (ArrowButtonSpec
sv@1740
  1690
              name: 'leftArrowButton'
sv@1740
  1691
              layout: (LayoutFrame 84 0 86 0 106 0 108 0)
sv@1740
  1692
              model: shiftLeftNow
sv@1740
  1693
              isTriggerOnDown: true
sv@1740
  1694
              autoRepeat: true
sv@1740
  1695
              actionValue: ''
sv@1740
  1696
              direction: left
sv@1740
  1697
            )
sv@1740
  1698
           (ArrowButtonSpec
sv@1740
  1699
              name: 'rightArrowButton'
sv@1740
  1700
              layout: (LayoutFrame 126 0 86 0 148 0 108 0)
sv@1740
  1701
              model: shiftRightNow
sv@1740
  1702
              isTriggerOnDown: true
sv@1740
  1703
              autoRepeat: true
sv@1740
  1704
              actionValue: ''
sv@1740
  1705
              direction: right
sv@1740
  1706
            )
sv@1740
  1707
           (ArrowButtonSpec
sv@1740
  1708
              name: 'downArrowButton'
sv@1740
  1709
              layout: (LayoutFrame 105 0 107 0 127 0 129 0)
sv@1740
  1710
              model: shiftDownNow
sv@1740
  1711
              isTriggerOnDown: true
sv@1740
  1712
              autoRepeat: true
sv@1740
  1713
              actionValue: ''
sv@1740
  1714
              direction: down
sv@1740
  1715
            )
sv@1740
  1716
           (CheckBoxSpec
sv@1740
  1717
              label: 'Wrap'
sv@1740
  1718
              name: 'CheckBox1'
sv@1740
  1719
              layout: (LayoutFrame 153 0 22 0 289 0 44 0)
sv@1740
  1720
              model: wrap
sv@1740
  1721
              translateLabel: true
sv@1740
  1722
            )
cg@1480
  1723
           )
cg@1480
  1724
         
cg@1480
  1725
        )
cg@1480
  1726
      )
cg@1480
  1727
!
cg@1480
  1728
sv@1740
  1729
uncropDialogSpec
sv@1740
  1730
    "This resource specification was automatically generated
sv@1740
  1731
     by the UIPainter of ST/X."
cg@1796
  1732
sv@1740
  1733
    "Do not manually edit this!! If it is corrupted,
sv@1740
  1734
     the UIPainter may not be able to read the specification."
cg@1796
  1735
sv@1740
  1736
    "
cg@1796
  1737
     UIPainter new openOnClass:ImageEditor andSelector:#uncropDialogSpec
cg@1796
  1738
     ImageEditor new openInterface:#uncropDialogSpec
sv@1740
  1739
    "
cg@1796
  1740
cg@1796
  1741
    <resource: #canvas>
cg@1796
  1742
cg@1796
  1743
    ^ 
cg@1796
  1744
     #(FullSpec
cg@1796
  1745
        name: uncropDialogSpec
cg@1796
  1746
        window: 
cg@1796
  1747
       (WindowSpec
cg@1796
  1748
          label: 'Add Border(s)'
cg@1796
  1749
          name: 'Add Border(s)'
cg@1796
  1750
          min: (Point 10 10)
cg@1796
  1751
          max: (Point 800 478)
cg@1796
  1752
          bounds: (Rectangle 0 0 261 228)
cg@1796
  1753
        )
cg@1796
  1754
        component: 
cg@1796
  1755
       (SpecCollection
cg@1796
  1756
          collection: (
cg@1796
  1757
           (LabelSpec
cg@1796
  1758
              label: 'Left:'
cg@1796
  1759
              name: 'Label1'
cg@1796
  1760
              layout: (LayoutFrame 14 0 21 0 90 0 43 0)
cg@1796
  1761
              translateLabel: true
cg@1796
  1762
              adjust: right
cg@1796
  1763
            )
cg@1796
  1764
           (InputFieldSpec
cg@1796
  1765
              name: 'EntryField1'
cg@1796
  1766
              layout: (LayoutFrame 95 0 21 0 132 0 43 0)
cg@1796
  1767
              model: left
cg@1796
  1768
              type: number
cg@1796
  1769
              acceptOnPointerLeave: false
cg@1796
  1770
            )
cg@1796
  1771
           (LabelSpec
cg@1796
  1772
              label: 'Right:'
cg@1796
  1773
              name: 'Label2'
cg@1796
  1774
              layout: (LayoutFrame 14 0 51 0 90 0 73 0)
cg@1796
  1775
              translateLabel: true
cg@1796
  1776
              adjust: right
cg@1796
  1777
            )
cg@1796
  1778
           (InputFieldSpec
cg@1796
  1779
              name: 'EntryField2'
cg@1796
  1780
              layout: (LayoutFrame 95 0 51 0 132 0 73 0)
cg@1796
  1781
              model: right
cg@1796
  1782
              type: number
cg@1796
  1783
              acceptOnPointerLeave: false
cg@1796
  1784
            )
cg@1796
  1785
           (LabelSpec
cg@1796
  1786
              label: 'Top:'
cg@1796
  1787
              name: 'Label3'
cg@1796
  1788
              layout: (LayoutFrame 14 0 81 0 90 0 103 0)
cg@1796
  1789
              translateLabel: true
cg@1796
  1790
              adjust: right
cg@1796
  1791
            )
cg@1796
  1792
           (InputFieldSpec
cg@1796
  1793
              name: 'EntryField3'
cg@1796
  1794
              layout: (LayoutFrame 95 0 81 0 132 0 103 0)
cg@1796
  1795
              model: top
cg@1796
  1796
              type: number
cg@1796
  1797
              acceptOnPointerLeave: false
cg@1796
  1798
            )
cg@1796
  1799
           (LabelSpec
cg@1796
  1800
              label: 'Bottom:'
cg@1796
  1801
              name: 'Label4'
cg@1796
  1802
              layout: (LayoutFrame 14 0 111 0 90 0 133 0)
cg@1796
  1803
              translateLabel: true
cg@1796
  1804
              adjust: right
cg@1796
  1805
            )
cg@1796
  1806
           (InputFieldSpec
cg@1796
  1807
              name: 'EntryField4'
cg@1796
  1808
              layout: (LayoutFrame 95 0 111 0 132 0 133 0)
cg@1796
  1809
              model: bottom
cg@1796
  1810
              type: number
cg@1796
  1811
              acceptOnPointerLeave: false
cg@1796
  1812
            )
cg@1796
  1813
           (HorizontalPanelViewSpec
cg@1796
  1814
              name: 'HorizontalPanel1'
cg@1796
  1815
              layout: (LayoutFrame 0 0.0 -30 1 0 1.0 0 1)
cg@1796
  1816
              horizontalLayout: fitSpace
cg@1796
  1817
              verticalLayout: center
cg@1796
  1818
              horizontalSpace: 3
cg@1796
  1819
              verticalSpace: 3
cg@1796
  1820
              reverseOrderIfOKAtLeft: true
cg@1796
  1821
              component: 
cg@1796
  1822
             (SpecCollection
cg@1796
  1823
                collection: (
cg@1796
  1824
                 (ActionButtonSpec
cg@1796
  1825
                    label: 'Cancel'
cg@1796
  1826
                    name: 'Button1'
cg@1796
  1827
                    translateLabel: true
cg@1796
  1828
                    model: cancel
cg@1796
  1829
                    extent: (Point 118 22)
cg@1796
  1830
                  )
cg@1796
  1831
                 (ActionButtonSpec
cg@1796
  1832
                    label: 'OK'
cg@1796
  1833
                    name: 'Button2'
cg@1796
  1834
                    translateLabel: true
cg@1796
  1835
                    model: accept
cg@1796
  1836
                    extent: (Point 118 22)
cg@1796
  1837
                  )
cg@1796
  1838
                 )
cg@1796
  1839
               
cg@1796
  1840
              )
cg@1796
  1841
            )
cg@1796
  1842
           )
cg@1796
  1843
         
cg@1796
  1844
        )
cg@1796
  1845
      )
sv@1740
  1846
!
sv@1740
  1847
tz@767
  1848
windowSpec
tz@767
  1849
    "This resource specification was automatically generated
tz@767
  1850
     by the UIPainter of ST/X."
tz@767
  1851
tz@767
  1852
    "Do not manually edit this!! If it is corrupted,
tz@767
  1853
     the UIPainter may not be able to read the specification."
tz@767
  1854
tz@767
  1855
    "
tz@767
  1856
     UIPainter new openOnClass:ImageEditor andSelector:#windowSpec
tz@767
  1857
     ImageEditor new openInterface:#windowSpec
tz@767
  1858
     ImageEditor open
tz@767
  1859
    "
tz@767
  1860
tz@767
  1861
    <resource: #canvas>
tz@767
  1862
cg@1558
  1863
    ^ 
cg@3195
  1864
    #(FullSpec
cg@3195
  1865
       name: windowSpec
cg@3195
  1866
       window: 
cg@3195
  1867
      (WindowSpec
cg@3195
  1868
         label: 'Image Editor'
cg@3195
  1869
         name: 'Image Editor'
cg@3195
  1870
         min: (Point 400 320)
cg@3195
  1871
         bounds: (Rectangle 0 0 450 350)
cg@3195
  1872
         menu: menu
cg@3195
  1873
         icon: defaultIcon
cg@3195
  1874
       )
cg@3195
  1875
       component: 
cg@3195
  1876
      (SpecCollection
cg@3195
  1877
         collection: (
cg@3195
  1878
          (MenuPanelSpec
cg@3195
  1879
             name: 'menuToolbarView'
cg@3195
  1880
             layout: (LayoutFrame 0 0.0 0 0 0 1.0 32 0)
cg@3195
  1881
             style: (FontDescription helvetica medium roman 10)
cg@3195
  1882
             menu: menuToolbar
cg@3195
  1883
             showSeparatingLines: true
cg@3195
  1884
           )
cg@3195
  1885
          (VariableHorizontalPanelSpec
cg@3195
  1886
             name: 'mainPanel'
cg@3195
  1887
             layout: (LayoutFrame 0 0.0 34 0.0 0 1.0 -26 1.0)
cg@3195
  1888
             snapMode: both
cg@3195
  1889
             barLevel: 0
cg@3195
  1890
             component: 
cg@3195
  1891
            (SpecCollection
cg@3195
  1892
               collection: (
cg@3195
  1893
                (ViewSpec
cg@3195
  1894
                   name: 'leftView'
cg@3195
  1895
                   level: 1
cg@3195
  1896
                   component: 
cg@3195
  1897
                  (SpecCollection
cg@3195
  1898
                     collection: (
cg@3195
  1899
                      (VariableVerticalPanelSpec
cg@3195
  1900
                         name: 'verticalPanel'
cg@3195
  1901
                         layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
cg@3195
  1902
                         level: 0
cg@3195
  1903
                         snapMode: both
cg@3195
  1904
                         component: 
cg@3195
  1905
                        (SpecCollection
cg@3195
  1906
                           collection: (
cg@3195
  1907
                            (ViewSpec
cg@3195
  1908
                               name: 'View1'
cg@3195
  1909
                               component: 
cg@3195
  1910
                              (SpecCollection
cg@3195
  1911
                                 collection: (
cg@3195
  1912
                                  (MenuPanelSpec
cg@3195
  1913
                                     name: 'MouseButtonColorToolBar'
cg@3195
  1914
                                     layout: (LayoutFrame 0 0.0 0 0 0 1.0 24 0)
cg@3195
  1915
                                     level: 0
cg@3195
  1916
                                     menu: menuMouseButtonColors
cg@1558
  1917
                                   )
cg@3195
  1918
                                  (DataSetSpec
cg@3195
  1919
                                     name: 'colorDataSetView'
cg@3195
  1920
                                     layout: (LayoutFrame 0 0.0 26 0.0 0 1.0 0 1.0)
cg@3195
  1921
                                     activeHelpKey: colorMapTable
cg@3195
  1922
                                     style: (FontDescription helvetica medium roman 10)
cg@3195
  1923
                                     model: selectedColors
cg@3195
  1924
                                     menu: colorMapMenu
cg@3195
  1925
                                     hasHorizontalScrollBar: true
cg@3195
  1926
                                     hasVerticalScrollBar: true
cg@3195
  1927
                                     miniScrollerHorizontal: true
cg@3195
  1928
                                     miniScrollerVertical: true
cg@3195
  1929
                                     dataList: listOfColors
cg@3195
  1930
                                     has3Dseparators: true
cg@3195
  1931
                                     doubleClickSelector: doubleClickOnColor:
cg@3195
  1932
                                     columnHolder: colorTableColumns
cg@3195
  1933
                                     multipleSelectOk: true
cg@3195
  1934
                                     verticalSpacing: 1
cg@3195
  1935
                                     columnAdaptor: colorColumnAdaptor
cg@3195
  1936
                                   )
cg@3195
  1937
                                  )
cg@3195
  1938
                                
cg@3195
  1939
                               )
cg@1558
  1940
                             )
cg@3195
  1941
                            (ArbitraryComponentSpec
cg@3195
  1942
                               name: 'imagePreView'
cg@3195
  1943
                               activeHelpKey: previewView
cg@3195
  1944
                               menu: previewMenu
cg@3195
  1945
                               hasHorizontalScrollBar: true
cg@3195
  1946
                               hasVerticalScrollBar: true
cg@3195
  1947
                               miniScrollerHorizontal: false
cg@3195
  1948
                               miniScrollerVertical: false
cg@3195
  1949
                               hasBorder: false
cg@3195
  1950
                               component: ImageView
cg@3195
  1951
                             )
cg@3195
  1952
                            )
cg@3195
  1953
                          
cg@3195
  1954
                         )
cg@3195
  1955
                         handles: (Any 0.5 1.0)
cg@1558
  1956
                       )
cg@3195
  1957
                      )
cg@3195
  1958
                    
cg@3195
  1959
                   )
cg@3195
  1960
                 )
cg@3195
  1961
                (ViewSpec
cg@3195
  1962
                   name: 'rightView'
cg@3195
  1963
                   component: 
cg@3195
  1964
                  (SpecCollection
cg@3195
  1965
                     collection: (
cg@3195
  1966
                      (MenuPanelSpec
cg@3195
  1967
                         name: 'ToolBar1'
cg@3195
  1968
                         layout: (LayoutFrame 0 0 0 0.0 28 0 0 1.0)
cg@3195
  1969
                         level: 1
cg@3195
  1970
                         menu: toolsMenuToolbar
cg@3195
  1971
                         verticalLayout: true
cg@3195
  1972
                         centerItems: true
cg@3195
  1973
                         textDefault: true
cg@3195
  1974
                       )
cg@3195
  1975
                      (ViewSpec
cg@3195
  1976
                         name: 'editingView'
cg@3195
  1977
                         layout: (LayoutFrame 28 0.0 0 0.0 0 1.0 0 1.0)
cg@3195
  1978
                         level: 1
cg@3195
  1979
                         component: 
cg@3195
  1980
                        (SpecCollection
cg@3195
  1981
                           collection: (
cg@3195
  1982
                            (ArbitraryComponentSpec
cg@3195
  1983
                               name: 'imageEditView'
cg@3195
  1984
                               layout: (LayoutFrame 2 0.0 2 0.0 -2 1.0 -24 1.0)
cg@3195
  1985
                               hasHorizontalScrollBar: true
cg@3195
  1986
                               hasVerticalScrollBar: true
cg@3195
  1987
                               hasBorder: false
cg@3195
  1988
                               component: ImageEditView
cg@1637
  1989
                             )
cg@3195
  1990
                            (LabelSpec
cg@3195
  1991
                               name: 'coordLabel'
cg@3195
  1992
                               layout: (LayoutFrame 2 0.0 -22 1 -83 1.0 0 1.0)
cg@3195
  1993
                               level: -1
cg@3195
  1994
                               translateLabel: true
cg@3195
  1995
                               labelChannel: imageInfoHolder
cg@3195
  1996
                               resizeForLabel: false
cg@3195
  1997
                               adjust: left
cg@3195
  1998
                             )
cg@3195
  1999
                            (ArrowButtonSpec
cg@3195
  2000
                               name: 'magnifyDownButton'
cg@3195
  2001
                               layout: (LayoutFrame -80 1 -22 1 -58 1 0 1)
cg@3195
  2002
                               activeHelpKey: magnifyImageDown
cg@3195
  2003
                               translateLabel: true
cg@3195
  2004
                               model: doMagnifyDown
cg@3195
  2005
                               enableChannel: imageIsLoadedHolder
cg@3195
  2006
                               isTriggerOnDown: true
cg@3195
  2007
                               direction: left
cg@3195
  2008
                             )
cg@3195
  2009
                            (ArrowButtonSpec
cg@3195
  2010
                               name: 'magnifyUpButton'
cg@3195
  2011
                               layout: (LayoutFrame -24 1 -22 1 -2 1 0 1)
cg@3195
  2012
                               activeHelpKey: magnifyImageUp
cg@3195
  2013
                               translateLabel: true
cg@3195
  2014
                               model: doMagnifyUp
cg@3195
  2015
                               enableChannel: imageIsLoadedHolder
cg@3195
  2016
                               isTriggerOnDown: true
cg@3195
  2017
                               direction: right
cg@3195
  2018
                             )
cg@3195
  2019
                            (InputFieldSpec
cg@3195
  2020
                               name: 'magnificationInputField'
cg@3195
  2021
                               layout: (LayoutFrame -57 1 -22 1 -26 1 0 1)
cg@3195
  2022
                               activeHelpKey: magnificationNumber
cg@3195
  2023
                               enableChannel: imageIsLoadedHolder
cg@3195
  2024
                               model: magnificationHolder
cg@3195
  2025
                               type: numberInRange
cg@3195
  2026
                               acceptOnReturn: true
cg@3195
  2027
                               acceptOnTab: true
cg@3195
  2028
                               numChars: 2
cg@3195
  2029
                               minValue: 1
cg@3195
  2030
                               maxValue: 99
cg@3195
  2031
                               acceptOnPointerLeave: true
cg@3195
  2032
                             )
cg@3195
  2033
                            )
cg@3195
  2034
                          
cg@3195
  2035
                         )
cg@1558
  2036
                       )
cg@3195
  2037
                      )
cg@3195
  2038
                    
cg@3195
  2039
                   )
cg@1558
  2040
                 )
cg@3195
  2041
                )
cg@3195
  2042
              
cg@3195
  2043
             )
cg@3195
  2044
             handles: (Any 0.28888900000000006 1.0)
cg@1558
  2045
           )
cg@3195
  2046
          (UISubSpecification
cg@3195
  2047
             name: 'infoBarSubSpec'
cg@3195
  2048
             layout: (LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
cg@3195
  2049
             majorKey: ToolApplicationModel
cg@3195
  2050
             minorKey: windowSpecForInfoBar
cg@3195
  2051
           )
cg@3195
  2052
          )
cg@3195
  2053
        
cg@3195
  2054
       )
cg@3195
  2055
     )
tz@519
  2056
! !
tz@519
  2057
tz@519
  2058
!ImageEditor class methodsFor:'menu specs'!
tz@519
  2059
cg@1053
  2060
colorMapMenu
cg@1053
  2061
    "This resource specification was automatically generated
cg@1053
  2062
     by the MenuEditor of ST/X."
cg@1053
  2063
cg@1053
  2064
    "Do not manually edit this!! If it is corrupted,
cg@1053
  2065
     the MenuEditor may not be able to read the specification."
cg@1053
  2066
cg@1053
  2067
    "
cg@1847
  2068
     MenuEditor new openOnClass:ImageEditor andSelector:#colorMapMenu
cg@1847
  2069
     (Menu new fromLiteralArrayEncoding:(ImageEditor colorMapMenu)) startUp
cg@1053
  2070
    "
cg@1053
  2071
cg@1053
  2072
    <resource: #menu>
cg@1053
  2073
cg@1847
  2074
    ^ 
cg@1847
  2075
     #(Menu
cg@1847
  2076
        (
cg@1847
  2077
         (MenuItem
cg@2792
  2078
            enabled: hasColormapHolder
cg@1847
  2079
            label: 'Add Color'
cg@1847
  2080
            itemValue: addColorToColormap
cg@1847
  2081
            translateLabel: true
cg@1847
  2082
          )
cg@1847
  2083
         (MenuItem
cg@2792
  2084
            enabled: hasColormapHolder
cg@2539
  2085
            label: 'Pick and Add Color...'
cg@1847
  2086
            itemValue: pickAndAddColorToColormap
cg@1847
  2087
            translateLabel: true
cg@1847
  2088
          )
cg@1847
  2089
         (MenuItem
cg@1847
  2090
            label: '-'
cg@1847
  2091
          )
cg@1847
  2092
         (MenuItem
cg@3195
  2093
            enabled: hasColormapAndSingleColorSelected
cg@1852
  2094
            label: 'Cut Color'
cg@1852
  2095
            itemValue: cutColorFromColormap
cg@1852
  2096
            translateLabel: true
cg@1852
  2097
            isVisible: false
cg@1852
  2098
          )
cg@1852
  2099
         (MenuItem
cg@3195
  2100
            enabled: hasSingleColorSelectedHolder
cg@1852
  2101
            label: 'Copy Color'
cg@1852
  2102
            itemValue: copyColorFromColormap
cg@1852
  2103
            translateLabel: true
cg@2841
  2104
            shortcutKey: Copy
cg@1852
  2105
          )
cg@1852
  2106
         (MenuItem
cg@3195
  2107
            enabled: hasColormapAndSingleColorSelected
cg@2539
  2108
            label: 'Pick and Paste Color...'
cg@1933
  2109
            itemValue: pickAndPasteColor
cg@1852
  2110
            translateLabel: true
cg@1852
  2111
          )
cg@1852
  2112
         (MenuItem
cg@1852
  2113
            label: 'Paste Color'
cg@1852
  2114
            itemValue: pasteColorIntoColormap
cg@1852
  2115
            translateLabel: true
cg@2841
  2116
            shortcutKey: Paste
cg@1852
  2117
          )
cg@1852
  2118
         (MenuItem
cg@1852
  2119
            label: '-'
cg@1852
  2120
          )
cg@1852
  2121
         (MenuItem
cg@3195
  2122
            enabled: hasColormapAndSingleColorSelected
cg@2539
  2123
            label: 'Edit Color...'
cg@1931
  2124
            itemValue: editSelectedColor
cg@1931
  2125
            translateLabel: true
cg@1931
  2126
          )
cg@1931
  2127
         (MenuItem
cg@2651
  2128
            enabled: hasColormapAndColorSelected
cg@1847
  2129
            label: 'Brighter'
cg@1847
  2130
            itemValue: makeSelectedColorBrighter
cg@1847
  2131
            translateLabel: true
cg@1847
  2132
          )
cg@1847
  2133
         (MenuItem
cg@2651
  2134
            enabled: hasColormapAndColorSelected
cg@1847
  2135
            label: 'Darker'
cg@1847
  2136
            itemValue: makeSelectedColorDarker
cg@1847
  2137
            translateLabel: true
cg@1847
  2138
          )
cg@1847
  2139
         (MenuItem
cg@2651
  2140
            enabled: hasColormapAndColorSelected
cg@1884
  2141
            label: 'Make Gray'
cg@1884
  2142
            itemValue: makeSelectedColorGray
cg@1884
  2143
            translateLabel: true
cg@1884
  2144
          )
cg@1884
  2145
         (MenuItem
cg@3195
  2146
            enabled: hasColormapAndColorSelected
cg@3195
  2147
            label: 'Color Shift'
cg@3195
  2148
            itemValue: makeSelectedColorShifted
cg@3195
  2149
            translateLabel: true
cg@3195
  2150
          )
cg@3195
  2151
         (MenuItem
cg@1847
  2152
            label: '-'
cg@1847
  2153
          )
cg@1847
  2154
         (MenuItem
cg@3195
  2155
            enabled: hasSingleColorSelectedHolder
cg@1847
  2156
            label: 'Inspect Color'
cg@1847
  2157
            itemValue: inspectColor
cg@1847
  2158
            translateLabel: true
cg@2651
  2159
          )
cg@2651
  2160
         (MenuItem
cg@2792
  2161
            enabled: hasColormapHolder
cg@2651
  2162
            label: 'Inspect Colormap'
cg@2651
  2163
            itemValue: inspectColormap
cg@2651
  2164
            translateLabel: true
cg@1847
  2165
          )
cg@1847
  2166
         )
cg@1847
  2167
        nil
cg@1847
  2168
        nil
cg@1053
  2169
      )
cg@1053
  2170
!
cg@1053
  2171
tz@400
  2172
menu
tz@737
  2173
    "This resource specification was automatically generated
tz@737
  2174
     by the MenuEditor of ST/X."
tz@400
  2175
tz@737
  2176
    "Do not manually edit this!! If it is corrupted,
tz@737
  2177
     the MenuEditor may not be able to read the specification."
tz@400
  2178
tz@400
  2179
    "
tz@400
  2180
     MenuEditor new openOnClass:ImageEditor andSelector:#menu
tz@400
  2181
     (Menu new fromLiteralArrayEncoding:(ImageEditor menu)) startUp
tz@400
  2182
    "
tz@400
  2183
tz@400
  2184
    <resource: #menu>
tz@400
  2185
cg@1124
  2186
    ^ 
cg@1882
  2187
     #(Menu
cg@1882
  2188
        (
cg@1882
  2189
         (MenuItem
cg@1882
  2190
            label: '&File'
cg@1882
  2191
            translateLabel: true
cg@2196
  2192
            submenuChannel: menuFile
cg@2585
  2193
            "/ keepLinkedMenu: true
cg@1124
  2194
          )
cg@1882
  2195
         (MenuItem
cg@1882
  2196
            label: 'Edit'
cg@1882
  2197
            translateLabel: true
cg@2196
  2198
            submenuChannel: menuEdit
cg@2585
  2199
            "/ keepLinkedMenu: true
cg@1124
  2200
          )
cg@1882
  2201
         (MenuItem
cg@1882
  2202
            label: 'Mode'
cg@1882
  2203
            translateLabel: true
cg@1882
  2204
            submenuChannel: modeMenu
cg@1637
  2205
          )
cg@1882
  2206
         (MenuItem
cg@1924
  2207
            label: 'Colors'
cg@1882
  2208
            translateLabel: true
cg@2585
  2209
            submenuChannel: menuColors
cg@1124
  2210
          )
cg@1882
  2211
         (MenuItem
cg@1882
  2212
            label: 'Settings'
cg@1882
  2213
            translateLabel: true
cg@2585
  2214
            submenuChannel: menuSettings
cg@1124
  2215
          )
cg@1882
  2216
         (MenuItem
cg@1882
  2217
            label: 'History'
cg@1882
  2218
            translateLabel: true
cg@1975
  2219
            isVisible: isStandAlone
cg@1882
  2220
            submenuChannel: menuHistory
cg@1124
  2221
          )
cg@1882
  2222
         (MenuItem
cg@2136
  2223
            label: 'MENU_Help'
cg@1882
  2224
            translateLabel: true
cg@2125
  2225
            startGroup: conditionalRight
cg@1882
  2226
            submenuChannel: menuHelp
cg@1124
  2227
          )
cg@1124
  2228
         )
cg@1124
  2229
        nil
cg@1124
  2230
        nil
tz@400
  2231
      )
tz@400
  2232
!
tz@400
  2233
cg@2585
  2234
menuColors
cg@2585
  2235
    "This resource specification was automatically generated
cg@2585
  2236
     by the MenuEditor of ST/X."
cg@2585
  2237
cg@2585
  2238
    "Do not manually edit this!! If it is corrupted,
cg@2585
  2239
     the MenuEditor may not be able to read the specification."
cg@2585
  2240
cg@2585
  2241
    "
cg@2585
  2242
     MenuEditor new openOnClass:ImageEditor andSelector:#menuColors
cg@2585
  2243
     (Menu new fromLiteralArrayEncoding:(ImageEditor menuColors)) startUp
cg@2585
  2244
    "
cg@2585
  2245
cg@2585
  2246
    <resource: #menu>
cg@2585
  2247
cg@2585
  2248
    ^ 
cg@2585
  2249
     #(Menu
cg@2585
  2250
        (
cg@2585
  2251
         (MenuItem
cg@2767
  2252
            enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
cg@2585
  2253
            label: 'Depth'
cg@2585
  2254
            translateLabel: true
cg@2585
  2255
            submenu: 
cg@2585
  2256
           (Menu
cg@2585
  2257
              (
cg@2585
  2258
               (MenuItem
cg@2585
  2259
                  activeHelpKey: colorMap1
cg@2585
  2260
                  label: '1-Plane'
cg@2585
  2261
                  itemValue: colorMapMode:
cg@2585
  2262
                  translateLabel: true
cg@2585
  2263
                  argument: depth1
cg@2585
  2264
                  choice: colorMapMode
cg@2585
  2265
                  choiceValue: depth1
cg@2585
  2266
                )
cg@2585
  2267
               (MenuItem
cg@2585
  2268
                  activeHelpKey: colorMap1M
cg@2585
  2269
                  label: '1-Plane + Mask'
cg@2585
  2270
                  itemValue: colorMapMode:
cg@2585
  2271
                  translateLabel: true
cg@2585
  2272
                  argument: masked1
cg@2585
  2273
                  choice: colorMapMode
cg@2585
  2274
                  choiceValue: masked1
cg@2585
  2275
                )
cg@2585
  2276
               (MenuItem
cg@2585
  2277
                  label: '-'
cg@2585
  2278
                )
cg@2585
  2279
               (MenuItem
cg@2585
  2280
                  activeHelpKey: colorMap2
cg@2585
  2281
                  label: '2-Plane'
cg@2585
  2282
                  itemValue: colorMapMode:
cg@2585
  2283
                  translateLabel: true
cg@2585
  2284
                  argument: depth2
cg@2585
  2285
                  choice: colorMapMode
cg@2585
  2286
                  choiceValue: depth2
cg@2585
  2287
                )
cg@2585
  2288
               (MenuItem
cg@2585
  2289
                  activeHelpKey: colorMap2M
cg@2585
  2290
                  label: '2-Plane + Mask'
cg@2585
  2291
                  itemValue: colorMapMode:
cg@2585
  2292
                  translateLabel: true
cg@2585
  2293
                  argument: masked2
cg@2585
  2294
                  choice: colorMapMode
cg@2585
  2295
                  choiceValue: masked2
cg@2585
  2296
                )
cg@2585
  2297
               (MenuItem
cg@2585
  2298
                  label: '-'
cg@2585
  2299
                )
cg@2585
  2300
               (MenuItem
cg@2585
  2301
                  activeHelpKey: colorMap4
cg@2585
  2302
                  label: '4-Plane'
cg@2585
  2303
                  itemValue: colorMapMode:
cg@2585
  2304
                  translateLabel: true
cg@2585
  2305
                  argument: depth4
cg@2585
  2306
                  choice: colorMapMode
cg@2585
  2307
                  choiceValue: depth4
cg@2585
  2308
                )
cg@2585
  2309
               (MenuItem
cg@2585
  2310
                  activeHelpKey: colorMap4M
cg@2585
  2311
                  label: '4-Plane + Mask'
cg@2585
  2312
                  itemValue: colorMapMode:
cg@2585
  2313
                  translateLabel: true
cg@2585
  2314
                  argument: masked4
cg@2585
  2315
                  choice: colorMapMode
cg@2585
  2316
                  choiceValue: masked4
cg@2585
  2317
                )
cg@2585
  2318
               (MenuItem
cg@2585
  2319
                  label: '-'
cg@2585
  2320
                )
cg@2585
  2321
               (MenuItem
cg@2585
  2322
                  activeHelpKey: colorMap8
cg@2585
  2323
                  label: '8-Plane'
cg@2585
  2324
                  itemValue: colorMapMode:
cg@2585
  2325
                  translateLabel: true
cg@2585
  2326
                  argument: depth8
cg@2585
  2327
                  choice: colorMapMode
cg@2585
  2328
                  choiceValue: depth8
cg@2585
  2329
                )
cg@2585
  2330
               (MenuItem
cg@2585
  2331
                  activeHelpKey: colorMap8M
cg@2585
  2332
                  label: '8-Plane + Mask'
cg@2585
  2333
                  itemValue: colorMapMode:
cg@2585
  2334
                  translateLabel: true
cg@2585
  2335
                  argument: masked8
cg@2585
  2336
                  choice: colorMapMode
cg@2585
  2337
                  choiceValue: masked8
cg@2585
  2338
                )
cg@2585
  2339
               (MenuItem
cg@2585
  2340
                  label: '-'
cg@2585
  2341
                )
cg@2585
  2342
               (MenuItem
cg@2585
  2343
                  activeHelpKey: colorMap16
cg@2585
  2344
                  label: '16-Plane'
cg@2585
  2345
                  itemValue: colorMapMode:
cg@2585
  2346
                  translateLabel: true
cg@2585
  2347
                  argument: depth16
cg@2585
  2348
                  choice: colorMapMode
cg@2585
  2349
                  choiceValue: depth16
cg@2585
  2350
                )
cg@2585
  2351
               (MenuItem
cg@2585
  2352
                  activeHelpKey: colorMap16M
cg@2585
  2353
                  label: '16-Plane + Mask'
cg@2585
  2354
                  itemValue: colorMapMode:
cg@2585
  2355
                  translateLabel: true
cg@2585
  2356
                  argument: masked16
cg@2585
  2357
                  choice: colorMapMode
cg@2585
  2358
                  choiceValue: masked16
cg@2585
  2359
                )
cg@2585
  2360
               (MenuItem
cg@2585
  2361
                  label: '-'
cg@2585
  2362
                )
cg@2585
  2363
               (MenuItem
cg@2585
  2364
                  activeHelpKey: colorMap24
cg@2585
  2365
                  label: '24-Plane'
cg@2585
  2366
                  itemValue: colorMapMode:
cg@2585
  2367
                  translateLabel: true
cg@2585
  2368
                  argument: depth24
cg@2585
  2369
                  choice: colorMapMode
cg@2585
  2370
                  choiceValue: depth24
cg@2585
  2371
                )
cg@2585
  2372
               (MenuItem
cg@2585
  2373
                  activeHelpKey: colorMap24M
cg@2585
  2374
                  label: '24-Plane + Mask'
cg@2585
  2375
                  itemValue: colorMapMode:
cg@2585
  2376
                  translateLabel: true
cg@2585
  2377
                  argument: masked24
cg@2585
  2378
                  choice: colorMapMode
cg@2585
  2379
                  choiceValue: masked24
cg@2585
  2380
                )
cg@2585
  2381
               (MenuItem
cg@2585
  2382
                  label: '-'
cg@2585
  2383
                )
cg@2585
  2384
               (MenuItem
cg@2585
  2385
                  activeHelpKey: colorMap32
cg@2585
  2386
                  label: '32-Plane (rgba)'
cg@2585
  2387
                  itemValue: colorMapMode:
cg@2585
  2388
                  translateLabel: true
cg@2585
  2389
                  argument: depth32
cg@2585
  2390
                  choice: colorMapMode
cg@2585
  2391
                  choiceValue: depth32
cg@2585
  2392
                )
cg@2585
  2393
               )
cg@2585
  2394
              nil
cg@2585
  2395
              nil
cg@2585
  2396
            )
cg@2585
  2397
          )
cg@2585
  2398
         (MenuItem
cg@2792
  2399
            enabled: imageIsLoadedHolder
cg@2585
  2400
            label: 'ColorMap'
cg@2585
  2401
            translateLabel: true
cg@2585
  2402
            submenu: 
cg@2585
  2403
           (Menu
cg@2585
  2404
              (
cg@2585
  2405
               (MenuItem
cg@2585
  2406
                  activeHelpKey: compressColormap
cg@2792
  2407
                  enabled: hasColormapHolder
cg@2585
  2408
                  label: 'Compress Colormap'
cg@2826
  2409
                  itemValue: #'menu_compressColorMap'
cg@2585
  2410
                  translateLabel: true
cg@2585
  2411
                )
cg@2585
  2412
               (MenuItem
cg@2792
  2413
                  enabled: hasColormapHolder
cg@2585
  2414
                  label: 'Sort Colormap'
cg@2826
  2415
                  itemValue: #'menu_sortColorMap'
cg@2585
  2416
                  translateLabel: true
cg@2585
  2417
                )
cg@2585
  2418
               (MenuItem
cg@2585
  2419
                  label: 'Reduce Number of Colors by Rounding...'
cg@2585
  2420
                  itemValue: reduceNumberOfColors2
cg@2585
  2421
                  translateLabel: true
cg@2585
  2422
                )
cg@2585
  2423
               (MenuItem
cg@2585
  2424
                  label: 'Reduce Number of Colors by Masking Bits...'
cg@2585
  2425
                  itemValue: reduceNumberOfColors
cg@2585
  2426
                  translateLabel: true
cg@2585
  2427
                )
cg@2585
  2428
               (MenuItem
cg@2585
  2429
                  label: 'Dither to Depth...'
cg@2585
  2430
                  itemValue: ditherToDepth
cg@2585
  2431
                  translateLabel: true
cg@2585
  2432
                )
cg@2585
  2433
               (MenuItem
cg@2585
  2434
                  label: '-'
cg@2585
  2435
                )
cg@2585
  2436
               (MenuItem
cg@2792
  2437
                  enabled: imageIsLoadedHolder
cg@2585
  2438
                  label: 'Brighten'
cg@2585
  2439
                  itemValue: doBrightenImage
cg@2585
  2440
                  translateLabel: true
cg@2585
  2441
                )
cg@2585
  2442
               (MenuItem
cg@2792
  2443
                  enabled: imageIsLoadedHolder
cg@2585
  2444
                  label: 'Darken'
cg@2585
  2445
                  itemValue: doDarkenImage
cg@2585
  2446
                  translateLabel: true
cg@2585
  2447
                )
cg@2652
  2448
               (MenuItem
cg@2792
  2449
                  enabled: imageIsLoadedHolder
cg@2652
  2450
                  label: 'Invert'
cg@2652
  2451
                  itemValue: doNegativeImage
cg@2652
  2452
                  translateLabel: true
cg@2652
  2453
                )
cg@2585
  2454
               )
cg@2585
  2455
              nil
cg@2585
  2456
              nil
cg@2585
  2457
            )
cg@2585
  2458
          )
cg@2585
  2459
         (MenuItem
cg@2792
  2460
            enabled: imageIsLoadedHolder
cg@2585
  2461
            label: 'Process'
cg@2585
  2462
            translateLabel: true
cg@2585
  2463
            submenu: 
cg@2585
  2464
           (Menu
cg@2585
  2465
              (
cg@2585
  2466
               (MenuItem
cg@2585
  2467
                  label: 'Make GrayScale'
cg@2585
  2468
                  itemValue: makeGrayScaleImage
cg@2585
  2469
                  translateLabel: true
cg@2585
  2470
                )
cg@2585
  2471
               (MenuItem
cg@2826
  2472
                  enabled: allowedToChangeImageDimensionAndDepth
cg@2585
  2473
                  label: 'Make dithered 8Bit Palette'
cg@2585
  2474
                  itemValue: makeDitheredPaletteImage
cg@2585
  2475
                  translateLabel: true
cg@2585
  2476
                  isVisible: false
cg@2585
  2477
                )
cg@2585
  2478
               (MenuItem
cg@2826
  2479
                  label: 'Make Inverse'
cg@2826
  2480
                  itemValue: makeInverse
cg@2826
  2481
                  translateLabel: true
cg@2826
  2482
                )
cg@2826
  2483
               (MenuItem
cg@2826
  2484
                  label: '-'
cg@2826
  2485
                )
cg@2826
  2486
               (MenuItem
cg@2826
  2487
                  label: 'Make Slightly Brighter'
cg@2826
  2488
                  itemValue: makeSlightlyBrighter
cg@2826
  2489
                  translateLabel: true
cg@2826
  2490
                )
cg@2826
  2491
               (MenuItem
cg@2826
  2492
                  label: 'Make Slightly Darker'
cg@2826
  2493
                  itemValue: makeSlightlyDarker
cg@2826
  2494
                  translateLabel: true
cg@2826
  2495
                )
cg@2826
  2496
               (MenuItem
cg@2826
  2497
                  label: '-'
cg@2826
  2498
                )
cg@2826
  2499
               (MenuItem
cg@2585
  2500
                  label: 'Make Brighter'
cg@2585
  2501
                  itemValue: makeBrighter
cg@2585
  2502
                  translateLabel: true
cg@2585
  2503
                )
cg@2585
  2504
               (MenuItem
cg@2585
  2505
                  label: 'Make Darker'
cg@2585
  2506
                  itemValue: makeDarker
cg@2585
  2507
                  translateLabel: true
cg@2585
  2508
                )
cg@2585
  2509
               (MenuItem
cg@2585
  2510
                  label: '-'
cg@2585
  2511
                )
cg@2585
  2512
               (MenuItem
cg@2585
  2513
                  label: 'Change HLS...'
cg@2585
  2514
                  itemValue: changeHLS
cg@2585
  2515
                  translateLabel: true
cg@2585
  2516
                )
cg@2585
  2517
               (MenuItem
cg@2585
  2518
                  label: 'Colorize...'
cg@2585
  2519
                  itemValue: colorize
cg@2585
  2520
                  translateLabel: true
cg@2585
  2521
                )
cg@2585
  2522
               )
cg@2585
  2523
              nil
cg@2585
  2524
              nil
cg@2585
  2525
            )
cg@2585
  2526
          )
cg@2585
  2527
         (MenuItem
cg@2792
  2528
            enabled: imageIsLoadedHolder
cg@2585
  2529
            label: 'Mask'
cg@2585
  2530
            translateLabel: true
cg@2585
  2531
            submenu: 
cg@2585
  2532
           (Menu
cg@2585
  2533
              (
cg@2585
  2534
               (MenuItem
cg@2585
  2535
                  activeHelpKey: copyMask
cg@2585
  2536
                  enabled: hasMask
cg@2585
  2537
                  label: 'Copy Mask'
cg@2826
  2538
                  itemValue: #'menu_copyMask'
cg@2585
  2539
                  translateLabel: true
cg@2585
  2540
                )
cg@2585
  2541
               (MenuItem
cg@2585
  2542
                  activeHelpKey: pasteMask
cg@2585
  2543
                  enabled: hasMask
cg@2585
  2544
                  label: 'Paste Mask'
cg@2826
  2545
                  itemValue: #'menu_pasteMask'
cg@2585
  2546
                  translateLabel: true
cg@2585
  2547
                )
cg@2585
  2548
               (MenuItem
cg@2585
  2549
                  enabled: hasMask
cg@2585
  2550
                  label: 'Clear Masked Pixels'
cg@2826
  2551
                  itemValue: #'menu_clearMaskedPixels'
cg@2652
  2552
                  translateLabel: true
cg@2652
  2553
                )
cg@2652
  2554
               (MenuItem
cg@2652
  2555
                  enabled: hasMask
cg@2653
  2556
                  label: 'Clear Colormap Entry for Masked Pixels'
cg@2826
  2557
                  itemValue: #'menu_clearColormapEntry0AndMaskedPixels'
cg@2585
  2558
                  translateLabel: true
cg@2585
  2559
                )
cg@2585
  2560
               )
cg@2585
  2561
              nil
cg@2585
  2562
              nil
cg@2585
  2563
            )
cg@2585
  2564
          )
cg@2585
  2565
         )
cg@2585
  2566
        nil
cg@2585
  2567
        nil
cg@2585
  2568
      )
cg@2585
  2569
!
cg@2585
  2570
cg@2196
  2571
menuEdit
cg@2196
  2572
    "This resource specification was automatically generated
cg@2196
  2573
     by the MenuEditor of ST/X."
cg@2196
  2574
cg@2196
  2575
    "Do not manually edit this!! If it is corrupted,
cg@2196
  2576
     the MenuEditor may not be able to read the specification."
cg@2196
  2577
cg@2196
  2578
    "
cg@2196
  2579
     MenuEditor new openOnClass:ImageEditor andSelector:#menuEdit
cg@2196
  2580
     (Menu new fromLiteralArrayEncoding:(ImageEditor menuEdit)) startUp
cg@2196
  2581
    "
cg@2196
  2582
cg@2196
  2583
    <resource: #menu>
cg@2196
  2584
cg@2196
  2585
    ^ 
cg@2196
  2586
     #(Menu
cg@2196
  2587
        (
cg@2196
  2588
         (MenuItem
cg@2196
  2589
            activeHelpKey: editUndo
cg@2196
  2590
            enabled: canUndoHolder
cg@2196
  2591
            label: 'Undo'
cg@2196
  2592
            itemValue: doUndo
cg@2196
  2593
            translateLabel: true
cg@2196
  2594
          )
cg@2196
  2595
         (MenuItem
cg@2196
  2596
            label: '-'
cg@2196
  2597
          )
cg@2196
  2598
         (MenuItem
cg@2812
  2599
            enabled: imageIsLoadedHolder
cg@2812
  2600
            label: 'Copy to Clipboard'
cg@2812
  2601
            itemValue: doCopyImageToClipboard
cg@2812
  2602
            translateLabel: true
cg@2812
  2603
          )
cg@2812
  2604
         (MenuItem
cg@2812
  2605
            label: '-'
cg@2812
  2606
          )
cg@2812
  2607
         (MenuItem
cg@2812
  2608
            activeHelpKey: editResize
cg@2767
  2609
            enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
cg@2196
  2610
            label: 'Resize...'
cg@2196
  2611
            itemValue: doResizeImage
cg@2196
  2612
            translateLabel: true
cg@2196
  2613
          )
cg@2196
  2614
         (MenuItem
cg@2812
  2615
            activeHelpKey: editMagnifyImage
cg@2767
  2616
            enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
cg@2196
  2617
            label: 'Magnify...'
cg@2196
  2618
            itemValue: doMagnifyImage
cg@2196
  2619
            translateLabel: true
cg@2196
  2620
          )
cg@2196
  2621
         (MenuItem
cg@2812
  2622
            activeHelpKey: editMagnifyImage
cg@2767
  2623
            enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
cg@2196
  2624
            label: 'Magnify By...'
cg@2196
  2625
            itemValue: doMagnifyImageBy
cg@2196
  2626
            translateLabel: true
cg@2196
  2627
          )
cg@2196
  2628
         (MenuItem
cg@2812
  2629
            activeHelpKey: editRotate
cg@2767
  2630
            enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
cg@2196
  2631
            label: 'Rotate...'
cg@2196
  2632
            itemValue: doRotateImage
cg@2196
  2633
            translateLabel: true
cg@2196
  2634
          )
cg@2196
  2635
         (MenuItem
cg@2812
  2636
            activeHelpKey: edit3DProjection
cg@2767
  2637
            enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
cg@2354
  2638
            label: '3D Projection...'
cg@2354
  2639
            itemValue: do3DProjection
cg@2354
  2640
            translateLabel: true
cg@2354
  2641
          )
cg@2354
  2642
         (MenuItem
cg@2792
  2643
            enabled: imageIsLoadedHolder
cg@2196
  2644
            label: 'Flip'
cg@2196
  2645
            translateLabel: true
cg@2196
  2646
            submenu: 
cg@2196
  2647
           (Menu
cg@2196
  2648
              (
cg@2196
  2649
               (MenuItem
cg@2196
  2650
                  activeHelpKey: editFlipVertical
cg@2812
  2651
                  enabled: imageIsLoadedHolder
cg@2196
  2652
                  label: 'Flip - Vertical'
cg@2196
  2653
                  itemValue: doFlipVertical
cg@2196
  2654
                  translateLabel: true
cg@2837
  2655
                  labelImage: (ResourceRetriever ImageEditor flipVerticalIcon 'Flip - Vertical')
cg@2196
  2656
                )
cg@2196
  2657
               (MenuItem
cg@2196
  2658
                  activeHelpKey: editFlipHorizontal
cg@2812
  2659
                  enabled: imageIsLoadedHolder
cg@2196
  2660
                  label: 'Flip - Horizontal'
cg@2196
  2661
                  itemValue: doFlipHorizontal
cg@2196
  2662
                  translateLabel: true
cg@2837
  2663
                  labelImage: (ResourceRetriever ImageEditor flipHorizontalIcon 'Flip - Horizontal')
cg@2196
  2664
                )
cg@2196
  2665
               )
cg@2196
  2666
              nil
cg@2196
  2667
              nil
cg@2196
  2668
            )
cg@2196
  2669
          )
cg@2196
  2670
         (MenuItem
cg@2196
  2671
            label: '-'
cg@2196
  2672
          )
cg@2196
  2673
         (MenuItem
cg@2767
  2674
            enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
cg@2196
  2675
            label: 'Crop'
cg@2196
  2676
            translateLabel: true
cg@2196
  2677
            submenu: 
cg@2196
  2678
           (Menu
cg@2196
  2679
              (
cg@2196
  2680
               (MenuItem
cg@2196
  2681
                  activeHelpKey: cropManual
cg@2196
  2682
                  label: 'Manual...'
cg@2196
  2683
                  itemValue: doCropManual
cg@2196
  2684
                  translateLabel: true
cg@2196
  2685
                )
cg@2196
  2686
               (MenuItem
cg@2196
  2687
                  label: '-'
cg@2196
  2688
                )
cg@2196
  2689
               (MenuItem
cg@2196
  2690
                  activeHelpKey: cropAll
cg@2196
  2691
                  label: 'All'
cg@2196
  2692
                  itemValue: doCropAll
cg@2196
  2693
                  translateLabel: true
cg@2196
  2694
                )
cg@2196
  2695
               (MenuItem
cg@2196
  2696
                  label: '-'
cg@2196
  2697
                )
cg@2196
  2698
               (MenuItem
cg@2196
  2699
                  activeHelpKey: cropLeft
cg@2196
  2700
                  label: 'Left'
cg@2196
  2701
                  itemValue: doCropLeft
cg@2196
  2702
                  translateLabel: true
cg@2196
  2703
                )
cg@2196
  2704
               (MenuItem
cg@2196
  2705
                  activeHelpKey: cropRight
cg@2196
  2706
                  label: 'Right'
cg@2196
  2707
                  itemValue: doCropRight
cg@2196
  2708
                  translateLabel: true
cg@2196
  2709
                )
cg@2196
  2710
               (MenuItem
cg@2196
  2711
                  activeHelpKey: cropTop
cg@2196
  2712
                  label: 'Top'
cg@2196
  2713
                  itemValue: doCropTop
cg@2196
  2714
                  translateLabel: true
cg@2196
  2715
                )
cg@2196
  2716
               (MenuItem
cg@2196
  2717
                  activeHelpKey: cropBottom
cg@2196
  2718
                  label: 'Bottom'
cg@2196
  2719
                  itemValue: doCropBottom
cg@2196
  2720
                  translateLabel: true
cg@2196
  2721
                )
cg@2196
  2722
               )
cg@2196
  2723
              nil
cg@2196
  2724
              nil
cg@2196
  2725
            )
cg@2196
  2726
          )
cg@2196
  2727
         (MenuItem
cg@2812
  2728
            activeHelpKey: uncropManual
cg@2767
  2729
            enabled: imageIsLoadedAndAllowedToChangeImageDimensionAndDepth
cg@2196
  2730
            label: 'Uncrop (Add Border)...'
cg@2196
  2731
            itemValue: doUnCropManual
cg@2196
  2732
            translateLabel: true
cg@2196
  2733
          )
cg@2196
  2734
         (MenuItem
cg@2812
  2735
            activeHelpKey: shiftManual
cg@2792
  2736
            enabled: imageIsLoadedHolder
cg@2196
  2737
            label: 'Shift...'
cg@2196
  2738
            itemValue: doShiftManual
cg@2196
  2739
            translateLabel: true
cg@2196
  2740
          )
cg@2196
  2741
         (MenuItem
cg@2196
  2742
            label: '-'
cg@2196
  2743
          )
cg@2196
  2744
         (MenuItem
cg@2585
  2745
            activeHelpKey: fileEditMask
cg@2792
  2746
            enabled: imageIsLoadedHolder
cg@2585
  2747
            label: 'Edit Mask'
cg@2585
  2748
            itemValue: doEditMask
cg@2585
  2749
            translateLabel: true
cg@2585
  2750
          )
cg@2585
  2751
         (MenuItem
cg@2792
  2752
            enabled: imageIsLoadedHolder
cg@2196
  2753
            label: 'Text...'
cg@2196
  2754
            itemValue: doInsertTextFromUser
cg@2196
  2755
            translateLabel: true
cg@2196
  2756
          )
cg@2812
  2757
         (MenuItem
cg@2812
  2758
            label: '-'
cg@2812
  2759
          )
cg@2812
  2760
         (MenuItem
cg@2814
  2761
            label: 'Animation Sequence'
cg@2812
  2762
            translateLabel: true
cg@2812
  2763
            submenu: 
cg@2812
  2764
           (Menu
cg@2812
  2765
              (
cg@2812
  2766
               (MenuItem
cg@2812
  2767
                  enabled: imageHasNextImageHolder
cg@2812
  2768
                  label: 'Next in Sequence'
cg@2812
  2769
                  itemValue: nextImageInSequence
cg@2812
  2770
                  translateLabel: true
cg@2812
  2771
                )
cg@2812
  2772
               (MenuItem
cg@2812
  2773
                  enabled: imageHasPreviousImageHolder
cg@2813
  2774
                  label: 'Previous in Sequence'
cg@2812
  2775
                  itemValue: previousImageInSequence
cg@2812
  2776
                  translateLabel: true
cg@2812
  2777
                )
cg@2812
  2778
               (MenuItem
cg@2812
  2779
                  label: '-'
cg@2812
  2780
                )
cg@2812
  2781
               (MenuItem
cg@2812
  2782
                  enabled: imageHasImageSequenceHolder
cg@2812
  2783
                  label: 'Edit each from Sequence'
cg@2812
  2784
                  itemValue: editEachImageFromSequence
cg@2812
  2785
                  translateLabel: true
cg@2812
  2786
                )
cg@2812
  2787
               )
cg@2812
  2788
              nil
cg@2812
  2789
              nil
cg@2812
  2790
            )
cg@2812
  2791
          )
cg@2196
  2792
         )
cg@2196
  2793
        nil
cg@2196
  2794
        nil
cg@2196
  2795
      )
cg@2196
  2796
!
cg@2196
  2797
cg@2196
  2798
menuFile
cg@2196
  2799
    "This resource specification was automatically generated
cg@2196
  2800
     by the MenuEditor of ST/X."
cg@2196
  2801
cg@2196
  2802
    "Do not manually edit this!! If it is corrupted,
cg@2196
  2803
     the MenuEditor may not be able to read the specification."
cg@2196
  2804
cg@3022
  2805
cg@2196
  2806
    "
cg@2196
  2807
     MenuEditor new openOnClass:ImageEditor andSelector:#menuFile
cg@2196
  2808
     (Menu new fromLiteralArrayEncoding:(ImageEditor menuFile)) startUp
cg@2196
  2809
    "
cg@2196
  2810
cg@2196
  2811
    <resource: #menu>
cg@2196
  2812
cg@2196
  2813
    ^ 
cg@2196
  2814
     #(Menu
cg@2196
  2815
        (
cg@2196
  2816
         (MenuItem
cg@2196
  2817
            activeHelpKey: fileNewImageEditor
cg@2196
  2818
            label: 'New ImageEditor'
cg@2196
  2819
            itemValue: doNewImageEditor
cg@2196
  2820
          )
cg@2196
  2821
         (MenuItem
cg@2876
  2822
            label: '-'
cg@2876
  2823
          )
cg@2876
  2824
         (MenuItem
cg@2196
  2825
            activeHelpKey: fileNewImage
cg@2196
  2826
            label: 'New...'
cg@2196
  2827
            itemValue: doNewImage
cg@2196
  2828
          )
cg@2196
  2829
         (MenuItem
cg@3200
  2830
            activeHelpKey: fileNewImageFromClipboard
cg@2196
  2831
            label: 'New from ClipBoard'
cg@2196
  2832
            itemValue: doNewImageFromClipboard
cg@2196
  2833
          )
cg@2196
  2834
         (MenuItem
cg@3200
  2835
            activeHelpKey: fileNewMaskFromClipboard
cg@3200
  2836
            label: 'Mask from ClipBoard'
cg@3200
  2837
            itemValue: doNewMaskFromClipboard
cg@3200
  2838
          )
cg@3200
  2839
         (MenuItem
cg@2196
  2840
            label: '-'
cg@2196
  2841
          )
cg@2196
  2842
         (MenuItem
cg@2196
  2843
            activeHelpKey: fileLoadFromClass