XftFontDescription.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 17 Feb 2016 19:33:09 +0000
branchjv
changeset 7151 51e71e95c952
parent 7128 e49af1b43177
child 7154 f2d585b5f20e
permissions -rw-r--r--
X11/FontConfig: Removed all FontConfig related code from XftFontDescription XftFontDescription now uses FonrConfig API (FcPattern and FcConstants)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:libview' }"
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
6833
0dd4eae34605 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
     3
"{ NameSpace: Smalltalk }"
0dd4eae34605 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6712
diff changeset
     4
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
FontDescription subclass:#XftFontDescription
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
     6
	instanceVariableNames:'device fontId sharedDrawId closestFont minCode maxCode ascent
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
     7
		descent height'
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
     8
	classVariableNames:'CachedFontList RecentlyUsedFonts Lobby'
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
     9
	poolDictionaries:'FcConstants'
6185
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
    10
	category:'Graphics-Support'
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
!
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
    13
Object subclass:#FCFontListParser
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
    14
	instanceVariableNames:'pipeStream lineStream currentDescription'
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
    15
	classVariableNames:''
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
    16
	poolDictionaries:''
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
    17
	privateIn:XftFontDescription
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
    18
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
    19
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    20
ExternalAddress subclass:#XftDrawHandle
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    21
	instanceVariableNames:''
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    22
	classVariableNames:''
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    23
	poolDictionaries:''
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    24
	privateIn:XftFontDescription
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    25
!
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    26
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    27
ExternalAddress subclass:#XftFontHandle
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    28
	instanceVariableNames:''
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    29
	classVariableNames:''
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    30
	poolDictionaries:''
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    31
	privateIn:XftFontDescription
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    32
!
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    33
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
!XftFontDescription primitiveDefinitions!
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
%{
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
/*
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
 * includes, defines, structure definitions
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
 * and typedefs come here.
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
 */
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
#undef True
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
#undef False
6179
b2af8f1be089 Fix c compiler warning
Stefan Vogel <sv@exept.de>
parents: 6176
diff changeset
    43
#undef Time
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
#define Time XTime
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    46
#ifdef XFT
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
    47
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
    48
extern OBJ __GLOBAL_GET_BY_NAME(char *);
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    49
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    50
# define __HANDLE_VAL(type, externalAddress) \
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
    51
        ((type)__externalAddressVal(externalAddress))
6489
8955b81883e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6488
diff changeset
    52
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
    53
# define __HANDLE_NEW(ptr, __cls)                    \
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
    54
        ({                                           \
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
    55
            OBJ handle = __MKEXTERNALADDRESS(ptr);   \
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
    56
            OBJ clsObj = __GLOBAL_GET_BY_NAME(__cls);\
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
    57
            __InstPtr(handle)->o_class = clsObj;     \
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
    58
            __STORE(handle, clsObj);                 \
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
    59
            handle;                                  \
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
    60
        })
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    61
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    62
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    63
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    64
# define DISPLAY(x)    __HANDLE_VAL(Display*, x)
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
    65
# define SCREEN(x)     ((int)(__intVal(x)))
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    66
# define DRAWABLE(x)   __HANDLE_VAL(Drawable, x)
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    67
# define GC(x)         __HANDLE_VAL(GC, x)
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    68
# define VISUAL(x)     __HANDLE_VAL(Visual*, x)
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    69
# define COLORMAP(x)   __HANDLE_VAL(Colormap, x)
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    70
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    71
/* FontConfig objects */
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
    72
# define FC_PATTERN(x)                  __HANDLE_VAL(XftPattern*, x)
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
    73
# define FC_PATTERN_HANDLE_NEW(x)       __HANDLE_NEW(x, "FcPattern")
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    74
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    75
/* Xft Objects */
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    76
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
    77
# define XFT_FONT(x)            __HANDLE_VAL(XftFont*, x)
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    78
# define XFT_FONT_HANDLE_NEW(x) __HANDLE_NEW(x, "XftFontDescription::XftFontHandle")
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    79
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
    80
# define XFT_DRAW(x)            __HANDLE_VAL(XftDraw*, x)
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    81
# define XFT_DRAW_HANDLE_NEW(x) __HANDLE_NEW(x, "XftFontDescription::XftDrawHandle")
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
    82
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
    83
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
# include <X11/Xft/Xft.h>
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
# include <X11/Xft/XftCompat.h>
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
    86
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
#endif
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
%}
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
! !
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
!XftFontDescription class methodsFor:'documentation'!
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
documentation
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
"
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    WARNING: Unfinished.
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    Experimental implementation of custom font rendered using
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    Xft library (UNIX / X Window only), To actually use it,
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    add following definitions to the end of stx/configurations/myConf
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    (works on Ubuntu 12.10)
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
    --- snip ---
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    XDEFS+=-DXFT
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    XINCLUDE+=$(shell pkg-config --cflags xft)
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    LIB_XFT=-l:libXft.so.2 -l:libfontconfig.so.1
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    --- snip --
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    NOTE: This class should be named XftFont, however then
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    there would be a name clash with XftFont structure
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    defined in Xft.h - therefore the class is named
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
    XftFontDescription to avoid that name clash.
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    [author:]
6179
b2af8f1be089 Fix c compiler warning
Stefan Vogel <sv@exept.de>
parents: 6176
diff changeset
   116
	Jan Vrany <jan.vrany@fit.cvut.cz>
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
    [instance variables:]
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
    [class variables:]
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
    [see also:]
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
"
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
! !
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
6184
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
   127
!XftFontDescription class methodsFor:'initialization'!
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
   128
6327
332c152432eb class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6325
diff changeset
   129
flushListOfAvailableFonts
332c152432eb class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6325
diff changeset
   130
    CachedFontList := nil.
332c152432eb class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6325
diff changeset
   131
332c152432eb class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6325
diff changeset
   132
    "
332c152432eb class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6325
diff changeset
   133
     XftFontDescription flushListOfAvailableFonts
332c152432eb class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6325
diff changeset
   134
    "
332c152432eb class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6325
diff changeset
   135
!
332c152432eb class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6325
diff changeset
   136
6184
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
   137
initialize
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
   138
    "Invoked at system start or when the class is dynamically loaded."
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
   139
6947
130ebce204d3 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6946
diff changeset
   140
    Lobby isNil ifTrue:[
7121
a3833df3f396 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 7116
diff changeset
   141
        Lobby := Registry new.
6946
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   142
    ].
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   143
6185
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   144
    "Modified: / 30-12-2013 / 19:48:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6184
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
   145
! !
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
   146
6325
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   147
!XftFontDescription class methodsFor:'instance creation'!
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   148
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   149
family:familyString face:faceString style:styleString size:size sizeUnit:sizeUnit encoding:encoding
6365
cf89c4bedea4 Instvar drawId renamed to sharedDrawId.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6356
diff changeset
   150
    "returns a font for given family, face, style, size and the specified encoding.
6325
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   151
     The returned font is not associated to a specific device"
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   152
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   153
    |proto|
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   154
6707
3f723be85a32 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6693
diff changeset
   155
    RecentlyUsedFonts notNil ifTrue:[
7114
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   156
	proto := RecentlyUsedFonts
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   157
		detect:[:fn |
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   158
		    fn family = familyString
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   159
		    and:[ fn size = size and:[fn sizeUnit = sizeUnit
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   160
		    and:[ fn face = faceString
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   161
		    and:[ (fn style = styleString
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   162
			  or:[ (fn style = 'oblique' and:[styleString = 'italic'])
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   163
			  or:[ (fn style = 'italic' and:[styleString = 'oblique']) ]]) ]]]]]
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   164
		ifNone:nil.
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   165
	proto notNil ifTrue:[
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   166
	    ^ proto
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   167
	].
6659
21975a0db156 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6656
diff changeset
   168
    ].
21975a0db156 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6656
diff changeset
   169
6325
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   170
    CachedFontList notNil ifTrue:[
7114
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   171
	proto := CachedFontList
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   172
		detect:[:fn |
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   173
		    fn family = familyString
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   174
		    and:[ fn face = faceString
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   175
		    and:[ (fn style = styleString
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   176
			  or:[ (fn style = 'oblique' and:[styleString = 'italic'])
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   177
			  or:[ (fn style = 'italic' and:[styleString = 'oblique']) ]]) ]]]
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   178
		ifNone:nil.
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   179
	proto notNil ifTrue:[
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   180
	    ^ (proto shallowCopy)
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   181
		setDevice: nil patternId: nil fontId: nil;
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   182
		family:familyString face:faceString style:styleString size:size sizeUnit:sizeUnit encoding:encoding
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   183
	].
6325
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   184
    ].
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   185
    ^ super
7114
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   186
	family:familyString face:faceString style:styleString size:size sizeUnit:sizeUnit encoding:encoding
6325
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   187
!
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   188
6993
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   189
for:aFontOrFontDescription
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   190
    ^ self
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   191
        family:aFontOrFontDescription family
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   192
        face:aFontOrFontDescription face 
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   193
        style:aFontOrFontDescription style 
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   194
        size:aFontOrFontDescription size 
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   195
        sizeUnit:#pt 
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   196
        encoding:aFontOrFontDescription encoding
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   197
!
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   198
6821
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   199
named: aString
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   200
    ^ self new setName: aString
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   201
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   202
    "Created: / 05-03-2015 / 05:20:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6993
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   203
!
6eea4e9ccc2d #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6974
diff changeset
   204
6325
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   205
new
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   206
"/    self halt.
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   207
    ^ super new.
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   208
! !
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   209
7036
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7035 7016
diff changeset
   210
!XftFontDescription class methodsFor:'* uncategorized *'!
6957
Stefan Vogel <sv@exept.de>
parents: 6947
diff changeset
   211
7036
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7035 7016
diff changeset
   212
aboutToDestroyViewWithDevice:aGLXWorkstation id:anExternalAddress
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7035 7016
diff changeset
   213
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7035 7016
diff changeset
   214
    "Created: / 11-10-2015 / 11:32:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6957
Stefan Vogel <sv@exept.de>
parents: 6947
diff changeset
   215
! !
Stefan Vogel <sv@exept.de>
parents: 6947
diff changeset
   216
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
!XftFontDescription class methodsFor:'examples'!
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
example1
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
    "
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
    XftFontDescription example1
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
    "
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
    |top textView|
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
    top := StandardSystemView new.
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
    top extent:300@200.
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
    textView := EditTextView new.
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
    textView origin:0.0 @ 0.0 corner:1.0 @ 1.0.
6184
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
   230
    textView basicFont: (XftFontDescription family: 'DejaVu Sans' size: 16).
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
    top addSubView:textView.
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
   234
    textView contents:('/etc/hosts' asFilename contentsOfEntireFile asText).
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
    top open.
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
    "Created: / 20-12-2013 / 00:04:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6184
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
   239
    "Modified: / 30-12-2013 / 19:11:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6185
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   240
!
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   241
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   242
example2
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   243
    "
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   244
    XftFontDescription example2
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   245
    "
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   246
    |top textView|
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   247
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   248
    top := StandardSystemView new.
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   249
    top extent:300@200.
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   250
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   251
    textView := EditTextView new.
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   252
    textView origin:0.0 @ 0.0 corner:1.0 @ 1.0.
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   253
    textView basicFont: (XftFontDescription family: 'DejaVu Sans' size: 30) asItalic.
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   254
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   255
    top addSubView:textView.
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   256
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   257
    textView contents:('/etc/hosts' asFilename contentsOfEntireFile).
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   258
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   259
    top open.
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   260
a09b2e2303cb Oops. make it compilable again (bug in stc - FCConstants private
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6184
diff changeset
   261
    "Created: / 30-12-2013 / 19:49:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6389
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   262
!
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   263
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   264
example3
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   265
    "
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   266
    XftFontDescription example2
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   267
    "
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   268
    |top textView|
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   269
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   270
    top := StandardSystemView new.
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   271
    top extent:300@200.
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   272
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   273
    textView := EditTextView new.
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   274
    textView origin:0.0 @ 0.0 corner:1.0 @ 1.0.
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   275
    textView basicFont: (XftFontDescription family: 'Indie Flower' size: 30).
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   276
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   277
    top addSubView:textView.
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   278
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   279
    textView contents:('/etc/hosts' asFilename contentsOfEntireFile).
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   280
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   281
    top open.
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   282
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   283
    "Created: / 30-12-2013 / 19:49:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   284
! !
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   285
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   286
!XftFontDescription class methodsFor:'primitives'!
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   287
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   288
xftAvailable
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   289
%{
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   290
#ifdef XFT
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   291
    RETURN ( true )
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   292
#endif
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   293
%}.
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   294
    ^ false
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   295
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   296
    "Created: / 20-12-2013 / 21:10:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   297
! !
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   298
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   299
!XftFontDescription class methodsFor:'queries'!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   300
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   301
listOfAvailableFonts
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
   302
    "uses fc-list to get a list of available fontDescriptions"
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
   303
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   304
    CachedFontList isNil ifTrue:[
6393
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   305
	CachedFontList := FCFontListParser new listOfAvailableFonts
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   306
    ].
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   307
    ^ CachedFontList
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   308
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   309
    "
6337
9bf102dba190 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6333
diff changeset
   310
     XftFontDescription flushListOfAvailableFonts.
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   311
     XftFontDescription listOfAvailableFonts
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   312
    "
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   313
! !
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   314
6317
d5626a0f6fea class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6314
diff changeset
   315
!XftFontDescription methodsFor:'accessing'!
6190
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   316
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   317
encoding
7036
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7035 7016
diff changeset
   318
    ^ encoding ? 'iso10646-1'
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   319
!
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   320
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   321
face
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   322
    ^ face ? ''
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   323
!
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   324
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   325
fullName
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   326
    ^ name ? (self userFriendlyName)
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   327
!
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   328
6317
d5626a0f6fea class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6314
diff changeset
   329
graphicsDevice
6190
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   330
    ^ device
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   331
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   332
    "Created: / 02-01-2014 / 23:22:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   333
!
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   334
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   335
maxCode
6323
2748becb9d6d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6322
diff changeset
   336
    ^ maxCode ? 16rFFFF
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   337
!
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   338
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   339
maxCode:something
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   340
    maxCode := something.
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   341
!
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   342
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   343
minCode
6323
2748becb9d6d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6322
diff changeset
   344
    ^ minCode ? 0
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   345
!
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   346
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   347
minCode:something
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   348
    minCode := something.
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   349
!
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   350
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   351
size
6325
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   352
    ^ size ? 0
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   353
!
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   354
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   355
style
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
   356
    ^ style ? ''
6391
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   357
!
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   358
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   359
weight:aNumber
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   360
    "set the weight"
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   361
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   362
    self assert:(self fontId isNil). "/ cannot change an instantiated font
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   363
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   364
    aNumber == FC_WEIGHT_THIN ifTrue:[ face := 'thin'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   365
    aNumber == FC_WEIGHT_EXTRALIGHT ifTrue:[ face := 'extralight'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   366
    aNumber == FC_WEIGHT_LIGHT ifTrue:[ face := 'light'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   367
    aNumber == FC_WEIGHT_BOOK ifTrue:[ face := 'book'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   368
    aNumber == FC_WEIGHT_REGULAR ifTrue:[ face := 'regular'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   369
    aNumber == FC_WEIGHT_MEDIUM ifTrue:[ face := 'medium'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   370
    aNumber == FC_WEIGHT_DEMIBOLD ifTrue:[ face := 'demibold'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   371
    aNumber == FC_WEIGHT_BOLD ifTrue:[ face := 'bold'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   372
    aNumber == FC_WEIGHT_EXTRABOLD ifTrue:[ face := 'extrabold'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   373
    aNumber == FC_WEIGHT_BLACK ifTrue:[ face := 'black'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   374
    aNumber == FC_WEIGHT_EXTRABLACK ifTrue:[ face := 'extrablack'. ^ self].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   375
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   376
    aNumber <= (FC_WEIGHT_EXTRALIGHT + FC_WEIGHT_LIGHT // 2) ifTrue:[
6393
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   377
	face := 'extralight'.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   378
	^ self.
6391
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   379
    ].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   380
    aNumber <= (FC_WEIGHT_LIGHT + FC_WEIGHT_BOOK // 2) ifTrue:[
6393
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   381
	face := 'light'.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   382
	^ self.
6391
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   383
    ].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   384
    aNumber <= (FC_WEIGHT_MEDIUM + FC_WEIGHT_DEMIBOLD // 2) ifTrue:[
6393
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   385
	face := 'medium'.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   386
	^ self.
6391
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   387
    ].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   388
    aNumber <= (FC_WEIGHT_DEMIBOLD + FC_WEIGHT_BOLD // 2) ifTrue:[
6393
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   389
	face := 'demibold'.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   390
	^ self.
6391
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   391
    ].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   392
    aNumber <= (FC_WEIGHT_BOLD + FC_WEIGHT_BLACK // 2) ifTrue:[
6393
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   393
	face := 'bold'.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
   394
	^ self.
6391
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   395
    ].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   396
    face := 'extrabold'.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   397
    ^ self
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   398
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   399
"/    FC_WEIGHT_THIN          := 0.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   400
"/    FC_WEIGHT_EXTRALIGHT    := 40.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   401
"/    FC_WEIGHT_ULTRALIGHT    := FC_WEIGHT_EXTRALIGHT.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   402
"/    FC_WEIGHT_LIGHT         := 50.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   403
"/    FC_WEIGHT_BOOK          := 75.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   404
"/    FC_WEIGHT_REGULAR       := 80.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   405
"/    FC_WEIGHT_NORMAL        := FC_WEIGHT_REGULAR.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   406
"/    FC_WEIGHT_MEDIUM        := 100.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   407
"/    FC_WEIGHT_DEMIBOLD      := 180.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   408
"/    FC_WEIGHT_SEMIBOLD      := FC_WEIGHT_DEMIBOLD.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   409
"/    FC_WEIGHT_BOLD          := 200.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   410
"/    FC_WEIGHT_EXTRABOLD     := 205.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   411
"/    FC_WEIGHT_ULTRABOLD     := FC_WEIGHT_EXTRABOLD.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   412
"/    FC_WEIGHT_BLACK         := 210.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   413
"/    FC_WEIGHT_HEAVY         := FC_WEIGHT_BLACK.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   414
"/    FC_WEIGHT_EXTRABLACK    := 215.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
   415
"/    FC_WEIGHT_ULTRABLACK    := FC_WEIGHT_EXTRABLACK.
6317
d5626a0f6fea class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6314
diff changeset
   416
! !
d5626a0f6fea class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6314
diff changeset
   417
d5626a0f6fea class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6314
diff changeset
   418
!XftFontDescription methodsFor:'accessing-private'!
6190
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   419
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   420
getFontId
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   421
    ^ fontId
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   422
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   423
    "Created: / 02-01-2014 / 23:29:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   424
! !
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   425
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   426
!XftFontDescription methodsFor:'change & update'!
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   427
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   428
update:anAspect with:something from:changedObject
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   429
    "I want to be informed when a view that printed something with me is destroyed.
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   430
     Disassociate the view from the XFT drawable"
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   431
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   432
    |drawableId|
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   433
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   434
    anAspect == #aboutToDestroy ifTrue:[
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   435
        drawableId := changedObject drawableId.
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   436
        drawableId notNil ifTrue:[
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   437
            self disassociateXftDrawableFrom:drawableId.
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   438
        ].
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   439
        changedObject removeDependent:self.
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   440
    ].
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   441
! !
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   442
6587
c1790bb9af59 In case of not configured but installed Xft Fonts convert XftFonts
ab
parents: 6544
diff changeset
   443
!XftFontDescription methodsFor:'converting'!
c1790bb9af59 In case of not configured but installed Xft Fonts convert XftFonts
ab
parents: 6544
diff changeset
   444
c1790bb9af59 In case of not configured but installed Xft Fonts convert XftFonts
ab
parents: 6544
diff changeset
   445
asNonXftFont
c1790bb9af59 In case of not configured but installed Xft Fonts convert XftFonts
ab
parents: 6544
diff changeset
   446
    |newFont|
c1790bb9af59 In case of not configured but installed Xft Fonts convert XftFonts
ab
parents: 6544
diff changeset
   447
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
   448
    newFont := FontDescription
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
   449
		    family:family
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
   450
		    face:face
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
   451
		    style:style
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
   452
		    size:(sizeUnit == #px ifTrue:[pixelSize] ifFalse:[size])
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
   453
		    sizeUnit:sizeUnit
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
   454
		    encoding:encoding.
6587
c1790bb9af59 In case of not configured but installed Xft Fonts convert XftFonts
ab
parents: 6544
diff changeset
   455
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
   456
    ^ newFont
6587
c1790bb9af59 In case of not configured but installed Xft Fonts convert XftFonts
ab
parents: 6544
diff changeset
   457
! !
c1790bb9af59 In case of not configured but installed Xft Fonts convert XftFonts
ab
parents: 6544
diff changeset
   458
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   459
!XftFontDescription methodsFor:'displaying'!
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   460
6351
60344c7289fa class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6344
diff changeset
   461
displayString:aString from:index1 to:index2Arg x:xArg y:yArg in:aGC opaque:opaque
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   462
    "display a partial string at some position in aGC."
7035
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7034 6947
diff changeset
   463
    
6707
3f723be85a32 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6693
diff changeset
   464
    |index2 bytesPerCharacter transformation
7061
bdace6fb405f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7055
diff changeset
   465
     clipOrg clipCorn clipRect clipX clipY clipW clipH clipPnt
6707
3f723be85a32 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6693
diff changeset
   466
     fg fgR fgG fgB fgA fgPixel bg bgR bgG bgB bgA bgPixel
7035
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7034 6947
diff changeset
   467
     drawX drawY drawPnt displayId screen drawableId error stringLen drawId drawIdIsShared
7075
Stefan Vogel <sv@exept.de>
parents: 7070
diff changeset
   468
     newXftDrawId newDrawableAssociation pixmapDepth|
7035
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7034 6947
diff changeset
   469
                                             
6351
60344c7289fa class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6344
diff changeset
   470
    "limit the string len, otherwise bad output is generated"
6477
d6699b8116e1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6459
diff changeset
   471
    stringLen := index2Arg - index1 + 1.
6351
60344c7289fa class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6344
diff changeset
   472
    stringLen > 8000 ifTrue:[
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   473
        index2 := index1 + 8000 - 1.
6351
60344c7289fa class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6344
diff changeset
   474
    ]  ifFalse:[
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   475
        stringLen <= 0 ifTrue:[^ self].
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   476
        index2 := index2Arg.
6351
60344c7289fa class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6344
diff changeset
   477
    ].
6209
4c5466b7a3e0 Check more arguments
Stefan Vogel <sv@exept.de>
parents: 6201
diff changeset
   478
    bytesPerCharacter := aString bitsPerCharacter // 8.
6199
2a683b1824c6 Bugfix in XftFontDescription>>#displayString:from:to:x:y:in:opaque: takes transformation into an account.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6198
diff changeset
   479
7061
bdace6fb405f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7055
diff changeset
   480
    clipRect := aGC deviceClippingRectangle.
7050
f0f26dbce164 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7016
diff changeset
   481
    clipRect notNil ifTrue:[
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   482
        clipX := clipRect left.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   483
        clipY := clipRect top.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   484
        clipW := clipRect width.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   485
        clipH := clipRect height.
6489
8955b81883e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6488
diff changeset
   486
    ].
6199
2a683b1824c6 Bugfix in XftFontDescription>>#displayString:from:to:x:y:in:opaque: takes transformation into an account.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6198
diff changeset
   487
7061
bdace6fb405f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7055
diff changeset
   488
    transformation := aGC transformation.
6356
bbb356d49430 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6351
diff changeset
   489
    transformation isNil ifTrue:[
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   490
        drawX := xArg.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   491
        drawY := yArg.
6356
bbb356d49430 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6351
diff changeset
   492
    ] ifFalse:[
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   493
        drawPnt := transformation transformPoint:(xArg @ yArg).
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   494
        drawX := drawPnt x ceiling.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   495
        drawY := drawPnt y ceiling.
6356
bbb356d49430 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6351
diff changeset
   496
    ].
bbb356d49430 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6351
diff changeset
   497
7068
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   498
    fg  := aGC paint.
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   499
    fgR := fg scaledRed.
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   500
    fgG := fg scaledGreen.
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   501
    fgB := fg scaledBlue.
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   502
    fgA := fg scaledAlpha.
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   503
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   504
    fgR isNil ifTrue:[
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   505
        "/ when drawing into a pixmap...
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   506
        fgPixel := fg colorId.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   507
        fgPixel == 0 ifTrue:[
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   508
            fgR := fgG := fgB := 0.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   509
        ] ifFalse:[
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   510
            fgR := fgG := fgB := 16rFFFF.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   511
        ]
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
   512
    ].
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   513
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   514
    opaque ifTrue:[
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   515
        bg := aGC backgroundPaint.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   516
        bg isColor ifTrue:[
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   517
            bgR := bg scaledRed.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   518
            bgG := bg scaledGreen.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   519
            bgB := bg scaledBlue.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   520
            bgA := bg scaledAlpha.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   521
        ] ifFalse:[
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   522
            "images are not yet implemented"
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   523
            "/ #todo: fill background rectangle
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   524
            bgR := bgG := bgB := bgA := 16rFFFF.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   525
        ].
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   526
        bgR isNil ifTrue:[
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   527
            "/ when drawing into a pixmap...
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   528
            bgPixel := bg colorId.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   529
            bgPixel == 0 ifTrue:[
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   530
                bgR := bgG := bgB := 0.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   531
            ] ifFalse:[
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   532
                bgR := bgG := bgB := 16rFFFF.
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   533
            ]
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   534
        ].
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   535
    ].
6333
a39a5f90e4fd class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6327
diff changeset
   536
    displayId := device displayIdOrErrorIfBroken.
6365
cf89c4bedea4 Instvar drawId renamed to sharedDrawId.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6356
diff changeset
   537
    displayId isNil ifTrue:[
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   538
        ^ self.
6333
a39a5f90e4fd class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6327
diff changeset
   539
    ].
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   540
    screen := device screen.
6351
60344c7289fa class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6344
diff changeset
   541
    drawableId := aGC drawableId.
7075
Stefan Vogel <sv@exept.de>
parents: 7070
diff changeset
   542
    aGC isForm ifTrue:[
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   543
        pixmapDepth := aGC depth.
7075
Stefan Vogel <sv@exept.de>
parents: 7070
diff changeset
   544
    ].
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   545
    aGC addDependent:self.      "I need to be informed, when the GC is destroyed"
6209
4c5466b7a3e0 Check more arguments
Stefan Vogel <sv@exept.de>
parents: 6201
diff changeset
   546
6726
9f16fe1701f5 XGraphicsContext made public to allow subclassing and extending
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6725
diff changeset
   547
    aGC class == XGraphicsContext ifTrue:[
7032
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   548
        "/ TODO: Following should be done atomically together with drawing...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   549
        drawId := aGC xftDrawId.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   550
        drawIdIsShared := false.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   551
        drawId isNil ifTrue:[
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   552
%{
7077
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   553
            if (pixmapDepth != nil) {
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   554
                int __pixmapDepth = __intVal(pixmapDepth);
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   555
                if (__pixmapDepth == 1) {      
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   556
                    drawId = XFT_DRAW_HANDLE_NEW ( XftDrawCreateBitmap ( DISPLAY( displayId ) ,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   557
                                                   DRAWABLE( drawableId ) ) );           
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   558
                } else {
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   559
                    drawId = XFT_DRAW_HANDLE_NEW ( XftDrawCreateAlpha ( DISPLAY( displayId ) ,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   560
                                                   DRAWABLE( drawableId ), __pixmapDepth) );                      
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   561
                }
7072
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7071 7070
diff changeset
   562
            } else {
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7071 7070
diff changeset
   563
                drawId = XFT_DRAW_HANDLE_NEW ( XftDrawCreate ( DISPLAY( displayId ) ,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7071 7070
diff changeset
   564
                                               DRAWABLE( drawableId ) ,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7071 7070
diff changeset
   565
                                               DefaultVisual( DISPLAY( displayId), SCREEN (screen) ) ,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7071 7070
diff changeset
   566
                                               DefaultColormap( DISPLAY( displayId), SCREEN (screen) ) ) );
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7071 7070
diff changeset
   567
            }
6530
b4c269c96b08 Changes XftFontDescription to use per-view XftDrawId...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6529
diff changeset
   568
%}.
7032
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   569
            aGC xftDrawId: drawId.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   570
        ].
6819
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
   571
    ] ifFalse:[
7032
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   572
        Logger log: 'GC passed to XftGraphicsContext is not an XGraphicsContext!!' severity: #error.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   573
        drawId := sharedDrawId.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   574
        drawIdIsShared := true.
6530
b4c269c96b08 Changes XftFontDescription to use per-view XftDrawId...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6529
diff changeset
   575
    ].
b4c269c96b08 Changes XftFontDescription to use per-view XftDrawId...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6529
diff changeset
   576
6918
c5cb9d5dfaae Fixed memory corruption caused by Xft fonts
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6883
diff changeset
   577
%{  /* UNLIMITEDSTACK */
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   578
#ifdef XFT
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   579
    XftColor color;
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   580
    XGlyphInfo extents;
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   581
    XRectangle clipRX;
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   582
    char *string;
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
   583
    int len;
6209
4c5466b7a3e0 Check more arguments
Stefan Vogel <sv@exept.de>
parents: 6201
diff changeset
   584
    int __bytesPerCharacter;
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   585
    XftDraw *__sharedDrawId;
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   586
    XftFont *__xftFont = XFT_FONT(__INST(fontId));
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   587
6209
4c5466b7a3e0 Check more arguments
Stefan Vogel <sv@exept.de>
parents: 6201
diff changeset
   588
    if (!(__bothSmallInteger(drawX, drawY)
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   589
          && __bothSmallInteger(index1, index2)
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   590
          && __isSmallInteger(bytesPerCharacter)
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   591
          && (__isSmallInteger(fgPixel) || (__bothSmallInteger(fgR, fgG) && __bothSmallInteger(fgB, fgA)))
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   592
          && (opaque == false || __isSmallInteger(bgPixel) || (__bothSmallInteger(bgR, bgG) && __bothSmallInteger(bgB, bgA)))
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   593
          && __isNonNilObject(aString)
6209
4c5466b7a3e0 Check more arguments
Stefan Vogel <sv@exept.de>
parents: 6201
diff changeset
   594
    )) {
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   595
        goto err;
6209
4c5466b7a3e0 Check more arguments
Stefan Vogel <sv@exept.de>
parents: 6201
diff changeset
   596
    }
4c5466b7a3e0 Check more arguments
Stefan Vogel <sv@exept.de>
parents: 6201
diff changeset
   597
4c5466b7a3e0 Check more arguments
Stefan Vogel <sv@exept.de>
parents: 6201
diff changeset
   598
    __bytesPerCharacter = __intVal(bytesPerCharacter);
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
   599
6530
b4c269c96b08 Changes XftFontDescription to use per-view XftDrawId...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6529
diff changeset
   600
    if (drawIdIsShared == true) {
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   601
    if (__INST(sharedDrawId) == nil) {
7077
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   602
       if (pixmapDepth != nil) {
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   603
            int __pixmapDepth = __intVal(pixmapDepth);
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   604
            if (__pixmapDepth == 1) {      
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   605
                __sharedDrawId =  XftDrawCreateBitmap ( DISPLAY( displayId ) ,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   606
                                               DRAWABLE( drawableId ) );           
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   607
            } else {
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   608
                __sharedDrawId =  XftDrawCreateAlpha ( DISPLAY( displayId ) ,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   609
                                               DRAWABLE( drawableId ), __pixmapDepth);                      
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7072 7075
diff changeset
   610
            }          
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   611
        } else {
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   612
            __sharedDrawId = XftDrawCreate(DISPLAY(displayId),
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   613
                                           DRAWABLE(drawableId),
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   614
                                           DefaultVisual(DISPLAY(displayId), SCREEN(screen)),
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   615
                                           DefaultColormap(DISPLAY(displayId), SCREEN(screen)));
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   616
        }
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   617
        __INST(sharedDrawId) = XFT_DRAW_HANDLE_NEW(__sharedDrawId);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   618
        __STORE(self, __INST(sharedDrawId));
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   619
    } else if (XftDrawDrawable(__sharedDrawId = XFT_DRAW(__INST(sharedDrawId))) != DRAWABLE(drawableId)) {
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   620
        XftDrawChange(__sharedDrawId, DRAWABLE(drawableId));
7032
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   621
        }
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   622
    } else {
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6918 6936
diff changeset
   623
       __sharedDrawId = XFT_DRAW ( drawId );
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   624
    }
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   625
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   626
    string = __stringVal(aString) + ((__intVal(index1) - 1 ) * __bytesPerCharacter);
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
   627
    len = __intVal(index2) - __intVal(index1) + 1;
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   628
7050
f0f26dbce164 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7016
diff changeset
   629
    if (clipRect != nil) {
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   630
        clipRX.x = __intVal(clipX);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   631
        clipRX.y = __intVal(clipY);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   632
        clipRX.width = __intVal(clipW);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   633
        clipRX.height = __intVal(clipH);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   634
        XftDrawSetClipRectangles(__sharedDrawId, 0, 0, &clipRX, 1);
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   635
    } else {
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   636
        XftDrawSetClip(__sharedDrawId, 0);
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   637
    }
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   638
6223
5e154dcb2acd Argument checking
Stefan Vogel <sv@exept.de>
parents: 6211
diff changeset
   639
    if (opaque == true) {
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   640
        if (bgPixel != nil) {
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   641
            color.pixel = (unsigned long)__intVal(bgPixel);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   642
        }
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   643
        color.color.red = __intVal(bgR);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   644
        color.color.green = __intVal(bgG);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   645
        color.color.blue = __intVal(bgB);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   646
        color.color.alpha = __intVal(bgA);
7068
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   647
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   648
        switch (__bytesPerCharacter) {
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   649
        case 1:
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   650
            XftTextExtents8(DISPLAY(displayId), __xftFont, (FcChar8*)string, len, &extents);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   651
            break;
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   652
        case 2:
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   653
            XftTextExtents16(DISPLAY(displayId), __xftFont, (FcChar16*)string, len, &extents);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   654
            break;
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   655
        case 4:
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   656
            XftTextExtents32(DISPLAY(displayId), __xftFont, (FcChar32*)string, len, &extents);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   657
            break;
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   658
        }
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   659
        XftDrawRect(__sharedDrawId, &color, __intVal(drawX) - extents.x, __intVal(drawY) - __xftFont->ascent, extents.width, __xftFont->height);
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   660
    }
6223
5e154dcb2acd Argument checking
Stefan Vogel <sv@exept.de>
parents: 6211
diff changeset
   661
    if (fgPixel != nil) {
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   662
        color.pixel = (unsigned long)__intVal(fgPixel);
6223
5e154dcb2acd Argument checking
Stefan Vogel <sv@exept.de>
parents: 6211
diff changeset
   663
    }
7068
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   664
    color.color.red = __intVal(fgR);
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   665
    color.color.green = __intVal(fgG);
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   666
    color.color.blue = __intVal(fgB);
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   667
    color.color.alpha = __intVal(fgA);
ec3a9fc47076 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7061
diff changeset
   668
6209
4c5466b7a3e0 Check more arguments
Stefan Vogel <sv@exept.de>
parents: 6201
diff changeset
   669
    switch (__bytesPerCharacter) {
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
   670
    case 1:
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   671
        XftDrawString8(__sharedDrawId, &color,__xftFont,
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   672
                        __intVal(drawX),
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   673
                        __intVal(drawY),
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   674
                        (FcChar8*)string,
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   675
                        len);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   676
        break;
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   677
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
   678
    case 2:
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   679
        XftDrawString16(__sharedDrawId, &color, __xftFont,
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   680
                        __intVal(drawX),
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   681
                        __intVal(drawY),
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   682
                        (FcChar16*)string,
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   683
                        len);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   684
        break;
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   685
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
   686
    case 4:
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   687
        XftDrawString32(__sharedDrawId, &color, __xftFont,
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   688
                        __intVal(drawX),
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   689
                        __intVal(drawY),
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   690
                        (FcChar32*)string,
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   691
                        len);
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   692
        break;
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   693
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   694
    default:
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   695
        goto err;
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   696
    }
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   697
7075
Stefan Vogel <sv@exept.de>
parents: 7070
diff changeset
   698
    if (pixmapDepth != nil) {
7115
f03fcb541d90 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7114
diff changeset
   699
        XftDrawDestroy(__sharedDrawId);
7070
Stefan Vogel <sv@exept.de>
parents: 7069
diff changeset
   700
    }
Stefan Vogel <sv@exept.de>
parents: 7069
diff changeset
   701
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   702
# if 0 // this has been superseeded by receiving change messages on view destroy
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   703
    // Have to disassociate the drawableId - otherwise we get an X11 error 'RenderBadPicture (invalid Picture parameter)'
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   704
    // when the drawable (the window) is destroyed.
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   705
    XftDrawChange(__sharedDrawId, None);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   706
# endif
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   707
    RETURN(self);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   708
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   709
#endif
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   710
    err:;
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   711
%}.
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   712
    self primitiveFailed: error.
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   713
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   714
    "Created: / 21-12-2013 / 21:11:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6530
b4c269c96b08 Changes XftFontDescription to use per-view XftDrawId...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6529
diff changeset
   715
    "Modified: / 23-06-2014 / 22:06:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   716
! !
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   717
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   718
!XftFontDescription methodsFor:'error reporting'!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   719
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   720
primitiveFailed
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   721
    <resource: #skipInDebuggersWalkBack>
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   722
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   723
    self class xftAvailable ifFalse:[
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   724
        super primitiveFailed:'Xft support is not configured'.
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   725
    ].
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   726
    super primitiveFailed
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   727
!
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   728
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   729
primitiveFailed:errorString
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   730
    <resource: #skipInDebuggersWalkBack>
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   731
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   732
    self class xftAvailable ifFalse:[
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   733
        super primitiveFailed:'Xft support is not configured'.
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   734
    ].
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   735
    super primitiveFailed:errorString
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   736
! !
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   737
6946
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   738
!XftFontDescription methodsFor:'finalization'!
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   739
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   740
finalizationLobby
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   741
    ^ Lobby
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   742
!
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   743
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   744
finalize
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   745
    self xftDrawDestroy
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   746
! !
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
   747
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   748
!XftFontDescription methodsFor:'getting a device font'!
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   749
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   750
onDevice:aGraphicsDevice
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   751
    "Create a new XftFont representing the closes font as
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   752
     myself on aDevice; if one already exists, return the one."
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   753
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   754
    | myPatternId closestPatternId1 closestPatternId2 newFontId |
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   755
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   756
    "if I am already assigned to that device ..."
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   757
    (device == aGraphicsDevice) ifTrue:[^ self].
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   758
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   759
    (aGraphicsDevice isNil and:[device notNil]) ifTrue:[
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   760
	^ self
6544
5d5d433806d2 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6543
diff changeset
   761
    ].
7121
a3833df3f396 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 7116
diff changeset
   762
    aGraphicsDevice supportsXftFonts ifFalse:[
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   763
	^ super onDevice:aGraphicsDevice
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   764
    ].
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   765
6317
d5626a0f6fea class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6314
diff changeset
   766
    (closestFont notNil and:[closestFont graphicsDevice == aGraphicsDevice]) ifTrue:[
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   767
	^ closestFont onDevice: aGraphicsDevice.
6190
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   768
    ].
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   769
6389
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   770
    RecentlyUsedFonts isNil ifTrue:[
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   771
	RecentlyUsedFonts := OrderedCollection new:10.
6389
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   772
    ].
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   773
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   774
    RecentlyUsedFonts keysAndValuesDo:[:index :aFont |
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   775
	((aFont class == self class) and:[(self sameDeviceFontAs:aFont) and:[aFont getFontId notNil]]) ifTrue:[
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   776
	    "/ Transcript showCR:'hit'.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   777
	    RecentlyUsedFonts removeIndex:index.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   778
	    RecentlyUsedFonts addFirst:aFont.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   779
	    ^ aFont
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   780
	]
6389
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   781
    ].
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   782
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   783
    RecentlyUsedFonts size > 20 ifTrue:[
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   784
	RecentlyUsedFonts removeLast.
6389
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   785
    ].
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   786
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   787
    aGraphicsDevice deviceFonts do:[:aFont |
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   788
	((aFont class == self class) and:[self sameDeviceFontAs:aFont]) ifTrue:[
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   789
	    RecentlyUsedFonts addFirst:aFont.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   790
	    ^ aFont
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   791
	].
7121
a3833df3f396 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 7116
diff changeset
   792
    ].
a3833df3f396 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 7116
diff changeset
   793
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   794
    [
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   795
	Error handle:[:ex |
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   796
	    ex suspendedContext fullPrintAll.
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   797
	    ^ self asNonXftFont onDevice:aGraphicsDevice
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   798
	] do:[
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   799
	    myPatternId := FcPattern fromFontDescription: self.
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   800
	].
6389
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   801
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   802
	newFontId := self xftFontOpenPattern: aGraphicsDevice displayId pattern: myPatternId.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   803
	newFontId notNil ifTrue:[
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   804
	    "/ Good, this font exists!!
7103
dd61650bbe26 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7075
diff changeset
   805
            myPatternId := nil.
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   806
	    fontId := newFontId.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   807
	    device := aGraphicsDevice.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   808
	    aGraphicsDevice registerFont:self.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   809
	    RecentlyUsedFonts addFirst:self.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   810
	    ^ self.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   811
	] ifFalse:[
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   812
	    closestPatternId1 := self xftFontMatch: aGraphicsDevice displayId screen: aGraphicsDevice screen pattern: myPatternId.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   813
	    closestPatternId1 isNil ifTrue:[
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   814
		self error: 'No font matches'.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   815
	    ].
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   816
	    "
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   817
	    closestPatternId at: 'family'
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   818
	    closestPatternId at: 'size'
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   819
	    "
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   820
	    closestPatternId2 := closestPatternId1 copy.
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   821
	    newFontId := self xftFontOpenPattern: aGraphicsDevice displayId pattern: closestPatternId1.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   822
	    "/ !!!!!!!! closestPatternId is no longer valid !!!!!!!!
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   823
	    closestPatternId1 :=  nil.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   824
	    newFontId isNil ifTrue:[
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   825
		self error: 'Pattern matched, but font could not be opened (should not happen)'.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   826
	    ].
6389
5a9f9d83b7c4 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6365
diff changeset
   827
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   828
	    "/ Search for existing registered font. Note, that XftFont instances
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   829
	    "/ are shared (and refcounted) so newFontId = aFont getFontId is enough
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   830
	    "/ to check whether some other font instance represents the same font...
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   831
	    aGraphicsDevice deviceFonts do:[:aFont |
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   832
		((self class == aFont class) and:[newFontId = aFont getFontId]) ifTrue:[
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   833
		    closestFont := aFont.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   834
		    ^ closestFont
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   835
		].
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   836
	    ].
6190
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   837
6876
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   838
	    closestFont := self shallowCopy
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   839
				setDevice: aGraphicsDevice patternId: closestPatternId2 fontId: newFontId;
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   840
				yourself.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   841
	    aGraphicsDevice registerFont: closestFont.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   842
	    RecentlyUsedFonts addFirst:closestFont.
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   843
	    ^ closestFont
b1aa2b47d252 avoid ifdefs around smalltalk statements
Claus Gittinger <cg@exept.de>
parents: 6833
diff changeset
   844
	].
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   845
    ] ensure:[
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   846
	myPatternId notNil ifTrue:[myPatternId release].
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   847
	closestPatternId1 notNil ifTrue:[closestPatternId1 release].
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   848
	closestPatternId2 notNil ifTrue:[closestPatternId2 release].
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   849
    ].
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   850
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   851
    "
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   852
     (XftFontDescription family:'monospace' size:16) onDevice:Screen current
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   853
    "
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   854
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   855
    "Modified: / 14-04-1997 / 18:22:31 / cg"
6190
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   856
    "Modified: / 02-01-2014 / 23:43:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   857
!
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   858
6190
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   859
onDevice:aWorkstation ifAbsent:aBlock
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   860
    "Create a new XftFont representing the same font as
6190
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   861
     myself on aWorkstation. This does NOT try to look for existing
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   862
     or replacement fonts (i.e. can be used to get physical fonts)."
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   863
6458
5d0126fce68c class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6394
diff changeset
   864
    ^ self onDevice:aWorkstation
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   865
6190
d651313d4044 Fixes to share XftFontDescription instances.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6189
diff changeset
   866
    "Modified: / 02-01-2014 / 23:15:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6193
cd4baec11e1e Fixes in displayOn:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6192
diff changeset
   867
    "Modified (comment): / 04-01-2014 / 02:06:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   868
! !
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   869
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   870
!XftFontDescription methodsFor:'initialization'!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   871
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   872
setDevice: deviceArg patternId: patternIdArg fontId: fontIdArg
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   873
    device := deviceArg.
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   874
    fontId := fontIdArg.
6325
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
   875
    patternIdArg notNil ifTrue:[
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   876
	family  := patternIdArg at: FC_FAMILY index: 1.
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   877
	size    := patternIdArg at: FC_SIZE index: 1.
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   878
	face    := patternIdArg at: FC_WEIGHT index: 1.
7114
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   879
	face    := StXFace2FCWeightMap keyAtValue: face.
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   880
	style   := patternIdArg at: FC_SLANT index: 1.
7114
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
   881
	style   := StXStyle2FCSlantMap keyAtValue: style.
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   882
	name    := patternIdArg at: FC_FULLNAME index: 1.
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   883
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   884
	encoding:= patternIdArg at: 'encoding' index: 1.
6963
26d226d61d32 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6957
diff changeset
   885
    ].
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   886
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   887
    "Created: / 21-12-2013 / 00:46:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6184
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
   888
    "Modified: / 30-12-2013 / 12:49:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6821
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   889
!
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   890
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   891
setName: aString
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   892
    "Initializes font description from a string like 'times-12' or 'times,charter-12:bold'"
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   893
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   894
    | pattern |
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   895
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   896
    pattern := FcPattern fromString: aString.  
6821
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   897
    pattern notNil ifTrue:[
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   898
        family  := pattern at: FC_FAMILY index: 1.
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   899
        size    := pattern at: FC_SIZE index: 1.
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   900
        face    := pattern at: FC_WEIGHT index: 1.
6821
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   901
        face    := StXFace2FCWeightMap keyAtValue: face.
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   902
        style   := pattern at: FC_SLANT index: 1.
6821
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   903
        style   := StXStyle2FCSlantMap keyAtValue: style.
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   904
        name    := pattern at: FC_FULLNAME index: 1.
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   905
        encoding:= pattern at: 'encoding' index: 1.
6821
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   906
        encoding notNil ifTrue:[encoding := encoding asSymbol].
7151
51e71e95c952 X11/FontConfig: Removed all FontConfig related code from XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   907
        pattern release.
6821
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   908
    ].
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   909
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   910
    "
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   911
    XftFontDescription named: 'times-12'
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   912
    XftFontDescription named: 'times,charter-12:bold'
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   913
    XftFontDescription named: 'Sans-10'
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   914
    "
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   915
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
   916
    "Created: / 05-03-2015 / 05:19:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   917
! !
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   918
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   919
!XftFontDescription methodsFor:'primitives'!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   920
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   921
disassociateXftDrawableFrom:drawableId
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   922
    "Disassociate the XftDrawable from drawableId.
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   923
     This mist be done before the drawable is destroyed,
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   924
     otherwise the XftDrawable is destroyed together with the drawable,
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   925
     and X11 errors will be signaled."
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   926
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   927
    | error |
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   928
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   929
%{
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   930
#ifdef XFT
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   931
    if (!__isExternalAddressLike(__INST(sharedDrawId))) {
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   932
        // nothing to disasassociate from...
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   933
        RETURN(self);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   934
    }
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   935
    if (!__isExternalAddressLike(drawableId)) {
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   936
        error = @symbol(BadArg);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   937
        goto err;
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   938
    }
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   939
    if (XftDrawDrawable(XFT_DRAW(__INST(sharedDrawId))) == DRAWABLE(drawableId)) {
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   940
        XftDrawChange(XFT_DRAW(__INST(sharedDrawId)), None);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   941
    }
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   942
    RETURN(self);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   943
err:;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   944
#endif
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   945
%}.
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   946
    self primitiveFailed: error
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   947
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   948
    "Created: / 26-12-2013 / 12:17:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   949
!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
   950
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   951
xftDrawChange:xftDrawId drawable:drawableId
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   952
    | error |
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   953
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   954
%{
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   955
#ifdef XFT
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   956
    if ( ! __isExternalAddressLike(xftDrawId) ) {
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   957
        error = @symbol(BadArg1);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   958
        goto err;
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   959
    }
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   960
    if (drawableId == nil) {
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   961
        XftDrawChange(XFT_DRAW(xftDrawId), None);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   962
        RETURN (self);
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   963
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   964
    if ( ! __isExternalAddressLike(drawableId) ) {
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   965
        error = @symbol(BadArg2);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   966
        goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   967
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   968
    if (XftDrawDrawable( XFT_DRAW(xftDrawId) ) != DRAWABLE( drawableId ) ) {
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   969
        XftDrawChange( XFT_DRAW(xftDrawId) , DRAWABLE( drawableId ) );
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   970
    }
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   971
    RETURN (self);
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
   972
err:;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   973
#endif
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   974
%}.
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   975
    self primitiveFailed: error
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   976
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   977
    "Created: / 26-12-2013 / 12:17:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   978
!
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   979
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   980
xftDrawCreate: displayId screen: screen drawable: drawableId
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   981
    | error |
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   982
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   983
%{
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   984
#ifdef XFT
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   985
    if ( ! __isExternalAddressLike(displayId) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   986
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   987
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   988
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   989
    if ( ! __isSmallInteger(screen) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   990
	error = @symbol(BadArg2);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   991
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   992
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   993
    if ( ! __isExternalAddressLike(drawableId) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   994
	error = @symbol(BadArg3);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   995
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
   996
    }
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
   997
    RETURN ( XFT_DRAW_HANDLE_NEW (  XftDrawCreate ( DISPLAY( displayId ) ,
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   998
						   DRAWABLE( drawableId ) ,
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
   999
						   DefaultVisual( DISPLAY( displayId), SCREEN (screen) ) ,
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1000
						   DefaultColormap( DISPLAY( displayId), SCREEN (screen) ) ) ) );
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1001
    err:;
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1002
#endif
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1003
%}.
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1004
    self primitiveFailed: error
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1005
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1006
    "Created: / 21-12-2013 / 21:12:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1007
!
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1008
6946
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1009
xftDrawDestroy
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1010
%{
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1011
#ifdef XFT
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1012
    if (__INST(sharedDrawId) != nil) {
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1013
        XftDraw *xftDrawable = XFT_DRAW(__INST(sharedDrawId));
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1014
        __INST(sharedDrawId) = nil;
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1015
        XftDrawDestroy(xftDrawable);
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1016
    }
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1017
    RETURN (self);
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1018
#endif
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1019
%}.
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1020
    self primitiveFailed.
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1021
!
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1022
6189
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1023
xftDrawRect: drawIdArg color: aColor x: x y: y width: w height: h
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1024
    | error r g b a pix |
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1025
6189
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1026
    aColor isColor ifFalse:[^self primitiveFailed: #BadArg2].
6187
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1027
6189
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1028
    r := aColor scaledRed.
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1029
    g := aColor scaledGreen.
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1030
    b := aColor scaledBlue.
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1031
    a := aColor alpha * 65535.
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1032
    r isNil ifTrue:[
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1033
	"/ when drawing into a pixmap...
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1034
	aColor colorId == 0 ifTrue:[
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1035
	    r := g := b := 0.
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1036
	] ifFalse:[
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1037
	    r := g := b := 16rFFFF.
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1038
	]
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1039
    ].
6189
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1040
    pix := aColor colorId.
6918
c5cb9d5dfaae Fixed memory corruption caused by Xft fonts
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6883
diff changeset
  1041
%{  /* UNLIMITEDSTACK */
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1042
#ifdef XFT
6187
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1043
    XftColor clr;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1044
    if ( ! __isExternalAddressLike(drawIdArg) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1045
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1046
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1047
    }
6187
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1048
    if ( ! __isSmallInteger(pix) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1049
	error = @symbol(BadColorId);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1050
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1051
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1052
    if ( ! __isSmallInteger(x) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1053
	error = @symbol(BadArg3);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1054
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1055
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1056
    if ( ! __isSmallInteger(y) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1057
	error = @symbol(BadArg4);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1058
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1059
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1060
    if ( ! __isSmallInteger(w) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1061
	error = @symbol(BadArg5);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1062
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1063
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1064
    if ( ! __isSmallInteger(h) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1065
	error = @symbol(BadArg6);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1066
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1067
    }
6187
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1068
    clr.pixel = (unsigned long)__intVal(pix);
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1069
    clr.color.red = __intVal(r);
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1070
    clr.color.green = __intVal(g);
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1071
    clr.color.blue = __intVal(b);
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1072
    clr.color.alpha = __intVal(a);
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1073
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1074
    XftDrawRect(XFT_DRAW(drawIdArg), &clr,
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1075
			__intVal(x), __intVal(y), __intVal(w) ,__intVal(h));
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1076
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1077
    RETURN ( self );
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1078
    err:;
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1079
#endif
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1080
%}.
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1081
    self primitiveFailed: error.
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1082
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1083
    "Created: / 28-12-2013 / 23:35:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1084
    "Modified: / 31-12-2013 / 00:37:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1085
!
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1086
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1087
xftDrawSetClip: drawIdArg rectangle: rect
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1088
    | error xObj yObj wObj hObj  |
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1089
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1090
    rect notNil ifTrue:[
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1091
	xObj := rect left.
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1092
	yObj := rect top.
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1093
	wObj := rect width.
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1094
	hObj := rect height.
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1095
    ].
6918
c5cb9d5dfaae Fixed memory corruption caused by Xft fonts
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6883
diff changeset
  1096
%{  /* UNLIMITEDSTACK */
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1097
#ifdef XFT
6191
86ef1e69ffc1 Call XftConfigSubstitute() & XftDefaultSubstitute() before matching fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6190
diff changeset
  1098
    XRectangle r;
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1099
    if ( ! __isExternalAddressLike(drawIdArg) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1100
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1101
	goto err;
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1102
    }
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1103
    if (rect != nil) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1104
	r.x = __intVal(xObj);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1105
	r.y = __intVal(yObj);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1106
	r.width = __intVal(wObj);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1107
	r.height = __intVal(hObj);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1108
	XftDrawSetClipRectangles( XFT_DRAW(drawIdArg) , 0, 0, &r, 1);
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1109
    } else {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1110
	XftDrawSetClipRectangles( XFT_DRAW(drawIdArg) , 0, 0, (XRectangle*)NULL, 0);
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1111
    }
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1112
    RETURN ( self );
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1113
    err:;
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1114
#endif
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1115
%}.
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1116
    self primitiveFailed: error.
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1117
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1118
    "Created: / 31-12-2013 / 01:24:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1119
!
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1120
6189
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1121
xftDrawString: drawIdArg color: aColor font: fontIdArg x: x y: y string: text from: start to: stop
6187
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1122
    | error r g b a pix |
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1123
6189
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1124
    aColor isColor ifFalse:[^self primitiveFailed: #BadArg2].
6187
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1125
6189
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1126
    r := aColor scaledRed.
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1127
    g := aColor scaledGreen.
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1128
    b := aColor scaledBlue.
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1129
    a := aColor alpha * 65535.
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1130
    r isNil ifTrue:[
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1131
	"/ when drawing into a pixmap...
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1132
	aColor colorId == 0 ifTrue:[
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1133
	    r := g := b := 0.
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1134
	] ifFalse:[
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1135
	    r := g := b := 16rFFFF.
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1136
	]
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1137
    ].
6189
9194261bf002 fixed - a structure field conflicted with a local variable name
Claus Gittinger <cg@exept.de>
parents: 6188
diff changeset
  1138
    pix := aColor colorId.
6918
c5cb9d5dfaae Fixed memory corruption caused by Xft fonts
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6883
diff changeset
  1139
%{  /* UNLIMITEDSTACK */
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1140
#ifdef XFT
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1141
    int _start, _stop;
6707
3f723be85a32 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6693
diff changeset
  1142
    int __x, __y;
6187
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1143
    XftColor clr;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1144
    if ( ! __isExternalAddressLike(drawIdArg) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1145
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1146
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1147
    }
6187
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1148
    if ( ! __isSmallInteger(pix) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1149
	error = @symbol(BadColorId);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1150
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1151
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1152
    if ( ! __isSmallInteger(x) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1153
	error = @symbol(BadArg4);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1154
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1155
    }
6707
3f723be85a32 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6693
diff changeset
  1156
    __x = __intVal(x);
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1157
    if ( ! __isSmallInteger(y) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1158
	error = @symbol(BadArg5);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1159
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1160
    }
6707
3f723be85a32 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6693
diff changeset
  1161
    __y = __intVal(y);
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1162
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1163
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1164
    if ( ! __isSmallInteger(start) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1165
	error = @symbol(BadArg6);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1166
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1167
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1168
    _start = __intVal(start);
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1169
    if ( ! __isSmallInteger(stop) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1170
	error = @symbol(BadArg7);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1171
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1172
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1173
    _stop = __intVal(stop);
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1174
6187
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1175
    clr.pixel = (unsigned long)__intVal(pix);
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1176
    clr.color.red = __intVal(r);
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1177
    clr.color.green = __intVal(g);
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1178
    clr.color.blue = __intVal(b);
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1179
    clr.color.alpha = __intVal(a);
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1180
6186
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1181
    if ( __isStringLike(text) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1182
	XftDrawString8(XFT_DRAW(drawIdArg), &clr, XFT_FONT(fontIdArg),
6707
3f723be85a32 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6693
diff changeset
  1183
			__x, __y,
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1184
			__stringVal(text) + (_start - 1), _stop - _start + 1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1185
	RETURN ( self );
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1186
    } else {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1187
	error = @symbol(BadArg5);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1188
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1189
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1190
    err:;
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1191
#endif
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1192
%}.
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1193
    self primitiveFailed: error.
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1194
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1195
    "Created: / 28-12-2013 / 12:32:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6186
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1196
    "Modified: / 30-12-2013 / 20:00:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1197
!
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1198
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1199
xftFontGetAscent: fontIdArg
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1200
    | error |
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1201
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1202
%{
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1203
#ifdef XFT
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1204
    int v;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1205
    if ( ! __isExternalAddressLike(fontIdArg) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1206
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1207
	goto err;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1208
    }
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1209
    v = XFT_FONT(fontIdArg)->ascent;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1210
    RETURN ( __MKINT( v ) );
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1211
    err:;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1212
#endif
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1213
%}.
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1214
    self primitiveFailed: error
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1215
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1216
    "Created: / 21-12-2013 / 00:56:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1217
!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1218
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1219
xftFontGetDescent:fontIdArg
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1220
    | error |
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1221
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1222
%{
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1223
#ifdef XFT
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1224
    int v;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1225
    if ( ! __isExternalAddressLike(fontIdArg) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1226
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1227
	goto err;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1228
    }
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1229
    v = XFT_FONT(fontIdArg)->descent;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1230
    RETURN ( __MKINT( v ) );
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1231
    err:;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1232
#endif
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1233
%}.
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1234
    self primitiveFailed: error
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1235
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1236
    "Created: / 21-12-2013 / 00:56:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1237
!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1238
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1239
xftFontGetHeight: fontIdArg
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1240
    | error |
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1241
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1242
%{
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1243
#ifdef XFT
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1244
    int v;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1245
    if ( ! __isExternalAddressLike(fontIdArg) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1246
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1247
	goto err;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1248
    }
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1249
    v = XFT_FONT(fontIdArg)->height;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1250
    RETURN ( __MKINT( v ) );
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1251
    err:;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1252
#endif
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1253
%}.
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1254
    self primitiveFailed: error
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1255
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1256
    "Created: / 21-12-2013 / 00:56:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1257
!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1258
6186
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1259
xftFontGetMaxAdvanceWidth: fontIdArg
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1260
    | error |
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1261
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1262
%{
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1263
#ifdef XFT
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1264
    int v;
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1265
    if ( ! __isExternalAddressLike(fontIdArg) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1266
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1267
	goto err;
6186
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1268
    }
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1269
    v = XFT_FONT(fontIdArg)->max_advance_width;
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1270
    RETURN ( __MKINT( v ) );
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1271
    err:;
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1272
#endif
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1273
%}.
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1274
    self primitiveFailed: error
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1275
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1276
    "Created: / 30-12-2013 / 20:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1277
!
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1278
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1279
xftFontGetPattern: fontIdArg
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1280
    | error |
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1281
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1282
%{
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1283
#ifdef XFT
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1284
    XftPattern* p;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1285
    if ( ! __isExternalAddressLike(fontIdArg) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1286
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1287
	goto err;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1288
    }
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1289
    p = XFT_FONT(fontIdArg)->pattern;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1290
    if (p == NULL) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1291
	RETURN ( nil );
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1292
    } else {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1293
	RETURN ( FC_PATTERN_HANDLE_NEW ( p ) );
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1294
    }
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1295
    err:;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1296
#endif
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1297
%}.
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1298
    self primitiveFailed: error
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1299
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1300
    "Created: / 21-12-2013 / 00:55:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1301
!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1302
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1303
xftFontMatch: displayId screen: screen pattern: patternId
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1304
    | error |
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1305
7103
dd61650bbe26 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7075
diff changeset
  1306
%{ /* UNLIMITEDSTACK */
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1307
#ifdef XFT
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1308
    XftPattern* p;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1309
    XftResult r;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1310
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1311
    if ( ! __isExternalAddressLike(displayId) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1312
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1313
	goto err;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1314
    }
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1315
    if ( ! __isSmallInteger( screen ) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1316
	error = @symbol(BadArg2);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1317
	goto err;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1318
    }
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1319
    if ( ! __isExternalAddressLike(patternId) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1320
	error = @symbol(BadArg3);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1321
	goto err;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1322
    }
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1323
6191
86ef1e69ffc1 Call XftConfigSubstitute() & XftDefaultSubstitute() before matching fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6190
diff changeset
  1324
    XftConfigSubstitute(FC_PATTERN( patternId ));
86ef1e69ffc1 Call XftConfigSubstitute() & XftDefaultSubstitute() before matching fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6190
diff changeset
  1325
    XftDefaultSubstitute(DISPLAY(displayId) , SCREEN( screen ), FC_PATTERN( patternId ));
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1326
    p = XftFontMatch( DISPLAY(displayId) , SCREEN( screen ), FC_PATTERN( patternId ), &r );
6192
d79a5e546361 Fixes in call to XftFontMatch() - ignore result value (last arg).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6191
diff changeset
  1327
    if (p) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1328
	RETURN ( FC_PATTERN_HANDLE_NEW ( p ) );
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1329
    } else {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1330
	error = @symbol(XftFontMatchReturnedNull);
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1331
    }
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1332
    err:;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1333
#endif
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1334
%}.
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1335
    self primitiveFailed: error
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1336
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1337
    "Created: / 21-12-2013 / 00:08:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1338
!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1339
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1340
xftFontOpenPattern: displayId pattern: patternId
7103
dd61650bbe26 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7075
diff changeset
  1341
    "Note: the pattern is destroyed when the font is closed"
dd61650bbe26 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7075
diff changeset
  1342
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1343
    | error |
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1344
6918
c5cb9d5dfaae Fixed memory corruption caused by Xft fonts
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6883
diff changeset
  1345
%{  /* UNLIMITEDSTACK */
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1346
#ifdef XFT
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1347
    XftFont* f;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1348
    if ( ! __isExternalAddressLike(displayId) ) {
7114
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
  1349
        error = @symbol(BadArg1);
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
  1350
        goto err;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1351
    }
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1352
    if ( ! __isExternalAddressLike(patternId) ) {
7103
dd61650bbe26 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7075
diff changeset
  1353
        error = @symbol(BadArg2);
dd61650bbe26 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7075
diff changeset
  1354
        goto err;
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1355
    }
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1356
6188
9d09f76582b7 Fixed problem with clipping.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6187
diff changeset
  1357
    f = XftFontOpenPattern( DISPLAY(displayId) , FC_PATTERN( patternId ) );
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1358
    if (f == NULL) {
7103
dd61650bbe26 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7075
diff changeset
  1359
        RETURN ( nil );
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1360
    } else {
7103
dd61650bbe26 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7075
diff changeset
  1361
        RETURN ( XFT_FONT_HANDLE_NEW ( f ) );
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1362
    }
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1363
    err:;
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1364
#endif
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1365
%}.
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1366
    self primitiveFailed: error
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1367
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1368
    "Created: / 20-12-2013 / 23:53:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1369
!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1370
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1371
xftTextExtents: displayIdArg font: fontIdArg string: text from: start to: stop
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1372
    | error extents bitsPerCharacter |
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1373
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1374
    extents :=  Array new: 6.
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1375
    bitsPerCharacter := text bitsPerCharacter.
6918
c5cb9d5dfaae Fixed memory corruption caused by Xft fonts
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6883
diff changeset
  1376
%{  /* UNLIMITEDSTACK */
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1377
#ifdef XFT
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1378
    XGlyphInfo info;
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1379
    int bytesPerCharacter;
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1380
    char *string;
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1381
    int len;
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1382
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1383
    bytesPerCharacter = __intVal(bitsPerCharacter) / 8;
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1384
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1385
    if ( ! __isExternalAddressLike(displayIdArg) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1386
	error = @symbol(BadArg1);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1387
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1388
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1389
    if ( ! __isExternalAddressLike(fontIdArg) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1390
	error = @symbol(BadArg2);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1391
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1392
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1393
    if ( ! __isSmallInteger(start) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1394
	error = @symbol(BadArg4);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1395
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1396
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1397
    if ( ! __isSmallInteger(stop) ) {
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1398
	error = @symbol(BadArg5);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1399
	goto err;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1400
    }
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1401
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1402
    string = __stringVal( text ) + (( __intVal(start) - 1 ) * bytesPerCharacter);
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1403
    len = __intVal(stop) - __intVal(start) + 1;
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1404
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1405
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1406
    switch (bytesPerCharacter) {
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1407
    case 1:
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1408
	XftTextExtents8(DISPLAY(displayIdArg), XFT_FONT(fontIdArg), (FcChar8*)string, len, &info);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1409
	break;
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1410
    case 2:
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1411
	XftTextExtents16(DISPLAY(displayIdArg), XFT_FONT(fontIdArg), (FcChar16*)string, len, &info);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1412
	break;
6195
9a14f8e6c10c Added support for wide strings.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6194
diff changeset
  1413
    case 4:
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1414
	XftTextExtents32(DISPLAY(displayIdArg), XFT_FONT(fontIdArg), (FcChar32*)string, len, &info);
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1415
	break;
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1416
    }
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1417
    __ArrayInstPtr(extents)->a_element[0] = __MKSMALLINT(info.width);
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1418
    __ArrayInstPtr(extents)->a_element[1] = __MKSMALLINT(info.height);
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1419
    __ArrayInstPtr(extents)->a_element[2] = __MKSMALLINT(info.x);
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1420
    __ArrayInstPtr(extents)->a_element[3] = __MKSMALLINT(info.y);
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1421
    __ArrayInstPtr(extents)->a_element[4] = __MKSMALLINT(info.xOff);
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1422
    __ArrayInstPtr(extents)->a_element[5] = __MKSMALLINT(info.yOff);
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1423
    error = nil;
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1424
    err:;
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1425
#endif
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1426
%}.
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1427
    error notNil ifTrue:[
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1428
	self primitiveFailed: error.
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1429
	^ nil.
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1430
    ].
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1431
    ^ extents
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1432
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1433
    "Created: / 21-12-2013 / 10:42:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6186
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1434
    "Modified: / 30-12-2013 / 20:00:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1435
! !
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1436
6198
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1437
!XftFontDescription methodsFor:'printing & storing'!
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1438
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1439
storeOn:aStream
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1440
    "append a character sequence to the argument, aStream from which the
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1441
     receiver can be reconstructed using readFrom:."
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1442
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1443
    aStream nextPutAll:'(XftFontDescription family:'. family storeOn:aStream.
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1444
    aStream nextPutAll:' face:'.        face storeOn:aStream.
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1445
    aStream nextPutAll:' style:'.       style storeOn:aStream.
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1446
    aStream nextPutAll:' size:'.        size storeOn:aStream.
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1447
    aStream nextPutAll:' encoding:'.    encoding storeOn:aStream.
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1448
    aStream nextPut:$)
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1449
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1450
    "
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1451
     (XftFontDescription family: 'DejaVu Sans' size: 8) storeString
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1452
    "
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1453
! !
dcc4f69ee8da class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6196
diff changeset
  1454
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1455
!XftFontDescription methodsFor:'queries-dimensions'!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1456
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1457
ascent
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1458
    "return the ascent - the number of pixels above the baseLine."
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1459
    ascent isNil ifTrue:[
6707
3f723be85a32 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6693
diff changeset
  1460
	ascent := self xftFontGetAscent: fontId
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1461
    ].
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1462
    ^ ascent
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1463
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1464
    "Created: / 21-12-2013 / 01:19:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1465
!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1466
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1467
descent
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1468
    "return the descent - the number of pixels below the baseLine."
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1469
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1470
    descent isNil ifTrue:[
6707
3f723be85a32 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6693
diff changeset
  1471
	 descent := self xftFontGetDescent: fontId
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1472
    ].
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1473
    ^ descent
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1474
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1475
    "Created: / 21-12-2013 / 01:20:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1476
!
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1477
6314
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1478
getFontMetrics
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1479
    |info|
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1480
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1481
    info := DeviceWorkstation::DeviceFontMetrics new.
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1482
    info
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1483
      ascent:self ascent
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1484
      descent:self descent
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1485
      maxAscent:self maxAscent
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1486
      maxDescent:self maxDescent
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1487
      minWidth:self maxWidth
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1488
      maxWidth:self maxWidth
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1489
      avgWidth:self maxWidth
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1490
      minCode:self minCode
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1491
      maxCode:self maxCode
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1492
      direction:#LeftToRight.
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1493
    ^ info
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1494
!
9dabc3489ff4 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6264
diff changeset
  1495
6543
f239f14e555b class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6542
diff changeset
  1496
getFontResolution
f239f14e555b class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6542
diff changeset
  1497
    device isNil ifTrue:[ ^ 72 @ 72 ].
f239f14e555b class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6542
diff changeset
  1498
    ^ device resolution
f239f14e555b class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6542
diff changeset
  1499
!
f239f14e555b class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6542
diff changeset
  1500
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1501
height
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1502
    "return the height - the number of pixels above plus below the baseLine."
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1503
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1504
    height isNil ifTrue:[
6707
3f723be85a32 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6693
diff changeset
  1505
	height := self xftFontGetHeight: fontId
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1506
    ].
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1507
    ^ height
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1508
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1509
    "Created: / 21-12-2013 / 01:20:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1510
!
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1511
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1512
isFixedWidth
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1513
    "return true, if this is a fixed pitch font (i.e. all characters
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1514
     are of the same width)"
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1515
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1516
    ^ false "/ How to check?
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1517
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1518
    "Created: / 21-12-2013 / 10:38:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1519
!
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1520
6186
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1521
maxAscent
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1522
    "return the fonts maximum-ascent (i.e. the maximum of all characters);
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1523
     That is the number of units (usually pixels) above the baseline."
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1524
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1525
    ^ self ascent
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1526
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1527
    "Created: / 30-12-2013 / 20:01:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1528
!
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1529
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1530
maxDescent
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1531
    "return the fonts maximum-descent (i.e. the maximum of all characters);
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1532
     That is the number of units (usually pixels) below the baseline."
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1533
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1534
    ^ self descent
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1535
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1536
    "Created: / 30-12-2013 / 20:01:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1537
!
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1538
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1539
maxWidth
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1540
    "return the fonts maximum-width character (i.e. the maximum of all characters);
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1541
     That is a number of units (usually pixels)."
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1542
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1543
    ^ self xftFontGetMaxAdvanceWidth: fontId
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1544
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1545
    "Created: / 30-12-2013 / 20:02:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1546
!
c8f36970419f Added missing & required methods. Since now, while St/X IDE could be switched to use XFT fonts.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6185
diff changeset
  1547
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1548
widthOf:aString from:start to:stop
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1549
    "return the width of a sub string"
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1550
6472
5b21ff383a12 Delegated gc stuff
Stefan Vogel <sv@exept.de>
parents: 6223
diff changeset
  1551
    |extents maxWidthOfSingleGlyph|
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1552
6187
cfe33a9940ee Memory/performance optimization - use stack-allocated XftColor.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6186
diff changeset
  1553
    (stop < start) ifTrue:[^ 0].
6472
5b21ff383a12 Delegated gc stuff
Stefan Vogel <sv@exept.de>
parents: 6223
diff changeset
  1554
    maxWidthOfSingleGlyph := self maxWidth.
5b21ff383a12 Delegated gc stuff
Stefan Vogel <sv@exept.de>
parents: 6223
diff changeset
  1555
    "xOff from XFTTextExtents is a signed short.
5b21ff383a12 Delegated gc stuff
Stefan Vogel <sv@exept.de>
parents: 6223
diff changeset
  1556
     Work arond for long strings"
5b21ff383a12 Delegated gc stuff
Stefan Vogel <sv@exept.de>
parents: 6223
diff changeset
  1557
    (stop - start + 1) * maxWidthOfSingleGlyph > 32767 ifTrue:[
6819
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1558
	|total chunkSize|
6472
5b21ff383a12 Delegated gc stuff
Stefan Vogel <sv@exept.de>
parents: 6223
diff changeset
  1559
6819
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1560
	chunkSize := (32767 // maxWidthOfSingleGlyph) - 1.
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1561
	total := 0.
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1562
	start to:stop by:chunkSize do:[:eachChunkStart|
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1563
	    extents := self xftTextExtents:device displayId font:fontId string:aString
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1564
			    from:eachChunkStart to:((eachChunkStart+chunkSize-1) min:stop).
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1565
	    "/ extents --> #(width height x y xOff yOff)
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1566
	    total := total + extents fifth.
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1567
	].
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1568
	^ total.
f91377f97414 Merged 1e33b4eeb725 and ee648b604f67 (branch default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6800 6712
diff changeset
  1569
    ].
6472
5b21ff383a12 Delegated gc stuff
Stefan Vogel <sv@exept.de>
parents: 6223
diff changeset
  1570
    extents := self xftTextExtents: device displayId font:fontId string:aString from:start to:stop.
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1571
    "/ extents --> #(width height x y xOff yOff)
6183
a21827076de1 Fix for bad layout and segfault when selecting whole line.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6182
diff changeset
  1572
    ^ extents fifth.
6182
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1573
8bf2372670d9 Fixes to make XftFontDescription>>example1 to render something. Sometimes it segfaults
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6180
diff changeset
  1574
    "Created: / 21-12-2013 / 10:42:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6183
a21827076de1 Fix for bad layout and segfault when selecting whole line.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6182
diff changeset
  1575
    "Modified: / 29-12-2013 / 21:16:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1576
! !
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1577
6200
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1578
!XftFontDescription methodsFor:'release'!
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1579
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1580
releaseDrawIfAssociatedWith: view
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1581
    | drawableId |
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1582
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1583
    view isNil ifTrue:[ ^ self ].
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1584
    drawableId := view id.
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1585
    drawableId isNil ifTrue: [ ^ self ].
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1586
%{
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1587
#ifdef XFT
6365
cf89c4bedea4 Instvar drawId renamed to sharedDrawId.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6356
diff changeset
  1588
    if ( __INST(sharedDrawId) != nil ) {
6393
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1589
	if (XftDrawDrawable(XFT_DRAW(__INST(sharedDrawId))) == DRAWABLE(drawableId)) {
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1590
	    __INST(sharedDrawId) = nil;
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1591
	    XftDrawDestroy(DRAWABLE(drawableId));
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1592
	}
6200
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1593
    }
6339
1a30e1d2232e class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6338
diff changeset
  1594
    RETURN (self);
6200
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1595
#endif
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1596
%}.
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1597
    self primitiveFailed
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1598
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1599
    "Created: / 12-01-2014 / 19:48:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1600
    "Modified: / 12-01-2014 / 22:09:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6344
ef33c29cbb0c class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6339
diff changeset
  1601
!
ef33c29cbb0c class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6339
diff changeset
  1602
ef33c29cbb0c class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6339
diff changeset
  1603
releaseFromDevice
ef33c29cbb0c class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6339
diff changeset
  1604
    "I am no longer available on the device"
ef33c29cbb0c class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6339
diff changeset
  1605
6946
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1606
    Lobby unregister:self.
7055
d16570f7beef #BUGFIX
Claus Gittinger <cg@exept.de>
parents: 7054
diff changeset
  1607
    "/ cg: no, xftDrawDestroy should not be done.
d16570f7beef #BUGFIX
Claus Gittinger <cg@exept.de>
parents: 7054
diff changeset
  1608
    "/ (releaseFromDevice is called when either the display connection
d16570f7beef #BUGFIX
Claus Gittinger <cg@exept.de>
parents: 7054
diff changeset
  1609
    "/ is lost, or a snapshot image is restarted)
d16570f7beef #BUGFIX
Claus Gittinger <cg@exept.de>
parents: 7054
diff changeset
  1610
    "/ self xftDrawDestroy.
6946
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1611
6344
ef33c29cbb0c class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6339
diff changeset
  1612
    device := nil.
ef33c29cbb0c class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6339
diff changeset
  1613
    fontId := nil.
6365
cf89c4bedea4 Instvar drawId renamed to sharedDrawId.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6356
diff changeset
  1614
    sharedDrawId := nil.
6946
5cdda72e59d9 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6938
diff changeset
  1615
    closestFont := nil.
6200
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1616
! !
8f0d25eec888 class: XftFontDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6199
diff changeset
  1617
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1618
!XftFontDescription methodsFor:'testing'!
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1619
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
  1620
isScaledFont
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
  1621
    "Xft fonts are always scaled"
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
  1622
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
  1623
    ^ true
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
  1624
!
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
  1625
6339
1a30e1d2232e class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6338
diff changeset
  1626
isUsed
6365
cf89c4bedea4 Instvar drawId renamed to sharedDrawId.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6356
diff changeset
  1627
    ^ sharedDrawId notNil
6339
1a30e1d2232e class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6338
diff changeset
  1628
!
1a30e1d2232e class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6338
diff changeset
  1629
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1630
isXftFont
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1631
    ^ true
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1632
! !
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1633
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1634
!XftFontDescription::FCFontListParser class methodsFor:'documentation'!
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1635
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1636
documentation
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1637
"
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1638
    parses fc-list output to get a list of XftFontDescriptions
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1639
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1640
    [author:]
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1641
	cg
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1642
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1643
    [instance variables:]
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1644
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1645
    [class variables:]
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1646
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1647
    [see also:]
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1648
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1649
"
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1650
! !
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1651
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1652
!XftFontDescription::FCFontListParser methodsFor:'api'!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1653
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1654
listOfAvailableFonts
6337
9bf102dba190 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6333
diff changeset
  1655
    |readEntry list l fcListProg|
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1656
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1657
    list := OrderedCollection new.
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1658
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1659
    readEntry :=
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1660
	[
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1661
	    |key|
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1662
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1663
	    [l startsWith:'Pattern has'] whileFalse:[
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1664
	      l := pipeStream nextLine. Transcript showCR:l.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1665
	    ].
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1666
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1667
	    currentDescription := XftFontDescription new.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1668
	    [ l := pipeStream nextLine. l notEmptyOrNil ] whileTrue:[
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1669
		"/ Transcript showCR:l.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1670
		lineStream := l readStream. lineStream skipSeparators.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1671
		key := lineStream upToSeparator.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1672
		(
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1673
		    #('family:' 'style:' 'slant:' 'weight:' 'width:'
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1674
		      'pixelsize:' 'spacing:' 'foundry:' 'antialias:'
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1675
		      'file:' 'outline' 'scalable:' 'charset:' 'lang:'
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1676
		      'fontversion:' 'fontformat:' 'decorative:' 'index:'
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1677
		      'outline:' 'familylang:' 'stylelang:' 'fullname:'
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1678
		      'fullnamelang:' 'capability:' 'hash:' 'postscriptname:'
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1679
		    ) includes:key
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1680
		) ifTrue:[
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1681
		    self perform:('fc_',(key allButLast)) asSymbol
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1682
		] ifFalse:[
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1683
		    Transcript show:'Xft ignored line: '; showCR:l.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1684
		    self breakPoint:#cg.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1685
		].
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1686
	    ].
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1687
	    list add:currentDescription
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1688
	].
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1689
6337
9bf102dba190 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6333
diff changeset
  1690
    fcListProg := #('/usr/bin/fc-list' '/usr/X11/bin/fc-list') detect:[:eachProg|
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1691
			eachProg asFilename isExecutableProgram
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1692
		    ] ifNone:[
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1693
			'XftFontDescription [warning]: fc-list program not found - no XFT fonts' errorPrintCR.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1694
			^ list.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1695
		    ].
6337
9bf102dba190 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6333
diff changeset
  1696
9bf102dba190 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6333
diff changeset
  1697
    pipeStream := PipeStream readingFrom:fcListProg, ' -v'.
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1698
    [
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1699
	[pipeStream atEnd] whileFalse:[
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1700
	    l := pipeStream nextLine.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1701
	    readEntry value.
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1702
	]
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1703
    ] ensure:[
6656
830e1f335aca class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6631
diff changeset
  1704
	pipeStream close
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1705
    ].
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1706
    ^ list
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1707
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1708
    "
6337
9bf102dba190 class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6333
diff changeset
  1709
     FCFontListParser new listOfAvailableFonts
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1710
    "
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1711
! !
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1712
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1713
!XftFontDescription::FCFontListParser methodsFor:'font list keywords'!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1714
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1715
fc_antialias
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1716
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1717
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1718
    currentDescription isAntialiasedFont:(self getBoolean).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1719
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1720
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1721
fc_capability
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1722
    "helper for font listing"
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1723
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1724
    "currentDescription capability:" (self getString).
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1725
!
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1726
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1727
fc_charset
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1728
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1729
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1730
    |page bits l min max minCode maxCode|
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1731
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1732
    [ l := pipeStream nextLine. l notEmpty ] whileTrue:[
6393
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1733
	"/ Transcript show:'->'; showCR:l.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1734
	(l startsWith:Character tab) ifFalse:[
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1735
	    (l startsWith:'(') ifFalse:[self halt].
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1736
	    currentDescription minCode:minCode.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1737
	    currentDescription maxCode:maxCode.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1738
	    ^ self.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1739
	].
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1740
6393
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1741
	lineStream := l readStream.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1742
	lineStream skipSeparators.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1743
	page := Integer readFrom:(lineStream upTo:$:) radix:16.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1744
	lineStream next.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1745
	bits := 0 to:7 collect:[:i|
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1746
	    lineStream skipSeparators.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1747
	    Integer readFrom:(lineStream upToSeparator) radix:16.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1748
	].
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1749
	min := (page * 256 + 0).
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1750
	max := (page * 256 + 255).
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1751
	minCode isNil ifTrue:[
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1752
	    minCode := min.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1753
	    maxCode := max.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1754
	] ifFalse:[
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1755
	    minCode := minCode min:min.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1756
	    maxCode := maxCode max:max.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1757
	].
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1758
    ].
6365
cf89c4bedea4 Instvar drawId renamed to sharedDrawId.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6356
diff changeset
  1759
    "/ currentDescription characterSet:(self getString).
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1760
    currentDescription minCode:minCode.
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1761
    currentDescription maxCode:maxCode.
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1762
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1763
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1764
fc_decorative
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1765
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1766
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1767
    currentDescription isDecorativeFont:(self getBoolean).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1768
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1769
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1770
fc_family
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1771
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1772
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1773
    currentDescription family:(self getString).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1774
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1775
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1776
fc_familylang
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1777
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1778
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1779
    "currentDescription familylang:" (self getString).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1780
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1781
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1782
fc_file
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1783
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1784
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1785
    currentDescription file:(self getString).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1786
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1787
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1788
fc_fontformat
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1789
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1790
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1791
    currentDescription fontFormat:(self getString).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1792
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1793
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1794
fc_fontversion
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1795
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1796
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1797
    currentDescription fontVersion:(self getInteger).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1798
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1799
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1800
fc_foundry
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1801
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1802
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1803
    currentDescription foundry:(self getString).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1804
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1805
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1806
fc_fullname
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1807
    "helper for font listing"
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1808
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1809
    "currentDescription fullname:" (self getString).
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1810
!
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1811
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1812
fc_fullnamelang
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1813
    "helper for font listing"
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1814
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1815
    "currentDescription fullnamelang:" (self getString).
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1816
!
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1817
6338
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1818
fc_hash
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1819
    "helper for font listing"
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1820
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1821
    "currentDescription hash:" self getString.
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1822
!
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1823
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1824
fc_index
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1825
    "helper for font listing"
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1826
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1827
    "currentDescription index:" (self getInteger).
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1828
!
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1829
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1830
fc_lang
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1831
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1832
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1833
    "/ currentDescription characterSet:(self getString).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1834
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1835
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1836
fc_outline
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1837
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1838
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1839
    currentDescription isOutlineFont:(self getBoolean).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1840
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1841
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1842
fc_pixelsize
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1843
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1844
6325
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
  1845
    currentDescription setPixelSize:(self getInteger).
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
  1846
    currentDescription setSizeUnit:#px.
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
  1847
    "/ currentDescription setSize:(self getInteger).
5e52a295d119 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6324
diff changeset
  1848
    "/ currentDescription setSizeUnit:#pt.
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1849
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1850
6338
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1851
fc_postscriptname
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1852
    "helper for font listing"
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1853
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1854
    "currentDescription postscriptname:" self getString.
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1855
!
ba2fc2dcec5d class: XftFontDescription
Stefan Vogel <sv@exept.de>
parents: 6337
diff changeset
  1856
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1857
fc_scalable
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1858
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1859
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1860
    currentDescription isScalableFont:(self getBoolean).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1861
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1862
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1863
fc_slant
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1864
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1865
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1866
    currentDescription slant:(self getInteger).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1867
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1868
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1869
fc_spacing
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1870
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1871
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1872
    currentDescription spacing:(self getInteger).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1873
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1874
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1875
fc_style
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1876
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1877
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1878
    |xftStyle|
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1879
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1880
    xftStyle := self getString.
6391
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1881
"/    ((xftStyle includesString:'Bold') or:[xftStyle includesString:'Fett']) ifTrue:[
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1882
"/        currentDescription face:'bold'.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1883
"/        currentDescription style:'roman'.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1884
"/        ^ self.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1885
"/    ].
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1886
    ((xftStyle includesString:'Italic') or:[xftStyle includesString:'Oblique']) ifTrue:[
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1887
"/        currentDescription face:'medium'.
6393
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1888
	currentDescription style:'italic'.
cca8bffee09b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6392
diff changeset
  1889
	^ self.
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1890
    ].
6391
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1891
"/    (xftStyle includesString:'Regular') ifTrue:[
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1892
"/        currentDescription face:'regular'.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1893
"/        currentDescription style:'roman'.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1894
"/        ^ self.
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1895
"/    ].
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1896
"/ self halt.
6391
21a80292d9f3 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6389
diff changeset
  1897
"/    currentDescription face:'medium'.
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1898
    currentDescription style:'roman'.
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1899
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1900
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1901
fc_stylelang
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1902
    "helper for font listing"
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1903
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1904
    "currentDescription stylelang:" (self getString).
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1905
!
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1906
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1907
fc_weight
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1908
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1909
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1910
    currentDescription weight:(self getInteger).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1911
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1912
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1913
fc_width
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1914
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1915
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1916
    currentDescription width:(self getInteger).
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1917
! !
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1918
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1919
!XftFontDescription::FCFontListParser methodsFor:'helpers'!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1920
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1921
getBoolean
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1922
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1923
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1924
    |s|
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1925
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1926
    lineStream skipSeparators.
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1927
    s := lineStream nextAlphaNumericWord.
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1928
    ^ s = 'FcTrue'.
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1929
!
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1930
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1931
getInteger
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1932
    "helper for font listing"
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1933
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1934
    lineStream skipSeparators.
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1935
    ^ Integer readFrom:lineStream.
6264
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1936
!
65140bb31698 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6263
diff changeset
  1937
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1938
getString
6263
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1939
    "helper for font listing"
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1940
01453c167d49 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6255
diff changeset
  1941
    lineStream skipSeparators.
6319
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1942
    lineStream peekFor:$".
9402c8781f21 class: XftFontDescription
Claus Gittinger <cg@exept.de>
parents: 6317
diff changeset
  1943
    ^ (lineStream upTo:$").
7114
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
  1944
! !
abb097ba7853 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7103
diff changeset
  1945
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1946
!XftFontDescription class methodsFor:'documentation'!
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1947
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1948
version
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
  1949
    ^ '$Header$'
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1950
!
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1951
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1952
version_CVS
6936
1d258b6b9632 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 6876
diff changeset
  1953
    ^ '$Header$'
6821
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
  1954
!
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
  1955
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
  1956
version_HG
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
  1957
0e2fb9a04314 Added XftFontDescription class>>named: and corresponding primitived (XftNameParse())
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6819
diff changeset
  1958
    ^ '$Changeset: <not expanded> $'
6176
9d9d7b5c33f4 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
  1959
! !
6180
6034bf4c5022 More work on XftFontDescription.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6179
diff changeset
  1960
6184
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
  1961
997414d312b5 Fixed font lookup to take face (aka weight) and style (aka slant) into an account).
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6183
diff changeset
  1962
XftFontDescription initialize!