Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4680 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 */