1 /****************************************************************************
2  *
3  * ftheader.h
4  *
5  *   Build macros of the FreeType 2 library.
6  *
7  * Copyright (C) 1996-2019 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 FTHEADER_H_
19 #define FTHEADER_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 FreeType~2
77    *   header files.  They can be used directly in `#include` statements as
78    *   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 public
87    *   header files.  The first one is that such macros are not limited to
88    *   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 way
92    *   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  <freetype/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  <freetype/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  <freetype/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  <freetype/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/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/ftrender.h>
316 
317 
318   /**************************************************************************
319    *
320    * @macro:
321    *   FT_DRIVER_H
322    *
323    * @description:
324    *   A macro used in `#include` statements to name the file containing
325    *   structures and macros related to the driver modules.
326    *
327    */
328 #define FT_DRIVER_H  <freetype/ftdriver.h>
329 
330 
331   /**************************************************************************
332    *
333    * @macro:
334    *   FT_AUTOHINTER_H
335    *
336    * @description:
337    *   A macro used in `#include` statements to name the file containing
338    *   structures and macros related to the auto-hinting module.
339    *
340    *   Deprecated since version~2.9; use @FT_DRIVER_H instead.
341    *
342    */
343 #define FT_AUTOHINTER_H  FT_DRIVER_H
344 
345 
346   /**************************************************************************
347    *
348    * @macro:
349    *   FT_CFF_DRIVER_H
350    *
351    * @description:
352    *   A macro used in `#include` statements to name the file containing
353    *   structures and macros related to the CFF driver module.
354    *
355    *   Deprecated since version~2.9; use @FT_DRIVER_H instead.
356    *
357    */
358 #define FT_CFF_DRIVER_H  FT_DRIVER_H
359 
360 
361   /**************************************************************************
362    *
363    * @macro:
364    *   FT_TRUETYPE_DRIVER_H
365    *
366    * @description:
367    *   A macro used in `#include` statements to name the file containing
368    *   structures and macros related to the TrueType driver module.
369    *
370    *   Deprecated since version~2.9; use @FT_DRIVER_H instead.
371    *
372    */
373 #define FT_TRUETYPE_DRIVER_H  FT_DRIVER_H
374 
375 
376   /**************************************************************************
377    *
378    * @macro:
379    *   FT_PCF_DRIVER_H
380    *
381    * @description:
382    *   A macro used in `#include` statements to name the file containing
383    *   structures and macros related to the PCF driver module.
384    *
385    *   Deprecated since version~2.9; use @FT_DRIVER_H instead.
386    *
387    */
388 #define FT_PCF_DRIVER_H  FT_DRIVER_H
389 
390 
391   /**************************************************************************
392    *
393    * @macro:
394    *   FT_TYPE1_TABLES_H
395    *
396    * @description:
397    *   A macro used in `#include` statements to name the file containing the
398    *   types and API specific to the Type~1 format.
399    *
400    */
401 #define FT_TYPE1_TABLES_H  <freetype/t1tables.h>
402 
403 
404   /**************************************************************************
405    *
406    * @macro:
407    *   FT_TRUETYPE_IDS_H
408    *
409    * @description:
410    *   A macro used in `#include` statements to name the file containing the
411    *   enumeration values which identify name strings, languages, encodings,
412    *   etc.  This file really contains a _large_ set of constant macro
413    *   definitions, taken from the TrueType and OpenType specifications.
414    *
415    */
416 #define FT_TRUETYPE_IDS_H  <freetype/ttnameid.h>
417 
418 
419   /**************************************************************************
420    *
421    * @macro:
422    *   FT_TRUETYPE_TABLES_H
423    *
424    * @description:
425    *   A macro used in `#include` statements to name the file containing the
426    *   types and API specific to the TrueType (as well as OpenType) format.
427    *
428    */
429 #define FT_TRUETYPE_TABLES_H  <freetype/tttables.h>
430 
431 
432   /**************************************************************************
433    *
434    * @macro:
435    *   FT_TRUETYPE_TAGS_H
436    *
437    * @description:
438    *   A macro used in `#include` statements to name the file containing the
439    *   definitions of TrueType four-byte 'tags' which identify blocks in
440    *   SFNT-based font formats (i.e., TrueType and OpenType).
441    *
442    */
443 #define FT_TRUETYPE_TAGS_H  <freetype/tttags.h>
444 
445 
446   /**************************************************************************
447    *
448    * @macro:
449    *   FT_BDF_H
450    *
451    * @description:
452    *   A macro used in `#include` statements to name the file containing the
453    *   definitions of an API which accesses BDF-specific strings from a face.
454    *
455    */
456 #define FT_BDF_H  <freetype/ftbdf.h>
457 
458 
459   /**************************************************************************
460    *
461    * @macro:
462    *   FT_CID_H
463    *
464    * @description:
465    *   A macro used in `#include` statements to name the file containing the
466    *   definitions of an API which access CID font information from a face.
467    *
468    */
469 #define FT_CID_H  <freetype/ftcid.h>
470 
471 
472   /**************************************************************************
473    *
474    * @macro:
475    *   FT_GZIP_H
476    *
477    * @description:
478    *   A macro used in `#include` statements to name the file containing the
479    *   definitions of an API which supports gzip-compressed files.
480    *
481    */
482 #define FT_GZIP_H  <freetype/ftgzip.h>
483 
484 
485   /**************************************************************************
486    *
487    * @macro:
488    *   FT_LZW_H
489    *
490    * @description:
491    *   A macro used in `#include` statements to name the file containing the
492    *   definitions of an API which supports LZW-compressed files.
493    *
494    */
495 #define FT_LZW_H  <freetype/ftlzw.h>
496 
497 
498   /**************************************************************************
499    *
500    * @macro:
501    *   FT_BZIP2_H
502    *
503    * @description:
504    *   A macro used in `#include` statements to name the file containing the
505    *   definitions of an API which supports bzip2-compressed files.
506    *
507    */
508 #define FT_BZIP2_H  <freetype/ftbzip2.h>
509 
510 
511   /**************************************************************************
512    *
513    * @macro:
514    *   FT_WINFONTS_H
515    *
516    * @description:
517    *   A macro used in `#include` statements to name the file containing the
518    *   definitions of an API which supports Windows FNT files.
519    *
520    */
521 #define FT_WINFONTS_H   <freetype/ftwinfnt.h>
522 
523 
524   /**************************************************************************
525    *
526    * @macro:
527    *   FT_GLYPH_H
528    *
529    * @description:
530    *   A macro used in `#include` statements to name the file containing the
531    *   API of the optional glyph management component.
532    *
533    */
534 #define FT_GLYPH_H  <freetype/ftglyph.h>
535 
536 
537   /**************************************************************************
538    *
539    * @macro:
540    *   FT_BITMAP_H
541    *
542    * @description:
543    *   A macro used in `#include` statements to name the file containing the
544    *   API of the optional bitmap conversion component.
545    *
546    */
547 #define FT_BITMAP_H  <freetype/ftbitmap.h>
548 
549 
550   /**************************************************************************
551    *
552    * @macro:
553    *   FT_BBOX_H
554    *
555    * @description:
556    *   A macro used in `#include` statements to name the file containing the
557    *   API of the optional exact bounding box computation routines.
558    *
559    */
560 #define FT_BBOX_H  <freetype/ftbbox.h>
561 
562 
563   /**************************************************************************
564    *
565    * @macro:
566    *   FT_CACHE_H
567    *
568    * @description:
569    *   A macro used in `#include` statements to name the file containing the
570    *   API of the optional FreeType~2 cache sub-system.
571    *
572    */
573 #define FT_CACHE_H  <freetype/ftcache.h>
574 
575 
576   /**************************************************************************
577    *
578    * @macro:
579    *   FT_MAC_H
580    *
581    * @description:
582    *   A macro used in `#include` statements to name the file containing the
583    *   Macintosh-specific FreeType~2 API.  The latter is used to access fonts
584    *   embedded in resource forks.
585    *
586    *   This header file must be explicitly included by client applications
587    *   compiled on the Mac (note that the base API still works though).
588    *
589    */
590 #define FT_MAC_H  <freetype/ftmac.h>
591 
592 
593   /**************************************************************************
594    *
595    * @macro:
596    *   FT_MULTIPLE_MASTERS_H
597    *
598    * @description:
599    *   A macro used in `#include` statements to name the file containing the
600    *   optional multiple-masters management API of FreeType~2.
601    *
602    */
603 #define FT_MULTIPLE_MASTERS_H  <freetype/ftmm.h>
604 
605 
606   /**************************************************************************
607    *
608    * @macro:
609    *   FT_SFNT_NAMES_H
610    *
611    * @description:
612    *   A macro used in `#include` statements to name the file containing the
613    *   optional FreeType~2 API which accesses embedded 'name' strings in
614    *   SFNT-based font formats (i.e., TrueType and OpenType).
615    *
616    */
617 #define FT_SFNT_NAMES_H  <freetype/ftsnames.h>
618 
619 
620   /**************************************************************************
621    *
622    * @macro:
623    *   FT_OPENTYPE_VALIDATE_H
624    *
625    * @description:
626    *   A macro used in `#include` statements to name the file containing the
627    *   optional FreeType~2 API which validates OpenType tables ('BASE',
628    *   'GDEF', 'GPOS', 'GSUB', 'JSTF').
629    *
630    */
631 #define FT_OPENTYPE_VALIDATE_H  <freetype/ftotval.h>
632 
633 
634   /**************************************************************************
635    *
636    * @macro:
637    *   FT_GX_VALIDATE_H
638    *
639    * @description:
640    *   A macro used in `#include` statements to name the file containing the
641    *   optional FreeType~2 API which validates TrueTypeGX/AAT tables ('feat',
642    *   'mort', 'morx', 'bsln', 'just', 'kern', 'opbd', 'trak', 'prop').
643    *
644    */
645 #define FT_GX_VALIDATE_H  <freetype/ftgxval.h>
646 
647 
648   /**************************************************************************
649    *
650    * @macro:
651    *   FT_PFR_H
652    *
653    * @description:
654    *   A macro used in `#include` statements to name the file containing the
655    *   FreeType~2 API which accesses PFR-specific data.
656    *
657    */
658 #define FT_PFR_H  <freetype/ftpfr.h>
659 
660 
661   /**************************************************************************
662    *
663    * @macro:
664    *   FT_STROKER_H
665    *
666    * @description:
667    *   A macro used in `#include` statements to name the file containing the
668    *   FreeType~2 API which provides functions to stroke outline paths.
669    */
670 #define FT_STROKER_H  <freetype/ftstroke.h>
671 
672 
673   /**************************************************************************
674    *
675    * @macro:
676    *   FT_SYNTHESIS_H
677    *
678    * @description:
679    *   A macro used in `#include` statements to name the file containing the
680    *   FreeType~2 API which performs artificial obliquing and emboldening.
681    */
682 #define FT_SYNTHESIS_H  <freetype/ftsynth.h>
683 
684 
685   /**************************************************************************
686    *
687    * @macro:
688    *   FT_FONT_FORMATS_H
689    *
690    * @description:
691    *   A macro used in `#include` statements to name the file containing the
692    *   FreeType~2 API which provides functions specific to font formats.
693    */
694 #define FT_FONT_FORMATS_H  <freetype/ftfntfmt.h>
695 
696   /* deprecated */
697 #define FT_XFREE86_H  FT_FONT_FORMATS_H
698 
699 
700   /**************************************************************************
701    *
702    * @macro:
703    *   FT_TRIGONOMETRY_H
704    *
705    * @description:
706    *   A macro used in `#include` statements to name the file containing the
707    *   FreeType~2 API which performs trigonometric computations (e.g.,
708    *   cosines and arc tangents).
709    */
710 #define FT_TRIGONOMETRY_H  <freetype/fttrigon.h>
711 
712 
713   /**************************************************************************
714    *
715    * @macro:
716    *   FT_LCD_FILTER_H
717    *
718    * @description:
719    *   A macro used in `#include` statements to name the file containing the
720    *   FreeType~2 API which performs color filtering for subpixel rendering.
721    */
722 #define FT_LCD_FILTER_H  <freetype/ftlcdfil.h>
723 
724 
725   /**************************************************************************
726    *
727    * @macro:
728    *   FT_INCREMENTAL_H
729    *
730    * @description:
731    *   A macro used in `#include` statements to name the file containing the
732    *   FreeType~2 API which performs incremental glyph loading.
733    */
734 #define FT_INCREMENTAL_H  <freetype/ftincrem.h>
735 
736 
737   /**************************************************************************
738    *
739    * @macro:
740    *   FT_GASP_H
741    *
742    * @description:
743    *   A macro used in `#include` statements to name the file containing the
744    *   FreeType~2 API which returns entries from the TrueType GASP table.
745    */
746 #define FT_GASP_H  <freetype/ftgasp.h>
747 
748 
749   /**************************************************************************
750    *
751    * @macro:
752    *   FT_ADVANCES_H
753    *
754    * @description:
755    *   A macro used in `#include` statements to name the file containing the
756    *   FreeType~2 API which returns individual and ranged glyph advances.
757    */
758 #define FT_ADVANCES_H  <freetype/ftadvanc.h>
759 
760 
761   /**************************************************************************
762    *
763    * @macro:
764    *   FT_COLOR_H
765    *
766    * @description:
767    *   A macro used in `#include` statements to name the file containing the
768    *   FreeType~2 API which handles the OpenType 'CPAL' table.
769    */
770 #define FT_COLOR_H  <freetype/ftcolor.h>
771 
772 
773   /* */
774 
775   /* These header files don't need to be included by the user. */
776 #define FT_ERROR_DEFINITIONS_H  <freetype/fterrdef.h>
777 #define FT_PARAMETER_TAGS_H     <freetype/ftparams.h>
778 
779   /* Deprecated macros. */
780 #define FT_UNPATENTED_HINTING_H   <freetype/ftparams.h>
781 #define FT_TRUETYPE_UNPATENTED_H  <freetype/ftparams.h>
782 
783   /* `FT_CACHE_H` is the only header file needed for the cache subsystem. */
784 #define FT_CACHE_IMAGE_H          FT_CACHE_H
785 #define FT_CACHE_SMALL_BITMAPS_H  FT_CACHE_H
786 #define FT_CACHE_CHARMAP_H        FT_CACHE_H
787 
788   /* The internals of the cache sub-system are no longer exposed.  We */
789   /* default to `FT_CACHE_H` at the moment just in case, but we know  */
790   /* of no rogue client that uses them.                               */
791   /*                                                                  */
792 #define FT_CACHE_MANAGER_H           FT_CACHE_H
793 #define FT_CACHE_INTERNAL_MRU_H      FT_CACHE_H
794 #define FT_CACHE_INTERNAL_MANAGER_H  FT_CACHE_H
795 #define FT_CACHE_INTERNAL_CACHE_H    FT_CACHE_H
796 #define FT_CACHE_INTERNAL_GLYPH_H    FT_CACHE_H
797 #define FT_CACHE_INTERNAL_IMAGE_H    FT_CACHE_H
798 #define FT_CACHE_INTERNAL_SBITS_H    FT_CACHE_H
799 
800 
801   /*
802    * Include internal headers definitions from `<internal/...>` only when
803    * building the library.
804    */
805 #ifdef FT2_BUILD_LIBRARY
806 #define  FT_INTERNAL_INTERNAL_H  <freetype/internal/internal.h>
807 #include FT_INTERNAL_INTERNAL_H
808 #endif /* FT2_BUILD_LIBRARY */
809 
810 
811 #endif /* FTHEADER_H_ */
812 
813 
814 /* END */
815