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