/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. #include <ft2build.h>
  18. #include FT_FREETYPE_H
  19. #include FT_INTERNAL_OBJECTS_H
  20. #include "rastpic.h"
  21. #ifdef FT_CONFIG_OPTION_PIC
  22. /* forward declaration of PIC init functions from ftraster.c */
  23. void FT_Init_Class_ft_standard_raster(FT_Raster_Funcs*);
  24. void
  25. ft_raster1_renderer_class_pic_free( FT_Library library )
  26. {
  27. FT_PIC_Container* pic_container = &library->pic_container;
  28. FT_Memory memory = library->memory;
  29. if ( pic_container->raster )
  30. {
  31. RasterPIC* container = (RasterPIC*)pic_container->raster;
  32. if(--container->ref_count)
  33. return;
  34. FT_FREE( container );
  35. pic_container->raster = NULL;
  36. }
  37. }
  38. FT_Error
  39. ft_raster1_renderer_class_pic_init( FT_Library library )
  40. {
  41. FT_PIC_Container* pic_container = &library->pic_container;
  42. FT_Error error = FT_Err_Ok;
  43. RasterPIC* container;
  44. FT_Memory memory = library->memory;
  45. /* since this function also serve raster5 renderer,
  46. it implements reference counting */
  47. if(pic_container->raster)
  48. {
  49. ((RasterPIC*)pic_container->raster)->ref_count++;
  50. return error;
  51. }
  52. /* allocate pointer, clear and set global container pointer */
  53. if ( FT_ALLOC ( container, sizeof ( *container ) ) )
  54. return error;
  55. FT_MEM_SET( container, 0, sizeof(*container) );
  56. pic_container->raster = container;
  57. container->ref_count = 1;
  58. /* initialize pointer table - this is how the module usually expects this data */
  59. FT_Init_Class_ft_standard_raster(&container->ft_standard_raster);
  60. /*Exit:*/
  61. if(error)
  62. ft_raster1_renderer_class_pic_free(library);
  63. return error;
  64. }
  65. /* re-route these init and free functions to the above functions */
  66. FT_Error ft_raster5_renderer_class_pic_init(FT_Library library)
  67. {
  68. return ft_raster1_renderer_class_pic_init(library);
  69. }
  70. void ft_raster5_renderer_class_pic_free(FT_Library library)
  71. {
  72. ft_raster1_renderer_class_pic_free(library);
  73. }
  74. #endif /* FT_CONFIG_OPTION_PIC */
  75. /* END */