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