1/***************************************************************************/
2/* */
3/* ftheader.h */
4/* */
5/* Build macros of the FreeType 2 library. */
6/* */
7/* Copyright 1996-2008, 2010, 2012, 2013 by */
8/* David Turner, Robert Wilhelm, and Werner Lemberg. */
9/* */
10/* This file is part of the FreeType project, and may only be used, */
11/* modified, and distributed under the terms of the FreeType project */
12/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13/* this file you indicate that you have read the license and */
14/* understand and accept it fully. */
15/* */
16/***************************************************************************/
17
18#ifndef __FT_HEADER_H__
19#define __FT_HEADER_H__
20
21
22 /*@***********************************************************************/
23 /* */
24 /* <Macro> */
25 /* FT_BEGIN_HEADER */
26 /* */
27 /* <Description> */
28 /* This macro is used in association with @FT_END_HEADER in header */
29 /* files to ensure that the declarations within are properly */
30 /* encapsulated in an `extern "C" { .. }' block when included from a */
31 /* C++ compiler. */
32 /* */
33#ifdef __cplusplus
34#define FT_BEGIN_HEADER extern "C" {
35#else
36#define FT_BEGIN_HEADER /* nothing */
37#endif
38
39
40 /*@***********************************************************************/
41 /* */
42 /* <Macro> */
43 /* FT_END_HEADER */
44 /* */
45 /* <Description> */
46 /* This macro is used in association with @FT_BEGIN_HEADER in header */
47 /* files to ensure that the declarations within are properly */
48 /* encapsulated in an `extern "C" { .. }' block when included from a */
49 /* C++ compiler. */
50 /* */
51#ifdef __cplusplus
52#define FT_END_HEADER }
53#else
54#define FT_END_HEADER /* nothing */
55#endif
56
57
58 /*************************************************************************/
59 /* */
60 /* Aliases for the FreeType 2 public and configuration files. */
61 /* */
62 /*************************************************************************/
63
64 /*************************************************************************/
65 /* */
66 /* <Section> */
67 /* header_file_macros */
68 /* */
69 /* <Title> */
70 /* Header File Macros */
71 /* */
72 /* <Abstract> */
73 /* Macro definitions used to #include specific header files. */
74 /* */
75 /* <Description> */
76 /* The following macros are defined to the name of specific */
77 /* FreeType~2 header files. They can be used directly in #include */
78 /* statements as in: */
79 /* */
80 /* { */
81 /* #include FT_FREETYPE_H */
82 /* #include FT_MULTIPLE_MASTERS_H */
83 /* #include FT_GLYPH_H */
84 /* } */
85 /* */
86 /* There are several reasons why we are now using macros to name */
87 /* public header files. The first one is that such macros are not */
88 /* limited to the infamous 8.3~naming rule required by DOS (and */
89 /* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */
90 /* */
91 /* The second reason is that it allows for more flexibility in the */
92 /* way FreeType~2 is installed on a given system. */
93 /* */
94 /*************************************************************************/
95
96
97 /* configuration files */
98
99 /*************************************************************************
100 *
101 * @macro:
102 * FT_CONFIG_CONFIG_H
103 *
104 * @description:
105 * A macro used in #include statements to name the file containing
106 * FreeType~2 configuration data.
107 *
108 */
109#ifndef FT_CONFIG_CONFIG_H
110#define FT_CONFIG_CONFIG_H <config/ftconfig.h>
111#endif
112
113
114 /*************************************************************************
115 *
116 * @macro:
117 * FT_CONFIG_STANDARD_LIBRARY_H
118 *
119 * @description:
120 * A macro used in #include statements to name the file containing
121 * FreeType~2 interface to the standard C library functions.
122 *
123 */
124#ifndef FT_CONFIG_STANDARD_LIBRARY_H
125#define FT_CONFIG_STANDARD_LIBRARY_H <config/ftstdlib.h>
126#endif
127
128
129 /*************************************************************************
130 *
131 * @macro:
132 * FT_CONFIG_OPTIONS_H
133 *
134 * @description:
135 * A macro used in #include statements to name the file containing
136 * FreeType~2 project-specific configuration options.
137 *
138 */
139#ifndef FT_CONFIG_OPTIONS_H
140#define FT_CONFIG_OPTIONS_H <config/ftoption.h>
141#endif
142
143
144 /*************************************************************************
145 *
146 * @macro:
147 * FT_CONFIG_MODULES_H
148 *
149 * @description:
150 * A macro used in #include statements to name the file containing the
151 * list of FreeType~2 modules that are statically linked to new library
152 * instances in @FT_Init_FreeType.
153 *
154 */
155#ifndef FT_CONFIG_MODULES_H
156#define FT_CONFIG_MODULES_H <config/ftmodule.h>
157#endif
158
159 /* */
160
161 /* public headers */
162
163 /*************************************************************************
164 *
165 * @macro:
166 * FT_FREETYPE_H
167 *
168 * @description:
169 * A macro used in #include statements to name the file containing the
170 * base FreeType~2 API.
171 *
172 */
173#define FT_FREETYPE_H <freetype.h>
174
175
176 /*************************************************************************
177 *
178 * @macro:
179 * FT_ERRORS_H
180 *
181 * @description:
182 * A macro used in #include statements to name the file containing the
183 * list of FreeType~2 error codes (and messages).
184 *
185 * It is included by @FT_FREETYPE_H.
186 *
187 */
188#define FT_ERRORS_H <fterrors.h>
189
190
191 /*************************************************************************
192 *
193 * @macro:
194 * FT_MODULE_ERRORS_H
195 *
196 * @description:
197 * A macro used in #include statements to name the file containing the
198 * list of FreeType~2 module error offsets (and messages).
199 *
200 */
201#define FT_MODULE_ERRORS_H <ftmoderr.h>
202
203
204 /*************************************************************************
205 *
206 * @macro:
207 * FT_SYSTEM_H
208 *
209 * @description:
210 * A macro used in #include statements to name the file containing the
211 * FreeType~2 interface to low-level operations (i.e., memory management
212 * and stream i/o).
213 *
214 * It is included by @FT_FREETYPE_H.
215 *
216 */
217#define FT_SYSTEM_H <ftsystem.h>
218
219
220 /*************************************************************************
221 *
222 * @macro:
223 * FT_IMAGE_H
224 *
225 * @description:
226 * A macro used in #include statements to name the file containing type
227 * definitions related to glyph images (i.e., bitmaps, outlines,
228 * scan-converter parameters).
229 *
230 * It is included by @FT_FREETYPE_H.
231 *
232 */
233#define FT_IMAGE_H <ftimage.h>
234
235
236 /*************************************************************************
237 *
238 * @macro:
239 * FT_TYPES_H
240 *
241 * @description:
242 * A macro used in #include statements to name the file containing the
243 * basic data types defined by FreeType~2.
244 *
245 * It is included by @FT_FREETYPE_H.
246 *
247 */
248#define FT_TYPES_H <fttypes.h>
249
250
251 /*************************************************************************
252 *
253 * @macro:
254 * FT_LIST_H
255 *
256 * @description:
257 * A macro used in #include statements to name the file containing the
258 * list management API of FreeType~2.
259 *
260 * (Most applications will never need to include this file.)
261 *
262 */
263#define FT_LIST_H <ftlist.h>
264
265
266 /*************************************************************************
267 *
268 * @macro:
269 * FT_OUTLINE_H
270 *
271 * @description:
272 * A macro used in #include statements to name the file containing the
273 * scalable outline management API of FreeType~2.
274 *
275 */
276#define FT_OUTLINE_H <ftoutln.h>
277
278
279 /*************************************************************************
280 *
281 * @macro:
282 * FT_SIZES_H
283 *
284 * @description:
285 * A macro used in #include statements to name the file containing the
286 * API which manages multiple @FT_Size objects per face.
287 *
288 */
289#define FT_SIZES_H <ftsizes.h>
290
291
292 /*************************************************************************
293 *
294 * @macro:
295 * FT_MODULE_H
296 *
297 * @description:
298 * A macro used in #include statements to name the file containing the
299 * module management API of FreeType~2.
300 *
301 */
302#define FT_MODULE_H <ftmodapi.h>
303
304
305 /*************************************************************************
306 *
307 * @macro:
308 * FT_RENDER_H
309 *
310 * @description:
311 * A macro used in #include statements to name the file containing the
312 * renderer module management API of FreeType~2.
313 *
314 */
315#define FT_RENDER_H <ftrender.h>
316
317
318 /*************************************************************************
319 *
320 * @macro:
321 * FT_AUTOHINTER_H
322 *
323 * @description:
324 * A macro used in #include statements to name the file containing
325 * structures and macros related to the auto-hinting module.
326 *
327 */
328#define FT_AUTOHINTER_H <ftautoh.h>
329
330
331 /*************************************************************************
332 *
333 * @macro:
334 * FT_CFF_DRIVER_H
335 *
336 * @description:
337 * A macro used in #include statements to name the file containing
338 * structures and macros related to the CFF driver module.
339 *
340 */
341#define FT_CFF_DRIVER_H <ftcffdrv.h>
342
343
344 /*************************************************************************
345 *
346 * @macro:
347 * FT_TRUETYPE_DRIVER_H
348 *
349 * @description:
350 * A macro used in #include statements to name the file containing
351 * structures and macros related to the TrueType driver module.
352 *
353 */
354#define FT_TRUETYPE_DRIVER_H <ftttdrv.h>
355
356
357 /*************************************************************************
358 *
359 * @macro:
360 * FT_TYPE1_TABLES_H
361 *
362 * @description:
363 * A macro used in #include statements to name the file containing the
364 * types and API specific to the Type~1 format.
365 *
366 */
367#define FT_TYPE1_TABLES_H <t1tables.h>
368
369
370 /*************************************************************************
371 *
372 * @macro:
373 * FT_TRUETYPE_IDS_H
374 *
375 * @description:
376 * A macro used in #include statements to name the file containing the
377 * enumeration values which identify name strings, languages, encodings,
378 * etc. This file really contains a _large_ set of constant macro
379 * definitions, taken from the TrueType and OpenType specifications.
380 *
381 */
382#define FT_TRUETYPE_IDS_H <ttnameid.h>
383
384
385 /*************************************************************************
386 *
387 * @macro:
388 * FT_TRUETYPE_TABLES_H
389 *
390 * @description:
391 * A macro used in #include statements to name the file containing the
392 * types and API specific to the TrueType (as well as OpenType) format.
393 *
394 */
395#define FT_TRUETYPE_TABLES_H <tttables.h>
396
397
398 /*************************************************************************
399 *
400 * @macro:
401 * FT_TRUETYPE_TAGS_H
402 *
403 * @description:
404 * A macro used in #include statements to name the file containing the
405 * definitions of TrueType four-byte `tags' which identify blocks in
406 * SFNT-based font formats (i.e., TrueType and OpenType).
407 *
408 */
409#define FT_TRUETYPE_TAGS_H <tttags.h>
410
411
412 /*************************************************************************
413 *
414 * @macro:
415 * FT_BDF_H
416 *
417 * @description:
418 * A macro used in #include statements to name the file containing the
419 * definitions of an API which accesses BDF-specific strings from a
420 * face.
421 *
422 */
423#define FT_BDF_H <ftbdf.h>
424
425
426 /*************************************************************************
427 *
428 * @macro:
429 * FT_CID_H
430 *
431 * @description:
432 * A macro used in #include statements to name the file containing the
433 * definitions of an API which access CID font information from a
434 * face.
435 *
436 */
437#define FT_CID_H <ftcid.h>
438
439
440 /*************************************************************************
441 *
442 * @macro:
443 * FT_GZIP_H
444 *
445 * @description:
446 * A macro used in #include statements to name the file containing the
447 * definitions of an API which supports gzip-compressed files.
448 *
449 */
450#define FT_GZIP_H <ftgzip.h>
451
452
453 /*************************************************************************
454 *
455 * @macro:
456 * FT_LZW_H
457 *
458 * @description:
459 * A macro used in #include statements to name the file containing the
460 * definitions of an API which supports LZW-compressed files.
461 *
462 */
463#define FT_LZW_H <ftlzw.h>
464
465
466 /*************************************************************************
467 *
468 * @macro:
469 * FT_BZIP2_H
470 *
471 * @description:
472 * A macro used in #include statements to name the file containing the
473 * definitions of an API which supports bzip2-compressed files.
474 *
475 */
476#define FT_BZIP2_H <ftbzip2.h>
477
478
479 /*************************************************************************
480 *
481 * @macro:
482 * FT_WINFONTS_H
483 *
484 * @description:
485 * A macro used in #include statements to name the file containing the
486 * definitions of an API which supports Windows FNT files.
487 *
488 */
489#define FT_WINFONTS_H <ftwinfnt.h>
490
491
492 /*************************************************************************
493 *
494 * @macro:
495 * FT_GLYPH_H
496 *
497 * @description:
498 * A macro used in #include statements to name the file containing the
499 * API of the optional glyph management component.
500 *
501 */
502#define FT_GLYPH_H <ftglyph.h>
503
504
505 /*************************************************************************
506 *
507 * @macro:
508 * FT_BITMAP_H
509 *
510 * @description:
511 * A macro used in #include statements to name the file containing the
512 * API of the optional bitmap conversion component.
513 *
514 */
515#define FT_BITMAP_H <ftbitmap.h>
516
517
518 /*************************************************************************
519 *
520 * @macro:
521 * FT_BBOX_H
522 *
523 * @description:
524 * A macro used in #include statements to name the file containing the
525 * API of the optional exact bounding box computation routines.
526 *
527 */
528#define FT_BBOX_H <ftbbox.h>
529
530
531 /*************************************************************************
532 *
533 * @macro:
534 * FT_CACHE_H
535 *
536 * @description:
537 * A macro used in #include statements to name the file containing the
538 * API of the optional FreeType~2 cache sub-system.
539 *
540 */
541#define FT_CACHE_H <ftcache.h>
542
543
544 /*************************************************************************
545 *
546 * @macro:
547 * FT_CACHE_IMAGE_H
548 *
549 * @description:
550 * A macro used in #include statements to name the file containing the
551 * `glyph image' API of the FreeType~2 cache sub-system.
552 *
553 * It is used to define a cache for @FT_Glyph elements. You can also
554 * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to
555 * store small glyph bitmaps, as it will use less memory.
556 *
557 * This macro is deprecated. Simply include @FT_CACHE_H to have all
558 * glyph image-related cache declarations.
559 *
560 */
561#define FT_CACHE_IMAGE_H FT_CACHE_H
562
563
564 /*************************************************************************
565 *
566 * @macro:
567 * FT_CACHE_SMALL_BITMAPS_H
568 *
569 * @description:
570 * A macro used in #include statements to name the file containing the
571 * `small bitmaps' API of the FreeType~2 cache sub-system.
572 *
573 * It is used to define a cache for small glyph bitmaps in a relatively
574 * memory-efficient way. You can also use the API defined in
575 * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images,
576 * including scalable outlines.
577 *
578 * This macro is deprecated. Simply include @FT_CACHE_H to have all
579 * small bitmaps-related cache declarations.
580 *
581 */
582#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H
583
584
585 /*************************************************************************
586 *
587 * @macro:
588 * FT_CACHE_CHARMAP_H
589 *
590 * @description:
591 * A macro used in #include statements to name the file containing the
592 * `charmap' API of the FreeType~2 cache sub-system.
593 *
594 * This macro is deprecated. Simply include @FT_CACHE_H to have all
595 * charmap-based cache declarations.
596 *
597 */
598#define FT_CACHE_CHARMAP_H FT_CACHE_H
599
600
601 /*************************************************************************
602 *
603 * @macro:
604 * FT_MAC_H
605 *
606 * @description:
607 * A macro used in #include statements to name the file containing the
608 * Macintosh-specific FreeType~2 API. The latter is used to access
609 * fonts embedded in resource forks.
610 *
611 * This header file must be explicitly included by client applications
612 * compiled on the Mac (note that the base API still works though).
613 *
614 */
615#define FT_MAC_H <ftmac.h>
616
617
618 /*************************************************************************
619 *
620 * @macro:
621 * FT_MULTIPLE_MASTERS_H
622 *
623 * @description:
624 * A macro used in #include statements to name the file containing the
625 * optional multiple-masters management API of FreeType~2.
626 *
627 */
628#define FT_MULTIPLE_MASTERS_H <ftmm.h>
629
630
631 /*************************************************************************
632 *
633 * @macro:
634 * FT_SFNT_NAMES_H
635 *
636 * @description:
637 * A macro used in #include statements to name the file containing the
638 * optional FreeType~2 API which accesses embedded `name' strings in
639 * SFNT-based font formats (i.e., TrueType and OpenType).
640 *
641 */
642#define FT_SFNT_NAMES_H <ftsnames.h>
643
644
645 /*************************************************************************
646 *
647 * @macro:
648 * FT_OPENTYPE_VALIDATE_H
649 *
650 * @description:
651 * A macro used in #include statements to name the file containing the
652 * optional FreeType~2 API which validates OpenType tables (BASE, GDEF,
653 * GPOS, GSUB, JSTF).
654 *
655 */
656#define FT_OPENTYPE_VALIDATE_H <ftotval.h>
657
658
659 /*************************************************************************
660 *
661 * @macro:
662 * FT_GX_VALIDATE_H
663 *
664 * @description:
665 * A macro used in #include statements to name the file containing the
666 * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat,
667 * mort, morx, bsln, just, kern, opbd, trak, prop).
668 *
669 */
670#define FT_GX_VALIDATE_H <ftgxval.h>
671
672
673 /*************************************************************************
674 *
675 * @macro:
676 * FT_PFR_H
677 *
678 * @description:
679 * A macro used in #include statements to name the file containing the
680 * FreeType~2 API which accesses PFR-specific data.
681 *
682 */
683#define FT_PFR_H <ftpfr.h>
684
685
686 /*************************************************************************
687 *
688 * @macro:
689 * FT_STROKER_H
690 *
691 * @description:
692 * A macro used in #include statements to name the file containing the
693 * FreeType~2 API which provides functions to stroke outline paths.
694 */
695#define FT_STROKER_H <ftstroke.h>
696
697
698 /*************************************************************************
699 *
700 * @macro:
701 * FT_SYNTHESIS_H
702 *
703 * @description:
704 * A macro used in #include statements to name the file containing the
705 * FreeType~2 API which performs artificial obliquing and emboldening.
706 */
707#define FT_SYNTHESIS_H <ftsynth.h>
708
709
710 /*************************************************************************
711 *
712 * @macro:
713 * FT_XFREE86_H
714 *
715 * @description:
716 * A macro used in #include statements to name the file containing the
717 * FreeType~2 API which provides functions specific to the XFree86 and
718 * X.Org X11 servers.
719 */
720#define FT_XFREE86_H <ftxf86.h>
721
722
723 /*************************************************************************
724 *
725 * @macro:
726 * FT_TRIGONOMETRY_H
727 *
728 * @description:
729 * A macro used in #include statements to name the file containing the
730 * FreeType~2 API which performs trigonometric computations (e.g.,
731 * cosines and arc tangents).
732 */
733#define FT_TRIGONOMETRY_H <fttrigon.h>
734
735
736 /*************************************************************************
737 *
738 * @macro:
739 * FT_LCD_FILTER_H
740 *
741 * @description:
742 * A macro used in #include statements to name the file containing the
743 * FreeType~2 API which performs color filtering for subpixel rendering.
744 */
745#define FT_LCD_FILTER_H <ftlcdfil.h>
746
747
748 /*************************************************************************
749 *
750 * @macro:
751 * FT_UNPATENTED_HINTING_H
752 *
753 * @description:
754 * A macro used in #include statements to name the file containing the
755 * FreeType~2 API which performs color filtering for subpixel rendering.
756 */
757#define FT_UNPATENTED_HINTING_H <ttunpat.h>
758
759
760 /*************************************************************************
761 *
762 * @macro:
763 * FT_INCREMENTAL_H
764 *
765 * @description:
766 * A macro used in #include statements to name the file containing the
767 * FreeType~2 API which performs color filtering for subpixel rendering.
768 */
769#define FT_INCREMENTAL_H <ftincrem.h>
770
771
772 /*************************************************************************
773 *
774 * @macro:
775 * FT_GASP_H
776 *
777 * @description:
778 * A macro used in #include statements to name the file containing the
779 * FreeType~2 API which returns entries from the TrueType GASP table.
780 */
781#define FT_GASP_H <ftgasp.h>
782
783
784 /*************************************************************************
785 *
786 * @macro:
787 * FT_ADVANCES_H
788 *
789 * @description:
790 * A macro used in #include statements to name the file containing the
791 * FreeType~2 API which returns individual and ranged glyph advances.
792 */
793#define FT_ADVANCES_H <ftadvanc.h>
794
795
796 /* */
797
798#define FT_ERROR_DEFINITIONS_H <fterrdef.h>
799
800
801 /* The internals of the cache sub-system are no longer exposed. We */
802 /* default to FT_CACHE_H at the moment just in case, but we know of */
803 /* no rogue client that uses them. */
804 /* */
805#define FT_CACHE_MANAGER_H <ftcache.h>
806#define FT_CACHE_INTERNAL_MRU_H <ftcache.h>
807#define FT_CACHE_INTERNAL_MANAGER_H <ftcache.h>
808#define FT_CACHE_INTERNAL_CACHE_H <ftcache.h>
809#define FT_CACHE_INTERNAL_GLYPH_H <ftcache.h>
810#define FT_CACHE_INTERNAL_IMAGE_H <ftcache.h>
811#define FT_CACHE_INTERNAL_SBITS_H <ftcache.h>
812
813
814#define FT_INCREMENTAL_H <ftincrem.h>
815
816#define FT_TRUETYPE_UNPATENTED_H <ttunpat.h>
817
818
819 /*
820 * Include internal headers definitions from <internal/...>
821 * only when building the library.
822 */
823#ifdef FT2_BUILD_LIBRARY
824#define FT_INTERNAL_INTERNAL_H <internal/internal.h>
825#include FT_INTERNAL_INTERNAL_H
826#endif /* FT2_BUILD_LIBRARY */
827
828
829#endif /* __FT2_BUILD_H__ */
830
831
832/* END */
833