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