XGraphicsContext.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 26 Nov 2016 21:09:32 +0000
branchjv
changeset 7719 c2f802dd340a
parent 7718 6e51fc8b207f
child 7772 a59648e60593
permissions -rw-r--r--
XFT: Forbid XFT rendering on bitmaps (depth-1 pixmaps) In theory it could work if XFT would just turn gray into either black or white. But XFT doesn't do it and simply draw nothing without failing in any way. To prevent this silent failures, forbid drawing XFT onto bitmaps (depth-1 pixmaps). After all, the while point of XFT is to use anti-aliased fonts.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6726
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:libview' }"
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
7718
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
     3
"{ NameSpace: Smalltalk }"
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
     4
6726
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
DeviceGraphicsContext subclass:#XGraphicsContext
7541
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
     6
	instanceVariableNames:'depth xftDrawId cairoSurfaceId'
6726
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'Interface-Graphics'
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
!XGraphicsContext methodsFor:'accessing'!
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
7541
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    15
depth
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    16
    ^ depth
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    17
!
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    18
6726
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
xftDrawId
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    ^ xftDrawId
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
xftDrawId:anXftDrawHandle
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    xftDrawId := anXftDrawHandle.
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
    "Modified (format): / 23-06-2014 / 21:28:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
! !
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
7718
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
    29
!XGraphicsContext methodsFor:'initialization & release'!
6726
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
7718
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
    31
destroy
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
    32
    xftDrawId notNil ifTrue:[ 
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
    33
        XftFontDescription xftDrawDestroy: xftDrawId  
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
    34
    ].
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
    35
    super destroy.
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
    36
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
    37
    "Created: / 25-11-2016 / 00:10:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6e51fc8b207f XFT: Drop support for shared drawables.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7541
diff changeset
    38
!
6726
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
prepareForReinit
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    "kludge - clear drawableId and gcId
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
     needed after snapin"
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    super prepareForReinit.
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
    xftDrawId := nil.
6727
f3449322bf47 Added cairoSurfaceId to support Cairo rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6726
diff changeset
    46
    cairoSurfaceId := nil.
6726
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    "Created: / 09-10-2014 / 00:02:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6727
f3449322bf47 Added cairoSurfaceId to support Cairo rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6726
diff changeset
    49
    "Modified: / 26-12-2014 / 22:51:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6726
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
! !
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
7541
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    52
!XGraphicsContext methodsFor:'view creation'!
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    53
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    54
createBitmapFromArray:data width:width height:height
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    55
    depth := 1.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    56
    super createBitmapFromArray:data width:width height:height
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    57
!
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    58
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    59
createPixmapWidth:w height:h depth:d
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    60
    depth := d.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    61
    super createPixmapWidth:w height:h depth:d
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    62
! !
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6727
diff changeset
    63
6726
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
!XGraphicsContext class methodsFor:'documentation'!
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
version_HG
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    ^ '$Changeset: <not expanded> $'
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
! !
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70