1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* ftcache.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* FreeType Cache subsystem (specification). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 7a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang/* Copyright 1996-2008, 2010, 2013 by */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTCACHE_H__ 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTCACHE_H__ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_GLYPH_H 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * <Section> 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * cache_subsystem 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * <Title> 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Cache Sub-System 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * <Abstract> 390a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * How to cache face, size, and glyph data with FreeType~2. 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * <Description> 420a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * This section describes the FreeType~2 cache sub-system, which is used 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * to limit the number of concurrently opened @FT_Face and @FT_Size 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * objects, as well as caching information like character maps and glyph 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * images while limiting their maximum memory usage. 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Note that all types and functions begin with the `FTC_' prefix. 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The cache is highly portable and thus doesn't know anything about the 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * fonts installed on your system, or how to access them. This implies 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the following scheme: 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * First, available or installed font faces are uniquely identified by 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FTC_FaceID values, provided to the cache by the client. Note that 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the cache only stores and compares these values, and doesn't try to 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * interpret them in any way. 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Second, the cache calls, only when needed, a client-provided function 59c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * to convert an @FTC_FaceID into a new @FT_Face object. The latter is 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * then completely managed by the cache, including its termination 61c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * through @FT_Done_Face. To monitor termination of face objects, the 62c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * finalizer callback in the `generic' field of the @FT_Face object can 63c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * be used, which might also be used to store the @FTC_FaceID of the 64c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner * face. 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Clients are free to map face IDs to anything else. The most simple 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * usage is to associate them to a (pathname,face_index) pair that is 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * used to call @FT_New_Face. However, more complex schemes are also 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * possible. 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Note that for the cache to work correctly, the face ID values must be 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * *persistent*, which means that the contents they point to should not 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * change at runtime, or that their value should not become invalid. 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If this is unavoidable (e.g., when a font is uninstalled at runtime), 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the cache get rid of any references to the old @FTC_FaceID it may 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * keep internally. Failure to do so will lead to incorrect behaviour 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * or even crashes. 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * To use the cache, start with calling @FTC_Manager_New to create a new 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FTC_Manager object, which models a single cache instance. You can 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * then look up @FT_Face and @FT_Size objects with 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If you want to use the charmap caching, call @FTC_CMapCache_New, then 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * later use @FTC_CMapCache_Lookup to perform the equivalent of 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_Get_Char_Index, only much faster. 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * later use @FTC_ImageCache_Lookup to retrieve the corresponding 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_Glyph objects from the cache. 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If you need lots of small bitmaps, it is much more memory efficient 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * returns @FTC_SBitRec structures, which are used to store small 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bitmaps directly. (A small bitmap is one whose metrics and 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * dimensions all fit into 8-bit integers). 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * We hope to also provide a kerning cache in the near future. 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * <Order> 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Manager 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_FaceID 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Face_Requester 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Manager_New 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Manager_Reset 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Manager_Done 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Manager_LookupFace 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Manager_LookupSize 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Manager_RemoveFaceID 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Node 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Node_Unref 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_ImageCache 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_ImageCache_New 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_ImageCache_Lookup 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_SBit 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_SBitCache 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_SBitCache_New 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_SBitCache_Lookup 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_CMapCache 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_CMapCache_New 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_CMapCache_Lookup 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project *************************************************************************/ 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** BASIC TYPE DEFINITIONS *****/ 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: FTC_FaceID 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * An opaque pointer type that is used to identity face objects. The 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * contents of such objects is application-dependent. 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * These pointers are typically used to point to a user-defined 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * structure containing a font file path, and face index. 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Never use NULL as a valid @FTC_FaceID. 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Face IDs are passed by the client to the cache manager, which calls, 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * when needed, the @FTC_Face_Requester to translate them into new 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_Face objects. 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If the content of a given face ID changes at runtime, or if the value 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * becomes invalid (e.g., when uninstalling a font), you should 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * immediately call @FTC_Manager_RemoveFaceID before any other cache 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * function. 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Failure to do so will result in incorrect behaviour or even 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * memory leaks and crashes. 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Pointer FTC_FaceID; 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************ 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Face_Requester 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A callback function provided by client applications. It is used by 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the cache manager to translate a given @FTC_FaceID into a new valid 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_Face object, on demand. 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * <Input> 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face_id :: 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The face ID to resolve. 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * library :: 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to a FreeType library object. 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * req_data :: 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Application-provided request data (see note below). 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * <Output> 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * aface :: 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A new @FT_Face handle. 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * <Return> 1990a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FreeType error code. 0~means success. 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * <Note> 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The third parameter `req_data' is the same as the one passed by the 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * client when @FTC_Manager_New is called. 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The face requester should not perform funny things on the returned 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face object, like creating a new @FT_Size for it, or setting a 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * transformation through @FT_Set_Transform! 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FTC_Face_Requester)( FTC_FaceID face_id, 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Library library, 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pointer request_data, 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Face* aface ); 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** CACHE MANAGER OBJECT *****/ 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_Manager */ 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This object corresponds to one instance of the cache-subsystem. */ 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* It is used to cache one or more @FT_Face objects, along with */ 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* corresponding @FT_Size objects. */ 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The manager intentionally limits the total number of opened */ 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_Face and @FT_Size objects to control memory usage. See the */ 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */ 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The manager is also used to cache `nodes' of various types while */ 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* limiting their total memory usage. */ 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* All limitations are enforced by keeping lists of managed objects */ 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* in most-recently-used order, and flushing old nodes to make room */ 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* for new ones. */ 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_ManagerRec_* FTC_Manager; 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_Node */ 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* An opaque handle to a cache node object. Each cache node is */ 2600a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* reference-counted. A node with a count of~0 might be flushed */ 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* out of a full cache whenever a lookup request is performed. */ 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 263aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* If you look up nodes, you have the ability to `acquire' them, */ 264aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* i.e., to increment their reference count. This will prevent the */ 265aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* node from being flushed out of the cache until you explicitly */ 266aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* `release' it (see @FTC_Node_Unref). */ 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ 269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_NodeRec_* FTC_Node; 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_Manager_New */ 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 2790a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Create a new cache manager. */ 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* library :: The parent FreeType library handle to use. */ 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_faces :: Maximum number of opened @FT_Face objects managed by */ 2850a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* this cache instance. Use~0 for defaults. */ 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_sizes :: Maximum number of opened @FT_Size objects managed by */ 2880a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* this cache instance. Use~0 for defaults. */ 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_bytes :: Maximum number of bytes to use for cached data nodes. */ 2910a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Use~0 for defaults. Note that this value does not */ 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* account for managed @FT_Face and @FT_Size objects. */ 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* requester :: An application-provided callback used to translate */ 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* face IDs into real @FT_Face objects. */ 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* req_data :: A generic pointer that is passed to the requester */ 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* each time it is called (see @FTC_Face_Requester). */ 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 3010a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* amanager :: A handle to a new manager object. 0~in case of */ 302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* failure. */ 303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 3050a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Manager_New( FT_Library library, 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt max_faces, 310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt max_sizes, 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong max_bytes, 312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Face_Requester requester, 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pointer req_data, 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Manager *amanager ); 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_Manager_Reset */ 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 3230a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Empty a given cache manager. This simply gets rid of all the */ 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* currently cached @FT_Face and @FT_Size objects within the manager. */ 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <InOut> */ 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* manager :: A handle to the manager. */ 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( void ) 330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Manager_Reset( FTC_Manager manager ); 331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_Manager_Done */ 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 3390a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Destroy a given manager after emptying it. */ 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* manager :: A handle to the target cache manager object. */ 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( void ) 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Manager_Done( FTC_Manager manager ); 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_Manager_LookupFace */ 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 3540a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Retrieve the @FT_Face object that corresponds to a given face ID */ 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* through a cache manager. */ 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* manager :: A handle to the cache manager. */ 359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* face_id :: The ID of the face object. */ 361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* aface :: A handle to the face object. */ 364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 3660a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The returned @FT_Face object is always owned by the manager. You */ 370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* should never try to discard it yourself. */ 371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The @FT_Face object doesn't necessarily have a current size object */ 373a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* (i.e., face->size can be~0). If you need a specific `font size', */ 374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* use @FTC_Manager_LookupSize instead. */ 375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Never change the face's transformation matrix (i.e., never call */ 377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the @FT_Set_Transform function) on a returned face! If you need */ 378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to transform glyphs, do it yourself after glyph loading. */ 379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* When you perform a lookup, out-of-memory errors are detected */ 381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* _within_ the lookup and force incremental flushes of the cache */ 382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* until enough memory is released for the lookup to succeed. */ 383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ 385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* already been completely flushed, and still no memory was available */ 386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* for the operation. */ 387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Manager_LookupFace( FTC_Manager manager, 390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_FaceID face_id, 391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Face *aface ); 392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_ScalerRec */ 398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used to describe a given character size in either */ 401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pixels or points to the cache manager. See */ 402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FTC_Manager_LookupSize. */ 403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* face_id :: The source face ID. */ 406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* width :: The character width. */ 408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* height :: The character height. */ 410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pixel :: A Boolean. If 1, the `width' and `height' fields are */ 412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* interpreted as integer pixel character sizes. */ 413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Otherwise, they are expressed as 1/64th of points. */ 414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 4150a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* x_res :: Only used when `pixel' is value~0 to indicate the */ 416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* horizontal resolution in dpi. */ 417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 4180a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* y_res :: Only used when `pixel' is value~0 to indicate the */ 419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* vertical resolution in dpi. */ 420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This type is mainly used to retrieve @FT_Size objects through the */ 423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache manager. */ 424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_ScalerRec_ 426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_FaceID face_id; 428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt width; 429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt height; 430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int pixel; 431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt x_res; 432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt y_res; 433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FTC_ScalerRec; 435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_Scaler */ 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A handle to an @FTC_ScalerRec structure. */ 444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_ScalerRec_* FTC_Scaler; 446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_Manager_LookupSize */ 452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Retrieve the @FT_Size object that corresponds to a given */ 455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FTC_ScalerRec pointer through a cache manager. */ 456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* manager :: A handle to the cache manager. */ 459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* scaler :: A scaler handle. */ 461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* asize :: A handle to the size object. */ 464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 4660a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The returned @FT_Size object is always owned by the manager. You */ 470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* should never try to discard it by yourself. */ 471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* You can access the parent @FT_Face object simply as `size->face' */ 473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* if you need it. Note that this object is also owned by the */ 474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* manager. */ 475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* When you perform a lookup, out-of-memory errors are detected */ 478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* _within_ the lookup and force incremental flushes of the cache */ 479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* until enough memory is released for the lookup to succeed. */ 480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ 482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* already been completely flushed, and still no memory is available */ 483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* for the operation. */ 484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Manager_LookupSize( FTC_Manager manager, 487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Scaler scaler, 488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Size *asize ); 489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_Node_Unref */ 495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Decrement a cache node's internal reference count. When the count */ 498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* reaches 0, it is not destroyed but becomes eligible for subsequent */ 499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache flushes. */ 500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* node :: The cache node handle. */ 503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* manager :: The cache manager handle. */ 505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( void ) 507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Node_Unref( FTC_Node node, 508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Manager manager ); 509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_Manager_RemoveFaceID 515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A special function used to indicate to the cache manager that 518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * a given @FTC_FaceID is no longer valid, either because its 519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * content changed, or because it was deallocated or uninstalled. 520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * manager :: 523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The cache manager handle. 524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face_id :: 526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The @FTC_FaceID to be removed. 527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This function flushes all nodes from the cache corresponding to this 530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `face_id', with the exception of nodes with a non-null reference 531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * count. 532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Such nodes are however modified internally so as to never appear 534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * in later lookups with the same `face_id' value, and to be immediately 535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * destroyed when released by all their users. 536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( void ) 539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Manager_RemoveFaceID( FTC_Manager manager, 540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_FaceID face_id ); 541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache_subsystem */ 547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_CMapCache 554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * An opaque handle used to model a charmap cache. This cache is to 557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hold character codes -> glyph indices mappings. 558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_CMapCacheRec_* FTC_CMapCache; 561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_CMapCache_New 567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Create a new charmap cache. 570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * manager :: 573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the cache manager. 574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @output: 576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * acache :: 577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A new cache handle. NULL in case of error. 578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 5800a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * FreeType error code. 0~means success. 581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Like all other caches, this one will be destroyed with the cache 584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * manager. 585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_CMapCache_New( FTC_Manager manager, 589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_CMapCache *acache ); 590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************ 593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 594049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @function: 595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_CMapCache_Lookup 596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Translate a character code into a glyph index, using the charmap 599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * cache. 600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * cache :: 603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A charmap cache handle. 604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face_id :: 606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The source face ID. 607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * cmap_index :: 6090a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * The index of the charmap in the source face. Any negative value 6100a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * means to use the cache @FT_Face's default charmap. 611049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * char_code :: 613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The character code (in the corresponding charmap). 614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 615049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 6160a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Glyph index. 0~means `no glyph'. 617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_UInt ) 620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_CMapCache_Lookup( FTC_CMapCache cache, 621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_FaceID face_id, 622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int cmap_index, 623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt32 char_code ); 624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache_subsystem */ 630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 631049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** IMAGE CACHE OBJECT *****/ 639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 644049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_ImageTypeRec 649049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A structure used to model the type of images in a glyph cache. 652049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @fields: 654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * face_id :: 655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The face ID. 656049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 657049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * width :: 658049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The width in pixels. 659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 660049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * height :: 661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The height in pixels. 662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * flags :: 664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The load flags, as in @FT_Load_Glyph. 665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 666049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 667049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_ImageTypeRec_ 668049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 669049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_FaceID face_id; 670049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int width; 671049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int height; 672049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int32 flags; 673049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 674049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FTC_ImageTypeRec; 675049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 677049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FTC_ImageType 681049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 682049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 683049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to an @FTC_ImageTypeRec structure. 684049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 685049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 686049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_ImageTypeRec_* FTC_ImageType; 687049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 688049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 689049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 690049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 691049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 692049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ 693049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (d1)->face_id == (d2)->face_id && \ 694049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (d1)->width == (d2)->width && \ 695049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (d1)->flags == (d2)->flags ) 696049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 697049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 698049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 699049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 700049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 701049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_ImageCache */ 702049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 703049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 704a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* A handle to a glyph image cache object. They are designed to */ 705049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* hold many distinct glyph images while not exceeding a certain */ 706049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* memory threshold. */ 707049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 708049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_ImageCacheRec_* FTC_ImageCache; 709049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 710049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 711049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 712049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 713049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 714049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_ImageCache_New */ 715049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 716049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 7170a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Create a new glyph image cache. */ 718049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 719049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 720049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* manager :: The parent manager for the image cache. */ 721049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 722049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 723049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* acache :: A handle to the new glyph image cache object. */ 724049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 725049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 7260a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 727049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 728049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 729049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_ImageCache_New( FTC_Manager manager, 730049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_ImageCache *acache ); 731049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 732049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 733049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 734049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 735049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 736049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_ImageCache_Lookup */ 737049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 738049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 7390a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Retrieve a given glyph image from a glyph image cache. */ 740049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 741049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 742049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache :: A handle to the source glyph image cache. */ 743049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 744049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* type :: A pointer to a glyph image type descriptor. */ 745049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 746049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gindex :: The glyph index to retrieve. */ 747049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 748049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 7490a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ 750049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* failure. */ 751049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 752049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* anode :: Used to return the address of of the corresponding cache */ 753049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* node after incrementing its reference count (see note */ 754049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* below). */ 755049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 756049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 7570a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 758049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 759049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 760049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The returned glyph is owned and managed by the glyph image cache. */ 761049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Never try to transform or discard it manually! You can however */ 762049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* create a copy with @FT_Glyph_Copy and modify the new one. */ 763049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 764049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If `anode' is _not_ NULL, it receives the address of the cache */ 765049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* node containing the glyph image, after increasing its reference */ 766049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* count. This ensures that the node (as well as the @FT_Glyph) will */ 767049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* always be kept in the cache until you call @FTC_Node_Unref to */ 768049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `release' it. */ 769049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 770049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If `anode' is NULL, the cache node is left unchanged, which means */ 771049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* that the @FT_Glyph could be flushed out of the cache on the next */ 772049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* call to one of the caching sub-system APIs. Don't assume that it */ 773049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* is persistent! */ 774049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 775049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 776049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_ImageCache_Lookup( FTC_ImageCache cache, 777049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_ImageType type, 778049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt gindex, 779049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Glyph *aglyph, 780049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Node *anode ); 781049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 782049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 783049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 784049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 785049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 786049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_ImageCache_LookupScaler */ 787049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 788049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 789049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */ 790049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to specify the face ID and its size. */ 791049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 792049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 793049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache :: A handle to the source glyph image cache. */ 794049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 795049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* scaler :: A pointer to a scaler descriptor. */ 796049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 797049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* load_flags :: The corresponding load flags. */ 798049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 799049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gindex :: The glyph index to retrieve. */ 800049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 801049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 8020a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ 803049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* failure. */ 804049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 805049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* anode :: Used to return the address of of the corresponding */ 806049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache node after incrementing its reference count */ 807049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (see note below). */ 808049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 809049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 8100a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 811049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 812049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 813049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The returned glyph is owned and managed by the glyph image cache. */ 814049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Never try to transform or discard it manually! You can however */ 815049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* create a copy with @FT_Glyph_Copy and modify the new one. */ 816049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 817049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If `anode' is _not_ NULL, it receives the address of the cache */ 818049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* node containing the glyph image, after increasing its reference */ 819049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* count. This ensures that the node (as well as the @FT_Glyph) will */ 820049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* always be kept in the cache until you call @FTC_Node_Unref to */ 821049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `release' it. */ 822049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 823049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If `anode' is NULL, the cache node is left unchanged, which means */ 824049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* that the @FT_Glyph could be flushed out of the cache on the next */ 825049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* call to one of the caching sub-system APIs. Don't assume that it */ 826049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* is persistent! */ 827049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 8280a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Calls to @FT_Set_Char_Size and friends have no effect on cached */ 8290a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* glyphs; you should always use the FreeType cache API instead. */ 8300a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* */ 831049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 832049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_ImageCache_LookupScaler( FTC_ImageCache cache, 833049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Scaler scaler, 834049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong load_flags, 835049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt gindex, 836049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Glyph *aglyph, 837049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Node *anode ); 838049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 839049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 840049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 841049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 842049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 843049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_SBit */ 844049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 845049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 846049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ 847049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* structure for details. */ 848049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 849049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_SBitRec_* FTC_SBit; 850049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 851049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 852049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 853049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 854049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 855049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_SBitRec */ 856049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 857049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 858049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A very compact structure used to describe a small glyph bitmap. */ 859049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 860049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 861049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* width :: The bitmap width in pixels. */ 862049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 863049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* height :: The bitmap height in pixels. */ 864049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 865049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* left :: The horizontal distance from the pen position to the */ 866049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* left bitmap border (a.k.a. `left side bearing', or */ 867049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `lsb'). */ 868049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 869049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* top :: The vertical distance from the pen position (on the */ 870049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* baseline) to the upper bitmap border (a.k.a. `top */ 871049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* side bearing'). The distance is positive for upwards */ 8720a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* y~coordinates. */ 873049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 874049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format :: The format of the glyph bitmap (monochrome or gray). */ 875049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 8760a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* max_grays :: Maximum gray level value (in the range 1 to~255). */ 877049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 878049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pitch :: The number of bytes per bitmap line. May be positive */ 879049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* or negative. */ 880049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 881049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* xadvance :: The horizontal advance width in pixels. */ 882049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 883049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* yadvance :: The vertical advance height in pixels. */ 884049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 885049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* buffer :: A pointer to the bitmap pixels. */ 886049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 887049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_SBitRec_ 888049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 889049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte width; 890049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte height; 891049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char left; 892049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char top; 893049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 894049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte format; 895049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte max_grays; 896049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short pitch; 897049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char xadvance; 898049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Char yadvance; 899049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 900049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* buffer; 901049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 902049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FTC_SBitRec; 903049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 904049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 905049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 906049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 907049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Type> */ 908049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_SBitCache */ 909049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 910049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 911049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A handle to a small bitmap cache. These are special cache objects */ 912049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ 913049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* much more efficient way than the traditional glyph image cache */ 914049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* implemented by @FTC_ImageCache. */ 915049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 916049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FTC_SBitCacheRec_* FTC_SBitCache; 917049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 918049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 919049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 920049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 921049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 922049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_SBitCache_New */ 923049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 924049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 9250a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Create a new cache to store small glyph bitmaps. */ 926049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 927049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 928049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* manager :: A handle to the source cache manager. */ 929049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 930049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 931049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* acache :: A handle to the new sbit cache. NULL in case of error. */ 932049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 933049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 9340a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 935049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 936049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 937049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_SBitCache_New( FTC_Manager manager, 938049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_SBitCache *acache ); 939049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 940049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 941049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 942049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 943049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 944049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_SBitCache_Lookup */ 945049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 946049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 9470a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Look up a given small glyph bitmap in a given sbit cache and */ 948049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `lock' it to prevent its flushing from the cache until needed. */ 949049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 950049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 951049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache :: A handle to the source sbit cache. */ 952049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 953049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* type :: A pointer to the glyph image type descriptor. */ 954049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 955049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gindex :: The glyph index. */ 956049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 957049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 958049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* sbit :: A handle to a small bitmap descriptor. */ 959049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 960049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* anode :: Used to return the address of of the corresponding cache */ 961049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* node after incrementing its reference count (see note */ 962049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* below). */ 963049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 964049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 9650a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 966049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 967049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 968049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The small bitmap descriptor and its bit buffer are owned by the */ 969049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache and should never be freed by the application. They might */ 970049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* as well disappear from memory on the next cache lookup, so don't */ 971049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* treat them as persistent data. */ 972049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 9730a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* The descriptor's `buffer' field is set to~0 to indicate a missing */ 974049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph bitmap. */ 975049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 976049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If `anode' is _not_ NULL, it receives the address of the cache */ 977049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* node containing the bitmap, after increasing its reference count. */ 978049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This ensures that the node (as well as the image) will always be */ 979049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ 980049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 981049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If `anode' is NULL, the cache node is left unchanged, which means */ 982049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* that the bitmap could be flushed out of the cache on the next */ 983049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* call to one of the caching sub-system APIs. Don't assume that it */ 984049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* is persistent! */ 985049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 986049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 987049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_SBitCache_Lookup( FTC_SBitCache cache, 988049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_ImageType type, 989049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt gindex, 990049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_SBit *sbit, 991049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Node *anode ); 992049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 993049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 994049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 995049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 996049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 997049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FTC_SBitCache_LookupScaler */ 998049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 999049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 1000049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */ 1001049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* to specify the face ID and its size. */ 1002049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1003049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 1004049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache :: A handle to the source sbit cache. */ 1005049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1006049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* scaler :: A pointer to the scaler descriptor. */ 1007049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1008049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* load_flags :: The corresponding load flags. */ 1009049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1010049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* gindex :: The glyph index. */ 1011049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1012049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 1013049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* sbit :: A handle to a small bitmap descriptor. */ 1014049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1015049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* anode :: Used to return the address of of the corresponding */ 1016049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache node after incrementing its reference count */ 1017049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (see note below). */ 1018049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1019049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 10200a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 1021049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1022049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 1023049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The small bitmap descriptor and its bit buffer are owned by the */ 1024049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cache and should never be freed by the application. They might */ 1025049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* as well disappear from memory on the next cache lookup, so don't */ 1026049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* treat them as persistent data. */ 1027049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 10280a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* The descriptor's `buffer' field is set to~0 to indicate a missing */ 1029049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph bitmap. */ 1030049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1031049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If `anode' is _not_ NULL, it receives the address of the cache */ 1032049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* node containing the bitmap, after increasing its reference count. */ 1033049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This ensures that the node (as well as the image) will always be */ 1034049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ 1035049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1036049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* If `anode' is NULL, the cache node is left unchanged, which means */ 1037049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* that the bitmap could be flushed out of the cache on the next */ 1038049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* call to one of the caching sub-system APIs. Don't assume that it */ 1039049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* is persistent! */ 1040049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1041049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 1042049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_SBitCache_LookupScaler( FTC_SBitCache cache, 1043049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Scaler scaler, 1044049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong load_flags, 1045049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt gindex, 1046049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_SBit *sbit, 1047049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FTC_Node *anode ); 1048049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1049049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1050049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 1051049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1052049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 1053049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1054049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTCACHE_H__ */ 1055049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1056049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 1057049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 1058