273 lines
16 KiB
C
273 lines
16 KiB
C
/***************************************************************************/
|
|
/* */
|
|
/* ftcsbits.h */
|
|
/* */
|
|
/* A small-bitmap 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. */
|
|
/* */
|
|
/***************************************************************************/
|
|
|
|
|
|
#ifndef __FTCSBITS_H__
|
|
#define __FTCSBITS_H__
|
|
|
|
|
|
#include <ft2build.h>
|
|
#include FT_CACHE_H
|
|
#include FT_CACHE_IMAGE_H
|
|
|
|
|
|
FT_BEGIN_HEADER
|
|
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* <Section> */
|
|
/* cache_subsystem */
|
|
/* */
|
|
/*************************************************************************/
|
|
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* <Type> */
|
|
/* FTC_SBit */
|
|
/* */
|
|
/* <Description> */
|
|
/* A handle to a small bitmap descriptor. See the @FTC_SBitRec */
|
|
/* structure for details. */
|
|
/* */
|
|
typedef struct FTC_SBitRec_* FTC_SBit;
|
|
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* <Struct> */
|
|
/* FTC_SBitRec */
|
|
/* */
|
|
/* <Description> */
|
|
/* A very compact structure used to describe a small glyph bitmap. */
|
|
/* */
|
|
/* <Fields> */
|
|
/* width :: The bitmap width in pixels. */
|
|
/* */
|
|
/* height :: The bitmap height in pixels. */
|
|
/* */
|
|
/* left :: The horizontal distance from the pen position to the */
|
|
/* left bitmap border (a.k.a. `left side bearing', or */
|
|
/* `lsb'). */
|
|
/* */
|
|
/* top :: The vertical distance from the pen position (on the */
|
|
/* baseline) to the upper bitmap border (a.k.a. `top side */
|
|
/* bearing'). The distance is positive for upwards */
|
|
/* Y coordinates. */
|
|
/* */
|
|
/* format :: The format of the glyph bitmap (monochrome or gray). */
|
|
/* */
|
|
/* pitch :: The number of bytes per bitmap line. May be positive */
|
|
/* or negative. */
|
|
/* */
|
|
/* xadvance :: The horizontal advance width in pixels. */
|
|
/* */
|
|
/* yadvance :: The vertical advance height in pixels. */
|
|
/* */
|
|
/* buffer :: A pointer to the bitmap pixels. */
|
|
/* */
|
|
typedef struct FTC_SBitRec_
|
|
{
|
|
FT_Byte width;
|
|
FT_Byte height;
|
|
FT_Char left;
|
|
FT_Char top;
|
|
|
|
FT_Byte format;
|
|
FT_Char pitch;
|
|
FT_Char xadvance;
|
|
FT_Char yadvance;
|
|
|
|
FT_Byte* buffer;
|
|
|
|
} FTC_SBitRec;
|
|
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* <Type> */
|
|
/* FTC_SBitCache */
|
|
/* */
|
|
/* <Description> */
|
|
/* A handle to a small bitmap cache. These are special cache objects */
|
|
/* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */
|
|
/* much more efficient way than the traditional glyph image cache */
|
|
/* implemented by @FTC_ImageCache. */
|
|
/* */
|
|
typedef struct FTC_SBitCacheRec_* FTC_SBitCache;
|
|
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* <Type> */
|
|
/* FTC_SBit_Cache */
|
|
/* */
|
|
/* <Description> */
|
|
/* DEPRECATED. Use @FTC_SBitCache instead. */
|
|
/* */
|
|
typedef FTC_SBitCache FTC_SBit_Cache;
|
|
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* <Function> */
|
|
/* FTC_SBitCache_New */
|
|
/* */
|
|
/* <Description> */
|
|
/* Creates a new cache to store small glyph bitmaps. */
|
|
/* */
|
|
/* <Input> */
|
|
/* manager :: A handle to the source cache manager. */
|
|
/* */
|
|
/* <Output> */
|
|
/* acache :: A handle to the new sbit cache. NULL in case of error. */
|
|
/* */
|
|
/* <Return> */
|
|
/* FreeType error code. 0 means success. */
|
|
/* */
|
|
FT_EXPORT( FT_Error )
|
|
FTC_SBitCache_New( FTC_Manager manager,
|
|
FTC_SBitCache *acache );
|
|
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* <Function> */
|
|
/* FTC_SBitCache_Lookup */
|
|
/* */
|
|
/* <Description> */
|
|
/* Looks up a given small glyph bitmap in a given sbit cache and */
|
|
/* "lock" it to prevent its flushing from the cache until needed */
|
|
/* */
|
|
/* <Input> */
|
|
/* cache :: A handle to the source sbit cache. */
|
|
/* */
|
|
/* desc :: A pointer to the glyph image descriptor. */
|
|
/* */
|
|
/* gindex :: The glyph index. */
|
|
/* */
|
|
/* <Output> */
|
|
/* sbit :: A handle to a small bitmap descriptor. */
|
|
/* */
|
|
/* 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 small bitmap descriptor and its bit buffer are owned by the */
|
|
/* cache and should never be freed by the application. They might */
|
|
/* as well disappear from memory on the next cache lookup, so don't */
|
|
/* treat them as persistent data. */
|
|
/* */
|
|
/* The descriptor's `buffer' field is set to 0 to indicate a missing */
|
|
/* glyph bitmap. */
|
|
/* */
|
|
/* If "anode" is _not_ NULL, it receives the address of the cache */
|
|
/* node containing the bitmap, after increasing its reference count. */
|
|
/* This ensures that the node (as well as the image) 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 bitmap 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_SBitCache_Lookup( FTC_SBitCache cache,
|
|
FTC_ImageDesc* desc,
|
|
FT_UInt gindex,
|
|
FTC_SBit *sbit,
|
|
FTC_Node *anode );
|
|
|
|
|
|
/* */
|
|
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* <Function> */
|
|
/* FTC_SBit_Cache_New */
|
|
/* */
|
|
/* <Description> */
|
|
/* DEPRECATED. Use @FTC_SBitCache_New instead. */
|
|
/* */
|
|
/* Creates a new cache to store small glyph bitmaps. */
|
|
/* */
|
|
/* <Input> */
|
|
/* manager :: A handle to the source cache manager. */
|
|
/* */
|
|
/* <Output> */
|
|
/* acache :: A handle to the new sbit cache. NULL in case of error. */
|
|
/* */
|
|
/* <Return> */
|
|
/* FreeType error code. 0 means success. */
|
|
/* */
|
|
FT_EXPORT( FT_Error )
|
|
FTC_SBit_Cache_New( FTC_Manager manager,
|
|
FTC_SBit_Cache *acache );
|
|
|
|
|
|
/*************************************************************************/
|
|
/* */
|
|
/* <Function> */
|
|
/* FTC_SBit_Cache_Lookup */
|
|
/* */
|
|
/* <Description> */
|
|
/* DEPRECATED. Use @FTC_SBitCache_Lookup instead. */
|
|
/* */
|
|
/* Looks up a given small glyph bitmap in a given sbit cache. */
|
|
/* */
|
|
/* <Input> */
|
|
/* cache :: A handle to the source sbit cache. */
|
|
/* */
|
|
/* desc :: A pointer to the glyph image descriptor. */
|
|
/* */
|
|
/* gindex :: The glyph index. */
|
|
/* */
|
|
/* <Output> */
|
|
/* sbit :: A handle to a small bitmap descriptor. */
|
|
/* */
|
|
/* <Return> */
|
|
/* FreeType error code. 0 means success. */
|
|
/* */
|
|
/* <Note> */
|
|
/* The small bitmap descriptor and its bit buffer are owned by the */
|
|
/* cache and should never be freed by the application. They might */
|
|
/* as well disappear from memory on the next cache lookup, so don't */
|
|
/* treat them as persistent data. */
|
|
/* */
|
|
/* The descriptor's `buffer' field is set to 0 to indicate a missing */
|
|
/* glyph bitmap. */
|
|
/* */
|
|
FT_EXPORT( FT_Error )
|
|
FTC_SBit_Cache_Lookup( FTC_SBit_Cache cache,
|
|
FTC_Image_Desc* desc,
|
|
FT_UInt gindex,
|
|
FTC_SBit *sbit );
|
|
|
|
|
|
FT_END_HEADER
|
|
|
|
#endif /* __FTCSBITS_H__ */
|
|
|
|
|
|
/* END */
|