1/***************************************************************************/
2/*                                                                         */
3/*  ftbdf.c                                                                */
4/*                                                                         */
5/*    FreeType API for accessing BDF-specific strings (body).              */
6/*                                                                         */
7/*  Copyright 2002-2004, 2013, 2014 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#include <ft2build.h>
20#include FT_INTERNAL_DEBUG_H
21
22#include FT_INTERNAL_OBJECTS_H
23#include FT_SERVICE_BDF_H
24
25
26  /* documentation is in ftbdf.h */
27
28  FT_EXPORT_DEF( FT_Error )
29  FT_Get_BDF_Charset_ID( FT_Face       face,
30                         const char*  *acharset_encoding,
31                         const char*  *acharset_registry )
32  {
33    FT_Error     error;
34    const char*  encoding = NULL;
35    const char*  registry = NULL;
36
37    FT_Service_BDF  service;
38
39
40    if ( !face )
41      return FT_THROW( Invalid_Face_Handle );
42
43    FT_FACE_FIND_SERVICE( face, service, BDF );
44
45    if ( service && service->get_charset_id )
46      error = service->get_charset_id( face, &encoding, &registry );
47    else
48      error = FT_THROW( Invalid_Argument );
49
50    if ( acharset_encoding )
51      *acharset_encoding = encoding;
52
53    if ( acharset_registry )
54      *acharset_registry = registry;
55
56    return error;
57  }
58
59
60  /* documentation is in ftbdf.h */
61
62  FT_EXPORT_DEF( FT_Error )
63  FT_Get_BDF_Property( FT_Face           face,
64                       const char*       prop_name,
65                       BDF_PropertyRec  *aproperty )
66  {
67    FT_Error  error;
68
69    FT_Service_BDF  service;
70
71
72    if ( !face )
73      return FT_THROW( Invalid_Face_Handle );
74
75    if ( !aproperty )
76      return FT_THROW( Invalid_Argument );
77
78    aproperty->type = BDF_PROPERTY_TYPE_NONE;
79
80    FT_FACE_FIND_SERVICE( face, service, BDF );
81
82    if ( service && service->get_property )
83      error = service->get_property( face, prop_name, aproperty );
84    else
85      error = FT_THROW( Invalid_Argument );
86
87    return error;
88  }
89
90
91/* END */
92