rev |
line source |
nuclear@0
|
1 /***************************************************************************/
|
nuclear@0
|
2 /* */
|
nuclear@0
|
3 /* ftrfork.h */
|
nuclear@0
|
4 /* */
|
nuclear@0
|
5 /* Embedded resource forks accessor (specification). */
|
nuclear@0
|
6 /* */
|
nuclear@0
|
7 /* Copyright 2004, 2006, 2007 by */
|
nuclear@0
|
8 /* Masatake YAMATO and Redhat K.K. */
|
nuclear@0
|
9 /* */
|
nuclear@0
|
10 /* This file is part of the FreeType project, and may only be used, */
|
nuclear@0
|
11 /* modified, and distributed under the terms of the FreeType project */
|
nuclear@0
|
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
nuclear@0
|
13 /* this file you indicate that you have read the license and */
|
nuclear@0
|
14 /* understand and accept it fully. */
|
nuclear@0
|
15 /* */
|
nuclear@0
|
16 /***************************************************************************/
|
nuclear@0
|
17
|
nuclear@0
|
18 /***************************************************************************/
|
nuclear@0
|
19 /* Development of the code in this file is support of */
|
nuclear@0
|
20 /* Information-technology Promotion Agency, Japan. */
|
nuclear@0
|
21 /***************************************************************************/
|
nuclear@0
|
22
|
nuclear@0
|
23
|
nuclear@0
|
24 #ifndef __FTRFORK_H__
|
nuclear@0
|
25 #define __FTRFORK_H__
|
nuclear@0
|
26
|
nuclear@0
|
27
|
nuclear@0
|
28 #include <ft2build.h>
|
nuclear@0
|
29 #include FT_INTERNAL_OBJECTS_H
|
nuclear@0
|
30
|
nuclear@0
|
31
|
nuclear@0
|
32 FT_BEGIN_HEADER
|
nuclear@0
|
33
|
nuclear@0
|
34
|
nuclear@0
|
35 /* Number of guessing rules supported in `FT_Raccess_Guess'. */
|
nuclear@0
|
36 /* Don't forget to increment the number if you add a new guessing rule. */
|
nuclear@0
|
37 #define FT_RACCESS_N_RULES 9
|
nuclear@0
|
38
|
nuclear@0
|
39
|
nuclear@0
|
40 /* A structure to describe a reference in a resource by its resource ID */
|
nuclear@0
|
41 /* and internal offset. The `POST' resource expects to be concatenated */
|
nuclear@0
|
42 /* by the order of resource IDs instead of its appearance in the file. */
|
nuclear@0
|
43
|
nuclear@0
|
44 typedef struct FT_RFork_Ref_
|
nuclear@0
|
45 {
|
nuclear@0
|
46 FT_UShort res_id;
|
nuclear@0
|
47 FT_ULong offset;
|
nuclear@0
|
48
|
nuclear@0
|
49 } FT_RFork_Ref;
|
nuclear@0
|
50
|
nuclear@0
|
51
|
nuclear@0
|
52 /*************************************************************************/
|
nuclear@0
|
53 /* */
|
nuclear@0
|
54 /* <Function> */
|
nuclear@0
|
55 /* FT_Raccess_Guess */
|
nuclear@0
|
56 /* */
|
nuclear@0
|
57 /* <Description> */
|
nuclear@0
|
58 /* Guess a file name and offset where the actual resource fork is */
|
nuclear@0
|
59 /* stored. The macro FT_RACCESS_N_RULES holds the number of */
|
nuclear@0
|
60 /* guessing rules; the guessed result for the Nth rule is */
|
nuclear@0
|
61 /* represented as a triplet: a new file name (new_names[N]), a file */
|
nuclear@0
|
62 /* offset (offsets[N]), and an error code (errors[N]). */
|
nuclear@0
|
63 /* */
|
nuclear@0
|
64 /* <Input> */
|
nuclear@0
|
65 /* library :: */
|
nuclear@0
|
66 /* A FreeType library instance. */
|
nuclear@0
|
67 /* */
|
nuclear@0
|
68 /* stream :: */
|
nuclear@0
|
69 /* A file stream containing the resource fork. */
|
nuclear@0
|
70 /* */
|
nuclear@0
|
71 /* base_name :: */
|
nuclear@0
|
72 /* The (base) file name of the resource fork used for some */
|
nuclear@0
|
73 /* guessing rules. */
|
nuclear@0
|
74 /* */
|
nuclear@0
|
75 /* <Output> */
|
nuclear@0
|
76 /* new_names :: */
|
nuclear@0
|
77 /* An array of guessed file names in which the resource forks may */
|
nuclear@0
|
78 /* exist. If `new_names[N]' is NULL, the guessed file name is */
|
nuclear@0
|
79 /* equal to `base_name'. */
|
nuclear@0
|
80 /* */
|
nuclear@0
|
81 /* offsets :: */
|
nuclear@0
|
82 /* An array of guessed file offsets. `offsets[N]' holds the file */
|
nuclear@0
|
83 /* offset of the possible start of the resource fork in file */
|
nuclear@0
|
84 /* `new_names[N]'. */
|
nuclear@0
|
85 /* */
|
nuclear@0
|
86 /* errors :: */
|
nuclear@0
|
87 /* An array of FreeType error codes. `errors[N]' is the error */
|
nuclear@0
|
88 /* code of Nth guessing rule function. If `errors[N]' is not */
|
nuclear@0
|
89 /* FT_Err_Ok, `new_names[N]' and `offsets[N]' are meaningless. */
|
nuclear@0
|
90 /* */
|
nuclear@0
|
91 FT_BASE( void )
|
nuclear@0
|
92 FT_Raccess_Guess( FT_Library library,
|
nuclear@0
|
93 FT_Stream stream,
|
nuclear@0
|
94 char* base_name,
|
nuclear@0
|
95 char** new_names,
|
nuclear@0
|
96 FT_Long* offsets,
|
nuclear@0
|
97 FT_Error* errors );
|
nuclear@0
|
98
|
nuclear@0
|
99
|
nuclear@0
|
100 /*************************************************************************/
|
nuclear@0
|
101 /* */
|
nuclear@0
|
102 /* <Function> */
|
nuclear@0
|
103 /* FT_Raccess_Get_HeaderInfo */
|
nuclear@0
|
104 /* */
|
nuclear@0
|
105 /* <Description> */
|
nuclear@0
|
106 /* Get the information from the header of resource fork. The */
|
nuclear@0
|
107 /* information includes the file offset where the resource map */
|
nuclear@0
|
108 /* starts, and the file offset where the resource data starts. */
|
nuclear@0
|
109 /* `FT_Raccess_Get_DataOffsets' requires these two data. */
|
nuclear@0
|
110 /* */
|
nuclear@0
|
111 /* <Input> */
|
nuclear@0
|
112 /* library :: */
|
nuclear@0
|
113 /* A FreeType library instance. */
|
nuclear@0
|
114 /* */
|
nuclear@0
|
115 /* stream :: */
|
nuclear@0
|
116 /* A file stream containing the resource fork. */
|
nuclear@0
|
117 /* */
|
nuclear@0
|
118 /* rfork_offset :: */
|
nuclear@0
|
119 /* The file offset where the resource fork starts. */
|
nuclear@0
|
120 /* */
|
nuclear@0
|
121 /* <Output> */
|
nuclear@0
|
122 /* map_offset :: */
|
nuclear@0
|
123 /* The file offset where the resource map starts. */
|
nuclear@0
|
124 /* */
|
nuclear@0
|
125 /* rdata_pos :: */
|
nuclear@0
|
126 /* The file offset where the resource data starts. */
|
nuclear@0
|
127 /* */
|
nuclear@0
|
128 /* <Return> */
|
nuclear@0
|
129 /* FreeType error code. FT_Err_Ok means success. */
|
nuclear@0
|
130 /* */
|
nuclear@0
|
131 FT_BASE( FT_Error )
|
nuclear@0
|
132 FT_Raccess_Get_HeaderInfo( FT_Library library,
|
nuclear@0
|
133 FT_Stream stream,
|
nuclear@0
|
134 FT_Long rfork_offset,
|
nuclear@0
|
135 FT_Long *map_offset,
|
nuclear@0
|
136 FT_Long *rdata_pos );
|
nuclear@0
|
137
|
nuclear@0
|
138
|
nuclear@0
|
139 /*************************************************************************/
|
nuclear@0
|
140 /* */
|
nuclear@0
|
141 /* <Function> */
|
nuclear@0
|
142 /* FT_Raccess_Get_DataOffsets */
|
nuclear@0
|
143 /* */
|
nuclear@0
|
144 /* <Description> */
|
nuclear@0
|
145 /* Get the data offsets for a tag in a resource fork. Offsets are */
|
nuclear@0
|
146 /* stored in an array because, in some cases, resources in a resource */
|
nuclear@0
|
147 /* fork have the same tag. */
|
nuclear@0
|
148 /* */
|
nuclear@0
|
149 /* <Input> */
|
nuclear@0
|
150 /* library :: */
|
nuclear@0
|
151 /* A FreeType library instance. */
|
nuclear@0
|
152 /* */
|
nuclear@0
|
153 /* stream :: */
|
nuclear@0
|
154 /* A file stream containing the resource fork. */
|
nuclear@0
|
155 /* */
|
nuclear@0
|
156 /* map_offset :: */
|
nuclear@0
|
157 /* The file offset where the resource map starts. */
|
nuclear@0
|
158 /* */
|
nuclear@0
|
159 /* rdata_pos :: */
|
nuclear@0
|
160 /* The file offset where the resource data starts. */
|
nuclear@0
|
161 /* */
|
nuclear@0
|
162 /* tag :: */
|
nuclear@0
|
163 /* The resource tag. */
|
nuclear@0
|
164 /* */
|
nuclear@0
|
165 /* <Output> */
|
nuclear@0
|
166 /* offsets :: */
|
nuclear@0
|
167 /* The stream offsets for the resource data specified by `tag'. */
|
nuclear@0
|
168 /* This array is allocated by the function, so you have to call */
|
nuclear@0
|
169 /* @ft_mem_free after use. */
|
nuclear@0
|
170 /* */
|
nuclear@0
|
171 /* count :: */
|
nuclear@0
|
172 /* The length of offsets array. */
|
nuclear@0
|
173 /* */
|
nuclear@0
|
174 /* <Return> */
|
nuclear@0
|
175 /* FreeType error code. FT_Err_Ok means success. */
|
nuclear@0
|
176 /* */
|
nuclear@0
|
177 /* <Note> */
|
nuclear@0
|
178 /* Normally you should use `FT_Raccess_Get_HeaderInfo' to get the */
|
nuclear@0
|
179 /* value for `map_offset' and `rdata_pos'. */
|
nuclear@0
|
180 /* */
|
nuclear@0
|
181 FT_BASE( FT_Error )
|
nuclear@0
|
182 FT_Raccess_Get_DataOffsets( FT_Library library,
|
nuclear@0
|
183 FT_Stream stream,
|
nuclear@0
|
184 FT_Long map_offset,
|
nuclear@0
|
185 FT_Long rdata_pos,
|
nuclear@0
|
186 FT_Long tag,
|
nuclear@0
|
187 FT_Long **offsets,
|
nuclear@0
|
188 FT_Long *count );
|
nuclear@0
|
189
|
nuclear@0
|
190
|
nuclear@0
|
191 FT_END_HEADER
|
nuclear@0
|
192
|
nuclear@0
|
193 #endif /* __FTRFORK_H__ */
|
nuclear@0
|
194
|
nuclear@0
|
195
|
nuclear@0
|
196 /* END */
|