]> gitweb.factorcode.org Git - factor.git/blob - extra/freetype/freetype.factor
10a2d28dd3354406d8d58c14721a751ac3cd13ae
[factor.git] / extra / freetype / freetype.factor
1 ! Copyright (C) 2005, 2007 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.syntax kernel system combinators
4 alien.libraries classes.struct ;
5 IN: freetype
6
7 << "freetype" {
8     { [ os macosx? ] [ "/usr/X11R6/lib/libfreetype.6.dylib" cdecl add-library ] }
9     { [ os windows? ] [ "freetype6.dll" cdecl add-library ] }
10     { [ t ] [ drop ] }
11 } cond >>
12
13 LIBRARY: freetype
14
15 TYPEDEF: uchar FT_Byte
16 TYPEDEF: void* FT_Bytes
17 TYPEDEF: char FT_Char
18 TYPEDEF: int FT_Int
19 TYPEDEF: int FT_Int32
20 TYPEDEF: uint FT_UInt
21 TYPEDEF: short FT_Short
22 TYPEDEF: ushort FT_UShort
23 TYPEDEF: long FT_Long
24 TYPEDEF: ulong FT_ULong
25 TYPEDEF: uchar FT_Bool
26 TYPEDEF: ulong FT_Offset
27 TYPEDEF: int FT_PtrDist
28 TYPEDEF: char FT_String
29 TYPEDEF: int FT_Tag
30 TYPEDEF: int FT_Error
31 TYPEDEF: long FT_Fixed
32 TYPEDEF: void* FT_Pointer
33 TYPEDEF: long FT_Pos
34 TYPEDEF: ushort FT_UFWord
35 TYPEDEF: short FT_F2Dot14
36 TYPEDEF: long FT_F26Dot6
37
38 FUNCTION: FT_Error FT_Init_FreeType ( void* library ) ;
39
40 ! circular reference between glyph and face
41 C-TYPE: face
42 C-TYPE: glyph
43
44 STRUCT: glyph
45     { library void* }
46     { face face* }
47     { next glyph* }
48     { reserved FT_UInt }
49     { generic void* }
50     { generic2 void* }
51
52     { width FT_Pos }
53     { height FT_Pos }
54
55     { hori-bearing-x FT_Pos }
56     { hori-bearing-y FT_Pos }
57     { hori-advance FT_Pos }
58
59     { vert-bearing-x FT_Pos }
60     { vert-bearing-y FT_Pos }
61     { vert-advance FT_Pos }
62
63     { linear-hori-advance FT_Fixed }
64     { linear-vert-advance FT_Fixed }
65     { advance-x FT_Pos }
66     { advance-y FT_Pos }
67
68     { format intptr_t }
69
70     { bitmap-rows int }
71     { bitmap-width int }
72     { bitmap-pitch int }
73     { bitmap-buffer void* }
74     { bitmap-num-grays short }
75     { bitmap-pixel-mode char }
76     { bitmap-palette-mode char }
77     { bitmap-palette void* }
78
79     { bitmap-left FT_Int }
80     { bitmap-top FT_Int }
81
82     { n-contours short }
83     { n-points short }
84
85     { points void* }
86     { tags c-string }
87     { contours short* }
88
89     { outline-flags int }
90
91     { num_subglyphs FT_UInt }
92     { subglyphs void* }
93
94     { control-data void* }
95     { control-len long }
96
97     { lsb-delta FT_Pos }
98     { rsb-delta FT_Pos }
99
100     { other void* } ;
101
102 STRUCT: face-size
103     { face face* }
104     { generic void* }
105     { generic2 void* }
106
107     { x-ppem FT_UShort }
108     { y-ppem FT_UShort }
109
110     { x-scale FT_Fixed }
111     { y-scale FT_Fixed }
112
113     { ascender FT_Pos }
114     { descender FT_Pos }
115     { height FT_Pos }
116     { max-advance FT_Pos } ;
117
118 STRUCT: face
119     { num-faces FT_Long }
120     { index FT_Long }
121
122     { flags FT_Long }
123     { style-flags FT_Long }
124
125     { num-glyphs FT_Long }
126
127     { family-name FT_Char* }
128     { style-name FT_Char* }
129
130     { num-fixed-sizes FT_Int }
131     { available-sizes void* }
132
133     { num-charmaps FT_Int }
134     { charmaps void* }
135
136     { generic void* }
137     { generic2 void* }
138
139     { x-min FT_Pos }
140     { y-min FT_Pos }
141     { x-max FT_Pos }
142     { y-max FT_Pos }
143
144     { units-per-em FT_UShort }
145     { ascender FT_Short }
146     { descender FT_Short }
147     { height FT_Short }
148
149     { max-advance-width FT_Short }
150     { max-advance-height FT_Short }
151
152     { underline-position FT_Short }
153     { underline-thickness FT_Short }
154
155     { glyph glyph* }
156     { size face-size* }
157     { charmap void* } ;
158
159 STRUCT: FT_Bitmap
160     { rows int }
161     { width int }
162     { pitch int }
163     { buffer void* }
164     { num_grays short }
165     { pixel_mode char }
166     { palette_mode char }
167     { palette void* } ;
168
169 C-TYPE: FT_Face
170
171 FUNCTION: FT_Error FT_New_Face ( void* library, FT_Char* font, FT_Long index, face* face ) ;
172
173 FUNCTION: FT_Error FT_New_Memory_Face ( void* library, FT_Byte* file_base, FT_Long file_size, FT_Long face_index, FT_Face* aface ) ;
174
175 FUNCTION: FT_Error FT_Set_Char_Size ( face* face, FT_F26Dot6 char_width, FT_F26Dot6 char_height, FT_UInt horizontal_dpi, FT_UInt vertical_dpi ) ;
176
177 FUNCTION: FT_Error FT_Load_Char ( face* face, FT_ULong charcode, FT_Int32 load_flags ) ;
178
179 ENUM: f
180     FT_RENDER_MODE_NORMAL
181     FT_RENDER_MODE_LIGHT
182     FT_RENDER_MODE_MONO
183     FT_RENDER_MODE_LCD
184     FT_RENDER_MODE_LCD_V ;
185
186 ENUM: f
187     FT_PIXEL_MODE_NONE
188     FT_PIXEL_MODE_MONO
189     FT_PIXEL_MODE_GRAY
190     FT_PIXEL_MODE_GRAY2
191     FT_PIXEL_MODE_GRAY4
192     FT_PIXEL_MODE_LCD
193     FT_PIXEL_MODE_LCD_V ;
194
195 FUNCTION: int FT_Render_Glyph ( glyph* slot, int render_mode ) ;
196
197 FUNCTION: void FT_Done_Face ( face* face ) ;
198
199 FUNCTION: void FT_Done_FreeType ( void* library ) ;
200
201 FUNCTION: FT_Long FT_MulFix ( FT_Long a, FT_Long b ) ;
202