Viewing file: ftcimage.h (17.5 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/***************************************************************************/ /* */ /* ftcimage.h */ /* */ /* FreeType Image cache (specification). */ /* */ /* Copyright 2000-2001 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ /* modified, and distributed under the terms of the FreeType project */ /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ /* this file you indicate that you have read the license and */ /* understand and accept it fully. */ /* */ /***************************************************************************/
/*************************************************************************/ /* */ /* Each image cache really manages FT_Glyph objects. */ /* */ /*************************************************************************/
#ifndef __FTCIMAGE_H__ #define __FTCIMAGE_H__
#include <ft2build.h> #include FT_CACHE_H
FT_BEGIN_HEADER
/*************************************************************************/ /* */ /* <Section> */ /* cache_subsystem */ /* */ /*************************************************************************/
/*************************************************************************/ /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** IMAGE CACHE OBJECT *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ /*************************************************************************/
#define FTC_IMAGE_FORMAT( x ) ( (x) & 7 )
#define ftc_image_format_bitmap 0x0000 #define ftc_image_format_outline 0x0001
#define ftc_image_format_mask 0x000F
#define ftc_image_flag_monochrome 0x0010 #define ftc_image_flag_unhinted 0x0020 #define ftc_image_flag_autohinted 0x0040 #define ftc_image_flag_unscaled 0x0080 #define ftc_image_flag_no_sbits 0x0100
/* monochrome bitmap */ #define ftc_image_mono ftc_image_format_bitmap | \ ftc_image_flag_monochrome
/* anti-aliased bitmap */ #define ftc_image_grays ftc_image_format_bitmap
/* scaled outline */ #define ftc_image_outline ftc_image_format_outline
/*************************************************************************/ /* */ /* <Struct> */ /* FTC_ImageDesc */ /* */ /* <Description> */ /* A simple structure used to describe a given glyph image category. */ /* Note that this is different from @FTC_Image_Desc. */ /* */ /* <Fields> */ /* size :: An @FTC_SizeRec used to describe the glyph's face and */ /* size. */ /* */ /* type :: The glyph image's type. Note that it is a 32-bit uint. */ /* */ /* <Note> */ /* This type deprecates @FTC_Image_Desc. */ /* */ typedef struct FTC_ImageDesc_ { FTC_FontRec font; FT_UInt32 type;
} FTC_ImageDesc;
/* */
#define FTC_IMAGE_DESC_COMPARE( d1, d2 ) \ ( FTC_FONT_COMPARE( &(d1)->font, &(d2)->font ) && \ (d1)->type == (d2)->type )
#define FTC_IMAGE_DESC_HASH( d ) \ (FT_UFast)( FTC_FONT_HASH( &(d)->font ) ^ \ ( (d)->type << 4 ) )
/*************************************************************************/ /* */ /* <Type> */ /* FTC_ImageCache */ /* */ /* <Description> */ /* A handle to an glyph image cache object. They are designed to */ /* hold many distinct glyph images while not exceeding a certain */ /* memory threshold. */ /* */ typedef struct FTC_ImageCacheRec_* FTC_ImageCache;
/*************************************************************************/ /* */ /* <Function> */ /* FTC_ImageCache_New */ /* */ /* <Description> */ /* Creates a new glyph image cache. */ /* */ /* <Input> */ /* manager :: The parent manager for the image cache. */ /* */ /* <Output> */ /* acache :: A handle to the new glyph image cache object. */ /* */ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ FT_EXPORT( FT_Error ) FTC_ImageCache_New( FTC_Manager manager, FTC_ImageCache *acache );
/*************************************************************************/ /* */ /* <Function> */ /* FTC_ImageCache_Lookup */ /* */ /* <Description> */ /* Retrieves a given glyph image from a glyph image cache. */ /* */ /* <Input> */ /* cache :: A handle to the source glyph image cache. */ /* */ /* desc :: A pointer to a glyph image descriptor. */ /* */ /* gindex :: The glyph index to retrieve. */ /* */ /* <Output> */ /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ /* failure. */ /* */ /* anode :: Used to return the address of of the corresponding cache */ /* node after incrementing its reference count (see note */ /* below). */ /* */ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ /* <Note> */ /* The returned glyph is owned and managed by the glyph image cache. */ /* Never try to transform or discard it manually! You can however */ /* create a copy with @FT_Glyph_Copy and modify the new one. */ /* */ /* If "anode" is _not_ NULL, it receives the address of the cache */ /* node containing the glyph image, after increasing its reference */ /* count. This ensures that the node (as well as the FT_Glyph) will */ /* always be kept in the cache until you call @FTC_Node_Unref to */ /* "release" it. */ /* */ /* If "anode" is NULL, the cache node is left unchanged, which means */ /* that the FT_Glyph could be flushed out of the cache on the next */ /* call to one of the caching sub-system APIs. Don't assume that it */ /* is persistent! */ /* */ FT_EXPORT( FT_Error ) FTC_ImageCache_Lookup( FTC_ImageCache cache, FTC_ImageDesc* desc, FT_UInt gindex, FT_Glyph *aglyph, FTC_Node *anode );
/* */
/*************************************************************************/ /* */ /* <Struct> */ /* FTC_Image_Desc */ /* */ /* <Description> */ /* THIS TYPE IS DEPRECATED. Use @FTC_ImageDesc instead. */ /* */ /* A simple structure used to describe a given glyph image category. */ /* */ /* <Fields> */ /* size :: An @FTC_SizeRec used to describe the glyph's face */ /* and size. */ /* */ /* image_type :: The glyph image's type. */ /* */ typedef struct FTC_Image_Desc_ { FTC_FontRec font; FT_UInt image_type;
} FTC_Image_Desc;
/*************************************************************************/ /* */ /* <Type> */ /* FTC_Image_Cache */ /* */ /* <Description> */ /* THIS TYPE IS DEPRECATED. Use @FTC_ImageCache instead. */ /* */ typedef FTC_ImageCache FTC_Image_Cache;
/*************************************************************************/ /* */ /* <Function> */ /* FTC_Image_Cache_New */ /* */ /* <Description> */ /* THIS FUNCTION IS DEPRECATED. Use @FTC_ImageCache_New instead. */ /* */ /* Creates a new glyph image cache. */ /* */ /* <Input> */ /* manager :: The parent manager for the image cache. */ /* */ /* <Output> */ /* acache :: A handle to the new glyph image cache object. */ /* */ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ FT_EXPORT( FT_Error ) FTC_Image_Cache_New( FTC_Manager manager, FTC_Image_Cache *acache );
/*************************************************************************/ /* */ /* <Function> */ /* FTC_Image_Cache_Lookup */ /* */ /* <Description> */ /* THIS FUNCTION IS DEPRECATED. Use @FTC_ImageCache_Lookup instead. */ /* */ /* <Input> */ /* cache :: A handle to the source glyph image cache. */ /* */ /* desc :: A pointer to a glyph image descriptor. */ /* */ /* gindex :: The glyph index to retrieve. */ /* */ /* <Output> */ /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ /* failure. */ /* */ /* <Return> */ /* FreeType error code. 0 means success. */ /* */ /* <Note> */ /* The returned glyph is owned and managed by the glyph image cache. */ /* Never try to transform or discard it manually! You can however */ /* create a copy with @FT_Glyph_Copy and modify the new one. */ /* */ /* Because the glyph image cache limits the total amount of memory */ /* taken by the glyphs it holds, the returned glyph might disappear */ /* on a later invocation of this function! It is a cache after */ /* all... */ /* */ /* Use this function to "lock" the glyph as long as it is needed. */ /* */ FT_EXPORT( FT_Error ) FTC_Image_Cache_Lookup( FTC_Image_Cache cache, FTC_Image_Desc* desc, FT_UInt gindex, FT_Glyph *aglyph );
/* */
FT_END_HEADER
#endif /* __FTCIMAGE_H__ */
/* END */
|