ImageEditView.st
author tz
Sun, 21 Dec 1997 22:59:57 +0100
changeset 636 d53428252193
parent 633 594edef86630
child 662 61b7601829ea
permissions -rw-r--r--
revised version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
636
d53428252193 revised version
tz
parents: 633
diff changeset
     1
"
d53428252193 revised version
tz
parents: 633
diff changeset
     2
 COPYRIGHT (c) 1997 by eXept Software AG / Thomas Zwick
d53428252193 revised version
tz
parents: 633
diff changeset
     3
              All Rights Reserved
d53428252193 revised version
tz
parents: 633
diff changeset
     4
d53428252193 revised version
tz
parents: 633
diff changeset
     5
 This software is furnished under a license and may be used
d53428252193 revised version
tz
parents: 633
diff changeset
     6
 only in accordance with the terms of that license and with the
d53428252193 revised version
tz
parents: 633
diff changeset
     7
 inclusion of the above copyright notice. This software may not
d53428252193 revised version
tz
parents: 633
diff changeset
     8
 be provided or otherwise made available to, or used by, any
d53428252193 revised version
tz
parents: 633
diff changeset
     9
 other person. No title to or ownership of the software is
d53428252193 revised version
tz
parents: 633
diff changeset
    10
 hereby transferred.
d53428252193 revised version
tz
parents: 633
diff changeset
    11
"
d53428252193 revised version
tz
parents: 633
diff changeset
    12
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
    13
ImageView subclass:#ImageEditView
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    14
	instanceVariableNames:'magnification gridMagnification selectColors imageReaderClass
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    15
		resourceClass resourceSelector editMode mouseKeyColorMode
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    16
		undoImage modified coordInfoBlock'
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    17
	classVariableNames:'Clipboard'
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    18
	poolDictionaries:''
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    19
	category:'Views-Misc'
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
    20
!
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
    21
636
d53428252193 revised version
tz
parents: 633
diff changeset
    22
!ImageEditView class methodsFor:'documentation'!
d53428252193 revised version
tz
parents: 633
diff changeset
    23
d53428252193 revised version
tz
parents: 633
diff changeset
    24
copyright
d53428252193 revised version
tz
parents: 633
diff changeset
    25
"
d53428252193 revised version
tz
parents: 633
diff changeset
    26
 COPYRIGHT (c) 1997 by eXept Software AG / Thomas Zwick
d53428252193 revised version
tz
parents: 633
diff changeset
    27
              All Rights Reserved
d53428252193 revised version
tz
parents: 633
diff changeset
    28
d53428252193 revised version
tz
parents: 633
diff changeset
    29
 This software is furnished under a license and may be used
d53428252193 revised version
tz
parents: 633
diff changeset
    30
 only in accordance with the terms of that license and with the
d53428252193 revised version
tz
parents: 633
diff changeset
    31
 inclusion of the above copyright notice. This software may not
d53428252193 revised version
tz
parents: 633
diff changeset
    32
 be provided or otherwise made available to, or used by, any
d53428252193 revised version
tz
parents: 633
diff changeset
    33
 other person. No title to or ownership of the software is
d53428252193 revised version
tz
parents: 633
diff changeset
    34
 hereby transferred.
d53428252193 revised version
tz
parents: 633
diff changeset
    35
"
d53428252193 revised version
tz
parents: 633
diff changeset
    36
!
d53428252193 revised version
tz
parents: 633
diff changeset
    37
d53428252193 revised version
tz
parents: 633
diff changeset
    38
documentation
d53428252193 revised version
tz
parents: 633
diff changeset
    39
"
d53428252193 revised version
tz
parents: 633
diff changeset
    40
    The ImageEditView is a view class which can be used by applications
d53428252193 revised version
tz
parents: 633
diff changeset
    41
    like the Image Editor for modifying or inspecting images.
d53428252193 revised version
tz
parents: 633
diff changeset
    42
d53428252193 revised version
tz
parents: 633
diff changeset
    43
    [see also:]
d53428252193 revised version
tz
parents: 633
diff changeset
    44
        ImageEditor Image
d53428252193 revised version
tz
parents: 633
diff changeset
    45
d53428252193 revised version
tz
parents: 633
diff changeset
    46
    [author:]
d53428252193 revised version
tz
parents: 633
diff changeset
    47
        Thomas Zwick
d53428252193 revised version
tz
parents: 633
diff changeset
    48
"
d53428252193 revised version
tz
parents: 633
diff changeset
    49
! !
353
0442fc169b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 322
diff changeset
    50
7
19b36b78ee01 *** empty log message ***
claus
parents: 5
diff changeset
    51
!ImageEditView methodsFor:'accessing'!
19b36b78ee01 *** empty log message ***
claus
parents: 5
diff changeset
    52
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    53
coordInfoBlock: aBlock
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    54
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    55
    coordInfoBlock := aBlock
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    56
!
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    57
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    58
gridMagnification: aPoint
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    59
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    60
    gridMagnification := aPoint
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    61
!
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    62
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    63
imageReaderClass
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    64
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    65
    ^imageReaderClass
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    66
!
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    67
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    68
magnification
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    69
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    70
    ^magnification
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    71
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
    72
!
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
    73
636
d53428252193 revised version
tz
parents: 633
diff changeset
    74
magnification: aPoint
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
    75
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    76
    magnification ~= aPoint
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    77
    ifTrue:
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    78
    [
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    79
        magnification := aPoint asPoint.
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    80
        self scrollToTopLeft.
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    81
        self contentsChanged.
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    82
        self invalidate.
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    83
    ].
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
    84
!
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
    85
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    86
resourceClass
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    87
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    88
    ^resourceClass
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    89
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    90
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    91
resourceClass: aClassOrSymbol
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    92
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    93
    resourceClass := aClassOrSymbol isClass ifTrue: [aClassOrSymbol name] ifFalse: [aClassOrSymbol asSymbol].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    94
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    95
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    96
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    97
resourceMessage
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    98
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
    99
    ^resourceClass, ' ', resourceSelector
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   100
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   101
636
d53428252193 revised version
tz
parents: 633
diff changeset
   102
resourceMessage: aString
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   103
636
d53428252193 revised version
tz
parents: 633
diff changeset
   104
    (aString isString and: [aString trimBlanks size > 0])
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   105
    ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   106
    [
636
d53428252193 revised version
tz
parents: 633
diff changeset
   107
        resourceClass := (aString readStream upTo: Character space) asSymbol.
d53428252193 revised version
tz
parents: 633
diff changeset
   108
        resourceSelector := (aString copy reverse readStream upTo: Character space) reverse asSymbol.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   109
    ]
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   110
    ifFalse:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   111
    [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   112
        ^nil
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   113
    ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   114
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   115
   
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   116
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   117
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   118
resourceSelector
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   119
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   120
    ^resourceSelector
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   121
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   122
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   123
resourceSelector: aStringOrSymbol
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   124
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   125
    resourceSelector := aStringOrSymbol asSymbol
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   126
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   127
633
594edef86630 revised version
tz
parents: 632
diff changeset
   128
selectColor: anArrayTwoColors
594edef86630 revised version
tz
parents: 632
diff changeset
   129
594edef86630 revised version
tz
parents: 632
diff changeset
   130
    selectColors := anArrayTwoColors
594edef86630 revised version
tz
parents: 632
diff changeset
   131
!
594edef86630 revised version
tz
parents: 632
diff changeset
   132
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   133
selectedColor
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   134
633
594edef86630 revised version
tz
parents: 632
diff changeset
   135
   ^selectColors at: mouseKeyColorMode
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   136
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   137
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   138
selectedColor: aColor
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   139
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   140
    selectColors at: mouseKeyColorMode put: aColor
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   141
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   142
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   143
!ImageEditView methodsFor:'drawing'!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   144
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   145
redrawImageX:x y:y width:w height:h
636
d53428252193 revised version
tz
parents: 633
diff changeset
   146
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   147
    |ih iw dotW dotH minX maxX minY maxY color last lastY runW x0 xI yI maskColor|
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   148
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   149
    ih := image height.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   150
    iw := image width.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   151
    dotW := magnification x.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   152
    dotH := magnification y.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   153
633
594edef86630 revised version
tz
parents: 632
diff changeset
   154
    minX := x // dotW.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   155
    minX >= iw ifTrue:[minX := iw - 1].
633
594edef86630 revised version
tz
parents: 632
diff changeset
   156
    minY := y // dotH.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   157
    minY >= ih ifTrue:[minY := ih - 1].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   158
    maxX := (x + w) // dotW + 1.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   159
    maxX > iw ifTrue:[maxX := iw].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   160
    maxY := (y + h) // dotH + 1.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   161
    maxY > ih ifTrue:[maxY := ih].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   162
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   163
    lastY := -1.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   164
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   165
    x0 := minX.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   166
    runW := 0.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   167
    maskColor := false.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   168
    image colorsFromX:minX y:minY toX:maxX-1 y:maxY-1 do:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   169
    [:xx :yy :color|
633
594edef86630 revised version
tz
parents: 632
diff changeset
   170
        yy ~~ lastY
594edef86630 revised version
tz
parents: 632
diff changeset
   171
        ifTrue:
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   172
        [
633
594edef86630 revised version
tz
parents: 632
diff changeset
   173
            runW ~~ 0
594edef86630 revised version
tz
parents: 632
diff changeset
   174
            ifTrue:
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   175
            [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   176
                |origin|
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   177
                origin := (x0 * dotW + margin)@(lastY * dotH + margin).
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   178
                self fillRectangle: (origin extent: (runW@dotH)).                    
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   179
                0 to: runW by: dotW do: [:xxx| self drawFrameAt: ((origin x + xxx) @(origin y))].
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   180
                maskColor ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   181
                [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   182
                    self drawMaskPointAt: origin
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   183
                ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   184
                runW := 0.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   185
            ]. 
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   186
            x0 := xx.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   187
            lastY := yy.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   188
        ]. 
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   189
633
594edef86630 revised version
tz
parents: 632
diff changeset
   190
        color ~~ last
594edef86630 revised version
tz
parents: 632
diff changeset
   191
        ifTrue:
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   192
        [
633
594edef86630 revised version
tz
parents: 632
diff changeset
   193
            runW ~~ 0
594edef86630 revised version
tz
parents: 632
diff changeset
   194
            ifTrue:
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   195
            [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   196
                |origin|
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   197
                origin := (x0 * dotW + margin)@(yy * dotH + margin).
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   198
                self fillRectangle: (origin extent: (runW@dotH)).
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   199
                0 to: runW by: dotW do: [:xxx| self drawFrameAt: ((origin x + xxx)@(origin y))].
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   200
                maskColor ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   201
                [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   202
                    self drawMaskPointAt: origin
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   203
                ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   204
                runW := 0.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   205
            ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   206
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   207
            self paint: (last := color).
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   208
            image mask notNil ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   209
            [  
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   210
                maskColor := false.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   211
                (image mask colorAt: xx@yy) = Color black ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   212
                [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   213
                    self paint: (last := self viewBackground).
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   214
                    maskColor := true.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   215
                ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   216
                last := nil.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   217
            ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   218
            runW := 0.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   219
            x0 := xx.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   220
        ].  
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   221
        runW := runW + dotW
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   222
    ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   223
    runW ~~ 0 ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   224
    [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   225
        |origin|
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   226
        origin := (x0 * dotW + margin)@(lastY * dotH + margin).
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   227
        self fillRectangle: (origin extent: runW@dotH).
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   228
        0 to: runW by: dotW do: [:xxx| self drawFrameAt: ((origin x + xxx) @origin y)].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   229
        maskColor ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   230
        [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   231
            self drawMaskPointAt: origin.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   232
        ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   233
        runW := 0.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   234
    ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   235
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   236
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   237
redrawX:x y:y width:w height:h
636
d53428252193 revised version
tz
parents: 633
diff changeset
   238
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   239
    |ih iw xI yI|
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   240
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   241
    image isNil ifTrue:[^self].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   242
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   243
    self clippingRectangle: (x@y extent: w@h). 
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   244
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   245
    self redrawImageX:x y:y width:w height:h.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   246
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   247
    "/ right of image ?
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   248
    adjust == #center ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   249
    [
633
594edef86630 revised version
tz
parents: 632
diff changeset
   250
        xI := (width - ih) // 2 - margin.
594edef86630 revised version
tz
parents: 632
diff changeset
   251
        yI := (height - iw) // 2 - margin.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   252
    ]
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   253
    ifFalse:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   254
    [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   255
        xI := yI := margin
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   256
    ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   257
    (x + w - 1) > (xI + (magnification x * image width)) ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   258
    [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   259
        self clearRectangleX:(xI + (magnification x * image width))
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   260
                           y:y
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   261
                       width:(x + w - (magnification x * image width) - xI)
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   262
                      height:h
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   263
    ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   264
    (y + h - 1) > (yI + (magnification y * image height)) ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   265
    [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   266
        self clearRectangleX:margin
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   267
                           y:(yI + (magnification y * image height))
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   268
                       width:w
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   269
                      height:(y + h - (magnification y * image height) - yI)  
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   270
    ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   271
    self drawFrame.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   272
    self clippingRectangle: nil.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   273
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   274
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   275
!ImageEditView methodsFor:'edit modes'!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   276
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   277
editMode
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   278
636
d53428252193 revised version
tz
parents: 633
diff changeset
   279
    ^editMode ? (editMode := 'point')
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   280
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   281
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   282
editMode:aMode
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   283
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   284
    editMode := aMode
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   285
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   286
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   287
mouseKeyColorMode
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   288
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   289
    ^mouseKeyColorMode printString
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   290
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   291
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   292
mouseKeyColorMode:aMode
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   293
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   294
    mouseKeyColorMode := aMode asInteger
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   295
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   296
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   297
!ImageEditView methodsFor:'event handling'!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   298
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   299
buttonMotion:state x:x y:y
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   300
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   301
    self drawCursorAt: x@y.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   302
    self selectedColor notNil & image notNil & (self imageContainsPoint: x@y) & (editMode = 'point')
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   303
        ifTrue: [^self pointAt: x@y].
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   304
!
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
   305
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   306
buttonPress:button x:x y:y
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   307
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   308
    self drawCursorAt: x@y.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   309
    self selectedColor notNil & image notNil & (self imageContainsPoint: x@y)
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   310
    ifTrue:
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   311
    [    
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   312
        undoImage := image copy.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   313
        mouseKeyColorMode := button.
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   314
        self perform: (editMode, 'At:') asSymbol with: x@y.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   315
    ].
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   316
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   317
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   318
buttonRelease:state x:x y:y
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   319
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   320
    Cursor normal show
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   321
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   322
636
d53428252193 revised version
tz
parents: 633
diff changeset
   323
!ImageEditView methodsFor:'image editing'!
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   324
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   325
boxAt: aPoint
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   326
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   327
    |choosedBox|
636
d53428252193 revised version
tz
parents: 633
diff changeset
   328
    choosedBox := self drawRectangleStartingAt: aPoint emphasis: #box.
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   329
    image rectangle: (choosedBox origin//magnification extent: (choosedBox extent//magnification)) withColor: self selectedColor.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   330
    image restored.
636
d53428252193 revised version
tz
parents: 633
diff changeset
   331
    self redraw: (choosedBox expandedBy: 1).    
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   332
    modified := true.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   333
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   334
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   335
copyAt: aPoint
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   336
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   337
    |choosedBox|
636
d53428252193 revised version
tz
parents: 633
diff changeset
   338
    choosedBox := self drawRectangleStartingAt: aPoint emphasis: #inverseFilledBox.
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   339
    Clipboard := image subImageIn: (choosedBox origin//magnification extent: (choosedBox extent//magnification)).
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   340
    self redraw: choosedBox    
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   341
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   342
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   343
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   344
fillAt: aPoint
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   345
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   346
    Cursor execute showWhile:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   347
    [
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   348
        |filledPoints|
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   349
        filledPoints := image floodFillAt: aPoint//magnification withColor: self selectedColor.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   350
        image restored.
633
594edef86630 revised version
tz
parents: 632
diff changeset
   351
        filledPoints size < 300
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   352
        ifTrue:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   353
        [
636
d53428252193 revised version
tz
parents: 633
diff changeset
   354
            filledPoints do: [:p| Delay waitForMilliseconds:0.7. self redraw: ((p * magnification extent: magnification) expandedBy: 1)]
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   355
        ]
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   356
        ifFalse:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   357
        [
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   358
            self invalidate
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   359
        ].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   360
        modified := true
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   361
    ]
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   362
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   363
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   364
filledBoxAt: aPoint
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   365
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   366
    |choosedBox|
636
d53428252193 revised version
tz
parents: 633
diff changeset
   367
    choosedBox := self drawRectangleStartingAt: aPoint emphasis: #filledBox.
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   368
    image fillRectangle: (choosedBox origin//magnification extent: (choosedBox extent//magnification)) withColor: self selectedColor.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   369
    image restored.
636
d53428252193 revised version
tz
parents: 633
diff changeset
   370
    self redraw: (choosedBox expandedBy: 1).    
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   371
    modified := true.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   372
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   373
636
d53428252193 revised version
tz
parents: 633
diff changeset
   374
flipHorizontal
d53428252193 revised version
tz
parents: 633
diff changeset
   375
d53428252193 revised version
tz
parents: 633
diff changeset
   376
    undoImage := image copy.
d53428252193 revised version
tz
parents: 633
diff changeset
   377
    self image: image flipHorizontal
d53428252193 revised version
tz
parents: 633
diff changeset
   378
d53428252193 revised version
tz
parents: 633
diff changeset
   379
!
d53428252193 revised version
tz
parents: 633
diff changeset
   380
d53428252193 revised version
tz
parents: 633
diff changeset
   381
flipVertical
d53428252193 revised version
tz
parents: 633
diff changeset
   382
d53428252193 revised version
tz
parents: 633
diff changeset
   383
    undoImage := image copy.
d53428252193 revised version
tz
parents: 633
diff changeset
   384
    self image: image flipVertical
d53428252193 revised version
tz
parents: 633
diff changeset
   385
d53428252193 revised version
tz
parents: 633
diff changeset
   386
!
d53428252193 revised version
tz
parents: 633
diff changeset
   387
d53428252193 revised version
tz
parents: 633
diff changeset
   388
magnifyImage
d53428252193 revised version
tz
parents: 633
diff changeset
   389
d53428252193 revised version
tz
parents: 633
diff changeset
   390
    |box newSize|
d53428252193 revised version
tz
parents: 633
diff changeset
   391
    box := EnterBox new.
d53428252193 revised version
tz
parents: 633
diff changeset
   392
    box title:'Image new size:'.
d53428252193 revised version
tz
parents: 633
diff changeset
   393
    box okText:'OK'.
d53428252193 revised version
tz
parents: 633
diff changeset
   394
    box abortText:'Cancel'.
d53428252193 revised version
tz
parents: 633
diff changeset
   395
    box initialText:image extent printString.
d53428252193 revised version
tz
parents: 633
diff changeset
   396
    box showAtPointer.
d53428252193 revised version
tz
parents: 633
diff changeset
   397
    (box accepted and: [(newSize := Object readFromString: box contents onError:nil) notNil])
d53428252193 revised version
tz
parents: 633
diff changeset
   398
    ifTrue:
d53428252193 revised version
tz
parents: 633
diff changeset
   399
    [
d53428252193 revised version
tz
parents: 633
diff changeset
   400
        undoImage := image copy.
d53428252193 revised version
tz
parents: 633
diff changeset
   401
        self image: (image magnifiedBy: newSize/image extent)
d53428252193 revised version
tz
parents: 633
diff changeset
   402
    ].
d53428252193 revised version
tz
parents: 633
diff changeset
   403
!
d53428252193 revised version
tz
parents: 633
diff changeset
   404
d53428252193 revised version
tz
parents: 633
diff changeset
   405
negativeImage
d53428252193 revised version
tz
parents: 633
diff changeset
   406
d53428252193 revised version
tz
parents: 633
diff changeset
   407
    undoImage := image copy.
d53428252193 revised version
tz
parents: 633
diff changeset
   408
    self image: image negative
d53428252193 revised version
tz
parents: 633
diff changeset
   409
d53428252193 revised version
tz
parents: 633
diff changeset
   410
!
d53428252193 revised version
tz
parents: 633
diff changeset
   411
d53428252193 revised version
tz
parents: 633
diff changeset
   412
pasteAt: aPoint
d53428252193 revised version
tz
parents: 633
diff changeset
   413
d53428252193 revised version
tz
parents: 633
diff changeset
   414
    Object errorSignal handle:
d53428252193 revised version
tz
parents: 633
diff changeset
   415
    [:ex|
d53428252193 revised version
tz
parents: 633
diff changeset
   416
        self warn: 'Pasting at selected point failed!!'
d53428252193 revised version
tz
parents: 633
diff changeset
   417
    ] 
d53428252193 revised version
tz
parents: 633
diff changeset
   418
    do:
d53428252193 revised version
tz
parents: 633
diff changeset
   419
    [   
d53428252193 revised version
tz
parents: 633
diff changeset
   420
        |imagePoint|
d53428252193 revised version
tz
parents: 633
diff changeset
   421
        imagePoint := aPoint//magnification.
d53428252193 revised version
tz
parents: 633
diff changeset
   422
        image copyFrom: Clipboard x:0 y:0 toX: imagePoint x y: imagePoint y width: Clipboard width height: Clipboard height.
d53428252193 revised version
tz
parents: 633
diff changeset
   423
        image restored.
d53428252193 revised version
tz
parents: 633
diff changeset
   424
        self redraw: ((imagePoint * magnification extent: (Clipboard extent * magnification)) expandedBy: 1@1).
d53428252193 revised version
tz
parents: 633
diff changeset
   425
        self drawLabel: imagePoint.
d53428252193 revised version
tz
parents: 633
diff changeset
   426
        modified := true.
d53428252193 revised version
tz
parents: 633
diff changeset
   427
    ]
d53428252193 revised version
tz
parents: 633
diff changeset
   428
!
d53428252193 revised version
tz
parents: 633
diff changeset
   429
d53428252193 revised version
tz
parents: 633
diff changeset
   430
pointAt: aPoint
d53428252193 revised version
tz
parents: 633
diff changeset
   431
d53428252193 revised version
tz
parents: 633
diff changeset
   432
    |imagePoint|
d53428252193 revised version
tz
parents: 633
diff changeset
   433
    imagePoint := aPoint//magnification.
d53428252193 revised version
tz
parents: 633
diff changeset
   434
    image atImageAndMask: imagePoint put: self selectedColor.
d53428252193 revised version
tz
parents: 633
diff changeset
   435
    image restored.
d53428252193 revised version
tz
parents: 633
diff changeset
   436
    self redraw: ((imagePoint * magnification extent: magnification) expandedBy: 1).
d53428252193 revised version
tz
parents: 633
diff changeset
   437
    self drawLabel: imagePoint.
d53428252193 revised version
tz
parents: 633
diff changeset
   438
    modified := true.
d53428252193 revised version
tz
parents: 633
diff changeset
   439
d53428252193 revised version
tz
parents: 633
diff changeset
   440
!
d53428252193 revised version
tz
parents: 633
diff changeset
   441
d53428252193 revised version
tz
parents: 633
diff changeset
   442
resizeImage
d53428252193 revised version
tz
parents: 633
diff changeset
   443
d53428252193 revised version
tz
parents: 633
diff changeset
   444
    |box newSize|
d53428252193 revised version
tz
parents: 633
diff changeset
   445
    box := EnterBox new.
d53428252193 revised version
tz
parents: 633
diff changeset
   446
    box title:'Image new size:'.
d53428252193 revised version
tz
parents: 633
diff changeset
   447
    box okText:'OK'.
d53428252193 revised version
tz
parents: 633
diff changeset
   448
    box abortText:'Cancel'.
d53428252193 revised version
tz
parents: 633
diff changeset
   449
    box initialText:image extent printString.
d53428252193 revised version
tz
parents: 633
diff changeset
   450
    box showAtPointer.
d53428252193 revised version
tz
parents: 633
diff changeset
   451
    (box accepted and: [(newSize := Object readFromString: box contents onError:nil) notNil])
d53428252193 revised version
tz
parents: 633
diff changeset
   452
    ifTrue:
d53428252193 revised version
tz
parents: 633
diff changeset
   453
    [
d53428252193 revised version
tz
parents: 633
diff changeset
   454
        |newImage|
d53428252193 revised version
tz
parents: 633
diff changeset
   455
        undoImage := image copy.
d53428252193 revised version
tz
parents: 633
diff changeset
   456
        newImage := image class width: newSize x height: newSize y depth: image depth.
d53428252193 revised version
tz
parents: 633
diff changeset
   457
        newImage photometric:image photometric.
d53428252193 revised version
tz
parents: 633
diff changeset
   458
        newImage colorMap:image colorMap copy.
d53428252193 revised version
tz
parents: 633
diff changeset
   459
        newImage bits: (ByteArray new: newImage bytesPerRow * newSize y).
d53428252193 revised version
tz
parents: 633
diff changeset
   460
d53428252193 revised version
tz
parents: 633
diff changeset
   461
        image mask notNil
d53428252193 revised version
tz
parents: 633
diff changeset
   462
        ifTrue: 
d53428252193 revised version
tz
parents: 633
diff changeset
   463
        [
d53428252193 revised version
tz
parents: 633
diff changeset
   464
            |newMaskImage|
d53428252193 revised version
tz
parents: 633
diff changeset
   465
            newMaskImage := Depth1Image width: newSize x height: newSize y.
d53428252193 revised version
tz
parents: 633
diff changeset
   466
            newMaskImage photometric: image mask photometric.
d53428252193 revised version
tz
parents: 633
diff changeset
   467
            newMaskImage colorMap: image mask colorMap copy.
d53428252193 revised version
tz
parents: 633
diff changeset
   468
            newMaskImage bits:(ByteArray new: newMaskImage bytesPerRow * newSize y).
d53428252193 revised version
tz
parents: 633
diff changeset
   469
            newImage mask: newMaskImage
d53428252193 revised version
tz
parents: 633
diff changeset
   470
        ].
d53428252193 revised version
tz
parents: 633
diff changeset
   471
d53428252193 revised version
tz
parents: 633
diff changeset
   472
        newImage copyFrom:image x:0 y:0 toX:0 y:0 width: (image width min:newSize x) height: (image height min:newSize y).
d53428252193 revised version
tz
parents: 633
diff changeset
   473
        self image: newImage
d53428252193 revised version
tz
parents: 633
diff changeset
   474
    ].
d53428252193 revised version
tz
parents: 633
diff changeset
   475
!
d53428252193 revised version
tz
parents: 633
diff changeset
   476
d53428252193 revised version
tz
parents: 633
diff changeset
   477
rotateImage
d53428252193 revised version
tz
parents: 633
diff changeset
   478
d53428252193 revised version
tz
parents: 633
diff changeset
   479
    |box rotation|
d53428252193 revised version
tz
parents: 633
diff changeset
   480
    box := EnterBox new.
d53428252193 revised version
tz
parents: 633
diff changeset
   481
    box title:'Image new rotation:'.
d53428252193 revised version
tz
parents: 633
diff changeset
   482
    box okText:'OK'.
d53428252193 revised version
tz
parents: 633
diff changeset
   483
    box abortText:'Cancel'.
d53428252193 revised version
tz
parents: 633
diff changeset
   484
    box initialText: '0'.
d53428252193 revised version
tz
parents: 633
diff changeset
   485
    box showAtPointer.
d53428252193 revised version
tz
parents: 633
diff changeset
   486
    (box accepted and: [(rotation := Object readFromString: box contents onError:nil) notNil])
d53428252193 revised version
tz
parents: 633
diff changeset
   487
    ifTrue:
d53428252193 revised version
tz
parents: 633
diff changeset
   488
    [   Object errorSignal handle:
d53428252193 revised version
tz
parents: 633
diff changeset
   489
        [:ex|
d53428252193 revised version
tz
parents: 633
diff changeset
   490
            self warn: 'Image rotation failed.\' withCRs, 'An increase of image depth could help.'.
d53428252193 revised version
tz
parents: 633
diff changeset
   491
        ] 
d53428252193 revised version
tz
parents: 633
diff changeset
   492
        do:
d53428252193 revised version
tz
parents: 633
diff changeset
   493
        [   
d53428252193 revised version
tz
parents: 633
diff changeset
   494
            undoImage := image copy.
d53428252193 revised version
tz
parents: 633
diff changeset
   495
            self image: (image hardRotated: rotation)
d53428252193 revised version
tz
parents: 633
diff changeset
   496
        ]
d53428252193 revised version
tz
parents: 633
diff changeset
   497
    ].
d53428252193 revised version
tz
parents: 633
diff changeset
   498
!
d53428252193 revised version
tz
parents: 633
diff changeset
   499
d53428252193 revised version
tz
parents: 633
diff changeset
   500
undo
d53428252193 revised version
tz
parents: 633
diff changeset
   501
d53428252193 revised version
tz
parents: 633
diff changeset
   502
    undoImage notNil
d53428252193 revised version
tz
parents: 633
diff changeset
   503
    ifTrue:
d53428252193 revised version
tz
parents: 633
diff changeset
   504
    [
d53428252193 revised version
tz
parents: 633
diff changeset
   505
        modified := false.
d53428252193 revised version
tz
parents: 633
diff changeset
   506
        self image: undoImage.
d53428252193 revised version
tz
parents: 633
diff changeset
   507
        self invalidate
d53428252193 revised version
tz
parents: 633
diff changeset
   508
    ]
d53428252193 revised version
tz
parents: 633
diff changeset
   509
! !
d53428252193 revised version
tz
parents: 633
diff changeset
   510
d53428252193 revised version
tz
parents: 633
diff changeset
   511
!ImageEditView methodsFor:'image emphasis'!
d53428252193 revised version
tz
parents: 633
diff changeset
   512
d53428252193 revised version
tz
parents: 633
diff changeset
   513
drawCursorAt: aPoint
d53428252193 revised version
tz
parents: 633
diff changeset
   514
d53428252193 revised version
tz
parents: 633
diff changeset
   515
    image isNil ifTrue: [^Cursor stop show].
d53428252193 revised version
tz
parents: 633
diff changeset
   516
    ((0@0 extent: image extent * magnification) containsPoint: aPoint)
d53428252193 revised version
tz
parents: 633
diff changeset
   517
         ifFalse:[Cursor stop show]
d53428252193 revised version
tz
parents: 633
diff changeset
   518
         ifTrue: [Cursor crossHair show].
d53428252193 revised version
tz
parents: 633
diff changeset
   519
d53428252193 revised version
tz
parents: 633
diff changeset
   520
!
d53428252193 revised version
tz
parents: 633
diff changeset
   521
d53428252193 revised version
tz
parents: 633
diff changeset
   522
drawFrame
d53428252193 revised version
tz
parents: 633
diff changeset
   523
d53428252193 revised version
tz
parents: 633
diff changeset
   524
    self paint:Color black.
d53428252193 revised version
tz
parents: 633
diff changeset
   525
    self lineWidth: (magnification x//3 min: 3).
d53428252193 revised version
tz
parents: 633
diff changeset
   526
    self displayRectangle: ((0@0) extent:(image extent * magnification) + 2).
d53428252193 revised version
tz
parents: 633
diff changeset
   527
    self lineWidth:1.
d53428252193 revised version
tz
parents: 633
diff changeset
   528
!
d53428252193 revised version
tz
parents: 633
diff changeset
   529
d53428252193 revised version
tz
parents: 633
diff changeset
   530
drawFrameAt: aPoint
d53428252193 revised version
tz
parents: 633
diff changeset
   531
d53428252193 revised version
tz
parents: 633
diff changeset
   532
    magnification > gridMagnification
d53428252193 revised version
tz
parents: 633
diff changeset
   533
    ifTrue:
d53428252193 revised version
tz
parents: 633
diff changeset
   534
    [   
d53428252193 revised version
tz
parents: 633
diff changeset
   535
        |lineStartingPoint lineEndingPoint oldColor|
d53428252193 revised version
tz
parents: 633
diff changeset
   536
        lineStartingPoint := aPoint//magnification*magnification.
d53428252193 revised version
tz
parents: 633
diff changeset
   537
        lineEndingPoint   := aPoint//magnification*magnification + magnification.
d53428252193 revised version
tz
parents: 633
diff changeset
   538
        oldColor := self paint.
d53428252193 revised version
tz
parents: 633
diff changeset
   539
        self xoring:
d53428252193 revised version
tz
parents: 633
diff changeset
   540
        [
d53428252193 revised version
tz
parents: 633
diff changeset
   541
            self displayLineFrom: lineEndingPoint 
d53428252193 revised version
tz
parents: 633
diff changeset
   542
                              to: (lineEndingPoint x)@(lineStartingPoint y).
d53428252193 revised version
tz
parents: 633
diff changeset
   543
            self displayLineFrom: lineEndingPoint 
d53428252193 revised version
tz
parents: 633
diff changeset
   544
                              to: (lineStartingPoint x)@(lineEndingPoint y).
d53428252193 revised version
tz
parents: 633
diff changeset
   545
        ].
d53428252193 revised version
tz
parents: 633
diff changeset
   546
        self paint: oldColor.
d53428252193 revised version
tz
parents: 633
diff changeset
   547
    ]
d53428252193 revised version
tz
parents: 633
diff changeset
   548
!
d53428252193 revised version
tz
parents: 633
diff changeset
   549
d53428252193 revised version
tz
parents: 633
diff changeset
   550
drawLabel: aLabel
d53428252193 revised version
tz
parents: 633
diff changeset
   551
d53428252193 revised version
tz
parents: 633
diff changeset
   552
    coordInfoBlock notNil
d53428252193 revised version
tz
parents: 633
diff changeset
   553
    ifTrue:
d53428252193 revised version
tz
parents: 633
diff changeset
   554
    [         
d53428252193 revised version
tz
parents: 633
diff changeset
   555
        coordInfoBlock value: aLabel printString
d53428252193 revised version
tz
parents: 633
diff changeset
   556
    ]
d53428252193 revised version
tz
parents: 633
diff changeset
   557
!
d53428252193 revised version
tz
parents: 633
diff changeset
   558
d53428252193 revised version
tz
parents: 633
diff changeset
   559
drawMaskPointAt: aPoint
d53428252193 revised version
tz
parents: 633
diff changeset
   560
d53428252193 revised version
tz
parents: 633
diff changeset
   561
    |sizeOfMaskPoint|
d53428252193 revised version
tz
parents: 633
diff changeset
   562
    sizeOfMaskPoint := magnification//3.
d53428252193 revised version
tz
parents: 633
diff changeset
   563
    self xoring: [self fillRectangle: (aPoint + sizeOfMaskPoint extent: sizeOfMaskPoint)].
d53428252193 revised version
tz
parents: 633
diff changeset
   564
   
d53428252193 revised version
tz
parents: 633
diff changeset
   565
!
d53428252193 revised version
tz
parents: 633
diff changeset
   566
d53428252193 revised version
tz
parents: 633
diff changeset
   567
drawRectangleStartingAt: aPoint emphasis: emphasis
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   568
633
594edef86630 revised version
tz
parents: 632
diff changeset
   569
    |currentPoint currentExtent firstPoint lastCurrentPoint gridCorrection p|
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   570
    firstPoint := currentPoint := lastCurrentPoint := aPoint//magnification*magnification.
636
d53428252193 revised version
tz
parents: 633
diff changeset
   571
    magnification > gridMagnification ifFalse: [gridCorrection := 0] ifTrue: [gridCorrection := 1].
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   572
    [Display anyButtonPressed]
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   573
    whileTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   574
    [   
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   575
        currentPoint := (0@0) max: (image extent * magnification min: (p := self translation negated + (device translatePoint: self sensor mousePoint from:device rootView id to:self id))).
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   576
        currentPoint := currentPoint//magnification*magnification.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   577
        currentExtent := (firstPoint - currentPoint) abs.
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   578
        self drawCursorAt: p.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   579
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   580
        currentPoint ~= lastCurrentPoint ifTrue:
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   581
        [          
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   582
            self redraw: ((firstPoint min: lastCurrentPoint) - 1 extent: (firstPoint - lastCurrentPoint) abs + 2).
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   583
            emphasis = #inverseFilledBox
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   584
            ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   585
            [
633
594edef86630 revised version
tz
parents: 632
diff changeset
   586
                self xoring: [self fillRectangle: ((firstPoint min: currentPoint) + 1 extent: currentExtent - gridCorrection)]
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   587
            ].
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   588
            emphasis = #box
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   589
            ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   590
            [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   591
                self selectedColor ~= Color noColor
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   592
                    ifTrue: [self paint: self selectedColor]
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   593
                    ifFalse: [self paint: self viewBackground].
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   594
                self lineWidth: magnification x.
633
594edef86630 revised version
tz
parents: 632
diff changeset
   595
                self displayRectangle: ((firstPoint min: currentPoint) + (magnification x//2) + 1 extent: (currentExtent - (magnification x)) - gridCorrection + 1).
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   596
                self lineWidth: 1.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   597
            ].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   598
            emphasis = #filledBox
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   599
            ifTrue:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   600
            [
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   601
                self selectedColor ~= Color noColor
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   602
                    ifTrue: [self paint: self selectedColor]
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   603
                    ifFalse: [self paint: self viewBackground].
633
594edef86630 revised version
tz
parents: 632
diff changeset
   604
                self fillRectangle: ((firstPoint min: currentPoint) + 1 extent: currentExtent - gridCorrection).
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   605
            ].
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   606
        ]. 
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   607
        self drawLabel: currentPoint//magnification.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   608
        lastCurrentPoint := currentPoint.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   609
    ].
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   610
    Cursor normal show.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   611
    ^(firstPoint min: currentPoint) extent: (firstPoint - currentPoint) abs
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   612
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   613
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   614
!ImageEditView methodsFor:'image setting'!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   615
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   616
image:anImage
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   617
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   618
    (anImage isImage and: [image isNil or: [self checkModified]])
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   619
    ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   620
    [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   621
        super image: anImage.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   622
        ^self
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   623
    ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   624
    ^nil
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   625
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   626
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   627
loadFromFile: aFileName
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   628
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   629
    Object errorSignal handle:
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   630
    [:exeption|
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   631
        self warn: exeption errorString.
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   632
        ^nil
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   633
    ] 
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   634
    do:
633
594edef86630 revised version
tz
parents: 632
diff changeset
   635
    [  
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   636
        (self image: (Image fromFile: aFileName)) notNil
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   637
        ifTrue:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   638
        [
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   639
            imageReaderClass := ImageReader allSubclasses
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   640
                detect: [:cls| cls isValidImageFile: aFileName]
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   641
                ifNone: [self error: 'Unknown image file format!!']
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   642
        ]
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   643
        ifFalse:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   644
        [
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   645
            self error: 'Image on file not found!!'
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   646
        ]
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   647
    ] 
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   648
!
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
   649
633
594edef86630 revised version
tz
parents: 632
diff changeset
   650
loadFromMessage: aMessage
594edef86630 revised version
tz
parents: 632
diff changeset
   651
594edef86630 revised version
tz
parents: 632
diff changeset
   652
    (self resourceMessage: aMessage) isNil
594edef86630 revised version
tz
parents: 632
diff changeset
   653
    ifTrue:
594edef86630 revised version
tz
parents: 632
diff changeset
   654
    [
594edef86630 revised version
tz
parents: 632
diff changeset
   655
        ^nil
594edef86630 revised version
tz
parents: 632
diff changeset
   656
    ].
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   657
633
594edef86630 revised version
tz
parents: 632
diff changeset
   658
    ^self loadfromClass: resourceClass andSelector: resourceSelector
594edef86630 revised version
tz
parents: 632
diff changeset
   659
594edef86630 revised version
tz
parents: 632
diff changeset
   660
   
594edef86630 revised version
tz
parents: 632
diff changeset
   661
!
594edef86630 revised version
tz
parents: 632
diff changeset
   662
594edef86630 revised version
tz
parents: 632
diff changeset
   663
loadfromClass: aClassOrSymbol andSelector: aStringOrSymbol
594edef86630 revised version
tz
parents: 632
diff changeset
   664
594edef86630 revised version
tz
parents: 632
diff changeset
   665
    |aClass|       
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   666
    imageReaderClass := nil.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   667
    self resourceClass: aClassOrSymbol.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   668
    self resourceSelector: aStringOrSymbol.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   669
    aClass := Smalltalk at: resourceClass. 
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   670
    (aClass isClass and: [aClass class implements: resourceSelector])
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   671
    ifTrue:
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   672
    [ 
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   673
        ^self image: (aClass perform: resourceSelector) copy
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   674
    ].
633
594edef86630 revised version
tz
parents: 632
diff changeset
   675
    self warn: 'No class or selector for evaluation detected!!'.
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   676
    ^nil
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   677
! !
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   678
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
   679
!ImageEditView methodsFor:'initialization'!
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
   680
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   681
initialize
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   682
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   683
    super initialize.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   684
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   685
    magnification := 1@1.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   686
    gridMagnification := 8@8.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   687
    modified := false.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   688
    mouseKeyColorMode := 1.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   689
    resourceClass := resourceSelector := ''.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   690
    selectColors := Array with: nil with: nil.
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
   691
! !
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
   692
636
d53428252193 revised version
tz
parents: 633
diff changeset
   693
!ImageEditView methodsFor:'printing & storing'!
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
   694
636
d53428252193 revised version
tz
parents: 633
diff changeset
   695
loadFromInClassesOf: aSuperclassOrSymbol
404
322e32d8f099 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 398
diff changeset
   696
636
d53428252193 revised version
tz
parents: 633
diff changeset
   697
    self loadFromMessage: 
d53428252193 revised version
tz
parents: 633
diff changeset
   698
        (ResourceSelectionBrowser
d53428252193 revised version
tz
parents: 633
diff changeset
   699
            request: 'Load From Image Resource Method'
d53428252193 revised version
tz
parents: 633
diff changeset
   700
            onSuperclass: aSuperclassOrSymbol
d53428252193 revised version
tz
parents: 633
diff changeset
   701
            andClass: self resourceClass
d53428252193 revised version
tz
parents: 633
diff changeset
   702
            andSelector: self resourceSelector
d53428252193 revised version
tz
parents: 633
diff changeset
   703
            withResourceTypes: #(image fileImage))
d53428252193 revised version
tz
parents: 633
diff changeset
   704
            
477
37f12d35c359 added #resize.
Claus Gittinger <cg@exept.de>
parents: 430
diff changeset
   705
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   706
!
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   707
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   708
print
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   709
636
d53428252193 revised version
tz
parents: 633
diff changeset
   710
    |stream|
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   711
    image isNil ifTrue: [^nil].
636
d53428252193 revised version
tz
parents: 633
diff changeset
   712
    Printer supportsPostscript ifFalse:
d53428252193 revised version
tz
parents: 633
diff changeset
   713
    [
d53428252193 revised version
tz
parents: 633
diff changeset
   714
        ^self warn:'No postscript printer detected!!'
362
c8d268d3f431 added 'print' item to menu
Claus Gittinger <cg@exept.de>
parents: 353
diff changeset
   715
    ].
c8d268d3f431 added 'print' item to menu
Claus Gittinger <cg@exept.de>
parents: 353
diff changeset
   716
    stream := Printer newNative.
636
d53428252193 revised version
tz
parents: 633
diff changeset
   717
    stream isNil ifTrue:
d53428252193 revised version
tz
parents: 633
diff changeset
   718
    [
d53428252193 revised version
tz
parents: 633
diff changeset
   719
        ^self warn:'Cannot open printer stream!!'.
362
c8d268d3f431 added 'print' item to menu
Claus Gittinger <cg@exept.de>
parents: 353
diff changeset
   720
    ].
636
d53428252193 revised version
tz
parents: 633
diff changeset
   721
    self withWaitCursorDo:
d53428252193 revised version
tz
parents: 633
diff changeset
   722
    [
d53428252193 revised version
tz
parents: 633
diff changeset
   723
        |psgc|
d53428252193 revised version
tz
parents: 633
diff changeset
   724
        psgc := PSGraphicsContext on:stream.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   725
        psgc displayForm: (image magnifiedBy: magnification) x:0 y:0.
398
7b7255a4db0d show a wait cursor while printing
Claus Gittinger <cg@exept.de>
parents: 362
diff changeset
   726
        psgc close.
7b7255a4db0d show a wait cursor while printing
Claus Gittinger <cg@exept.de>
parents: 362
diff changeset
   727
    ]
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   728
!
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   729
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   730
save
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   731
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   732
    self saveImageOrMask: #image.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   733
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   734
!
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   735
297
d733af1b0ffe better saving functions;
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   736
saveAs
d733af1b0ffe better saving functions;
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   737
    "save contents into a file 
d733af1b0ffe better saving functions;
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   738
     - ask user for filename using a fileSelectionBox."
d733af1b0ffe better saving functions;
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   739
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   740
    self saveImageFileAs
297
d733af1b0ffe better saving functions;
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   741
!
d733af1b0ffe better saving functions;
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   742
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   743
saveImageFileAs
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   744
633
594edef86630 revised version
tz
parents: 632
diff changeset
   745
    self saveImageFileAs:
594edef86630 revised version
tz
parents: 632
diff changeset
   746
        (FileSelectionBrowser
636
d53428252193 revised version
tz
parents: 633
diff changeset
   747
            request: 'Save Image As'
d53428252193 revised version
tz
parents: 633
diff changeset
   748
            fileName: self image fileName
633
594edef86630 revised version
tz
parents: 632
diff changeset
   749
            fileFilters: FileSelectionBrowser saveImageFileNameFilters)
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   750
!
297
d733af1b0ffe better saving functions;
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   751
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   752
saveImageFileAs: aFileName
297
d733af1b0ffe better saving functions;
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   753
633
594edef86630 revised version
tz
parents: 632
diff changeset
   754
    aFileName isNil ifTrue: [^nil].
636
d53428252193 revised version
tz
parents: 633
diff changeset
   755
    image notNil
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   756
    ifTrue:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   757
    [
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   758
        image fileName: aFileName.
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   759
        self saveImageOrMask: #image
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   760
    ]
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   761
    ifFalse:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   762
    [
633
594edef86630 revised version
tz
parents: 632
diff changeset
   763
        self warn: 'No image or file name for saving detected!!'
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   764
    ]
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   765
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   766
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   767
saveImageMaskFileAs
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   768
633
594edef86630 revised version
tz
parents: 632
diff changeset
   769
    self saveImageMaskFileAs:
636
d53428252193 revised version
tz
parents: 633
diff changeset
   770
        (FileSelectionBrowser
d53428252193 revised version
tz
parents: 633
diff changeset
   771
            request: 'Save Image Mask As'
d53428252193 revised version
tz
parents: 633
diff changeset
   772
            fileName: self image fileName 
633
594edef86630 revised version
tz
parents: 632
diff changeset
   773
            fileFilters: FileSelectionBrowser saveImageFileNameFilters)
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   774
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   775
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   776
saveImageMaskFileAs: aFileName
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   777
633
594edef86630 revised version
tz
parents: 632
diff changeset
   778
    aFileName isNil ifTrue: [^nil].
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   779
    (image notNil and: [image mask notNil])
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   780
    ifTrue:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   781
    [
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   782
        image mask fileName: aFileName.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   783
        self saveImageOrMask: #mask
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   784
    ]
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   785
    ifFalse:
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   786
    [
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   787
        self warn: 'No image or image mask detected!!'
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   788
    ]
628
7f36d8a7735f popup menu starts image editor
tz
parents: 627
diff changeset
   789
!
7f36d8a7735f popup menu starts image editor
tz
parents: 627
diff changeset
   790
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   791
saveImageOrMask: what
628
7f36d8a7735f popup menu starts image editor
tz
parents: 627
diff changeset
   792
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   793
    Object errorSignal handle:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   794
    [:ex|
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   795
        self warn: ex errorString.
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   796
        ^nil                                 
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   797
    ] 
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   798
    do:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   799
    [   
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   800
        |fileName|
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   801
        image isNil ifTrue: [^self error: 'No image to save!!'].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   802
        what = #image
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   803
        ifTrue:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   804
        [   
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   805
            image fileName isNil ifTrue: [^self error: 'No file name for image detected!!'].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   806
            fileName := image fileName asFilename
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   807
        ].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   808
        what = #mask
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   809
        ifTrue:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   810
        [   
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   811
            image mask isNil ifTrue: [^self error: 'No image mask to save!!'].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   812
            image mask fileName isNil ifTrue: [^self error: 'No file name for image mask detected!!'].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   813
            fileName := image mask fileName asFilename
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   814
        ].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   815
        (fileName suffix = 'tiff') | (fileName suffix = 'tif') ifTrue: [imageReaderClass := TIFFReader].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   816
        fileName suffix = 'xpm' ifTrue: [imageReaderClass := XPMReader].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   817
        fileName suffix = 'xbm' ifTrue: [imageReaderClass := XBMReader].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   818
        fileName suffix = 'gif' ifTrue: [self halt. imageReaderClass := GIFReader].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   819
        (fileName suffix = 'jpg') | (fileName suffix = 'jpeg') ifTrue: [imageReaderClass := JPEGReader].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   820
        imageReaderClass isNil ifTrue: [imageReaderClass := XPMReader. image fileName: image fileName, '.xpm'].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   821
        what = #image ifTrue: [image saveOn: image fileName using: imageReaderClass. modified := false].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   822
        what = #mask ifTrue: [image mask saveOn: image mask fileName using: imageReaderClass].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   823
    ]
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   824
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   825
       
633
594edef86630 revised version
tz
parents: 632
diff changeset
   826
!
594edef86630 revised version
tz
parents: 632
diff changeset
   827
594edef86630 revised version
tz
parents: 632
diff changeset
   828
saveMethod
594edef86630 revised version
tz
parents: 632
diff changeset
   829
594edef86630 revised version
tz
parents: 632
diff changeset
   830
    Object errorSignal handle:
594edef86630 revised version
tz
parents: 632
diff changeset
   831
    [:ex|
594edef86630 revised version
tz
parents: 632
diff changeset
   832
        self warn: ex errorString.
594edef86630 revised version
tz
parents: 632
diff changeset
   833
        ^nil                                 
594edef86630 revised version
tz
parents: 632
diff changeset
   834
    ] 
594edef86630 revised version
tz
parents: 632
diff changeset
   835
    do:
594edef86630 revised version
tz
parents: 632
diff changeset
   836
    [   
594edef86630 revised version
tz
parents: 632
diff changeset
   837
        |imageStoreStream cls|  
594edef86630 revised version
tz
parents: 632
diff changeset
   838
        (self resourceSelector trimBlanks size = 0) | (cls := Smalltalk at: self resourceClass) isClass not 
594edef86630 revised version
tz
parents: 632
diff changeset
   839
            ifTrue: [^self error: 'No class and selector for image detected!!'].
594edef86630 revised version
tz
parents: 632
diff changeset
   840
        self image storeOn: (imageStoreStream := WriteStream on: '').
594edef86630 revised version
tz
parents: 632
diff changeset
   841
        ByteCodeCompiler 
594edef86630 revised version
tz
parents: 632
diff changeset
   842
            compile: (self resourceSelector,
594edef86630 revised version
tz
parents: 632
diff changeset
   843
                '\' withCRs, '    "ImageEditor openOnClass:self andSelector:#', self resourceSelector, '"',
594edef86630 revised version
tz
parents: 632
diff changeset
   844
                '\\' withCRs, '    <resource: #image>\' withCRs, '    ^', imageStoreStream contents)
594edef86630 revised version
tz
parents: 632
diff changeset
   845
            forClass: cls class inCategory: 'resources'.
594edef86630 revised version
tz
parents: 632
diff changeset
   846
        modified := false.
594edef86630 revised version
tz
parents: 632
diff changeset
   847
    ]
594edef86630 revised version
tz
parents: 632
diff changeset
   848
!
594edef86630 revised version
tz
parents: 632
diff changeset
   849
594edef86630 revised version
tz
parents: 632
diff changeset
   850
saveMethodAs
594edef86630 revised version
tz
parents: 632
diff changeset
   851
636
d53428252193 revised version
tz
parents: 633
diff changeset
   852
    (self resourceMessage:
d53428252193 revised version
tz
parents: 633
diff changeset
   853
        (ResourceSelectionBrowser
d53428252193 revised version
tz
parents: 633
diff changeset
   854
            request: 'Save On Image Resource Selector'
d53428252193 revised version
tz
parents: 633
diff changeset
   855
            onSuperclass: #ApplicationModel
d53428252193 revised version
tz
parents: 633
diff changeset
   856
            andClass: self resourceClass
d53428252193 revised version
tz
parents: 633
diff changeset
   857
            andSelector: self resourceSelector
d53428252193 revised version
tz
parents: 633
diff changeset
   858
            withResourceTypes: #(image fileImage))) notNil
633
594edef86630 revised version
tz
parents: 632
diff changeset
   859
    ifTrue:
594edef86630 revised version
tz
parents: 632
diff changeset
   860
    [
594edef86630 revised version
tz
parents: 632
diff changeset
   861
        ^self saveMethod
594edef86630 revised version
tz
parents: 632
diff changeset
   862
    ].
594edef86630 revised version
tz
parents: 632
diff changeset
   863
    ^nil
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
   864
! !
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
   865
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   866
!ImageEditView methodsFor:'queries'!
5
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
   867
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   868
heightOfContents
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   869
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   870
    image isNil ifTrue:[^ 0].
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   871
    ^ (image height * magnification y) rounded
5
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
   872
!
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
   873
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   874
imageContainsPoint: aPoint
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   875
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   876
    ^image notNil and:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   877
        [((0@0 corner:(image extent) - 1) containsPoint: (((aPoint - margin + 1) / magnification) floor))]
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   878
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   879
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   880
widthOfContents
5
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
   881
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   882
    image isNil ifTrue:[^ 0].
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   883
    ^ (image width * magnification x) rounded
5
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
   884
! !
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
   885
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   886
!ImageEditView methodsFor:'release'!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   887
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   888
destroy
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   889
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   890
    undoImage := nil.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   891
    Clipboard := nil.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   892
    super destroy.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   893
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   894
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   895
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   896
!ImageEditView methodsFor:'testing'!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   897
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   898
checkModified
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   899
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   900
    modified
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   901
    ifTrue:
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   902
    [
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   903
        ((YesNoBox title:'Image was modified!!')        
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   904
            noText:'Cancel';
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   905
            yesText:'Waste it and proceed';
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   906
            showAtPointer;
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   907
            accepted) ifFalse: [^false].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   908
        modified := false
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   909
    ].
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   910
    ^true
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   911
! !
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   912
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
   913
!ImageEditView class methodsFor:'documentation'!
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   914
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   915
version
636
d53428252193 revised version
tz
parents: 633
diff changeset
   916
    ^ '$Header: /cvs/stx/stx/libwidg2/ImageEditView.st,v 1.53 1997-12-21 21:59:57 tz Exp $'
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   917
! !