1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  pshpic.c                                                               */
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*    The FreeType position independent code services for pshinter module. */
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/*  Copyright 2009-2015 by                                                 */
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  Oran Agra and Mickey Gabel.                                            */
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  This file is part of the FreeType project, and may only be used,       */
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  modified, and distributed under the terms of the FreeType project      */
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  this file you indicate that you have read the license and              */
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  understand and accept it fully.                                        */
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include <ft2build.h>
20e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_FREETYPE_H
21e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_INTERNAL_OBJECTS_H
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "pshpic.h"
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "pshnterr.h"
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FT_CONFIG_OPTION_PIC
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* forward declaration of PIC init functions from pshmod.c */
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  void
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Init_Class_pshinter_interface( FT_Library           library,
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                    PSHinter_Interface*  clazz );
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  void
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  pshinter_module_class_pic_free( FT_Library  library )
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_PIC_Container*  pic_container = &library->pic_container;
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Memory          memory        = library->memory;
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ( pic_container->pshinter )
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov      FT_FREE( pic_container->pshinter );
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov      pic_container->pshinter = NULL;
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  }
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Error
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  pshinter_module_class_pic_init( FT_Library  library )
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_PIC_Container*  pic_container = &library->pic_container;
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Error           error         = FT_Err_Ok;
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PSHinterPIC*       container     = NULL;
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Memory          memory        = library->memory;
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* allocate pointer, clear and set global container pointer */
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ( FT_ALLOC( container, sizeof ( *container ) ) )
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov      return error;
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_MEM_SET( container, 0, sizeof ( *container ) );
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    pic_container->pshinter = container;
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* add call to initialization function when you add new scripts */
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Init_Class_pshinter_interface(
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov      library, &container->pshinter_interface );
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if ( error )
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov      pshinter_module_class_pic_free( library );
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return error;
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  }
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CONFIG_OPTION_PIC */
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */
77