/src/mozilla-central/gfx/graphite2/src/inc/NameTable.h
Line | Count | Source (jump to first uncovered line) |
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 | | #pragma once |
28 | | |
29 | | #include <graphite2/Segment.h> |
30 | | #include "inc/TtfTypes.h" |
31 | | #include "inc/locale2lcid.h" |
32 | | |
33 | | namespace graphite2 { |
34 | | |
35 | | class NameTable |
36 | | { |
37 | | NameTable(const NameTable &); |
38 | | NameTable & operator = (const NameTable &); |
39 | | |
40 | | public: |
41 | | NameTable(const void * data, size_t length, uint16 platfromId=3, uint16 encodingID = 1); |
42 | 0 | ~NameTable() { free(const_cast<TtfUtil::Sfnt::FontNames *>(m_table)); } |
43 | | enum eNameFallback { |
44 | | eNoFallback = 0, |
45 | | eEnUSFallbackOnly = 1, |
46 | | eEnOrAnyFallback = 2 |
47 | | }; |
48 | | uint16 setPlatformEncoding(uint16 platfromId=3, uint16 encodingID = 1); |
49 | | void * getName(uint16 & languageId, uint16 nameId, gr_encform enc, uint32 & length); |
50 | | uint16 getLanguageId(const char * bcp47Locale); |
51 | | |
52 | | CLASS_NEW_DELETE |
53 | | private: |
54 | | uint16 m_platformId; |
55 | | uint16 m_encodingId; |
56 | | uint16 m_languageCount; |
57 | | uint16 m_platformOffset; // offset of first NameRecord with for platform 3, encoding 1 |
58 | | uint16 m_platformLastRecord; |
59 | | uint16 m_nameDataLength; |
60 | | const TtfUtil::Sfnt::FontNames * m_table; |
61 | | const uint8 * m_nameData; |
62 | | Locale2Lang m_locale2Lang; |
63 | | }; |
64 | | |
65 | | } // namespace graphite2 |