tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ftcimage.h (2675B)


      1 /****************************************************************************
      2 *
      3 * ftcimage.h
      4 *
      5 *   FreeType Generic Image cache (specification)
      6 *
      7 * Copyright (C) 2000-2025 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 */
     17 
     18 
     19 /*
     20  * FTC_ICache is an _abstract_ cache used to store a single FT_Glyph
     21  * image per cache node.
     22  *
     23  * FTC_ICache extends FTC_GCache.  For an implementation example,
     24  * see FTC_ImageCache in `src/cache/ftbasic.c'.
     25  */
     26 
     27 
     28  /**************************************************************************
     29   *
     30   * Each image cache really manages FT_Glyph objects.
     31   *
     32   */
     33 
     34 
     35 #ifndef FTCIMAGE_H_
     36 #define FTCIMAGE_H_
     37 
     38 
     39 #include <freetype/ftcache.h>
     40 #include "ftcglyph.h"
     41 
     42 FT_BEGIN_HEADER
     43 
     44 
     45  /* the FT_Glyph image node type - we store only 1 glyph per node */
     46  typedef struct  FTC_INodeRec_
     47  {
     48    FTC_GNodeRec  gnode;
     49    FT_Glyph      glyph;
     50 
     51  } FTC_INodeRec, *FTC_INode;
     52 
     53 #define FTC_INODE( x )         ( (FTC_INode)( x ) )
     54 #define FTC_INODE_GINDEX( x )  FTC_GNODE( x )->gindex
     55 #define FTC_INODE_FAMILY( x )  FTC_GNODE( x )->family
     56 
     57  typedef FT_Error
     58  (*FTC_IFamily_LoadGlyphFunc)( FTC_Family  family,
     59                                FT_UInt     gindex,
     60                                FTC_Cache   cache,
     61                                FT_Glyph   *aglyph );
     62 
     63  typedef struct  FTC_IFamilyClassRec_
     64  {
     65    FTC_MruListClassRec        clazz;
     66    FTC_IFamily_LoadGlyphFunc  family_load_glyph;
     67 
     68  } FTC_IFamilyClassRec;
     69 
     70  typedef const FTC_IFamilyClassRec*  FTC_IFamilyClass;
     71 
     72 #define FTC_IFAMILY_CLASS( x )  ((FTC_IFamilyClass)(x))
     73 
     74 #define FTC_CACHE_IFAMILY_CLASS( x ) \
     75          FTC_IFAMILY_CLASS( FTC_CACHE_GCACHE_CLASS( x )->family_class )
     76 
     77 
     78  /* can be used as a @FTC_Node_FreeFunc */
     79  FT_LOCAL( void )
     80  FTC_INode_Free( FTC_INode  inode,
     81                  FTC_Cache  cache );
     82 
     83  /* Can be used as @FTC_Node_NewFunc.  `gquery.index' and `gquery.family'
     84   * must be set correctly.  This function will call the `family_load_glyph'
     85   * method to load the FT_Glyph into the cache node.
     86   */
     87  FT_LOCAL( FT_Error )
     88  FTC_INode_New( FTC_INode   *pinode,
     89                 FTC_GQuery   gquery,
     90                 FTC_Cache    cache );
     91 
     92 #if 0
     93  /* can be used as @FTC_Node_WeightFunc */
     94  FT_LOCAL( FT_ULong )
     95  FTC_INode_Weight( FTC_INode  inode );
     96 #endif
     97 
     98 
     99 /* */
    100 
    101 FT_END_HEADER
    102 
    103 #endif /* FTCIMAGE_H_ */
    104 
    105 
    106 /* END */