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