| OLD | NEW |
| (Empty) |
| 1 /***************************************************************************/ | |
| 2 /* */ | |
| 3 /* rastpic.c */ | |
| 4 /* */ | |
| 5 /* The FreeType position independent code services for raster module. */ | |
| 6 /* */ | |
| 7 /* Copyright 2009, 2010, 2012, 2013 by */ | |
| 8 /* Oran Agra and Mickey Gabel. */ | |
| 9 /* */ | |
| 10 /* This file is part of the FreeType project, and may only be used, */ | |
| 11 /* modified, and distributed under the terms of the FreeType project */ | |
| 12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | |
| 13 /* this file you indicate that you have read the license and */ | |
| 14 /* understand and accept it fully. */ | |
| 15 /* */ | |
| 16 /***************************************************************************/ | |
| 17 | |
| 18 | |
| 19 #include "../../include/ft2build.h" | |
| 20 #include "../../include/freetype/freetype.h" | |
| 21 #include "../../include/freetype/internal/ftobjs.h" | |
| 22 #include "rastpic.h" | |
| 23 #include "rasterrs.h" | |
| 24 | |
| 25 | |
| 26 #ifdef FT_CONFIG_OPTION_PIC | |
| 27 | |
| 28 /* forward declaration of PIC init functions from ftraster.c */ | |
| 29 void | |
| 30 FT_Init_Class_ft_standard_raster( FT_Raster_Funcs* funcs ); | |
| 31 | |
| 32 | |
| 33 void | |
| 34 ft_raster1_renderer_class_pic_free( FT_Library library ) | |
| 35 { | |
| 36 FT_PIC_Container* pic_container = &library->pic_container; | |
| 37 FT_Memory memory = library->memory; | |
| 38 | |
| 39 | |
| 40 if ( pic_container->raster ) | |
| 41 { | |
| 42 RasterPIC* container = (RasterPIC*)pic_container->raster; | |
| 43 | |
| 44 | |
| 45 if ( --container->ref_count ) | |
| 46 return; | |
| 47 FT_FREE( container ); | |
| 48 pic_container->raster = NULL; | |
| 49 } | |
| 50 } | |
| 51 | |
| 52 | |
| 53 FT_Error | |
| 54 ft_raster1_renderer_class_pic_init( FT_Library library ) | |
| 55 { | |
| 56 FT_PIC_Container* pic_container = &library->pic_container; | |
| 57 FT_Error error = FT_Err_Ok; | |
| 58 RasterPIC* container = NULL; | |
| 59 FT_Memory memory = library->memory; | |
| 60 | |
| 61 | |
| 62 /* since this function also serves raster5 renderer, */ | |
| 63 /* it implements reference counting */ | |
| 64 if ( pic_container->raster ) | |
| 65 { | |
| 66 ((RasterPIC*)pic_container->raster)->ref_count++; | |
| 67 return error; | |
| 68 } | |
| 69 | |
| 70 /* allocate pointer, clear and set global container pointer */ | |
| 71 if ( FT_ALLOC( container, sizeof ( *container ) ) ) | |
| 72 return error; | |
| 73 FT_MEM_SET( container, 0, sizeof ( *container ) ); | |
| 74 pic_container->raster = container; | |
| 75 | |
| 76 container->ref_count = 1; | |
| 77 | |
| 78 /* initialize pointer table - */ | |
| 79 /* this is how the module usually expects this data */ | |
| 80 FT_Init_Class_ft_standard_raster( &container->ft_standard_raster ); | |
| 81 | |
| 82 return error; | |
| 83 } | |
| 84 | |
| 85 | |
| 86 /* re-route these init and free functions to the above functions */ | |
| 87 FT_Error | |
| 88 ft_raster5_renderer_class_pic_init( FT_Library library ) | |
| 89 { | |
| 90 return ft_raster1_renderer_class_pic_init( library ); | |
| 91 } | |
| 92 | |
| 93 | |
| 94 void | |
| 95 ft_raster5_renderer_class_pic_free( FT_Library library ) | |
| 96 { | |
| 97 ft_raster1_renderer_class_pic_free( library ); | |
| 98 } | |
| 99 | |
| 100 #endif /* FT_CONFIG_OPTION_PIC */ | |
| 101 | |
| 102 | |
| 103 /* END */ | |
| OLD | NEW |