Visualization Library 2.0.0-b5

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
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, 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 <ft2build.h>
20 #include FT_FREETYPE_H
21 #include FT_INTERNAL_OBJECTS_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;
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 */
#define FT_ALLOC(ptr, size)
Definition: ftmemory.h:260
int FT_Error
Definition: fttypes.h:296
#define NULL
Definition: ftobjs.h:61
FT_Library library
Definition: cffdrivr.c:414
return FT_Err_Ok
Definition: ftbbox.c:645
FT_Memory memory
Definition: ftobjs.h:860
#define FT_FREE(ptr)
Definition: ftmemory.h:286
FT_Error error
Definition: cffdrivr.c:411
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:66
if(!abbox) return FT_THROW(Invalid_Argument)
#define FT_MEM_SET(dest, byte, count)
Definition: ftmemory.h:201