Sync to trunk head (r47736)
[reactos.git] / lib / 3rdparty / freetype / src / base / ftcid.c
1 /***************************************************************************/
2 /* */
3 /* ftcid.c */
4 /* */
5 /* FreeType API for accessing CID font information. */
6 /* */
7 /* Copyright 2007, 2009 by Derek Clegg, Michael Toftdal. */
8 /* */
9 /* This file is part of the FreeType project, and may only be used, */
10 /* modified, and distributed under the terms of the FreeType project */
11 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
12 /* this file you indicate that you have read the license and */
13 /* understand and accept it fully. */
14 /* */
15 /***************************************************************************/
16
17
18 #include <ft2build.h>
19 #include FT_CID_H
20 #include FT_INTERNAL_OBJECTS_H
21 #include FT_SERVICE_CID_H
22
23
24 /* documentation is in ftcid.h */
25
26 FT_EXPORT_DEF( FT_Error )
27 FT_Get_CID_Registry_Ordering_Supplement( FT_Face face,
28 const char* *registry,
29 const char* *ordering,
30 FT_Int *supplement)
31 {
32 FT_Error error;
33 const char* r = NULL;
34 const char* o = NULL;
35 FT_Int s = 0;
36
37
38 error = FT_Err_Invalid_Argument;
39
40 if ( face )
41 {
42 FT_Service_CID service;
43
44
45 FT_FACE_FIND_SERVICE( face, service, CID );
46
47 if ( service && service->get_ros )
48 error = service->get_ros( face, &r, &o, &s );
49 }
50
51 if ( registry )
52 *registry = r;
53
54 if ( ordering )
55 *ordering = o;
56
57 if ( supplement )
58 *supplement = s;
59
60 return error;
61 }
62
63
64 FT_EXPORT_DEF( FT_Error )
65 FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face,
66 FT_Bool *is_cid )
67 {
68 FT_Error error = FT_Err_Invalid_Argument;
69 FT_Bool ic = 0;
70
71
72 if ( face )
73 {
74 FT_Service_CID service;
75
76
77 FT_FACE_FIND_SERVICE( face, service, CID );
78
79 if ( service && service->get_is_cid )
80 error = service->get_is_cid( face, &ic);
81 }
82
83 if ( is_cid )
84 *is_cid = ic;
85
86 return error;
87 }
88
89
90 FT_EXPORT_DEF( FT_Error )
91 FT_Get_CID_From_Glyph_Index( FT_Face face,
92 FT_UInt glyph_index,
93 FT_UInt *cid )
94 {
95 FT_Error error = FT_Err_Invalid_Argument;
96 FT_UInt c = 0;
97
98
99 if ( face )
100 {
101 FT_Service_CID service;
102
103
104 FT_FACE_FIND_SERVICE( face, service, CID );
105
106 if ( service && service->get_cid_from_glyph_index )
107 error = service->get_cid_from_glyph_index( face, glyph_index, &c);
108 }
109
110 if ( cid )
111 *cid = c;
112
113 return error;
114 }
115
116
117 /* END */