diff options
author | halcanary <halcanary@google.com> | 2016-08-18 14:22:52 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-08-18 14:22:52 -0700 |
commit | 530032a18e373ee673ae96fdbfa1fae6292f8f08 (patch) | |
tree | 5edb6e14ca33bf75d3d7b1df73da47be56337b3a /tests/PDFPrimitivesTest.cpp | |
parent | 9637ea91b88ff8f8e95325bfc41417ffc4d5ee0b (diff) |
SkPDF: in-place font subsetting
Motivation: gross code simplification, also no bitset lookups at draw time.
SkPDFFont owns its glyph useage bitset.
SkPDFSubstituteMap goes away.
SkPDFObject interface is simplified.
SkPDFDocument tracks font usage (as hash set), not glyph usage.
SkPDFFont gets a simpler constructor.
SkPDFFont has first and last glyph set in constructor, not adjusted later.
SkPDFFont implementations are simplified.
SkPDFGlyphSet is replaced with simple SkBitSet.
SkPDFFont sizes its SkBitSets based on glyph count.
SkPDFGlyphSetMap goes away.
SkBitSet is now non-copyable.
SkBitSet now how utility methods to match old SkPDFGlyphSet.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2253283004
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Win-MSVC-GCE-CPU-AVX2-x86_64-Release-GDI-Trybot,Test-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug-GDI-Trybot
Review-Url: https://codereview.chromium.org/2253283004
Diffstat (limited to 'tests/PDFPrimitivesTest.cpp')
-rw-r--r-- | tests/PDFPrimitivesTest.cpp | 48 |
1 files changed, 12 insertions, 36 deletions
diff --git a/tests/PDFPrimitivesTest.cpp b/tests/PDFPrimitivesTest.cpp index 554f1ee720..1faecb516a 100644 --- a/tests/PDFPrimitivesTest.cpp +++ b/tests/PDFPrimitivesTest.cpp @@ -31,21 +31,14 @@ #define DUMMY_TEXT "DCT compessed stream." -namespace { -struct Catalog { - SkPDFSubstituteMap substitutes; - SkPDFObjNumMap numbers; -}; -} // namespace - template <typename T> -static SkString emit_to_string(T& obj, Catalog* catPtr = nullptr) { - Catalog catalog; +static SkString emit_to_string(T& obj, SkPDFObjNumMap* catPtr = nullptr) { + SkPDFObjNumMap catalog; SkDynamicMemoryWStream buffer; if (!catPtr) { catPtr = &catalog; } - obj.emitObject(&buffer, catPtr->numbers, catPtr->substitutes); + obj.emitObject(&buffer, *catPtr); SkString tmp(buffer.bytesWritten()); buffer.copyTo(tmp.writable_str()); return tmp; @@ -148,9 +141,9 @@ static void TestObjectRef(skiatest::Reporter* reporter) { sk_sp<SkPDFArray> a2(new SkPDFArray); a2->appendObjRef(a1); - Catalog catalog; - catalog.numbers.addObject(a1.get()); - REPORTER_ASSERT(reporter, catalog.numbers.getObjectNumber(a1.get()) == 1); + SkPDFObjNumMap catalog; + catalog.addObject(a1.get()); + REPORTER_ASSERT(reporter, catalog.getObjectNumber(a1.get()) == 1); SkString result = emit_to_string(*a2, &catalog); // If appendObjRef misbehaves, then the result would @@ -158,22 +151,6 @@ static void TestObjectRef(skiatest::Reporter* reporter) { assert_eq(reporter, result, "[1 0 R]"); } -static void TestSubstitute(skiatest::Reporter* reporter) { - sk_sp<SkPDFDict> proxy(new SkPDFDict()); - sk_sp<SkPDFDict> stub(new SkPDFDict()); - - proxy->insertInt("Value", 33); - stub->insertInt("Value", 44); - - SkPDFSubstituteMap substituteMap; - substituteMap.setSubstitute(proxy.get(), stub.get()); - SkPDFObjNumMap catalog; - catalog.addObject(proxy.get()); - - REPORTER_ASSERT(reporter, stub.get() == substituteMap.getSubstitute(proxy.get())); - REPORTER_ASSERT(reporter, proxy.get() != substituteMap.getSubstitute(stub.get())); -} - // This test used to assert without the fix submitted for // http://code.google.com/p/skia/issues/detail?id=1083. // SKP files might have invalid glyph ids. This test ensures they are ignored, @@ -283,9 +260,9 @@ static void TestPDFArray(skiatest::Reporter* reporter) { "(Another String) [-1]]"); sk_sp<SkPDFArray> referencedArray(new SkPDFArray); - Catalog catalog; - catalog.numbers.addObject(referencedArray.get()); - REPORTER_ASSERT(reporter, catalog.numbers.getObjectNumber( + SkPDFObjNumMap catalog; + catalog.addObject(referencedArray.get()); + REPORTER_ASSERT(reporter, catalog.getObjectNumber( referencedArray.get()) == 1); array->appendObjRef(std::move(referencedArray)); @@ -347,9 +324,9 @@ static void TestPDFDict(skiatest::Reporter* reporter) { assert_emit_eq(reporter, *dict, "<</Type /DType>>"); sk_sp<SkPDFArray> referencedArray(new SkPDFArray); - Catalog catalog; - catalog.numbers.addObject(referencedArray.get()); - REPORTER_ASSERT(reporter, catalog.numbers.getObjectNumber( + SkPDFObjNumMap catalog; + catalog.addObject(referencedArray.get()); + REPORTER_ASSERT(reporter, catalog.getObjectNumber( referencedArray.get()) == 1); dict->insertObjRef("n1", std::move(referencedArray)); SkString result = emit_to_string(*dict, &catalog); @@ -363,7 +340,6 @@ DEF_TEST(PDFPrimitives, reporter) { TestPDFStream(reporter); TestObjectNumberMap(reporter); TestObjectRef(reporter); - TestSubstitute(reporter); test_issue1083(); } |