PageRenderTime 279ms CodeModel.GetById 111ms app.highlight 6ms RepoModel.GetById 112ms app.codeStats 0ms

/src/compiler/android-ndk/jni/freetype/src/raster/rastpic.c

http://ftk.googlecode.com/
C | 89 lines | 51 code | 14 blank | 24 comment | 5 complexity | a5525b7e7e1241d3533ff58dbc5e31fc MD5 | raw file
 1/***************************************************************************/
 2/*                                                                         */
 3/*  rastpic.c                                                              */
 4/*                                                                         */
 5/*    The FreeType position independent code services for raster module.   */
 6/*                                                                         */
 7/*  Copyright 2009 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
24#ifdef FT_CONFIG_OPTION_PIC
25
26  /* forward declaration of PIC init functions from ftraster.c */
27  void FT_Init_Class_ft_standard_raster(FT_Raster_Funcs*);
28
29  void
30  ft_raster1_renderer_class_pic_free(  FT_Library library )
31  {
32    FT_PIC_Container* pic_container = &library->pic_container;
33    FT_Memory memory = library->memory;
34    if ( pic_container->raster )
35    {
36      RasterPIC* container = (RasterPIC*)pic_container->raster;
37      if(--container->ref_count)
38        return;
39      FT_FREE( container );
40      pic_container->raster = NULL;
41    }
42  }
43
44
45  FT_Error
46  ft_raster1_renderer_class_pic_init(  FT_Library library )
47  {
48    FT_PIC_Container* pic_container = &library->pic_container;
49    FT_Error        error = FT_Err_Ok;
50    RasterPIC* container;
51    FT_Memory memory = library->memory;
52
53    /* since this function also serve raster5 renderer, 
54       it implements reference counting */
55    if(pic_container->raster)
56    {
57      ((RasterPIC*)pic_container->raster)->ref_count++;
58      return error;
59    }
60
61    /* allocate pointer, clear and set global container pointer */
62    if ( FT_ALLOC ( container, sizeof ( *container ) ) )
63      return error;
64    FT_MEM_SET( container, 0, sizeof(*container) );
65    pic_container->raster = container;
66    container->ref_count = 1;
67
68    /* initialize pointer table - this is how the module usually expects this data */
69    FT_Init_Class_ft_standard_raster(&container->ft_standard_raster);
70/*Exit:*/
71    if(error)
72      ft_raster1_renderer_class_pic_free(library);
73    return error;
74  }
75
76  /* re-route these init and free functions to the above functions */
77  FT_Error ft_raster5_renderer_class_pic_init(FT_Library library)
78  {
79    return ft_raster1_renderer_class_pic_init(library);
80  }
81  void ft_raster5_renderer_class_pic_free(FT_Library library)
82  {
83    ft_raster1_renderer_class_pic_free(library);
84  }
85
86#endif /* FT_CONFIG_OPTION_PIC */
87
88
89/* END */