1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  ftsystem.h                                                             */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    FreeType low-level system interface definition (specification).      */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
7aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich/*  Copyright 1996-2001, 2002, 2005, 2010 by                               */
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  this file you indicate that you have read the license and              */
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  understand and accept it fully.                                        */
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTSYSTEM_H__
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTSYSTEM_H__
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h>
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Section>                                                             */
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   system_interface                                                    */
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Title>                                                               */
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   System Interface                                                    */
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Abstract>                                                            */
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   How FreeType manages memory and i/o.                                */
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   This section contains various definitions related to memory         */
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   management and i/o access.  You need to understand this             */
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   information if you want to use a custom memory manager or you own   */
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   i/o streams.                                                        */
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                  M E M O R Y   M A N A G E M E N T                    */
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @type:
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Memory
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A handle to a given memory manager object, defined with an
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   @FT_MemoryRec structure.
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct FT_MemoryRec_*  FT_Memory;
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Alloc_Func
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A function used to allocate `size' bytes from `memory'.
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   memory ::
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the source memory manager.
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   size ::
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The size in bytes to allocate.
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
850a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   Address of new memory block.  0~in case of failure.
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void*
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Alloc_Func)( FT_Memory  memory,
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                    long       size );
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Free_Func
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A function used to release a given block of memory.
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   memory ::
103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the source memory manager.
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   block ::
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The address of the target memory block.
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Free_Func)( FT_Memory  memory,
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                   void*      block );
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Realloc_Func
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A function used to re-allocate a given block of memory.
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   memory ::
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the source memory manager.
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   cur_size ::
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The block's current size in bytes.
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   new_size ::
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The block's requested new size.
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   block ::
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The block's current address.
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
1360a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   New block address.  0~in case of memory shortage.
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   In case of error, the old block must still be available.
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void*
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Realloc_Func)( FT_Memory  memory,
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      long       cur_size,
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      long       new_size,
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                      void*      block );
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @struct:
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_MemoryRec
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
1550a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project   *   A structure used to describe a given memory manager to FreeType~2.
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @fields:
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   user ::
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A generic typeless pointer for user data.
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   alloc ::
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer type to an allocation function.
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   free ::
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer type to an memory freeing function.
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   realloc ::
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A pointer type to a reallocation function.
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  struct  FT_MemoryRec_
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    void*            user;
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Alloc_Func    alloc;
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Free_Func     free;
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Realloc_Func  realloc;
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  };
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                       I / O   M A N A G E M E N T                     */
183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @type:
190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stream
191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A handle to an input stream.
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct FT_StreamRec_*  FT_Stream;
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @struct:
202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_StreamDesc
203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A union type used to store either a long or a pointer.  This is used
206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   to store a file descriptor or a `FILE*' in an input stream.
207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef union  FT_StreamDesc_
210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    long   value;
212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    void*  pointer;
213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_StreamDesc;
215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stream_IoFunc
221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A function used to seek and read data from a given input stream.
224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   stream ::
227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the source stream.
228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   offset ::
230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The offset of read in stream (always from start).
231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   buffer ::
233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The address of the read buffer.
234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   count ::
236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The number of bytes to read from the stream.
237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @return:
239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   The number of bytes effectively read by the stream.
240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @note:
242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   This function might be called to perform a seek or skip operation
243aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich   *   with a `count' of~0.  A non-zero return value then indicates an
244aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich   *   error.
245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef unsigned long
248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Stream_IoFunc)( FT_Stream       stream,
249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                       unsigned long   offset,
250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                       unsigned char*  buffer,
251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                       unsigned long   count );
252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @functype:
257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_Stream_CloseFunc
258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A function used to close a given input stream.
261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *  stream ::
264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     A handle to the target stream.
265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef void
268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  (*FT_Stream_CloseFunc)( FT_Stream  stream );
269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************
272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @struct:
274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   FT_StreamRec
275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @description:
277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   A structure used to describe an input stream.
278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   * @input:
280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   base ::
281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     For memory-based streams, this is the address of the first stream
282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     byte in memory.  This field should always be set to NULL for
283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     disk-based streams.
284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   size ::
286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The stream size in bytes.
287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   pos ::
289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The current position within the stream.
290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   descriptor ::
292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     This field is a union that can hold an integer or a pointer.  It is
293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     used by stream implementations to store file descriptors or `FILE*'
294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     pointers.
295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   pathname ::
297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     This field is completely ignored by FreeType.  However, it is often
298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     useful during debugging to use it to store the stream's filename
299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     (where available).
300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   read ::
302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The stream's input function.
303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   close ::
305aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich   *     The stream's close function.
306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   memory ::
308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     The memory manager to use to preload frames.  This is set
309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     internally by FreeType and shouldn't be touched by stream
310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     implementations.
311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   cursor ::
313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     This field is set and used internally by FreeType when parsing
314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     frames.
315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *   limit ::
317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     This field is set and used internally by FreeType when parsing
318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *     frames.
319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   *
320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project   */
321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  FT_StreamRec_
322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    unsigned char*       base;
324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    unsigned long        size;
325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    unsigned long        pos;
326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_StreamDesc        descriptor;
328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_StreamDesc        pathname;
329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Stream_IoFunc     read;
330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Stream_CloseFunc  close;
331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Memory            memory;
333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    unsigned char*       cursor;
334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    unsigned char*       limit;
335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } FT_StreamRec;
337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* */
340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTSYSTEM_H__ */
345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
348