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