1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ftmodapi.h */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* FreeType modules public interface (specification). */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Copyright 1996-2003, 2006, 2008-2010, 2012, 2013 by */ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* This file is part of the FreeType project, and may only be used, */ 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* modified, and distributed under the terms of the FreeType project */ 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* this file you indicate that you have read the license and */ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* understand and accept it fully. */ 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __FTMODAPI_H__ 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __FTMODAPI_H__ 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 23e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include <ft2build.h> 24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_FREETYPE_H 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FREETYPE_H 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "freetype.h of FreeType 1 has been loaded!" 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "Please fix the directory search order for header files" 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "so that freetype.h of FreeType 2 is found first." 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Section> */ 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module_management */ 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Title> */ 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Module Management */ 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Abstract> */ 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* How to add, upgrade, remove, and control modules from FreeType. */ 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The definitions below are used to manage modules within FreeType. */ 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Modules can be added, upgraded, and removed at runtime. */ 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Additionally, some module properties can be controlled also. */ 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Here is a list of possible values of the `module_name' field in */ 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the @FT_Module_Class structure. */ 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* { */ 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* autofitter */ 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* bdf */ 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* cff */ 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* gxvalid */ 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* otvalid */ 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pcf */ 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pfr */ 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* psaux */ 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pshinter */ 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* psnames */ 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* raster1, raster5 */ 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* sfnt */ 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* smooth, smooth-lcd, smooth-lcdv */ 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* truetype */ 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* type1 */ 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* type42 */ 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* t1cid */ 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* winfonts */ 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* } */ 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Note that the FreeType Cache sub-system is not a FreeType module. */ 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 78e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* <Order> */ 79e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Module */ 80e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Module_Constructor */ 81e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Module_Destructor */ 82e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Module_Requester */ 83e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Module_Class */ 84e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* */ 85e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Add_Module */ 86e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Get_Module */ 87e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Remove_Module */ 88e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Add_Default_Modules */ 89e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* */ 90e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Property_Set */ 91e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Property_Get */ 92e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* */ 93e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_New_Library */ 94e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Done_Library */ 95e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Reference_Library */ 96e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* */ 97e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Renderer */ 98e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Renderer_Class */ 99e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* */ 100e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Get_Renderer */ 101e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Set_Renderer */ 102e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* */ 103e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* FT_Set_Debug_Hook */ 104e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* */ 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module bit flags */ 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_RENDERER 2 /* this module is a renderer */ 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_STYLER 8 /* this module is a styler */ 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* scalable fonts */ 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* support vector outlines */ 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* own hinter */ 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* deprecated values */ 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_font_driver FT_MODULE_FONT_DRIVER 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_renderer FT_MODULE_RENDERER 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_hinter FT_MODULE_HINTER 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_styler FT_MODULE_STYLER 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Pointer FT_Module_Interface; 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Module_Constructor */ 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A function used to initialize (not create) a new module object. */ 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module :: The module to initialize. */ 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*FT_Module_Constructor)( FT_Module module ); 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Module_Destructor */ 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A function used to finalize (not destroy) a given module object. */ 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module :: The module to finalize. */ 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef void 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*FT_Module_Destructor)( FT_Module module ); 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Module_Requester */ 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A function used to query a given module for a specific interface. */ 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module :: The module to be searched. */ 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* name :: The name of the interface in the module. */ 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Module_Interface 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*FT_Module_Requester)( FT_Module module, 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const char* name ); 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Module_Class */ 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The module class descriptor. */ 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module_flags :: Bit flags describing the module. */ 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module_size :: The size of one module object/instance in */ 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* bytes. */ 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module_name :: The name of the module. */ 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module_version :: The version, as a 16.16 fixed number */ 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (major.minor). */ 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module_requires :: The version of FreeType this module requires, */ 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* as a 16.16 fixed number (major.minor). Starts */ 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* at version 2.0, i.e., 0x20000. */ 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module_init :: The initializing function. */ 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module_done :: The finalizing function. */ 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* get_interface :: The interface requesting function. */ 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Module_Class_ 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong module_flags; 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long module_size; 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_String* module_name; 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed module_version; 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed module_requires; 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const void* module_interface; 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Module_Constructor module_init; 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Module_Destructor module_done; 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Module_Requester get_interface; 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Module_Class; 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Add_Module */ 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Add a new module to a given library instance. */ 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to the library object. */ 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* clazz :: A pointer to class descriptor for the module. */ 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An error will be returned if a module already exists by that name, */ 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* or if the module requires a version of FreeType that is too great. */ 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Add_Module( FT_Library library, 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_Module_Class* clazz ); 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Module */ 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Find a module by its name. */ 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to the library object. */ 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module_name :: The module's name (as an ASCII string). */ 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A module handle. 0~if none was found. */ 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType's internal modules aren't documented very well, and you */ 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* should look up the source code for details. */ 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Module ) 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_Module( FT_Library library, 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const char* module_name ); 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Remove_Module */ 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Remove a given module from a library instance. */ 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to a library object. */ 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* module :: A handle to a module object. */ 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The module object is destroyed by the function in case of success. */ 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Remove_Module( FT_Library library, 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Module module ); 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /********************************************************************** 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @function: 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Property_Set 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Set a property for a given module. 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @input: 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * library :: 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A handle to the library the module is part of. 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * module_name :: 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The module name. 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * property_name :: 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The property name. Properties are described in the `Synopsis' 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * subsection of the module's documentation. 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Note that only a few modules have properties. 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * value :: 328e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov * A generic pointer to a variable or structure that gives the new 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * value of the property. The exact definition of `value' is 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * dependent on the property; see the `Synopsis' subsection of the 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * module's documentation. 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return: 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FreeType error code. 0~means success. 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @note: 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * If `module_name' isn't a valid module name, or `property_name' 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * doesn't specify a valid property, or if `value' doesn't represent a 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * valid value for the given property, an error is returned. 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The following example sets property `bar' (a simple integer) in 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * module `foo' to value~1. 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * { 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_UInt bar; 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * bar = 1; 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Property_Set( library, "foo", "bar", &bar ); 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * } 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Note that the FreeType Cache sub-system doesn't recognize module 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * property changes. To avoid glyph lookup confusion within the cache 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * you should call @FTC_Manager_Reset to completely flush the cache if 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * a module property gets changed after @FTC_Manager_New has been 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * called. 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * It is not possible to set properties of the FreeType Cache 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * sub-system itself with FT_Property_Set; use @FTC_Property_Set 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * instead. 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @since: 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2.4.11 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Property_Set( FT_Library library, 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_String* module_name, 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_String* property_name, 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const void* value ); 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /********************************************************************** 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @function: 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Property_Get 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Get a module's property value. 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @input: 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * library :: 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A handle to the library the module is part of. 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * module_name :: 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The module name. 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * property_name :: 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The property name. Properties are described in the `Synopsis' 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * subsection of the module's documentation. 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @inout: 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * value :: 394e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov * A generic pointer to a variable or structure that gives the 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * value of the property. The exact definition of `value' is 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * dependent on the property; see the `Synopsis' subsection of the 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * module's documentation. 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return: 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FreeType error code. 0~means success. 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @note: 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * If `module_name' isn't a valid module name, or `property_name' 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * doesn't specify a valid property, or if `value' doesn't represent a 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * valid value for the given property, an error is returned. 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The following example gets property `baz' (a range) in module `foo'. 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * { 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * typedef range_ 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * { 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Int32 min; 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Int32 max; 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * } range; 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * range baz; 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Property_Get( library, "foo", "baz", &baz ); 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * } 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * It is not possible to retrieve properties of the FreeType Cache 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * sub-system with FT_Property_Get; use @FTC_Property_Get instead. 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @since: 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2.4.11 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Property_Get( FT_Library library, 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_String* module_name, 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_String* property_name, 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void* value ); 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Reference_Library */ 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A counter gets initialized to~1 at the time an @FT_Library */ 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* structure is created. This function increments the counter. */ 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Done_Library then only destroys a library if the counter is~1, */ 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* otherwise it simply decrements the counter. */ 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 448e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* This function helps in managing life-cycles of structures that */ 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* reference @FT_Library objects. */ 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to a target library object. */ 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Since> */ 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2.4.2 */ 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Reference_Library( FT_Library library ); 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_New_Library */ 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function is used to create a new FreeType library instance */ 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* from a given memory object. It is thus possible to use libraries */ 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* with distinct memory allocators within the same program. */ 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Normally, you would call this function (followed by a call to */ 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */ 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* instead of @FT_Init_FreeType to initialize the FreeType library. */ 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a */ 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library instance. */ 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* memory :: A handle to the original memory object. */ 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* alibrary :: A pointer to handle of a new library object. */ 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See the discussion of reference counters in the description of */ 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Reference_Library. */ 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_New_Library( FT_Memory memory, 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Library *alibrary ); 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Done_Library */ 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Discard a given library object. This closes all drivers and */ 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* discards all resource objects. */ 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to the target library. */ 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* See the discussion of reference counters in the description of */ 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_Reference_Library. */ 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Done_Library( FT_Library library ); 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 521e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* */ 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef void 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*FT_DebugHook_Func)( void* arg ); 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Debug_Hook */ 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Set a debug hook function for debugging the interpreter of a font */ 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* format. */ 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to the library object. */ 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* hook_index :: The index of the debug hook. You should use the */ 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values defined in `ftobjs.h', e.g., */ 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `FT_DEBUG_HOOK_TRUETYPE'. */ 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* debug_hook :: The function used to debug the interpreter. */ 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Currently, four debug hook slots are available, but only two (for */ 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the TrueType and the Type~1 interpreter) are defined. */ 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Since the internal headers of FreeType are no longer installed, */ 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This is a bug and will be fixed in a forthcoming release. */ 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( void ) 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Set_Debug_Hook( FT_Library library, 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt hook_index, 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_DebugHook_Func debug_hook ); 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Add_Default_Modules */ 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Add the set of default drivers to a given library object. */ 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This is only useful when you create a library object with */ 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_New_Library (usually to plug a custom memory manager). */ 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* library :: A handle to a new library object. */ 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( void ) 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Add_Default_Modules( FT_Library library ); 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************** 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @section: 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * truetype_engine 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @title: 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The TrueType Engine 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @abstract: 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * TrueType bytecode support. 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * This section contains a function used to query the level of TrueType 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * bytecode support compiled in this version of the library. 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************** 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @enum: 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_TrueTypeEngineType 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A list of values describing which kind of TrueType bytecode 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * engine is implemented in a given FT_Library instance. It is used 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * by the @FT_Get_TrueType_Engine_Type function. 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @values: 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_TRUETYPE_ENGINE_TYPE_NONE :: 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The library doesn't implement any kind of bytecode interpreter. 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The library implements a bytecode interpreter that doesn't 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * support the patented operations of the TrueType virtual machine. 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 614e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov * Its main use is to load certain Asian fonts that position and 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * scale glyph components with bytecode instructions. It produces 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * bad output for most other fonts. 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The library implements a bytecode interpreter that covers 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * the full instruction set of the TrueType virtual machine (this 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * was governed by patents until May 2010, hence the name). 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @since: 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2.2 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef enum FT_TrueTypeEngineType_ 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_TRUETYPE_ENGINE_TYPE_NONE = 0, 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_TRUETYPE_ENGINE_TYPE_PATENTED 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_TrueTypeEngineType; 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /************************************************************************** 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @func: 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * FT_Get_TrueType_Engine_Type 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Return an @FT_TrueTypeEngineType value to indicate which level of 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * the TrueType virtual machine a given library instance supports. 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @input: 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * library :: 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A library instance. 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return: 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * A value indicating which level is supported. 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @since: 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2.2 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_TrueTypeEngineType ) 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_TrueType_Engine_Type( FT_Library library ); 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __FTMODAPI_H__ */ 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 668