1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* pshmod.c */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* FreeType PostScript hinter module implementation (body). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 7727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* Copyright 2001, 2002, 2007, 2009, 2012 by */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_OBJECTS_H 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "pshrec.h" 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "pshalgo.h" 23295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include "pshpic.h" 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the Postscript Hinter module structure */ 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PS_Hinter_Module_Rec_ 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ModuleRec root; 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_HintsRec ps_hints; 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PSH_Globals_FuncsRec globals_funcs; 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Hints_FuncsRec t1_funcs; 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T2_Hints_FuncsRec t2_funcs; 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PS_Hinter_ModuleRec, *PS_Hinter_Module; 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* finalize module */ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CALLBACK_DEF( void ) 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ps_hinter_done( PS_Hinter_Module module ) 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project module->t1_funcs.hints = NULL; 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project module->t2_funcs.hints = NULL; 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ps_hints_done( &module->ps_hints ); 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* initialize module, create hints recorder and the interface */ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CALLBACK_DEF( FT_Error ) 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ps_hinter_init( PS_Hinter_Module module ) 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory = module->root.memory; 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* ph = &module->ps_hints; 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ps_hints_init( &module->ps_hints, memory ); 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project psh_globals_funcs_init( &module->globals_funcs ); 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project t1_hints_funcs_init( &module->t1_funcs ); 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project module->t1_funcs.hints = (T1_Hints)ph; 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project t2_hints_funcs_init( &module->t2_funcs ); 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project module->t2_funcs.hints = (T2_Hints)ph; 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project return 0; 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* returns global hints interface */ 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CALLBACK_DEF( PSH_Globals_Funcs ) 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project pshinter_get_globals_funcs( FT_Module module ) 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project return &((PS_Hinter_Module)module)->globals_funcs; 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* return Type 1 hints interface */ 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CALLBACK_DEF( T1_Hints_Funcs ) 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project pshinter_get_t1_funcs( FT_Module module ) 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project return &((PS_Hinter_Module)module)->t1_funcs; 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* return Type 2 hints interface */ 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CALLBACK_DEF( T2_Hints_Funcs ) 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project pshinter_get_t2_funcs( FT_Module module ) 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project return &((PS_Hinter_Module)module)->t2_funcs; 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 96727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_DEFINE_PSHINTER_INTERFACE( 97727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease pshinter_interface, 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project pshinter_get_globals_funcs, 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project pshinter_get_t1_funcs, 100727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease pshinter_get_t2_funcs ) 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 103727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_DEFINE_MODULE( 104727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease pshinter_module_class, 105295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0, 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project sizeof ( PS_Hinter_ModuleRec ), 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project "pshinter", 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0x10000L, 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0x20000L, 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 112727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease &PSHINTER_INTERFACE_GET, /* module-specific interface */ 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (FT_Module_Constructor)ps_hinter_init, 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (FT_Module_Destructor) ps_hinter_done, 116727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease (FT_Module_Requester) NULL ) /* no additional interface for now */ 117727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 120