ftcimage.h

Go to the documentation of this file.
00001 /***************************************************************************/
00002 /*                                                                         */
00003 /*  ftcimage.h                                                             */
00004 /*                                                                         */
00005 /*    FreeType Generic Image cache (specification)                         */
00006 /*                                                                         */
00007 /*  Copyright 2000-2001, 2002, 2003, 2006 by                               */
00008 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
00009 /*                                                                         */
00010 /*  This file is part of the FreeType project, and may only be used,       */
00011 /*  modified, and distributed under the terms of the FreeType project      */
00012 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
00013 /*  this file you indicate that you have read the license and              */
00014 /*  understand and accept it fully.                                        */
00015 /*                                                                         */
00016 /***************************************************************************/
00017 
00018 
00019  /*
00020   *  FTC_ICache is an _abstract_ cache used to store a single FT_Glyph
00021   *  image per cache node.
00022   *
00023   *  FTC_ICache extends FTC_GCache.  For an implementation example,
00024   *  see FTC_ImageCache in `src/cache/ftbasic.c'.
00025   */
00026 
00027 
00028   /*************************************************************************/
00029   /*                                                                       */
00030   /* Each image cache really manages FT_Glyph objects.                     */
00031   /*                                                                       */
00032   /*************************************************************************/
00033 
00034 
00035 #ifndef __FTCIMAGE_H__
00036 #define __FTCIMAGE_H__
00037 
00038 
00039 #include <ft2build.h>
00040 #include FT_CACHE_H
00041 #include "ftcglyph.h"
00042 
00043 FT_BEGIN_HEADER
00044 
00045 
00046   /* the FT_Glyph image node type - we store only 1 glyph per node */
00047   typedef struct  FTC_INodeRec_
00048   {
00049     FTC_GNodeRec  gnode;
00050     FT_Glyph      glyph;
00051 
00052   } FTC_INodeRec, *FTC_INode;
00053 
00054 #define FTC_INODE( x )         ( (FTC_INode)( x ) )
00055 #define FTC_INODE_GINDEX( x )  FTC_GNODE(x)->gindex
00056 #define FTC_INODE_FAMILY( x )  FTC_GNODE(x)->family
00057 
00058   typedef FT_Error
00059   (*FTC_IFamily_LoadGlyphFunc)( FTC_Family  family,
00060                                 FT_UInt     gindex,
00061                                 FTC_Cache   cache,
00062                                 FT_Glyph   *aglyph );
00063 
00064   typedef struct  FTC_IFamilyClassRec_
00065   {
00066     FTC_MruListClassRec        clazz;
00067     FTC_IFamily_LoadGlyphFunc  family_load_glyph;
00068 
00069   } FTC_IFamilyClassRec;
00070 
00071   typedef const FTC_IFamilyClassRec*  FTC_IFamilyClass;
00072 
00073 #define FTC_IFAMILY_CLASS( x )  ((FTC_IFamilyClass)(x))
00074 
00075 #define FTC_CACHE__IFAMILY_CLASS( x ) \
00076           FTC_IFAMILY_CLASS( FTC_CACHE__GCACHE_CLASS(x)->family_class )
00077 
00078 
00079   /* can be used as a @FTC_Node_FreeFunc */
00080   FT_LOCAL( void )
00081   FTC_INode_Free( FTC_INode  inode,
00082                   FTC_Cache  cache );
00083 
00084   /* Can be used as @FTC_Node_NewFunc.  `gquery.index' and `gquery.family'
00085    * must be set correctly.  This function will call the `family_load_glyph'
00086    * method to load the FT_Glyph into the cache node.
00087    */
00088   FT_LOCAL( FT_Error )
00089   FTC_INode_New( FTC_INode   *pinode,
00090                  FTC_GQuery   gquery,
00091                  FTC_Cache    cache );
00092 
00093 #if 0
00094   /* can be used as @FTC_Node_WeightFunc */
00095   FT_LOCAL( FT_ULong )
00096   FTC_INode_Weight( FTC_INode  inode );
00097 #endif
00098 
00099 
00100  /* */
00101 
00102 FT_END_HEADER
00103 
00104 #endif /* __FTCIMAGE_H__ */
00105 
00106 
00107 /* END */

Generated on Tue Jul 5 14:13:45 2011 for ROOT_528-00b_version by  doxygen 1.5.1