1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* basepic.c */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* The FreeType position independent code services for base. */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Copyright 2009, 2012 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 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/ft2build.h" 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/freetype.h" 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/ftobjs.h" 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "basepic.h" 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_CONFIG_OPTION_PIC 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* forward declaration of PIC init functions from ftglyph.c */ 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_Class_ft_outline_glyph_class( FT_Glyph_Class* clazz ); 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_Class_ft_bitmap_glyph_class( FT_Glyph_Class* clazz ); 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_CONFIG_OPTION_MAC_FONTS 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* forward declaration of PIC init function from ftrfork.c */ 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (not modularized) */ 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_Table_raccess_guess_table( ft_raccess_guess_rec* record ); 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* forward declaration of PIC init functions from ftinit.c */ 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Error 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ft_create_default_module_classes( FT_Library library ); 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ft_destroy_default_module_classes( FT_Library library ); 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ft_base_pic_free( FT_Library library ) 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_PIC_Container* pic_container = &library->pic_container; 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Memory memory = library->memory; 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( pic_container->base ) 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* destroy default module classes */ 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (in case FT_Add_Default_Modules was used) */ 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ft_destroy_default_module_classes( library ); 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_FREE( pic_container->base ); 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pic_container->base = NULL; 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Error 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ft_base_pic_init( FT_Library library ) 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_PIC_Container* pic_container = &library->pic_container; 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Error error = FT_Err_Ok; 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BasePIC* container = NULL; 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Memory memory = library->memory; 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* allocate pointer, clear and set global container pointer */ 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( FT_ALLOC( container, sizeof ( *container ) ) ) 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return error; 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_MEM_SET( container, 0, sizeof ( *container ) ); 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pic_container->base = container; 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* initialize default modules list and pointers */ 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov error = ft_create_default_module_classes( library ); 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( error ) 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov goto Exit; 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* initialize pointer table - */ 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this is how the module usually expects this data */ 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_Class_ft_outline_glyph_class( 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &container->ft_outline_glyph_class ); 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_Class_ft_bitmap_glyph_class( 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &container->ft_bitmap_glyph_class ); 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_CONFIG_OPTION_MAC_FONTS 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_Table_raccess_guess_table( 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (ft_raccess_guess_rec*)&container->ft_raccess_guess_table ); 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Exit: 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( error ) 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ft_base_pic_free( library ); 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return error; 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CONFIG_OPTION_PIC */ 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 109