pshints.h revision 049d6fea481044fcc000e7782e5bc7046fc70844
1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* pshints.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Interface to Postscript-specific (Type 1 and Type 2) hints */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* recorders (specification only). These are used to support native */ 7049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* T1/T2 hints in the `type1', `cid', and `cff' font drivers. */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Copyright 2001, 2002, 2003, 2005, 2006, 2007 by */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __PSHINTS_H__ 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __PSHINTS_H__ 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_FREETYPE_H 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_TYPE1_TABLES_H 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** INTERNAL REPRESENTATION OF GLOBALS *****/ 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSH_GlobalsRec_* PSH_Globals; 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PSH_Globals_NewFunc)( FT_Memory memory, 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Private* private_dict, 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Globals* aglobals ); 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PSH_Globals_SetScaleFunc)( PSH_Globals globals, 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed x_scale, 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed y_scale, 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed x_delta, 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed y_delta ); 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*PSH_Globals_DestroyFunc)( PSH_Globals globals ); 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSH_Globals_FuncsRec_ 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Globals_NewFunc create; 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Globals_SetScaleFunc set_scale; 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Globals_DestroyFunc destroy; 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSH_Globals_FuncsRec, *PSH_Globals_Funcs; 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** PUBLIC TYPE 1 HINTS RECORDER *****/ 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T1_Hints 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This is a handle to an opaque structure used to record glyph hints 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * from a Type 1 character glyph character string. 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The methods used to operate on this object are defined by the 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @T1_Hints_FuncsRec structure. Recording glyph hints is normally 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * achieved through the following scheme: 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * - Open a new hint recording session by calling the `open' method. 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This rewinds the recorder and prepare it for new input. 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * - For each hint found in the glyph charstring, call the corresponding 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * method (`stem', `stem3', or `reset'). Note that these functions do 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * not return an error code. 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * - Close the recording session by calling the `close' method. It 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * returns an error code if the hints were invalid or something 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * strange happened (e.g., memory shortage). 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The hints accumulated in the object can later be used by the 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * PostScript hinter. 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_HintsRec_* T1_Hints; 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T1_Hints_Funcs 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A pointer to the @T1_Hints_FuncsRec structure that defines the API of 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * a given @T1_Hints object. 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef const struct T1_Hints_FuncsRec_* T1_Hints_Funcs; 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T1_Hints_OpenFunc 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T1_Hints class used to prepare it for a new Type 1 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints recording session. 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 1 hints recorder. 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * You should always call the @T1_Hints_CloseFunc method in order to 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * close an opened recording session. 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Hints_OpenFunc)( T1_Hints hints ); 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T1_Hints_SetStemFunc 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T1_Hints class used to record a new horizontal or 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * vertical stem. This corresponds to the Type 1 `hstem' and `vstem' 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * operators. 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 1 hints recorder. 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * dimension :: 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 0 for horizontal stems (hstem), 1 for vertical ones (vstem). 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * coords :: 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Array of 2 integers, used as (position,length) stem descriptor. 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Use vertical coordinates (y) for horizontal stems (dim=0). Use 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * horizontal coordinates (x) for vertical stems (dim=1). 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `coords[0]' is the absolute stem position (lowest coordinate); 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `coords[1]' is the length. 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The length can be negative, in which case it must be either -20 or 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * -21. It is interpreted as a `ghost' stem, according to the Type 1 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * specification. 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If the length is -21 (corresponding to a bottom ghost stem), then 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * the real stem position is `coords[0]+coords[1]'. 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Hints_SetStemFunc)( T1_Hints hints, 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt dimension, 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long* coords ); 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T1_Hints_SetStem3Func 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T1_Hints class used to record three 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * counter-controlled horizontal or vertical stems at once. 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 1 hints recorder. 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * dimension :: 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 0 for horizontal stems, 1 for vertical ones. 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * coords :: 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * An array of 6 integers, holding 3 (position,length) pairs for the 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * counter-controlled stems. 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Use vertical coordinates (y) for horizontal stems (dim=0). Use 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * horizontal coordinates (x) for vertical stems (dim=1). 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The lengths cannot be negative (ghost stems are never 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * counter-controlled). 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Hints_SetStem3Func)( T1_Hints hints, 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt dimension, 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long* coords ); 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T1_Hints_ResetFunc 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T1_Hints class used to reset the stems hints in a 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * recording session. 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 1 hints recorder. 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * end_point :: 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The index of the last point in the input glyph in which the 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * previously defined hints apply. 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Hints_ResetFunc)( T1_Hints hints, 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt end_point ); 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T1_Hints_CloseFunc 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T1_Hints class used to close a hint recording 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * session. 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 1 hints recorder. 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * end_point :: 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The index of the last point in the input glyph. 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FreeType error code. 0 means success. 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The error code is set to indicate that an error occurred during the 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * recording session. 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Hints_CloseFunc)( T1_Hints hints, 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt end_point ); 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T1_Hints_ApplyFunc 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T1_Hints class used to apply hints to the 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * corresponding glyph outline. Must be called once all hints have been 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * recorded. 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 1 hints recorder. 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * outline :: 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A pointer to the target outline descriptor. 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * globals :: 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The hinter globals for this font. 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hint_mode :: 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Hinting information. 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FreeType error code. 0 means success. 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * On input, all points within the outline are in font coordinates. On 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * output, they are in 1/64th of pixels. 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The scaling transformation is taken from the `globals' object which 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * must correspond to the same font as the glyph. 301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Hints_ApplyFunc)( T1_Hints hints, 305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Outline* outline, 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Globals globals, 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Render_Mode hint_mode ); 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T1_Hints_FuncsRec 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The structure used to provide the API to @T1_Hints objects. 317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @fields: 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the T1 Hints recorder. 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * open :: 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to open a recording session. 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * close :: 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to close a recording session. 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * stem :: 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to set a simple stem. 330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * stem3 :: 332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to set counter-controlled stems. 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * reset :: 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to reset stem hints. 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * apply :: 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to apply the hints to the corresponding glyph outline. 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_Hints_FuncsRec_ 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Hints hints; 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Hints_OpenFunc open; 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Hints_CloseFunc close; 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Hints_SetStemFunc stem; 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Hints_SetStem3Func stem3; 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Hints_ResetFunc reset; 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Hints_ApplyFunc apply; 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_Hints_FuncsRec; 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** PUBLIC TYPE 2 HINTS RECORDER *****/ 358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T2_Hints 366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This is a handle to an opaque structure used to record glyph hints 369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * from a Type 2 character glyph character string. 370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The methods used to operate on this object are defined by the 372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @T2_Hints_FuncsRec structure. Recording glyph hints is normally 373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * achieved through the following scheme: 374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * - Open a new hint recording session by calling the `open' method. 376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This rewinds the recorder and prepare it for new input. 377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * - For each hint found in the glyph charstring, call the corresponding 379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * method (`stems', `hintmask', `counters'). Note that these 380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * functions do not return an error code. 381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * - Close the recording session by calling the `close' method. It 383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * returns an error code if the hints were invalid or something 384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * strange happened (e.g., memory shortage). 385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The hints accumulated in the object can later be used by the 387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Postscript hinter. 388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T2_HintsRec_* T2_Hints; 391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T2_Hints_Funcs 397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A pointer to the @T2_Hints_FuncsRec structure that defines the API of 400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * a given @T2_Hints object. 401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef const struct T2_Hints_FuncsRec_* T2_Hints_Funcs; 404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T2_Hints_OpenFunc 410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T2_Hints class used to prepare it for a new Type 2 413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints recording session. 414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 2 hints recorder. 418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * You should always call the @T2_Hints_CloseFunc method in order to 421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * close an opened recording session. 422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T2_Hints_OpenFunc)( T2_Hints hints ); 426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T2_Hints_StemsFunc 432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T2_Hints class used to set the table of stems in 435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * either the vertical or horizontal dimension. Equivalent to the 436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `hstem', `vstem', `hstemhm', and `vstemhm' Type 2 operators. 437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 2 hints recorder. 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * dimension :: 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 0 for horizontal stems (hstem), 1 for vertical ones (vstem). 444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * count :: 446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The number of stems. 447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * coords :: 449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * An array of `count' (position,length) pairs. 450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Use vertical coordinates (y) for horizontal stems (dim=0). Use 453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * horizontal coordinates (x) for vertical stems (dim=1). 454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * There are `2*count' elements in the `coords' array. Each even 456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * element is an absolute position in font units, each odd element is a 457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * length in font units. 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A length can be negative, in which case it must be either -20 or 460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * -21. It is interpreted as a `ghost' stem, according to the Type 1 461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * specification. 462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T2_Hints_StemsFunc)( T2_Hints hints, 466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt dimension, 467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt count, 468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed* coordinates ); 469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T2_Hints_MaskFunc 475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T2_Hints class used to set a given hintmask (this 478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * corresponds to the `hintmask' Type 2 operator). 479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 2 hints recorder. 483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * end_point :: 485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The glyph index of the last point to which the previously defined 486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * or activated hints apply. 487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bit_count :: 489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The number of bits in the hint mask. 490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bytes :: 492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * An array of bytes modelling the hint mask. 493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If the hintmask starts the charstring (before any glyph point 496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * definition), the value of `end_point' should be 0. 497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `bit_count' is the number of meaningful bits in the `bytes' array; it 499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * must be equal to the total number of hints defined so far (i.e., 500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * horizontal+verticals). 501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The `bytes' array can come directly from the Type 2 charstring and 503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * respects the same format. 504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T2_Hints_MaskFunc)( T2_Hints hints, 508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt end_point, 509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt bit_count, 510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Byte* bytes ); 511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T2_Hints_CounterFunc 517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T2_Hints class used to set a given counter mask 520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * (this corresponds to the `hintmask' Type 2 operator). 521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 2 hints recorder. 525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * end_point :: 527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A glyph index of the last point to which the previously defined or 528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * active hints apply. 529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bit_count :: 531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The number of bits in the hint mask. 532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * bytes :: 534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * An array of bytes modelling the hint mask. 535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * If the hintmask starts the charstring (before any glyph point 538049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * definition), the value of `end_point' should be 0. 539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * `bit_count' is the number of meaningful bits in the `bytes' array; it 541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * must be equal to the total number of hints defined so far (i.e., 542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * horizontal+verticals). 543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The `bytes' array can come directly from the Type 2 charstring and 545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * respects the same format. 546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T2_Hints_CounterFunc)( T2_Hints hints, 550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt bit_count, 551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const FT_Byte* bytes ); 552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T2_Hints_CloseFunc 558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T2_Hints class used to close a hint recording 561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * session. 562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 2 hints recorder. 566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * end_point :: 568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The index of the last point in the input glyph. 569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FreeType error code. 0 means success. 572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The error code is set to indicate that an error occurred during the 575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * recording session. 576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T2_Hints_CloseFunc)( T2_Hints hints, 580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt end_point ); 581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T2_Hints_ApplyFunc 587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A method of the @T2_Hints class used to apply hints to the 590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * corresponding glyph outline. Must be called after the `close' 591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * method. 592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 594049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the Type 2 hints recorder. 596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * outline :: 598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A pointer to the target outline descriptor. 599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * globals :: 601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The hinter globals for this font. 602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hint_mode :: 604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Hinting information. 605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FreeType error code. 0 means success. 608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 609049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 610049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * On input, all points within the outline are in font coordinates. On 611049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * output, they are in 1/64th of pixels. 612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The scaling transformation is taken from the `globals' object which 614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * must correspond to the same font than the glyph. 615049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T2_Hints_ApplyFunc)( T2_Hints hints, 619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Outline* outline, 620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Globals globals, 621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Render_Mode hint_mode ); 622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * T2_Hints_FuncsRec 628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The structure used to provide the API to @T2_Hints objects. 631049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @fields: 633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hints :: 634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the T2 hints recorder object. 635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * open :: 637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to open a recording session. 638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * close :: 640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to close a recording session. 641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * stems :: 643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to set the dimension's stems table. 644049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * hintmask :: 646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to set hint masks. 647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * counter :: 649049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to set counter masks. 650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * apply :: 652049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The function to apply the hints on the corresponding glyph outline. 653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T2_Hints_FuncsRec_ 656049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 657049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T2_Hints hints; 658049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T2_Hints_OpenFunc open; 659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T2_Hints_CloseFunc close; 660049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T2_Hints_StemsFunc stems; 661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T2_Hints_MaskFunc hintmask; 662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T2_Hints_CounterFunc counter; 663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T2_Hints_ApplyFunc apply; 664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T2_Hints_FuncsRec; 666049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 667049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 668049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 669049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 670049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 671049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSHinter_Interface_ 672049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 673049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Globals_Funcs (*get_globals_funcs)( FT_Module module ); 674049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Hints_Funcs (*get_t1_funcs) ( FT_Module module ); 675049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T2_Hints_Funcs (*get_t2_funcs) ( FT_Module module ); 676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 677049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSHinter_Interface; 678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef PSHinter_Interface* PSHinter_Service; 680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 681049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 682049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 683049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 684049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __PSHINTS_H__ */ 685049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 686049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 687049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 688