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