~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/3rdparty/freetype/src/base/ftinit.c

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************/
 
2
/*                                                                         */
 
3
/*  ftinit.c                                                               */
 
4
/*                                                                         */
 
5
/*    FreeType initialization layer (body).                                */
 
6
/*                                                                         */
 
7
/*  Copyright 1996-2001, 2002 by                                           */
 
8
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 
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
  /*                                                                       */
 
20
  /*  The purpose of this file is to implement the following two           */
 
21
  /*  functions:                                                           */
 
22
  /*                                                                       */
 
23
  /*  FT_Add_Default_Modules():                                            */
 
24
  /*     This function is used to add the set of default modules to a      */
 
25
  /*     fresh new library object.  The set is taken from the header file  */
 
26
  /*     `freetype/config/ftmodule.h'.  See the document `FreeType 2.0     */
 
27
  /*     Build System' for more information.                               */
 
28
  /*                                                                       */
 
29
  /*  FT_Init_FreeType():                                                  */
 
30
  /*     This function creates a system object for the current platform,   */
 
31
  /*     builds a library out of it, then calls FT_Default_Drivers().      */
 
32
  /*                                                                       */
 
33
  /*  Note that even if FT_Init_FreeType() uses the implementation of the  */
 
34
  /*  system object defined at build time, client applications are still   */
 
35
  /*  able to provide their own `ftsystem.c'.                              */
 
36
  /*                                                                       */
 
37
  /*************************************************************************/
 
38
 
 
39
 
 
40
#include <ft2build.h>
 
41
#include FT_CONFIG_CONFIG_H
 
42
#include FT_INTERNAL_OBJECTS_H
 
43
#include FT_INTERNAL_DEBUG_H
 
44
#include FT_MODULE_H
 
45
 
 
46
 
 
47
  /*************************************************************************/
 
48
  /*                                                                       */
 
49
  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
 
50
  /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log  */
 
51
  /* messages during execution.                                            */
 
52
  /*                                                                       */
 
53
#undef  FT_COMPONENT
 
54
#define FT_COMPONENT  trace_init
 
55
 
 
56
#undef  FT_USE_MODULE
 
57
#ifdef __cplusplus
 
58
#define FT_USE_MODULE( x )  extern "C" const FT_Module_Class*  x;
 
59
#else
 
60
#define FT_USE_MODULE( x )  extern const FT_Module_Class*  x;
 
61
#endif
 
62
 
 
63
 
 
64
#include FT_CONFIG_MODULES_H
 
65
 
 
66
 
 
67
#undef  FT_USE_MODULE
 
68
#define FT_USE_MODULE( x )  (const FT_Module_Class*)&x,
 
69
 
 
70
  static
 
71
  const FT_Module_Class*  const ft_default_modules[] =
 
72
  {
 
73
#include FT_CONFIG_MODULES_H
 
74
    0
 
75
  };
 
76
 
 
77
 
 
78
  /* documentation is in ftmodule.h */
 
79
 
 
80
  FT_EXPORT_DEF( void )
 
81
  FT_Add_Default_Modules( FT_Library  library )
 
82
  {
 
83
    FT_Error                       error;
 
84
    const FT_Module_Class* const*  cur;
 
85
 
 
86
 
 
87
    /* test for valid `library' delayed to FT_Add_Module() */
 
88
 
 
89
    cur = ft_default_modules;
 
90
    while ( *cur )
 
91
    {
 
92
      error = FT_Add_Module( library, *cur );
 
93
      /* notify errors, but don't stop */
 
94
      if ( error )
 
95
      {
 
96
        FT_ERROR(( "FT_Add_Default_Module: Cannot install `%s', error = 0x%x\n",
 
97
                   (*cur)->module_name, error ));
 
98
      }
 
99
      cur++;
 
100
    }
 
101
  }
 
102
 
 
103
 
 
104
  /* documentation is in freetype.h */
 
105
 
 
106
  FT_EXPORT_DEF( FT_Error )
 
107
  FT_Init_FreeType( FT_Library  *alibrary )
 
108
  {
 
109
    FT_Error   error;
 
110
    FT_Memory  memory;
 
111
 
 
112
 
 
113
    /* First of all, allocate a new system object -- this function is part */
 
114
    /* of the system-specific component, i.e. `ftsystem.c'.                */
 
115
 
 
116
    memory = FT_New_Memory();
 
117
    if ( !memory )
 
118
    {
 
119
      FT_ERROR(( "FT_Init_FreeType: cannot find memory manager\n" ));
 
120
      return FT_Err_Unimplemented_Feature;
 
121
    }
 
122
 
 
123
    /* build a library out of it, then fill it with the set of */
 
124
    /* default drivers.                                        */
 
125
 
 
126
    error = FT_New_Library( memory, alibrary );
 
127
    if ( !error )
 
128
    {
 
129
      (*alibrary)->version_major = FREETYPE_MAJOR;
 
130
      (*alibrary)->version_minor = FREETYPE_MINOR;
 
131
      (*alibrary)->version_patch = FREETYPE_PATCH;
 
132
 
 
133
      FT_Add_Default_Modules( *alibrary );
 
134
    }
 
135
 
 
136
    return error;
 
137
  }
 
138
 
 
139
 
 
140
  /* documentation is in freetype.h */
 
141
 
 
142
  FT_EXPORT_DEF( FT_Error )
 
143
  FT_Done_FreeType( FT_Library  library )
 
144
  {
 
145
    if ( library )
 
146
    {
 
147
      FT_Memory  memory = library->memory;
 
148
 
 
149
 
 
150
      /* Discard the library object */
 
151
      FT_Done_Library( library );
 
152
 
 
153
      /* discard memory manager */
 
154
      FT_Done_Memory( memory );
 
155
    }
 
156
 
 
157
    return FT_Err_Ok;
 
158
  }
 
159
 
 
160
 
 
161
/* END */