1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* pshpic.c */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* The FreeType position independent code services for pshinter module. */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* Copyright 2009-2015 by */ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Oran Agra and Mickey Gabel. */ 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 19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include <ft2build.h> 20e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_FREETYPE_H 21e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_INTERNAL_OBJECTS_H 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "pshpic.h" 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "pshnterr.h" 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_CONFIG_OPTION_PIC 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* forward declaration of PIC init functions from pshmod.c */ 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_Class_pshinter_interface( FT_Library library, 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PSHinter_Interface* clazz ); 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pshinter_module_class_pic_free( FT_Library library ) 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_PIC_Container* pic_container = &library->pic_container; 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Memory memory = library->memory; 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( pic_container->pshinter ) 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_FREE( pic_container->pshinter ); 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pic_container->pshinter = NULL; 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Error 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pshinter_module_class_pic_init( FT_Library library ) 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_PIC_Container* pic_container = &library->pic_container; 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Error error = FT_Err_Ok; 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PSHinterPIC* container = NULL; 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Memory memory = library->memory; 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* allocate pointer, clear and set global container pointer */ 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( FT_ALLOC( container, sizeof ( *container ) ) ) 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return error; 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_MEM_SET( container, 0, sizeof ( *container ) ); 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pic_container->pshinter = container; 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* add call to initialization function when you add new scripts */ 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_Class_pshinter_interface( 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov library, &container->pshinter_interface ); 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( error ) 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pshinter_module_class_pic_free( library ); 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return error; 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CONFIG_OPTION_PIC */ 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 77