|
1 /* GRAPHITE2 LICENSING |
|
2 |
|
3 Copyright 2010, SIL International |
|
4 All rights reserved. |
|
5 |
|
6 This library is free software; you can redistribute it and/or modify |
|
7 it under the terms of the GNU Lesser General Public License as published |
|
8 by the Free Software Foundation; either version 2.1 of License, or |
|
9 (at your option) any later version. |
|
10 |
|
11 This program is distributed in the hope that it will be useful, |
|
12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
14 Lesser General Public License for more details. |
|
15 |
|
16 You should also have received a copy of the GNU Lesser General Public |
|
17 License along with this library in the file named "LICENSE". |
|
18 If not, write to the Free Software Foundation, 51 Franklin Street, |
|
19 Suite 500, Boston, MA 02110-1335, USA or visit their web page on the |
|
20 internet at http://www.fsf.org/licenses/lgpl.html. |
|
21 |
|
22 Alternatively, the contents of this file may be used under the terms of the |
|
23 Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public |
|
24 License, as published by the Free Software Foundation, either version 2 |
|
25 of the License or (at your option) any later version. |
|
26 */ |
|
27 #include "graphite2/Font.h" |
|
28 #include "inc/Font.h" |
|
29 |
|
30 |
|
31 using namespace graphite2; |
|
32 |
|
33 extern "C" { |
|
34 |
|
35 void gr_engine_version(int *nMajor, int *nMinor, int *nBugFix) |
|
36 { |
|
37 if (nMajor) *nMajor = GR2_VERSION_MAJOR; |
|
38 if (nMinor) *nMinor = GR2_VERSION_MINOR; |
|
39 if (nBugFix) *nBugFix = GR2_VERSION_BUGFIX; |
|
40 } |
|
41 |
|
42 gr_font* gr_make_font(float ppm/*pixels per em*/, const gr_face *face) |
|
43 { |
|
44 return gr_make_font_with_advance_fn(ppm, 0, 0, face); |
|
45 } |
|
46 |
|
47 |
|
48 gr_font* gr_make_font_with_ops(float ppm/*pixels per em*/, const void* appFontHandle/*non-NULL*/, const gr_font_ops * font_ops, const gr_face * face/*needed for scaling*/) |
|
49 { //the appFontHandle must stay alive all the time when the gr_font is alive. When finished with the gr_font, call destroy_gr_font |
|
50 if (face == 0) return 0; |
|
51 |
|
52 Font * const res = new Font(ppm, *face, appFontHandle, font_ops); |
|
53 return static_cast<gr_font*>(res); |
|
54 } |
|
55 |
|
56 gr_font* gr_make_font_with_advance_fn(float ppm/*pixels per em*/, const void* appFontHandle/*non-NULL*/, gr_advance_fn getAdvance, const gr_face * face/*needed for scaling*/) |
|
57 { |
|
58 const gr_font_ops ops = {sizeof(gr_font_ops), getAdvance, NULL}; |
|
59 return gr_make_font_with_ops(ppm, appFontHandle, &ops, face); |
|
60 } |
|
61 |
|
62 void gr_font_destroy(gr_font *font) |
|
63 { |
|
64 delete font; |
|
65 } |
|
66 |
|
67 |
|
68 } // extern "C" |
|
69 |
|
70 |
|
71 |
|
72 |