modules/freetype2/include/ftsystem.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /***************************************************************************/
     2 /*                                                                         */
     3 /*  ftsystem.h                                                             */
     4 /*                                                                         */
     5 /*    FreeType low-level system interface definition (specification).      */
     6 /*                                                                         */
     7 /*  Copyright 1996-2001, 2002, 2005, 2010 by                               */
     8 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
     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 /***************************************************************************/
    19 #ifndef __FTSYSTEM_H__
    20 #define __FTSYSTEM_H__
    23 #include <ft2build.h>
    26 FT_BEGIN_HEADER
    29   /*************************************************************************/
    30   /*                                                                       */
    31   /* <Section>                                                             */
    32   /*   system_interface                                                    */
    33   /*                                                                       */
    34   /* <Title>                                                               */
    35   /*   System Interface                                                    */
    36   /*                                                                       */
    37   /* <Abstract>                                                            */
    38   /*   How FreeType manages memory and i/o.                                */
    39   /*                                                                       */
    40   /* <Description>                                                         */
    41   /*   This section contains various definitions related to memory         */
    42   /*   management and i/o access.  You need to understand this             */
    43   /*   information if you want to use a custom memory manager or you own   */
    44   /*   i/o streams.                                                        */
    45   /*                                                                       */
    46   /*************************************************************************/
    49   /*************************************************************************/
    50   /*                                                                       */
    51   /*                  M E M O R Y   M A N A G E M E N T                    */
    52   /*                                                                       */
    53   /*************************************************************************/
    56   /*************************************************************************
    57    *
    58    * @type:
    59    *   FT_Memory
    60    *
    61    * @description:
    62    *   A handle to a given memory manager object, defined with an
    63    *   @FT_MemoryRec structure.
    64    *
    65    */
    66   typedef struct FT_MemoryRec_*  FT_Memory;
    69   /*************************************************************************
    70    *
    71    * @functype:
    72    *   FT_Alloc_Func
    73    *
    74    * @description:
    75    *   A function used to allocate `size' bytes from `memory'.
    76    *
    77    * @input:
    78    *   memory ::
    79    *     A handle to the source memory manager.
    80    *
    81    *   size ::
    82    *     The size in bytes to allocate.
    83    *
    84    * @return:
    85    *   Address of new memory block.  0~in case of failure.
    86    *
    87    */
    88   typedef void*
    89   (*FT_Alloc_Func)( FT_Memory  memory,
    90                     long       size );
    93   /*************************************************************************
    94    *
    95    * @functype:
    96    *   FT_Free_Func
    97    *
    98    * @description:
    99    *   A function used to release a given block of memory.
   100    *
   101    * @input:
   102    *   memory ::
   103    *     A handle to the source memory manager.
   104    *
   105    *   block ::
   106    *     The address of the target memory block.
   107    *
   108    */
   109   typedef void
   110   (*FT_Free_Func)( FT_Memory  memory,
   111                    void*      block );
   114   /*************************************************************************
   115    *
   116    * @functype:
   117    *   FT_Realloc_Func
   118    *
   119    * @description:
   120    *   A function used to re-allocate a given block of memory.
   121    *
   122    * @input:
   123    *   memory ::
   124    *     A handle to the source memory manager.
   125    *
   126    *   cur_size ::
   127    *     The block's current size in bytes.
   128    *
   129    *   new_size ::
   130    *     The block's requested new size.
   131    *
   132    *   block ::
   133    *     The block's current address.
   134    *
   135    * @return:
   136    *   New block address.  0~in case of memory shortage.
   137    *
   138    * @note:
   139    *   In case of error, the old block must still be available.
   140    *
   141    */
   142   typedef void*
   143   (*FT_Realloc_Func)( FT_Memory  memory,
   144                       long       cur_size,
   145                       long       new_size,
   146                       void*      block );
   149   /*************************************************************************
   150    *
   151    * @struct:
   152    *   FT_MemoryRec
   153    *
   154    * @description:
   155    *   A structure used to describe a given memory manager to FreeType~2.
   156    *
   157    * @fields:
   158    *   user ::
   159    *     A generic typeless pointer for user data.
   160    *
   161    *   alloc ::
   162    *     A pointer type to an allocation function.
   163    *
   164    *   free ::
   165    *     A pointer type to an memory freeing function.
   166    *
   167    *   realloc ::
   168    *     A pointer type to a reallocation function.
   169    *
   170    */
   171   struct  FT_MemoryRec_
   172   {
   173     void*            user;
   174     FT_Alloc_Func    alloc;
   175     FT_Free_Func     free;
   176     FT_Realloc_Func  realloc;
   177   };
   180   /*************************************************************************/
   181   /*                                                                       */
   182   /*                       I / O   M A N A G E M E N T                     */
   183   /*                                                                       */
   184   /*************************************************************************/
   187   /*************************************************************************
   188    *
   189    * @type:
   190    *   FT_Stream
   191    *
   192    * @description:
   193    *   A handle to an input stream.
   194    *
   195    */
   196   typedef struct FT_StreamRec_*  FT_Stream;
   199   /*************************************************************************
   200    *
   201    * @struct:
   202    *   FT_StreamDesc
   203    *
   204    * @description:
   205    *   A union type used to store either a long or a pointer.  This is used
   206    *   to store a file descriptor or a `FILE*' in an input stream.
   207    *
   208    */
   209   typedef union  FT_StreamDesc_
   210   {
   211     long   value;
   212     void*  pointer;
   214   } FT_StreamDesc;
   217   /*************************************************************************
   218    *
   219    * @functype:
   220    *   FT_Stream_IoFunc
   221    *
   222    * @description:
   223    *   A function used to seek and read data from a given input stream.
   224    *
   225    * @input:
   226    *   stream ::
   227    *     A handle to the source stream.
   228    *
   229    *   offset ::
   230    *     The offset of read in stream (always from start).
   231    *
   232    *   buffer ::
   233    *     The address of the read buffer.
   234    *
   235    *   count ::
   236    *     The number of bytes to read from the stream.
   237    *
   238    * @return:
   239    *   The number of bytes effectively read by the stream.
   240    *
   241    * @note:
   242    *   This function might be called to perform a seek or skip operation
   243    *   with a `count' of~0.  A non-zero return value then indicates an
   244    *   error.
   245    *
   246    */
   247   typedef unsigned long
   248   (*FT_Stream_IoFunc)( FT_Stream       stream,
   249                        unsigned long   offset,
   250                        unsigned char*  buffer,
   251                        unsigned long   count );
   254   /*************************************************************************
   255    *
   256    * @functype:
   257    *   FT_Stream_CloseFunc
   258    *
   259    * @description:
   260    *   A function used to close a given input stream.
   261    *
   262    * @input:
   263    *  stream ::
   264    *     A handle to the target stream.
   265    *
   266    */
   267   typedef void
   268   (*FT_Stream_CloseFunc)( FT_Stream  stream );
   271   /*************************************************************************
   272    *
   273    * @struct:
   274    *   FT_StreamRec
   275    *
   276    * @description:
   277    *   A structure used to describe an input stream.
   278    *
   279    * @input:
   280    *   base ::
   281    *     For memory-based streams, this is the address of the first stream
   282    *     byte in memory.  This field should always be set to NULL for
   283    *     disk-based streams.
   284    *
   285    *   size ::
   286    *     The stream size in bytes.
   287    *
   288    *   pos ::
   289    *     The current position within the stream.
   290    *
   291    *   descriptor ::
   292    *     This field is a union that can hold an integer or a pointer.  It is
   293    *     used by stream implementations to store file descriptors or `FILE*'
   294    *     pointers.
   295    *
   296    *   pathname ::
   297    *     This field is completely ignored by FreeType.  However, it is often
   298    *     useful during debugging to use it to store the stream's filename
   299    *     (where available).
   300    *
   301    *   read ::
   302    *     The stream's input function.
   303    *
   304    *   close ::
   305    *     The stream's close function.
   306    *
   307    *   memory ::
   308    *     The memory manager to use to preload frames.  This is set
   309    *     internally by FreeType and shouldn't be touched by stream
   310    *     implementations.
   311    *
   312    *   cursor ::
   313    *     This field is set and used internally by FreeType when parsing
   314    *     frames.
   315    *
   316    *   limit ::
   317    *     This field is set and used internally by FreeType when parsing
   318    *     frames.
   319    *
   320    */
   321   typedef struct  FT_StreamRec_
   322   {
   323     unsigned char*       base;
   324     unsigned long        size;
   325     unsigned long        pos;
   327     FT_StreamDesc        descriptor;
   328     FT_StreamDesc        pathname;
   329     FT_Stream_IoFunc     read;
   330     FT_Stream_CloseFunc  close;
   332     FT_Memory            memory;
   333     unsigned char*       cursor;
   334     unsigned char*       limit;
   336   } FT_StreamRec;
   339   /* */
   342 FT_END_HEADER
   344 #endif /* __FTSYSTEM_H__ */
   347 /* END */

mercurial