ImageEditView.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 02 Sep 2022 11:25:39 +0100
branchjv
changeset 6261 9b7eb7159d29
parent 5432 6f103b797668
child 5434 29822bceb67d
permissions -rw-r--r--
Fix loong standing bug with some menus not being translated / resolved This has happened with browser "View" menu when sometimes it had the slice resolved and sometimes not. It turned out that it was because the code disabled resources (and therefore slices) resolution when processing shortcuts, so the menu was created and cached unresolved. This fixes the issue. eXept apparently run into the same problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
636
d53428252193 revised version
tz
parents: 633
diff changeset
     1
"
704
01140e14c065 Fix copyright.
Stefan Vogel <sv@exept.de>
parents: 694
diff changeset
     2
 COPYRIGHT (c) 1997 by eXept Software AG
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
     3
	      All Rights Reserved
636
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
"
1763
7d6d64622ee4 change & updates fixed (monochrome bitmaps)
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
    12
"{ Package: 'stx:libwidg2' }"
7d6d64622ee4 change & updates fixed (monochrome bitmaps)
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
    13
4714
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
    14
"{ NameSpace: Smalltalk }"
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
    15
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
    16
ImageView subclass:#ImageEditView
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
    17
	instanceVariableNames:'readOnly magnification imageReaderClass resourceClass
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
    18
		resourceSelector mouseKeyColorMode undoImages modifiedHolder
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
    19
		editMode lastPastePoint imageInfoHolder activityInfoHolder
2747
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
    20
		pickedColorHolder drawingColors drawingPixels drawingColorHolders
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
    21
		drawingPixelHolders clickInfoCallBack penWidth sprayProcess
3730
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
    22
		sprayPosition spraySpot drawingAlpha'
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
    23
	classVariableNames:'Clipboard ClipboardMagnified LastMagnification
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    24
		GridMagnificationLimit MaxUndos LastSaveDirectory LastSaveClass
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    25
		EditModePoint EditModeBox EditModeFilledBox EditModeFill
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    26
		EditModeCopy EditModePasteUnder EditModePaste
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
    27
		EditModePasteWithMask EditModeSpecialOperation EditModeSpray
4715
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
    28
		EditModeCircle EditModeSmooth'
1035
5da83bdbd65e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1031
diff changeset
    29
	poolDictionaries:''
1706
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
    30
	category:'Views-Misc'
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
    31
!
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
    32
636
d53428252193 revised version
tz
parents: 633
diff changeset
    33
!ImageEditView class methodsFor:'documentation'!
d53428252193 revised version
tz
parents: 633
diff changeset
    34
d53428252193 revised version
tz
parents: 633
diff changeset
    35
copyright
d53428252193 revised version
tz
parents: 633
diff changeset
    36
"
704
01140e14c065 Fix copyright.
Stefan Vogel <sv@exept.de>
parents: 694
diff changeset
    37
 COPYRIGHT (c) 1997 by eXept Software AG
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
    38
	      All Rights Reserved
636
d53428252193 revised version
tz
parents: 633
diff changeset
    39
d53428252193 revised version
tz
parents: 633
diff changeset
    40
 This software is furnished under a license and may be used
d53428252193 revised version
tz
parents: 633
diff changeset
    41
 only in accordance with the terms of that license and with the
d53428252193 revised version
tz
parents: 633
diff changeset
    42
 inclusion of the above copyright notice. This software may not
d53428252193 revised version
tz
parents: 633
diff changeset
    43
 be provided or otherwise made available to, or used by, any
d53428252193 revised version
tz
parents: 633
diff changeset
    44
 other person. No title to or ownership of the software is
d53428252193 revised version
tz
parents: 633
diff changeset
    45
 hereby transferred.
d53428252193 revised version
tz
parents: 633
diff changeset
    46
"
d53428252193 revised version
tz
parents: 633
diff changeset
    47
!
d53428252193 revised version
tz
parents: 633
diff changeset
    48
d53428252193 revised version
tz
parents: 633
diff changeset
    49
documentation
d53428252193 revised version
tz
parents: 633
diff changeset
    50
"
2747
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
    51
    An ImageEditView is a view which can be used by applications
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
    52
    like the Image Editor for editing or inspecting (bitmap-) images.
636
d53428252193 revised version
tz
parents: 633
diff changeset
    53
d53428252193 revised version
tz
parents: 633
diff changeset
    54
    [see also:]
2747
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
    55
        ImageEditor Image
636
d53428252193 revised version
tz
parents: 633
diff changeset
    56
d53428252193 revised version
tz
parents: 633
diff changeset
    57
    [author:]
2747
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
    58
        Thomas Zwick
636
d53428252193 revised version
tz
parents: 633
diff changeset
    59
"
d53428252193 revised version
tz
parents: 633
diff changeset
    60
! !
353
0442fc169b82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 322
diff changeset
    61
1245
68581e6aaf23 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1228
diff changeset
    62
!ImageEditView class methodsFor:'initialization'!
68581e6aaf23 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1228
diff changeset
    63
68581e6aaf23 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1228
diff changeset
    64
initialize
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
    65
    MaxUndos := 10.
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
    66
    GridMagnificationLimit := 6 @ 6.
1245
68581e6aaf23 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1228
diff changeset
    67
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    68
    EditModePoint := #point.
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    69
    EditModeBox := #box.
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
    70
    EditModeCircle := #circle.
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    71
    EditModePaste := #paste.
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    72
    EditModePasteUnder := #pasteUnder.
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    73
    EditModePasteWithMask := #pasteWithMask.
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    74
    EditModeFilledBox := #filledBox.
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    75
    EditModeFill := #fill.
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    76
    EditModeCopy := #copy.
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    77
    EditModeSpecialOperation := #specialOperation.
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
    78
    EditModeSpray := #spray.
4715
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
    79
    EditModeSmooth := #smooth.
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    80
1245
68581e6aaf23 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1228
diff changeset
    81
    "
68581e6aaf23 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1228
diff changeset
    82
     self initialize
68581e6aaf23 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1228
diff changeset
    83
    "
68581e6aaf23 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1228
diff changeset
    84
! !
68581e6aaf23 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1228
diff changeset
    85
1706
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
    86
!ImageEditView class methodsFor:'accessing'!
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
    87
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    88
editModeBox
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    89
    ^ EditModeBox
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    90
!
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    91
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    92
editModeCopy
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    93
    ^ EditModeCopy
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    94
!
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    95
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    96
editModeFill
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    97
    ^ EditModeFill
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    98
!
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
    99
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   100
editModeFilledBox
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   101
    ^ EditModeFilledBox
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   102
!
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   103
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   104
editModePaste
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   105
    ^ EditModePaste
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   106
!
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   107
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   108
editModePasteUnder
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   109
    ^ EditModePasteUnder
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   110
!
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   111
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   112
editModePasteWithMask
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   113
    ^ EditModePasteWithMask
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   114
!
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   115
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   116
editModePoint
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   117
    ^ EditModePoint
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   118
!
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   119
4715
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
   120
editModeSmooth
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
   121
    ^ EditModeSmooth
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
   122
!
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
   123
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   124
editModeSpecialOperation
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   125
    ^ EditModeSpecialOperation
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   126
!
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   127
1706
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   128
gridMagnificationLimit
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   129
    ^ GridMagnificationLimit
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   130
!
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   131
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   132
gridMagnificationLimit:anInteger
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   133
    GridMagnificationLimit := anInteger
3980
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   134
!
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   135
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   136
lastSaveDirectory
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   137
    ^ LastSaveDirectory
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   138
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   139
    "Created: / 14-12-2010 / 14:49:01 / cg"
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   140
!
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   141
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   142
lastSaveDirectory:aStringOrFilename
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   143
    LastSaveDirectory := aStringOrFilename
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   144
Claus Gittinger <cg@exept.de>
parents: 3972
diff changeset
   145
    "Created: / 14-12-2010 / 14:49:18 / cg"
1706
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   146
! !
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   147
2480
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
   148
!ImageEditView class methodsFor:'helpers'!
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
   149
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
   150
copyImageToClipboard:copiedImage
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
   151
    ClipboardMagnified := nil.
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
   152
    Clipboard := copiedImage.
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
   153
! !
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
   154
2634
dc5098a445d4 resources
Claus Gittinger <cg@exept.de>
parents: 2591
diff changeset
   155
!ImageEditView class methodsFor:'resources'!
dc5098a445d4 resources
Claus Gittinger <cg@exept.de>
parents: 2591
diff changeset
   156
dc5098a445d4 resources
Claus Gittinger <cg@exept.de>
parents: 2591
diff changeset
   157
classResources
dc5098a445d4 resources
Claus Gittinger <cg@exept.de>
parents: 2591
diff changeset
   158
    ^ ImageEditor classResources
dc5098a445d4 resources
Claus Gittinger <cg@exept.de>
parents: 2591
diff changeset
   159
! !
dc5098a445d4 resources
Claus Gittinger <cg@exept.de>
parents: 2591
diff changeset
   160
7
19b36b78ee01 *** empty log message ***
claus
parents: 5
diff changeset
   161
!ImageEditView methodsFor:'accessing'!
19b36b78ee01 *** empty log message ***
claus
parents: 5
diff changeset
   162
1031
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   163
activityInfoHolder
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   164
    "return the value of the instance variable 'activityInfoHolder' (automatically generated)"
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   165
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   166
    ^ activityInfoHolder
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   167
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   168
    "Created: / 29.7.1998 / 18:49:39 / cg"
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   169
!
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   170
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   171
activityInfoHolder:something
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   172
    "set the value of the instance variable 'activityInfoHolder' (automatically generated)"
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   173
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   174
    activityInfoHolder := something.
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   175
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   176
    "Created: / 29.7.1998 / 18:49:39 / cg"
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   177
!
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   178
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
   179
clearModified
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   180
    self modified:false
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
   181
!
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
   182
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   183
clickInfoCallBack:aTwoArgBlock
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   184
     clickInfoCallBack := aTwoArgBlock
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   185
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   186
    "Created: / 10.2.2000 / 23:07:14 / cg"
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   187
!
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   188
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
   189
clipBoard
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   190
    |clipboardObject|
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   191
    
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   192
    clipboardObject := self getClipboardObject.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   193
    clipboardObject isImage ifTrue:[
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   194
        ^ clipboardObject
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   195
    ].
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   196
    ^ Clipboard.
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
   197
!
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
   198
3610
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   199
drawingColorHolders
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   200
    ^ drawingColorHolders
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   201
!
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   202
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   203
drawingColors
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   204
    ^ drawingColorHolders collect:[:each | each value].
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   205
!
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   206
2009
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
   207
drawingColors:anArrayTwoColors
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
   208
    (drawingColorHolders at:1) value:(anArrayTwoColors at:1).
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
   209
    (drawingColorHolders at:2) value:(anArrayTwoColors at:2).
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
   210
!
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
   211
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   212
image:anImage scroll:doScroll
3706
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
   213
    self image:anImage scroll:doScroll invalidate:true
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
   214
!
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
   215
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
   216
image:anImage scroll:doScroll invalidate:doInvalidate
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   217
    |retVal fileName|
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   218
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   219
    anImage isImage ifTrue:[           
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   220
        true "(image isNil or: [self checkModified])" ifTrue: [
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   221
            image notNil ifTrue: [
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   222
                fileName := image fileName.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   223
                anImage fileName isNil ifTrue: [anImage fileName: fileName].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   224
            ].
3706
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
   225
            super image:anImage scroll:doScroll invalidate:doInvalidate.
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   226
            retVal := self.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   227
        ].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   228
    ] ifFalse: [
3706
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
   229
        super image:nil scroll:true invalidate:doInvalidate.
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   230
    ].
3706
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
   231
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   232
    "/ self changed:#image.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   233
    image isNil ifTrue:[
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   234
        self clearModified.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   235
    ] ifFalse:[
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   236
        self setModified.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   237
    ].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   238
    self updateImageInfo: self imageInfoString. 
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   239
    ^ retVal
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   240
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   241
    "Modified: / 10.2.2000 / 23:33:12 / cg"
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   242
!
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   243
1031
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   244
imageInfoHolder
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   245
    ^ imageInfoHolder
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   246
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   247
    "Created: / 29.7.1998 / 18:29:50 / cg"
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   248
!
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   249
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   250
imageInfoHolder:something
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   251
    imageInfoHolder := something.
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   252
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   253
    "Created: / 29.7.1998 / 18:29:50 / cg"
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   254
!
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   255
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   256
magnification
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   257
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   258
    ^magnification
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   259
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
   260
!
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
   261
636
d53428252193 revised version
tz
parents: 633
diff changeset
   262
magnification: aPoint
1037
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   263
    |oldOrg|
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
   264
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   265
    magnification ~= aPoint
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   266
    ifTrue:
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   267
    [
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   268
	oldOrg := self viewOrigin / magnification.
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   269
	magnification := aPoint asPoint.
1037
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   270
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   271
	self scrollTo:(oldOrg * magnification) rounded redraw:false.        
1037
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   272
"/        self scrollToTopLeft.
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   273
	self contentsChanged.
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   274
	self invalidate.
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
   275
	ClipboardMagnified := nil.
686
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
   276
    ]
1037
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   277
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   278
    "Modified: / 31.7.1998 / 02:38:47 / cg"
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   279
!
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
   280
2913
7e07bb5586e8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2910
diff changeset
   281
modified
7e07bb5586e8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2910
diff changeset
   282
    ^ modifiedHolder value
7e07bb5586e8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2910
diff changeset
   283
!
7e07bb5586e8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2910
diff changeset
   284
2747
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
   285
modified:aBoolean
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
   286
    modifiedHolder value:aBoolean
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
   287
!
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
   288
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
   289
modifiedHolder
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
   290
    ^ modifiedHolder
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
   291
!
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
   292
3265
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
   293
penWidth
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
   294
    ^ penWidth ? 1
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
   295
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
   296
    "Created: / 01-11-2007 / 23:34:49 / cg"
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
   297
!
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
   298
5405
50dd27514854 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5364
diff changeset
   299
penWidth:anInteger
50dd27514854 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5364
diff changeset
   300
    penWidth := anInteger
3265
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
   301
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
   302
    "Created: / 01-11-2007 / 23:34:56 / cg"
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
   303
!
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
   304
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   305
readOnly
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   306
    ^ readOnly
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   307
!
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   308
5405
50dd27514854 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5364
diff changeset
   309
readOnly:aBoolean
50dd27514854 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5364
diff changeset
   310
    readOnly := aBoolean.
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   311
!
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   312
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   313
removelastUndo
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   314
    undoImages removeLast
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   315
!
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   316
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   317
resourceClass
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   318
    ^ resourceClass
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   319
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   320
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   321
resourceClass: aClassOrClassNameString
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   322
    "support for names will vanish - obsolete left over from tz"
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   323
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   324
    resourceClass := aClassOrClassNameString.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   325
    resourceClass notNil ifTrue:[
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   326
        resourceClass isBehavior ifFalse: [ 
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   327
            resourceClass := Smalltalk classNamed:aClassOrClassNameString 
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   328
        ]
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   329
    ]
2908
a759fa87d598 some code cleanup (resourceClass was actually its name)
Claus Gittinger <cg@exept.de>
parents: 2889
diff changeset
   330
!
a759fa87d598 some code cleanup (resourceClass was actually its name)
Claus Gittinger <cg@exept.de>
parents: 2889
diff changeset
   331
a759fa87d598 some code cleanup (resourceClass was actually its name)
Claus Gittinger <cg@exept.de>
parents: 2889
diff changeset
   332
resourceClassName
a759fa87d598 some code cleanup (resourceClass was actually its name)
Claus Gittinger <cg@exept.de>
parents: 2889
diff changeset
   333
    resourceClass isNil ifTrue:[^ ''].
a759fa87d598 some code cleanup (resourceClass was actually its name)
Claus Gittinger <cg@exept.de>
parents: 2889
diff changeset
   334
    ^ resourceClass name
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   335
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   336
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   337
resourceMessage
2909
7d6f5d4ba273 some code cleanup
Claus Gittinger <cg@exept.de>
parents: 2908
diff changeset
   338
    (resourceClass isNil or:[resourceSelector isNil]) ifTrue:[^ ''].
2908
a759fa87d598 some code cleanup (resourceClass was actually its name)
Claus Gittinger <cg@exept.de>
parents: 2889
diff changeset
   339
    ^ resourceClass name, ' ', resourceSelector
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   340
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   341
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   342
resourceSelector
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   343
    ^ resourceSelector
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   344
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   345
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   346
resourceSelector: aStringOrSymbol
2909
7d6f5d4ba273 some code cleanup
Claus Gittinger <cg@exept.de>
parents: 2908
diff changeset
   347
    aStringOrSymbol isNil ifTrue:[
7d6f5d4ba273 some code cleanup
Claus Gittinger <cg@exept.de>
parents: 2908
diff changeset
   348
        resourceSelector := nil
7d6f5d4ba273 some code cleanup
Claus Gittinger <cg@exept.de>
parents: 2908
diff changeset
   349
    ] ifFalse:[
7d6f5d4ba273 some code cleanup
Claus Gittinger <cg@exept.de>
parents: 2908
diff changeset
   350
        resourceSelector := aStringOrSymbol asSymbol
7d6f5d4ba273 some code cleanup
Claus Gittinger <cg@exept.de>
parents: 2908
diff changeset
   351
    ]
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   352
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   353
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   354
selectedColor
3730
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   355
    |clr|
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   356
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   357
    clr := (drawingColorHolders at:mouseKeyColorMode) value.
3931
d2a15871d837 changed: #selectedColor
Claus Gittinger <cg@exept.de>
parents: 3865
diff changeset
   358
    clr isNil ifTrue:[ clr := Color black ].
3730
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   359
    image hasAlphaChannel ifTrue:[
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   360
        ^ (TranslucentColor 
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   361
                scaledRed:clr scaledRed
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   362
                scaledGreen:clr scaledGreen
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   363
                scaledBlue:clr scaledBlue)
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   364
                alpha:(drawingAlpha ? 1.0)
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   365
    ].
3f07e7082aff preps for aloha channel
Claus Gittinger <cg@exept.de>
parents: 3729
diff changeset
   366
    ^ clr
3931
d2a15871d837 changed: #selectedColor
Claus Gittinger <cg@exept.de>
parents: 3865
diff changeset
   367
d2a15871d837 changed: #selectedColor
Claus Gittinger <cg@exept.de>
parents: 3865
diff changeset
   368
    "Modified: / 20-09-2010 / 11:34:07 / cg"
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   369
!
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   370
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   371
selectedColor: aColor
4853
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   372
    (drawingColorHolders at:(mouseKeyColorMode min:drawingColorHolders size)) value:aColor
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   373
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   374
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   375
selectedColorIndex
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   376
    ^ (drawingPixelHolders at:mouseKeyColorMode) value
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   377
!
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   378
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   379
selectedColorIndex: aPixelIndex
4853
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   380
    (drawingPixelHolders at:(mouseKeyColorMode min:drawingPixelHolders size)) value: aPixelIndex
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
   381
!
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
   382
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
   383
setModified
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   384
    self modified:true
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
   385
!
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
   386
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
   387
spraySpot
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
   388
    ^ spraySpot
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
   389
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
   390
    "Created: / 15-02-2012 / 22:38:04 / cg"
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
   391
!
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
   392
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   393
spraySpot:something
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   394
    spraySpot := something.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   395
!
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   396
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
   397
undoImages
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
   398
    ^ undoImages
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   399
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   400
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   401
!ImageEditView methodsFor:'drawing'!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   402
1036
d860072f3b49 gridMag default.
Claus Gittinger <cg@exept.de>
parents: 1035
diff changeset
   403
drawFrame
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   404
    "draws a black frame around the image's bounds"
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   405
    
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   406
    gc paint:self blackColor.
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   407
    gc lineWidth: (magnification x//3 min: 3).
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   408
    gc displayRectangle: ((0@0) extent:(image extent * magnification) + margin).
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   409
    gc lineWidth:1.
1036
d860072f3b49 gridMag default.
Claus Gittinger <cg@exept.de>
parents: 1035
diff changeset
   410
!
d860072f3b49 gridMag default.
Claus Gittinger <cg@exept.de>
parents: 1035
diff changeset
   411
d860072f3b49 gridMag default.
Claus Gittinger <cg@exept.de>
parents: 1035
diff changeset
   412
drawFramesIn: aRectangle
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   413
    "draws the pixel frame grid"
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   414
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   415
    |origin lineStartingPoint lineEndingPoint oldColor mX mY|
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   416
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   417
    magnification >= GridMagnificationLimit ifTrue: [
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   418
        mX := magnification x.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   419
        mY := magnification y.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   420
        
1706
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   421
        origin := aRectangle origin - 1.
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   422
        lineStartingPoint := origin + (0 @ mY).
1706
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   423
        lineEndingPoint   := lineStartingPoint + (aRectangle width@0).
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   424
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   425
        oldColor := gc paint.
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   426
        gc xoring:[
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   427
            gc displayLineFrom: lineStartingPoint to: lineEndingPoint.
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   428
            lineStartingPoint x to: lineStartingPoint x + aRectangle width - mX by: mX 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   429
            do:[:x|   
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   430
                gc displayLineFrom: x@(origin y) to: x@(origin y + mY)
1706
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   431
            ].
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   432
        ].
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   433
        gc paint: oldColor.
1036
d860072f3b49 gridMag default.
Claus Gittinger <cg@exept.de>
parents: 1035
diff changeset
   434
    ]
d860072f3b49 gridMag default.
Claus Gittinger <cg@exept.de>
parents: 1035
diff changeset
   435
!
d860072f3b49 gridMag default.
Claus Gittinger <cg@exept.de>
parents: 1035
diff changeset
   436
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   437
drawPasteRectangleAt: aPoint
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   438
    |currentPoint gridCorrection extent|
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   439
1706
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
   440
    magnification >= GridMagnificationLimit ifFalse: [gridCorrection := 0] ifTrue: [gridCorrection := 1].
1449
e5852c20c18a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1411
diff changeset
   441
    currentPoint := aPoint // magnification*magnification + margin. 
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   442
2085
4cf52f994f0a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
   443
    self repairDamage.
4cf52f994f0a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
   444
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   445
    currentPoint ~= lastPastePoint ifTrue:[              
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
   446
        ClipboardMagnified isNil ifTrue:[
4999
e0111330133e device access
Claus Gittinger <cg@exept.de>
parents: 4967
diff changeset
   447
            ClipboardMagnified := (Clipboard magnifiedBy: magnification) onDevice:device
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   448
        ].   
3278
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
   449
        extent := ClipboardMagnified extent.
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   450
1967
1b4524f3105f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1957
diff changeset
   451
        "/ currentPoint := currentPoint - self viewOrigin.
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   452
2085
4cf52f994f0a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
   453
        self redraw: (((lastPastePoint ? currentPoint)"-self viewOrigin") extent: extent).
3267
ee55a3b2f6fc changed #pointAt:
Claus Gittinger <cg@exept.de>
parents: 3266
diff changeset
   454
        "/ self repairDamage.
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   455
2085
4cf52f994f0a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
   456
false "        (extent x > 400 or: [extent y > 400])" ifTrue:[
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   457
            self xoring: [
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   458
                self fillRectangle: (currentPoint extent: extent)
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   459
            ]   
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   460
        ] ifFalse:[
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
   461
            ClipboardMagnified notNil ifTrue:[
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
   462
                self displayDeviceForm: ClipboardMagnified 
2089
8c0aed9152c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2086
diff changeset
   463
                                     x: currentPoint x - self viewOrigin x 
8c0aed9152c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2086
diff changeset
   464
                                     y: currentPoint y - self viewOrigin y.
8c0aed9152c4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2086
diff changeset
   465
            ].
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   466
            editMode == EditModePastUnder ifTrue:[
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   467
                self redrawImageX:currentPoint x y:currentPoint y width:extent x height:extent y unmaskedOnly:true
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   468
            ]
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   469
        ]  
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   470
    ]. 
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   471
    lastPastePoint := currentPoint.
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   472
3278
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
   473
    "Modified: / 20-11-2007 / 17:17:14 / cg"
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   474
!
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   475
662
61b7601829ea with modal support
tz
parents: 636
diff changeset
   476
fillFramedRectangle: aRectangle
61b7601829ea with modal support
tz
parents: 636
diff changeset
   477
61b7601829ea with modal support
tz
parents: 636
diff changeset
   478
    self fillRectangle: aRectangle.
61b7601829ea with modal support
tz
parents: 636
diff changeset
   479
    self drawFramesIn: aRectangle
61b7601829ea with modal support
tz
parents: 636
diff changeset
   480
!
61b7601829ea with modal support
tz
parents: 636
diff changeset
   481
1449
e5852c20c18a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1411
diff changeset
   482
redraw:aRectangle
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   483
    self 
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   484
        invalidate:(aRectangle origin "+ self viewOrigin" extent:aRectangle extent)
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   485
        repairNow:true. 
1449
e5852c20c18a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1411
diff changeset
   486
2053
5c19fe5b2db3 invalidate rather than redraw
Claus Gittinger <cg@exept.de>
parents: 2034
diff changeset
   487
    "Modified: / 15.11.2001 / 16:43:53 / cg"
1449
e5852c20c18a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1411
diff changeset
   488
!
e5852c20c18a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1411
diff changeset
   489
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   490
redrawImageX:x y:y width:w height:h
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   491
    self redrawImageX:x y:y width:w height:h unmaskedOnly:false
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   492
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   493
    "Modified: / 18.5.1999 / 20:14:03 / cg"
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   494
!
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   495
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   496
redrawImageX:x y:y width:w height:h unmaskedOnly:unmaskedOnly
3319
ae7f91c67895 comment
Claus Gittinger <cg@exept.de>
parents: 3278
diff changeset
   497
    "redraw the magnified (editing) view of the image"
636
d53428252193 revised version
tz
parents: 633
diff changeset
   498
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   499
    self 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   500
        redrawImageX:x y:y width:w height:h 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   501
        unmaskedOnly:unmaskedOnly processColorsWith:[:colorIn | colorIn].
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   502
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   503
    "Created: / 18.5.1999 / 20:13:39 / cg"
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   504
    "Modified: / 18.5.1999 / 20:36:20 / cg"
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   505
!
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   506
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   507
redrawImageX:x y:y width:w height:h unmaskedOnly:unmaskedOnly processColorsWith:aColorBlock
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   508
    "redraw the magnified (editing) view of the image"
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   509
4233
06183a48f783 Fix stc compiler warnings
Stefan Vogel <sv@exept.de>
parents: 4231
diff changeset
   510
    |ih iw magX magY minX maxX minY maxY lastColor lastY runW x0 maskColor mask
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   511
     sizeOfMaskPoint useNearestColor origin|
1180
dcb9dede5128 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1160
diff changeset
   512
4999
e0111330133e device access
Claus Gittinger <cg@exept.de>
parents: 4967
diff changeset
   513
    useNearestColor := device visualType == #PseudoColor.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   514
1037
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   515
    mask := image mask.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   516
    ih := image height.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   517
    iw := image width.
662
61b7601829ea with modal support
tz
parents: 636
diff changeset
   518
    magX := magnification x.
61b7601829ea with modal support
tz
parents: 636
diff changeset
   519
    magY := magnification y.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   520
662
61b7601829ea with modal support
tz
parents: 636
diff changeset
   521
    minX := (x // magX - 1) max: 0.
725
0e051202859d checkin from browser
tz
parents: 724
diff changeset
   522
    minX >= iw ifTrue:[minX := (iw - 1) max: 0].
662
61b7601829ea with modal support
tz
parents: 636
diff changeset
   523
    minY := (y // magY - 1) max: 0.
725
0e051202859d checkin from browser
tz
parents: 724
diff changeset
   524
    minY >= ih ifTrue:[minY := (ih - 1) max: 0].
662
61b7601829ea with modal support
tz
parents: 636
diff changeset
   525
    maxX := (x + w) // magX + 1.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   526
    maxX > iw ifTrue:[maxX := iw].
662
61b7601829ea with modal support
tz
parents: 636
diff changeset
   527
    maxY := (y + h) // magY + 1.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   528
    maxY > ih ifTrue:[maxY := ih].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   529
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   530
    lastY := -1.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   531
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   532
    x0 := minX.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   533
    runW := 0.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   534
    maskColor := false.
662
61b7601829ea with modal support
tz
parents: 636
diff changeset
   535
    sizeOfMaskPoint := magnification//3.
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   536
    image 
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   537
        colorsFromX:minX y:minY toX:maxX-1 y:maxY-1 
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   538
        do:[:xx :yy :colorIn|
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   539
            |color|
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   540
            
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   541
            color := aColorBlock value:colorIn.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   542
            
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   543
            shown ifFalse:[^ self].
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   544
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   545
            yy ~~ lastY ifTrue:[
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   546
                runW ~~ 0 ifTrue:[
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   547
                    origin := (x0 * magX + margin) @ (lastY * magY + margin).
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   548
                    (unmaskedOnly not or:[maskColor not]) ifTrue:[
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   549
                        self fillFramedRectangle: (origin extent: (runW@magY)).                    
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   550
                        maskColor ifTrue:[
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   551
                            gc xoring: [gc fillRectangle: (origin + sizeOfMaskPoint extent: sizeOfMaskPoint)]
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   552
                        ]
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   553
                    ].
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   554
                    runW := 0.
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   555
                ]. 
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   556
                x0 := xx.
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   557
                lastY := yy.
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   558
            ]. 
1160
5d89296c4b04 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1158
diff changeset
   559
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   560
            color ~= lastColor ifTrue:[
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   561
                runW ~~ 0 ifTrue:[
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   562
                    origin := (x0 * magX + margin)@(yy * magY + margin).
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   563
                    (unmaskedOnly not or:[maskColor not]) ifTrue:[
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   564
                        self fillFramedRectangle: (origin extent: (runW@magY)).
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   565
                        maskColor ifTrue:[
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   566
                            gc xoring: [gc fillRectangle: (origin + sizeOfMaskPoint extent: sizeOfMaskPoint)]
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   567
                        ].
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   568
                    ].
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   569
                    runW := 0.
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   570
                ].
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   571
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   572
                lastColor := color.
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   573
                useNearestColor ifTrue:[
4999
e0111330133e device access
Claus Gittinger <cg@exept.de>
parents: 4967
diff changeset
   574
                    lastColor := lastColor nearestOn:device
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   575
                ].
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   576
                gc paint:lastColor.
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   577
                mask notNil ifTrue:[  
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   578
                    maskColor := false.
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   579
                    (mask pixelAtX:xx y:yy) == 0 ifTrue:[
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   580
                        unmaskedOnly ifFalse:[
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   581
                            gc paint: (lastColor := self viewBackground).
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   582
                        ].
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   583
                        maskColor := true.
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   584
                    ].
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   585
                    lastColor := nil.
1160
5d89296c4b04 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1158
diff changeset
   586
                ].
5d89296c4b04 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1158
diff changeset
   587
                runW := 0.
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   588
                x0 := xx.
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   589
            ].  
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   590
            runW := runW + magX
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   591
        ].
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   592
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   593
    runW ~~ 0 ifTrue:[
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   594
        origin := (x0 * magX + margin)@(lastY * magY + margin).
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   595
        (unmaskedOnly not or:[maskColor not]) ifTrue:[
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   596
            self fillFramedRectangle: (origin extent: runW@magY).
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   597
            maskColor ifTrue:[
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   598
                gc xoring:[
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
   599
                    gc fillRectangle: (origin + sizeOfMaskPoint extent: sizeOfMaskPoint)
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   600
                ]
1180
dcb9dede5128 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1160
diff changeset
   601
            ].
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   602
        ]
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   603
    ].
1037
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   604
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   605
    "Created: / 18.5.1999 / 20:13:39 / cg"
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
   606
    "Modified: / 18.5.1999 / 20:36:20 / cg"
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   607
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   608
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   609
redrawX:x y:y width:w height:h
636
d53428252193 revised version
tz
parents: 633
diff changeset
   610
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   611
    |xI yI devImage imgWidth imgHeight mX mY magnifiedWidth magnifiedHeight|
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   612
1037
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   613
    image isNil ifTrue:[^self].
662
61b7601829ea with modal support
tz
parents: 636
diff changeset
   614
1037
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   615
    magnification = (1@1) ifTrue: [
4212
4b84444912b5 exception access
Claus Gittinger <cg@exept.de>
parents: 4203
diff changeset
   616
        Error handle:[:ex |
2092
36ef3048dbf4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2089
diff changeset
   617
            Transcript showCR:'cannot convert image: ', ex description.
1510
fd0cd6065dc6 catch image conversion errors.
Claus Gittinger <cg@exept.de>
parents: 1449
diff changeset
   618
        ] do:[
4999
e0111330133e device access
Claus Gittinger <cg@exept.de>
parents: 4967
diff changeset
   619
            devImage := image onDevice:device.
1763
7d6d64622ee4 change & updates fixed (monochrome bitmaps)
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
   620
            devImage ~~ image ifTrue:[
7d6d64622ee4 change & updates fixed (monochrome bitmaps)
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
   621
                image := devImage.
1764
3dd553f8d9f0 oops - leftover halts
Claus Gittinger <cg@exept.de>
parents: 1763
diff changeset
   622
                self changed:#image.
1763
7d6d64622ee4 change & updates fixed (monochrome bitmaps)
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
   623
            ].
1510
fd0cd6065dc6 catch image conversion errors.
Claus Gittinger <cg@exept.de>
parents: 1449
diff changeset
   624
        ].
4999
e0111330133e device access
Claus Gittinger <cg@exept.de>
parents: 4967
diff changeset
   625
        image device == device ifTrue:[
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   626
            super redrawX:x y:y width:w height:h.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   627
            self drawFrame.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   628
            ^ self.
1510
fd0cd6065dc6 catch image conversion errors.
Claus Gittinger <cg@exept.de>
parents: 1449
diff changeset
   629
        ].
1037
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   630
    ].
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   631
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   632
    "/ self clippingRectangle: (x@y extent:w@h).
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   633
    "/ draw the image itself
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   634
    self redrawImageX:x y:y width:w height:h.
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   635
4233
06183a48f783 Fix stc compiler warnings
Stefan Vogel <sv@exept.de>
parents: 4231
diff changeset
   636
    imgWidth := image width.
06183a48f783 Fix stc compiler warnings
Stefan Vogel <sv@exept.de>
parents: 4231
diff changeset
   637
    imgHeight := image height.
06183a48f783 Fix stc compiler warnings
Stefan Vogel <sv@exept.de>
parents: 4231
diff changeset
   638
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   639
    "/ beyond of image ?
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   640
    adjust == #center ifTrue:[
4233
06183a48f783 Fix stc compiler warnings
Stefan Vogel <sv@exept.de>
parents: 4231
diff changeset
   641
        xI := (width - imgWidth) // 2 - margin.
06183a48f783 Fix stc compiler warnings
Stefan Vogel <sv@exept.de>
parents: 4231
diff changeset
   642
        yI := (height - imgHeight) // 2 - margin.
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   643
    ] ifFalse:[
1449
e5852c20c18a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1411
diff changeset
   644
        xI := yI := margin
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   645
    ].
1967
1b4524f3105f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1957
diff changeset
   646
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   647
    mX := magnification x.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   648
    mY := magnification y.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   649
    magnifiedWidth := mX * imgWidth.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   650
    magnifiedHeight := mY * imgHeight.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   651
    
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   652
    "/ draw the rest to the right and at the bottom
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   653
    (x + w - 1) > (xI + magnifiedWidth) ifTrue:[
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   654
        self 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   655
            clearRectangleX:(xI + magnifiedWidth) y:y
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   656
            width:(x + w - magnifiedWidth - xI) height:h
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   657
    ].
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   658
    (y + h - 1) > (yI + magnifiedHeight) ifTrue:[
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   659
        self 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   660
            clearRectangleX:margin y:(yI + magnifiedHeight)
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   661
            width:w height:(y + h - magnifiedHeight - yI)  
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   662
    ].
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   663
    self drawFrame.
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   664
    self clippingBounds: nil.
1037
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   665
3735af6b5b24 remmeber scrollOffset
Claus Gittinger <cg@exept.de>
parents: 1036
diff changeset
   666
    "Modified: / 31.7.1998 / 02:22:45 / cg"
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   667
!
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   668
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   669
startSpray
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   670
    spraySpot isNil ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   671
        spraySpot := 8
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   672
    ].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   673
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   674
    sprayProcess isNil ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   675
        sprayProcess := [
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   676
                |p rnd norm sprayPoint dly angle x y dist|
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   677
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   678
                rnd := Random new.
3477
00d7bac0b2c4 changed #startSpray
Claus Gittinger <cg@exept.de>
parents: 3476
diff changeset
   679
                Distributions::NormalDistribution notNil ifTrue:[
00d7bac0b2c4 changed #startSpray
Claus Gittinger <cg@exept.de>
parents: 3476
diff changeset
   680
                    norm := Distributions::NormalDistribution mean:0 deviation:0.5.
00d7bac0b2c4 changed #startSpray
Claus Gittinger <cg@exept.de>
parents: 3476
diff changeset
   681
                ].
3487
5cc0a5d3e1f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3477
diff changeset
   682
                dly := Delay forMilliseconds:20.
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   683
                [true] whileTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   684
                    10 timesRepeat:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   685
                        p := sprayPosition.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   686
                        p notNil ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   687
                            angle := rnd next * 359.999.    "/ the angle is uniformly ditributed
3477
00d7bac0b2c4 changed #startSpray
Claus Gittinger <cg@exept.de>
parents: 3476
diff changeset
   688
                            norm notNil ifTrue:[
00d7bac0b2c4 changed #startSpray
Claus Gittinger <cg@exept.de>
parents: 3476
diff changeset
   689
                                dist := norm next * spraySpot.  "/ the distance is a normalDistribution
00d7bac0b2c4 changed #startSpray
Claus Gittinger <cg@exept.de>
parents: 3476
diff changeset
   690
                            ] ifFalse:[
00d7bac0b2c4 changed #startSpray
Claus Gittinger <cg@exept.de>
parents: 3476
diff changeset
   691
                                dist := (rnd nextBetween:-1 and:1) * spraySpot. 
00d7bac0b2c4 changed #startSpray
Claus Gittinger <cg@exept.de>
parents: 3476
diff changeset
   692
                            ].
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   693
                            sprayPoint := (Point r:dist degrees:angle)*magnification.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   694
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   695
                            x := p x + sprayPoint x truncated.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   696
                            y := p y + sprayPoint y truncated.
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
   697
                            self pointAt:(x@y) width:1.
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   698
                        ].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   699
                    ].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   700
                    dly wait.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   701
                ].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   702
        ] fork.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   703
    ]
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   704
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
   705
    "Modified: / 15-02-2012 / 22:44:54 / cg"
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   706
!
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   707
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   708
stopSpray
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   709
    sprayProcess notNil ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   710
        sprayProcess terminate.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   711
        sprayProcess := nil
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   712
    ].
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   713
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   714
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   715
!ImageEditView methodsFor:'edit modes'!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   716
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   717
editMode
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   718
    "is one of the edit modes:
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   719
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   720
        EditModePoint
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   721
        EditModeBox
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   722
        EditModePaste
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   723
        EditModePasteUnder
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   724
        EditModePasteWithMask 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   725
        EditModeFilledBox
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   726
        EditModeFill 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   727
        EditModeCopy 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   728
        EditModeSpecialOperation 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   729
        EditModeSpray 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   730
        EditModeCircle 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   731
        EditModeSmooth 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   732
    "
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   733
1106
57c41df67ae5 support radio buttons of the ImageEditor
tz
parents: 1104
diff changeset
   734
    ^editMode
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   735
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   736
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
   737
editMode: anEditModeSymbol
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   738
    "must be one of the edit modes:
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   739
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   740
        EditModePoint
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   741
        EditModeBox
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   742
        EditModePaste
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   743
        EditModePasteUnder
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   744
        EditModePasteWithMask 
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   745
        EditModeFilledBox
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   746
        EditModeFill 
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   747
        EditModeCopy 
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   748
        EditModeSpecialOperation 
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   749
        EditModeSpray 
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   750
        EditModeCircle 
4715
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
   751
        EditModeSmooth 
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   752
    "
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   753
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
   754
    editMode := anEditModeSymbol
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   755
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   756
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   757
mouseKeyColorMode
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   758
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   759
    ^mouseKeyColorMode printString
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   760
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   761
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   762
mouseKeyColorMode:aMode
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   763
1106
57c41df67ae5 support radio buttons of the ImageEditor
tz
parents: 1104
diff changeset
   764
    mouseKeyColorMode := aMode
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   765
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   766
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   767
!ImageEditView methodsFor:'event handling'!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   768
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   769
buttonMotion:state x:x y:y
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   770
    |p|
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   771
2072
abd4e246f393 care for negative pos in buttonMotion (win32 klusge)
Claus Gittinger <cg@exept.de>
parents: 2053
diff changeset
   772
    (x < 0 or:[y < 0]) ifTrue:[
abd4e246f393 care for negative pos in buttonMotion (win32 klusge)
Claus Gittinger <cg@exept.de>
parents: 2053
diff changeset
   773
        ^ self
abd4e246f393 care for negative pos in buttonMotion (win32 klusge)
Claus Gittinger <cg@exept.de>
parents: 2053
diff changeset
   774
    ].
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   775
    "/ readOnly ifTrue:[^ self].
2072
abd4e246f393 care for negative pos in buttonMotion (win32 klusge)
Claus Gittinger <cg@exept.de>
parents: 2053
diff changeset
   776
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   777
    p := x@y.
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   778
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   779
    state ~~ 0 ifTrue:[
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   780
        "/ button down
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   781
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   782
        "/ self selectedColor notNil ifTrue:[ 
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   783
        (self imageContainsPoint:p) ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   784
            (editMode == EditModePoint) ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   785
                self pointAt:p.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   786
                ^ self
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   787
            ].
4715
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
   788
            (editMode == EditModeSmooth) ifTrue:[
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
   789
                self smoothAt:p.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
   790
                ^ self
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
   791
            ].
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   792
            sprayProcess notNil ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   793
                sprayPosition := p.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   794
               ^ self
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   795
            ].
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   796
        ].
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   797
        self drawCursorAt:p.
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   798
        ^ self
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   799
    ].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   800
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   801
    "/ button is up (care for paste-mode, dragging the pasted image)
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   802
    self drawCursorAt:p.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   803
    self inPasteMode ifTrue: [
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   804
        self sensor shiftDown ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   805
            p := p - Clipboard extent
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   806
        ].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   807
        ("self selectedColor notNil" true and: [self imageContainsPastePoint:p]) 
3729
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
   808
            ifTrue:[
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   809
                (self sensor hasButtonMotionEventFor:self) ifFalse:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   810
                    self drawPasteRectangleAt:p]]
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   811
            ifFalse: [self cursor:Cursor stop. self releasePasteDrawing]
686
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
   812
    ]
1019
e68414752bc9 only change the cursor for myself.
Claus Gittinger <cg@exept.de>
parents: 1013
diff changeset
   813
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   814
    "Modified: / 03-05-2011 / 12:26:54 / cg"
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
   815
!
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
   816
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   817
buttonPress:button x:x y:y
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   818
    |p clr masked|
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   819
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   820
    p := x@y.
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   821
3278
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
   822
    self inPasteMode ifTrue:[
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
   823
        self sensor shiftDown ifTrue:[
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
   824
            p := p - Clipboard extent
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
   825
        ]
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
   826
    ].
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
   827
    
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   828
    self drawCursorAt:p.
1011
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
   829
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   830
    ("self selectedColor notNil" true 
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   831
    and: [self imageContainsPoint:p])
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   832
    ifTrue:[   
3278
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
   833
        (self inPasteMode not 
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
   834
        and:[self sensor shiftDown]) ifTrue:[
2277
012c57905267 allow pinging the mask
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
   835
            (image maskAt:(p // magnification)) == 0 ifTrue:[
012c57905267 allow pinging the mask
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
   836
                masked := true.
012c57905267 allow pinging the mask
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
   837
            ] ifFalse:[
012c57905267 allow pinging the mask
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
   838
                masked := false.
012c57905267 allow pinging the mask
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
   839
                clr := image colorAt:(p // magnification).
012c57905267 allow pinging the mask
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
   840
            ].
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   841
            pickedColorHolder notNil ifTrue:[
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   842
                "/ select the color under the cursor, place it into the
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   843
                "/ pickedColorHolder/
2009
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
   844
                pickedColorHolder value:clr.
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   845
            ].
2009
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
   846
            self selectedColor:clr.
2277
012c57905267 allow pinging the mask
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
   847
            masked ifTrue:[self selectedColorIndex:nil].
2009
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
   848
            self changed:#selectedColor with:clr.
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   849
        ] ifFalse:[
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   850
            (readOnly not 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   851
              or:[editMode == EditModeCopy
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   852
              or:[editMode == EditModeSpecialOperation]]
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   853
            ) ifTrue:[
4853
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   854
                (button between:1 and:2) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   855
                    mouseKeyColorMode := button.
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   856
                    self makeUndo.
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   857
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   858
                    clickInfoCallBack notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   859
                        "/ still a kludge, but less ugly ...
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   860
                        clickInfoCallBack value:button value:p
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   861
                    ].
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   862
                    "/ editMode is something like #point, #rectangle etc.
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   863
                    [
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   864
                        self perform: (editMode, 'At:') asSymbol with:p
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   865
                    ] on:Error do:[:ex | 
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   866
                        (Dialog confirm:('Error during operation: ', ex description,'\\Debug ?') withCRs )
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   867
                        ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   868
                            ex reject
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
   869
                        ].
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   870
                    ].
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   871
                ].
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   872
            ].
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   873
        ]
686
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
   874
    ]
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
   875
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   876
    "Modified: / 03-05-2011 / 12:26:06 / cg"
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   877
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   878
994
5727c2484ecd bugs fixed in undo/mask and point painting/preview and pasting
tz
parents: 877
diff changeset
   879
buttonRelease:button x:x y:y
5727c2484ecd bugs fixed in undo/mask and point painting/preview and pasting
tz
parents: 877
diff changeset
   880
5727c2484ecd bugs fixed in undo/mask and point painting/preview and pasting
tz
parents: 877
diff changeset
   881
    self drawCursorAt: x@y.
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   882
    readOnly ifTrue:[^ self].
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   883
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   884
    ("self selectedColor notNil" true and: [self imageContainsPoint: x@y])
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   885
    ifTrue: [
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   886
        sprayProcess notNil ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   887
            self stopSpray
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   888
        ].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   889
1763
7d6d64622ee4 change & updates fixed (monochrome bitmaps)
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
   890
        image release.
1011
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
   891
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   892
"/        "/ cg: what a kludge - please change to use a valueHolder,
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   893
"/        "/ which gets the information ...
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   894
"/        masterApplication imagePreView invalidate.
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   895
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   896
        "/ cg: still a kludge - but less ugly
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   897
        self changed:#subImageIn with:(image bounds).
994
5727c2484ecd bugs fixed in undo/mask and point painting/preview and pasting
tz
parents: 877
diff changeset
   898
    ]
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   899
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
   900
    "Modified: / 03-05-2011 / 12:26:31 / cg"
994
5727c2484ecd bugs fixed in undo/mask and point painting/preview and pasting
tz
parents: 877
diff changeset
   901
!
5727c2484ecd bugs fixed in undo/mask and point painting/preview and pasting
tz
parents: 877
diff changeset
   902
2508
ffb079bfe8b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2507
diff changeset
   903
inPasteMode
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
   904
    ^ (editMode notNil and:[editMode startsWith:#paste])
2508
ffb079bfe8b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2507
diff changeset
   905
!
ffb079bfe8b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2507
diff changeset
   906
5277
4d6ef5c2aa64 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5266
diff changeset
   907
keyboardZoom:larger
4d6ef5c2aa64 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5266
diff changeset
   908
    larger ifTrue:[
4d6ef5c2aa64 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5266
diff changeset
   909
        self magnification: ((magnification + 1) min:63)
4d6ef5c2aa64 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5266
diff changeset
   910
    ] ifFalse:[
4d6ef5c2aa64 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5266
diff changeset
   911
        self magnification: ((magnification - 1) max:1)
4d6ef5c2aa64 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5266
diff changeset
   912
    ].    
4d6ef5c2aa64 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5266
diff changeset
   913
!
4d6ef5c2aa64 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5266
diff changeset
   914
686
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
   915
pointerLeave:state
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
   916
688
e1c30adb37bf updates coord info label while defining boxes
tz
parents: 686
diff changeset
   917
    super pointerLeave: state.
686
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
   918
1031
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   919
    self updateImageInfo: self imageInfoString.
1019
e68414752bc9 only change the cursor for myself.
Claus Gittinger <cg@exept.de>
parents: 1013
diff changeset
   920
    self cursor:Cursor normal.
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
   921
2508
ffb079bfe8b6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2507
diff changeset
   922
    self inPasteMode ifTrue: [
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   923
        self releasePasteDrawing
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
   924
    ]
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
   925
1031
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   926
    "Modified: / 29.7.1998 / 18:27:42 / cg"
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   927
! !
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   928
636
d53428252193 revised version
tz
parents: 633
diff changeset
   929
!ImageEditView methodsFor:'image editing'!
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   930
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   931
boxAt: aPoint
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   932
    "drag a rectangular outline, 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   933
     when released draw a rectangle with the currently selected color"
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
   934
3610
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   935
    |choosenBox imageBox clr pix|
1038
6c0bb03e88a1 no need to invalidate after assign of new image.
Claus Gittinger <cg@exept.de>
parents: 1037
diff changeset
   936
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   937
    (clr := self selectedColor) notNil ifTrue:[
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   938
        choosenBox := self dragRectangleStartingAt: aPoint emphasis: #box.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   939
        choosenBox notNil ifTrue:[
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   940
            imageBox := choosenBox origin//magnification extent: (choosenBox extent//magnification).
3610
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   941
            image colorMap isNil ifTrue:[
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   942
                image drawRectangle:imageBox withColor:clr.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   943
            ] ifFalse:[
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   944
                pix := self selectedColorIndex.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   945
                image drawRectangle:imageBox withValue:pix.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   946
            ].
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   947
            image restored.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   948
            self redraw: (choosenBox expandedBy: 1).
1038
6c0bb03e88a1 no need to invalidate after assign of new image.
Claus Gittinger <cg@exept.de>
parents: 1037
diff changeset
   949
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   950
"/        "/ cg: what a kludge - please change to use a valueHolder,
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   951
"/        "/ which gets the information ...
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   952
"/        masterApplication imagePreView redraw: (imageBox expandedBy: 1).
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   953
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   954
            "/ cg: still a kludge - but less ugly
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   955
            self changed:#subImageIn with:(imageBox expandedBy: 1).
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   956
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   957
            self setModified.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
   958
        ].
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   959
    ].
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
   960
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
   961
    "Modified: / 10.2.2000 / 23:42:08 / cg"
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   962
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   963
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   964
circleAt: aPoint
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   965
    "drag an ellipse, 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   966
     when released draw an ellipse with the currently selected color"
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   967
3610
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   968
    |choosenBox imageBox clr pix|
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   969
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   970
    (clr := self selectedColor) notNil ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   971
        choosenBox := self dragRectangleStartingAt: aPoint emphasis: #box.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   972
        choosenBox notNil ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   973
            imageBox := choosenBox origin//magnification extent: (choosenBox extent//magnification).
3610
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   974
            image colorMap isNil ifTrue:[
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   975
                image drawEllipse:imageBox withColor:clr.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   976
            ] ifFalse:[
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   977
                pix := self selectedColorIndex.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   978
                image drawEllipse:imageBox withValue:pix.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   979
            ].
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   980
            image restored.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   981
            self redraw: (choosenBox expandedBy: 1).
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   982
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   983
            "/ cg: still a kludge - but less ugly
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   984
            self changed:#subImageIn with:(imageBox expandedBy: 1).
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   985
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   986
            self setModified.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   987
        ].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   988
    ].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   989
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   990
    "Modified: / 10.2.2000 / 23:42:08 / cg"
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   991
!
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
   992
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
   993
copyAt: aPoint
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   994
    "drag a filled box, 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   995
     when released copy the selected rectangle to the clipboard"
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
   996
3696
a039bbaa6e83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3643
diff changeset
   997
    |choosenBox box copiedImage|
1084
87c661e6c333 scroll when dragging out of the view in copy-mode.
Claus Gittinger <cg@exept.de>
parents: 1060
diff changeset
   998
1449
e5852c20c18a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1411
diff changeset
   999
    choosenBox := self dragRectangleStartingAt: aPoint emphasis: #inverseFilledBox.
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1000
    choosenBox notNil ifTrue:[
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1001
        box := choosenBox origin // magnification extent: (choosenBox extent // magnification).
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1002
        copiedImage := image subImageIn: box.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1003
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1004
        self class copyImageToClipboard:copiedImage.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1005
3696
a039bbaa6e83 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3643
diff changeset
  1006
        self redraw:(choosenBox expandedBy:1)
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1007
    ]
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1008
1084
87c661e6c333 scroll when dragging out of the view in copy-mode.
Claus Gittinger <cg@exept.de>
parents: 1060
diff changeset
  1009
    "Modified: / 21.8.1998 / 20:16:41 / cg"
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1010
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1011
2480
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
  1012
copyImageToClipboard
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
  1013
    self class copyImageToClipboard:image.
4264
6e31e342f38c class: ImageEditView
Stefan Vogel <sv@exept.de>
parents: 4249
diff changeset
  1014
    self setClipboardObject:image.
2480
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
  1015
!
6b82ad413d70 added copyToClipboard
Claus Gittinger <cg@exept.de>
parents: 2442
diff changeset
  1016
1228
0aae4f7389ca renamed - crob -> crop
Claus Gittinger <cg@exept.de>
parents: 1184
diff changeset
  1017
cropLeft:doLeft right:doRight top:doTop bottom:doBottom
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1018
    |yMinNew yMaxNew xMinNew xMaxNew
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1019
     pix stillCropping xMax yMax|
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1020
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1021
    xMax := image width - 1.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1022
    yMax := image height - 1.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1023
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1024
    xMinNew := 0.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1025
    doLeft ifTrue:[
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1026
        pix := image pixelAtX:xMinNew y:0.
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1027
        stillCropping := true.
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1028
        [stillCropping] whileTrue:[
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1029
            0 to:yMax do:[:y |
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1030
                (image pixelAtX:xMinNew y:y) ~~ pix ifTrue:[
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1031
                    stillCropping := false
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1032
                ]
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1033
            ].
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1034
            stillCropping ifTrue:[
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1035
                xMinNew := xMinNew + 1.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1036
                xMinNew >= image width ifTrue:[
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1037
                    self warn:(resources string:'Image is all the same color - no crop.').
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1038
                    ^ self
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1039
                ]
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1040
            ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1041
        ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1042
    ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1043
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1044
    xMaxNew := xMax.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1045
    doRight ifTrue:[
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1046
        stillCropping := true.
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1047
        pix := image pixelAtX:xMaxNew y:0.
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1048
        [stillCropping] whileTrue:[
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1049
            0 to:yMax do:[:y |
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1050
                (image pixelAtX:xMaxNew y:y) ~~ pix ifTrue:[
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1051
                    stillCropping := false
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1052
                ]
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1053
            ].
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1054
            stillCropping ifTrue:[
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1055
                xMaxNew := xMaxNew - 1.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1056
            ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1057
        ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1058
    ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1059
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1060
    yMinNew := 0.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1061
    doTop ifTrue:[
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1062
        pix := image pixelAtX:xMinNew y:yMinNew.
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1063
        stillCropping := true.
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1064
        [stillCropping] whileTrue:[
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1065
            xMinNew to:xMaxNew do:[:x |
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1066
                (image pixelAtX:x y:yMinNew) ~~ pix ifTrue:[
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1067
                    stillCropping := false
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1068
                ]
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1069
            ].
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1070
            stillCropping ifTrue:[
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1071
                yMinNew := yMinNew + 1.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1072
            ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1073
        ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1074
    ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1075
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1076
    yMaxNew := yMax.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1077
    doRight ifTrue:[
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1078
        stillCropping := true.
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1079
        pix := image pixelAtX:xMaxNew y:yMaxNew.
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1080
        [stillCropping] whileTrue:[
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1081
            xMinNew to:xMaxNew do:[:x |
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1082
                (image pixelAtX:x y:yMaxNew) ~~ pix ifTrue:[
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1083
                    stillCropping := false
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1084
                ]
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1085
            ].
5093
a70ea1df6754 #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5061
diff changeset
  1086
            stillCropping ifTrue:[
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1087
                yMaxNew := yMaxNew - 1.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1088
            ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1089
        ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1090
    ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1091
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1092
    (xMinNew == 0
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1093
    and:[xMaxNew == (image width - 1)
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1094
    and:[yMinNew == 0
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1095
    and:[yMaxNew == (image height - 1)]]]) ifTrue:[
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  1096
        self warn:(resources string:'No border found - no crob.').
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1097
        ^ self
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1098
    ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1099
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1100
"/    self warn:'extract subImage ' 
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1101
"/              , (xMinNew @ yMinNew) printString
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1102
"/              , ' -> '
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1103
"/              , (xMaxNew @ yMaxNew) printString.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1104
2006
99e13c98314c checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1994
diff changeset
  1105
    self makeUndo.
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1106
    self 
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1107
        makeSubImageX:xMinNew y:yMinNew 
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1108
        width:(xMaxNew - xMinNew + 1)
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1109
        height:(yMaxNew - yMinNew + 1)
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1110
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1111
    "Created: / 7.9.1998 / 14:25:52 / cg"
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1112
    "Modified: / 7.9.1998 / 16:35:35 / cg"
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1113
!
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1114
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1115
fillAt: aPoint
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1116
    "perform a flood-fill with the currently selected color"
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  1117
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1118
    windowGroup withExecuteCursorDo:[
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1119
        |filledPoints clr|
1002
5d2e4c03a78e grid magnification can be changed
tz
parents: 996
diff changeset
  1120
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1121
        (clr := self selectedColor) notNil ifTrue:[
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1122
            self updateActivity:'Flood filling - press CTRL-y to abort ...'.
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1123
            [
3610
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1124
                |pix fillColor|
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1125
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1126
                image colorMap isNil ifTrue:[
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1127
                    image floodFillAt: aPoint//magnification withColor:clr.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1128
                ] ifFalse:[
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1129
                    pix := self selectedColorIndex.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1130
                    image floodFillAt:aPoint//magnification withValue:pix.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1131
                ].
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1132
                image restored.
1038
6c0bb03e88a1 no need to invalidate after assign of new image.
Claus Gittinger <cg@exept.de>
parents: 1037
diff changeset
  1133
2349
4cf7b4f1345e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2338
diff changeset
  1134
                self invalidate.
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1135
                self changed:#subImageIn with:(image bounds).
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1136
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
  1137
                self setModified.
4129
65e5f7358a70 changed: #fillAt: use #ifCurtailed:
Stefan Vogel <sv@exept.de>
parents: 4111
diff changeset
  1138
            ] ifCurtailed:[
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1139
                self updateActivity:'Flood fill aborted.'
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1140
            ].
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1141
        ].
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1142
        self updateActivity:''
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1143
    ]
1031
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  1144
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1145
    "Modified: / 10.2.2000 / 23:40:58 / cg"
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1146
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1147
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1148
filledBoxAt: aPoint
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1149
    "drag a filled box, 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1150
     when released fill a rectangular area with the currently selected color"
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1151
4233
06183a48f783 Fix stc compiler warnings
Stefan Vogel <sv@exept.de>
parents: 4231
diff changeset
  1152
    |choosenBox imageBox clr pix|
1038
6c0bb03e88a1 no need to invalidate after assign of new image.
Claus Gittinger <cg@exept.de>
parents: 1037
diff changeset
  1153
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1154
    (clr := self selectedColor) notNil ifTrue:[
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1155
        choosenBox := self dragRectangleStartingAt: aPoint emphasis: #filledBox.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1156
        choosenBox notNil ifTrue:[
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1157
            imageBox := choosenBox origin//magnification extent: (choosenBox extent//magnification).
3610
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1158
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1159
            image colorMap isNil ifTrue:[
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1160
                image fillRectangle:imageBox withColor:clr.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1161
            ] ifFalse:[
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1162
                pix := self selectedColorIndex.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1163
                image fillRectangle:imageBox withValue:pix.
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1164
"/                maskVal := pix isNil ifTrue:[0] ifFalse:[1].
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1165
"/                image mask notNil ifTrue:[
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1166
"/                    image mask fillRectangle:imageBox withValue:maskVal
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1167
"/                ].
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1168
            ].
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1169
            image restored.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1170
            self redraw: (choosenBox expandedBy: 1).
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1171
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1172
            self changed:#subImageIn with:(imageBox expandedBy: 1).
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1173
            self setModified.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1174
        ]
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1175
    ]
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1176
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  1177
    "Modified: / 10.2.2000 / 23:37:04 / cg"
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1178
!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  1179
4032
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1180
flipSubImage:how in:imageBox
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1181
    "/ now, do it
4624
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1182
    "/ caveat: this should go into image class
4032
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1183
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1184
    |x0 y0 x1 y1 image t|
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1185
4623
efe94f736058 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4506
diff changeset
  1186
    self makeUndo.
efe94f736058 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4506
diff changeset
  1187
4032
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1188
    x0 := imageBox left.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1189
    y0 := imageBox top.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1190
    x1 := imageBox right-1.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1191
    y1 := imageBox bottom-1.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1192
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1193
    image := self image.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1194
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1195
    how == #vertical ifTrue:[
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1196
        0 to:((y1-y0)//2) do:[:dy |
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1197
            x0 to:x1 do:[:x |
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1198
                t := image pixelAtX:x y:(y0+dy).
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1199
                image pixelAtX:x y:(y0+dy) put:(image pixelAtX:x y:(y1-dy)).
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1200
                image pixelAtX:x y:(y1-dy) put:t.
4624
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1201
                image mask notNil ifTrue:[
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1202
                    t := image maskAtX:x y:(y0+dy).
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1203
                    image maskAtX:x y:(y0+dy) put:(image maskAtX:x y:(y1-dy)).
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1204
                    image maskAtX:x y:(y1-dy) put:t.
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1205
                ].
4032
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1206
            ].
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1207
        ]
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1208
    ] ifFalse:[
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1209
        0 to:((x1-x0)//2) do:[:dx |
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1210
            y0 to:y1 do:[:y |
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1211
                t := image pixelAtX:(x0+dx) y:y.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1212
                image pixelAtX:(x0+dx) y:y put:(image pixelAtX:(x1-dx) y:y).
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1213
                image pixelAtX:(x1-dx) y:y put:t.
4623
efe94f736058 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4506
diff changeset
  1214
4624
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1215
                image mask notNil ifTrue:[
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1216
                    t := image maskAtX:(x0+dx) y:y.
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1217
                    image maskAtX:(x0+dx) y:y put:(image maskAtX:(x1-dx) y:y).
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1218
                    image maskAtX:(x1-dx) y:y put:t.
bc987849ea84 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4623
diff changeset
  1219
                ].
4032
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1220
            ].
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1221
        ]
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1222
    ].
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1223
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1224
    self setModified.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1225
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1226
    "Created: / 07-04-2011 / 09:34:23 / cg"
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1227
!
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1228
4723
c5f32ebfec14 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4715
diff changeset
  1229
magnifyAntiAliasedImageTo:newSize
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  1230
    self newImageWithUndo: (image hardAntiAliasedMagnifiedBy: newSize/image extent).
4723
c5f32ebfec14 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4715
diff changeset
  1231
!
c5f32ebfec14 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4715
diff changeset
  1232
1706
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
  1233
magnifyImageTo:newSize
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  1234
    self newImageWithUndo: (image magnifiedBy: newSize/image extent).
636
d53428252193 revised version
tz
parents: 633
diff changeset
  1235
!
d53428252193 revised version
tz
parents: 633
diff changeset
  1236
2168
d531fe16bae2 more colormap operations
Claus Gittinger <cg@exept.de>
parents: 2149
diff changeset
  1237
makeNewColorMapByMapping:functionOfColor
2566
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1238
    |xMax yMax map revMap anyChange
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1239
     newColors newColorArray newImage pixelAction|
2168
d531fe16bae2 more colormap operations
Claus Gittinger <cg@exept.de>
parents: 2149
diff changeset
  1240
1886
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1241
    anyChange := false.
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1242
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1243
    xMax := image width - 1.
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1244
    yMax := image height - 1.
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1245
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1246
    newImage := image class width:image width height:image height depth:image depth.
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1247
    newImage photometric:image photometric.
2489
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1248
    "/ newImage colorMap:(image colorMap copy).
1886
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1249
    newImage bits:(ByteArray new:(image bits size)).
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1250
    newImage mask:(image mask copy).
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1251
2566
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1252
    image colorMap notNil ifTrue:[
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1253
        newColors := Set new.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1254
        newColorArray := OrderedCollection new.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1255
        map := Array new:256.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1256
        revMap := OrderedCollection new.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1257
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1258
        pixelAction := 
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1259
            [:x :y |
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1260
                |pix n_pix clr n_clr|
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1261
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1262
                pix := image pixelAtX:x y:y.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1263
                (n_pix := map at:pix+1) isNil ifTrue:[
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1264
                    clr := image colorAtX:x y:y.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1265
                    n_clr := functionOfColor value:clr.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1266
                    (newColors includes:n_clr) ifFalse:[
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1267
                        newColors add:n_clr.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1268
                        newColorArray add:n_clr.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1269
                        revMap add:pix.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1270
                        map at:pix+1 put:(n_pix := revMap size - 1).
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1271
                    ] ifTrue:[
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1272
                        "/ mhmh - multiple pixels mapped to the same color
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1273
                        n_pix := (newColorArray indexOf:n_clr) - 1.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1274
                        map at:pix+1 put:n_pix.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1275
                    ]
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1276
                ].
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1277
                newImage pixelAtX:x y:y put:n_pix.
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1278
            ].
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1279
    ] ifFalse:[
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1280
        pixelAction := 
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1281
            [:x :y |
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1282
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1283
                |clr n_clr|
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1284
1886
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1285
                clr := image colorAtX:x y:y.
2168
d531fe16bae2 more colormap operations
Claus Gittinger <cg@exept.de>
parents: 2149
diff changeset
  1286
                n_clr := functionOfColor value:clr.
2566
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1287
                newImage colorAtX:x y:y put:n_clr.
1886
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1288
            ].
2566
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1289
    ].
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1290
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1291
    0 to:yMax do:[:y |
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1292
        0 to:xMax do:[:x |
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1293
            pixelAction value:x value:y
1886
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1294
        ]
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1295
    ].
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1296
2566
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1297
    image colorMap notNil ifTrue:[
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1298
        newImage colorMap:(MappedPalette withColors:newColorArray).
d0894c5f6d4d allow image processing of trueColor images
Claus Gittinger <cg@exept.de>
parents: 2556
diff changeset
  1299
    ].
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  1300
    self newImageWithUndo:newImage.
1886
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1301
    ^ true
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1302
!
e5b5a8850dc5 added make grayScale
Claus Gittinger <cg@exept.de>
parents: 1885
diff changeset
  1303
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1304
makeSubImageX:oldX y:oldY width:newWidth height:newHeight
3706
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1305
    |oldWidth oldHeight newImage newMaskImage needRedraw redrawRect1 redrawRect2 |
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1306
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1307
    oldWidth := image width.
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1308
    oldHeight := image height.
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1309
    self assert:(newWidth <= oldWidth).
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1310
    self assert:(newHeight <= oldHeight).
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1311
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1312
    newImage := image class width:newWidth height:newHeight depth:image depth.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1313
    newImage photometric:image photometric.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1314
    newImage colorMap:image colorMap copy.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1315
    newImage bits:(ByteArray new:(newImage bytesPerRow * newHeight)).
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1316
3706
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1317
    image mask notNil ifTrue:[
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1318
        newMaskImage := Depth1Image width:newWidth height:newHeight.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1319
        newMaskImage photometric: image mask photometric.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1320
        newMaskImage colorMap: image mask colorMap copy.
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1321
        newMaskImage bits:(ByteArray new: newMaskImage bytesPerRow * newHeight).
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1322
        newImage mask: newMaskImage
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1323
    ].
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1324
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1325
    newImage copyFrom:image x:oldX y:oldY toX:0 y:0 width:newWidth height:newHeight.
3706
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1326
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1327
    needRedraw := true.
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1328
    (oldX == 0 and:[oldY == 0]) ifTrue:[
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1329
        needRedraw := false.
5332
32b9a3b4abdb #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5314
diff changeset
  1330
        redrawRect1 := ((newWidth@0) * magnification) corner:(((oldWidth@oldHeight)+1) * magnification).
32b9a3b4abdb #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5314
diff changeset
  1331
        redrawRect2 := ((0@newHeight) * magnification) corner:(((oldWidth@oldHeight)+1) * magnification).
3706
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1332
    ].
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1333
    self image:newImage scroll:false invalidate:needRedraw.
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1334
    redrawRect1 notNil ifTrue:[
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1335
        self invalidateRectangle:redrawRect1 repairNow:false.
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1336
    ].
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1337
    redrawRect2 notNil ifTrue:[
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1338
        self invalidateRectangle:redrawRect2 repairNow:false.
e95e7f0e4f82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3696
diff changeset
  1339
    ].
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
  1340
    self setModified.
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1341
5332
32b9a3b4abdb #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5314
diff changeset
  1342
    "Created: / 07-09-1998 / 13:00:16 / cg"
32b9a3b4abdb #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5314
diff changeset
  1343
    "Modified: / 07-09-1998 / 14:15:32 / cg"
32b9a3b4abdb #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5314
diff changeset
  1344
    "Modified (format): / 16-11-2016 / 23:07:50 / cg"
1121
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1345
!
af09c616fb7b added crob operations.
Claus Gittinger <cg@exept.de>
parents: 1116
diff changeset
  1346
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  1347
makeUndo
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  1348
    image notNil ifTrue:[       
3278
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
  1349
        [undoImages size >= MaxUndos] whileTrue:[
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  1350
            undoImages removeFirst.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  1351
        ].
3610
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1352
        undoImages add:image copy
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  1353
    ]
3278
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
  1354
c42700648b31 shift-paste
Claus Gittinger <cg@exept.de>
parents: 3277
diff changeset
  1355
    "Modified: / 20-11-2007 / 17:26:50 / cg"
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  1356
!
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  1357
636
d53428252193 revised version
tz
parents: 633
diff changeset
  1358
pasteAt: aPoint
1011
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1359
    "paste the image in the clipboard at aPoint"
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1360
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1361
    self pasteAt:aPoint mode:nil.
1011
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1362
!
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1363
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1364
pasteAt: aPoint mode:modeSymbol
1011
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1365
    "paste the image in the clipboard at aPoint"
636
d53428252193 revised version
tz
parents: 633
diff changeset
  1366
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1367
    |answer anyColorMissing choosenBox imagePoint imgX imgY copiedImage imageBox newColorMap
2764
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1368
     existingColors newColors allColors currentColorMap newColormap anyColorAdded oldColorMap|
1888
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1369
4203
a257aa6878ac class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4149
diff changeset
  1370
    Error handle:[:ex|
a257aa6878ac class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4149
diff changeset
  1371
        ex creator == Image unrepresentableColorSignal ifFalse:[
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1372
            ex reject
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1373
        ].
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1374
        self undo.
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  1375
        self warn:(resources stringWithCRs:'Paste failed !!\Increasing the images depth might help.'). 
1823
d11286b90d3b paste mask
Claus Gittinger <cg@exept.de>
parents: 1781
diff changeset
  1376
    ] do: [   
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1377
        windowGroup withExecuteCursorDo:[
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1378
            choosenBox := self dragRectangleStartingAt: aPoint emphasis: #inverseFilledBox.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1379
            choosenBox isNil ifTrue:[ ^ self ].
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1380
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1381
            imagePoint := choosenBox origin//magnification.
1011
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1382
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1383
            copiedImage := Clipboard copy.
5417
054dfa979ced #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5415
diff changeset
  1384
            copiedImage isNil ifTrue:[^ self].
054dfa979ced #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5415
diff changeset
  1385
            
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
  1386
            true "/ image photometric == #palette 
1888
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1387
            ifTrue:[
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1388
                "/ for all colors in the pasted image,
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1389
                "/ check, if its in the colormap of the
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1390
                "/ target image.
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  1391
2764
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1392
                anyColorMissing := anyColorAdded := false.
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1393
                oldColorMap := image colorMap.
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1394
                oldColorMap notNil ifTrue:[
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1395
                    newColorMap := oldColorMap asOrderedCollection.
1957
9a4347986d96 paste with non-colormap image (i.e. truecolor).
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
  1396
                    copiedImage usedValues do:[:pixel |
2764
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1397
                        |pastedColor |
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1398
1957
9a4347986d96 paste with non-colormap image (i.e. truecolor).
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
  1399
                        pastedColor := copiedImage colorFromValue:pixel.
2764
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1400
3762
1baf6a044dd2 changed: #pasteAt:mode:
Claus Gittinger <cg@exept.de>
parents: 3730
diff changeset
  1401
                        (newColorMap includes:pastedColor) ifFalse:[
2764
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1402
                            newColorMap size < (1 bitShift:image depth) ifTrue:[
1957
9a4347986d96 paste with non-colormap image (i.e. truecolor).
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
  1403
                                "/ add to colormap
9a4347986d96 paste with non-colormap image (i.e. truecolor).
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
  1404
                                newColorMap add:pastedColor.
2764
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1405
                                anyColorAdded := true.
1957
9a4347986d96 paste with non-colormap image (i.e. truecolor).
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
  1406
        "/                        Transcript showCR:'adding color:' , pastedColor displayString , ' to targets colorMap'.
9a4347986d96 paste with non-colormap image (i.e. truecolor).
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
  1407
                            ] ifFalse:[
9a4347986d96 paste with non-colormap image (i.e. truecolor).
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
  1408
        "/                        Transcript showCR:'color:' , pastedColor displayString , ' not found in targets colorMap'.
1987
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1409
"/                                copiedImage colorMap notNil ifTrue:[
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1410
"/                                    copiedImage colorMap at: pixel+1 put: Color black.
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1411
"/                                ].
1957
9a4347986d96 paste with non-colormap image (i.e. truecolor).
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
  1412
                                anyColorMissing := true.
9a4347986d96 paste with non-colormap image (i.e. truecolor).
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
  1413
                            ]
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1414
                        ]
1957
9a4347986d96 paste with non-colormap image (i.e. truecolor).
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
  1415
                    ].
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1416
                ].
2764
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1417
1888
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1418
                anyColorMissing ifTrue:[
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1419
                    answer := Dialog
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  1420
                                confirmWithCancel:(resources stringWithCRs:'Some color(s) cannot be represented (colorMap full).\Use nearest or compute colorMap ?') 
2172
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1421
                                labels:#( 'Cancel' 'New ColorMap' 'Use Nearest' )
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1422
                                values:#(  nil new nearest)
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1423
                                default:3.
1888
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1424
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1425
                    answer isNil ifTrue:[^ self].
1986
630db3277f10 support pasing 24bit rgb image into an 8-bit palette image
Claus Gittinger <cg@exept.de>
parents: 1980
diff changeset
  1426
630db3277f10 support pasing 24bit rgb image into an 8-bit palette image
Claus Gittinger <cg@exept.de>
parents: 1980
diff changeset
  1427
                    currentColorMap := image colorMap.
1987
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1428
                    imgX := imagePoint x.
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1429
                    imgY := imagePoint y.
1986
630db3277f10 support pasing 24bit rgb image into an 8-bit palette image
Claus Gittinger <cg@exept.de>
parents: 1980
diff changeset
  1430
1888
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1431
                    answer == #nearest ifTrue:[
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1432
                        0 to:copiedImage height-1 do:[:y |
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1433
                            0 to:copiedImage width-1 do:[:x |
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1434
                                |clr n_clr|
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1435
1987
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1436
                                (copiedImage maskAtX:x y:y) == 0 ifTrue:[
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1437
                                    image mask isNil ifTrue:[
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1438
                                        image createMask.
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1439
                                    ].
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1440
                                    image maskAtX:imgX+x y:imgY+y put:0.
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1441
                                ] ifFalse:[
2582
5f9a25414195 atX:y: changed to #colorAtX :y:
penk
parents: 2566
diff changeset
  1442
                                    clr := copiedImage colorAtX:x y:y.
1987
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1443
                                    n_clr := clr nearestIn:currentColorMap.
2582
5f9a25414195 atX:y: changed to #colorAtX :y:
penk
parents: 2566
diff changeset
  1444
                                    image colorAtX:imgX+x y:imgY+y put:n_clr
1987
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1445
                                ]
1888
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1446
                            ]
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1447
                        ].
1987
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1448
                        image restored.
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1449
                        self redraw: (imageBox := (imagePoint * magnification extent: (Clipboard extent * magnification)) expandedBy: 1@1).
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
  1450
                        self setModified.
1987
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1451
                        ^ self.
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1452
                    ].
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1453
                    answer == #new ifTrue:[
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1454
                        existingColors := image usedValues asIdentitySet.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1455
                        newColors := copiedImage usedValues.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1456
                        allColors := existingColors addAll:newColors.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1457
                        allColors size > (1 bitShift:image depth) ifTrue:[
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  1458
                            self warn:(resources string:'Sorry: too many colors - unimplemented function').
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1459
                            self undo.
1986
630db3277f10 support pasing 24bit rgb image into an 8-bit palette image
Claus Gittinger <cg@exept.de>
parents: 1980
diff changeset
  1460
                            ^ self.
630db3277f10 support pasing 24bit rgb image into an 8-bit palette image
Claus Gittinger <cg@exept.de>
parents: 1980
diff changeset
  1461
                        ].
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1462
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1463
                        newColormap := OrderedCollection new.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1464
                        newColormap addAll:image usedColors.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1465
                        newColormap addAll:copiedImage usedColors.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1466
                        "/ translate image to use new colorMap...
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1467
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1468
                        "/ translate image to use new colors ...
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1469
                        0 to:image height-1 do:[:y |
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1470
                            0 to:image width-1 do:[:x |
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1471
                                |clr n_idx|
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1472
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1473
                                (image maskAtX:x y:y) == 1 ifTrue:[
2582
5f9a25414195 atX:y: changed to #colorAtX :y:
penk
parents: 2566
diff changeset
  1474
                                    clr := image colorAtX:x y:y.
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1475
                                    n_idx := newColormap indexOf:clr.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1476
                                    image pixelAtX:x y:y put:n_idx-1.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1477
                                ]
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1478
                            ]
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1479
                        ].
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1480
                        image colorMap:newColormap.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1481
                        currentColorMap := newColormap.    
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1482
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1483
                        "/ paste new image...    
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1484
                        0 to:copiedImage height-1 do:[:y |
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1485
                            0 to:copiedImage width-1 do:[:x |
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1486
                                |clr idx|
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1487
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1488
                                (copiedImage maskAtX:x y:y) == 1
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1489
                                ifTrue:[
2582
5f9a25414195 atX:y: changed to #colorAtX :y:
penk
parents: 2566
diff changeset
  1490
                                    clr := copiedImage colorAtX:x y:y.
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1491
                                    idx := currentColorMap indexOf:clr.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1492
                                    idx == 0 ifTrue:[
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1493
                                        currentColorMap add:clr.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1494
                                        idx := currentColorMap size.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1495
                                        idx > (1 bitShift:image depth) ifTrue:[
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  1496
                                            self warn:(resources string:'Sorry: too many colors').
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1497
                                            self undo.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1498
                                            ^ self.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1499
                                        ].
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1500
                                    ].
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1501
                                    image pixelAtX:imgX+x y:imgY+y put:idx-1.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1502
                                    image maskAtX:imgX+x y:imgY+y put:1.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1503
                                ]
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1504
                            ]
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1505
                        ].
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1506
                        image restored.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1507
                        self redraw: (imageBox := (imagePoint * magnification extent: (Clipboard extent * magnification)) expandedBy: 1@1).
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
  1508
                        self setModified.
1888
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1509
                        ^ self.
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1510
                    ].
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  1511
                    self warn:(resources string:'Sorry: unimplemented function').
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1512
                    self undo.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1513
                    ^ self.
1888
ef622d292093 colormap conversion
Claus Gittinger <cg@exept.de>
parents: 1886
diff changeset
  1514
                ].
2764
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1515
                anyColorAdded ifTrue:[
2490
62230519175a slowly getting rid of the Colormap class
Claus Gittinger <cg@exept.de>
parents: 2489
diff changeset
  1516
                    image colorMap:(MappedPalette withColors:newColorMap).
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1517
                ].
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1518
            ].
1011
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1519
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1520
            copiedImage := image class fromImage: copiedImage.
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  1521
            (newColorMap isNil 
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1522
            and:[modeSymbol isNil
1987
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1523
            and:[copiedImage mask isNil] ]) ifTrue:[
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  1524
                "/ use images copy functionality
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  1525
                "/ however, this copies the mask as well,
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  1526
                "/ which is not useful here
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1527
                image copyFrom: copiedImage x:0 y:0 toX: imagePoint x y: imagePoint y width: copiedImage width height: copiedImage height.
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1528
            ] ifFalse:[
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1529
                imgX := imagePoint x.
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1530
                imgY := imagePoint y.
1028
4dfe1c6cbc48 fixed paste-drag display (when scrolled)
Claus Gittinger <cg@exept.de>
parents: 1027
diff changeset
  1531
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1532
                0 to:copiedImage height-1 do:[:y |
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1533
                    0 to:copiedImage width-1 do:[:x |
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1534
                        |wasMasked newMasked dstX dstY oldColor|
1011
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1535
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1536
                        dstX := imgX + x.
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1537
                        dstY := imgY + y.
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1538
                        wasMasked := (image maskAtX:dstX y:dstY) == 0.
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1539
                        newMasked := (copiedImage maskAtX:x y:y) == 0.
994
5727c2484ecd bugs fixed in undo/mask and point painting/preview and pasting
tz
parents: 877
diff changeset
  1540
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1541
                        "/ with modeUnder, 
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1542
                        "/ only replace, if its either unmasked,
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1543
                        "/ or the current drawing color.
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1544
                        (modeSymbol isNil
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1545
                        or:[wasMasked
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1546
                        or:[modeSymbol == #withMask]])
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1547
                        ifTrue:[
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  1548
                            newMasked ifFalse:[
2764
3302aab746d2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2756
diff changeset
  1549
                                image colorAtX:dstX y:dstY put:(copiedImage colorAtX:x y:y).
1823
d11286b90d3b paste mask
Claus Gittinger <cg@exept.de>
parents: 1781
diff changeset
  1550
                                wasMasked ifTrue:[
1986
630db3277f10 support pasing 24bit rgb image into an 8-bit palette image
Claus Gittinger <cg@exept.de>
parents: 1980
diff changeset
  1551
                                    image maskAtX:dstX y:dstY put:1
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  1552
                                ].
1823
d11286b90d3b paste mask
Claus Gittinger <cg@exept.de>
parents: 1781
diff changeset
  1553
                            ] ifTrue:[
d11286b90d3b paste mask
Claus Gittinger <cg@exept.de>
parents: 1781
diff changeset
  1554
                                wasMasked ifFalse:[
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1555
                                    modeSymbol == #withMask ifTrue:[
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1556
                                        image maskAtX:dstX y:dstY put:0
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1557
                                    ]
1823
d11286b90d3b paste mask
Claus Gittinger <cg@exept.de>
parents: 1781
diff changeset
  1558
                                ]
d11286b90d3b paste mask
Claus Gittinger <cg@exept.de>
parents: 1781
diff changeset
  1559
                            ].
1987
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1560
                        ].
eb9f2f7f1450 paste image
Claus Gittinger <cg@exept.de>
parents: 1986
diff changeset
  1561
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1562
                    ]
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1563
                ].
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1564
            ].
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1565
            image restored.
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1566
            self redraw: (imageBox := (imagePoint * magnification extent: (Clipboard extent * magnification)) expandedBy: 1@1).
1028
4dfe1c6cbc48 fixed paste-drag display (when scrolled)
Claus Gittinger <cg@exept.de>
parents: 1027
diff changeset
  1567
"/            masterApplication imagePreView redraw: (imageBox expandedBy: 1).
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
  1568
            self setModified.
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1569
        ]
1028
4dfe1c6cbc48 fixed paste-drag display (when scrolled)
Claus Gittinger <cg@exept.de>
parents: 1027
diff changeset
  1570
   ]
4dfe1c6cbc48 fixed paste-drag display (when scrolled)
Claus Gittinger <cg@exept.de>
parents: 1027
diff changeset
  1571
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  1572
    "Modified: / 18.5.1999 / 20:40:37 / cg"
636
d53428252193 revised version
tz
parents: 633
diff changeset
  1573
!
d53428252193 revised version
tz
parents: 633
diff changeset
  1574
1011
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1575
pasteUnderAt: aPoint
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1576
    "pasteUnder the image in the clipboard at aPoint.
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1577
     In this mode, only pixels which are not equal to
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1578
     the current color or masked are pasted."
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1579
2135
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1580
    self pasteAt:aPoint mode:#under.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1581
!
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1582
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1583
pasteWithMaskAt: aPoint
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1584
    "paste the image in the clipboard at aPoint.
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1585
     In this mode, both the mask and the image pixel are pasted"
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1586
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1587
09782f280a97 added "paste with mask"
Claus Gittinger <cg@exept.de>
parents: 2092
diff changeset
  1588
    self pasteAt:aPoint mode:#withMask.
1011
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1589
!
325d334e93c8 added paste-under (only paste where pixel ~= current selected)
Claus Gittinger <cg@exept.de>
parents: 1006
diff changeset
  1590
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1591
performSpecialOperationOn:imageBox withColor:clr
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1592
    |listOfOpNames listOfOpSelectors operation x0 y0 x1 y1 pixelAction requiredColors missingColors answer hue|
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1593
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1594
    listOfOpNames := OrderedCollection new.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1595
    listOfOpSelectors := OrderedCollection new. 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1596
    
5415
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1597
    listOfOpNames addAll:
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1598
        (resources array:#(
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1599
           'edit separately'
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1600
           'extract subimage'
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1601
        )).
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1602
    listOfOpSelectors addAll:
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1603
        #(
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1604
            #edit
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1605
            #editSubImage
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1606
        ).
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1607
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1608
    self readOnly ifFalse:[
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1609
        listOfOpNames addAll:
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1610
            (resources array:#(
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1611
               '-'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1612
               'flip vertical'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1613
               'flip horizontal'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1614
               '-'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1615
               'slightly brightened'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1616
               'slightly darkened'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1617
               'brightened'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1618
               'darkened'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1619
               '-'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1620
               'make grey'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1621
               'greyed'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1622
               'grey pattern'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1623
               'grey pattern (unmasked)'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1624
               '-'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1625
               'reversed'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1626
               '-'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1627
               'change hue'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1628
               'colorize'
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1629
             )).
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1630
                 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1631
        listOfOpSelectors addAll:
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1632
            #(nil
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1633
              flipVertical flipHorizontal nil
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1634
              slightlyBrightened slightlyDarkened brightened darkened nil 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1635
              makeGrey greyed greyPattern unmaskedGreyPattern nil 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1636
              reversed nil 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1637
              changeHue colorize
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1638
            ).
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1639
    ].
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1640
    
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1641
    operation := Dialog 
2680
0e335115a3eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2634
diff changeset
  1642
           choose:(resources string:'Which Operation:')
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1643
           fromList:listOfOpNames
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1644
           values:listOfOpSelectors
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1645
           lines:10
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1646
           cancel:nil.
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1647
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1648
    self invalidate.
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1649
    self windowGroup processExposeEvents.
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1650
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1651
    operation isNil ifTrue:[^ false].
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1652
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1653
    x0 := imageBox left.
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1654
    y0 := imageBox top.
1861
ba1f1a884ebc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1859
diff changeset
  1655
    x1 := imageBox right - 1.
ba1f1a884ebc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1859
diff changeset
  1656
    y1 := imageBox bottom -1 .
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1657
2784
1af62699307d + edit-subImage function
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
  1658
    operation == #edit ifTrue:[
1af62699307d + edit-subImage function
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
  1659
        (self image subImageIn:imageBox) edit.
1af62699307d + edit-subImage function
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
  1660
        ^ false.
1af62699307d + edit-subImage function
Claus Gittinger <cg@exept.de>
parents: 2783
diff changeset
  1661
    ].
5415
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1662
    operation == #editSubImage ifTrue:[
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1663
        self makeUndo.
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1664
        self image:(self image subImageIn:imageBox).
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1665
        ^ false.
71799d6dbfe3 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5414
diff changeset
  1666
    ].
4032
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1667
    operation == #flipVertical ifTrue:[
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1668
        self flipSubImage:#vertical in:imageBox.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1669
        ^ true.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1670
    ].
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1671
    operation == #flipHorizontal ifTrue:[
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1672
        self flipSubImage:#horizontal in:imageBox.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1673
        ^ true.
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1674
    ].
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1675
2177
340ce04ccc78 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2172
diff changeset
  1676
    operation == #slightlyBrightened ifTrue:[
2172
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1677
        pixelAction := [:x :y :clr | clr slightlyLightened].
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1678
    ].
2177
340ce04ccc78 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2172
diff changeset
  1679
    operation == #slightlyDarkened ifTrue:[
2172
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1680
        pixelAction := [:x :y :clr | clr slightlyDarkened].
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1681
    ].
2177
340ce04ccc78 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2172
diff changeset
  1682
    operation == #brightened ifTrue:[
2172
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1683
        pixelAction := [:x :y :clr | clr lightened].
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1684
    ].
2177
340ce04ccc78 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2172
diff changeset
  1685
    operation == #darkened ifTrue:[
2172
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1686
        pixelAction := [:x :y :clr | clr darkened].
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1687
    ].
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1688
    operation == #reversed ifTrue:[
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1689
        pixelAction := [:x :y :clr | Color red:(100-clr red) green:(100-clr green) blue:(100-clr blue) ].
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1690
    ].
2765
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1691
    operation == #makeGrey ifTrue:[
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1692
        pixelAction := [:x :y :clr | Color grey:(clr greyIntensity)].
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1693
    ].
2177
340ce04ccc78 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2172
diff changeset
  1694
    operation == #greyed ifTrue:[
4646
b1faa362e0ac class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4624
diff changeset
  1695
        pixelAction := [:x :y :clr | clr blendWith:Color gray].
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1696
    ].
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1697
    operation == #greyPattern ifTrue:[
2765
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1698
        pixelAction := [:x :y :clr | x odd == y even 
4646
b1faa362e0ac class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4624
diff changeset
  1699
                                        ifTrue:[Color gray] 
2765
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1700
                                        ifFalse:[clr]].
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1701
    ].
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1702
    operation == #unmaskedGreyPattern ifTrue:[
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1703
        pixelAction := [:x :y :clr | x odd == y even 
4646
b1faa362e0ac class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4624
diff changeset
  1704
                                        ifTrue:[self image maskAtX:x y:y put:1. Color gray] 
2765
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1705
                                        ifFalse:[clr]].
2172
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1706
    ].
2765
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1707
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1708
    operation == #changeHue ifTrue:[
5418
6daf3c670147 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5417
diff changeset
  1709
        hue := Dialog request:'Hue (0..360)\red->yellow->green->blue->red' withCRs.
2765
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1710
        hue := Number readFrom:hue onError:nil.
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1711
        hue isNil ifTrue:[^ false].
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1712
        pixelAction := [:x :y :clr | Color hue:(hue+(clr hue?0)) light:clr light saturation:clr saturation].
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1713
    ].
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1714
    operation == #colorize ifTrue:[
5418
6daf3c670147 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5417
diff changeset
  1715
        hue := Dialog request:'Hue (0..360)\red->yellow->green->blue->red' withCRs.
2765
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1716
        hue := Number readFrom:hue onError:nil.
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1717
        hue isNil ifTrue:[^ false].
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1718
        pixelAction := [:x :y :clr | Color hue:hue light:clr light saturation:100]
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1719
    ].
5bc0bfbeac33 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2764
diff changeset
  1720
3564
a587be34447c no halt should be without an argument
Claus Gittinger <cg@exept.de>
parents: 3487
diff changeset
  1721
    pixelAction isNil ifTrue:[
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  1722
        self halt:(resources string:'no pixelAction'). 
3564
a587be34447c no halt should be without an argument
Claus Gittinger <cg@exept.de>
parents: 3487
diff changeset
  1723
        ^ false
a587be34447c no halt should be without an argument
Claus Gittinger <cg@exept.de>
parents: 3487
diff changeset
  1724
    ].
2172
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1725
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1726
    image colorMap notNil ifTrue:[
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1727
        "/ compute required colors ...
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1728
        requiredColors := Set new.
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1729
        self image 
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1730
            colorsFromX:x0 y:y0 toX:x1 y:y1 
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1731
            do:[:x :y :clr | 
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1732
                requiredColors add:(pixelAction value:x value:y value:clr)
2680
0e335115a3eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2634
diff changeset
  1733
            ].
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1734
4231
6aec2775cc1e class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4212
diff changeset
  1735
        missingColors := requiredColors reject:[:clr | (image colorMap includes:clr)].
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1736
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1737
        missingColors notEmpty ifTrue:[
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1738
            answer := Dialog
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  1739
                        confirmWithCancel:(resources stringWithCRs:'Some color(s) cannot be represented in the images colorMap.\Use nearest or compute colorMap ?')
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1740
                        labels:#( 'Cancel' 'Add to ColorMap'  'Use Nearest')
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1741
                        values:#( nil add nearest)
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1742
                        default:3.
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1743
            answer isNil ifTrue:[^ false].
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1744
            answer == #add ifTrue:[
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1745
                missingColors size + image colorMap size > (2 raisedTo:image depth) ifTrue:[
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  1746
                    self warn:(resources string:'Missing colors cannot be added to images colormap.').
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1747
                    ^ false
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1748
                ].
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1749
                missingColors do:[:eachColor |
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1750
                    image colorMap add:eachColor
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1751
                ].
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  1752
                answer := #nearest.
2172
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1753
            ].
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1754
        ].
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1755
    ].
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1756
2172
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1757
    "/ now, do it
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1758
    self image 
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1759
        colorsFromX:x0 y:y0 toX:x1 y:y1 
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1760
        do:[:x :y :clr |
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1761
            |newClr|
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1762
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1763
            newClr := pixelAction value:x value:y value:clr.
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1764
            answer == #nearest ifTrue:[
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1765
                newClr := newClr nearestIn:image colorMap
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1766
            ].
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1767
            self image colorAtX:x y:y put:newClr
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1768
        ].
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1769
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
  1770
    self setModified.
2172
737d8733fb01 brightemed, darkened, reverse etc. added to operations.
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
  1771
    ^ true.
4032
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1772
f293d37675b5 added: #flipSubImage:in:
Claus Gittinger <cg@exept.de>
parents: 4000
diff changeset
  1773
    "Modified: / 07-04-2011 / 09:28:20 / cg"
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1774
!
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1775
2009
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
  1776
pointAt:aPoint
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  1777
    "draw a single pixel with the currently selected color"
636
d53428252193 revised version
tz
parents: 633
diff changeset
  1778
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1779
    self pointAt:aPoint width:self penWidth.
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1780
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1781
    "Modified: / 15-02-2012 / 22:47:30 / cg"
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1782
!
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1783
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1784
pointAt:aPoint width:pw
4715
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1785
    "draw a single pixel (or dot of width pw) with the currently selected color"
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1786
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1787
    |draw imagePoint clr pix|
796
b68b09ddc62b preview redrawing
tz
parents: 783
diff changeset
  1788
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1789
    imagePoint := aPoint // magnification.
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  1790
    (imagePoint x between:0 and:image width-1) ifFalse:[^ self].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  1791
    (imagePoint y between:0 and:image height-1) ifFalse:[^ self].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  1792
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1793
    draw := 
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1794
        [:point |
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1795
            image colorMap isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1796
                clr := self selectedColor.
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1797
                image atImageAndMask:point put:clr.
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1798
            ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1799
                pix := self selectedColorIndex.
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1800
                image atImageAndMask:point putValue:pix.
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1801
            ].             
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1802
            self invalidate:((point * magnification extent: magnification) expandedBy:1).
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1803
        ].
4715
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1804
3265
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
  1805
    draw value:imagePoint.
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
  1806
4715
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1807
    pw > 1 ifTrue:[
3610
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1808
        "/ draw with a wide pen
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1809
        (pw//2) negated to:(pw-(pw//2)-1) do:[:xOffs |
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1810
            (pw//2) negated to:(pw-(pw//2)-1) do:[:yOffs |
3267
ee55a3b2f6fc changed #pointAt:
Claus Gittinger <cg@exept.de>
parents: 3266
diff changeset
  1811
                imagePoint x + xOffs >= 0 ifTrue:[
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  1812
                    imagePoint y + yOffs >= 0 ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  1813
                        draw value:(imagePoint + (xOffs@yOffs)).
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  1814
                    ].
3267
ee55a3b2f6fc changed #pointAt:
Claus Gittinger <cg@exept.de>
parents: 3266
diff changeset
  1815
                ].
3266
7b8c5b21fca3 changed #pointAt:
Claus Gittinger <cg@exept.de>
parents: 3265
diff changeset
  1816
            ].
3265
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
  1817
        ].
1246
0cd36bffc789 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1245
diff changeset
  1818
    ].
2823
201bf0929edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  1819
    self setModified.
3265
f22de2c4383d pen width
Claus Gittinger <cg@exept.de>
parents: 2917
diff changeset
  1820
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  1821
    "Created: / 15-02-2012 / 22:47:08 / cg"
636
d53428252193 revised version
tz
parents: 633
diff changeset
  1822
!
d53428252193 revised version
tz
parents: 633
diff changeset
  1823
2086
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1824
shiftImageHorizontal:shiftH vertical:shiftV
2489
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1825
    self shiftImageHorizontal:shiftH vertical:shiftV wrap:false
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1826
!
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1827
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1828
shiftImageHorizontal:shiftH vertical:shiftV wrap:doWrap
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1829
    "shift the pixels; 
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1830
     shift<0 is left-shift/up-shift; shift>0 is right-shift/down-shift;
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1831
     doWrap controls if shifted-out pixels are to be shifted in at the opposite side.
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1832
     i.e.:
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1833
        0123456789 -> 3456789789 (shift: -3)    0123456789 -> 0120123456 (shift:3)
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1834
     or, with wrap:
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1835
        0123456789 -> 3456789012 (shift: -3)    0123456789 -> 7890123456 (shift:3)
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1836
    "
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1837
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1838
    |newImage|
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1839
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1840
    newImage := self shifted:image horizontal:shiftH vertical:shiftV wrap:doWrap.
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1841
    self image:newImage.
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
  1842
    self setModified.
2489
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1843
!
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1844
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1845
shifted:image horizontal:shiftH vertical:shiftV wrap:doWrap
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1846
    "shift the pixels; 
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1847
     shift<0 is left-shift/up-shift; shift>0 is right-shift/down-shift;
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1848
     doWrap controls if shifted-out pixels are to be shifted in at the opposite side.
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1849
     i.e.:
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1850
        0123456789 -> 3456789789 (shift: -3)    0123456789 -> 0120123456 (shift:3)
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1851
     or, with wrap:
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1852
        0123456789 -> 3456789012 (shift: -3)    0123456789 -> 7890123456 (shift:3)
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1853
    "
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1854
2086
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1855
    |w h srcX srcY dstX dstY newImage|
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1856
2489
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1857
    doWrap ifTrue:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1858
        "/ if wrapping, split into two operations to make wrap-code below simpler.
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1859
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1860
        shiftH ~~ 0 ifTrue:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1861
            shiftV ~~ 0 ifTrue:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1862
                newImage := self shifted:image    horizontal:shiftH vertical:0 wrap:doWrap.
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1863
                newImage := self shifted:newImage horizontal:0      vertical:shiftV wrap:doWrap.
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1864
                ^ newImage
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1865
            ].
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1866
        ].
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1867
    ].
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1868
    (shiftV == 0 and:[shiftH == 0]) ifTrue:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1869
        ^ image
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1870
    ].
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1871
2086
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1872
    w := image width.
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1873
    h := image height.
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1874
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1875
    newImage := image copy.
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1876
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1877
    srcX := srcY := dstX := dstY := 0.
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1878
    shiftH < 0 ifTrue:[
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1879
        srcX := shiftH negated
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1880
    ] ifFalse:[
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1881
        dstX := shiftH
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1882
    ].
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1883
    shiftV < 0 ifTrue:[
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1884
        srcY := shiftV negated
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1885
    ] ifFalse:[
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1886
        dstY := shiftV
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1887
    ].
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1888
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1889
    newImage copyFrom:image x:srcX y:srcY toX:dstX y:dstY width:w-shiftH abs height:h-shiftV abs.
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1890
2489
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1891
    doWrap ifTrue:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1892
        srcX := srcY := dstX := dstY := 0.
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1893
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1894
        "/ already simplified - see above
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1895
        shiftH ~~ 0 ifTrue:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1896
            "/ shiftV known to be 0
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1897
            shiftH < 0 ifTrue:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1898
                dstX := w-1-shiftH negated
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1899
            ] ifFalse:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1900
                srcX := w-1-shiftH
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1901
            ].
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1902
            w := shiftH abs.
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1903
        ] ifFalse:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1904
            "/ shiftH known to be 0
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1905
            shiftV < 0 ifTrue:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1906
                dstY := h-1-shiftV negated
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1907
            ] ifFalse:[
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1908
                srcY := h-1-shiftV
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1909
            ].
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1910
            h := shiftV abs.
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1911
        ].
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1912
        newImage copyFrom:image x:srcX y:srcY toX:dstX y:dstY width:w height:h.
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1913
        ^ newImage
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1914
    ].
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1915
f5654b8104f4 shift + wrap
Claus Gittinger <cg@exept.de>
parents: 2480
diff changeset
  1916
    ^ newImage.
2086
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1917
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1918
    "Created: / 7.9.1998 / 13:00:16 / cg"
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1919
    "Modified: / 7.9.1998 / 14:15:32 / cg"
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1920
!
3e32adf8adab added shift operation
Claus Gittinger <cg@exept.de>
parents: 2085
diff changeset
  1921
4715
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1922
smoothAt:aPoint
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1923
    "smoth (average) a single pixel with pixels around"
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1924
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1925
    |draw imagePoint x y w h|
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1926
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1927
    imagePoint := aPoint // magnification.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1928
    w := image width.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1929
    h := image height.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1930
    ((x := imagePoint x) between:0 and:w-1) ifFalse:[^ self].
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1931
    ((y := imagePoint y) between:0 and:h-1) ifFalse:[^ self].
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1932
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1933
    draw := 
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1934
        [:point |
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1935
            |sumRed sumGreen sumBlue newClr|
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1936
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1937
            sumRed := sumGreen := sumBlue := 0.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1938
            -1 to:1 do:[:dx |
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1939
                -1 to:1 do:[:dy |
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1940
                    |clr|
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1941
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1942
                    ((x + dx) between:0 and:w-1) ifTrue:[
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1943
                        ((y + dy) between:0 and:h-1) ifTrue:[   
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1944
                            clr := image colorAtX:(x + dx) y:(y + dy).
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1945
                            sumRed := sumRed + clr redByte.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1946
                            sumGreen := sumGreen + clr greenByte.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1947
                            sumBlue := sumBlue + clr blueByte.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1948
                        ]
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1949
                    ].
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1950
                ]
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1951
            ].
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1952
            newClr := Color 
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1953
                        redByte:(sumRed / 9) rounded
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1954
                        greenByte:(sumGreen / 9) rounded 
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1955
                        blueByte:(sumBlue / 9) rounded. 
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1956
            image colorMap isNil ifTrue:[
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1957
Transcript 
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1958
    show:(image colorAt:point);
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1959
    show:' -> ';
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1960
    showCR:newClr.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1961
                image atImageAndMask:point put:newClr.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1962
            ] ifFalse:[
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1963
                image atImageAndMask:point put:(image colorMap colorNearestTo:newClr).
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1964
            ].             
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1965
            self invalidate:((point * magnification extent: magnification) expandedBy:1).
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1966
        ].
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1967
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1968
    draw value:imagePoint.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1969
    self setModified.
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1970
!
c851a10dd606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4714
diff changeset
  1971
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1972
specialOperationAt: aPoint
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1973
    "special operation on a rectangular area"
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1974
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1975
    |choosenBox imageBox|
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1976
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  1977
    choosenBox := self dragRectangleStartingAt: aPoint emphasis:#inverseFilledBox.
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1978
    choosenBox isNil ifTrue:[ ^ self ].
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1979
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  1980
    imageBox := choosenBox origin//magnification extent: (choosenBox extent//magnification).
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1981
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1982
    (self performSpecialOperationOn:imageBox withColor:self selectedColor) ifFalse:[
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1983
        ^ self
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1984
    ].
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1985
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1986
    image restored.
1861
ba1f1a884ebc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1859
diff changeset
  1987
    self invalidate. "/ : (choosedBox expandedBy: 1).
ba1f1a884ebc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1859
diff changeset
  1988
ba1f1a884ebc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1859
diff changeset
  1989
    "/ self redraw: (choosedBox expandedBy: 1).
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1990
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1991
"/        "/ cg: what a kludge - please change to use a valueHolder,
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1992
"/        "/ which gets the information ...
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1993
"/        masterApplication imagePreView redraw: (imageBox expandedBy: 1).
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1994
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1995
        "/ cg: still a kludge - but less ugly
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1996
    self changed:#subImageIn with:(imageBox expandedBy: 1).
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1997
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
  1998
    self setModified.
1858
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  1999
!
54138b1b3efd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1855
diff changeset
  2000
3476
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2001
sprayAt: aPoint
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2002
    "start spraying with the currently selected color"
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2003
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2004
    |clr|
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2005
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2006
    (clr := self selectedColor) notNil ifTrue:[
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2007
        sprayPosition := aPoint.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2008
        self startSpray.
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2009
    ].
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2010
!
4b4dce2bd87b +spray and circle
Claus Gittinger <cg@exept.de>
parents: 3435
diff changeset
  2011
3277
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2012
text:aString at:aPoint
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2013
    "draw a character"
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2014
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2015
    |tempForm|
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2016
4999
e0111330133e device access
Claus Gittinger <cg@exept.de>
parents: 4967
diff changeset
  2017
    tempForm := Form extent:(image extent) depth:1 onDevice:device.
3277
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2018
    tempForm clear.
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2019
    tempForm paint:(Color colorId:1).
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2020
    tempForm displayString:aString at:aPoint.
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2021
    0 to:image extent x - 1 do:[:x |
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2022
        0 to:image extent y - 1 do:[:y |
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2023
            (tempForm valueAt:(x@y)) == 1 ifTrue:[
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  2024
                self pointAt:(x@y) width:1
3277
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2025
            ].
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2026
        ]
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2027
    ].
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2028
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  2029
    "Modified: / 15-02-2012 / 22:47:44 / cg"
3277
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2030
!
eec79393828e text:at:
Claus Gittinger <cg@exept.de>
parents: 3267
diff changeset
  2031
636
d53428252193 revised version
tz
parents: 633
diff changeset
  2032
undo
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  2033
    undoImages notEmpty ifTrue:[           
1374
44f511c341c0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1373
diff changeset
  2034
        windowGroup withExecuteCursorDo:[
4967
d7192072dceb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4965
diff changeset
  2035
            |oldImage newImage|
d7192072dceb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4965
diff changeset
  2036
            
d7192072dceb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4965
diff changeset
  2037
            oldImage := self image.
d7192072dceb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4965
diff changeset
  2038
            newImage := undoImages removeLast.
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
  2039
            self clearModified.
4967
d7192072dceb #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4965
diff changeset
  2040
            self image:newImage scroll:(newImage extent ~= oldImage extent) "false".
3610
11e215de80a0 color selection when undoing
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2041
            "/ self changed:#image.
1374
44f511c341c0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1373
diff changeset
  2042
        ]
636
d53428252193 revised version
tz
parents: 633
diff changeset
  2043
    ]
1038
6c0bb03e88a1 no need to invalidate after assign of new image.
Claus Gittinger <cg@exept.de>
parents: 1037
diff changeset
  2044
1693
5f8be1b4f856 de-uglified
Claus Gittinger <cg@exept.de>
parents: 1510
diff changeset
  2045
    "Modified: / 10.2.2000 / 23:21:24 / cg"
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  2046
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  2047
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2048
!ImageEditView methodsFor:'image manipulation'!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2049
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2050
brightenImage
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2051
    self newImageWithUndo: (image copy lightened).
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2052
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2053
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2054
darkenImage
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2055
    self newImageWithUndo: (image copy darkened).
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2056
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2057
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2058
flipHorizontal
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2059
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2060
    self newImageWithUndo: image copy flipHorizontal.
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2061
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2062
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2063
flipVertical
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2064
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2065
    self makeUndo.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2066
    self image: image copy flipVertical.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2067
    self setModified.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2068
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2069
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2070
makeBorderedImageX:newX y:newY width:newWidth height:newHeight
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2071
    |newImage oldWidth oldHeight|
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2072
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2073
    oldWidth := image width.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2074
    oldHeight := image height.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2075
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2076
    newImage := image class width:newWidth height:newHeight depth:image depth.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2077
    newImage photometric:image photometric.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2078
    newImage colorMap:image colorMap copy.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2079
    newImage bits:(ByteArray new:(newImage bytesPerRow * newHeight)).
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2080
2842
fe13fb01edd3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2841
diff changeset
  2081
    image mask notNil ifTrue:[
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2082
        |newMaskImage|
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2083
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2084
        newMaskImage := Depth1Image width:newWidth height:newHeight.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2085
        newMaskImage photometric: image mask photometric.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2086
        newMaskImage colorMap: image mask colorMap copy.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2087
        newMaskImage bits:(ByteArray new: newMaskImage bytesPerRow * newHeight).
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2088
        newImage mask: newMaskImage
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2089
    ].
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2090
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2091
    newImage copyFrom:image x:0 y:0 toX:newX y:newY width:oldWidth height:oldHeight.
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2092
    self newImageWithUndo:newImage.
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2093
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2094
    "Created: / 7.9.1998 / 13:00:16 / cg"
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2095
    "Modified: / 7.9.1998 / 14:15:32 / cg"
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2096
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2097
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2098
makeBrighter
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2099
    ^ self makeNewColorMapByMapping:[:clr | clr lightened].
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2100
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2101
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2102
makeDarker
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2103
    ^ self makeNewColorMapByMapping:[:clr | clr darkened].
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2104
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2105
2841
0f0750749f34 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2839
diff changeset
  2106
makeGrayScaleImage
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2107
    ^ self makeNewColorMapByMapping:
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2108
        [:clr | Color brightness:(clr brightness)].
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2109
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2110
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2111
makeInverse
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2112
    ^ self makeNewColorMapByMapping:
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2113
        [:clr | 
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2114
            Color red:(100-clr red) green:(100-clr green) blue:(100-clr blue)
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2115
        ].
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2116
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2117
3971
Claus Gittinger <cg@exept.de>
parents: 3931
diff changeset
  2118
makeSlightlyBrighter
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2119
    ^ self makeNewColorMapByMapping:
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2120
        [:clr | 
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2121
            clr brightness > Color lightGray brightness
5163
955f893d03f2 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 5093
diff changeset
  2122
                ifTrue:[ clr blendWith:self whiteColor ] 
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2123
                ifFalse:[ clr blendWith:Color lightGray ]
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2124
        ].
3971
Claus Gittinger <cg@exept.de>
parents: 3931
diff changeset
  2125
Claus Gittinger <cg@exept.de>
parents: 3931
diff changeset
  2126
    "Created: / 24-11-2010 / 11:08:18 / cg"
Claus Gittinger <cg@exept.de>
parents: 3931
diff changeset
  2127
!
Claus Gittinger <cg@exept.de>
parents: 3931
diff changeset
  2128
Claus Gittinger <cg@exept.de>
parents: 3931
diff changeset
  2129
makeSlightlyDarker
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2130
    ^ self makeNewColorMapByMapping:
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2131
        [:clr | 
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2132
            clr brightness < Color darkGray brightness
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2133
                ifTrue:[ clr blendWith:Color black ] 
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2134
                ifFalse:[ clr blendWith:Color darkGray ]
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2135
        ].
3971
Claus Gittinger <cg@exept.de>
parents: 3931
diff changeset
  2136
Claus Gittinger <cg@exept.de>
parents: 3931
diff changeset
  2137
    "Created: / 24-11-2010 / 11:08:08 / cg"
Claus Gittinger <cg@exept.de>
parents: 3931
diff changeset
  2138
!
Claus Gittinger <cg@exept.de>
parents: 3931
diff changeset
  2139
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2140
negativeImage
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2141
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2142
    self newImageWithUndo: (image copy bits:(image bits invert)).
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2143
!
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2144
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2145
newImageWithUndo:newImage
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2146
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2147
    self makeUndo.
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2148
    self image: newImage.
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2149
    self setModified.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2150
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2151
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2152
reduceColorResolutionBy:numBits
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2153
    |newImage|
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2154
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2155
    numBits > 7 ifTrue:[
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  2156
        self warn:(resources string:'Max. number of bits to strip off is 7.').
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2157
        ^ false
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2158
    ].
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2159
    newImage := image withColorResolutionReducedBy:numBits.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2160
    newImage isNil ifTrue:[
5061
f8346c455a4b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5029
diff changeset
  2161
        self warn:(resources string:'Could not reduce color resolution.').
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2162
        ^ false.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2163
    ].
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2164
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2165
    self newImageWithUndo:newImage.
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2166
    ^ true
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2167
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2168
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2169
resizeImageTo:newSize
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2170
    self newImageWithUndo: (self resizedImage:image to:newSize).
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2171
!
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2172
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2173
resizedImage:image to:newSize
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2174
    "helper for image resize and mask resize.
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2175
     return a resized version of image"
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2176
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2177
    |newImage newMaskImage|
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2178
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2179
    newImage := image class width: newSize x height: newSize y depth: image depth.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2180
    newImage photometric:image photometric.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2181
    newImage colorMap:image colorMap copy.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2182
    newImage bits: (ByteArray new: newImage bytesPerRow * newSize y).
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2183
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2184
    image mask notNil ifTrue:[
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2185
        newMaskImage := Depth1Image width: newSize x height: newSize y.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2186
        newMaskImage photometric: image mask photometric.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2187
        newMaskImage colorMap: image mask colorMap copy.
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2188
        newMaskImage bits:(ByteArray new: newMaskImage bytesPerRow * newSize y).
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2189
        newImage mask: newMaskImage
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2190
    ].
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2191
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2192
    newImage copyFrom:image x:0 y:0 toX:0 y:0 width: (image width min:newSize x) height: (image height min:newSize y).
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2193
    ^ newImage.
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2194
!
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2195
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2196
rotateImageBy:rotation
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2197
    "rotate by (degrees)"
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2198
4212
4b84444912b5 exception access
Claus Gittinger <cg@exept.de>
parents: 4203
diff changeset
  2199
    Error handle:[:ex|
3435
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2200
        self warn: 'Image rotation failed!!\' withCRs, 'Increasing the image depth could help.'
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2201
    ] do:[   
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2202
        self newImageWithUndo: (image hardRotated: rotation).
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2203
    ]
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2204
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2205
    "Modified: / 29.7.1998 / 18:21:14 / cg"
3435
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2206
!
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2207
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2208
threeDProjection:dx1 and:dx2
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2209
    "3D projection"
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2210
4212
4b84444912b5 exception access
Claus Gittinger <cg@exept.de>
parents: 4203
diff changeset
  2211
    Error handle:[:ex|
3435
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2212
        self warn: 'Image projection failed!!\' withCRs, 'Increasing the image depth could help.'
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2213
    ] do:[   
4730
bcf8e15b7606 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4723
diff changeset
  2214
        self newImageWithUndo:(image threeDProjected:dx1 and:dx2)
3435
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2215
    ]
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2216
400079196849 3D perspecitve (first attempt)
Claus Gittinger <cg@exept.de>
parents: 3319
diff changeset
  2217
    "Modified: / 29.7.1998 / 18:21:14 / cg"
2839
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2218
! !
312c7d2616bf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2838
diff changeset
  2219
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2220
!ImageEditView methodsFor:'image-dragging & info'!
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2221
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  2222
dragRectangleStartingAt:aPointIn emphasis:emphasis
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2223
    "draw a drag rectangle (filled or unfilled, depending on the emphasis arg).
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2224
     This is called by operation like 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2225
     rectangle, filledRectangle, copy etc. 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2226
     (i.e. any operation which operates on a box).
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2227
     emphasis is one of:
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2228
        box              - a frame is drawn
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2229
        inverseFilledBox - the dragged box is filled by the inverse color
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2230
        filledBox        - the dragged box is filled with black
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2231
        grayedBox        - the dragged box is drawn with a gray shadow
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2232
    "
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2233
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2234
    |currentPoint currentExtent firstPoint lastCurrentPoint gridCorrection 
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2235
     mp lastMp p whichQuarter scrollX scrollY aPoint sensor|
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2236
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2237
    aPoint := aPointIn.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2238
    firstPoint := currentPoint := lastCurrentPoint :=  aPoint//magnification*magnification.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2239
    magnification >= GridMagnificationLimit ifFalse: [gridCorrection := 0] ifTrue: [gridCorrection := 1].
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2240
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2241
    sensor := self sensor.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2242
    [sensor anyButtonPressed] whileTrue: [                                                  
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2243
        (sensor hasKeyEventFor:nil) ifTrue:[
2838
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  2244
            self invalidate.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  2245
            ^ nil.
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  2246
        ].
8525a35121d2 changeHLS fixed dfor depth24-images;
Claus Gittinger <cg@exept.de>
parents: 2824
diff changeset
  2247
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2248
        mp := sensor mousePoint.
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2249
        mp = lastMp ifTrue:[
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2250
            Delay waitForSeconds:0.05
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2251
        ] ifFalse:[
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2252
            lastMp := mp.
4999
e0111330133e device access
Claus Gittinger <cg@exept.de>
parents: 4967
diff changeset
  2253
            mp := device translatePoint:mp fromView:nil toView:self.
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2254
            "/ mp is a device coordinate here ...
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2255
            scrollX := 0.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2256
            mp x > width ifTrue:[
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2257
                scrollX := mp x - width.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2258
            ] ifFalse:[
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2259
                mp x < 0 ifTrue:[
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2260
                    scrollX := mp x.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2261
                ]
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2262
            ].
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2263
            scrollY := 0.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2264
            mp y > height ifTrue:[
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2265
                scrollY := mp y - height.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2266
            ] ifFalse:[
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2267
                mp y < 0 ifTrue:[
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2268
                    scrollY := mp y.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2269
                ]
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2270
            ].
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2271
            (scrollX + scrollY) ~~ 0 ifTrue:[
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2272
                self scrollTo:(self viewOrigin + (scrollX @ scrollY)).
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2273
                lastMp := nil.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2274
            ].
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2275
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2276
            mp := mp + self viewOrigin.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2277
            "/ mp is now a logical coordinate.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2278
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2279
            currentPoint := (0@0) max: (image extent * magnification min: (p := mp)).
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2280
            currentPoint := currentPoint//magnification*magnification.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2281
            currentExtent := (firstPoint - currentPoint) abs.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2282
            whichQuarter := (firstPoint x - currentPoint x) > 0 
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2283
                 ifTrue:  [(firstPoint y - currentPoint y) > 0 ifTrue: ["4"1@1] ifFalse: ["3"1@0]]
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2284
                 ifFalse: [(firstPoint y - currentPoint y) > 0 ifTrue: ["1"0@1] ifFalse: ["2"0@0]].
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2285
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2286
            self showCursorAt: p andInformation: 
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2287
                ((firstPoint//magnification - whichQuarter + 1) printString, 
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2288
                ' to: ', 
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2289
                (currentPoint//magnification + whichQuarter) printString),
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2290
                ' (extent: ',
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2291
                (currentExtent//magnification) printString, ')'.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2292
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2293
            currentPoint ~= lastCurrentPoint ifTrue:[
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2294
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2295
                emphasis == #grayedBox ifTrue:[
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2296
                    "/ does not yet work                
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2297
                    |org ext|
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2298
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2299
                    "/ org := (firstPoint min: lastCurrentPoint) - 1.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2300
                    "/ ext := (firstPoint - lastCurrentPoint) abs + 2.
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2301
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2302
                    (lastCurrentPoint x > currentPoint x
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2303
                      or:[ (lastCurrentPoint y > currentPoint y) ]
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2304
                    ) ifTrue:[
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2305
                        self 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2306
                            redrawImageX:firstPoint x"-1" y:firstPoint y"-1" 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2307
                            width:(lastCurrentPoint x-firstPoint x"+2") height:(lastCurrentPoint y-firstPoint y"+2")
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2308
                            unmaskedOnly:false processColorsWith:[:clr | clr ].
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2309
                        "/ self drawFramesIn:(firstPoint corner:lastCurrentPoint).   
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2310
                    ].
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2311
                    
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2312
                    self 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2313
                        redrawImageX:firstPoint x"-1" y:firstPoint y"-1 "
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2314
                        width:(currentPoint x-firstPoint x"+2") height:(currentPoint y-firstPoint y"+2") 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2315
                        unmaskedOnly:true processColorsWith:[:clr | Color gray: clr grayIntensity / 2 ].
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2316
                ].
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2317
                
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2318
                emphasis == #inverseFilledBox ifTrue: [
5414
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2319
                    |union invertOutside|
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2320
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2321
                    invertOutside := false.
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2322
"/                    union := (firstPoint corner:currentPoint) merge:(firstPoint corner:lastCurrentPoint).
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2323
"/                    ((lastCurrentPoint x > currentPoint x)
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2324
"/                    and:[ lastCurrentPoint y > currentPoint y ]) ifTrue:[
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2325
"/                        "/ a real shrink
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2326
"/                        invertOutside := true.
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2327
"/                        self xoring: [ 
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2328
"/                            union areasOutside:(firstPoint corner:lastCurrentPoint) do:[:r |
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2329
"/                                self fillRectangle: ((firstPoint min: currentPoint) + margin extent: currentExtent - gridCorrection) 
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2330
"/                            ]
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2331
"/                        ]
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2332
"/                    ] ifFalse:[    
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2333
"/                        ((currentPoint x > lastCurrentPoint x)
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2334
"/                        and:[ currentPoint y > lastCurrentPoint y ]) ifTrue:[
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2335
"/                            "/ a real grow
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2336
"/                            invertOutside := true.
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2337
"/                            self xoring: [ 
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2338
"/                                union areasOutside:(firstPoint corner:currentPoint) do:[:r |
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2339
"/                                    self fillRectangle: ((firstPoint min: currentPoint) + margin extent: currentExtent - gridCorrection) 
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2340
"/                                ]
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2341
"/                            ]
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2342
"/                        ].     
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2343
"/                    ].
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2344
                    invertOutside ifFalse:[    
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2345
                        self redraw: ((firstPoint min: lastCurrentPoint) - 1 extent: (firstPoint - lastCurrentPoint) abs + 2).
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2346
                        gc xoring: [ 
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2347
                            gc fillRectangle: ((firstPoint min: currentPoint) + margin extent: currentExtent - gridCorrection) 
5414
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2348
                        ]
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2349
                    ].
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2350
                ].
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2351
                
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2352
                emphasis == #box ifTrue:[
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2353
                    |origin extent lineWidthY lineWidthX|
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2354
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2355
                    origin := (firstPoint min: lastCurrentPoint) - 1.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2356
                    extent := (firstPoint - lastCurrentPoint) abs + 2.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2357
                    lineWidthY := extent y min: (magnification y + 2).
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2358
                    lineWidthX := extent x min: (magnification x + 2).
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2359
                    self redraw: (origin extent: (extent x@lineWidthY)).
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2360
                    self redraw: ((origin x@(origin y + extent y - lineWidthY)) extent: (extent x@lineWidthY)).
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2361
                    self redraw: ((origin x@(origin y + lineWidthY)) extent: (lineWidthX@(0 max: (extent y - (lineWidthY * 2))))).
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2362
                    self redraw: (((origin x + extent x - lineWidthX)@(origin y + lineWidthY)) extent: (lineWidthX@(extent y - (lineWidthY * 2)))).
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2363
                    (self selectedColor ~= Color noColor)
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2364
                        ifTrue: [gc paint: self selectedColor]
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2365
                        ifFalse: [gc paint: self viewBackground]. 
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2366
                    origin := (firstPoint min: currentPoint) + margin.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2367
                    extent := currentExtent - gridCorrection.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2368
                    lineWidthY := extent y min: magnification y.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2369
                    lineWidthX := extent x min: magnification x.
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2370
                    (lineWidthY > 0 and: [lineWidthX > 0]) ifTrue:[
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2371
                        gc fillRectangle: (origin extent: (extent x@lineWidthY)).
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2372
                        gc fillRectangle: ((origin x@(origin y + extent y - lineWidthY)) extent: (extent x@lineWidthY)).
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2373
                        gc fillRectangle: ((origin x@(origin y + lineWidthY)) extent: (lineWidthX@(0 max: (extent y - (lineWidthY * 2))))).
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2374
                        gc fillRectangle: (((origin x + extent x - lineWidthX)@(origin y + lineWidthY)) extent: (lineWidthX@(extent y - (lineWidthY * 2)))).
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2375
                    ]
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2376
                ].
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2377
                
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2378
                emphasis == #filledBox ifTrue:[
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2379
                    self redraw: ((firstPoint min: lastCurrentPoint) - 1 extent: (firstPoint - lastCurrentPoint) abs + 2).
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2380
                    (self selectedColor ~= Color noColor)
5432
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2381
                        ifTrue: [gc paint: self selectedColor]
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2382
                        ifFalse: [gc paint: self viewBackground].
6f103b797668 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 5418
diff changeset
  2383
                    gc fillRectangle: ((firstPoint min: currentPoint) + margin extent: currentExtent - gridCorrection).
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2384
                ].
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2385
            ]. 
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2386
            lastCurrentPoint := currentPoint.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2387
        ].                  
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2388
    ].                  
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2389
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2390
    ^((0@0) max: (firstPoint min: currentPoint)) extent: (firstPoint - currentPoint) abs
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2391
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2392
    "Created: / 21.8.1998 / 20:17:07 / cg"
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2393
    "Modified: / 10.10.2001 / 14:13:08 / cg"
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2394
!
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2395
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2396
drawCursorAt:aPoint
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2397
    |imgPoint shownCursor|
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2398
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
  2399
    readOnly ifTrue:[^ self].
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2400
    image isNil ifTrue: [
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2401
        self updateImageInfo: self imageInfoString. 
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2402
        self cursor:Cursor stop.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2403
        ^ self
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2404
    ].
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2405
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2406
    imgPoint := aPoint // magnification.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2407
    ((imgPoint x between:0 and:(image width-1)) 
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2408
      and:[imgPoint y between:0 and: (image height-1)]
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2409
    ) ifFalse:[
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2410
        self updateImageInfo:self imageInfoString. 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2411
        shownCursor := Cursor stop.
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2412
    ] ifTrue: [
3729
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2413
        self updateImageInfoFor:imgPoint.
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2414
        shownCursor := Cursor crossHair
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2415
    ].
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2416
    self cursor:shownCursor.
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2417
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
  2418
    "Modified: / 03-05-2011 / 12:27:52 / cg"
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2419
!
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2420
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2421
showCursorAt: aPoint andInformation: aLabel
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2422
    |shownCursor|
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2423
    
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
  2424
    readOnly ifTrue:[^ self].
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2425
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2426
    ((0@0 extent: image extent * magnification) containsPoint: aPoint)
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2427
         ifTrue: [ shownCursor := Cursor crossHair ]
5414
641d2f0d748c #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5413
diff changeset
  2428
         ifFalse:[ shownCursor := Cursor stop ].
5413
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2429
    self cursor:shownCursor. 
6211fc3b725a #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5405
diff changeset
  2430
    self updateImageInfo: aLabel.
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2431
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
  2432
    "Modified: / 03-05-2011 / 12:28:15 / cg"
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2433
!
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2434
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2435
updateActivity: something
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2436
    |msg|
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2437
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2438
    msg := something printString.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2439
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2440
    activityInfoHolder notNil ifTrue:[
3847
c09d45071125 comment/format in: #updateImageInfo:
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
  2441
        activityInfoHolder value:msg.
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2442
    ].
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2443
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2444
    "Modified: / 29.7.1998 / 18:41:47 / cg"
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2445
!
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2446
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2447
updateImageInfo: something
3847
c09d45071125 comment/format in: #updateImageInfo:
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
  2448
    |msg|
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2449
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2450
    msg := something printString.
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2451
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2452
    imageInfoHolder notNil ifTrue:[
3847
c09d45071125 comment/format in: #updateImageInfo:
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
  2453
        msg ~= imageInfoHolder value ifTrue:[
c09d45071125 comment/format in: #updateImageInfo:
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
  2454
            imageInfoHolder value:msg.
c09d45071125 comment/format in: #updateImageInfo:
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
  2455
        ].
c09d45071125 comment/format in: #updateImageInfo:
Claus Gittinger <cg@exept.de>
parents: 3840
diff changeset
  2456
        ^ self
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2457
    ].
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2458
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2459
    "Modified: / 29.7.1998 / 19:00:21 / cg"
3729
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2460
!
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2461
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2462
updateImageInfoFor:aPoint
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2463
    |clr pixel r g b a|
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2464
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2465
    clr := image colorAt:aPoint.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2466
    pixel := image pixelAt:aPoint.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2467
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2468
    r := clr redByte.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2469
    g := clr greenByte.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2470
    b := clr blueByte.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2471
    a := clr alphaByte.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2472
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2473
    self updateImageInfo:
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2474
        (String streamContents:[:s |
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2475
            s print:aPoint.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2476
            s print:' (r:'; print:r.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2477
            s print:' g:'; print:g.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2478
            s print:' b:'; print:b.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2479
            image depth > 24 ifTrue:[
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2480
                s print:' a:'; print:a.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2481
            ].
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2482
            s print:' #'; print:(r hexPrintString:2); print:(g hexPrintString:2); print:(b hexPrintString:2).
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2483
            pixel <= 16rFFFF ifTrue:[
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2484
                s print:' pixel:'; print:pixel.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2485
            ].
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2486
            s print:')'.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2487
        ])
2511
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2488
! !
10537dc4e961 category change
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2489
2818
d255fb7d54fc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2784
diff changeset
  2490
!ImageEditView methodsFor:'initialization & release'!
1327
ab99aad206dc category change
Claus Gittinger <cg@exept.de>
parents: 1277
diff changeset
  2491
ab99aad206dc category change
Claus Gittinger <cg@exept.de>
parents: 1277
diff changeset
  2492
destroy
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
  2493
    ClipboardMagnified := Clipboard := nil.
1327
ab99aad206dc category change
Claus Gittinger <cg@exept.de>
parents: 1277
diff changeset
  2494
    LastMagnification      := magnification.
ab99aad206dc category change
Claus Gittinger <cg@exept.de>
parents: 1277
diff changeset
  2495
ab99aad206dc category change
Claus Gittinger <cg@exept.de>
parents: 1277
diff changeset
  2496
    super destroy
ab99aad206dc category change
Claus Gittinger <cg@exept.de>
parents: 1277
diff changeset
  2497
!
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
  2498
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  2499
initialize
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  2500
    super initialize.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  2501
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
  2502
    readOnly := false.
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
  2503
686
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
  2504
    self enableMotionEvents.
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  2505
1374
44f511c341c0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1373
diff changeset
  2506
    undoImages        := List new: MaxUndos.
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2507
1706
a954781f4440 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1693
diff changeset
  2508
    magnification     := LastMagnification ? (8@8).
2747
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
  2509
    modifiedHolder    := false asValue.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  2510
    mouseKeyColorMode := 1.
2908
a759fa87d598 some code cleanup (resourceClass was actually its name)
Claus Gittinger <cg@exept.de>
parents: 2889
diff changeset
  2511
    resourceClass     := resourceSelector := nil.
2009
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
  2512
    drawingColorHolders := Array with:(nil asValue) with:(nil asValue).   "/ left/right mouse colors
4f556ff9fec5 pick with SHIFT-click in the mag-view
Claus Gittinger <cg@exept.de>
parents: 2007
diff changeset
  2513
    drawingPixelHolders := Array with:(nil asValue) with:(nil asValue).   "/ left/right mouse colors
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  2514
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  2515
    spraySpot := 8.
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  2516
    penWidth := 1.
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  2517
2889
69423b4e0cee *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2843
diff changeset
  2518
    self editMode:EditModePoint.
4041
2d635ff57406 class definition
Claus Gittinger <cg@exept.de>
parents: 4032
diff changeset
  2519
4111
Claus Gittinger <cg@exept.de>
parents: 4041
diff changeset
  2520
    "Modified: / 15-02-2012 / 22:39:22 / cg"
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
  2521
! !
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
  2522
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2523
!ImageEditView methodsFor:'loading & saving'!
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
  2524
1994
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2525
askForFileNameToSave:msg
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2526
    "ask for a fileName"
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2527
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2528
    |lastFn fn filters|
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2529
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2530
    filters := FileSelectionBrowser saveImageFileNameFilters.
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2531
    lastFn := self image fileName.
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2532
    lastFn isNil ifTrue:[
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2533
        fn := FileSelectionBrowser
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2534
                request: msg
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2535
                inDirectory: LastSaveDirectory
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2536
                withFileFilters: filters
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2537
    ] ifFalse:[
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2538
        fn := FileSelectionBrowser
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2539
                request: msg
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2540
                fileName: lastFn
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2541
                withFileFilters: filters
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2542
    ].
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2543
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2544
    ^ fn
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2545
!
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2546
724
d6f4b89940ed undo disabling
tz
parents: 704
diff changeset
  2547
loadFromClass
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2548
    |classAndSelector|
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2549
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2550
    classAndSelector := ResourceSelectionBrowser
1184
58e399d8c312 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1180
diff changeset
  2551
            request: 'Load Image From Class'
58e399d8c312 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1180
diff changeset
  2552
            onSuperclass: nil
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2553
            andClass: self resourceClass
1184
58e399d8c312 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1180
diff changeset
  2554
            andSelector: self resourceSelector
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2555
            withResourceTypes: #(image fileImage programImage).
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2556
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2557
    classAndSelector notNil ifTrue:[
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2558
        self loadFromClass:(classAndSelector methodClass) andSelector:(classAndSelector methodSelector) 
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2559
    ].
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  2560
!
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  2561
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2562
loadFromClass:aClassOrClassName andSelector: aStringOrSymbol
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2563
    "support for names will vanish - obsolete left over from tz"
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2564
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2565
    imageReaderClass := nil.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2566
    self resourceClass: aClassOrClassName.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2567
    self resourceSelector: aStringOrSymbol.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2568
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2569
    resourceClass isBehavior ifFalse:[^ nil].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2570
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2571
    (resourceClass respondsTo:resourceSelector) ifTrue:[ 
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2572
        image := resourceClass perform:resourceSelector.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2573
    ].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2574
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2575
    image isNil ifTrue:[^ nil].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2576
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2577
    image := image copy.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2578
    self releaseUndos.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2579
    self image:image.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2580
    self clearModified.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2581
    ^ image
2556
fc4dd338dee5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2555
diff changeset
  2582
!
fc4dd338dee5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2555
diff changeset
  2583
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2584
loadFromFile: aFileName
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2585
    |imageFromFile|
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2586
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2587
    aFileName isNil ifTrue: [^nil].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2588
5029
5f1d1837cbdf #DOCUMENTATION by mawalch
mawalch
parents: 4999
diff changeset
  2589
    Error handle:[:exception|
5f1d1837cbdf #DOCUMENTATION by mawalch
mawalch
parents: 4999
diff changeset
  2590
        self warn: exception errorString.
4351
858c0249bb5a class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4264
diff changeset
  2591
        ^ nil
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2592
    ] do:[ 
4351
858c0249bb5a class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4264
diff changeset
  2593
        (imageFromFile := Image fromFile: aFileName) isNil ifTrue:[
858c0249bb5a class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4264
diff changeset
  2594
            imageFromFile := JPEGReader fromFile:aFileName
858c0249bb5a class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4264
diff changeset
  2595
        ].
858c0249bb5a class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4264
diff changeset
  2596
        imageFromFile notNil ifTrue:[
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2597
            self releaseUndos.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2598
            self image: imageFromFile. 
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2599
            self clearModified.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2600
"/            imageReaderClass := ImageReader allSubclasses
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2601
"/                detect: [:cls| cls isValidImageFile: aFileName asFilename pathName]
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2602
"/                ifNone: [self error: 'Unknown image file format!!']
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2603
        ] ifFalse:[
4965
0f28ee36ec03 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4853
diff changeset
  2604
            aFileName asFilename isReadable ifTrue:[
0f28ee36ec03 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4853
diff changeset
  2605
                self error: 'Not an image file (or unrecognized format)'
0f28ee36ec03 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4853
diff changeset
  2606
            ] ifFalse:[  
0f28ee36ec03 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4853
diff changeset
  2607
                self error: 'File does not exist or is unreadable'
0f28ee36ec03 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 4853
diff changeset
  2608
            ]
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2609
        ]
2555
43af374dfd5e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2544
diff changeset
  2610
    ].
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2611
    ^ imageFromFile
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2612
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2613
    "Modified: / 29.7.1998 / 18:09:13 / cg"
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2614
!
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2615
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2616
loadFromMessage:classAndSelector
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2617
    "switch to the class and selector specified by classAndSelector."
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2618
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2619
    ^ self loadFromClass:(classAndSelector methodClass) andSelector:(classAndSelector methodSelector)
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2620
!
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2621
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2622
loadfromClass:aClassOrSymbol andSelector: aStringOrSymbol
3643
b38da5f45af6 Mark obsolete methods
Stefan Vogel <sv@exept.de>
parents: 3610
diff changeset
  2623
    <resource: #obsolete>
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2624
    self obsoleteMethodWarning.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2625
    ^ self loadFromClass:aClassOrSymbol andSelector: aStringOrSymbol
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
  2626
!
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
  2627
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
  2628
save
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  2629
    self saveImageOrMask: #image.
624
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
  2630
!
d98fe4700fc2 checkin from browser
tz
parents: 606
diff changeset
  2631
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2632
save:image imageOrMask:what
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2633
    "save the image or the mask only (if what == #mask)"
297
d733af1b0ffe better saving functions;
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
  2634
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2635
    image isNil ifTrue:[
4249
fc26253d9d4b class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  2636
        Dialog warn:(resources string:'No image to save!!').
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2637
        ^ self.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2638
    ].
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2639
    self save:image imageOrMask:what as:image fileName.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  2640
!
297
d733af1b0ffe better saving functions;
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
  2641
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2642
save:image imageOrMask:what as:fileNameArg
1158
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2643
    "save the image or the mask only (if what == #mask)"
628
7f36d8a7735f popup menu starts image editor
tz
parents: 627
diff changeset
  2644
2240
2e9ad39f11c8 checkin from browser
ca
parents: 2239
diff changeset
  2645
    |fileName fileNameString|
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2646
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2647
    fileName := fileNameArg asFilename.
2783
ca5705f5c258 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2775
diff changeset
  2648
    LastSaveDirectory := fileName directoryName.
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2649
4203
a257aa6878ac class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4149
diff changeset
  2650
    Error handle:[:ex|
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2651
        |msg|
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2652
4203
a257aa6878ac class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4149
diff changeset
  2653
        ex creator == Image fileCreationErrorSignal ifTrue:[
1896
0f430b35c451 asText allBold -> allBold
Claus Gittinger <cg@exept.de>
parents: 1888
diff changeset
  2654
            msg := resources string:'Cannot create file: ''%1''' with:fileName asFilename pathName allBold
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2655
        ] ifFalse:[
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2656
            msg := ex errorString.
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2657
        ].
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2658
        Dialog warn:msg.
1158
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2659
    ] do:[   
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2660
        Image informationLostQuerySignal handle:[:ex|
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2661
            "/ should make those warnings visible ...
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2662
            (self confirm:(ex errorString , '\\Save anyway ?') withCRs) ifTrue:[
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2663
                ex proceed.
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2664
            ]
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2665
        ] do:[   
4137
1a5fdfd6cd4f withWriteCursorDo
Claus Gittinger <cg@exept.de>
parents: 4129
diff changeset
  2666
            windowGroup withWriteCursorDo:[
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2667
                |suff fn|
1027
5bffbe90b8e2 show a wait-cursor while saving
Claus Gittinger <cg@exept.de>
parents: 1025
diff changeset
  2668
1158
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2669
                image isNil ifTrue:[
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2670
                    ^ self error: 'No image to save!!'
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2671
                ].
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  2672
1158
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2673
                what = #mask ifTrue:[   
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2674
                    image mask isNil ifTrue: [^self error: 'No image mask to save!!'].
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2675
                ].
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2676
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2677
                fileName name size = 0 ifTrue: [^self error: 'No file name detected!!'].
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2678
                suff := fileName suffix asLowercase.
1373
c949e9f7757c give a warning, if saving in the given file-format is not
Claus Gittinger <cg@exept.de>
parents: 1327
diff changeset
  2679
                imageReaderClass := nil.
c949e9f7757c give a warning, if saving in the given file-format is not
Claus Gittinger <cg@exept.de>
parents: 1327
diff changeset
  2680
                imageReaderClass := MIMETypes imageReaderForSuffix:suff.
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2681
1373
c949e9f7757c give a warning, if saving in the given file-format is not
Claus Gittinger <cg@exept.de>
parents: 1327
diff changeset
  2682
                imageReaderClass isNil ifTrue: [
c949e9f7757c give a warning, if saving in the given file-format is not
Claus Gittinger <cg@exept.de>
parents: 1327
diff changeset
  2683
                    imageReaderClass := XPMReader. 
2589
10827ba87692 obsolete method calls cleaned up
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
  2684
                    fileNameString := fileName name , '.xpm'.
2240
2e9ad39f11c8 checkin from browser
ca
parents: 2239
diff changeset
  2685
                    fileName := fileNameString asFilename.
2e9ad39f11c8 checkin from browser
ca
parents: 2239
diff changeset
  2686
                    image fileName:fileNameString.
5314
ecbb23555428 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 5286
diff changeset
  2687
                    Dialog warn:(('Don''t know how to write ''.' , suff , '''-files\\Saving in xpm format as ''%1''.') 
2240
2e9ad39f11c8 checkin from browser
ca
parents: 2239
diff changeset
  2688
                                withCRs bindWith:fileNameString allBold).
1373
c949e9f7757c give a warning, if saving in the given file-format is not
Claus Gittinger <cg@exept.de>
parents: 1327
diff changeset
  2689
                ].
c949e9f7757c give a warning, if saving in the given file-format is not
Claus Gittinger <cg@exept.de>
parents: 1327
diff changeset
  2690
                (imageReaderClass canRepresent:image) ifFalse:[
1991
fff8dc641cff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1987
diff changeset
  2691
                    imageReaderClass == XPMReader ifTrue:[
fff8dc641cff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1987
diff changeset
  2692
                        Dialog warn:('Saving in ''.' , suff , '''-format is not supported (or image cannot be represented in this format).\\Please try another format.') withCRs.
fff8dc641cff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1987
diff changeset
  2693
                        ^ self.
fff8dc641cff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1987
diff changeset
  2694
                    ].
1373
c949e9f7757c give a warning, if saving in the given file-format is not
Claus Gittinger <cg@exept.de>
parents: 1327
diff changeset
  2695
                    imageReaderClass := XPMReader. 
2589
10827ba87692 obsolete method calls cleaned up
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
  2696
                    fileNameString := fileName name , '.xpm'.
2240
2e9ad39f11c8 checkin from browser
ca
parents: 2239
diff changeset
  2697
                    fileName := fileNameString asFilename.
2e9ad39f11c8 checkin from browser
ca
parents: 2239
diff changeset
  2698
                    image fileName:fileNameString.
2690
53bc9dc52ce4 allow cancel when saving in wrong format
Claus Gittinger <cg@exept.de>
parents: 2680
diff changeset
  2699
                    (Dialog confirm:(('Saving in ''.' , suff , '''-format is not supported (or image cannot be represented in this format).\\Saving in xpm format as ''%1''.') 
53bc9dc52ce4 allow cancel when saving in wrong format
Claus Gittinger <cg@exept.de>
parents: 2680
diff changeset
  2700
                                withCRs bindWith:fileNameString allBold)) ifFalse:[
53bc9dc52ce4 allow cancel when saving in wrong format
Claus Gittinger <cg@exept.de>
parents: 2680
diff changeset
  2701
                        ^ self.
53bc9dc52ce4 allow cancel when saving in wrong format
Claus Gittinger <cg@exept.de>
parents: 2680
diff changeset
  2702
                    ].
1373
c949e9f7757c give a warning, if saving in the given file-format is not
Claus Gittinger <cg@exept.de>
parents: 1327
diff changeset
  2703
                ].
2240
2e9ad39f11c8 checkin from browser
ca
parents: 2239
diff changeset
  2704
                Transcript showCR:('saving as:' , fileName pathName).
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2705
2824
dcff817ccd59 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2823
diff changeset
  2706
                what = #image ifTrue: [ 
dcff817ccd59 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2823
diff changeset
  2707
                    image saveOn:fileName using: imageReaderClass. self clearModified.
dcff817ccd59 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2823
diff changeset
  2708
                    image fileName:fileNameString.
dcff817ccd59 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2823
diff changeset
  2709
                ].
dcff817ccd59 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2823
diff changeset
  2710
                what = #mask ifTrue: [
dcff817ccd59 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2823
diff changeset
  2711
                    image mask saveOn:fileName using: imageReaderClass
dcff817ccd59 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2823
diff changeset
  2712
                ].
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2713
2240
2e9ad39f11c8 checkin from browser
ca
parents: 2239
diff changeset
  2714
                fileName exists ifFalse:[
1380
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2715
                    Dialog warn:'Oops image save failed.'
3b343d2e69ef fixed copy-paste with masked images.
Claus Gittinger <cg@exept.de>
parents: 1374
diff changeset
  2716
                ]
1158
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2717
            ]   
9b413954d34d issue a warning, if information (mask) is
Claus Gittinger <cg@exept.de>
parents: 1121
diff changeset
  2718
        ]
1027
5bffbe90b8e2 show a wait-cursor while saving
Claus Gittinger <cg@exept.de>
parents: 1025
diff changeset
  2719
    ]
5bffbe90b8e2 show a wait-cursor while saving
Claus Gittinger <cg@exept.de>
parents: 1025
diff changeset
  2720
4137
1a5fdfd6cd4f withWriteCursorDo
Claus Gittinger <cg@exept.de>
parents: 4129
diff changeset
  2721
    "Modified: / 27-07-2012 / 09:45:49 / cg"
633
594edef86630 revised version
tz
parents: 632
diff changeset
  2722
!
594edef86630 revised version
tz
parents: 632
diff changeset
  2723
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2724
saveAs
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2725
    self saveImageFileAs
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2726
!
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2727
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2728
saveButtonImageToFileAs
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2729
    |fn|
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2730
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2731
    fn := self askForFileNameToSave:'Save Button Image to File'.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2732
    self saveButtonImageToFileAs:fn
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2733
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2734
    "Modified: / 30.9.1998 / 23:04:11 / cg"
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2735
!
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2736
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2737
saveButtonImageToFileAs: aFileName
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2738
    "save the image as if in a button in aFileName"
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2739
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2740
    |button grabbedImage|
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2741
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2742
    aFileName isNil ifTrue: [^nil].
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2743
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2744
    image isNil ifTrue:[
4249
fc26253d9d4b class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  2745
        self warn:(resources string:'No image or image mask to save!!').
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2746
        ^ self.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2747
    ].
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2748
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2749
    button := Button label:image.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2750
    button openAt:5@5.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2751
    button waitUntilVisible.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2752
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2753
    grabbedImage := Image fromView:button.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2754
    button destroy.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2755
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2756
    self save:grabbedImage imageOrMask:#image as:aFileName
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2757
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2758
    "/ self saveImageOrMask: #mask
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2759
!
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2760
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2761
saveImageFileAs
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2762
    "ask for a fileName and save the image"
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2763
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2764
    |fn|
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2765
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2766
    fn := self askForFileNameToSave:'Save Image To File'.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2767
    self saveImageFileAs:fn
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2768
!
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2769
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2770
saveImageFileAs: aFileName
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2771
    "save the image in aFileName"
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2772
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2773
    aFileName isNil ifTrue: [^nil].
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2774
    image notNil ifTrue:[
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2775
        self save:image imageOrMask:#image as:aFileName.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2776
    ] ifFalse:[
4249
fc26253d9d4b class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  2777
        self warn:(resources string:'No image for saving!!')
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2778
    ]
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2779
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2780
    "Modified: / 30.9.1998 / 23:04:55 / cg"
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2781
!
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2782
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2783
saveImageMaskFileAs
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2784
    "ask for a fileName and save the mask only"
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2785
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2786
    |fn|
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2787
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2788
    fn := self askForFileNameToSave:'Save Image Mask To File'.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2789
    self saveImageMaskFileAs:fn
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2790
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2791
    "Modified: / 30.9.1998 / 23:04:11 / cg"
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2792
!
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2793
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2794
saveImageMaskFileAs: aFileName
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2795
    "save the mask only in aFileName"
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2796
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2797
    aFileName isNil ifTrue: [^nil].
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2798
    (image notNil and:[image mask notNil]) ifTrue:[
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2799
        self save:image imageOrMask:#mask as:aFileName.
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2800
    ] ifFalse:[
4249
fc26253d9d4b class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  2801
        self warn:(resources string:'No image or image mask to save!!')
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2802
    ]
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2803
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2804
    "Modified: / 30.9.1998 / 23:06:24 / cg"
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2805
!
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2806
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2807
saveImageOrMask:what
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2808
    "save the image or the mask only (if what == #mask)"
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2809
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2810
    self save:image imageOrMask: what
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2811
!
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  2812
633
594edef86630 revised version
tz
parents: 632
diff changeset
  2813
saveMethod
5364
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2814
    "save the image as a resource method.
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2815
     Return true if ok; false if not"
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2816
4149
758a4573b5e4 changed: #saveMethod
Claus Gittinger <cg@exept.de>
parents: 4137
diff changeset
  2817
    (resourceSelector trimBlanks notEmptyOrNil and:[ resourceClass isBehavior ]) ifFalse: [
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2818
        ^ self saveMethodAs.
2914
fdf78bbdbd46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2913
diff changeset
  2819
    ].
fdf78bbdbd46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2913
diff changeset
  2820
fdf78bbdbd46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2913
diff changeset
  2821
    windowGroup withExecuteCursorDo:[
3859
56eadb83df83 changed: #saveMethod
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
  2822
        Error handle:[:ex|
56eadb83df83 changed: #saveMethod
Claus Gittinger <cg@exept.de>
parents: 3847
diff changeset
  2823
            (self confirm:(ex errorString,'\\Debug?' withCRs)) ifTrue:[ ex reject ].
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2824
            ^ false                                 
2914
fdf78bbdbd46 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2913
diff changeset
  2825
        ] do: [   
5286
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2826
            |img imageSaved depth bestDepth colorsUsed numColorsUsed category imageStoreStream sel mthd imageKey|
4149
758a4573b5e4 changed: #saveMethod
Claus Gittinger <cg@exept.de>
parents: 4137
diff changeset
  2827
758a4573b5e4 changed: #saveMethod
Claus Gittinger <cg@exept.de>
parents: 4137
diff changeset
  2828
            img := self image.
4714
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
  2829
            depth := bestDepth := img depth.
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
  2830
            colorsUsed := (img usedColorsMax:256).
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
  2831
            colorsUsed notNil ifTrue:[
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
  2832
                numColorsUsed := colorsUsed size.
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
  2833
                #(8 4 2 1) do:[:d |
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
  2834
                    depth > d ifTrue:[
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
  2835
                        numColorsUsed <= (1 << d) ifTrue:[
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
  2836
                            bestDepth := d
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
  2837
                        ]
4149
758a4573b5e4 changed: #saveMethod
Claus Gittinger <cg@exept.de>
parents: 4137
diff changeset
  2838
                    ]
4714
69df9f744066 class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4646
diff changeset
  2839
                ].
4149
758a4573b5e4 changed: #saveMethod
Claus Gittinger <cg@exept.de>
parents: 4137
diff changeset
  2840
            ].
5286
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2841
            imageSaved := img.
4149
758a4573b5e4 changed: #saveMethod
Claus Gittinger <cg@exept.de>
parents: 4137
diff changeset
  2842
            bestDepth < depth ifTrue:[
5286
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2843
                |answer|
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2844
                
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2845
                answer := Dialog 
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2846
                    confirmWithCancel:(resources stringWithCRs:'Hint:\\You can save some code space, by converting the image from a depth-%1 to a depth-%2 image first.\(only %3 colors used)\\Convert before saving?'
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2847
                                 with:depth with:bestDepth with:numColorsUsed).
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2848
                answer isNil ifTrue:[
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2849
                    "/ cancelled
4149
758a4573b5e4 changed: #saveMethod
Claus Gittinger <cg@exept.de>
parents: 4137
diff changeset
  2850
                    ^ false
5286
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2851
                ].
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2852
                answer == true ifTrue:[
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2853
                    imageSaved := (Image implementorForDepth:bestDepth) fromImage:imageSaved 
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2854
                ].    
4149
758a4573b5e4 changed: #saveMethod
Claus Gittinger <cg@exept.de>
parents: 4137
diff changeset
  2855
            ].
822
cace81f0a86b do not overwrite method categories + toggle between mouse button colors
tz
parents: 796
diff changeset
  2856
4000
21106540ffb5 CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents: 3980
diff changeset
  2857
            SmalltalkCodeGeneratorTool
5286
23ec6e6fd179 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 5277
diff changeset
  2858
                createImageSpecMethodFor:imageSaved
1882
fbb4a3a869f1 made image-method generator a class method (for reusability)
martin
parents: 1875
diff changeset
  2859
                comment:(ResourceSpecEditor codeGenerationCommentForClass: ImageEditor) 
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2860
                in:resourceClass class
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2861
                selector:resourceSelector.
822
cace81f0a86b do not overwrite method categories + toggle between mouse button colors
tz
parents: 796
diff changeset
  2862
5364
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2863
            "/ flush cached images in the Icon class (kludge)
1901
b4b286ec221f flush cached icons, when defining a new image-method
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
  2864
            Icon flushCachedIcons.
2590
b811d560e00a modified flag after edit operations
Claus Gittinger <cg@exept.de>
parents: 2589
diff changeset
  2865
            self clearModified.
1901
b4b286ec221f flush cached icons, when defining a new image-method
Claus Gittinger <cg@exept.de>
parents: 1896
diff changeset
  2866
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2867
            LastSaveClass := resourceClass.
1882
fbb4a3a869f1 made image-method generator a class method (for reusability)
martin
parents: 1875
diff changeset
  2868
        ]
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2869
    ].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2870
    ^ true
1027
5bffbe90b8e2 show a wait-cursor while saving
Claus Gittinger <cg@exept.de>
parents: 1025
diff changeset
  2871
4000
21106540ffb5 CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents: 3980
diff changeset
  2872
    "Modified: / 31-01-2011 / 18:28:06 / cg"
5364
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2873
    "Modified (comment): / 25-11-2016 / 08:48:44 / cg"
633
594edef86630 revised version
tz
parents: 632
diff changeset
  2874
!
594edef86630 revised version
tz
parents: 632
diff changeset
  2875
594edef86630 revised version
tz
parents: 632
diff changeset
  2876
saveMethodAs
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2877
    "ask for method/selector; save the image there.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2878
     Return true if saved, false if not"
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2879
5364
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2880
    |className classAndSelector
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2881
     previousClass previousCategory previousSelector
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2882
     previousMethod newMethod ok|
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2883
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2884
    previousSelector := self resourceSelector.
2908
a759fa87d598 some code cleanup (resourceClass was actually its name)
Claus Gittinger <cg@exept.de>
parents: 2889
diff changeset
  2885
    className := self resourceClassName.
a759fa87d598 some code cleanup (resourceClass was actually its name)
Claus Gittinger <cg@exept.de>
parents: 2889
diff changeset
  2886
    className isEmptyOrNil ifTrue:[
2177
340ce04ccc78 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2172
diff changeset
  2887
        className := LastSaveClass
1994
d2d9228d38ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1992
diff changeset
  2888
    ].
5364
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2889
    (className notEmptyOrNil and:[previousSelector notNil]) ifTrue:[
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2890
        previousClass := Smalltalk classNamed:className.
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2891
        previousClass notNil ifTrue:[
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2892
            previousMethod := previousClass class compiledMethodAt:previousSelector.
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2893
            previousMethod notNil ifTrue:[
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2894
                previousCategory := previousMethod category.
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2895
            ]
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2896
        ]
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2897
    ].
633
594edef86630 revised version
tz
parents: 632
diff changeset
  2898
3840
1ec52651a398 changed: #saveMethodAs
Claus Gittinger <cg@exept.de>
parents: 3762
diff changeset
  2899
    self withWaitCursorDo:[
1ec52651a398 changed: #saveMethodAs
Claus Gittinger <cg@exept.de>
parents: 3762
diff changeset
  2900
        classAndSelector := ResourceSelectionBrowser
1ec52651a398 changed: #saveMethodAs
Claus Gittinger <cg@exept.de>
parents: 3762
diff changeset
  2901
                request: 'Save Image In Class'
1ec52651a398 changed: #saveMethodAs
Claus Gittinger <cg@exept.de>
parents: 3762
diff changeset
  2902
                onSuperclass: #Object
1ec52651a398 changed: #saveMethodAs
Claus Gittinger <cg@exept.de>
parents: 3762
diff changeset
  2903
                andClass: className
1ec52651a398 changed: #saveMethodAs
Claus Gittinger <cg@exept.de>
parents: 3762
diff changeset
  2904
                andSelector: self resourceSelector
1ec52651a398 changed: #saveMethodAs
Claus Gittinger <cg@exept.de>
parents: 3762
diff changeset
  2905
                withResourceTypes: #(image fileImage programImage).
1ec52651a398 changed: #saveMethodAs
Claus Gittinger <cg@exept.de>
parents: 3762
diff changeset
  2906
    ].
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2907
    classAndSelector isNil ifTrue:[^ false].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2908
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2909
    resourceClass := classAndSelector methodClass.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2910
    resourceSelector := classAndSelector methodSelector.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2911
5364
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2912
    ok := self saveMethod.
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2913
    ok ifTrue:[
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2914
        previousCategory notNil ifTrue:[
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2915
            newMethod := resourceClass class compiledMethodAt:resourceSelector asSymbol.
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2916
            newMethod notNil ifTrue:[
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2917
                newMethod category:previousCategory.
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2918
            ]
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2919
        ]
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2920
    ].
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2921
    ^ ok
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2922
bd510ef455fc #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 5332
diff changeset
  2923
    "Modified: / 25-11-2016 / 09:17:22 / cg"
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2924
! !
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2925
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2926
!ImageEditView methodsFor:'printing'!
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2927
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2928
print
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2929
    self printWithMagnification:1
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2930
!
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2931
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2932
printMagnified
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2933
    self printWithMagnification:magnification
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2934
!
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2935
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2936
printWithMagnification:magnification
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2937
    |stream|
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2938
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2939
    image isNil ifTrue:[^ self].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2940
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2941
    Printer supportsPostscript ifFalse:[
4249
fc26253d9d4b class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  2942
        ^ self warn:(resources string:'No postscript printer configured !!')
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2943
    ].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2944
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2945
    stream := Printer newNative.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2946
    stream isNil ifTrue:[
4249
fc26253d9d4b class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4233
diff changeset
  2947
        ^ self warn:(resources string:'Cannot open printer stream !!')
2915
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2948
    ].
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2949
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2950
    self withWaitCursorDo:[
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2951
        |psgc|
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2952
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2953
        psgc := PSGraphicsContext on:stream.  
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2954
        psgc displayForm: (image magnifiedBy: magnification) x:0 y:0.
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2955
        psgc close
6f4e171a1092 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 2914
diff changeset
  2956
    ]
1
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
  2957
! !
c6ca7bfedf31 Initial revision
claus
parents:
diff changeset
  2958
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  2959
!ImageEditView methodsFor:'queries'!
5
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
  2960
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  2961
heightOfContents
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  2962
686
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
  2963
    image isNil ifTrue:[^0].
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
  2964
    ^(image height * magnification y) rounded
5
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
  2965
!
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
  2966
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  2967
imageContainsPastePoint: aPoint
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  2968
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  2969
    ^image notNil and: 
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  2970
	[Clipboard notNil and:
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  2971
	[((0@0 corner:(image extent) "- 1" - Clipboard extent) containsPoint: (((aPoint - margin + 1) / magnification) floor))]]
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  2972
!
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  2973
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  2974
imageContainsPoint: aPoint
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  2975
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  2976
    ^image notNil and:
1116
441ff42c1472 fixes to allow 24bit images to be (at least) displayed
Claus Gittinger <cg@exept.de>
parents: 1106
diff changeset
  2977
	[((0@0 corner:(image extent) - 1) containsPoint: (((aPoint - margin + 1) / magnification) floor))]
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  2978
!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  2979
783
c81a097b84b8 revised version
tz
parents: 747
diff changeset
  2980
imageInfoString
3729
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2981
    image isNil ifTrue: [^ 'No image loaded.']. 
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2982
    ^ String streamContents:[:s |
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2983
        s print:image width.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2984
        s print:'x'.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2985
        s print:image height.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2986
        s print:' | '.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2987
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2988
        s print:(image depth).
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2989
        s print:'bit'.
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2990
        image mask notNil ifTrue: [s print:'+mask'].
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2991
5266
527277fcb66c #UI_ENHANCEMENT by stefan
Stefan Vogel <sv@exept.de>
parents: 5163
diff changeset
  2992
        ' [%1/%2 colors]' expandPlaceholdersWith:{image nColorsUsed. (2 raisedTo: image depth)} on:s.
3729
6f6cfc8bb8cf *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3706
diff changeset
  2993
    ].
783
c81a097b84b8 revised version
tz
parents: 747
diff changeset
  2994
!
c81a097b84b8 revised version
tz
parents: 747
diff changeset
  2995
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  2996
widthOfContents
5
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
  2997
686
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
  2998
    image isNil ifTrue:[^0].
33833bcbb5cd some cleans
tz
parents: 678
diff changeset
  2999
    ^(image width * magnification x) rounded
5
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
  3000
! !
be72e6ba4822 *** empty log message ***
claus
parents: 1
diff changeset
  3001
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  3002
!ImageEditView methodsFor:'release'!
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  3003
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  3004
releasePasteDrawing
2085
4cf52f994f0a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  3005
    self repairDamage.
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
  3006
    (lastPastePoint notNil and: [ClipboardMagnified notNil]) 
2747
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
  3007
    ifTrue: [ 
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
  3008
        self redraw: ((lastPastePoint"-self viewOrigin") extent: (ClipboardMagnified extent)). 
2085
4cf52f994f0a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2072
diff changeset
  3009
        "/ self repairDamage.
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  3010
    ].
2440
a9abeb0e3562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2415
diff changeset
  3011
    lastPastePoint := ClipboardMagnified := nil
995
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  3012
!
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  3013
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  3014
releaseUndos
cd84d6f8c449 several undos
tz
parents: 994
diff changeset
  3015
    undoImages removeAll.
627
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  3016
! !
e0bf28f61361 many many fixes/enhancements
tz
parents: 624
diff changeset
  3017
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  3018
!ImageEditView methodsFor:'testing'!
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  3019
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  3020
checkModified
2747
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
  3021
    modifiedHolder value ifTrue:[
2634
dc5098a445d4 resources
Claus Gittinger <cg@exept.de>
parents: 2591
diff changeset
  3022
        ((YesNoBox title:(resources string:'Image was not saved. Exit anyway ?'))
2591
87cab7199c7e Use 'Discard Changes and Exit' instead of 'Forget it...'
Stefan Vogel <sv@exept.de>
parents: 2590
diff changeset
  3023
            noText:(resources string:'Cancel');
2634
dc5098a445d4 resources
Claus Gittinger <cg@exept.de>
parents: 2591
diff changeset
  3024
            yesText:(resources string:'Exit without Saving');
2591
87cab7199c7e Use 'Discard Changes and Exit' instead of 'Forget it...'
Stefan Vogel <sv@exept.de>
parents: 2590
diff changeset
  3025
            showAtPointer;
2747
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
  3026
            accepted
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
  3027
        ) ifFalse: [^false].
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
  3028
818a513a64c3 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2690
diff changeset
  3029
        self modified:false.
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  3030
    ].
2591
87cab7199c7e Use 'Discard Changes and Exit' instead of 'Forget it...'
Stefan Vogel <sv@exept.de>
parents: 2590
diff changeset
  3031
    ^ true
1031
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  3032
a5ab5869b2ba cleaned up the interface to the apps infoPanel
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  3033
    "Modified: / 29.7.1998 / 18:55:24 / cg"
632
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  3034
! !
be1ac8ea33a7 checkin from browser
tz
parents: 628
diff changeset
  3035
255
1dfa8deddaef checkin from browser
Claus Gittinger <cg@exept.de>
parents: 251
diff changeset
  3036
!ImageEditView class methodsFor:'documentation'!
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  3037
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  3038
version
4853
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
  3039
    ^ '$Header$'
3762
1baf6a044dd2 changed: #pasteAt:mode:
Claus Gittinger <cg@exept.de>
parents: 3730
diff changeset
  3040
!
1baf6a044dd2 changed: #pasteAt:mode:
Claus Gittinger <cg@exept.de>
parents: 3730
diff changeset
  3041
1baf6a044dd2 changed: #pasteAt:mode:
Claus Gittinger <cg@exept.de>
parents: 3730
diff changeset
  3042
version_CVS
4853
Claus Gittinger <cg@exept.de>
parents: 4730
diff changeset
  3043
    ^ '$Header$'
161
5b6e284959a4 examples
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
  3044
! !
2239
d2f65f84f314 saveAsButtonImage added
ca
parents: 2177
diff changeset
  3045
4203
a257aa6878ac class: ImageEditView
Claus Gittinger <cg@exept.de>
parents: 4149
diff changeset
  3046
1245
68581e6aaf23 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1228
diff changeset
  3047
ImageEditView initialize!