DeviceWorkstation.st
author claus
Mon, 20 Dec 1993 00:42:23 +0100
changeset 20 ab35d92b9a4b
parent 12 9f0995fac1fa
child 21 7b3da079729d
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) 1993 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
Object subclass:#DeviceWorkstation
48194c26a46c Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'displayId
48194c26a46c Initial revision
claus
parents:
diff changeset
    15
                              visualType monitorType
48194c26a46c Initial revision
claus
parents:
diff changeset
    16
                              depth ncells bitsPerRGB
48194c26a46c Initial revision
claus
parents:
diff changeset
    17
                              hasColors hasGreyscales 
48194c26a46c Initial revision
claus
parents:
diff changeset
    18
                              width height widthMM heightMM resolutionHor resolutionVer
48194c26a46c Initial revision
claus
parents:
diff changeset
    19
                              knownViews knownIds knownBitmaps knownBitmapIds
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
    20
                              dispatching
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    21
                              controlDown shiftDown metaDown altDown
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
    22
                              motionEventCompression
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    23
                              lastId lastView
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
    24
                              keyboardMap
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
    25
			      isSlow'
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    26
       classVariableNames:   'ButtonTranslation MultiClickTimeDelta
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    27
                              DeviceErrorSignal'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    28
       poolDictionaries:''
48194c26a46c Initial revision
claus
parents:
diff changeset
    29
       category:'Interface-Graphics'
48194c26a46c Initial revision
claus
parents:
diff changeset
    30
!
48194c26a46c Initial revision
claus
parents:
diff changeset
    31
48194c26a46c Initial revision
claus
parents:
diff changeset
    32
DeviceWorkstation comment:'
48194c26a46c Initial revision
claus
parents:
diff changeset
    33
48194c26a46c Initial revision
claus
parents:
diff changeset
    34
COPYRIGHT (c) 1993 by Claus Gittinger
48194c26a46c Initial revision
claus
parents:
diff changeset
    35
              All Rights Reserved
48194c26a46c Initial revision
claus
parents:
diff changeset
    36
20
ab35d92b9a4b *** empty log message ***
claus
parents: 12
diff changeset
    37
$Header: /cvs/stx/stx/libview/DeviceWorkstation.st,v 1.7 1993-12-19 23:42:15 claus Exp $
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    38
written jan 93 by claus
48194c26a46c Initial revision
claus
parents:
diff changeset
    39
'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    40
48194c26a46c Initial revision
claus
parents:
diff changeset
    41
!DeviceWorkstation class methodsFor:'documentation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    42
48194c26a46c Initial revision
claus
parents:
diff changeset
    43
documentation
48194c26a46c Initial revision
claus
parents:
diff changeset
    44
"
48194c26a46c Initial revision
claus
parents:
diff changeset
    45
this abstract class defines common protocol to all Display types.
48194c26a46c Initial revision
claus
parents:
diff changeset
    46
48194c26a46c Initial revision
claus
parents:
diff changeset
    47
instance variables:
48194c26a46c Initial revision
claus
parents:
diff changeset
    48
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    49
displayId       <Number>        the device id of the display
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    50
visualType      <Symbol>        one of #StaticGray, #PseudoColor, ... #TrueColor
48194c26a46c Initial revision
claus
parents:
diff changeset
    51
monitorType     <Symbol>        one of #monochrome, #color, #unknown
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    52
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    53
depth           <Integer>       bits per color
48194c26a46c Initial revision
claus
parents:
diff changeset
    54
ncells          <Integer>       number of colors (i.e. colormap size; not always == 2^depth)
48194c26a46c Initial revision
claus
parents:
diff changeset
    55
bitsPerRGB      <Integer>       number of valid bits per rgb component
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    56
                                (actual number taken in A/D converter; not all devices report the true value)
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    57
hasColors       <Boolean>       true, if display supports colors
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    58
hasGreyscales   <Boolean>       true, if display supports grey-scales (i.e is not b/w display)
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    59
width           <Integer>       number of horizontal pixels
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    60
height          <Integer>       number of vertical pixels 
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    61
heightMM        <Number>        screen height in millimeter
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    62
widthMM         <Number>        screen width in millimeter
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    63
resolutionHor   <Number>        pixels per horizontal millimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
    64
resolutionVer   <Number>        pixels per vertical millimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
    65
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    66
knownViews      <Collection>    all views known
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    67
knownIds        <Collection>    corresponding device-view ids
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    68
knownBitmaps    <Collection>    all known device bitmaps
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    69
knownBitmapIds  <Collection>    corresponding device-bitmap ids
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    70
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    71
dispatching     <Boolean>       true, if currently in dispatch loop
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    72
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
    73
controlDown     <Boolean>       true, if control key currently pressed
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
    74
shiftDown       <Boolean>       true, if shift key currently pressed
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
    75
metaDown        <Boolean>       true, if meta key (cmd-key) is currently pressed
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
    76
altDown         <Boolean>       true, if alt key is currently pressed
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    77
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    78
motionEventCompression
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    79
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    80
lastId          <Number>
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    81
lastView        <View>
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    82
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    83
keyboardMap     <KeyBdMap>      mapping for keys
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
    84
isSlow		<Boolean>	set/cleared from startup - used to turn off
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
    85
				things like popup-shadows etc.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    86
"
48194c26a46c Initial revision
claus
parents:
diff changeset
    87
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
    88
48194c26a46c Initial revision
claus
parents:
diff changeset
    89
!DeviceWorkstation class methodsFor:'initialization'!
48194c26a46c Initial revision
claus
parents:
diff changeset
    90
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    91
initialize
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    92
    DeviceErrorSignal isNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    93
        DeviceErrorSignal := (Signal new) mayProceed:true.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    94
        DeviceErrorSignal notifierString:'device error'.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    95
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    96
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
    97
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    98
initializeConstants
48194c26a46c Initial revision
claus
parents:
diff changeset
    99
    "initialize some (soft) constants"
48194c26a46c Initial revision
claus
parents:
diff changeset
   100
48194c26a46c Initial revision
claus
parents:
diff changeset
   101
    MultiClickTimeDelta := 300.
48194c26a46c Initial revision
claus
parents:
diff changeset
   102
    ButtonTranslation := #(1 2 3)     "identity translation"
48194c26a46c Initial revision
claus
parents:
diff changeset
   103
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   104
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   105
!DeviceWorkstation class methodsFor:'signal access'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   106
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   107
deviceErrorSignal
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   108
    "return the signal used for device error reporting"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   109
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   110
    ^ DeviceErrorSignal
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   111
! !
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   112
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   113
!DeviceWorkstation class methodsFor:'accessing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   114
48194c26a46c Initial revision
claus
parents:
diff changeset
   115
buttonTranslation:anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
   116
    "set the button translation, #(1 2 3) is no-translation,
48194c26a46c Initial revision
claus
parents:
diff changeset
   117
     #(3 2 1) is ok for left-handers"
48194c26a46c Initial revision
claus
parents:
diff changeset
   118
48194c26a46c Initial revision
claus
parents:
diff changeset
   119
    ButtonTranslation := anArray
48194c26a46c Initial revision
claus
parents:
diff changeset
   120
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   121
48194c26a46c Initial revision
claus
parents:
diff changeset
   122
!DeviceWorkstation methodsFor:'initialize / release'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   123
48194c26a46c Initial revision
claus
parents:
diff changeset
   124
initialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   125
    "initialize the receiver for a connection to the default display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   126
48194c26a46c Initial revision
claus
parents:
diff changeset
   127
    ^ self initializeFor:nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   128
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   129
48194c26a46c Initial revision
claus
parents:
diff changeset
   130
initializeFor:aDisplayOrNilForAny
48194c26a46c Initial revision
claus
parents:
diff changeset
   131
    "initialize the receiver for a connection to a display. If the
48194c26a46c Initial revision
claus
parents:
diff changeset
   132
     argument is non-nil, it should specify which workstation should be
48194c26a46c Initial revision
claus
parents:
diff changeset
   133
     connected to (in a device specific manner). For X displays, this is
48194c26a46c Initial revision
claus
parents:
diff changeset
   134
     to be the display-string i.e. hostname:displayNr.
48194c26a46c Initial revision
claus
parents:
diff changeset
   135
     If the argument is nil,  connect to the default display."
48194c26a46c Initial revision
claus
parents:
diff changeset
   136
48194c26a46c Initial revision
claus
parents:
diff changeset
   137
    self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   138
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   139
48194c26a46c Initial revision
claus
parents:
diff changeset
   140
close
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   141
    "close down connection to Display - usually never done"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   142
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   143
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   144
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   145
48194c26a46c Initial revision
claus
parents:
diff changeset
   146
reinitialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   147
    "reinit after snapin"
48194c26a46c Initial revision
claus
parents:
diff changeset
   148
48194c26a46c Initial revision
claus
parents:
diff changeset
   149
    |prevKnownViews|
48194c26a46c Initial revision
claus
parents:
diff changeset
   150
48194c26a46c Initial revision
claus
parents:
diff changeset
   151
    displayId := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   152
    prevKnownViews := knownViews.
48194c26a46c Initial revision
claus
parents:
diff changeset
   153
    knownViews := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   154
    knownIds := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   155
48194c26a46c Initial revision
claus
parents:
diff changeset
   156
    self initializeFor:nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   157
48194c26a46c Initial revision
claus
parents:
diff changeset
   158
    "now, all Forms must be recreated"
48194c26a46c Initial revision
claus
parents:
diff changeset
   159
48194c26a46c Initial revision
claus
parents:
diff changeset
   160
    Form reinitializeAllOn:self.
48194c26a46c Initial revision
claus
parents:
diff changeset
   161
48194c26a46c Initial revision
claus
parents:
diff changeset
   162
    prevKnownViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   163
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   164
         first round: flush all device specific stuff
48194c26a46c Initial revision
claus
parents:
diff changeset
   165
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   166
        prevKnownViews do:[:aView |
48194c26a46c Initial revision
claus
parents:
diff changeset
   167
            aView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   168
                aView prepareForReinit
48194c26a46c Initial revision
claus
parents:
diff changeset
   169
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   170
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   171
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   172
         2nd round: all views should reinstall themself
48194c26a46c Initial revision
claus
parents:
diff changeset
   173
                    on the new display
48194c26a46c Initial revision
claus
parents:
diff changeset
   174
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   175
        prevKnownViews do:[:aView |
48194c26a46c Initial revision
claus
parents:
diff changeset
   176
            aView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   177
                "have to re-create the view"
48194c26a46c Initial revision
claus
parents:
diff changeset
   178
                aView reinitialize
48194c26a46c Initial revision
claus
parents:
diff changeset
   179
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   180
        ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   181
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   182
         3rd round: all views get a chance to handle
48194c26a46c Initial revision
claus
parents:
diff changeset
   183
                    changed environment (colors, font sizes etc)
48194c26a46c Initial revision
claus
parents:
diff changeset
   184
        "
48194c26a46c Initial revision
claus
parents:
diff changeset
   185
        prevKnownViews do:[:aView |
48194c26a46c Initial revision
claus
parents:
diff changeset
   186
            aView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   187
                aView reAdjustGeometry
48194c26a46c Initial revision
claus
parents:
diff changeset
   188
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   189
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   190
    ].
8
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   191
    dispatching := false.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   192
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   193
48194c26a46c Initial revision
claus
parents:
diff changeset
   194
initializeKeyboardMap
48194c26a46c Initial revision
claus
parents:
diff changeset
   195
    "keystrokes from the server are translated via the keyboard map.
48194c26a46c Initial revision
claus
parents:
diff changeset
   196
     Untranslated keystrokes arrive either as characters, or symbols
48194c26a46c Initial revision
claus
parents:
diff changeset
   197
     (which are the keySyms as symbol). The mapping table which is
48194c26a46c Initial revision
claus
parents:
diff changeset
   198
     setup here, is used in sendKeyPress:... later.
48194c26a46c Initial revision
claus
parents:
diff changeset
   199
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   200
48194c26a46c Initial revision
claus
parents:
diff changeset
   201
    keyboardMap := KeyboardMap new.
48194c26a46c Initial revision
claus
parents:
diff changeset
   202
48194c26a46c Initial revision
claus
parents:
diff changeset
   203
    "
8
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   204
     no more setup here - moved everything out into 'display.rc' file
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   205
    "
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   206
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   207
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   208
!DeviceWorkstation class methodsFor:'error handling'!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   209
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   210
resourceIdOfLastError
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   211
    "return the resource id responsible for the last error"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   212
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   213
    ^ self subclassResponsibility
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   214
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   215
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   216
lastError
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   217
    "return a string descibing the last error"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   218
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   219
    ^ self subclassResponsibility
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   220
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   221
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   222
errorInterrupt
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   223
    "x-error interrupt"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   224
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   225
    |badId badResource|
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   226
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   227
    badId := self resourceIdOfLastError.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   228
    badId ~~ 0 ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   229
        badResource := self resourceOfId:badId.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   230
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   231
    ^ DeviceErrorSignal
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   232
            raiseRequestWith:badResource
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   233
            errorString: 'Display error: ' , (self lastError)
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   234
!
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   235
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   236
resourceOfId:id
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   237
    "search thru all device stuff for a resource.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   238
     Needed for error handling"
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   239
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   240
    Form allInstances do:[:f |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   241
        f id == id ifTrue:[^ f]
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   242
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   243
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   244
    self allInstances do:[:aDisplay |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   245
        |views|
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   246
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   247
        views := aDisplay knownViews.
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   248
        views notNil ifTrue:[
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   249
            views do:[:v |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   250
                v id == id ifTrue:[^ v].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   251
                v gcId == id ifTrue:[^ v]
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   252
            ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   253
        ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   254
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   255
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   256
    Color allInstances do:[:c |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   257
        c colorId == id ifTrue:[^ c]
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   258
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   259
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   260
    Font allInstances do:[:f |
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   261
        f fontId == id ifTrue:[^ f]
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   262
    ].
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   263
    ^ nil
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   264
! !
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   265
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   266
!DeviceWorkstation methodsFor:'misc'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   267
48194c26a46c Initial revision
claus
parents:
diff changeset
   268
metaDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   269
    "return true, if the meta-key (alt-key on systems without meta)
48194c26a46c Initial revision
claus
parents:
diff changeset
   270
     is currently pressed"
48194c26a46c Initial revision
claus
parents:
diff changeset
   271
48194c26a46c Initial revision
claus
parents:
diff changeset
   272
    ^ metaDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   273
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   274
48194c26a46c Initial revision
claus
parents:
diff changeset
   275
altDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   276
    "return true, if the alt-key is currently pressed"
48194c26a46c Initial revision
claus
parents:
diff changeset
   277
48194c26a46c Initial revision
claus
parents:
diff changeset
   278
    ^ altDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   279
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   280
48194c26a46c Initial revision
claus
parents:
diff changeset
   281
controlDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   282
    "return true, if the control-key is currently pressed"
48194c26a46c Initial revision
claus
parents:
diff changeset
   283
48194c26a46c Initial revision
claus
parents:
diff changeset
   284
    ^ controlDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   285
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   286
48194c26a46c Initial revision
claus
parents:
diff changeset
   287
shiftDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   288
    "return true, if the shift-key is currently pressed"
48194c26a46c Initial revision
claus
parents:
diff changeset
   289
48194c26a46c Initial revision
claus
parents:
diff changeset
   290
    ^ shiftDown
48194c26a46c Initial revision
claus
parents:
diff changeset
   291
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   292
48194c26a46c Initial revision
claus
parents:
diff changeset
   293
unBuffered
48194c26a46c Initial revision
claus
parents:
diff changeset
   294
    "make all drawing be sent immediately to the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   295
48194c26a46c Initial revision
claus
parents:
diff changeset
   296
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   297
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   298
48194c26a46c Initial revision
claus
parents:
diff changeset
   299
buffered
48194c26a46c Initial revision
claus
parents:
diff changeset
   300
    "buffer drawing - do not send it immediately to the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   301
48194c26a46c Initial revision
claus
parents:
diff changeset
   302
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   303
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   304
    
48194c26a46c Initial revision
claus
parents:
diff changeset
   305
synchronizeOutput
48194c26a46c Initial revision
claus
parents:
diff changeset
   306
    "send all buffered drawing to the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   307
48194c26a46c Initial revision
claus
parents:
diff changeset
   308
    ^ self
48194c26a46c Initial revision
claus
parents:
diff changeset
   309
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   310
48194c26a46c Initial revision
claus
parents:
diff changeset
   311
compressMotionEvents:aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   312
    "turn on/off motion event compression 
48194c26a46c Initial revision
claus
parents:
diff changeset
   313
     - compressions makes always sense except in free-hand drawing of curves"
48194c26a46c Initial revision
claus
parents:
diff changeset
   314
48194c26a46c Initial revision
claus
parents:
diff changeset
   315
    motionEventCompression := aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   316
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   317
48194c26a46c Initial revision
claus
parents:
diff changeset
   318
hasColors:aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   319
    "set the hasColors flag - needed since some servers dont tell the
48194c26a46c Initial revision
claus
parents:
diff changeset
   320
     truth if a monochrome monitor is connected to a color server"
48194c26a46c Initial revision
claus
parents:
diff changeset
   321
48194c26a46c Initial revision
claus
parents:
diff changeset
   322
    hasColors := aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   323
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   324
48194c26a46c Initial revision
claus
parents:
diff changeset
   325
hasGreyscales:aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   326
    "set the hasGreyscales flag - can be used to simulate b&w behavior"
48194c26a46c Initial revision
claus
parents:
diff changeset
   327
48194c26a46c Initial revision
claus
parents:
diff changeset
   328
    hasGreyscales := aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   329
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   330
48194c26a46c Initial revision
claus
parents:
diff changeset
   331
ignoreBackingStore:aBoolean
48194c26a46c Initial revision
claus
parents:
diff changeset
   332
    "if the argument is true, the views backingStore setting will be ignored, and
48194c26a46c Initial revision
claus
parents:
diff changeset
   333
     no backing store used - this can be used on servers where backing store is
48194c26a46c Initial revision
claus
parents:
diff changeset
   334
     very slow (from rc-file)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   335
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   336
    ^ self
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   337
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   338
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   339
isSlow:aBoolean
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   340
    "set/clear the slow flag"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   341
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   342
    isSlow := aBoolean
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   343
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   344
48194c26a46c Initial revision
claus
parents:
diff changeset
   345
beep
48194c26a46c Initial revision
claus
parents:
diff changeset
   346
    "output an audible beep or bell"
48194c26a46c Initial revision
claus
parents:
diff changeset
   347
48194c26a46c Initial revision
claus
parents:
diff changeset
   348
    Stdout nextPut:(Character bell)
48194c26a46c Initial revision
claus
parents:
diff changeset
   349
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   350
48194c26a46c Initial revision
claus
parents:
diff changeset
   351
setInputFocusTo:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
   352
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   353
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   354
48194c26a46c Initial revision
claus
parents:
diff changeset
   355
!DeviceWorkstation methodsFor:'enumeration'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   356
48194c26a46c Initial revision
claus
parents:
diff changeset
   357
allViewsDo:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
   358
    "evaluate the argument, aBlock for all known views"
48194c26a46c Initial revision
claus
parents:
diff changeset
   359
48194c26a46c Initial revision
claus
parents:
diff changeset
   360
    knownViews notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   361
        knownViews do:[:aView |
48194c26a46c Initial revision
claus
parents:
diff changeset
   362
            aView notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   363
                aBlock value:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   364
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   365
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   366
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   367
48194c26a46c Initial revision
claus
parents:
diff changeset
   368
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   369
     View defaultStyle:#iris.
48194c26a46c Initial revision
claus
parents:
diff changeset
   370
     Display allViewsDo:[:v | v initStyle. v redraw]
48194c26a46c Initial revision
claus
parents:
diff changeset
   371
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   372
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   373
     View defaultStyle:#next.
48194c26a46c Initial revision
claus
parents:
diff changeset
   374
     Display allViewsDo:[:v | v initStyle. v redraw]
48194c26a46c Initial revision
claus
parents:
diff changeset
   375
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   376
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   377
     View defaultStyle:#normal.
48194c26a46c Initial revision
claus
parents:
diff changeset
   378
     Display allViewsDo:[:v | v initStyle. v redraw]
48194c26a46c Initial revision
claus
parents:
diff changeset
   379
    "
48194c26a46c Initial revision
claus
parents:
diff changeset
   380
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   381
48194c26a46c Initial revision
claus
parents:
diff changeset
   382
!DeviceWorkstation methodsFor:'accessing & queries'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   383
48194c26a46c Initial revision
claus
parents:
diff changeset
   384
displayFileDescriptor
10
470d292c3218 before big change
claus
parents: 8
diff changeset
   385
    "return the file descriptor associated with the display
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   386
     if any. If there is no underlying filedescriptor, return nil.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   387
     (used for event select/polling)"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
   388
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   389
    ^ nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   390
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   391
48194c26a46c Initial revision
claus
parents:
diff changeset
   392
serverVendor
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   393
    "return a string describing the server vendor
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   394
     - returns a dummy here"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
   395
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   396
    ^ 'generic'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   397
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   398
48194c26a46c Initial revision
claus
parents:
diff changeset
   399
vendorRelease
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   400
    "return a workstation release number
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   401
     - returns a dummy here"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   402
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   403
    ^ 0
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   404
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   405
48194c26a46c Initial revision
claus
parents:
diff changeset
   406
protocolVersion
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   407
    "return a protocol version number
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   408
     - returns a dummy here"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   409
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   410
    ^ 0
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   411
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   412
48194c26a46c Initial revision
claus
parents:
diff changeset
   413
blackpixel
48194c26a46c Initial revision
claus
parents:
diff changeset
   414
    "return the colorId of black"
48194c26a46c Initial revision
claus
parents:
diff changeset
   415
48194c26a46c Initial revision
claus
parents:
diff changeset
   416
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   417
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   418
48194c26a46c Initial revision
claus
parents:
diff changeset
   419
whitepixel
48194c26a46c Initial revision
claus
parents:
diff changeset
   420
    "return the colorId of white"
48194c26a46c Initial revision
claus
parents:
diff changeset
   421
48194c26a46c Initial revision
claus
parents:
diff changeset
   422
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   423
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   424
48194c26a46c Initial revision
claus
parents:
diff changeset
   425
viewIdFromPoint:aPoint in:windowId
48194c26a46c Initial revision
claus
parents:
diff changeset
   426
    "given a point in rootWindow, return the viewId of the subview of windowId
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   427
     hit by this coordinate. Return nil if no view was hit.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   428
     - use to find window to drop objects after a cross-view drag"
48194c26a46c Initial revision
claus
parents:
diff changeset
   429
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   430
    "returning nil here actually makes drag&drop impossible
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   431
     - could also be reimplemented to make a search over all knownViews here"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   432
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   433
    ^ nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   434
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   435
48194c26a46c Initial revision
claus
parents:
diff changeset
   436
translatePoint:aPoint from:windowId1 to:windowId2
48194c26a46c Initial revision
claus
parents:
diff changeset
   437
    "given a point in window1, return the coordinate in window2
48194c26a46c Initial revision
claus
parents:
diff changeset
   438
     - use to xlate points from a window to rootwindow"
48194c26a46c Initial revision
claus
parents:
diff changeset
   439
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   440
    "could be reimplemented to make a search over all knownViews here"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   441
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
   442
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   443
48194c26a46c Initial revision
claus
parents:
diff changeset
   444
id
48194c26a46c Initial revision
claus
parents:
diff changeset
   445
    "return the displayId"
48194c26a46c Initial revision
claus
parents:
diff changeset
   446
48194c26a46c Initial revision
claus
parents:
diff changeset
   447
    ^ displayId
48194c26a46c Initial revision
claus
parents:
diff changeset
   448
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   449
48194c26a46c Initial revision
claus
parents:
diff changeset
   450
ncells
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   451
    "return the number of usable color cells, the display has 
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   452
     - this is not always the 2 to the power of depth."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   453
48194c26a46c Initial revision
claus
parents:
diff changeset
   454
    ^ ncells
48194c26a46c Initial revision
claus
parents:
diff changeset
   455
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   456
48194c26a46c Initial revision
claus
parents:
diff changeset
   457
depth
48194c26a46c Initial revision
claus
parents:
diff changeset
   458
    "return the depth in pixels of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   459
48194c26a46c Initial revision
claus
parents:
diff changeset
   460
    ^ depth
48194c26a46c Initial revision
claus
parents:
diff changeset
   461
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   462
48194c26a46c Initial revision
claus
parents:
diff changeset
   463
bitsPerRGB
48194c26a46c Initial revision
claus
parents:
diff changeset
   464
    "return the number of valid bits per rgb component"
48194c26a46c Initial revision
claus
parents:
diff changeset
   465
48194c26a46c Initial revision
claus
parents:
diff changeset
   466
    ^ bitsPerRGB
48194c26a46c Initial revision
claus
parents:
diff changeset
   467
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   468
48194c26a46c Initial revision
claus
parents:
diff changeset
   469
visualType:aSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   470
    "set the visual type. The only situation, where this makes sense,
48194c26a46c Initial revision
claus
parents:
diff changeset
   471
     is with my plasma-display, which ignores the palette and spits out
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   472
     grey scales, independent of LUT definitions. 
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   473
     (of which the server knows nothing)"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   474
48194c26a46c Initial revision
claus
parents:
diff changeset
   475
    visualType := aSymbol.
48194c26a46c Initial revision
claus
parents:
diff changeset
   476
    (visualType == #StaticGray or:[visualType == #GrayScale]) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   477
        hasColors := false
48194c26a46c Initial revision
claus
parents:
diff changeset
   478
    ] ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   479
        hasColors := true
48194c26a46c Initial revision
claus
parents:
diff changeset
   480
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   481
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   482
48194c26a46c Initial revision
claus
parents:
diff changeset
   483
visualType
48194c26a46c Initial revision
claus
parents:
diff changeset
   484
    "return a symbol representing the visual type of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   485
48194c26a46c Initial revision
claus
parents:
diff changeset
   486
    ^ visualType
48194c26a46c Initial revision
claus
parents:
diff changeset
   487
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   488
48194c26a46c Initial revision
claus
parents:
diff changeset
   489
monitorType
48194c26a46c Initial revision
claus
parents:
diff changeset
   490
    "return a symbol representing the monitor type of the display.
48194c26a46c Initial revision
claus
parents:
diff changeset
   491
     It is usually set to #unknown, #color or #monochrome.
48194c26a46c Initial revision
claus
parents:
diff changeset
   492
     But it can be set to any value from the startup file, for later
48194c26a46c Initial revision
claus
parents:
diff changeset
   493
     testing from anywhere. For example the startup for plasma-displays 
48194c26a46c Initial revision
claus
parents:
diff changeset
   494
     can set it to #plasma to later influence the colors used in widgets
48194c26a46c Initial revision
claus
parents:
diff changeset
   495
     (indirectly through the resource file)."
48194c26a46c Initial revision
claus
parents:
diff changeset
   496
48194c26a46c Initial revision
claus
parents:
diff changeset
   497
    ^ monitorType
48194c26a46c Initial revision
claus
parents:
diff changeset
   498
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   499
48194c26a46c Initial revision
claus
parents:
diff changeset
   500
monitorType:aSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   501
    "set the monitorType - see comment in DeviceWorkstation>>montorType"
48194c26a46c Initial revision
claus
parents:
diff changeset
   502
48194c26a46c Initial revision
claus
parents:
diff changeset
   503
    monitorType := aSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   504
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   505
48194c26a46c Initial revision
claus
parents:
diff changeset
   506
hasColors
48194c26a46c Initial revision
claus
parents:
diff changeset
   507
    "return true, if its a color display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   508
48194c26a46c Initial revision
claus
parents:
diff changeset
   509
    ^ hasColors
48194c26a46c Initial revision
claus
parents:
diff changeset
   510
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   511
48194c26a46c Initial revision
claus
parents:
diff changeset
   512
hasGreyscales
48194c26a46c Initial revision
claus
parents:
diff changeset
   513
    "return true, if this workstation supports greyscales
48194c26a46c Initial revision
claus
parents:
diff changeset
   514
     (also true for color displays)"
48194c26a46c Initial revision
claus
parents:
diff changeset
   515
48194c26a46c Initial revision
claus
parents:
diff changeset
   516
    ^ hasGreyscales
48194c26a46c Initial revision
claus
parents:
diff changeset
   517
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   518
48194c26a46c Initial revision
claus
parents:
diff changeset
   519
hasShape
48194c26a46c Initial revision
claus
parents:
diff changeset
   520
    "return true, if this workstation supports non-rectangular windows"
48194c26a46c Initial revision
claus
parents:
diff changeset
   521
48194c26a46c Initial revision
claus
parents:
diff changeset
   522
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   523
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   524
48194c26a46c Initial revision
claus
parents:
diff changeset
   525
hasShm
48194c26a46c Initial revision
claus
parents:
diff changeset
   526
    "return true, if this workstation supports shared pixmaps"
48194c26a46c Initial revision
claus
parents:
diff changeset
   527
48194c26a46c Initial revision
claus
parents:
diff changeset
   528
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   529
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   530
48194c26a46c Initial revision
claus
parents:
diff changeset
   531
hasFax
48194c26a46c Initial revision
claus
parents:
diff changeset
   532
    "return true, if this workstation supports decompression of fax images"
48194c26a46c Initial revision
claus
parents:
diff changeset
   533
48194c26a46c Initial revision
claus
parents:
diff changeset
   534
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   535
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   536
48194c26a46c Initial revision
claus
parents:
diff changeset
   537
hasDPS
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   538
    "return true, if this workstation supports postscript output into views"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   539
48194c26a46c Initial revision
claus
parents:
diff changeset
   540
    ^ false
48194c26a46c Initial revision
claus
parents:
diff changeset
   541
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   542
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   543
isSlow
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   544
    "return true, if this is a relatively slow device -
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   545
     used to turn off things like popup-shadows"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   546
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   547
    ^ isSlow
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   548
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   549
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   550
keyboardMap
48194c26a46c Initial revision
claus
parents:
diff changeset
   551
    "return the keyboard map"
48194c26a46c Initial revision
claus
parents:
diff changeset
   552
48194c26a46c Initial revision
claus
parents:
diff changeset
   553
    ^ keyboardMap
48194c26a46c Initial revision
claus
parents:
diff changeset
   554
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   555
8
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   556
keyboardMap:aMap
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   557
    "set the keyboard map"
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   558
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   559
    keyboardMap := aMap
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   560
!
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   561
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   562
width
48194c26a46c Initial revision
claus
parents:
diff changeset
   563
    "return the width in pixels of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   564
48194c26a46c Initial revision
claus
parents:
diff changeset
   565
    ^ width
48194c26a46c Initial revision
claus
parents:
diff changeset
   566
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   567
48194c26a46c Initial revision
claus
parents:
diff changeset
   568
height
48194c26a46c Initial revision
claus
parents:
diff changeset
   569
    "return the height in pixels of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   570
48194c26a46c Initial revision
claus
parents:
diff changeset
   571
    ^ height
48194c26a46c Initial revision
claus
parents:
diff changeset
   572
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   573
48194c26a46c Initial revision
claus
parents:
diff changeset
   574
boundingBox
48194c26a46c Initial revision
claus
parents:
diff changeset
   575
    "return width and height as a Point.
48194c26a46c Initial revision
claus
parents:
diff changeset
   576
     Smalltalk-80 compatibility"
48194c26a46c Initial revision
claus
parents:
diff changeset
   577
48194c26a46c Initial revision
claus
parents:
diff changeset
   578
    ^ Rectangle origin:(0 @ 0) extent:(width @ height)
48194c26a46c Initial revision
claus
parents:
diff changeset
   579
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   580
48194c26a46c Initial revision
claus
parents:
diff changeset
   581
widthInMillimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
   582
    "return the width in millimeter of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   583
48194c26a46c Initial revision
claus
parents:
diff changeset
   584
    ^ widthMM
48194c26a46c Initial revision
claus
parents:
diff changeset
   585
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   586
48194c26a46c Initial revision
claus
parents:
diff changeset
   587
heightInMillimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
   588
    "return the height in millimeter of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   589
48194c26a46c Initial revision
claus
parents:
diff changeset
   590
    ^ heightMM
48194c26a46c Initial revision
claus
parents:
diff changeset
   591
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   592
48194c26a46c Initial revision
claus
parents:
diff changeset
   593
widthInMillimeter:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   594
    "set the width in millimeter of the display 
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   595
     - needed since some displays do not tell the truth or do not know it"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   596
48194c26a46c Initial revision
claus
parents:
diff changeset
   597
    widthMM := aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   598
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   599
48194c26a46c Initial revision
claus
parents:
diff changeset
   600
heightInMillimeter:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   601
    "set the height in millimeter of the display 
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   602
     - needed since some displays do not tell the truth or do not know it"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   603
48194c26a46c Initial revision
claus
parents:
diff changeset
   604
    heightMM := aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   605
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   606
48194c26a46c Initial revision
claus
parents:
diff changeset
   607
pixelPerMillimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
   608
    "return the number of horizontal/vertical pixels per millimeter of the display as Point"
48194c26a46c Initial revision
claus
parents:
diff changeset
   609
48194c26a46c Initial revision
claus
parents:
diff changeset
   610
    ^ (width / widthMM) @ (height / heightMM)
48194c26a46c Initial revision
claus
parents:
diff changeset
   611
48194c26a46c Initial revision
claus
parents:
diff changeset
   612
    "Display pixelPerMillimeter"
48194c26a46c Initial revision
claus
parents:
diff changeset
   613
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   614
48194c26a46c Initial revision
claus
parents:
diff changeset
   615
pixelPerInch
48194c26a46c Initial revision
claus
parents:
diff changeset
   616
    "return the number of horizontal/vertical pixels per inch of the display as Point"
48194c26a46c Initial revision
claus
parents:
diff changeset
   617
48194c26a46c Initial revision
claus
parents:
diff changeset
   618
    ^ ((width / widthMM) @ (height / heightMM)) * 25.4
48194c26a46c Initial revision
claus
parents:
diff changeset
   619
48194c26a46c Initial revision
claus
parents:
diff changeset
   620
    "Display pixelPerInch"
48194c26a46c Initial revision
claus
parents:
diff changeset
   621
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   622
48194c26a46c Initial revision
claus
parents:
diff changeset
   623
horizontalPixelPerMillimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
   624
    "return the number of horizontal pixels per millimeter of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   625
48194c26a46c Initial revision
claus
parents:
diff changeset
   626
    ^ width / widthMM
48194c26a46c Initial revision
claus
parents:
diff changeset
   627
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   628
48194c26a46c Initial revision
claus
parents:
diff changeset
   629
verticalPixelPerMillimeter
48194c26a46c Initial revision
claus
parents:
diff changeset
   630
    "return the number of vertical pixels per millimeter of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   631
48194c26a46c Initial revision
claus
parents:
diff changeset
   632
    ^ height / heightMM
48194c26a46c Initial revision
claus
parents:
diff changeset
   633
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   634
48194c26a46c Initial revision
claus
parents:
diff changeset
   635
horizontalPixelPerInch
48194c26a46c Initial revision
claus
parents:
diff changeset
   636
    "return the number of horizontal pixels per inch of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   637
48194c26a46c Initial revision
claus
parents:
diff changeset
   638
    ^ (width / widthMM) * 25.4
48194c26a46c Initial revision
claus
parents:
diff changeset
   639
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   640
48194c26a46c Initial revision
claus
parents:
diff changeset
   641
verticalPixelPerInch
48194c26a46c Initial revision
claus
parents:
diff changeset
   642
    "return the number of vertical pixels per inch of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   643
48194c26a46c Initial revision
claus
parents:
diff changeset
   644
    ^ (height / heightMM) * 25.4
48194c26a46c Initial revision
claus
parents:
diff changeset
   645
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   646
48194c26a46c Initial revision
claus
parents:
diff changeset
   647
center
48194c26a46c Initial revision
claus
parents:
diff changeset
   648
    "return the centerpoint in pixels of the display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   649
48194c26a46c Initial revision
claus
parents:
diff changeset
   650
    ^ (width // 2) @ (height // 2)
48194c26a46c Initial revision
claus
parents:
diff changeset
   651
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   652
48194c26a46c Initial revision
claus
parents:
diff changeset
   653
knownViews
48194c26a46c Initial revision
claus
parents:
diff changeset
   654
    "return a collection of all known views"
48194c26a46c Initial revision
claus
parents:
diff changeset
   655
48194c26a46c Initial revision
claus
parents:
diff changeset
   656
    ^ knownViews
48194c26a46c Initial revision
claus
parents:
diff changeset
   657
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   658
48194c26a46c Initial revision
claus
parents:
diff changeset
   659
knownViews:aCollection
48194c26a46c Initial revision
claus
parents:
diff changeset
   660
    "set the collection of all known views - take care,
48194c26a46c Initial revision
claus
parents:
diff changeset
   661
     bad use of this will create funny results; use only for snapshot support"
48194c26a46c Initial revision
claus
parents:
diff changeset
   662
48194c26a46c Initial revision
claus
parents:
diff changeset
   663
    knownViews := aCollection
48194c26a46c Initial revision
claus
parents:
diff changeset
   664
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   665
48194c26a46c Initial revision
claus
parents:
diff changeset
   666
!DeviceWorkstation methodsFor:'keyboard mapping'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   667
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   668
sendKeyPress:untranslatedKey x:x y:y to:someone
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   669
    "forward a key-press event to some handler;
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   670
     the key is translated via the translation table here."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   671
48194c26a46c Initial revision
claus
parents:
diff changeset
   672
    |key xlatedKey|
48194c26a46c Initial revision
claus
parents:
diff changeset
   673
48194c26a46c Initial revision
claus
parents:
diff changeset
   674
    key := untranslatedKey.
48194c26a46c Initial revision
claus
parents:
diff changeset
   675
    controlDown ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   676
        (key size == 1) ifTrue:[   "a single character"
48194c26a46c Initial revision
claus
parents:
diff changeset
   677
            key := ('Ctrl' , untranslatedKey asString) asSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   678
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   679
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   680
    metaDown ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   681
        (untranslatedKey isMemberOf:Character) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   682
            key := ('Cmd' , untranslatedKey asString) asSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   683
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   684
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   685
    altDown ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   686
        (untranslatedKey isMemberOf:Character) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   687
            key := ('Alt' , untranslatedKey asString) asSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
   688
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   689
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   690
48194c26a46c Initial revision
claus
parents:
diff changeset
   691
48194c26a46c Initial revision
claus
parents:
diff changeset
   692
    xlatedKey := keyboardMap valueFor:key.
48194c26a46c Initial revision
claus
parents:
diff changeset
   693
    xlatedKey notNil ifTrue:[
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   694
        someone delegate notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   695
            someone delegate keyPress:xlatedKey x:x y:y view:someone
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   696
        ] ifFalse:[
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   697
            someone keyPress:xlatedKey x:x y:y
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   698
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   699
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   700
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   701
48194c26a46c Initial revision
claus
parents:
diff changeset
   702
!DeviceWorkstation methodsFor:'private'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   703
48194c26a46c Initial revision
claus
parents:
diff changeset
   704
addKnownView:aView withId:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   705
    "add the View aView with Id:aNumber to the list of known views/id's"
48194c26a46c Initial revision
claus
parents:
diff changeset
   706
48194c26a46c Initial revision
claus
parents:
diff changeset
   707
    knownViews isNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   708
        knownViews := (VariableArray new:100) grow:0.
48194c26a46c Initial revision
claus
parents:
diff changeset
   709
        knownIds := (VariableArray new:100) grow:0
48194c26a46c Initial revision
claus
parents:
diff changeset
   710
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   711
    knownViews add:aView.
48194c26a46c Initial revision
claus
parents:
diff changeset
   712
    knownIds add:aNumber.
48194c26a46c Initial revision
claus
parents:
diff changeset
   713
    lastView := aView.
48194c26a46c Initial revision
claus
parents:
diff changeset
   714
    lastId := aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   715
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   716
48194c26a46c Initial revision
claus
parents:
diff changeset
   717
removeKnownView:aView
48194c26a46c Initial revision
claus
parents:
diff changeset
   718
    "remove aView from the list of known views/id's"
48194c26a46c Initial revision
claus
parents:
diff changeset
   719
48194c26a46c Initial revision
claus
parents:
diff changeset
   720
    |index|
48194c26a46c Initial revision
claus
parents:
diff changeset
   721
48194c26a46c Initial revision
claus
parents:
diff changeset
   722
    knownViews notNil ifTrue:[
8
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   723
        index := knownViews identityIndexOf:aView.
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   724
        index == 0 ifFalse:[
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   725
            knownViews removeIndex:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
   726
            knownIds removeIndex:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
   727
            lastId := nil.
48194c26a46c Initial revision
claus
parents:
diff changeset
   728
            lastView := nil
48194c26a46c Initial revision
claus
parents:
diff changeset
   729
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   730
    ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   731
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   732
48194c26a46c Initial revision
claus
parents:
diff changeset
   733
viewFromId:aNumber
48194c26a46c Initial revision
claus
parents:
diff changeset
   734
    "given an Id, return the corresponding view"
48194c26a46c Initial revision
claus
parents:
diff changeset
   735
48194c26a46c Initial revision
claus
parents:
diff changeset
   736
    |index|
48194c26a46c Initial revision
claus
parents:
diff changeset
   737
48194c26a46c Initial revision
claus
parents:
diff changeset
   738
    (aNumber == lastId) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   739
        ^ lastView
48194c26a46c Initial revision
claus
parents:
diff changeset
   740
    ].
8
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   741
    index := knownIds identityIndexOf:aNumber.
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
   742
    index == 0 ifTrue:[^ nil].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   743
    lastView := knownViews at:index.
48194c26a46c Initial revision
claus
parents:
diff changeset
   744
    lastId := aNumber.
48194c26a46c Initial revision
claus
parents:
diff changeset
   745
    ^ lastView
48194c26a46c Initial revision
claus
parents:
diff changeset
   746
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   747
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   748
!DeviceWorkstation methodsFor:'window stuff'!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   749
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   750
setCursors:aCursor
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   751
    "change the cursor of all views to aCursorId"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   752
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   753
    | id |
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   754
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   755
    id := (aCursor on:self) id.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   756
    id notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   757
        knownViews notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   758
            knownViews do:[:aView |
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   759
                aView id notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   760
                    self setCursor:id in:(aView id)
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   761
                ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   762
            ].
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   763
            self synchronizeOutput
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   764
        ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   765
    ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   766
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   767
    "Display setCursors:Cursor wait"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   768
    "Display restoreCursors"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   769
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   770
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   771
restoreCursors
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   772
    "restore the cursors of all views to their current cursor"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   773
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   774
    knownViews notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   775
        knownViews do:[:aView |
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   776
            aView id notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   777
                aView cursor notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   778
                    aView cursor id notNil ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   779
                        self setCursor:(aView cursor id) in:(aView id)
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   780
                    ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   781
                ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   782
            ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   783
        ].
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   784
        self synchronizeOutput
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   785
    ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   786
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   787
    "Display setCursors:(Cursor wait)"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   788
    "Display restoreCursors"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   789
! !
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   790
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   791
!DeviceWorkstation methodsFor:'events'!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   792
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   793
startDispatch
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   794
    "create the display dispatch process"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   795
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   796
    |sema fd p|
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   797
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   798
    dispatching ifTrue:[^ self].
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   799
    dispatching := true.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   800
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   801
    fd := self displayFileDescriptor.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   802
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   803
    ProcessorScheduler isPureEventDriven ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   804
        "handle all events by having preocessor call a block when something
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   805
         arrives on my filedescriptor"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   806
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   807
        Processor enableIOAction:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   808
                                     dispatching ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   809
                                         [self eventPending] whileTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   810
                                             self dispatchPendingEvents.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   811
                                             self checkForEndOfDispatch.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   812
                                         ].
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   813
                                         dispatching ifFalse:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   814
                                             Processor disableFd:fd
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   815
                                         ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   816
                                     ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   817
                                 ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   818
                              on:fd
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   819
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   820
    ] ifFalse:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   821
        "handle stuff as a process - sitting on a semaphore.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   822
         Tell Processor to trigger this semaphore when something arrives
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   823
         on my filedescriptor"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   824
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   825
        sema := Semaphore new.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   826
        p := [
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   827
            [dispatching] whileTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   828
                self eventPending ifFalse:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   829
                    Processor enableSemaphore:sema onInput:fd check:[self eventPending].
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   830
                    sema wait.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   831
                    Processor disableSemaphore:sema
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   832
                ].
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   833
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   834
                self dispatchPendingEvents.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   835
                self checkForEndOfDispatch.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   836
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   837
                dispatching ifFalse:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   838
                    sema := nil
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   839
                ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   840
            ]
20
ab35d92b9a4b *** empty log message ***
claus
parents: 12
diff changeset
   841
        ] forkAt:(Processor userSchedulingPriority + 1).
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   842
        p name:'event dispatcher'
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   843
    ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   844
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   845
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   846
checkForEndOfDispatch
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   847
    "return true, if there are still any views of interrest - if not,
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   848
     stop dispatch"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   849
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   850
    self == Display ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   851
        knownViews isEmpty ifTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   852
            dispatching := false
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   853
        ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   854
    ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   855
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   856
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   857
dispatchPendingEvents
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   858
    [self eventPending] whileTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   859
        self dispatchEventFor:nil withMask:nil
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   860
    ]
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   861
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   862
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   863
dispatchWhile:aBlock
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   864
    "get and process next event for any view as long as the argument-block
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   865
     evaluates to true"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   866
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   867
    [aBlock value] whileTrue:[
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   868
        self dispatchEvent
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   869
    ].
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   870
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   871
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   872
dispatchEvent
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   873
    "get and process next event for any view"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   874
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   875
    self dispatchEventFor:nil withMask:nil
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   876
! !
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   877
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   878
!DeviceWorkstation methodsFor:'bitmap/window creation'!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   879
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   880
createFaxImageFromArray:data width:w height:h type:type k:k msbFirst:msbFirst
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   881
    "create a new faxImage in the workstation
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   882
     type: 0 -> uncompressed
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   883
           1 -> group3 1D (k is void)
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   884
           2 -> group3 2D
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   885
           3 -> group4 2D (k is void)"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   886
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   887
    ^ nil
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   888
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   889
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   890
createBitmapWidth:w height:h
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   891
    "allocate a bitmap on the Xserver, the contents is undefined
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   892
     (i.e. random). Return a bitmap id or nil"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   893
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   894
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   895
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   896
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   897
createPixmapWidth:w height:h depth:d
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   898
    "allocate a pixmap on the Xserver, the contents is undefined
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   899
     (i.e. random). Return a bitmap id or nil"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   900
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   901
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   902
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   903
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   904
createBitmapFromFile:aString for:aForm
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   905
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   906
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   907
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   908
createBitmapFromArray:anArray width:w height:h
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   909
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   910
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   911
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   912
destroyPixmap:aDrawableId
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   913
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   914
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   915
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   916
destroyFaxImage:aFaxImageId
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   917
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   918
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   919
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   920
rootWindowFor:aView
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   921
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   922
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   923
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   924
createWindowFor:aView left:xpos top:ypos width:wwidth height:wheight
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   925
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   926
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   927
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   928
destroyView:aView withId:aWindowId
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   929
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   930
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   931
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   932
destroyGC:aGCId
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   933
    "destroy a GC"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   934
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   935
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   936
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   937
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   938
gcFor:aDrawableId
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   939
    "create a GC for drawing into aDrawable"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   940
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   941
    ^ self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   942
! !
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   943
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   944
!DeviceWorkstation methodsFor:'font stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
   945
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   946
listOfAvailableFonts
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   947
    "return a list containing all fonts on this display.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   948
     The returned list is an array of 4-element arrays, each
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   949
     containing family, face, style, size and encoding."
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   950
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   951
    self subclassResponsibility
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   952
!
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
   953
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   954
fontFamilies
48194c26a46c Initial revision
claus
parents:
diff changeset
   955
    "return a set of all available font families on this display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   956
48194c26a46c Initial revision
claus
parents:
diff changeset
   957
    |allFonts families family|
48194c26a46c Initial revision
claus
parents:
diff changeset
   958
48194c26a46c Initial revision
claus
parents:
diff changeset
   959
    allFonts := self listOfAvailableFonts.
48194c26a46c Initial revision
claus
parents:
diff changeset
   960
    allFonts isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
   961
    families := Set new.
48194c26a46c Initial revision
claus
parents:
diff changeset
   962
    allFonts do:[:arr |
48194c26a46c Initial revision
claus
parents:
diff changeset
   963
        family := arr at:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   964
        family notNil ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   965
            families add:family
48194c26a46c Initial revision
claus
parents:
diff changeset
   966
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   967
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   968
    ^ families
48194c26a46c Initial revision
claus
parents:
diff changeset
   969
48194c26a46c Initial revision
claus
parents:
diff changeset
   970
    "Display fontFamilies"
48194c26a46c Initial revision
claus
parents:
diff changeset
   971
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   972
48194c26a46c Initial revision
claus
parents:
diff changeset
   973
facesInFamily:aFamilyName
48194c26a46c Initial revision
claus
parents:
diff changeset
   974
    "return a set of all available font faces in aFamily on this display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   975
48194c26a46c Initial revision
claus
parents:
diff changeset
   976
    |allFonts faces family face|
48194c26a46c Initial revision
claus
parents:
diff changeset
   977
48194c26a46c Initial revision
claus
parents:
diff changeset
   978
    allFonts := self listOfAvailableFonts.
48194c26a46c Initial revision
claus
parents:
diff changeset
   979
    allFonts isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
   980
    faces := Set new.
48194c26a46c Initial revision
claus
parents:
diff changeset
   981
    allFonts do:[:arr |
48194c26a46c Initial revision
claus
parents:
diff changeset
   982
        family := arr at:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
   983
        (family = aFamilyName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
   984
            face := arr at:2.
48194c26a46c Initial revision
claus
parents:
diff changeset
   985
            faces add:face
48194c26a46c Initial revision
claus
parents:
diff changeset
   986
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
   987
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
   988
    ^ faces
48194c26a46c Initial revision
claus
parents:
diff changeset
   989
48194c26a46c Initial revision
claus
parents:
diff changeset
   990
    "Display facesInFamily:'times'"
48194c26a46c Initial revision
claus
parents:
diff changeset
   991
    "Display facesInFamily:'fixed'"
48194c26a46c Initial revision
claus
parents:
diff changeset
   992
!
48194c26a46c Initial revision
claus
parents:
diff changeset
   993
48194c26a46c Initial revision
claus
parents:
diff changeset
   994
stylesInFamily:aFamilyName face:aFaceName
48194c26a46c Initial revision
claus
parents:
diff changeset
   995
    "return a set of all available font styles in aFamily/aFace on this display"
48194c26a46c Initial revision
claus
parents:
diff changeset
   996
48194c26a46c Initial revision
claus
parents:
diff changeset
   997
    |allFonts styles family face style|
48194c26a46c Initial revision
claus
parents:
diff changeset
   998
48194c26a46c Initial revision
claus
parents:
diff changeset
   999
    allFonts := self listOfAvailableFonts.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1000
    allFonts isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1001
    styles := Set new.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1002
    allFonts do:[:arr |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1003
        family := arr at:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1004
        (family = aFamilyName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1005
            face := arr at:2.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1006
            (face = aFaceName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1007
                style := arr at:3.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1008
                styles add:style
48194c26a46c Initial revision
claus
parents:
diff changeset
  1009
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1010
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1011
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1012
    ^ styles
48194c26a46c Initial revision
claus
parents:
diff changeset
  1013
48194c26a46c Initial revision
claus
parents:
diff changeset
  1014
    "Display stylesInFamily:'times' face:'medium'"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1015
    "Display stylesInFamily:'times' face:'bold'"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1016
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1017
48194c26a46c Initial revision
claus
parents:
diff changeset
  1018
sizesInFamily:aFamilyName face:aFaceName style:aStyleName
48194c26a46c Initial revision
claus
parents:
diff changeset
  1019
    "return a set of all available font sizes in aFamily/aFace/aStyle
48194c26a46c Initial revision
claus
parents:
diff changeset
  1020
     on this display"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1021
48194c26a46c Initial revision
claus
parents:
diff changeset
  1022
    |allFonts sizes family face style size|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1023
48194c26a46c Initial revision
claus
parents:
diff changeset
  1024
    allFonts := self listOfAvailableFonts.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1025
    allFonts isNil ifTrue:[^ nil].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1026
    sizes := Set new.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1027
    allFonts do:[:arr |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1028
        family := arr at:1.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1029
        (family = aFamilyName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1030
            face := arr at:2.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1031
            (face = aFaceName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1032
                style := arr at:3.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1033
                (style = aStyleName) ifTrue:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1034
                    size := arr at:4.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1035
                    sizes add:size
48194c26a46c Initial revision
claus
parents:
diff changeset
  1036
                ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1037
            ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1038
        ]
48194c26a46c Initial revision
claus
parents:
diff changeset
  1039
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1040
    ^ sizes
48194c26a46c Initial revision
claus
parents:
diff changeset
  1041
48194c26a46c Initial revision
claus
parents:
diff changeset
  1042
    "Display sizesInFamily:'times' face:'medium' style:'italic'"
8
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
  1043
!
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
  1044
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1045
getFontWithFamily:familyString
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1046
             face:faceString
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1047
            style:styleString
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1048
             size:sizeArg
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1049
         encoding:encodingSym
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1050
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1051
    "try to get the specified font, return id.
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1052
     If not available, try next smaller font. 
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1053
     If no font fits, return nil"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1054
48194c26a46c Initial revision
claus
parents:
diff changeset
  1055
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1056
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1057
48194c26a46c Initial revision
claus
parents:
diff changeset
  1058
getDefaultFont
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1059
    "return a default font id 
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1060
     - used when class Font cannot find anything usable"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1061
48194c26a46c Initial revision
claus
parents:
diff changeset
  1062
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1063
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1064
48194c26a46c Initial revision
claus
parents:
diff changeset
  1065
releaseFont:aFontId
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1066
    "free a font"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1067
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1068
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1069
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1070
48194c26a46c Initial revision
claus
parents:
diff changeset
  1071
ascentOf:aFontId
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1072
    "return the number of pixels above the base line of a font"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1073
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1074
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1075
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1076
48194c26a46c Initial revision
claus
parents:
diff changeset
  1077
descentOf:aFontId
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1078
    "return the number of pixels below the base line of a font"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1079
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1080
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1081
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1082
48194c26a46c Initial revision
claus
parents:
diff changeset
  1083
minWidthOfFont:aFontId
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1084
    "return the width in pixels of the smallest character a specific font"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1085
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1086
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1087
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1088
48194c26a46c Initial revision
claus
parents:
diff changeset
  1089
maxWidthOfFont:aFontId
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1090
    "return the width in pixels of the widest character a specific font"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1091
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1092
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1093
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1094
48194c26a46c Initial revision
claus
parents:
diff changeset
  1095
widthOf:aString inFont:aFontId
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1096
    "return the width in pixels of a string in a specific font"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1097
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1098
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1099
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1100
48194c26a46c Initial revision
claus
parents:
diff changeset
  1101
widthOf:aString from:index1 to:index2 inFont:aFontId
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1102
    "return the width in pixels of a substring in a specific font"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1103
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1104
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1105
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1106
48194c26a46c Initial revision
claus
parents:
diff changeset
  1107
!DeviceWorkstation methodsFor:'cursor stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1108
48194c26a46c Initial revision
claus
parents:
diff changeset
  1109
destroyCursor:aCursorId
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1110
    "free a cursor"
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1111
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1112
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1113
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1114
48194c26a46c Initial revision
claus
parents:
diff changeset
  1115
createCursorSourceForm:sourceForm maskForm:maskForm hotX:hx hotY:hy
48194c26a46c Initial revision
claus
parents:
diff changeset
  1116
    "create a cursor given 2 bitmaps (source, mask) and a hotspot"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1117
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1118
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1119
48194c26a46c Initial revision
claus
parents:
diff changeset
  1120
createCursorShape:aShape
48194c26a46c Initial revision
claus
parents:
diff changeset
  1121
    "create a cursor given a shape-symbol"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1122
48194c26a46c Initial revision
claus
parents:
diff changeset
  1123
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1124
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1125
48194c26a46c Initial revision
claus
parents:
diff changeset
  1126
colorCursor:aCursorId foreground:fgColor background:bgColor
48194c26a46c Initial revision
claus
parents:
diff changeset
  1127
    "change a cursors colors"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1128
48194c26a46c Initial revision
claus
parents:
diff changeset
  1129
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1130
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1131
48194c26a46c Initial revision
claus
parents:
diff changeset
  1132
grabKeyboardIn:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1133
    "grab the keyboard - all keyboard input will be sent to aWindow"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1134
48194c26a46c Initial revision
claus
parents:
diff changeset
  1135
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1136
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1137
48194c26a46c Initial revision
claus
parents:
diff changeset
  1138
ungrabKeyboard
48194c26a46c Initial revision
claus
parents:
diff changeset
  1139
    "release the keyboard"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1140
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1141
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1142
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1143
48194c26a46c Initial revision
claus
parents:
diff changeset
  1144
grabPointerIn:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1145
    "grap the pointer"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1146
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1147
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1148
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1149
48194c26a46c Initial revision
claus
parents:
diff changeset
  1150
ungrabPointer
48194c26a46c Initial revision
claus
parents:
diff changeset
  1151
    "release the pointer"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1152
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1153
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1154
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1155
48194c26a46c Initial revision
claus
parents:
diff changeset
  1156
!DeviceWorkstation methodsFor:'color stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1157
48194c26a46c Initial revision
claus
parents:
diff changeset
  1158
listOfAvailableColors
48194c26a46c Initial revision
claus
parents:
diff changeset
  1159
    "return a list of all available colornames;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1160
     This method should not be used, since colornames are
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1161
     very X specific. However, the names defined here are pretty common"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1162
48194c26a46c Initial revision
claus
parents:
diff changeset
  1163
    ^ #('red' 'green' 'blue' 'yellow' 'magenta' 'cyan' 'white' 'black')
48194c26a46c Initial revision
claus
parents:
diff changeset
  1164
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1165
48194c26a46c Initial revision
claus
parents:
diff changeset
  1166
freeColor:colorIndex
48194c26a46c Initial revision
claus
parents:
diff changeset
  1167
    "free a color on the display, when its no longer needed"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1168
48194c26a46c Initial revision
claus
parents:
diff changeset
  1169
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1170
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1171
48194c26a46c Initial revision
claus
parents:
diff changeset
  1172
colorRed:redVal green:greenVal blue:blueVal
48194c26a46c Initial revision
claus
parents:
diff changeset
  1173
    "allocate a color with rgb values (0..100) - return index"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1174
48194c26a46c Initial revision
claus
parents:
diff changeset
  1175
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1176
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1177
48194c26a46c Initial revision
claus
parents:
diff changeset
  1178
colorNamed:aString
48194c26a46c Initial revision
claus
parents:
diff changeset
  1179
    "allocate a color with color name - return index.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1180
     Colors should not be allocated by name, since most colors
48194c26a46c Initial revision
claus
parents:
diff changeset
  1181
     are X specific - get colors by rgb instead."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1182
48194c26a46c Initial revision
claus
parents:
diff changeset
  1183
    "support some of them ..."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1184
48194c26a46c Initial revision
claus
parents:
diff changeset
  1185
    self getRGBFromName:aString into:[:r :g :b |
48194c26a46c Initial revision
claus
parents:
diff changeset
  1186
        ^ self colorRed:r green:g blue:b
48194c26a46c Initial revision
claus
parents:
diff changeset
  1187
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1188
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1189
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1190
48194c26a46c Initial revision
claus
parents:
diff changeset
  1191
colorCell
48194c26a46c Initial revision
claus
parents:
diff changeset
  1192
    "allocate a color - return index"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1193
48194c26a46c Initial revision
claus
parents:
diff changeset
  1194
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1195
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1196
48194c26a46c Initial revision
claus
parents:
diff changeset
  1197
setColor:index red:redVal green:greenVal blue:blueVal
48194c26a46c Initial revision
claus
parents:
diff changeset
  1198
    "change color in map at:index to rgb (0..100)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1199
48194c26a46c Initial revision
claus
parents:
diff changeset
  1200
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1201
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1202
48194c26a46c Initial revision
claus
parents:
diff changeset
  1203
getRGBFromName:colorName into:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1204
    "get rgb components (0..100) of color named colorName,
48194c26a46c Initial revision
claus
parents:
diff changeset
  1205
     and evaluate the 3-arg block, aBlock with them.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1206
     The method here only handles some often used colors;
48194c26a46c Initial revision
claus
parents:
diff changeset
  1207
     getRGBFromName should not be used, since colorNames other
48194c26a46c Initial revision
claus
parents:
diff changeset
  1208
     than those below are X specific."
48194c26a46c Initial revision
claus
parents:
diff changeset
  1209
48194c26a46c Initial revision
claus
parents:
diff changeset
  1210
    |idx names triple|
48194c26a46c Initial revision
claus
parents:
diff changeset
  1211
48194c26a46c Initial revision
claus
parents:
diff changeset
  1212
    names := #('red' 'green' 'blue' 'yellow' 'magenta' 'cyan' 'white' 'black').
8
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
  1213
    idx := names indexOf:colorName.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1214
    idx == 0 ifTrue:[
8
640de5f72f88 last version before change of dispatch
claus
parents: 5
diff changeset
  1215
        idx := (names asLowercase) indexOf:colorName.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1216
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1217
    idx == 0 ifFalse:[
48194c26a46c Initial revision
claus
parents:
diff changeset
  1218
        triple := #(
48194c26a46c Initial revision
claus
parents:
diff changeset
  1219
                        (100   0   0)  "red"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1220
                        (  0 100   0)  "green"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1221
                        (  0   0 100)  "blue"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1222
                        (100 100   0)  "yellow"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1223
                        (100   0 100)  "magenta"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1224
                        (  0 100 100)  "cyan"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1225
                        (100 100 100)  "white"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1226
                        (  0   0   0)  "black"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1227
                   ) at:idx.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1228
                        
48194c26a46c Initial revision
claus
parents:
diff changeset
  1229
        ^ aBlock value:(triple at:1)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1230
                 value:(triple at:2)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1231
                 value:(triple at:3)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1232
    ].
48194c26a46c Initial revision
claus
parents:
diff changeset
  1233
    ^ nil
48194c26a46c Initial revision
claus
parents:
diff changeset
  1234
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1235
48194c26a46c Initial revision
claus
parents:
diff changeset
  1236
getRGBFrom:index into:aBlock
48194c26a46c Initial revision
claus
parents:
diff changeset
  1237
    "get rgb components (0..100) of color in map at:index,
48194c26a46c Initial revision
claus
parents:
diff changeset
  1238
     and evaluate the 3-arg block, aBlock with them"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1239
48194c26a46c Initial revision
claus
parents:
diff changeset
  1240
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1241
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1242
48194c26a46c Initial revision
claus
parents:
diff changeset
  1243
!DeviceWorkstation methodsFor:'window stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1244
48194c26a46c Initial revision
claus
parents:
diff changeset
  1245
setBackingStore:how in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1246
    "turn on/off backing-store for a window"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1247
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1248
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1249
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1250
48194c26a46c Initial revision
claus
parents:
diff changeset
  1251
setSaveUnder:yesOrNo in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1252
    "turn on/off save-under for a window"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1253
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1254
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1255
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1256
48194c26a46c Initial revision
claus
parents:
diff changeset
  1257
setWindowBackground:aColorIndex in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1258
    "set a windows background color"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1259
48194c26a46c Initial revision
claus
parents:
diff changeset
  1260
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1261
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1262
48194c26a46c Initial revision
claus
parents:
diff changeset
  1263
setWindowBackgroundPixmap:aPixmapId in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1264
    "set a windows background pattern to be a form"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1265
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1266
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1267
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1268
48194c26a46c Initial revision
claus
parents:
diff changeset
  1269
setWindowBorderColor:aColorIndex in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1270
    "set a windows border color"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1271
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1272
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1273
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1274
48194c26a46c Initial revision
claus
parents:
diff changeset
  1275
setWindowBorderPixmap:aPixmapId in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1276
    "set a windows border pattern"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1277
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1278
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1279
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1280
48194c26a46c Initial revision
claus
parents:
diff changeset
  1281
setWindowBorderWidth:aNumber in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1282
    "set a windows border width"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1283
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1284
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1285
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1286
48194c26a46c Initial revision
claus
parents:
diff changeset
  1287
setWindowBorderShape:aPixmapId in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1288
    "set a windows border shape"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1289
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1290
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1291
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1292
48194c26a46c Initial revision
claus
parents:
diff changeset
  1293
setWindowShape:aPixmapId in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1294
    "set a windows visible shape"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1295
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1296
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1297
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1298
48194c26a46c Initial revision
claus
parents:
diff changeset
  1299
setCursor:aCursorId in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1300
    "set a windows visible shape"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1301
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1302
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1303
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1304
48194c26a46c Initial revision
claus
parents:
diff changeset
  1305
setWindowName:aString in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1306
    "set a windows name"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1307
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1308
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1309
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1310
48194c26a46c Initial revision
claus
parents:
diff changeset
  1311
setIconName:aString in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1312
    "set a windows icon name"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1313
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1314
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1315
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1316
48194c26a46c Initial revision
claus
parents:
diff changeset
  1317
setWindowIcon:aForm in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1318
    "set a windows icon"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1319
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1320
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1321
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1322
48194c26a46c Initial revision
claus
parents:
diff changeset
  1323
setWindowIconWindow:aView in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1324
    "set a windows icon window"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1325
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1326
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1327
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1328
48194c26a46c Initial revision
claus
parents:
diff changeset
  1329
clearWindow:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1330
    "clear a windows to its view background"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1331
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1332
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1333
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1334
48194c26a46c Initial revision
claus
parents:
diff changeset
  1335
clearRectangleX:x y:y width:width height:height in:aWindowId
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1336
    "clear a rectangular area of a window to its view background"
470d292c3218 before big change
claus
parents: 8
diff changeset
  1337
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1338
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1339
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1340
48194c26a46c Initial revision
claus
parents:
diff changeset
  1341
mapWindow:aWindowId iconified:aBoolean atX:xPos y:yPos width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  1342
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1343
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1344
48194c26a46c Initial revision
claus
parents:
diff changeset
  1345
mapWindow:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1346
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1347
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1348
48194c26a46c Initial revision
claus
parents:
diff changeset
  1349
unmapWindow:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1350
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1351
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1352
48194c26a46c Initial revision
claus
parents:
diff changeset
  1353
raiseWindow:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1354
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1355
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1356
48194c26a46c Initial revision
claus
parents:
diff changeset
  1357
lowerWindow:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1358
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1359
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1360
48194c26a46c Initial revision
claus
parents:
diff changeset
  1361
moveWindow:aWindowId x:x y:y
48194c26a46c Initial revision
claus
parents:
diff changeset
  1362
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1363
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1364
48194c26a46c Initial revision
claus
parents:
diff changeset
  1365
resizeWindow:aWindowId width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  1366
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1367
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1368
48194c26a46c Initial revision
claus
parents:
diff changeset
  1369
moveResizeWindow:aWindowId x:x y:y width:w height:h
48194c26a46c Initial revision
claus
parents:
diff changeset
  1370
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1371
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1372
48194c26a46c Initial revision
claus
parents:
diff changeset
  1373
!DeviceWorkstation methodsFor:'graphic context stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1374
48194c26a46c Initial revision
claus
parents:
diff changeset
  1375
setForeground:fgColorIndex in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1376
    "set foreground color to be drawn with"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1377
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1378
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1379
48194c26a46c Initial revision
claus
parents:
diff changeset
  1380
setBackground:bgColorIndex in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1381
    "set background color to be drawn with"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1382
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1383
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1384
48194c26a46c Initial revision
claus
parents:
diff changeset
  1385
setForeground:fgColorIndex background:bgColorIndex in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1386
    "set foreground and background colors to be drawn with"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1387
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1388
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1389
48194c26a46c Initial revision
claus
parents:
diff changeset
  1390
setForeground:fgColor background:bgColor mask:aBitmapId in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1391
    "set foreground and background colors to be drawn with using mask or
48194c26a46c Initial revision
claus
parents:
diff changeset
  1392
     solid (if aBitmapId is nil)"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1393
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1394
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1395
48194c26a46c Initial revision
claus
parents:
diff changeset
  1396
setLineWidth:aNumber style:lineStyle cap:capStyle join:joinStyle in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1397
    "set line attributes"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1398
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1399
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1400
48194c26a46c Initial revision
claus
parents:
diff changeset
  1401
setForeground:fgColor background:bgColor mask:aBitmapId lineWidth:lw in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1402
    "set foreground and background colors to be drawn with using mask or
48194c26a46c Initial revision
claus
parents:
diff changeset
  1403
     solid (if aBitmapId is nil); also set lineWidth"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1404
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1405
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1406
48194c26a46c Initial revision
claus
parents:
diff changeset
  1407
setFunction:aFunctionSymbol in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1408
    "set alu function to be drawn with"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1409
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1410
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1411
48194c26a46c Initial revision
claus
parents:
diff changeset
  1412
setFont:aFontId in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1413
    "set font to be drawn in"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1414
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1415
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1416
48194c26a46c Initial revision
claus
parents:
diff changeset
  1417
setPixmapMask:aPixmapId in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1418
    "set or clear the drawing mask - a pixmap mask providing full color"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1419
48194c26a46c Initial revision
claus
parents:
diff changeset
  1420
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1421
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1422
48194c26a46c Initial revision
claus
parents:
diff changeset
  1423
setBitmapMask:aBitmapId in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1424
    "set or clear the drawing mask - a bitmap mask using current fg/bg"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1425
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1426
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1427
48194c26a46c Initial revision
claus
parents:
diff changeset
  1428
setMaskOriginX:orgX y:orgY in:aGCid
48194c26a46c Initial revision
claus
parents:
diff changeset
  1429
    "set the mask origin"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1430
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1431
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1432
48194c26a46c Initial revision
claus
parents:
diff changeset
  1433
setClipByChildren:aBool in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1434
    "enable/disable drawing into child views"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1435
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1436
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1437
48194c26a46c Initial revision
claus
parents:
diff changeset
  1438
noClipIn:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1439
    "disable clipping rectangle"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1440
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1441
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1442
48194c26a46c Initial revision
claus
parents:
diff changeset
  1443
setClipX:clipX y:clipY width:clipWidth height:clipHeight in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1444
    "clip to a rectangle"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1445
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1446
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1447
48194c26a46c Initial revision
claus
parents:
diff changeset
  1448
setGraphicsExposures:aBoolean in:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1449
    "set or clear the graphics exposures flag"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1450
48194c26a46c Initial revision
claus
parents:
diff changeset
  1451
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1452
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1453
48194c26a46c Initial revision
claus
parents:
diff changeset
  1454
!DeviceWorkstation methodsFor:'retrieving pixels'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1455
48194c26a46c Initial revision
claus
parents:
diff changeset
  1456
getPixelX:x y:y from:aDrawableId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1457
    "return the pixel value at x/y"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1458
48194c26a46c Initial revision
claus
parents:
diff changeset
  1459
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1460
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1461
48194c26a46c Initial revision
claus
parents:
diff changeset
  1462
!DeviceWorkstation methodsFor:'drawing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1463
48194c26a46c Initial revision
claus
parents:
diff changeset
  1464
displayString:aString x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1465
    "draw a string - draw foreground only"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1466
48194c26a46c Initial revision
claus
parents:
diff changeset
  1467
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1468
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1469
48194c26a46c Initial revision
claus
parents:
diff changeset
  1470
displayString:aString from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1471
    "draw part of a string - draw foreground only"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1472
48194c26a46c Initial revision
claus
parents:
diff changeset
  1473
    self displayString:(aString copyFrom:index1 to:index2)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1474
                     x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1475
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1476
48194c26a46c Initial revision
claus
parents:
diff changeset
  1477
displayOpaqueString:aString x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1478
    "draw a string - draw both foreground and background"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1479
48194c26a46c Initial revision
claus
parents:
diff changeset
  1480
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1481
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1482
48194c26a46c Initial revision
claus
parents:
diff changeset
  1483
displayOpaqueString:aString from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1484
    "draw part of a string - draw both foreground and background"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1485
48194c26a46c Initial revision
claus
parents:
diff changeset
  1486
    self displayOpaqueString:(aString copyFrom:index1 to:index2)
48194c26a46c Initial revision
claus
parents:
diff changeset
  1487
                           x:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1488
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1489
48194c26a46c Initial revision
claus
parents:
diff changeset
  1490
drawPointX:x y:y in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1491
    "draw a point"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1492
48194c26a46c Initial revision
claus
parents:
diff changeset
  1493
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1494
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1495
48194c26a46c Initial revision
claus
parents:
diff changeset
  1496
displayLineFromX:x0 y:y0 toX:x1 y:y1 in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1497
    "draw a line"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1498
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1499
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1500
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1501
48194c26a46c Initial revision
claus
parents:
diff changeset
  1502
drawRectangleX:x y:y width:width height:height in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1503
    "draw a rectangle"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1504
48194c26a46c Initial revision
claus
parents:
diff changeset
  1505
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1506
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1507
48194c26a46c Initial revision
claus
parents:
diff changeset
  1508
drawPolygon:aPolygon in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1509
    "draw a polygon"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1510
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1511
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1512
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1513
48194c26a46c Initial revision
claus
parents:
diff changeset
  1514
copyFromFaxImage:sourceId x:srcX y:srcY to:destId x:dstX y:dstY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1515
                      width:w height:h with:aGCId scaleX:scaleX scaleY:scaleY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1516
    "do a bit-blt"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1517
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1518
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1519
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1520
48194c26a46c Initial revision
claus
parents:
diff changeset
  1521
copyFromId:sourceId x:srcX y:srcY to:destId x:dstX y:dstY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1522
                width:w height:h with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1523
    "do a bit-blt"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1524
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1525
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1526
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1527
48194c26a46c Initial revision
claus
parents:
diff changeset
  1528
copyPlaneFromId:sourceId x:srcX y:srcY to:destId x:dstX y:dstY
48194c26a46c Initial revision
claus
parents:
diff changeset
  1529
                width:w height:h with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1530
    "do a bit-blt"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1531
48194c26a46c Initial revision
claus
parents:
diff changeset
  1532
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1533
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1534
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1535
displayArcX:x y:y w:width h:height from:startAngle angle:angle
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1536
             in:aDrawableId with:aGCId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1537
    "draw an arc"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1538
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1539
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1540
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1541
48194c26a46c Initial revision
claus
parents:
diff changeset
  1542
fillArcX:x y:y w:width h:height from:startAngle angle:angle
48194c26a46c Initial revision
claus
parents:
diff changeset
  1543
               in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1544
    "fill an arc"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1545
48194c26a46c Initial revision
claus
parents:
diff changeset
  1546
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1547
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1548
48194c26a46c Initial revision
claus
parents:
diff changeset
  1549
fillRectangleX:x y:y width:width height:height in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1550
    "fill a rectangle"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1551
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1552
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1553
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1554
48194c26a46c Initial revision
claus
parents:
diff changeset
  1555
fillPolygon:aPolygon in:aDrawableId with:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1556
    "fill a polygon"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1557
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1558
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1559
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1560
48194c26a46c Initial revision
claus
parents:
diff changeset
  1561
drawBits:imageBits depth:imageDepth width:imageWidth height:imageHeight
48194c26a46c Initial revision
claus
parents:
diff changeset
  1562
                       x:srcx y:srcy
48194c26a46c Initial revision
claus
parents:
diff changeset
  1563
                    into:aDrawableId x:dstx y:dsty width:w height:h with:aGCId
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1564
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1565
    "draw a bitimage which has depth id, width iw and height ih into
48194c26a46c Initial revision
claus
parents:
diff changeset
  1566
     the drawable. draw a region of w/h pixels from srcx/srcy to dstx/dsty.
48194c26a46c Initial revision
claus
parents:
diff changeset
  1567
     It has to be checked elsewhere, that server can do it with the given
48194c26a46c Initial revision
claus
parents:
diff changeset
  1568
     depth; also it is assumed, that the colormap is setup correctly"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1569
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1570
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1571
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1572
48194c26a46c Initial revision
claus
parents:
diff changeset
  1573
!DeviceWorkstation methodsFor:'events'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1574
48194c26a46c Initial revision
claus
parents:
diff changeset
  1575
eventMaskFor:anEventSymbol
48194c26a46c Initial revision
claus
parents:
diff changeset
  1576
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1577
! 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1578
48194c26a46c Initial revision
claus
parents:
diff changeset
  1579
setEventMask:aMask in:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1580
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1581
! 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1582
48194c26a46c Initial revision
claus
parents:
diff changeset
  1583
dispatchEventFor:aViewIdOrNil withMask:eventMask
48194c26a46c Initial revision
claus
parents:
diff changeset
  1584
    "central event handling method:
12
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1585
     get next event and send appropriate message to the view or the sensor,
9f0995fac1fa *** empty log message ***
claus
parents: 10
diff changeset
  1586
     if the view has one.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1587
     If the argument aViewIdOrNil is nil, events for any view are processed,
48194c26a46c Initial revision
claus
parents:
diff changeset
  1588
     otherwise only events for the view with given id are processed
48194c26a46c Initial revision
claus
parents:
diff changeset
  1589
     (in this case, nothing is done if no events are pending);
48194c26a46c Initial revision
claus
parents:
diff changeset
  1590
     if the argument aMask is nonNil, only events for this eventMask are
48194c26a46c Initial revision
claus
parents:
diff changeset
  1591
     handled;"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1592
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1593
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1594
! 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1595
48194c26a46c Initial revision
claus
parents:
diff changeset
  1596
disposeEventsWithMask:aMask for:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1597
    "dispose (throw away) specific events"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1598
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1599
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1600
! 
48194c26a46c Initial revision
claus
parents:
diff changeset
  1601
48194c26a46c Initial revision
claus
parents:
diff changeset
  1602
eventPending
48194c26a46c Initial revision
claus
parents:
diff changeset
  1603
    "return true, if any event is pending"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1604
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1605
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1606
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1607
48194c26a46c Initial revision
claus
parents:
diff changeset
  1608
eventPendingWithoutSync
48194c26a46c Initial revision
claus
parents:
diff changeset
  1609
    "return true, if any event is pending"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1610
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1611
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1612
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1613
48194c26a46c Initial revision
claus
parents:
diff changeset
  1614
eventsPending:anEventMask for:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1615
    "return true, if any of the masked events is pending"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1616
48194c26a46c Initial revision
claus
parents:
diff changeset
  1617
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1618
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1619
48194c26a46c Initial revision
claus
parents:
diff changeset
  1620
eventPending:anEventSymbol for:aWindowId
48194c26a46c Initial revision
claus
parents:
diff changeset
  1621
    "return true, if a specific event is pending"
10
470d292c3218 before big change
claus
parents: 8
diff changeset
  1622
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1623
    ^ self subclassResponsibility
48194c26a46c Initial revision
claus
parents:
diff changeset
  1624
! !