Form.st
author claus
Wed, 13 Oct 1993 01:32:53 +0100
changeset 2 b35336ab0de3
parent 0 48194c26a46c
child 5 e5942fea6925
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
48194c26a46c Initial revision
claus
parents:
diff changeset
     1
"
48194c26a46c Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1989-93 by Claus Gittinger
48194c26a46c Initial revision
claus
parents:
diff changeset
     3
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
     4
48194c26a46c Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
48194c26a46c Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
48194c26a46c Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
48194c26a46c Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
48194c26a46c Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
48194c26a46c Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
48194c26a46c Initial revision
claus
parents:
diff changeset
    11
"
48194c26a46c Initial revision
claus
parents:
diff changeset
    12
48194c26a46c Initial revision
claus
parents:
diff changeset
    13
DeviceDrawable subclass:#Form
48194c26a46c Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'depth localColorMap offset data fileName'
48194c26a46c Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:'VeryLightGreyForm LightGreyForm GreyForm 
48194c26a46c Initial revision
claus
parents:
diff changeset
    16
                           DarkGreyForm VeryDarkGreyForm
48194c26a46c Initial revision
claus
parents:
diff changeset
    17
48194c26a46c Initial revision
claus
parents:
diff changeset
    18
                           AdditionalBitmapDirectoryNames
48194c26a46c Initial revision
claus
parents:
diff changeset
    19
                           BlackAndWhiteColorMap DitherPatterns
48194c26a46c Initial revision
claus
parents:
diff changeset
    20
                           lobby'
48194c26a46c Initial revision
claus
parents:
diff changeset
    21
       poolDictionaries:''
48194c26a46c Initial revision
claus
parents:
diff changeset
    22
       category:'Graphics-Display Objects'
48194c26a46c Initial revision
claus
parents:
diff changeset
    23
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    24
48194c26a46c Initial revision
claus
parents:
diff changeset
    25
Form comment:'
48194c26a46c Initial revision
claus
parents:
diff changeset
    26
48194c26a46c Initial revision
claus
parents:
diff changeset
    27
COPYRIGHT (c) 1989-93 by Claus Gittinger
48194c26a46c Initial revision
claus
parents:
diff changeset
    28
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
    29
48194c26a46c Initial revision
claus
parents:
diff changeset
    30
%W% %E%
48194c26a46c Initial revision
claus
parents:
diff changeset
    31
written spring/summer 89 by claus
48194c26a46c Initial revision
claus
parents:
diff changeset
    32
'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    33
48194c26a46c Initial revision
claus
parents:
diff changeset
    34
!Form class methodsFor:'initialization'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    35
48194c26a46c Initial revision
claus
parents:
diff changeset
    36
initialize
48194c26a46c Initial revision
claus
parents:
diff changeset
    37
    "initialize set of dictionaries to look for bitmaps
48194c26a46c Initial revision
claus
parents:
diff changeset
    38
     and lobby to keep track of dead forms"
48194c26a46c Initial revision
claus
parents:
diff changeset
    39
48194c26a46c Initial revision
claus
parents:
diff changeset
    40
    AdditionalBitmapDirectoryNames isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
    41
        super initialize.
48194c26a46c Initial revision
claus
parents:
diff changeset
    42
48194c26a46c Initial revision
claus
parents:
diff changeset
    43
        AdditionalBitmapDirectoryNames := #('/usr/lib/X11/bitmaps').
48194c26a46c Initial revision
claus
parents:
diff changeset
    44
    
48194c26a46c Initial revision
claus
parents:
diff changeset
    45
        lobby := Registry new.
48194c26a46c Initial revision
claus
parents:
diff changeset
    46
48194c26a46c Initial revision
claus
parents:
diff changeset
    47
        "want to be informed when returning from snapshot"
48194c26a46c Initial revision
claus
parents:
diff changeset
    48
        ObjectMemory addDependent:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
    49
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
    50
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    51
48194c26a46c Initial revision
claus
parents:
diff changeset
    52
reinitializeAllOn:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
    53
    "recreate all forms on aDevice; called by Workstation, to
48194c26a46c Initial revision
claus
parents:
diff changeset
    54
     have all background bitmaps at hand, when views are restored"
48194c26a46c Initial revision
claus
parents:
diff changeset
    55
48194c26a46c Initial revision
claus
parents:
diff changeset
    56
    lobby contentsDo:[:aForm |
48194c26a46c Initial revision
claus
parents:
diff changeset
    57
        (aForm device == aDevice) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
    58
            "now, try to recreate it"
48194c26a46c Initial revision
claus
parents:
diff changeset
    59
            aForm recreate.
48194c26a46c Initial revision
claus
parents:
diff changeset
    60
            lobby changed:aForm
48194c26a46c Initial revision
claus
parents:
diff changeset
    61
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
    62
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
    63
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    64
48194c26a46c Initial revision
claus
parents:
diff changeset
    65
update:something
48194c26a46c Initial revision
claus
parents:
diff changeset
    66
    "sent just before snapOut and just after a snapIn"
48194c26a46c Initial revision
claus
parents:
diff changeset
    67
48194c26a46c Initial revision
claus
parents:
diff changeset
    68
    (something == #save) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
    69
        "should get all bits from the device into saveable arrays"
48194c26a46c Initial revision
claus
parents:
diff changeset
    70
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
    71
    (something == #restarted) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
    72
        "remove all left-over device info"
48194c26a46c Initial revision
claus
parents:
diff changeset
    73
        lobby contentsDo:[:aForm |
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    74
            aForm restored.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    75
            lobby changed:self
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    76
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
    77
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
    78
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
    79
48194c26a46c Initial revision
claus
parents:
diff changeset
    80
!Form methodsFor:'instance release'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    81
48194c26a46c Initial revision
claus
parents:
diff changeset
    82
disposed
48194c26a46c Initial revision
claus
parents:
diff changeset
    83
    "some Form has been collected - tell it to the x-server"
48194c26a46c Initial revision
claus
parents:
diff changeset
    84
48194c26a46c Initial revision
claus
parents:
diff changeset
    85
    drawableId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
    86
        device destroyPixmap:drawableId.
48194c26a46c Initial revision
claus
parents:
diff changeset
    87
        gcId notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
    88
            device destroyGC:gcId
48194c26a46c Initial revision
claus
parents:
diff changeset
    89
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
    90
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
    91
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
    92
48194c26a46c Initial revision
claus
parents:
diff changeset
    93
!Form class methodsFor:'file search'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    94
48194c26a46c Initial revision
claus
parents:
diff changeset
    95
findBitmapFile:fileName
48194c26a46c Initial revision
claus
parents:
diff changeset
    96
    "find the bitmap file in one of the standard places;
48194c26a46c Initial revision
claus
parents:
diff changeset
    97
     return the pathName or nil"
48194c26a46c Initial revision
claus
parents:
diff changeset
    98
48194c26a46c Initial revision
claus
parents:
diff changeset
    99
    |aStream path|
48194c26a46c Initial revision
claus
parents:
diff changeset
   100
48194c26a46c Initial revision
claus
parents:
diff changeset
   101
    ((fileName at:1) == $/) ifTrue:[^ fileName].
48194c26a46c Initial revision
claus
parents:
diff changeset
   102
    (fileName startsWith:'../') ifTrue:[^ fileName].
48194c26a46c Initial revision
claus
parents:
diff changeset
   103
    (fileName startsWith:'./') ifTrue:[^ fileName].
48194c26a46c Initial revision
claus
parents:
diff changeset
   104
48194c26a46c Initial revision
claus
parents:
diff changeset
   105
    aStream := Smalltalk systemFileStreamFor:('bitmaps/' , fileName).
48194c26a46c Initial revision
claus
parents:
diff changeset
   106
    aStream notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   107
        path := aStream pathName.
48194c26a46c Initial revision
claus
parents:
diff changeset
   108
        aStream close.
48194c26a46c Initial revision
claus
parents:
diff changeset
   109
        ^ path
48194c26a46c Initial revision
claus
parents:
diff changeset
   110
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   111
    AdditionalBitmapDirectoryNames notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   112
        AdditionalBitmapDirectoryNames do:[:aPath |
48194c26a46c Initial revision
claus
parents:
diff changeset
   113
            path := aPath , '/' , fileName.
48194c26a46c Initial revision
claus
parents:
diff changeset
   114
            (OperatingSystem isReadable:path) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   115
                ^ path
48194c26a46c Initial revision
claus
parents:
diff changeset
   116
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   117
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   118
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   119
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   120
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   121
48194c26a46c Initial revision
claus
parents:
diff changeset
   122
!Form class methodsFor:'private instance creation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   123
48194c26a46c Initial revision
claus
parents:
diff changeset
   124
grey:percent on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   125
    "return a form for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   126
48194c26a46c Initial revision
claus
parents:
diff changeset
   127
    (percent < 20) ifTrue:[^ Color black on:aDevice].
48194c26a46c Initial revision
claus
parents:
diff changeset
   128
    (percent < 40) ifTrue:[^ self darkGreyFormOn:aDevice].
48194c26a46c Initial revision
claus
parents:
diff changeset
   129
    (percent < 60) ifTrue:[^ self mediumGreyFormOn:aDevice].
48194c26a46c Initial revision
claus
parents:
diff changeset
   130
    (percent < 80) ifTrue:[^ self lightGreyFormOn:aDevice].
48194c26a46c Initial revision
claus
parents:
diff changeset
   131
    ^ Color white on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   132
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   133
48194c26a46c Initial revision
claus
parents:
diff changeset
   134
mediumGreyFormOn:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   135
    "return a grey form"
48194c26a46c Initial revision
claus
parents:
diff changeset
   136
48194c26a46c Initial revision
claus
parents:
diff changeset
   137
    (aDevice ~~ Display) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   138
        ^ self width:8 height:4 fromArray:(self greyFormBits) on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   139
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   140
    GreyForm isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   141
        GreyForm := self width:8 height:4 
48194c26a46c Initial revision
claus
parents:
diff changeset
   142
                         fromArray:(self greyFormBits) on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   143
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   144
    ^ GreyForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   145
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   146
48194c26a46c Initial revision
claus
parents:
diff changeset
   147
veryLightGreyFormOn:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   148
    "return a veryLightGrey form"
48194c26a46c Initial revision
claus
parents:
diff changeset
   149
48194c26a46c Initial revision
claus
parents:
diff changeset
   150
    (aDevice ~~ Display) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   151
        ^ self width:8 height:4 fromArray:(self veryLightGreyFormBits) 
48194c26a46c Initial revision
claus
parents:
diff changeset
   152
                                       on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   153
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   154
    VeryLightGreyForm isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   155
        VeryLightGreyForm := self width:8 height:4 
48194c26a46c Initial revision
claus
parents:
diff changeset
   156
                              fromArray:(self veryLightGreyFormBits) on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   157
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   158
    ^ VeryLightGreyForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   159
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   160
48194c26a46c Initial revision
claus
parents:
diff changeset
   161
lightGreyFormOn:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   162
    "return a lightGrey form"
48194c26a46c Initial revision
claus
parents:
diff changeset
   163
48194c26a46c Initial revision
claus
parents:
diff changeset
   164
    (aDevice ~~ Display) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   165
        ^ self width:8 height:4 fromArray:(self lightGreyFormBits) on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   166
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   167
    LightGreyForm isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   168
        LightGreyForm := self width:8 height:4 
48194c26a46c Initial revision
claus
parents:
diff changeset
   169
                              fromArray:(self lightGreyFormBits) on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   170
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   171
    ^ LightGreyForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   172
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   173
48194c26a46c Initial revision
claus
parents:
diff changeset
   174
darkGreyFormOn:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   175
    "return a darkGrey form"
48194c26a46c Initial revision
claus
parents:
diff changeset
   176
48194c26a46c Initial revision
claus
parents:
diff changeset
   177
    (aDevice ~~ Display) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   178
        ^ self width:8 height:4 fromArray:(self darkGreyFormBits) on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   179
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   180
    DarkGreyForm isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   181
        DarkGreyForm := self width:8 height:4 
48194c26a46c Initial revision
claus
parents:
diff changeset
   182
                             fromArray:(self darkGreyFormBits) on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   183
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   184
    ^ DarkGreyForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   185
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   186
48194c26a46c Initial revision
claus
parents:
diff changeset
   187
veryDarkGreyFormOn:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   188
    "return a veryDarkGrey form"
48194c26a46c Initial revision
claus
parents:
diff changeset
   189
48194c26a46c Initial revision
claus
parents:
diff changeset
   190
    (aDevice ~~ Display) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   191
        ^ self width:8 height:4 fromArray:(self veryDarkGreyFormBits) on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   192
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   193
    VeryDarkGreyForm isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   194
        VeryDarkGreyForm := self width:8 height:4 
48194c26a46c Initial revision
claus
parents:
diff changeset
   195
                             fromArray:(self veryDarkGreyFormBits) on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   196
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   197
    ^ VeryDarkGreyForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   198
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   199
48194c26a46c Initial revision
claus
parents:
diff changeset
   200
!Form class methodsFor:'ST-80 compatibility'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   201
48194c26a46c Initial revision
claus
parents:
diff changeset
   202
over
48194c26a46c Initial revision
claus
parents:
diff changeset
   203
    "return a constant usable as bitblt-combinationrule"
48194c26a46c Initial revision
claus
parents:
diff changeset
   204
48194c26a46c Initial revision
claus
parents:
diff changeset
   205
    ^ #copy
48194c26a46c Initial revision
claus
parents:
diff changeset
   206
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   207
48194c26a46c Initial revision
claus
parents:
diff changeset
   208
under
48194c26a46c Initial revision
claus
parents:
diff changeset
   209
    "return a constant usable as bitblt-combinationrule"
48194c26a46c Initial revision
claus
parents:
diff changeset
   210
48194c26a46c Initial revision
claus
parents:
diff changeset
   211
    ^ #or
48194c26a46c Initial revision
claus
parents:
diff changeset
   212
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   213
48194c26a46c Initial revision
claus
parents:
diff changeset
   214
reverse
48194c26a46c Initial revision
claus
parents:
diff changeset
   215
    "return a constant usable as bitblt-combinationrule"
48194c26a46c Initial revision
claus
parents:
diff changeset
   216
48194c26a46c Initial revision
claus
parents:
diff changeset
   217
    ^ #xor
48194c26a46c Initial revision
claus
parents:
diff changeset
   218
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   219
48194c26a46c Initial revision
claus
parents:
diff changeset
   220
!Form class methodsFor:'instance creation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   221
48194c26a46c Initial revision
claus
parents:
diff changeset
   222
extent:ext
48194c26a46c Initial revision
claus
parents:
diff changeset
   223
    "create a new form, take dimensions from ext.
48194c26a46c Initial revision
claus
parents:
diff changeset
   224
     Smalltalk-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
   225
48194c26a46c Initial revision
claus
parents:
diff changeset
   226
    |newForm|
48194c26a46c Initial revision
claus
parents:
diff changeset
   227
48194c26a46c Initial revision
claus
parents:
diff changeset
   228
    newForm := self width:(ext x) height:(ext y).
48194c26a46c Initial revision
claus
parents:
diff changeset
   229
    newForm fill:(Color colorId:0).
48194c26a46c Initial revision
claus
parents:
diff changeset
   230
    newForm paint:(Color colorId:1).
48194c26a46c Initial revision
claus
parents:
diff changeset
   231
    ^ newForm
48194c26a46c Initial revision
claus
parents:
diff changeset
   232
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   233
48194c26a46c Initial revision
claus
parents:
diff changeset
   234
extent:ext fromArray:data offset:offs
48194c26a46c Initial revision
claus
parents:
diff changeset
   235
    "create a new form, take dimensions from ext, bits from data.
48194c26a46c Initial revision
claus
parents:
diff changeset
   236
     Smalltalk-80 compatibility."
48194c26a46c Initial revision
claus
parents:
diff changeset
   237
48194c26a46c Initial revision
claus
parents:
diff changeset
   238
    ^ self width:(ext x) height:(ext y) offset:offs fromArray:data
48194c26a46c Initial revision
claus
parents:
diff changeset
   239
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   240
48194c26a46c Initial revision
claus
parents:
diff changeset
   241
width:w height:h on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   242
    "create a new form on device, aDevice; depth is what device likes most"
48194c26a46c Initial revision
claus
parents:
diff changeset
   243
48194c26a46c Initial revision
claus
parents:
diff changeset
   244
    ^ (self on:aDevice) width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
   245
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   246
48194c26a46c Initial revision
claus
parents:
diff changeset
   247
width:w height:h depth:d on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   248
    "create a new form with depth d on device, aDevice"
48194c26a46c Initial revision
claus
parents:
diff changeset
   249
48194c26a46c Initial revision
claus
parents:
diff changeset
   250
    ^ (self on:aDevice) width:w height:h depth:d
48194c26a46c Initial revision
claus
parents:
diff changeset
   251
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   252
48194c26a46c Initial revision
claus
parents:
diff changeset
   253
width:w height:h fromArray:anArray on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   254
    "create a new form on device, aDevice and
48194c26a46c Initial revision
claus
parents:
diff changeset
   255
     initialize the pixels from anArray"
48194c26a46c Initial revision
claus
parents:
diff changeset
   256
48194c26a46c Initial revision
claus
parents:
diff changeset
   257
    ^ (self on:aDevice) width:w height:h fromArray:anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
   258
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   259
48194c26a46c Initial revision
claus
parents:
diff changeset
   260
width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
   261
    "create a new form on the default device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   262
48194c26a46c Initial revision
claus
parents:
diff changeset
   263
    ^ (self on:Display) width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
   264
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   265
48194c26a46c Initial revision
claus
parents:
diff changeset
   266
width:w height:h depth:d
48194c26a46c Initial revision
claus
parents:
diff changeset
   267
    "create a new form on the default device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   268
48194c26a46c Initial revision
claus
parents:
diff changeset
   269
    ^ (self on:Display) width:w height:h depth:d
48194c26a46c Initial revision
claus
parents:
diff changeset
   270
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   271
48194c26a46c Initial revision
claus
parents:
diff changeset
   272
width:w height:h fromArray:anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
   273
    "create a new form on the default device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   274
48194c26a46c Initial revision
claus
parents:
diff changeset
   275
    ^ (self on:Display) width:w height:h fromArray:anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
   276
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   277
48194c26a46c Initial revision
claus
parents:
diff changeset
   278
width:w height:h offset:offs fromArray:anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
   279
    "create a new form on the default device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   280
48194c26a46c Initial revision
claus
parents:
diff changeset
   281
    ^ (self on:Display) width:w height:h offset:offs fromArray:anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
   282
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   283
48194c26a46c Initial revision
claus
parents:
diff changeset
   284
white
48194c26a46c Initial revision
claus
parents:
diff changeset
   285
    "ST80 compatibility;
48194c26a46c Initial revision
claus
parents:
diff changeset
   286
     return a white form - this returns white color"
48194c26a46c Initial revision
claus
parents:
diff changeset
   287
48194c26a46c Initial revision
claus
parents:
diff changeset
   288
    ^ Color white
48194c26a46c Initial revision
claus
parents:
diff changeset
   289
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   290
48194c26a46c Initial revision
claus
parents:
diff changeset
   291
black
48194c26a46c Initial revision
claus
parents:
diff changeset
   292
    "ST80 compatibility;
48194c26a46c Initial revision
claus
parents:
diff changeset
   293
     return a black form - this return black color"
48194c26a46c Initial revision
claus
parents:
diff changeset
   294
48194c26a46c Initial revision
claus
parents:
diff changeset
   295
    ^ Color black
48194c26a46c Initial revision
claus
parents:
diff changeset
   296
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   297
48194c26a46c Initial revision
claus
parents:
diff changeset
   298
gray
48194c26a46c Initial revision
claus
parents:
diff changeset
   299
    "ST80 compatibility;
48194c26a46c Initial revision
claus
parents:
diff changeset
   300
    return a grey form - this returns grey color"
48194c26a46c Initial revision
claus
parents:
diff changeset
   301
48194c26a46c Initial revision
claus
parents:
diff changeset
   302
    ^ self grey
48194c26a46c Initial revision
claus
parents:
diff changeset
   303
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   304
48194c26a46c Initial revision
claus
parents:
diff changeset
   305
grey
48194c26a46c Initial revision
claus
parents:
diff changeset
   306
    "ST80 compatibility;
48194c26a46c Initial revision
claus
parents:
diff changeset
   307
    return a grey form - this returns grey color"
48194c26a46c Initial revision
claus
parents:
diff changeset
   308
48194c26a46c Initial revision
claus
parents:
diff changeset
   309
    ^ Color grey
48194c26a46c Initial revision
claus
parents:
diff changeset
   310
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   311
48194c26a46c Initial revision
claus
parents:
diff changeset
   312
lightGrey
48194c26a46c Initial revision
claus
parents:
diff changeset
   313
    "ST80 compatibility;
48194c26a46c Initial revision
claus
parents:
diff changeset
   314
    return a lightGrey form - this returns lightGrey color"
48194c26a46c Initial revision
claus
parents:
diff changeset
   315
48194c26a46c Initial revision
claus
parents:
diff changeset
   316
    ^ Color lightGrey
48194c26a46c Initial revision
claus
parents:
diff changeset
   317
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   318
48194c26a46c Initial revision
claus
parents:
diff changeset
   319
darkGrey
48194c26a46c Initial revision
claus
parents:
diff changeset
   320
    "ST80 compatibility;
48194c26a46c Initial revision
claus
parents:
diff changeset
   321
    return a darkGrey form - this returns darkGrey color"
48194c26a46c Initial revision
claus
parents:
diff changeset
   322
48194c26a46c Initial revision
claus
parents:
diff changeset
   323
    ^ Color darkGrey
48194c26a46c Initial revision
claus
parents:
diff changeset
   324
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   325
48194c26a46c Initial revision
claus
parents:
diff changeset
   326
darkGray
48194c26a46c Initial revision
claus
parents:
diff changeset
   327
    "ST80 compatibility;
48194c26a46c Initial revision
claus
parents:
diff changeset
   328
    return a darkGrey form - this returns darkGrey color"
48194c26a46c Initial revision
claus
parents:
diff changeset
   329
48194c26a46c Initial revision
claus
parents:
diff changeset
   330
    ^ Color darkGrey
48194c26a46c Initial revision
claus
parents:
diff changeset
   331
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   332
48194c26a46c Initial revision
claus
parents:
diff changeset
   333
!Form class methodsFor:'patterns'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   334
48194c26a46c Initial revision
claus
parents:
diff changeset
   335
ditherBitsForXin64:x
48194c26a46c Initial revision
claus
parents:
diff changeset
   336
    "return a dither pattern for x/64; x in 1..32"
48194c26a46c Initial revision
claus
parents:
diff changeset
   337
48194c26a46c Initial revision
claus
parents:
diff changeset
   338
    |sel|
48194c26a46c Initial revision
claus
parents:
diff changeset
   339
48194c26a46c Initial revision
claus
parents:
diff changeset
   340
    DitherPatterns isNil ifTrue:[
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   341
        DitherPatterns := Array new:32.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   342
        1 to:32 do:[:i |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   343
            sel := ('dither' , i printString , 'in64') asSymbol.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   344
            DitherPatterns at:i put:(self perform:sel)
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   345
        ]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   346
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   347
    ^ DitherPatterns at:x
48194c26a46c Initial revision
claus
parents:
diff changeset
   348
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   349
48194c26a46c Initial revision
claus
parents:
diff changeset
   350
dither1in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   351
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   352
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   353
    ^ #[2r10000000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   354
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   355
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   356
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   357
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   358
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   359
        2r00000000
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   360
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   361
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   362
48194c26a46c Initial revision
claus
parents:
diff changeset
   363
dither2in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   364
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   365
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   366
    ^ #[2r10000000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   367
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   368
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   369
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   370
        2r00001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   371
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   372
        2r00000000
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   373
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   374
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   375
48194c26a46c Initial revision
claus
parents:
diff changeset
   376
dither3in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   377
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   378
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   379
    ^ #[2r10000000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   380
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   381
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   382
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   383
        2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   384
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   385
        2r00000000
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   386
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   387
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   388
48194c26a46c Initial revision
claus
parents:
diff changeset
   389
dither4in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   390
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   391
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   392
    ^ #[2r10001000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   393
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   394
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   395
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   396
        2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   397
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   398
        2r00000000
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   399
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   400
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   401
48194c26a46c Initial revision
claus
parents:
diff changeset
   402
dither5in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   403
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   404
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   405
    ^ #[2r10001000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   406
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   407
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   408
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   409
        2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   410
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   411
        2r00000010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   412
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   413
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   414
48194c26a46c Initial revision
claus
parents:
diff changeset
   415
dither6in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   416
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   417
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   418
    ^ #[2r10001000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   419
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   420
        2r00100000
48194c26a46c Initial revision
claus
parents:
diff changeset
   421
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   422
        2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   423
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   424
        2r00000010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   425
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   426
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   427
48194c26a46c Initial revision
claus
parents:
diff changeset
   428
dither7in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   429
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   430
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   431
    ^ #[2r10001000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   432
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   433
        2r00100010
48194c26a46c Initial revision
claus
parents:
diff changeset
   434
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   435
        2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   436
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   437
        2r00000010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   438
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   439
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   440
48194c26a46c Initial revision
claus
parents:
diff changeset
   441
dither8in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   442
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   443
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   444
    ^ #[2r10001000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   445
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   446
        2r00100010
48194c26a46c Initial revision
claus
parents:
diff changeset
   447
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   448
        2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   449
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   450
        2r00100010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   451
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   452
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   453
48194c26a46c Initial revision
claus
parents:
diff changeset
   454
dither9in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   455
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   456
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   457
    ^ #[2r10001000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   458
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   459
        2r00100010
48194c26a46c Initial revision
claus
parents:
diff changeset
   460
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   461
        2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   462
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   463
        2r10100010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   464
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   465
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   466
48194c26a46c Initial revision
claus
parents:
diff changeset
   467
dither10in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   468
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   469
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   470
    ^ #[2r10001000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   471
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   472
        2r00101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   473
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   474
        2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   475
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   476
        2r10100010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   477
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   478
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   479
48194c26a46c Initial revision
claus
parents:
diff changeset
   480
dither11in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   481
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   482
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   483
    ^ #[2r10001000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   484
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   485
        2r00101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   486
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   487
        2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   488
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   489
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   490
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   491
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   492
48194c26a46c Initial revision
claus
parents:
diff changeset
   493
dither12in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   494
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   495
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   496
    ^ #[2r10001000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   497
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   498
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   499
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   500
        2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   501
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   502
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   503
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   504
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   505
48194c26a46c Initial revision
claus
parents:
diff changeset
   506
dither13in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   507
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   508
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   509
    ^ #[2r10001000
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   510
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   511
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   512
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   513
        2r10101000
48194c26a46c Initial revision
claus
parents:
diff changeset
   514
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   515
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   516
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   517
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   518
48194c26a46c Initial revision
claus
parents:
diff changeset
   519
dither14in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   520
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   521
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   522
    ^ #[2r10001010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   523
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   524
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   525
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   526
        2r10101000
48194c26a46c Initial revision
claus
parents:
diff changeset
   527
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   528
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   529
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   530
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   531
48194c26a46c Initial revision
claus
parents:
diff changeset
   532
dither15in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   533
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   534
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   535
    ^ #[2r10001010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   536
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   537
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   538
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   539
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   540
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   541
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   542
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   543
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   544
48194c26a46c Initial revision
claus
parents:
diff changeset
   545
dither16in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   546
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   547
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   548
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   549
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   550
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   551
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   552
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   553
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   554
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   555
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   556
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   557
48194c26a46c Initial revision
claus
parents:
diff changeset
   558
dither17in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   559
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   560
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   561
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   562
        2r01000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   563
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   564
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   565
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   566
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   567
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   568
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   569
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   570
48194c26a46c Initial revision
claus
parents:
diff changeset
   571
dither18in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   572
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   573
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   574
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   575
        2r01000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   576
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   577
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   578
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   579
        2r00000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   580
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   581
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   582
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   583
48194c26a46c Initial revision
claus
parents:
diff changeset
   584
dither19in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   585
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   586
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   587
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   588
        2r01000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   589
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   590
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   591
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   592
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   593
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   594
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   595
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   596
48194c26a46c Initial revision
claus
parents:
diff changeset
   597
dither20in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   598
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   599
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   600
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   601
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   602
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   603
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   604
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   605
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   606
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   607
        2r00000000]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   608
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   609
48194c26a46c Initial revision
claus
parents:
diff changeset
   610
dither21in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   611
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   612
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   613
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   614
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   615
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   616
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   617
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   618
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   619
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   620
        2r00000001]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   621
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   622
48194c26a46c Initial revision
claus
parents:
diff changeset
   623
dither22in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   624
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   625
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   626
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   627
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   628
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   629
        2r00010000
48194c26a46c Initial revision
claus
parents:
diff changeset
   630
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   631
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   632
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   633
        2r00000001]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   634
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   635
48194c26a46c Initial revision
claus
parents:
diff changeset
   636
dither23in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   637
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   638
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   639
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   640
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   641
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   642
        2r00010001
48194c26a46c Initial revision
claus
parents:
diff changeset
   643
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   644
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   645
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   646
        2r00000001]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   647
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   648
48194c26a46c Initial revision
claus
parents:
diff changeset
   649
dither24in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   650
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   651
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   652
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   653
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   654
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   655
        2r00010001
48194c26a46c Initial revision
claus
parents:
diff changeset
   656
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   657
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   658
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   659
        2r00010001]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   660
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   661
48194c26a46c Initial revision
claus
parents:
diff changeset
   662
dither25in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   663
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   664
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   665
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   666
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   667
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   668
        2r00010001
48194c26a46c Initial revision
claus
parents:
diff changeset
   669
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   670
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   671
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   672
        2r01010001]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   673
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   674
48194c26a46c Initial revision
claus
parents:
diff changeset
   675
dither26in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   676
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   677
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   678
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   679
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   680
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   681
        2r00010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   682
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   683
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   684
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   685
        2r01010001]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   686
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   687
48194c26a46c Initial revision
claus
parents:
diff changeset
   688
dither27in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   689
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   690
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   691
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   692
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   693
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   694
        2r00010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   695
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   696
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   697
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   698
        2r01010101]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   699
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   700
48194c26a46c Initial revision
claus
parents:
diff changeset
   701
dither28in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   702
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   703
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   704
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   705
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   706
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   707
        2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   708
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   709
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   710
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   711
        2r01010101]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   712
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   713
48194c26a46c Initial revision
claus
parents:
diff changeset
   714
dither29in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   715
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   716
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   717
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   718
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   719
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   720
        2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   721
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   722
        2r01010100
48194c26a46c Initial revision
claus
parents:
diff changeset
   723
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   724
        2r01010101]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   725
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   726
48194c26a46c Initial revision
claus
parents:
diff changeset
   727
dither30in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   728
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   729
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   730
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   731
        2r01000101
48194c26a46c Initial revision
claus
parents:
diff changeset
   732
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   733
        2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   734
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   735
        2r01010100
48194c26a46c Initial revision
claus
parents:
diff changeset
   736
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   737
        2r01010101]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   738
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   739
48194c26a46c Initial revision
claus
parents:
diff changeset
   740
dither31in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   741
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   742
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   743
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   744
        2r01000101
48194c26a46c Initial revision
claus
parents:
diff changeset
   745
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   746
        2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   747
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   748
        2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   749
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   750
        2r01010101]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   751
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   752
48194c26a46c Initial revision
claus
parents:
diff changeset
   753
dither32in64
48194c26a46c Initial revision
claus
parents:
diff changeset
   754
    "return a pattern for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   755
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   756
    ^ #[2r10101010
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   757
        2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   758
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   759
        2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   760
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   761
        2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   762
        2r10101010
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   763
        2r01010101]
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   764
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   765
48194c26a46c Initial revision
claus
parents:
diff changeset
   766
grey6Bits
48194c26a46c Initial revision
claus
parents:
diff changeset
   767
    "return a pattern with 6% grey, usable for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   768
48194c26a46c Initial revision
claus
parents:
diff changeset
   769
    ^ #(2r00000001
48194c26a46c Initial revision
claus
parents:
diff changeset
   770
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   771
        2r00010000
48194c26a46c Initial revision
claus
parents:
diff changeset
   772
        2r00000000)
48194c26a46c Initial revision
claus
parents:
diff changeset
   773
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   774
48194c26a46c Initial revision
claus
parents:
diff changeset
   775
grey12Bits
48194c26a46c Initial revision
claus
parents:
diff changeset
   776
    "return a pattern with 12% grey, usable for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   777
48194c26a46c Initial revision
claus
parents:
diff changeset
   778
    ^ #(2r00010001
48194c26a46c Initial revision
claus
parents:
diff changeset
   779
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   780
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   781
        2r00000000)
48194c26a46c Initial revision
claus
parents:
diff changeset
   782
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   783
48194c26a46c Initial revision
claus
parents:
diff changeset
   784
grey25Bits
48194c26a46c Initial revision
claus
parents:
diff changeset
   785
    "return a pattern with 25% grey, usable for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   786
48194c26a46c Initial revision
claus
parents:
diff changeset
   787
    ^ #(2r00010001
48194c26a46c Initial revision
claus
parents:
diff changeset
   788
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   789
        2r00010001
48194c26a46c Initial revision
claus
parents:
diff changeset
   790
        2r01000100)
48194c26a46c Initial revision
claus
parents:
diff changeset
   791
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   792
48194c26a46c Initial revision
claus
parents:
diff changeset
   793
grey37Bits
48194c26a46c Initial revision
claus
parents:
diff changeset
   794
    "return a pattern with 37% grey, usable for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   795
48194c26a46c Initial revision
claus
parents:
diff changeset
   796
    ^ #(2r00010001
48194c26a46c Initial revision
claus
parents:
diff changeset
   797
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   798
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   799
        2r10101010)
48194c26a46c Initial revision
claus
parents:
diff changeset
   800
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   801
48194c26a46c Initial revision
claus
parents:
diff changeset
   802
grey50Bits
48194c26a46c Initial revision
claus
parents:
diff changeset
   803
    "return a pattern with 50% grey, usable for dithering"
48194c26a46c Initial revision
claus
parents:
diff changeset
   804
48194c26a46c Initial revision
claus
parents:
diff changeset
   805
    ^ #(2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   806
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   807
        2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   808
        2r10101010)
48194c26a46c Initial revision
claus
parents:
diff changeset
   809
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   810
48194c26a46c Initial revision
claus
parents:
diff changeset
   811
veryLightGreyFormBits
48194c26a46c Initial revision
claus
parents:
diff changeset
   812
    "return a pattern usable to simulate veryDarkGray on monochrome device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   813
48194c26a46c Initial revision
claus
parents:
diff changeset
   814
    ^ #(2r10001000
48194c26a46c Initial revision
claus
parents:
diff changeset
   815
        2r00000000
48194c26a46c Initial revision
claus
parents:
diff changeset
   816
        2r00100010
48194c26a46c Initial revision
claus
parents:
diff changeset
   817
        2r00000000)
48194c26a46c Initial revision
claus
parents:
diff changeset
   818
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   819
48194c26a46c Initial revision
claus
parents:
diff changeset
   820
lightGreyFormBits
48194c26a46c Initial revision
claus
parents:
diff changeset
   821
    "return a pattern usable to simulate lightGray on monochrome device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   822
48194c26a46c Initial revision
claus
parents:
diff changeset
   823
    ^ #(2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   824
        2r00010001
48194c26a46c Initial revision
claus
parents:
diff changeset
   825
        2r01000100
48194c26a46c Initial revision
claus
parents:
diff changeset
   826
        2r00010001
48194c26a46c Initial revision
claus
parents:
diff changeset
   827
        2r01000100)
48194c26a46c Initial revision
claus
parents:
diff changeset
   828
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   829
48194c26a46c Initial revision
claus
parents:
diff changeset
   830
greyFormBits
48194c26a46c Initial revision
claus
parents:
diff changeset
   831
    "return a pattern usable to simulate gray on monochrome device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   832
48194c26a46c Initial revision
claus
parents:
diff changeset
   833
    ^ #(2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   834
        2r10101010
48194c26a46c Initial revision
claus
parents:
diff changeset
   835
        2r01010101
48194c26a46c Initial revision
claus
parents:
diff changeset
   836
        2r10101010)
48194c26a46c Initial revision
claus
parents:
diff changeset
   837
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   838
48194c26a46c Initial revision
claus
parents:
diff changeset
   839
darkGreyFormBits
48194c26a46c Initial revision
claus
parents:
diff changeset
   840
    "return a pattern usable to simulate darkGray on monochrome device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   841
48194c26a46c Initial revision
claus
parents:
diff changeset
   842
    ^ #(2r10111011
48194c26a46c Initial revision
claus
parents:
diff changeset
   843
        2r11101110
48194c26a46c Initial revision
claus
parents:
diff changeset
   844
        2r10111011
48194c26a46c Initial revision
claus
parents:
diff changeset
   845
        2r11101110)
48194c26a46c Initial revision
claus
parents:
diff changeset
   846
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   847
48194c26a46c Initial revision
claus
parents:
diff changeset
   848
veryDarkGreyFormBits
48194c26a46c Initial revision
claus
parents:
diff changeset
   849
    "return a pattern usable to simulate veryDarkGray on monochrome device"
48194c26a46c Initial revision
claus
parents:
diff changeset
   850
48194c26a46c Initial revision
claus
parents:
diff changeset
   851
    ^ #(2r01110111
48194c26a46c Initial revision
claus
parents:
diff changeset
   852
        2r11111111
48194c26a46c Initial revision
claus
parents:
diff changeset
   853
        2r11011101
48194c26a46c Initial revision
claus
parents:
diff changeset
   854
        2r11111111)
48194c26a46c Initial revision
claus
parents:
diff changeset
   855
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   856
48194c26a46c Initial revision
claus
parents:
diff changeset
   857
!Form methodsFor:'initialization'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   858
48194c26a46c Initial revision
claus
parents:
diff changeset
   859
initialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   860
    super initialize.
48194c26a46c Initial revision
claus
parents:
diff changeset
   861
    depth := 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   862
    foreground := Color colorId:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   863
    background := Color colorId:0
48194c26a46c Initial revision
claus
parents:
diff changeset
   864
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   865
48194c26a46c Initial revision
claus
parents:
diff changeset
   866
initGC
48194c26a46c Initial revision
claus
parents:
diff changeset
   867
    "stop server from sending exposure events for Forms -
48194c26a46c Initial revision
claus
parents:
diff changeset
   868
     (will fill up stream-queue on some stupid (i.e. sco) systems"
48194c26a46c Initial revision
claus
parents:
diff changeset
   869
48194c26a46c Initial revision
claus
parents:
diff changeset
   870
    super initGC.
48194c26a46c Initial revision
claus
parents:
diff changeset
   871
    lobby changed:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
   872
    self setGraphicsExposures:false
48194c26a46c Initial revision
claus
parents:
diff changeset
   873
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   874
48194c26a46c Initial revision
claus
parents:
diff changeset
   875
recreate
48194c26a46c Initial revision
claus
parents:
diff changeset
   876
    "reconstruct the form after a snapin"
48194c26a46c Initial revision
claus
parents:
diff changeset
   877
48194c26a46c Initial revision
claus
parents:
diff changeset
   878
    data notNil ifTrue:[
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   879
        (depth == 1 or:[depth == device depth]) ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   880
            drawableId := device createBitmapFromArray:data width:width height:height.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   881
            ^ self
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   882
        ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   883
        data := nil.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   884
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   885
    fileName notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   886
        drawableId := device createBitmapFromFile:fileName for:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
   887
        ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   888
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   889
    'cannot recreate form' printNewline.
48194c26a46c Initial revision
claus
parents:
diff changeset
   890
   "create an empty one"
48194c26a46c Initial revision
claus
parents:
diff changeset
   891
    depth == 1 ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   892
        drawableId := device createBitmapWidth:width height:height
48194c26a46c Initial revision
claus
parents:
diff changeset
   893
    ] ifFalse:[
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   894
        drawableId := device createPixmapWidth:width height:height depth:device depth
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   895
    ]
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   896
! !
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   897
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   898
!Form methodsFor:'binary storage'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   899
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   900
readBinaryContentsFrom: stream manager: manager
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   901
    "tell the newly restored Form about restoration"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   902
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   903
    super readBinaryContentsFrom: stream manager: manager.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   904
    self restored.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   905
    lobby register:self
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   906
! !
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   907
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   908
!Form methodsFor:'inspecting'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   909
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   910
inspect
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   911
    "redefined to launch an ImageInspector on the receiver
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   912
     (instead of the default InspectorView)."
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   913
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   914
    ImageInspectorView isNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   915
        super inspect
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   916
    ] ifFalse:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   917
        ImageInspectorView openOn:self
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   918
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   919
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   920
48194c26a46c Initial revision
claus
parents:
diff changeset
   921
!Form methodsFor:'getting a device form'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   922
48194c26a46c Initial revision
claus
parents:
diff changeset
   923
on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   924
    aDevice == device ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   925
        ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   926
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   927
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   928
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   929
48194c26a46c Initial revision
claus
parents:
diff changeset
   930
asMonochromeFormOn:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
   931
    aDevice == device ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   932
        depth == 1 ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   933
            ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   934
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   935
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   936
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   937
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   938
48194c26a46c Initial revision
claus
parents:
diff changeset
   939
!Form methodsFor:'private'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   940
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   941
restored
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   942
    drawableId := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   943
    gcId := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   944
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   945
48194c26a46c Initial revision
claus
parents:
diff changeset
   946
width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
   947
    "actual create"
48194c26a46c Initial revision
claus
parents:
diff changeset
   948
48194c26a46c Initial revision
claus
parents:
diff changeset
   949
    ((w == 0) or:[h == 0]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   950
        self error:'invalid form extent'.
48194c26a46c Initial revision
claus
parents:
diff changeset
   951
        ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   952
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   953
    width := w.
48194c26a46c Initial revision
claus
parents:
diff changeset
   954
    height := h.
48194c26a46c Initial revision
claus
parents:
diff changeset
   955
    offset := 0@0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   956
    drawableId := device createBitmapWidth:w height:h.
48194c26a46c Initial revision
claus
parents:
diff changeset
   957
    drawableId isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
   958
    BlackAndWhiteColorMap isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   959
        BlackAndWhiteColorMap := Array with:(Color white) with:(Color black)
48194c26a46c Initial revision
claus
parents:
diff changeset
   960
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   961
    localColorMap := BlackAndWhiteColorMap.
48194c26a46c Initial revision
claus
parents:
diff changeset
   962
    realized := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
   963
    lobby register:self
48194c26a46c Initial revision
claus
parents:
diff changeset
   964
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   965
48194c26a46c Initial revision
claus
parents:
diff changeset
   966
width:w height:h depth:d
48194c26a46c Initial revision
claus
parents:
diff changeset
   967
    "actual create"
48194c26a46c Initial revision
claus
parents:
diff changeset
   968
48194c26a46c Initial revision
claus
parents:
diff changeset
   969
    width := w.
48194c26a46c Initial revision
claus
parents:
diff changeset
   970
    height := h.
48194c26a46c Initial revision
claus
parents:
diff changeset
   971
    offset := 0@0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   972
    drawableId := device createPixmapWidth:w height:h depth:d.
48194c26a46c Initial revision
claus
parents:
diff changeset
   973
    drawableId isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
   974
    realized := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
   975
    depth := d.
48194c26a46c Initial revision
claus
parents:
diff changeset
   976
    lobby register:self
48194c26a46c Initial revision
claus
parents:
diff changeset
   977
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   978
48194c26a46c Initial revision
claus
parents:
diff changeset
   979
width:w height:h fromArray:anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
   980
    "actual create from array.
48194c26a46c Initial revision
claus
parents:
diff changeset
   981
     This method is somewhat more complicated as it should be due to 
48194c26a46c Initial revision
claus
parents:
diff changeset
   982
     supporting both byte-wise (ST/X-type) and short-word-wise (ST-80-type)
48194c26a46c Initial revision
claus
parents:
diff changeset
   983
     Arrays; in the later case, the shorts are first converted to bytes in
48194c26a46c Initial revision
claus
parents:
diff changeset
   984
     a ByteArray, then passed to the device."
48194c26a46c Initial revision
claus
parents:
diff changeset
   985
48194c26a46c Initial revision
claus
parents:
diff changeset
   986
    |bytes bits srcPerRow dstPerRow srcStart srcIndex dstIndex tmp isST80|
48194c26a46c Initial revision
claus
parents:
diff changeset
   987
48194c26a46c Initial revision
claus
parents:
diff changeset
   988
    bytes := anArray.
48194c26a46c Initial revision
claus
parents:
diff changeset
   989
48194c26a46c Initial revision
claus
parents:
diff changeset
   990
    anArray size ~~ (((w + 7) // 8) * h) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   991
        anArray size == (((w + 15) // 16) * h) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   992
            "I want the bytes but got shorts (ST-80)"
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   993
            bytes := ByteArray uninitializedNew:(((w + 7) // 8) * h).
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   994
            srcPerRow := (w + 15) // 16.
48194c26a46c Initial revision
claus
parents:
diff changeset
   995
            dstPerRow := (w + 7) // 8.
48194c26a46c Initial revision
claus
parents:
diff changeset
   996
            srcStart := 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   997
            dstIndex := 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   998
            1 to:h do:[:hi |
48194c26a46c Initial revision
claus
parents:
diff changeset
   999
                srcIndex := srcStart.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1000
                bits := anArray at:srcIndex.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1001
                1 to:dstPerRow do:[:di |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1002
                    di odd ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1003
                        bits := anArray at:srcIndex.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1004
                        bytes at:dstIndex put:(bits bitShift:-8)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1005
                    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1006
                        bytes at:dstIndex put:(bits bitAnd:16rFF).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1007
                        srcIndex := srcIndex + 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1008
                    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1009
                    dstIndex := dstIndex + 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1010
                ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1011
                srcStart := srcStart + srcPerRow
48194c26a46c Initial revision
claus
parents:
diff changeset
  1012
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1013
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1014
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1015
    width := w.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1016
    height := h.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1017
    offset := 0@0.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1018
    drawableId := device createBitmapFromArray:bytes width:w height:h.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1019
    drawableId isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1020
48194c26a46c Initial revision
claus
parents:
diff changeset
  1021
    data := bytes.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1022
    BlackAndWhiteColorMap isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1023
        BlackAndWhiteColorMap := Array with:(Color white) with:(Color black)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1024
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1025
    localColorMap := BlackAndWhiteColorMap.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1026
    realized := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1027
    lobby register:self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1028
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1029
48194c26a46c Initial revision
claus
parents:
diff changeset
  1030
width:w height:h offset:offs fromArray:anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
  1031
    "actual create from array"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1032
48194c26a46c Initial revision
claus
parents:
diff changeset
  1033
    self width:w height:h fromArray:anArray.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1034
    offset := offs
48194c26a46c Initial revision
claus
parents:
diff changeset
  1035
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1036
48194c26a46c Initial revision
claus
parents:
diff changeset
  1037
readFromFile:filename
48194c26a46c Initial revision
claus
parents:
diff changeset
  1038
    "read in file"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1039
48194c26a46c Initial revision
claus
parents:
diff changeset
  1040
    |pathName|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1041
48194c26a46c Initial revision
claus
parents:
diff changeset
  1042
    pathName := self class findBitmapFile:filename.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1043
    pathName notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1044
        drawableId := device createBitmapFromFile:pathName for:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1045
        drawableId isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1046
48194c26a46c Initial revision
claus
parents:
diff changeset
  1047
        fileName := pathName.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1048
        offset := 0@0.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1049
        realized := true.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1050
        BlackAndWhiteColorMap isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1051
            BlackAndWhiteColorMap := Array with:(Color white) with:(Color black)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1052
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1053
        localColorMap := BlackAndWhiteColorMap.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1054
        lobby register:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1055
        ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1056
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1057
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1058
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1059
48194c26a46c Initial revision
claus
parents:
diff changeset
  1060
readFromFile:filename resolution:dpi
48194c26a46c Initial revision
claus
parents:
diff changeset
  1061
    "read in the file, which is assumed to have data for a dpi-resolution;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1062
     if the resolution of the device differs, magnify the form"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1063
48194c26a46c Initial revision
claus
parents:
diff changeset
  1064
    |dpiH mag|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1065
48194c26a46c Initial revision
claus
parents:
diff changeset
  1066
    (self readFromFile:filename) isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1067
48194c26a46c Initial revision
claus
parents:
diff changeset
  1068
    "if the device is within +- 50% of dpi, no magnify is needed"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1069
    dpiH := Display horizontalPixelPerInch.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1070
    ((dpi >= (dpiH * 0.75)) and:[dpi <= (dpiH * 1.5)]) ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1071
    mag := (dpiH / dpi) rounded.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1072
    mag == 0 ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1073
        ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1074
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1075
    ^ self magnifyBy:(mag @ mag)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1076
48194c26a46c Initial revision
claus
parents:
diff changeset
  1077
    "Form fromFile:'SBrowser.icn' resolution:50"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1078
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1079
48194c26a46c Initial revision
claus
parents:
diff changeset
  1080
!Form methodsFor:'ST-80 compatibility'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1081
48194c26a46c Initial revision
claus
parents:
diff changeset
  1082
offset:org
48194c26a46c Initial revision
claus
parents:
diff changeset
  1083
    "set the offset.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1084
     Smalltalk-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1085
48194c26a46c Initial revision
claus
parents:
diff changeset
  1086
    offset := org
48194c26a46c Initial revision
claus
parents:
diff changeset
  1087
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1088
48194c26a46c Initial revision
claus
parents:
diff changeset
  1089
offset
48194c26a46c Initial revision
claus
parents:
diff changeset
  1090
    "set the offset.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1091
     Smalltalk-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1092
48194c26a46c Initial revision
claus
parents:
diff changeset
  1093
    ^ offset
48194c26a46c Initial revision
claus
parents:
diff changeset
  1094
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1095
48194c26a46c Initial revision
claus
parents:
diff changeset
  1096
displayOn:aGC at:aPoint
48194c26a46c Initial revision
claus
parents:
diff changeset
  1097
    "draw in aGC.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1098
     Smalltalk-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1099
48194c26a46c Initial revision
claus
parents:
diff changeset
  1100
    aGC drawOpaqueForm:self x:aPoint x y:aPoint y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1101
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1102
48194c26a46c Initial revision
claus
parents:
diff changeset
  1103
!Form methodsFor:'accessing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1104
48194c26a46c Initial revision
claus
parents:
diff changeset
  1105
colorMap
48194c26a46c Initial revision
claus
parents:
diff changeset
  1106
    "return the forms colormap"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1107
48194c26a46c Initial revision
claus
parents:
diff changeset
  1108
    ^ localColorMap
48194c26a46c Initial revision
claus
parents:
diff changeset
  1109
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1110
48194c26a46c Initial revision
claus
parents:
diff changeset
  1111
colorMap:anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
  1112
    "set the forms colormap"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1113
48194c26a46c Initial revision
claus
parents:
diff changeset
  1114
    localColorMap := anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
  1115
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1116
48194c26a46c Initial revision
claus
parents:
diff changeset
  1117
depth
48194c26a46c Initial revision
claus
parents:
diff changeset
  1118
    "return my depth"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1119
48194c26a46c Initial revision
claus
parents:
diff changeset
  1120
    ^ depth
48194c26a46c Initial revision
claus
parents:
diff changeset
  1121
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1122
48194c26a46c Initial revision
claus
parents:
diff changeset
  1123
bits
48194c26a46c Initial revision
claus
parents:
diff changeset
  1124
    "return a ByteArray filled with my bits -
48194c26a46c Initial revision
claus
parents:
diff changeset
  1125
     for depth 8 forms, 1 pixel/byte is filled;
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1126
     for depth 1 forms, 8 pixels/byte are filled
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1127
     for depth 4 forms, 2 pixels/byte are filled"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1128
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1129
    |pixelArray bytesPerRow bits
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1130
     byteIndex "{ Class: SmallInteger }"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1131
     bitMask   "{ Class: SmallInteger }"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1132
     hEnd      "{ Class: SmallInteger }"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1133
     wEnd      "{ Class: SmallInteger }"|
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1134
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1135
    data notNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1136
        ^ data
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1137
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1138
    drawableId isNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1139
        fileName notNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1140
            ^ (self on:Display) bits
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1141
        ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1142
        ^ nil
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1143
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1144
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1145
    "this is a very slow operation - every pixel is fetched from
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1146
     the device.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1147
     This MUST be replaced by code basied on getImage ....
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1148
    "
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1149
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1150
    (depth == 8) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1151
        bytesPerRow := width
48194c26a46c Initial revision
claus
parents:
diff changeset
  1152
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1153
        bytesPerRow := (width + 7) // 8
48194c26a46c Initial revision
claus
parents:
diff changeset
  1154
    ].
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1155
    pixelArray := ByteArray uninitializedNew:(bytesPerRow * height).
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1156
    byteIndex := 1.
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1157
    hEnd := height - 1.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1158
    wEnd := width - 1.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1159
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1160
    (depth == 8) ifTrue:[
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1161
        0 to:hEnd do:[:row |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1162
            0 to:wEnd do:[:col |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1163
                pixelArray at:byteIndex put:(self at:col @ row).
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1164
                byteIndex := byteIndex + 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1165
            ]
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1166
        ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1167
        ^ pixelArray
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1168
    ] ifFalse:[
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1169
        0 to:hEnd do:[:row |
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1170
            bitMask := 2r10000000.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1171
            bits := 0.
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1172
            0 to:wEnd do:[:col |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1173
                ((self at:col @ row) == 0) ifFalse:[
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1174
                    bits := bits bitOr:bitMask
48194c26a46c Initial revision
claus
parents:
diff changeset
  1175
                ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1176
                bitMask := bitMask bitShift:(1 negated).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1177
                (bitMask == 0) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1178
                    pixelArray at:byteIndex put:bits.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1179
                    bitMask := 2r10000000.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1180
                    bits := 0.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1181
                    byteIndex := byteIndex + 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1182
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1183
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1184
            (bitMask == 2r10000000) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1185
                pixelArray at:byteIndex put:bits.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1186
                byteIndex := byteIndex + 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1187
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1188
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1189
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1190
    ^ pixelArray
48194c26a46c Initial revision
claus
parents:
diff changeset
  1191
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1192
48194c26a46c Initial revision
claus
parents:
diff changeset
  1193
photometric
48194c26a46c Initial revision
claus
parents:
diff changeset
  1194
    "for compatibility with Image class ..."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1195
48194c26a46c Initial revision
claus
parents:
diff changeset
  1196
    depth == 1 ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1197
        ((localColorMap at:1) = Color white) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1198
            ((localColorMap at:1) = Color black) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1199
                ^ #whiteIs0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1200
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1201
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1202
        ((localColorMap at:1) = Color black) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1203
            ((localColorMap at:1) = Color white) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1204
                ^ #blackIs0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1205
            ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1206
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1207
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1208
    ^ #palette
48194c26a46c Initial revision
claus
parents:
diff changeset
  1209
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1210
48194c26a46c Initial revision
claus
parents:
diff changeset
  1211
samplesperPixel
48194c26a46c Initial revision
claus
parents:
diff changeset
  1212
    ^ 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1213
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1214
48194c26a46c Initial revision
claus
parents:
diff changeset
  1215
bitsPerSample
48194c26a46c Initial revision
claus
parents:
diff changeset
  1216
    ^ Array with:depth
48194c26a46c Initial revision
claus
parents:
diff changeset
  1217
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1218
48194c26a46c Initial revision
claus
parents:
diff changeset
  1219
!Form methodsFor:'image manipulations'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1220
48194c26a46c Initial revision
claus
parents:
diff changeset
  1221
magnifyBy:extent
48194c26a46c Initial revision
claus
parents:
diff changeset
  1222
    "return a new form magnified by extent, aPoint.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1223
     If non-integral magnify is asked for, pass the work on to 'hardMagnifyBy:'"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1224
48194c26a46c Initial revision
claus
parents:
diff changeset
  1225
    |mX mY dstX dstY newForm|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1226
48194c26a46c Initial revision
claus
parents:
diff changeset
  1227
    mX := extent x.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1228
    mY := extent y.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1229
    ((mX = 1) and:[mY = 1]) ifTrue:[^ self].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1230
48194c26a46c Initial revision
claus
parents:
diff changeset
  1231
    ((mX isKindOf:SmallInteger) and:[mY isKindOf:SmallInteger]) ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1232
        ^ self hardMagnifyBy:extent
48194c26a46c Initial revision
claus
parents:
diff changeset
  1233
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1234
48194c26a46c Initial revision
claus
parents:
diff changeset
  1235
    newForm := ((self class) on:device)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1236
                                width:(width * mX)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1237
                                height:(height * mY)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1238
                                depth:depth.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1239
48194c26a46c Initial revision
claus
parents:
diff changeset
  1240
    "expand rows"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1241
    (mY > 1) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1242
        dstY := 0.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1243
        0 to:(height - 1) do:[:srcY |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1244
            1 to:mY do:[:i |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1245
                newForm copyFrom:self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1246
                               x:0 y:srcY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1247
                             toX:0 y:dstY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1248
                           width:width height:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1249
                dstY := dstY + 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1250
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1251
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1252
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1253
48194c26a46c Initial revision
claus
parents:
diff changeset
  1254
    "expand cols"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1255
    (mX > 1) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1256
        dstX := (width * mX) - 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1257
        (width - 1) to:0 by:-1 do:[:srcX |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1258
            1 to:mX do:[:i |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1259
                newForm copyFrom:newForm
48194c26a46c Initial revision
claus
parents:
diff changeset
  1260
                               x:srcX y:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1261
                             toX:dstX y:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1262
                           width:1 height:(height * mY).
48194c26a46c Initial revision
claus
parents:
diff changeset
  1263
                dstX := dstX - 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1264
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1265
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1266
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1267
    ^ newForm
48194c26a46c Initial revision
claus
parents:
diff changeset
  1268
48194c26a46c Initial revision
claus
parents:
diff changeset
  1269
    "ScrollBar scrollUpButtonForm magnifyBy:(2 @ 2)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1270
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1271
48194c26a46c Initial revision
claus
parents:
diff changeset
  1272
mirrorV
48194c26a46c Initial revision
claus
parents:
diff changeset
  1273
    "return a new form mirrored vertically"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1274
48194c26a46c Initial revision
claus
parents:
diff changeset
  1275
    |dstX newForm|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1276
    newForm := ((self class) on:device)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1277
                                width:width
48194c26a46c Initial revision
claus
parents:
diff changeset
  1278
                                height:height
48194c26a46c Initial revision
claus
parents:
diff changeset
  1279
                                depth:depth.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1280
    "expand cols"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1281
    dstX := width - 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1282
    0 to:((width - 1) // 2) do:[:srcX |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1283
        newForm copyFrom:self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1284
                       x:srcX y:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1285
                     toX:dstX y:0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1286
                   width:1 height:height.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1287
        dstX := dstX - 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1288
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1289
    ^ newForm
48194c26a46c Initial revision
claus
parents:
diff changeset
  1290
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1291
48194c26a46c Initial revision
claus
parents:
diff changeset
  1292
mirrorH
48194c26a46c Initial revision
claus
parents:
diff changeset
  1293
    "return a new form mirrored horizontally"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1294
48194c26a46c Initial revision
claus
parents:
diff changeset
  1295
    |dstY newForm|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1296
    newForm := ((self class) on:device)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1297
                                width:width
48194c26a46c Initial revision
claus
parents:
diff changeset
  1298
                                height:height
48194c26a46c Initial revision
claus
parents:
diff changeset
  1299
                                depth:depth.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1300
    "expand rows"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1301
    dstY = height - 1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1302
    0 to:((height - 1) // 2) do:[:srcY |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1303
        newForm copyFrom:self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1304
                       x:0 y:srcY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1305
                     toX:0 y:dstY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1306
                   width:width height:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1307
        dstY := dstY - 1
48194c26a46c Initial revision
claus
parents:
diff changeset
  1308
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1309
    ^ newForm
48194c26a46c Initial revision
claus
parents:
diff changeset
  1310
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1311
48194c26a46c Initial revision
claus
parents:
diff changeset
  1312
!Form methodsFor:'storing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1313
48194c26a46c Initial revision
claus
parents:
diff changeset
  1314
storeOn:aStream
48194c26a46c Initial revision
claus
parents:
diff changeset
  1315
    aStream nextPutAll:'(Form width:'.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1316
    width storeOn:aStream.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1317
    aStream nextPutAll:' height:'.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1318
    height storeOn:aStream.
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1319
    aStream nextPutAll:' fromArray:('.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1320
    self bits storeOn:aStream.
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
  1321
    aStream nextPutAll:'))'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1322
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1323
48194c26a46c Initial revision
claus
parents:
diff changeset
  1324
!Form methodsFor:'editing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1325
48194c26a46c Initial revision
claus
parents:
diff changeset
  1326
edit
48194c26a46c Initial revision
claus
parents:
diff changeset
  1327
    FormEditView editForm:self
48194c26a46c Initial revision
claus
parents:
diff changeset
  1328
48194c26a46c Initial revision
claus
parents:
diff changeset
  1329
    "ScrollBar scrollUpButtonForm edit"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1330
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1331
48194c26a46c Initial revision
claus
parents:
diff changeset
  1332
show
48194c26a46c Initial revision
claus
parents:
diff changeset
  1333
    ((FormView new model:self) extent:self extent) realize
48194c26a46c Initial revision
claus
parents:
diff changeset
  1334
48194c26a46c Initial revision
claus
parents:
diff changeset
  1335
    "ScrollBar scrollUpButtonForm show"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1336
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1337
48194c26a46c Initial revision
claus
parents:
diff changeset
  1338
!Form class methodsFor:'fileIn/Out'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1339
48194c26a46c Initial revision
claus
parents:
diff changeset
  1340
readFrom:fileName
48194c26a46c Initial revision
claus
parents:
diff changeset
  1341
    "same as Form>>fromFile: - for ST-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1342
48194c26a46c Initial revision
claus
parents:
diff changeset
  1343
    ^ self fromFile:fileName
48194c26a46c Initial revision
claus
parents:
diff changeset
  1344
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1345
48194c26a46c Initial revision
claus
parents:
diff changeset
  1346
fromFile:filename on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
  1347
    "create a new form on device, aDevice and
48194c26a46c Initial revision
claus
parents:
diff changeset
  1348
     initialize the pixels from the file filename"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1349
48194c26a46c Initial revision
claus
parents:
diff changeset
  1350
    ^ (self on:aDevice) readFromFile:filename
48194c26a46c Initial revision
claus
parents:
diff changeset
  1351
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1352
48194c26a46c Initial revision
claus
parents:
diff changeset
  1353
fromFile:filename resolution:dpi on:aDevice
48194c26a46c Initial revision
claus
parents:
diff changeset
  1354
    "create a new form on device, aDevice and
48194c26a46c Initial revision
claus
parents:
diff changeset
  1355
     initialize the pixels from the file filename;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1356
     the data in the file is assumed to be for dpi resolution;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1357
     if it is different from the deisplays, magnify the picture"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1358
48194c26a46c Initial revision
claus
parents:
diff changeset
  1359
    ^ (self on:aDevice) readFromFile:filename resolution:dpi
48194c26a46c Initial revision
claus
parents:
diff changeset
  1360
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1361
48194c26a46c Initial revision
claus
parents:
diff changeset
  1362
fromFile:filename
48194c26a46c Initial revision
claus
parents:
diff changeset
  1363
    "create a new form taking the bits from a file on the default device"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1364
48194c26a46c Initial revision
claus
parents:
diff changeset
  1365
    ^ (self on:Display) readFromFile:filename
48194c26a46c Initial revision
claus
parents:
diff changeset
  1366
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1367
48194c26a46c Initial revision
claus
parents:
diff changeset
  1368
fromFile:filename resolution:dpi
48194c26a46c Initial revision
claus
parents:
diff changeset
  1369
    "create a new form taking the bits from a file on the default device
48194c26a46c Initial revision
claus
parents:
diff changeset
  1370
     the data in the file is assumed to be for dpi resolution;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1371
     if it is different from the deisplays, magnify the picture"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1372
48194c26a46c Initial revision
claus
parents:
diff changeset
  1373
    ^ (self on:Display) readFromFile:filename resolution:dpi
48194c26a46c Initial revision
claus
parents:
diff changeset
  1374
! !