1 /***************************************************************************/
2 /*                                                                         */
3 /*  ftlzw.h                                                                */
4 /*                                                                         */
5 /*    LZW-compressed stream support.                                       */
6 /*                                                                         */
7 /*  Copyright 2004-2015 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 
19 #ifndef __FTLZW_H__
20 #define __FTLZW_H__
21 
22 #include <ft2build.h>
23 #include FT_FREETYPE_H
24 
25 #ifdef FREETYPE_H
26 #error "freetype.h of FreeType 1 has been loaded!"
27 #error "Please fix the directory search order for header files"
28 #error "so that freetype.h of FreeType 2 is found first."
29 #endif
30 
31 
32 FT_BEGIN_HEADER
33 
34   /*************************************************************************/
35   /*                                                                       */
36   /* <Section>                                                             */
37   /*    lzw                                                                */
38   /*                                                                       */
39   /* <Title>                                                               */
40   /*    LZW Streams                                                        */
41   /*                                                                       */
42   /* <Abstract>                                                            */
43   /*    Using LZW-compressed font files.                                   */
44   /*                                                                       */
45   /* <Description>                                                         */
46   /*    This section contains the declaration of LZW-specific functions.   */
47   /*                                                                       */
48   /*************************************************************************/
49 
50  /************************************************************************
51   *
52   * @function:
53   *   FT_Stream_OpenLZW
54   *
55   * @description:
56   *   Open a new stream to parse LZW-compressed font files.  This is
57   *   mainly used to support the compressed `*.pcf.Z' fonts that come
58   *   with XFree86.
59   *
60   * @input:
61   *   stream :: The target embedding stream.
62   *
63   *   source :: The source stream.
64   *
65   * @return:
66   *   FreeType error code.  0~means success.
67   *
68   * @note:
69   *   The source stream must be opened _before_ calling this function.
70   *
71   *   Calling the internal function `FT_Stream_Close' on the new stream will
72   *   *not* call `FT_Stream_Close' on the source stream.  None of the stream
73   *   objects will be released to the heap.
74   *
75   *   The stream implementation is very basic and resets the decompression
76   *   process each time seeking backwards is needed within the stream
77   *
78   *   In certain builds of the library, LZW compression recognition is
79   *   automatically handled when calling @FT_New_Face or @FT_Open_Face.
80   *   This means that if no font driver is capable of handling the raw
81   *   compressed file, the library will try to open a LZW stream from it
82   *   and re-open the face with it.
83   *
84   *   This function may return `FT_Err_Unimplemented_Feature' if your build
85   *   of FreeType was not compiled with LZW support.
86   */
87   FT_EXPORT( FT_Error )
88   FT_Stream_OpenLZW( FT_Stream  stream,
89                      FT_Stream  source );
90 
91   /* */
92 
93 
94 FT_END_HEADER
95 
96 #endif /* __FTLZW_H__ */
97 
98 
99 /* END */
100