1 | /***************************************************************************/ |
2 | /* */ |
3 | /* ftbdf.c */ |
4 | /* */ |
5 | /* FreeType API for accessing BDF-specific strings (body). */ |
6 | /* */ |
7 | /* Copyright 2002-2018 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, ®istry ); |
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 | |