Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  ttpic.c                                                                */
  4. /*                                                                         */
  5. /*    The FreeType position independent code services for truetype 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 "ttpic.h"
  23. #include "tterrors.h"
  24.  
  25.  
  26. #ifdef FT_CONFIG_OPTION_PIC
  27.  
  28.   /* forward declaration of PIC init functions from ttdriver.c */
  29.   FT_Error
  30.   FT_Create_Class_tt_services( FT_Library           library,
  31.                                FT_ServiceDescRec**  output_class );
  32.   void
  33.   FT_Destroy_Class_tt_services( FT_Library          library,
  34.                                 FT_ServiceDescRec*  clazz );
  35.   void
  36.   FT_Init_Class_tt_service_gx_multi_masters(
  37.     FT_Service_MultiMastersRec*  sv_mm );
  38.   void
  39.   FT_Init_Class_tt_service_truetype_glyf(
  40.     FT_Service_TTGlyfRec*  sv_ttglyf );
  41.  
  42.  
  43.   void
  44.   tt_driver_class_pic_free( FT_Library  library )
  45.   {
  46.     FT_PIC_Container*  pic_container = &library->pic_container;
  47.     FT_Memory          memory        = library->memory;
  48.  
  49.  
  50.     if ( pic_container->truetype )
  51.     {
  52.       TTModulePIC*  container = (TTModulePIC*)pic_container->truetype;
  53.  
  54.  
  55.       if ( container->tt_services )
  56.         FT_Destroy_Class_tt_services( library, container->tt_services );
  57.       container->tt_services = NULL;
  58.       FT_FREE( container );
  59.       pic_container->truetype = NULL;
  60.     }
  61.   }
  62.  
  63.  
  64.   FT_Error
  65.   tt_driver_class_pic_init( FT_Library  library )
  66.   {
  67.     FT_PIC_Container*  pic_container = &library->pic_container;
  68.     FT_Error           error         = FT_Err_Ok;
  69.     TTModulePIC*       container     = NULL;
  70.     FT_Memory          memory        = library->memory;
  71.  
  72.  
  73.     /* allocate pointer, clear and set global container pointer */
  74.     if ( FT_ALLOC( container, sizeof ( *container ) ) )
  75.       return error;
  76.     FT_MEM_SET( container, 0, sizeof ( *container ) );
  77.     pic_container->truetype = container;
  78.  
  79.     /* initialize pointer table - this is how the module usually */
  80.     /* expects this data                                         */
  81.     error = FT_Create_Class_tt_services( library,
  82.                                          &container->tt_services );
  83.     if ( error )
  84.       goto Exit;
  85. #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
  86.     FT_Init_Class_tt_service_gx_multi_masters(
  87.       &container->tt_service_gx_multi_masters );
  88. #endif
  89.     FT_Init_Class_tt_service_truetype_glyf(
  90.       &container->tt_service_truetype_glyf );
  91.  
  92.   Exit:
  93.     if ( error )
  94.       tt_driver_class_pic_free( library );
  95.     return error;
  96.   }
  97.  
  98. #endif /* FT_CONFIG_OPTION_PIC */
  99.  
  100.  
  101. /* END */
  102.