zenilib: zenilib/jni/external/freetype2/src/raster/rastpic.c Source File

zenilib 0.5.3.0

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rastpic.c
Go to the documentation of this file.
1 /***************************************************************************/
2 /* */
3 /* rastpic.c */
4 /* */
5 /* The FreeType position independent code services for raster module. */
6 /* */
7 /* Copyright 2009, 2010 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 <ft2build.h>
20 #include FT_FREETYPE_H
21 #include FT_INTERNAL_OBJECTS_H
22 #include "rastpic.h"
23 #include "rasterrs.h"
24
25 #ifdef FT_CONFIG_OPTION_PIC
26
27 /* forward declaration of PIC init functions from ftraster.c */
28 void
29 FT_Init_Class_ft_standard_raster( FT_Raster_Funcs* funcs );
30
31 void
32 ft_raster1_renderer_class_pic_free( FT_Library library )
33 {
34 FT_PIC_Container* pic_container = &library->pic_container;
35 FT_Memory memory = library->memory;
36
37
38 if ( pic_container->raster )
39 {
40 RasterPIC* container = (RasterPIC*)pic_container->raster;
41 if ( --container->ref_count )
42 return;
43 FT_FREE( container );
44 pic_container->raster = NULL;
45 }
46 }
47
48
49 FT_Error
50 ft_raster1_renderer_class_pic_init( FT_Library library )
51 {
52 FT_PIC_Container* pic_container = &library->pic_container;
53 FT_Error error = Raster_Err_Ok;
54 RasterPIC* container;
55 FT_Memory memory = library->memory;
56
57
58 /* since this function also serve raster5 renderer,
59 it implements reference counting */
60 if ( pic_container->raster )
61 {
62 ((RasterPIC*)pic_container->raster)->ref_count++;
63 return error;
64 }
65
66 /* allocate pointer, clear and set global container pointer */
67 if ( FT_ALLOC( container, sizeof ( *container ) ) )
68 return error;
69 FT_MEM_SET( container, 0, sizeof ( *container ) );
70 pic_container->raster = container;
71 container->ref_count = 1;
72
73 /* initialize pointer table - this is how the module usually expects this data */
74 FT_Init_Class_ft_standard_raster( &container->ft_standard_raster );
75 /*Exit:*/
76 if( error )
77 ft_raster1_renderer_class_pic_free( library );
78 return error;
79 }
80
81 /* re-route these init and free functions to the above functions */
82 FT_Error
83 ft_raster5_renderer_class_pic_init( FT_Library library )
84 {
85 return ft_raster1_renderer_class_pic_init( library );
86 }
87
88 void
89 ft_raster5_renderer_class_pic_free( FT_Library library )
90 {
91 ft_raster1_renderer_class_pic_free( library );
92 }
93
94 #endif /* FT_CONFIG_OPTION_PIC */
95
96
97 /* END */
FT_ALLOC
#define FT_ALLOC(ptr, size)
Definition: ftmemory.h:260
FT_Error
int FT_Error
Definition: fttypes.h:296
FT_Raster_Funcs_
Definition: ftimage.h:1288
NULL
#define NULL
Definition: ftobjs.h:61
library
FT_Library library
Definition: cffdrivr.c:409
if
if(!yyg->yy_init)
Definition: glslang_lex.cpp:1037
FT_LibraryRec_::memory
FT_Memory memory
Definition: ftobjs.h:826
FT_FREE
#define FT_FREE(ptr)
Definition: ftmemory.h:286
error
FT_Error error
Definition: cffdrivr.c:407
rastpic.h
FT_LibraryRec_
Definition: ftobjs.h:824
FT_Memory
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:66
ft2build.h
rasterrs.h
FT_MEM_SET
#define FT_MEM_SET(dest, byte, count)
Definition: ftmemory.h:201