[poppler] 2 commits - qt5/src qt5/tests
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Sat Mar 30 23:34:56 UTC 2019
qt5/src/poppler-private.cc | 37 +++++++------------------------------
qt5/tests/check_annotations.cpp | 20 ++++++++++++++++++++
2 files changed, 27 insertions(+), 30 deletions(-)
New commits:
commit 74abafe107d0e865919557034c7d6d9dcd19ef6c
Author: Adam Reichold <adam.reichold at t-online.de>
Date: Sat Mar 30 19:31:58 2019 +0100
Implement UnicodeParsedString in terms of QString::fromUtf16 for significant simplifications.
diff --git a/qt5/src/poppler-private.cc b/qt5/src/poppler-private.cc
index 719ccffc..5a86bafb 100644
--- a/qt5/src/poppler-private.cc
+++ b/qt5/src/poppler-private.cc
@@ -105,41 +105,18 @@ namespace Debug {
if ( !s1 || s1->getLength() == 0 )
return QString();
- const char *cString;
- int stringLength;
- bool deleteCString;
- bool isLE = false;
- if ( s1->hasUnicodeMarker() )
+ if ( s1->hasUnicodeMarker() || s1->hasUnicodeMarkerLE() )
{
- cString = s1->c_str();
- stringLength = s1->getLength();
- deleteCString = false;
- }
- else if ( s1->hasUnicodeMarkerLE() )
- {
- isLE = true;
- cString = s1->c_str();
- stringLength = s1->getLength();
- deleteCString = false;
+ return QString::fromUtf16(reinterpret_cast<const ushort *>(s1->c_str()), s1->getLength() / 2);
}
else
{
- cString = pdfDocEncodingToUTF16(s1, &stringLength);
- deleteCString = true;
- }
-
- QString result;
- result.reserve(stringLength / 2);
- // i = 2 to skip the unicode marker
- for ( int i = 2; i < stringLength; i += 2 )
- {
- const Unicode u = isLE ? ( ( cString[i+1] & 0xff ) << 8 ) | ( cString[i] & 0xff )
- : ( ( cString[i] & 0xff ) << 8 ) | ( cString[i+1] & 0xff );
- result += QChar( u );
- }
- if (deleteCString)
+ int stringLength;
+ const char *cString = pdfDocEncodingToUTF16(s1, &stringLength);
+ auto result = QString::fromUtf16(reinterpret_cast<const ushort *>(cString), stringLength / 2);
delete[] cString;
- return result;
+ return result;
+ }
}
GooString *QStringToUnicodeGooString(const QString &s) {
commit b9512adc677408f74087f7865b2d7ea99b81cc4b
Author: Adam Reichold <adam.reichold at t-online.de>
Date: Sat Mar 30 12:25:51 2019 +0100
Add test case for annotations containing UTF-16LE-encoded text.
diff --git a/qt5/tests/check_annotations.cpp b/qt5/tests/check_annotations.cpp
index 2ae3613b..95a30ac8 100644
--- a/qt5/tests/check_annotations.cpp
+++ b/qt5/tests/check_annotations.cpp
@@ -19,6 +19,7 @@ private slots:
void checkQColorPrecision();
void checkFontSizeAndColor();
void checkHighlightFromAndToQuads();
+ void checkUTF16LEAnnot();
};
/* Is .5f sufficient for 16 bit color channel roundtrip trough save and load on all architectures? */
@@ -135,6 +136,25 @@ void TestAnnotations::checkHighlightFromAndToQuads()
QCOMPARE(ha->highlightQuads(), quads);
}
+void TestAnnotations::checkUTF16LEAnnot()
+{
+ std::unique_ptr<Poppler::Document> doc{
+ Poppler::Document::load(TESTDATADIR "/unittestcases/utf16le-annot.pdf")
+ };
+ QVERIFY(doc.get());
+
+ std::unique_ptr<Poppler::Page> page{
+ doc->page(0)
+ };
+ QVERIFY(page.get());
+
+ auto annots = page->annotations();
+ QCOMPARE(annots.size(), 2);
+
+ auto annot = annots[1];
+ QCOMPARE(annot->contents(), QStringLiteral("Únîcödé豰"));
+}
+
QTEST_GUILESS_MAIN(TestAnnotations)
#include "check_annotations.moc"
More information about the poppler
mailing list