PageRenderTime 285ms CodeModel.GetById 121ms app.highlight 6ms RepoModel.GetById 156ms app.codeStats 0ms

/src/compiler/android-ndk/jni/freetype/src/smooth/ftspic.c

http://ftk.googlecode.com/
C | 97 lines | 59 code | 14 blank | 24 comment | 5 complexity | bc973f0addfb7d7a488fcc3928f71d8f MD5 | raw file
 1/***************************************************************************/
 2/*                                                                         */
 3/*  ftspic.c                                                               */
 4/*                                                                         */
 5/*    The FreeType position independent code services for smooth 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 "ftspic.h"
23
24#ifdef FT_CONFIG_OPTION_PIC
25
26  /* forward declaration of PIC init functions from ftgrays.c */
27  void FT_Init_Class_ft_grays_raster(FT_Raster_Funcs*);
28
29  void
30  ft_smooth_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->smooth )
35    {
36      SmoothPIC* container = (SmoothPIC*)pic_container->smooth;
37      if(--container->ref_count)
38        return;
39      FT_FREE( container );
40      pic_container->smooth = NULL;
41    }
42  }
43
44
45  FT_Error
46  ft_smooth_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    SmoothPIC* container;
51    FT_Memory memory = library->memory;
52
53    /* since this function also serve smooth_lcd and smooth_lcdv renderers, 
54       it implements reference counting */
55    if(pic_container->smooth)
56    {
57      ((SmoothPIC*)pic_container->smooth)->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->smooth = 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_grays_raster(&container->ft_grays_raster);
70/*Exit:*/
71    if(error)
72      ft_smooth_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_smooth_lcd_renderer_class_pic_init(FT_Library library)
78  {
79    return ft_smooth_renderer_class_pic_init(library);
80  }
81  void ft_smooth_lcd_renderer_class_pic_free(FT_Library library)
82  {
83    ft_smooth_renderer_class_pic_free(library);
84  }
85  FT_Error ft_smooth_lcdv_renderer_class_pic_init(FT_Library library)
86  {
87    return ft_smooth_renderer_class_pic_init(library);
88  }
89  void ft_smooth_lcdv_renderer_class_pic_free(FT_Library library)
90  {
91    ft_smooth_renderer_class_pic_free(library);
92  }
93
94#endif /* FT_CONFIG_OPTION_PIC */
95
96
97/* END */