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