Line | Source Code | Coverage |
---|
1 | | - |
2 | | - |
3 | | - |
4 | extern void qt_registerFont(const QString &familyname, const QString &stylename, | - |
5 | const QString &foundryname, int weight, | - |
6 | QFont::Style style, int stretch, bool antialiased, | - |
7 | bool scalable, int pixelSize, bool fixedPitch, | - |
8 | const QSupportedWritingSystems &writingSystems, void *hanlde); | - |
9 | void QPlatformFontDatabase::registerQPF2Font(const QByteArray &dataArray, void *handle) | - |
10 | { | - |
11 | if (dataArray.size() == 0) never evaluated: dataArray.size() == 0 | 0 |
12 | return; | 0 |
13 | | - |
14 | const uchar *data = reinterpret_cast<const uchar *>(dataArray.constData()); | - |
15 | if (QFontEngineQPA::verifyHeader(data, dataArray.size())) { never evaluated: QFontEngineQPA::verifyHeader(data, dataArray.size()) | 0 |
16 | QString fontName = QFontEngineQPA::extractHeaderField(data, QFontEngineQPA::Tag_FontName).toString(); | - |
17 | int pixelSize = QFontEngineQPA::extractHeaderField(data, QFontEngineQPA::Tag_PixelSize).toInt(); | - |
18 | QVariant weight = QFontEngineQPA::extractHeaderField(data, QFontEngineQPA::Tag_Weight); | - |
19 | QVariant style = QFontEngineQPA::extractHeaderField(data, QFontEngineQPA::Tag_Style); | - |
20 | QByteArray writingSystemBits = QFontEngineQPA::extractHeaderField(data, QFontEngineQPA::Tag_WritingSystems).toByteArray(); | - |
21 | | - |
22 | if (!fontName.isEmpty() && pixelSize) { never evaluated: !fontName.isEmpty() never evaluated: pixelSize | 0 |
23 | QFont::Weight fontWeight = QFont::Normal; | - |
24 | if (weight.type() == QVariant::Int || weight.type() == QVariant::UInt) never evaluated: weight.type() == QVariant::Int never evaluated: weight.type() == QVariant::UInt | 0 |
25 | fontWeight = QFont::Weight(weight.toInt()); never executed: fontWeight = QFont::Weight(weight.toInt()); | 0 |
26 | | - |
27 | QFont::Style fontStyle = static_cast<QFont::Style>(style.toInt()); | - |
28 | | - |
29 | QSupportedWritingSystems writingSystems; | - |
30 | for (int i = 0; i < writingSystemBits.count(); ++i) { never evaluated: i < writingSystemBits.count() | 0 |
31 | uchar currentByte = writingSystemBits.at(i); | - |
32 | for (int j = 0; j < 8; ++j) { | 0 |
33 | if (currentByte & 1) never evaluated: currentByte & 1 | 0 |
34 | writingSystems.setSupported(QFontDatabase::WritingSystem(i * 8 + j)); never executed: writingSystems.setSupported(QFontDatabase::WritingSystem(i * 8 + j)); | 0 |
35 | currentByte >>= 1; | - |
36 | } | 0 |
37 | } | 0 |
38 | QFont::Stretch stretch = QFont::Unstretched; | - |
39 | registerFont(fontName,QString(),QString(),fontWeight,fontStyle,stretch,true,false,pixelSize,false,writingSystems,handle); | - |
40 | } | 0 |
41 | } else { | 0 |
42 | QMessageLogger("text/qplatformfontdatabase.cpp", 96, __PRETTY_FUNCTION__).debug() << "header verification of QPF2 font failed. maybe it is corrupt?"; | - |
43 | } | 0 |
44 | } | - |
45 | void QPlatformFontDatabase::registerFont(const QString &familyname, const QString &stylename, | - |
46 | const QString &foundryname, QFont::Weight weight, | - |
47 | QFont::Style style, QFont::Stretch stretch, bool antialiased, | - |
48 | bool scalable, int pixelSize, bool fixedPitch, | - |
49 | const QSupportedWritingSystems &writingSystems, void *usrPtr) | - |
50 | { | - |
51 | if (scalable) partially evaluated: scalable yes Evaluation Count:51534 | no Evaluation Count:0 |
| 0-51534 |
52 | pixelSize = 0; executed: pixelSize = 0; Execution Count:51534 | 51534 |
53 | | - |
54 | qt_registerFont(familyname, stylename, foundryname, weight, style, | - |
55 | stretch, antialiased, scalable, pixelSize, | - |
56 | fixedPitch, writingSystems, usrPtr); | - |
57 | } executed: } Execution Count:51534 | 51534 |
58 | | - |
59 | class QWritingSystemsPrivate | - |
60 | { | - |
61 | public: | - |
62 | QWritingSystemsPrivate() | - |
63 | : ref(1) | - |
64 | , vector(QFontDatabase::WritingSystemsCount,false) | - |
65 | { | - |
66 | } executed: } Execution Count:50326 | 50326 |
67 | | - |
68 | QWritingSystemsPrivate(const QWritingSystemsPrivate *other) | - |
69 | : ref(1) | - |
70 | , vector(other->vector) | - |
71 | { | - |
72 | } | 0 |
73 | | - |
74 | QAtomicInt ref; | - |
75 | QVector<bool> vector; | - |
76 | }; | - |
77 | | - |
78 | | - |
79 | | - |
80 | | - |
81 | QSupportedWritingSystems::QSupportedWritingSystems() | - |
82 | { | - |
83 | d = new QWritingSystemsPrivate; | - |
84 | } executed: } Execution Count:50326 | 50326 |
85 | | - |
86 | | - |
87 | | - |
88 | | - |
89 | QSupportedWritingSystems::QSupportedWritingSystems(const QSupportedWritingSystems &other) | - |
90 | { | - |
91 | d = other.d; | - |
92 | d->ref.ref(); | - |
93 | } | 0 |
94 | | - |
95 | | - |
96 | | - |
97 | | - |
98 | QSupportedWritingSystems &QSupportedWritingSystems::operator=(const QSupportedWritingSystems &other) | - |
99 | { | - |
100 | if (d != other.d) { never evaluated: d != other.d | 0 |
101 | other.d->ref.ref(); | - |
102 | if (!d->ref.deref()) never evaluated: !d->ref.deref() | 0 |
103 | delete d; never executed: delete d; | 0 |
104 | d = other.d; | - |
105 | } | 0 |
106 | return *this; never executed: return *this; | 0 |
107 | } | - |
108 | | - |
109 | | - |
110 | | - |
111 | | - |
112 | QSupportedWritingSystems::~QSupportedWritingSystems() | - |
113 | { | - |
114 | if (!d->ref.deref()) partially evaluated: !d->ref.deref() yes Evaluation Count:50326 | no Evaluation Count:0 |
| 0-50326 |
115 | delete d; executed: delete d; Execution Count:50326 | 50326 |
116 | } executed: } Execution Count:50326 | 50326 |
117 | | - |
118 | | - |
119 | | - |
120 | | - |
121 | void QSupportedWritingSystems::detach() | - |
122 | { | - |
123 | if (d->ref.load() != 1) { partially evaluated: d->ref.load() != 1 no Evaluation Count:0 | yes Evaluation Count:89607 |
| 0-89607 |
124 | QWritingSystemsPrivate *newd = new QWritingSystemsPrivate(d); | - |
125 | if (!d->ref.deref()) never evaluated: !d->ref.deref() | 0 |
126 | delete d; never executed: delete d; | 0 |
127 | d = newd; | - |
128 | } | 0 |
129 | } executed: } Execution Count:89607 | 89607 |
130 | | - |
131 | | - |
132 | | - |
133 | | - |
134 | | - |
135 | void QSupportedWritingSystems::setSupported(QFontDatabase::WritingSystem writingSystem, bool support) | - |
136 | { | - |
137 | detach(); | - |
138 | d->vector[writingSystem] = support; | - |
139 | } executed: } Execution Count:89607 | 89607 |
140 | | - |
141 | | - |
142 | | - |
143 | | - |
144 | | - |
145 | bool QSupportedWritingSystems::supported(QFontDatabase::WritingSystem writingSystem) const | - |
146 | { | - |
147 | return d->vector.at(writingSystem); executed: return d->vector.at(writingSystem); Execution Count:3407931 | 3407931 |
148 | } | - |
149 | QPlatformFontDatabase::~QPlatformFontDatabase() | - |
150 | { | - |
151 | } | - |
152 | void QPlatformFontDatabase::populateFontDatabase() | - |
153 | { | - |
154 | QString fontpath = fontDir(); | - |
155 | if(!QFile::exists(fontpath)) { never evaluated: !QFile::exists(fontpath) | 0 |
156 | QMessageLogger("text/qplatformfontdatabase.cpp", 257, __PRETTY_FUNCTION__).warning("QFontDatabase: Cannot find font directory '%s' - is Qt installed correctly?", | - |
157 | QString(QDir::toNativeSeparators(fontpath)).toLocal8Bit().constData()); | - |
158 | return; | 0 |
159 | } | - |
160 | | - |
161 | QDir dir(fontpath); | - |
162 | dir.setNameFilters(QStringList() << QLatin1String("*.qpf2")); | - |
163 | dir.refresh(); | - |
164 | for (int i = 0; i < int(dir.count()); ++i) { never evaluated: i < int(dir.count()) | 0 |
165 | const QByteArray fileName = QFile::encodeName(dir.absoluteFilePath(dir[i])); | - |
166 | QFile file(QString::fromLocal8Bit(fileName)); | - |
167 | if (file.open(QFile::ReadOnly)) { never evaluated: file.open(QFile::ReadOnly) | 0 |
168 | const QByteArray fileData = file.readAll(); | - |
169 | QByteArray *fileDataPtr = new QByteArray(fileData); | - |
170 | registerQPF2Font(fileData, fileDataPtr); | - |
171 | } | 0 |
172 | } | 0 |
173 | } | 0 |
174 | | - |
175 | | - |
176 | | - |
177 | | - |
178 | | - |
179 | | - |
180 | QFontEngineMulti *QPlatformFontDatabase::fontEngineMulti(QFontEngine *fontEngine, | - |
181 | QUnicodeTables::Script script) | - |
182 | { | - |
183 | return new QFontEngineMultiQPA(fontEngine, script); never executed: return new QFontEngineMultiQPA(fontEngine, script); | 0 |
184 | } | - |
185 | | - |
186 | | - |
187 | | - |
188 | | - |
189 | | - |
190 | QFontEngine *QPlatformFontDatabase::fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle) | - |
191 | { | - |
192 | (void)script;; | - |
193 | (void)handle;; | - |
194 | QByteArray *fileDataPtr = static_cast<QByteArray *>(handle); | - |
195 | QFontEngineQPA *engine = new QFontEngineQPA(fontDef,*fileDataPtr); | - |
196 | | - |
197 | return engine; never executed: return engine; | 0 |
198 | } | - |
199 | | - |
200 | QFontEngine *QPlatformFontDatabase::fontEngine(const QByteArray &fontData, qreal pixelSize, | - |
201 | QFont::HintingPreference hintingPreference) | - |
202 | { | - |
203 | (void)fontData;; | - |
204 | (void)pixelSize;; | - |
205 | (void)hintingPreference;; | - |
206 | QMessageLogger("text/qplatformfontdatabase.cpp", 307, __PRETTY_FUNCTION__).warning("This plugin does not support font engines created directly from font data"); | - |
207 | return 0; never executed: return 0; | 0 |
208 | } | - |
209 | | - |
210 | | - |
211 | | - |
212 | | - |
213 | | - |
214 | QStringList QPlatformFontDatabase::fallbacksForFamily(const QString family, const QFont::Style &style, const QFont::StyleHint &styleHint, const QUnicodeTables::Script &script) const | - |
215 | { | - |
216 | (void)family;; | - |
217 | (void)style;; | - |
218 | (void)styleHint;; | - |
219 | (void)script;; | - |
220 | return QStringList(); never executed: return QStringList(); | 0 |
221 | } | - |
222 | QStringList QPlatformFontDatabase::addApplicationFont(const QByteArray &fontData, const QString &fileName) | - |
223 | { | - |
224 | (void)fontData;; | - |
225 | (void)fileName;; | - |
226 | | - |
227 | QMessageLogger("text/qplatformfontdatabase.cpp", 338, __PRETTY_FUNCTION__).warning("This plugin does not support application fonts"); | - |
228 | return QStringList(); never executed: return QStringList(); | 0 |
229 | } | - |
230 | | - |
231 | | - |
232 | | - |
233 | | - |
234 | void QPlatformFontDatabase::releaseHandle(void *handle) | - |
235 | { | - |
236 | QByteArray *fileDataPtr = static_cast<QByteArray *>(handle); | - |
237 | delete fileDataPtr; | - |
238 | } | 0 |
239 | | - |
240 | | - |
241 | | - |
242 | | - |
243 | QString QPlatformFontDatabase::fontDir() const | - |
244 | { | - |
245 | QString fontpath = QString::fromLocal8Bit(qgetenv("QT_QPA_FONTDIR")); | - |
246 | if (fontpath.isEmpty()) { never evaluated: fontpath.isEmpty() | 0 |
247 | fontpath = QLibraryInfo::location(QLibraryInfo::LibrariesPath); | - |
248 | fontpath += QLatin1String("/fonts"); | - |
249 | } | 0 |
250 | | - |
251 | return fontpath; never executed: return fontpath; | 0 |
252 | } | - |
253 | QFont QPlatformFontDatabase::defaultFont() const | - |
254 | { | - |
255 | return QFont(QLatin1String("Helvetica")); never executed: return QFont(QLatin1String("Helvetica")); | 0 |
256 | } | - |
257 | | - |
258 | | - |
259 | | - |
260 | | - |
261 | | - |
262 | | - |
263 | | - |
264 | QString QPlatformFontDatabase::resolveFontFamilyAlias(const QString &family) const | - |
265 | { | - |
266 | return family; never executed: return family; | 0 |
267 | } | - |
268 | bool QPlatformFontDatabase::fontsAlwaysScalable() const | - |
269 | { | - |
270 | return false; executed: return false; Execution Count:209 | 209 |
271 | } | - |
272 | | - |
273 | | - |
274 | | - |
275 | | - |
276 | | - |
277 | | - |
278 | | - |
279 | QList<int> QPlatformFontDatabase::standardSizes() const | - |
280 | { | - |
281 | QList<int> ret; | - |
282 | static const unsigned short standard[] = | - |
283 | { 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72, 0 }; | - |
284 | ret.reserve(int(sizeof(standard) / sizeof(standard[0]))); | - |
285 | const unsigned short *sizes = standard; | - |
286 | while (*sizes) ret << *sizes++; executed: ret << *sizes++; Execution Count:3762 evaluated: *sizes yes Evaluation Count:3762 | yes Evaluation Count:209 |
| 209-3762 |
287 | return ret; executed: return ret; Execution Count:209 | 209 |
288 | } | - |
289 | | - |
290 | | - |
| | |