7d08547ab8921f4614c36b74849419ffb4f156d5
[profile/ivi/qtbase.git] / src / corelib / tools / qharfbuzz.cpp
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/
5 **
6 ** This file is part of the QtCore module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** GNU Lesser General Public License Usage
10 ** This file may be used under the terms of the GNU Lesser General Public
11 ** License version 2.1 as published by the Free Software Foundation and
12 ** appearing in the file LICENSE.LGPL included in the packaging of this
13 ** file. Please review the following information to ensure the GNU Lesser
14 ** General Public License version 2.1 requirements will be met:
15 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
16 **
17 ** In addition, as a special exception, Nokia gives you certain additional
18 ** rights. These rights are described in the Nokia Qt LGPL Exception
19 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
20 **
21 ** GNU General Public License Usage
22 ** Alternatively, this file may be used under the terms of the GNU General
23 ** Public License version 3.0 as published by the Free Software Foundation
24 ** and appearing in the file LICENSE.GPL included in the packaging of this
25 ** file. Please review the following information to ensure the GNU General
26 ** Public License version 3.0 requirements will be met:
27 ** http://www.gnu.org/copyleft/gpl.html.
28 **
29 ** Other Usage
30 ** Alternatively, this file may be used in accordance with the terms and
31 ** conditions contained in a signed written agreement between you and Nokia.
32 **
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #include "qunicodetables_p.h"
43 #include "qlibrary.h"
44 #include "qtextcodec.h"
45
46 #include "qharfbuzz_p.h"
47
48 QT_USE_NAMESPACE
49
50 extern "C" {
51
52 HB_GraphemeClass HB_GetGraphemeClass(HB_UChar32 ch)
53 {
54     const QUnicodeTables::Properties *prop = QUnicodeTables::properties(ch);
55     return (HB_GraphemeClass) prop->graphemeBreak;
56 }
57
58 HB_WordClass HB_GetWordClass(HB_UChar32 ch)
59 {
60     const QUnicodeTables::Properties *prop = QUnicodeTables::properties(ch);
61     return (HB_WordClass) prop->wordBreak;
62 }
63
64 HB_SentenceClass HB_GetSentenceClass(HB_UChar32 ch)
65 {
66     const QUnicodeTables::Properties *prop = QUnicodeTables::properties(ch);
67     return (HB_SentenceClass) prop->sentenceBreak;
68 }
69
70 HB_LineBreakClass HB_GetLineBreakClass(HB_UChar32 ch)
71 {
72     return (HB_LineBreakClass)QUnicodeTables::lineBreakClass(ch);
73 }
74
75
76 void HB_GetGraphemeAndLineBreakClass(HB_UChar32 ch, HB_GraphemeClass *grapheme, HB_LineBreakClass *lineBreak)
77 {
78     const QUnicodeTables::Properties *prop = QUnicodeTables::properties(ch);
79     *grapheme = (HB_GraphemeClass) prop->graphemeBreak;
80     *lineBreak = (HB_LineBreakClass) prop->line_break_class;
81 }
82
83 void HB_GetUnicodeCharProperties(HB_UChar32 ch, HB_CharCategory *category, int *combiningClass)
84 {
85     const QUnicodeTables::Properties *prop = QUnicodeTables::properties(ch);
86     *category = (HB_CharCategory)prop->category;
87     *combiningClass = prop->combiningClass;
88 }
89
90 HB_CharCategory HB_GetUnicodeCharCategory(HB_UChar32 ch)
91 {
92     return (HB_CharCategory)QChar::category(ch);
93 }
94
95 int HB_GetUnicodeCharCombiningClass(HB_UChar32 ch)
96 {
97     return QChar::combiningClass(ch);
98 }
99
100 HB_UChar16 HB_GetMirroredChar(HB_UChar16 ch)
101 {
102     return QChar::mirroredChar(ch);
103 }
104
105 void (*HB_Library_Resolve(const char *library, int version, const char *symbol))()
106 {
107 #ifdef QT_NO_LIBRARY
108     return 0;
109 #else
110     return QLibrary::resolve(QLatin1String(library), version, symbol);
111 #endif
112 }
113
114 } // extern "C"
115
116 QT_BEGIN_NAMESPACE
117
118 HB_Bool qShapeItem(HB_ShaperItem *item)
119 {
120     return HB_ShapeItem(item);
121 }
122
123 HB_Face qHBNewFace(void *font, HB_GetFontTableFunc tableFunc)
124 {
125     return HB_NewFace(font, tableFunc);
126 }
127
128 void qHBFreeFace(HB_Face face)
129 {
130     HB_FreeFace(face);
131 }
132
133 void qGetCharAttributes(const HB_UChar16 *string, hb_uint32 stringLength,
134                         const HB_ScriptItem *items, hb_uint32 numItems,
135                         HB_CharAttributes *attributes)
136 {
137     HB_GetCharAttributes(string, stringLength, items, numItems, attributes);
138 }
139
140 QT_END_NAMESPACE