1295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/***************************************************************************/ 2295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* */ 3295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* basepic.c */ 4295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* */ 5295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* The FreeType position independent code services for base. */ 6295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* */ 79c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod/* Copyright 2009, 2012, 2013 by */ 8295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* Oran Agra and Mickey Gabel. */ 9295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* */ 10295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* This file is part of the FreeType project, and may only be used, */ 11295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* modified, and distributed under the terms of the FreeType project */ 12295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* this file you indicate that you have read the license and */ 14295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* understand and accept it fully. */ 15295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* */ 16295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/***************************************************************************/ 17295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 18295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 19295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include <ft2build.h> 20295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_FREETYPE_H 21295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_INTERNAL_OBJECTS_H 22295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include "basepic.h" 23295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 24727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 25295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#ifdef FT_CONFIG_OPTION_PIC 26295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 27295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* forward declaration of PIC init functions from ftglyph.c */ 28727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease void 29727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_Init_Class_ft_outline_glyph_class( FT_Glyph_Class* clazz ); 30727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 31727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease void 32727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_Init_Class_ft_bitmap_glyph_class( FT_Glyph_Class* clazz ); 3341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier 34727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#ifdef FT_CONFIG_OPTION_MAC_FONTS 35727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* forward declaration of PIC init function from ftrfork.c */ 36727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* (not modularized) */ 37727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease void 389c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod FT_Init_Table_ft_raccess_guess_table( ft_raccess_guess_rec* record ); 39727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#endif 40295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 41295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* forward declaration of PIC init functions from ftinit.c */ 4241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_Error 4341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier ft_create_default_module_classes( FT_Library library ); 4441371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier 4541371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier void 4641371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier ft_destroy_default_module_classes( FT_Library library ); 47295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 48727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 49295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner void 5041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier ft_base_pic_free( FT_Library library ) 51295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner { 5241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_PIC_Container* pic_container = &library->pic_container; 53727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_Memory memory = library->memory; 54727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 55727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 56295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner if ( pic_container->base ) 57295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner { 58727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* destroy default module classes */ 59727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* (in case FT_Add_Default_Modules was used) */ 60295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner ft_destroy_default_module_classes( library ); 61295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 62295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner FT_FREE( pic_container->base ); 63295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner pic_container->base = NULL; 64295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner } 65295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner } 66295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 67295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 68295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner FT_Error 6941371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier ft_base_pic_init( FT_Library library ) 70295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner { 7141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_PIC_Container* pic_container = &library->pic_container; 72727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_Error error = FT_Err_Ok; 73727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease BasePIC* container = NULL; 74727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_Memory memory = library->memory; 75727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease 76295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 77295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* allocate pointer, clear and set global container pointer */ 78727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease if ( FT_ALLOC( container, sizeof ( *container ) ) ) 79295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner return error; 8041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_MEM_SET( container, 0, sizeof ( *container ) ); 81295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner pic_container->base = container; 82295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 83295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner /* initialize default modules list and pointers */ 84295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner error = ft_create_default_module_classes( library ); 85295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner if ( error ) 86295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner goto Exit; 87295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 88727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* initialize pointer table - */ 89727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* this is how the module usually expects this data */ 9041371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_Init_Class_ft_outline_glyph_class( 9141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier &container->ft_outline_glyph_class ); 9241371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier FT_Init_Class_ft_bitmap_glyph_class( 9341371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier &container->ft_bitmap_glyph_class ); 94727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#ifdef FT_CONFIG_OPTION_MAC_FONTS 959c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod FT_Init_Table_ft_raccess_guess_table( 96727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease (ft_raccess_guess_rec*)&container->ft_raccess_guess_table ); 97727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#endif 98295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 99727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease Exit: 100727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease if ( error ) 10141371e1e39c8528eb0c4bc40683c736e6683e60cEric Vannier ft_base_pic_free( library ); 102295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner return error; 103295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner } 104295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 105295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#endif /* FT_CONFIG_OPTION_PIC */ 106295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 107295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 108295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* END */ 109