~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/3rdparty/freetype/include/freetype/ftsysio.h

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __FT_SYSTEM_IO_H__
 
2
#define __FT_SYSTEM_IO_H__
 
3
 
 
4
 /************************************************************************/
 
5
 /************************************************************************/
 
6
 /*****                                                              *****/
 
7
 /*****    NOTE: THE CONTENT OF THIS FILE IS NOT CURRENTLY USED      *****/
 
8
 /*****          IN NORMAL BUILDS.  CONSIDER IT EXPERIMENTAL.        *****/
 
9
 /*****                                                              *****/
 
10
 /************************************************************************/
 
11
 /************************************************************************/
 
12
 
 
13
 
 
14
 /********************************************************************
 
15
  *
 
16
  *  designing custom streams is a bit different now
 
17
  *
 
18
  *
 
19
  *
 
20
  *
 
21
  *
 
22
  *
 
23
  *
 
24
  *
 
25
  *
 
26
  *
 
27
  *
 
28
  *
 
29
  *
 
30
  *
 
31
  *
 
32
  *
 
33
  *
 
34
  *
 
35
  *
 
36
  *
 
37
  *
 
38
  *
 
39
  *
 
40
  *
 
41
  */
 
42
 
 
43
#include <ft2build.h>
 
44
#include FT_INTERNAL_OBJECT_H
 
45
 
 
46
FT_BEGIN_HEADER
 
47
 
 
48
 /*@*******************************************************************
 
49
  *
 
50
  * @type: FT_Stream
 
51
  *
 
52
  * @description:
 
53
  *   handle to an input stream object. These are also @FT_Object handles
 
54
  */
 
55
  typedef struct FT_StreamRec_*    FT_Stream;
 
56
 
 
57
 
 
58
 /*@*******************************************************************
 
59
  *
 
60
  * @type: FT_Stream_Class
 
61
  *
 
62
  * @description:
 
63
  *   opaque handle to a @FT_Stream_ClassRec class structure describing
 
64
  *   the methods of input streams
 
65
  */
 
66
  typedef const struct FT_Stream_ClassRec_*   FT_Stream_Class;
 
67
 
 
68
 
 
69
 /*@*******************************************************************
 
70
  *
 
71
  * @functype: FT_Stream_ReadFunc
 
72
  *
 
73
  * @description:
 
74
  *   a method used to read bytes from an input stream into memory
 
75
  *
 
76
  * @input:
 
77
  *   stream  :: target stream handle
 
78
  *   buffer  :: target buffer address
 
79
  *   size    :: number of bytes to read
 
80
  *
 
81
  * @return:
 
82
  *   number of bytes effectively read. Must be <= 'size'.
 
83
  */
 
84
  typedef FT_ULong  (*FT_Stream_ReadFunc)( FT_Stream   stream,
 
85
                                           FT_Byte*    buffer,
 
86
                                           FT_ULong    size );
 
87
 
 
88
 
 
89
 /*@*******************************************************************
 
90
  *
 
91
  * @functype: FT_Stream_SeekFunc
 
92
  *
 
93
  * @description:
 
94
  *   a method used to seek to a new position within a stream
 
95
  *
 
96
  * @input:
 
97
  *   stream  :: target stream handle
 
98
  *   pos     :: new read position, from start of stream
 
99
  *
 
100
  * @return:
 
101
  *   error code. 0 means success
 
102
  */
 
103
  typedef FT_Error  (*FT_Stream_SeekFunc)( FT_Stream   stream,
 
104
                                           FT_ULong    pos );
 
105
 
 
106
 
 
107
 /*@*******************************************************************
 
108
  *
 
109
  * @struct: FT_Stream_ClassRec
 
110
  *
 
111
  * @description:
 
112
  *   a structure used to describe an input stream class
 
113
  *
 
114
  * @input:
 
115
  *   clazz       :: root @FT_ClassRec fields
 
116
  *   stream_read :: stream byte read method
 
117
  *   stream_seek :: stream seek method
 
118
  */
 
119
  typedef struct FT_Stream_ClassRec_
 
120
  {
 
121
    FT_ClassRec          clazz;
 
122
    FT_Stream_ReadFunc   stream_read;
 
123
    FT_Stream_SeekFunc   stream_seek;
 
124
 
 
125
  } FT_Stream_ClassRec;
 
126
 
 
127
 /* */
 
128
 
 
129
#define  FT_STREAM_CLASS(x)        ((FT_Stream_Class)(x))
 
130
#define  FT_STREAM_CLASS__READ(x)  FT_STREAM_CLASS(x)->stream_read
 
131
#define  FT_STREAM_CLASS__SEEK(x)  FT_STREAM_CLASS(x)->stream_seek;
 
132
 
 
133
 /*@*******************************************************************
 
134
  *
 
135
  * @struct: FT_StreamRec
 
136
  *
 
137
  * @description:
 
138
  *   the input stream object structure. See @FT_Stream_ClassRec for
 
139
  *   its class descriptor
 
140
  *
 
141
  * @fields:
 
142
  *   object      :: root @FT_ObjectRec fields
 
143
  *   size        :: size of stream in bytes (0 if unknown)
 
144
  *   pos         :: current position within stream
 
145
  *   base        :: for memory-based streams, the address of the stream's
 
146
  *                  first data byte in memory. NULL otherwise
 
147
  *
 
148
  *   cursor      :: the current cursor position within an input stream
 
149
  *                  frame. Only valid within a FT_FRAME_ENTER .. FT_FRAME_EXIT
 
150
  *                  block; NULL otherwise
 
151
  *
 
152
  *   limit       :: the current frame limit within a FT_FRAME_ENTER ..
 
153
  *                  FT_FRAME_EXIT block. NULL otherwise
 
154
  */
 
155
  typedef struct FT_StreamRec_
 
156
  {
 
157
    FT_ObjectRec        object;
 
158
    FT_ULong            size;
 
159
    FT_ULong            pos;
 
160
    const FT_Byte*      base;
 
161
    const FT_Byte*      cursor;
 
162
    const FT_Byte*      limit;
 
163
 
 
164
  } FT_StreamRec;
 
165
 
 
166
 /* some useful macros */
 
167
#define  FT_STREAM(x)    ((FT_Stream)(x))
 
168
#define  FT_STREAM_P(x)  ((FT_Stream*)(x))
 
169
 
 
170
#define  FT_STREAM__READ(x)  FT_STREAM_CLASS__READ(FT_OBJECT__CLASS(x))
 
171
#define  FT_STREAM__SEEK(x)  FT_STREAM_CLASS__SEEK(FT_OBJECT__CLASS(x))
 
172
 
 
173
#define  FT_STREAM_IS_BASED(x)  ( FT_STREAM(x)->base != NULL )
 
174
 
 
175
 /* */
 
176
 
 
177
 /* create new memory-based stream */
 
178
  FT_BASE( FT_Error )   ft_stream_new_memory( const FT_Byte*  stream_base,
 
179
                                              FT_ULong        stream_size,
 
180
                                              FT_Memory       memory,
 
181
                                              FT_Stream      *astream );
 
182
 
 
183
  FT_BASE( FT_Error )   ft_stream_new_iso( const char*  pathanme,
 
184
                                           FT_Memory    memory,
 
185
                                           FT_Stream   *astream );
 
186
 
 
187
 
 
188
 /* handle to default stream class implementation for a given build */
 
189
 /* this is used by "FT_New_Face"                                   */
 
190
 /*                                                                 */
 
191
  FT_APIVAR( FT_Type )   ft_stream_default_type;
 
192
 
 
193
FT_END_HEADER
 
194
 
 
195
#endif /* __FT_SYSTEM_STREAM_H__ */