OLD | NEW |
1 /***************************************************************************/ | 1 /***************************************************************************/ |
2 /* */ | 2 /* */ |
3 /* pspic.c */ | 3 /* pspic.c */ |
4 /* */ | 4 /* */ |
5 /* The FreeType position independent code services for psnames module. */ | 5 /* The FreeType position independent code services for psnames module. */ |
6 /* */ | 6 /* */ |
7 /* Copyright 2009, 2010 by */ | 7 /* Copyright 2009, 2010, 2012, 2013 by */ |
8 /* Oran Agra and Mickey Gabel. */ | 8 /* Oran Agra and Mickey Gabel. */ |
9 /* */ | 9 /* */ |
10 /* This file is part of the FreeType project, and may only be used, */ | 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 */ | 11 /* modified, and distributed under the terms of the FreeType project */ |
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | 12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ |
13 /* this file you indicate that you have read the license and */ | 13 /* this file you indicate that you have read the license and */ |
14 /* understand and accept it fully. */ | 14 /* understand and accept it fully. */ |
15 /* */ | 15 /* */ |
16 /***************************************************************************/ | 16 /***************************************************************************/ |
17 | 17 |
18 | 18 |
19 #include <ft2build.h> | 19 #include <ft2build.h> |
20 #include FT_FREETYPE_H | 20 #include FT_FREETYPE_H |
21 #include FT_INTERNAL_OBJECTS_H | 21 #include FT_INTERNAL_OBJECTS_H |
22 #include "pspic.h" | 22 #include "pspic.h" |
23 #include "psnamerr.h" | 23 #include "psnamerr.h" |
24 | 24 |
| 25 |
25 #ifdef FT_CONFIG_OPTION_PIC | 26 #ifdef FT_CONFIG_OPTION_PIC |
26 | 27 |
27 /* forward declaration of PIC init functions from psmodule.c */ | 28 /* forward declaration of PIC init functions from psmodule.c */ |
28 FT_Error | 29 FT_Error |
29 FT_Create_Class_pscmaps_services( FT_Library library, | 30 FT_Create_Class_pscmaps_services( FT_Library library, |
30 FT_ServiceDescRec** output_class ); | 31 FT_ServiceDescRec** output_class ); |
31 void | 32 void |
32 FT_Destroy_Class_pscmaps_services( FT_Library library, | 33 FT_Destroy_Class_pscmaps_services( FT_Library library, |
33 FT_ServiceDescRec* clazz ); | 34 FT_ServiceDescRec* clazz ); |
34 | 35 |
35 void | 36 void |
36 FT_Init_Class_pscmaps_interface( FT_Library library, | 37 FT_Init_Class_pscmaps_interface( FT_Library library, |
37 FT_Service_PsCMapsRec* clazz ); | 38 FT_Service_PsCMapsRec* clazz ); |
38 | 39 |
| 40 |
39 void | 41 void |
40 psnames_module_class_pic_free( FT_Library library ) | 42 psnames_module_class_pic_free( FT_Library library ) |
41 { | 43 { |
42 FT_PIC_Container* pic_container = &library->pic_container; | 44 FT_PIC_Container* pic_container = &library->pic_container; |
43 FT_Memory memory = library->memory; | 45 FT_Memory memory = library->memory; |
44 | 46 |
45 | 47 |
46 if ( pic_container->psnames ) | 48 if ( pic_container->psnames ) |
47 { | 49 { |
48 PSModulePIC* container = (PSModulePIC*)pic_container->psnames; | 50 PSModulePIC* container = (PSModulePIC*)pic_container->psnames; |
49 | 51 |
50 | 52 |
51 if(container->pscmaps_services) | 53 if ( container->pscmaps_services ) |
52 FT_Destroy_Class_pscmaps_services( library, | 54 FT_Destroy_Class_pscmaps_services( library, |
53 container->pscmaps_services ); | 55 container->pscmaps_services ); |
54 container->pscmaps_services = NULL; | 56 container->pscmaps_services = NULL; |
55 FT_FREE( container ); | 57 FT_FREE( container ); |
56 pic_container->psnames = NULL; | 58 pic_container->psnames = NULL; |
57 } | 59 } |
58 } | 60 } |
59 | 61 |
60 | 62 |
61 FT_Error | 63 FT_Error |
62 psnames_module_class_pic_init( FT_Library library ) | 64 psnames_module_class_pic_init( FT_Library library ) |
63 { | 65 { |
64 FT_PIC_Container* pic_container = &library->pic_container; | 66 FT_PIC_Container* pic_container = &library->pic_container; |
65 FT_Error error = PSnames_Err_Ok; | 67 FT_Error error = FT_Err_Ok; |
66 PSModulePIC* container; | 68 PSModulePIC* container = NULL; |
67 FT_Memory memory = library->memory; | 69 FT_Memory memory = library->memory; |
68 | 70 |
69 | 71 |
70 /* allocate pointer, clear and set global container pointer */ | 72 /* allocate pointer, clear and set global container pointer */ |
71 if ( FT_ALLOC ( container, sizeof ( *container ) ) ) | 73 if ( FT_ALLOC( container, sizeof ( *container ) ) ) |
72 return error; | 74 return error; |
73 FT_MEM_SET( container, 0, sizeof ( *container ) ); | 75 FT_MEM_SET( container, 0, sizeof ( *container ) ); |
74 pic_container->psnames = container; | 76 pic_container->psnames = container; |
75 | 77 |
76 /* initialize pointer table - this is how the module usually expects this da
ta */ | 78 /* initialize pointer table - */ |
| 79 /* this is how the module usually expects this data */ |
77 error = FT_Create_Class_pscmaps_services( | 80 error = FT_Create_Class_pscmaps_services( |
78 library, &container->pscmaps_services ); | 81 library, &container->pscmaps_services ); |
79 if ( error ) | 82 if ( error ) |
80 goto Exit; | 83 goto Exit; |
81 FT_Init_Class_pscmaps_interface( library, | 84 FT_Init_Class_pscmaps_interface( library, |
82 &container->pscmaps_interface ); | 85 &container->pscmaps_interface ); |
83 | 86 |
84 Exit: | 87 Exit: |
85 if ( error ) | 88 if ( error ) |
86 psnames_module_class_pic_free( library ); | 89 psnames_module_class_pic_free( library ); |
87 return error; | 90 return error; |
88 } | 91 } |
89 | 92 |
90 | 93 |
91 #endif /* FT_CONFIG_OPTION_PIC */ | 94 #endif /* FT_CONFIG_OPTION_PIC */ |
92 | 95 |
93 | 96 |
94 /* END */ | 97 /* END */ |
OLD | NEW |