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