PageRenderTime 19ms CodeModel.GetById 11ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/src/freetype/src/truetype/ttpic.c

https://bitbucket.org/cabalistic/ogredeps/
C | 100 lines | 60 code | 20 blank | 20 comment | 5 complexity | 58826bd846679fb6e05b33be99fd827d MD5 | raw file
  1/***************************************************************************/
  2/*                                                                         */
  3/*  ttpic.c                                                                */
  4/*                                                                         */
  5/*    The FreeType position independent code services for truetype module. */
  6/*                                                                         */
  7/*  Copyright 2009, 2010 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#ifdef FT_CONFIG_OPTION_PIC
 26
 27  /* forward declaration of PIC init functions from ttdriver.c */
 28  FT_Error
 29  FT_Create_Class_tt_services( FT_Library           library,
 30                               FT_ServiceDescRec**  output_class );
 31
 32  void
 33  FT_Destroy_Class_tt_services( FT_Library          library,
 34                                FT_ServiceDescRec*  clazz );
 35
 36  void
 37  FT_Init_Class_tt_service_gx_multi_masters(
 38    FT_Service_MultiMastersRec*  sv_mm );
 39
 40  void
 41  FT_Init_Class_tt_service_truetype_glyf(
 42    FT_Service_TTGlyfRec*  sv_ttglyf );
 43
 44  void
 45  tt_driver_class_pic_free( FT_Library  library )
 46  {
 47    FT_PIC_Container*  pic_container = &library->pic_container;
 48    FT_Memory  memory = library->memory;
 49
 50
 51    if ( pic_container->truetype )
 52    {
 53      TTModulePIC*  container = (TTModulePIC*)pic_container->truetype;
 54
 55
 56      if ( container->tt_services )
 57        FT_Destroy_Class_tt_services( library, container->tt_services );
 58      container->tt_services = NULL;
 59      FT_FREE( container );
 60      pic_container->truetype = NULL;
 61    }
 62  }
 63
 64
 65  FT_Error
 66  tt_driver_class_pic_init( FT_Library  library )
 67  {
 68    FT_PIC_Container*  pic_container = &library->pic_container;
 69    FT_Error           error         = TT_Err_Ok;
 70    TTModulePIC*       container;
 71    FT_Memory          memory        = library->memory;
 72
 73
 74    /* allocate pointer, clear and set global container pointer */
 75    if ( FT_ALLOC ( container, sizeof ( *container ) ) )
 76      return error;
 77    FT_MEM_SET( container, 0, sizeof ( *container ) );
 78    pic_container->truetype = container;
 79
 80    /* initialize pointer table - this is how the module usually 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 );
 91Exit:
 92    if ( error )
 93      tt_driver_class_pic_free( library );
 94    return error;
 95  }
 96
 97#endif /* FT_CONFIG_OPTION_PIC */
 98
 99
100/* END */