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 "../freetype.h"                                           */
82  /*      #include "../ftmm.h"                                   */
83  /*      #include "../ftglyph.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  <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_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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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   <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/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  <freetype/ftadvanc.h>
794
795
796  /* */
797
798#define FT_ERROR_DEFINITIONS_H  <freetype/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           <freetype/ftcache.h>
806#define FT_CACHE_INTERNAL_MRU_H      <freetype/ftcache.h>
807#define FT_CACHE_INTERNAL_MANAGER_H  <freetype/ftcache.h>
808#define FT_CACHE_INTERNAL_CACHE_H    <freetype/ftcache.h>
809#define FT_CACHE_INTERNAL_GLYPH_H    <freetype/ftcache.h>
810#define FT_CACHE_INTERNAL_IMAGE_H    <freetype/ftcache.h>
811#define FT_CACHE_INTERNAL_SBITS_H    <freetype/ftcache.h>
812
813
814#define FT_INCREMENTAL_H          <freetype/ftincrem.h>
815
816#define FT_TRUETYPE_UNPATENTED_H  <freetype/ttunpat.h>
817
818
819  /*
820   * Include internal headers definitions from <freetype/internal/...>
821   * only when building the library.
822   */
823#ifdef FT2_BUILD_LIBRARY
824#define  FT_INTERNAL_INTERNAL_H  <freetype/internal/internal.h>
825#include "../internal/internal.h"
826#endif /* FT2_BUILD_LIBRARY */
827
828
829#endif /* __FT2_BUILD_H__ */
830
831
832/* END */
833