HostGraphicsDevice.st
author mawalch
Thu, 07 Jul 2016 20:21:22 +0200
changeset 7403 9a4c5d6da62c
parent 6884 a66985ff01e9
child 7443 e2d05b756727
permissions -rw-r--r--
#OTHER by mawalch Spelling fixes.

"{ Encoding: utf8 }"

"
COPYRIGHT (c) 1997 by eXept Software AG / Claus Gittinger
	      All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
"{ Package: 'stx:libview' }"

"{ NameSpace: Smalltalk }"

GraphicsDevice subclass:#HostGraphicsDevice
	instanceVariableNames:'deviceColors deviceFonts deviceViews deviceForms deviceCursors'
	classVariableNames:''
	poolDictionaries:''
	category:'Interface-Graphics'
!

!HostGraphicsDevice class methodsFor:'documentation'!

copyright
"
COPYRIGHT (c) 1997 by eXept Software AG / Claus Gittinger
	      All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"


!

documentation
"
    this abstract class was inserted to provide a home for ST-80 classes
    (previously, DeviceWorkstation was directly under Object).
    We will (over time) move common functionality from there into this class.

    In ST/X, this is mostly dummy.

    [see also:]
	DeviceWorkstation XWorkstation

    [author:]
	Claus Gittinger
"


! !

!HostGraphicsDevice methodsFor:'Compatibility-Squeak'!

deferUpdates: aBoolean
    "Set the deferUpdates flag in the virtual machine. 
     When this flag is true, BitBlt operations on the Display are not 
     automatically propagated to the screen. 
     If this underlying platform does not support deferred updates, 
     this primitive will fail. 
     Answer the receiver if the primitive succeeds, nil if it fails."

"/    <primitive: 126>
    ^ nil  "answer nil if primitive fails"

!

forceDisplayUpdate
    "On platforms that buffer screen updates, 
     force the screen to be updated immediately. 
     On other platforms, or if the primitive is not implemented, do nothing."

"/     <primitive: 231>
    "do nothing if primitive fails"
! !

!HostGraphicsDevice methodsFor:'accessing'!

deviceColors
    "return the registry keeping track of colors which were allocated
     on this device."

    ^ deviceColors ? #()

    "Created: / 24-02-1997 / 18:01:41 / cg"
!

deviceCursors
    "return the registry keeping track of cursors which were allocated
     on this device."

    ^ deviceCursors

    "Created: 24.2.1997 / 18:01:41 / cg"
!

deviceFonts
    "return the registry keeping track of fonts which were allocated
     on this device."

    ^ deviceFonts ? #()

    "Modified: / 28-07-2006 / 19:48:23 / fm"
!

deviceForms
    "return the registry keeping track of forms which were allocated
     on this device."

    ^ deviceForms
!

deviceViews
    "return the registry keeping track of views which were allocated
     on this device."

    ^ deviceViews
! !

!HostGraphicsDevice methodsFor:'accessing & queries'!

defaultExtentForTopViews
    |w h|

    w := self width.
    h := self height.

    self isPDA ifTrue:[
        ^ (w - 16) @ (h - 20)
    ].
    ^ (w // 3 * 2) @ (h // 3 * 2)
! !

!HostGraphicsDevice methodsFor:'initialization & release'!

initializeDeviceResourceTables
    deviceViews := Registry new.
    deviceForms := Registry new.
    deviceColors := Registry new.
    deviceCursors := Registry new.
    deviceFonts := CachingRegistry new cacheSize:10.

    "Created: 24.2.1997 / 18:29:53 / cg"
!

releaseDeviceColors
    deviceColors notNil ifTrue:[
        deviceColors do:[:aColor |
            aColor releaseFromDevice
        ].
        deviceColors := Registry new.

        "TrueColors are not registered.
         Release the the hard way"
        Color flushDeviceColorsFor:self.
    ].

    "Created: 24.2.1997 / 18:07:49 / cg"
!

releaseDeviceCursors
    deviceCursors notNil ifTrue:[
        deviceCursors do:[:aCursor |
            aCursor releaseFromDevice
        ].
        deviceCursors := Registry new.
    ]

    "Created: 24.2.1997 / 18:07:49 / cg"
!

releaseDeviceFonts
    deviceFonts notNil ifTrue:[
        deviceFonts do:[:aFont |
            aFont releaseFromDevice.
        ].
        deviceFonts := CachingRegistry new cacheSize:10.
    ].
! !

!HostGraphicsDevice methodsFor:'misc'!

recolorCursorsToFgColor:fgColor defaultBgColor:bgColor
    "change the colors of all existing cursors"

    "/ recolor existing cursors
    deviceCursors do:[:eachCursor | eachCursor foreground:fgColor background:bgColor].

    "
     Display recolorCursorsToFgColor:(Color red) defaultBgColor:(Color white)

     Display recolorCursorsToFgColor:(Color blue) defaultBgColor:(Color white)
     Display recolorCursorsToFgColor:(Color blue) defaultBgColor:(Color black)
     Display recolorCursorsToFgColor:(Color white) defaultBgColor:(Color black)
     Display recolorCursorsToFgColor:(Color white) defaultBgColor:(Color red)
    "
! !

!HostGraphicsDevice methodsFor:'registration'!

registerColor:aColor
    deviceColors register:aColor.

    "Created: 24.2.1997 / 18:29:10 / cg"
!

registerCursor:aCursor
    deviceCursors register:aCursor.

    "Created: 24.2.1997 / 18:29:10 / cg"
!

registerFont:aFont
    deviceFonts register:aFont.

    "Created: 24.2.1997 / 18:29:10 / cg"
!

registerForm:aForm
    deviceForms register:aForm.

    "Created: 24.2.1997 / 18:29:10 / cg"
!

registerView:aView
    deviceViews register:aView.

    "Created: 24.2.1997 / 18:29:10 / cg"
!

unregisterColor:aColor
    deviceColors unregister:aColor.

    "Created: 24.2.1997 / 18:29:14 / cg"
!

unregisterCursor:aCursor
    deviceCursors unregister:aCursor.

    "Created: 24.2.1997 / 18:29:14 / cg"
!

unregisterFont:aFont
    deviceFonts unregister:aFont.

    "Created: 24.2.1997 / 18:29:14 / cg"
!

unregisterForm:aForm
    deviceForms unregister:aForm.

    "Created: 24.2.1997 / 18:29:14 / cg"
!

unregisterView:aView
    deviceViews unregister:aView.

    "Created: 24.2.1997 / 18:29:14 / cg"
! !

!HostGraphicsDevice class methodsFor:'documentation'!

version
    ^ '$Header$'
! !