1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* ftmodapi.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* FreeType modules public interface (specification). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 7a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang/* Copyright 1996-2003, 2006, 2008-2010, 2012, 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 __FTMODAPI_H__ 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTMODAPI_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_FREETYPE_H 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef FREETYPE_H 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "freetype.h of FreeType 1 has been loaded!" 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "Please fix the directory search order for header files" 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#error "so that freetype.h of FreeType 2 is found first." 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module_management */ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Title> */ 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Module Management */ 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Abstract> */ 45a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* How to add, upgrade, remove, and control modules from FreeType. */ 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The definitions below are used to manage modules within FreeType. */ 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Modules can be added, upgraded, and removed at runtime. */ 50a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* Additionally, some module properties can be controlled also. */ 51a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* */ 52a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* Here is a list of possible values of the `module_name' field in */ 53a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* the @FT_Module_Class structure. */ 54a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* */ 55a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* { */ 56a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* autofitter */ 57a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* bdf */ 58a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* cff */ 59a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* gxvalid */ 60a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* otvalid */ 61a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* pcf */ 62a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* pfr */ 63a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* psaux */ 64a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* pshinter */ 65a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* psnames */ 66a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* raster1, raster5 */ 67a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* sfnt */ 68a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* smooth, smooth-lcd, smooth-lcdv */ 69a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* truetype */ 70a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* type1 */ 71a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* type42 */ 72a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* t1cid */ 73a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* winfonts */ 74a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* } */ 75a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* */ 76a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* Note that the FreeType Cache sub-system is not a FreeType module. */ 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module bit flags */ 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_RENDERER 2 /* this module is a renderer */ 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_STYLER 8 /* this module is a styler */ 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* scalable fonts */ 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* support vector outlines */ 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* own hinter */ 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* deprecated values */ 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_font_driver FT_MODULE_FONT_DRIVER 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_renderer FT_MODULE_RENDERER 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_hinter FT_MODULE_HINTER 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_styler FT_MODULE_STYLER 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Pointer FT_Module_Interface; 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Module_Constructor */ 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A function used to initialize (not create) a new module object. */ 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module :: The module to initialize. */ 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Module_Constructor)( FT_Module module ); 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Module_Destructor */ 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A function used to finalize (not destroy) a given module object. */ 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module :: The module to finalize. */ 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Module_Destructor)( FT_Module module ); 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <FuncType> */ 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Module_Requester */ 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A function used to query a given module for a specific interface. */ 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 148a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /* module :: The module to be searched. */ 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* name :: The name of the interface in the module. */ 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Module_Interface 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Module_Requester)( FT_Module module, 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const char* name ); 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Module_Class */ 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The module class descriptor. */ 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module_flags :: Bit flags describing the module. */ 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module_size :: The size of one module object/instance in */ 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bytes. */ 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module_name :: The name of the module. */ 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module_version :: The version, as a 16.16 fixed number */ 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (major.minor). */ 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module_requires :: The version of FreeType this module requires, */ 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* as a 16.16 fixed number (major.minor). Starts */ 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* at version 2.0, i.e., 0x20000. */ 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module_init :: The initializing function. */ 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module_done :: The finalizing function. */ 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* get_interface :: The interface requesting function. */ 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_Module_Class_ 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong module_flags; 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long module_size; 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_String* module_name; 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed module_version; 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed module_requires; 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const void* module_interface; 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Module_Constructor module_init; 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Module_Destructor module_done; 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Module_Requester get_interface; 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_Module_Class; 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Add_Module */ 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 2090a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Add a new module to a given library instance. */ 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <InOut> */ 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* library :: A handle to the library object. */ 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* clazz :: A pointer to class descriptor for the module. */ 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 2180a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* An error will be returned if a module already exists by that name, */ 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* or if the module requires a version of FreeType that is too great. */ 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Add_Module( FT_Library library, 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Module_Class* clazz ); 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 /* <Function> */ 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Get_Module */ 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 2350a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Find a module by its name. */ 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* library :: A handle to the library object. */ 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module_name :: The module's name (as an ASCII string). */ 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 2430a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* A module handle. 0~if none was found. */ 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FreeType's internal modules aren't documented very well, and you */ 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* should look up the source code for details. */ 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Module ) 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Get_Module( FT_Library library, 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const char* module_name ); 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Remove_Module */ 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 2600a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Remove a given module from a library instance. */ 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <InOut> */ 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* library :: A handle to a library object. */ 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* module :: A handle to a module object. */ 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 2690a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* The module object is destroyed by the function in case of success. */ 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Remove_Module( FT_Library library, 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Module module ); 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 279a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /********************************************************************** 280a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 281a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @function: 282a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * FT_Property_Set 283a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 284a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @description: 285a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * Set a property for a given module. 286a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 287a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @input: 288a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * library :: 289a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * A handle to the library the module is part of. 290a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 291a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * module_name :: 292a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * The module name. 293a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 294a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * property_name :: 295a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * The property name. Properties are described in the `Synopsis' 296a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * subsection of the module's documentation. 297a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 298a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * Note that only a few modules have properties. 299a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 300a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * value :: 301a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * A generic pointer to a variable or structure which gives the new 302a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * value of the property. The exact definition of `value' is 303a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * dependent on the property; see the `Synopsis' subsection of the 304a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * module's documentation. 305a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 306a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @return: 307a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * FreeType error code. 0~means success. 308a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 309a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @note: 310a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * If `module_name' isn't a valid module name, or `property_name' 311a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * doesn't specify a valid property, or if `value' doesn't represent a 312a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * valid value for the given property, an error is returned. 313a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 314a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * The following example sets property `bar' (a simple integer) in 315a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * module `foo' to value~1. 316a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 317a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * { 318a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * FT_UInt bar; 319a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 320a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 321a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * bar = 1; 322a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * FT_Property_Set( library, "foo", "bar", &bar ); 323a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * } 324a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 325a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * Note that the FreeType Cache sub-system doesn't recognize module 326a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * property changes. To avoid glyph lookup confusion within the cache 327a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * you should call @FTC_Manager_Reset to completely flush the cache if 328a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * a module property gets changed after @FTC_Manager_New has been 329a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * called. 330a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 331a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * It is not possible to set properties of the FreeType Cache 332a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * sub-system itself with FT_Property_Set; use @FTC_Property_Set 333a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * instead. 334a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 335a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @since: 336a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 2.4.11 337a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 338a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang */ 339a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang FT_EXPORT( FT_Error ) 340a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang FT_Property_Set( FT_Library library, 341a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang const FT_String* module_name, 342a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang const FT_String* property_name, 343a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang const void* value ); 344a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang 345a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang 346a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang /********************************************************************** 347a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 348a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @function: 349a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * FT_Property_Get 350a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 351a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @description: 352a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * Get a module's property value. 353a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 354a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @input: 355a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * library :: 356a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * A handle to the library the module is part of. 357a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 358a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * module_name :: 359a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * The module name. 360a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 361a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * property_name :: 362a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * The property name. Properties are described in the `Synopsis' 363a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * subsection of the module's documentation. 364a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 365a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @inout: 366a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * value :: 367a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * A generic pointer to a variable or structure which gives the 368a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * value of the property. The exact definition of `value' is 369a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * dependent on the property; see the `Synopsis' subsection of the 370a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * module's documentation. 371a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 372a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @return: 373a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * FreeType error code. 0~means success. 374a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 375a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @note: 376a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * If `module_name' isn't a valid module name, or `property_name' 377a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * doesn't specify a valid property, or if `value' doesn't represent a 378a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * valid value for the given property, an error is returned. 379a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 380a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * The following example gets property `baz' (a range) in module `foo'. 381a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 382a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * { 383a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * typedef range_ 384a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * { 385a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * FT_Int32 min; 386a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * FT_Int32 max; 387a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 388a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * } range; 389a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 390a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * range baz; 391a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 392a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 393a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * FT_Property_Get( library, "foo", "baz", &baz ); 394a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * } 395a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 396a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * It is not possible to retrieve properties of the FreeType Cache 397a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * sub-system with FT_Property_Get; use @FTC_Property_Get instead. 398a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 399a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * @since: 400a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 2.4.11 401a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 402a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang */ 403a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang FT_EXPORT( FT_Error ) 404a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang FT_Property_Get( FT_Library library, 405a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang const FT_String* module_name, 406a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang const FT_String* property_name, 407a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang void* value ); 408a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang 409a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang 410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 413aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* FT_Reference_Library */ 414aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 415aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* <Description> */ 416aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* A counter gets initialized to~1 at the time an @FT_Library */ 417aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* structure is created. This function increments the counter. */ 418aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* @FT_Done_Library then only destroys a library if the counter is~1, */ 419aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* otherwise it simply decrements the counter. */ 420aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 421aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* This function helps in managing life-cycles of structures which */ 422aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* reference @FT_Library objects. */ 423aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 424aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* <Input> */ 425aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* library :: A handle to a target library object. */ 426aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 427aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* <Return> */ 428aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* FreeType error code. 0~means success. */ 429aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 430aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* <Since> */ 431aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* 2.4.2 */ 432aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 433aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich FT_EXPORT( FT_Error ) 434aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich FT_Reference_Library( FT_Library library ); 435aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich 436aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich 437aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /*************************************************************************/ 438aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 439aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* <Function> */ 440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_New_Library */ 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This function is used to create a new FreeType library instance */ 444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* from a given memory object. It is thus possible to use libraries */ 445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* with distinct memory allocators within the same program. */ 446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 447295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* Normally, you would call this function (followed by a call to */ 448295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */ 449295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* instead of @FT_Init_FreeType to initialize the FreeType library. */ 450295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* */ 451aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a */ 452aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* library instance. */ 453aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* memory :: A handle to the original memory object. */ 456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Output> */ 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* alibrary :: A pointer to handle of a new library object. */ 459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 4610a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 463aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* <Note> */ 464aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* See the discussion of reference counters in the description of */ 465aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* @FT_Reference_Library. */ 466aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_New_Library( FT_Memory memory, 469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Library *alibrary ); 470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Done_Library */ 476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 4780a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Discard a given library object. This closes all drivers and */ 479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* discards all resource objects. */ 480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* library :: A handle to the target library. */ 483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Return> */ 4850a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* FreeType error code. 0~means success. */ 486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 487aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* <Note> */ 488aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* See the discussion of reference counters in the description of */ 489aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* @FT_Reference_Library. */ 490aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich /* */ 491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_Error ) 492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Done_Library( FT_Library library ); 493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_DebugHook_Func)( void* arg ); 498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Set_Debug_Hook */ 504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 5060a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Set a debug hook function for debugging the interpreter of a font */ 507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* format. */ 508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <InOut> */ 510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* library :: A handle to the library object. */ 511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Input> */ 513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* hook_index :: The index of the debug hook. You should use the */ 514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* values defined in `ftobjs.h', e.g., */ 515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* `FT_DEBUG_HOOK_TRUETYPE'. */ 516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* debug_hook :: The function used to debug the interpreter. */ 518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Note> */ 520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Currently, four debug hook slots are available, but only two (for */ 5210a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* the TrueType and the Type~1 interpreter) are defined. */ 522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* Since the internal headers of FreeType are no longer installed, */ 524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ 525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This is a bug and will be fixed in a forthcoming release. */ 526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( void ) 528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Set_Debug_Hook( FT_Library library, 529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt hook_index, 530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_DebugHook_Func debug_hook ); 531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Function> */ 536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FT_Add_Default_Modules */ 537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 5390a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* Add the set of default drivers to a given library object. */ 540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This is only useful when you create a library object with */ 541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* @FT_New_Library (usually to plug a custom memory manager). */ 542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <InOut> */ 544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* library :: A handle to a new library object. */ 545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( void ) 547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Add_Default_Modules( FT_Library library ); 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 * 553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @section: 554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * truetype_engine 555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @title: 557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The TrueType Engine 558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @abstract: 560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * TrueType bytecode support. 561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This section contains a function used to query the level of TrueType 564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bytecode support compiled in this version of the library. 565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************** 570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @enum: 572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_TrueTypeEngineType 573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A list of values describing which kind of TrueType bytecode 576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * engine is implemented in a given FT_Library instance. It is used 577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * by the @FT_Get_TrueType_Engine_Type function. 578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @values: 580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_TRUETYPE_ENGINE_TYPE_NONE :: 581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The library doesn't implement any kind of bytecode interpreter. 582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: 584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The library implements a bytecode interpreter that doesn't 585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * support the patented operations of the TrueType virtual machine. 586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Its main use is to load certain Asian fonts which position and 588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * scale glyph components with bytecode instructions. It produces 589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bad output for most other fonts. 590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 591a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: 592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The library implements a bytecode interpreter that covers 593aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich * the full instruction set of the TrueType virtual machine (this 594aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich * was governed by patents until May 2010, hence the name). 595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @since: 597a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang * 2.2 598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef enum FT_TrueTypeEngineType_ 601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_TRUETYPE_ENGINE_TYPE_NONE = 0, 603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, 604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_TRUETYPE_ENGINE_TYPE_PATENTED 605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_TrueTypeEngineType; 607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 609049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************** 610049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 611049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @func: 612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Get_TrueType_Engine_Type 613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 6150a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Return an @FT_TrueTypeEngineType value to indicate which level of 616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the TrueType virtual machine a given library instance supports. 617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * library :: 620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A library instance. 621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A value indicating which level is supported. 624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @since: 626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 2.2 627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_EXPORT( FT_TrueTypeEngineType ) 630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Get_TrueType_Engine_Type( FT_Library library ); 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 ProjectFT_END_HEADER 637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTMODAPI_H__ */ 639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 642