aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkPDFUtils.h
Commit message (Collapse)AuthorAge
* SkPDF: Implement /ActualText to make text extraction correct.Gravatar halcanary2016-09-16
| | | | | | | | | | | | | For old API: no change. For new API: LTR text is perfectly extracted, RTL needs better testing. CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN-Trybot,Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN-Trybot BUG=skia:5434 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2322403002 Review-Url: https://codereview.chromium.org/2322403002
* Revert of SkPDF: Implement /ActualText to make text extraction correct. ↵Gravatar halcanary2016-09-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | (patchset #11 id:220001 of https://codereview.chromium.org/2322403002/ ) Reason for revert: MSAN, ASAN errors Original issue's description: > SkPDF: Implement /ActualText to make text extraction correct. > > For old API: no change. > > For new API: LTR text is perfectly extracted, RTL needs better testing. > > BUG=skia:5434 > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2322403002 > > Committed: https://skia.googlesource.com/skia/+/dbd16345a5b2b824f2696af791bb0f01304cf549 TBR=tomhudson@google.com,bungeman@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:5434 Review-Url: https://codereview.chromium.org/2338213008
* SkPDF: Implement /ActualText to make text extraction correct.Gravatar halcanary2016-09-16
| | | | | | | | | | | For old API: no change. For new API: LTR text is perfectly extracted, RTL needs better testing. BUG=skia:5434 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2322403002 Review-Url: https://codereview.chromium.org/2322403002
* SkPdf: smaller color serializationGravatar halcanary2016-07-15
| | | | | | | | | | | | | | SkPDFUtils now has a special function (SkPDFUtils::AppendColorComponent) just for writing out (color/255) as a decimal with three digits of precision. SkPDFUnion now has a type to represent a color component. It holds a utint_8, but calls into AppendColorComponent to serialize. Added a unit test that tests all possible input values. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2151863003 Review-Url: https://codereview.chromium.org/2151863003
* SkPDF: Join Positioned TextGravatar halcanary2016-07-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When N sequential positioned glyphs differ in positions by exactly the advances of the first (N-1) glyphs, join the glyphs into a string rather than changing the text matrix between each glyph draw. Decreases PDF output size by about ~1.4%. Potentially more on text-heavy pages. A single-typeface PDF of an 27kB ASCII document shaped with harfbuzz: before: 187743 Bytes after: 65513 Bytes difference: -65.1% Before: BT /F0 13 Tf 1 0 0 -1 143.5 61 Tm <0029> Tj 1 0 0 -1 150.634765 61 Tm <004C> Tj 1 0 0 -1 154.602050 61 Tm <0055> Tj 1 0 0 -1 160.245117 61 Tm <0048> Tj 1 0 0 -1 167.925781 61 Tm <004B> Tj 1 0 0 -1 176.469726 61 Tm <0052> Tj 1 0 0 -1 184.518554 61 Tm <0056> Tj 1 0 0 -1 190.980468 61 Tm <0048> Tj ET After: BT /F0 13 Tf 1 0 0 -1 0 0 Tm 143.5 -61 Td <0029004C0055> Tj 16.7451171 0 Td <0048004B005200560048> Tj ET Also: update the Text matrix with the `Td` operator, instead of overwriting it with the the `Tm` operator. In the worst case, when every glyph is positioned differently than it's advance, this still makes the command stream smaller: Before: ... 1 0 0 -1 58.328125 660 Tm <0055> Tj 1 0 0 -1 61.609375 660 Tm <004C> Tj 1 0 0 -1 63.828125 660 Tm <0056> Tj ... After: ... 3.140625 0 Td <0055> Tj 3.28125 0 Td <004C> Tj 2.21875 0 Td <0056> Tj ... GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2150393002 Review-Url: https://codereview.chromium.org/2150393002
* SkPDF: Fix encoding of unichr outside of basic planeGravatar halcanary2016-07-07
| | | | | | | | | | | | | | In ToUnicode table, write unicode codepoints as one or two UTF16BE values, rather than a single hex, as the standard requires. Factor out uint16 -> big-endian hex code. SkUtils is now a namespace. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2120533002 Review-Url: https://codereview.chromium.org/2120533002
* Remove unnecessary includes in src/pdf/Gravatar martina.kollarova2016-06-29
| | | | | | | | | Use forward declaration more. BUG=None GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2110033002 Review-Url: https://codereview.chromium.org/2110033002
* SkPDF: alloc less memory for stringsGravatar halcanary2016-06-23
| | | | | | | | | | | | | | | | | before: micros bench 250.98 WritePDFText nonrendering after: micros bench 107.10 WritePDFText nonrendering Also, be slightly more space-efficient in encoding strings. Also, add a bench. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2099463002 Review-Url: https://codereview.chromium.org/2099463002
* Style bikeshed - remove extraneous whitespaceGravatar halcanary2016-03-29
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1842753002 Review URL: https://codereview.chromium.org/1842753002
* SkPDF: Add sk_sp setters; .release() becomes std::move()Gravatar halcanary2016-03-08
| | | | | | | | | | | | | | | | Note to reviewers: Start with changes to SkPDFTypes.h Many places that had a bare pointer owning a reference are refactored to use a sk_sp. There remain several places where a non-owning pointer `T*` should be replaced with `const sk_sp<T>&` to eliminate the common pattern `sk_sp<T>(SkRef(x))`. Committed: https://skia.googlesource.com/skia/+/9904c9212074279380e21f96575078734dbbd308 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1775043002 Review URL: https://codereview.chromium.org/1775043002
* Revert of SkPDF: Add sk_sp setters; .release() becomes std::move() (patchset ↵Gravatar halcanary2016-03-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | #2 id:20001 of https://codereview.chromium.org/1775043002/ ) Reason for revert: https://build.chromium.org/p/client.skia/builders/Linux%20Builder/builds/6405/steps/compile/logs/stdio Original issue's description: > SkPDF: Add sk_sp setters; .release() becomes std::move() > > Note to reviewers: Start with changes to SkPDFTypes.h > > Many places that had a bare pointer owning a reference are refactored to > use a sk_sp. > > There remain several places where a non-owning pointer `T*` should be > replaced with `const sk_sp<T>&` to eliminate the common pattern > `sk_sp<T>(SkRef(x))`. > > Committed: https://skia.googlesource.com/skia/+/9904c9212074279380e21f96575078734dbbd308 TBR=bungeman@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1775143002
* SkPDF: Add sk_sp setters; .release() becomes std::move()Gravatar halcanary2016-03-08
| | | | | | | | | | | | | Note to reviewers: Start with changes to SkPDFTypes.h Many places that had a bare pointer owning a reference are refactored to use a sk_sp. There remain several places where a non-owning pointer `T*` should be replaced with `const sk_sp<T>&` to eliminate the common pattern `sk_sp<T>(SkRef(x))`. Review URL: https://codereview.chromium.org/1775043002
* SkPDF: fix scalar serializationGravatar halcanary2016-02-24
| | | | | | | BUG=skia:4868 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1720863003 Review URL: https://codereview.chromium.org/1720863003
* SkPDF: when drawing stroked path, draw using SVG rules for zero-length segmentsGravatar halcanary2015-10-06
| | | | | | | | | | | | | | | | | | The "zeroPath" and emptystroke GMs capture this issue. This CL changes the following PDF GMs: emptystroke dashing4 lineclosepath dashing3 zeroPath linepath complexclip3_complex complexclip3_simple roundrects degeneratesegments filltypes strokerect pathfill inverse_paths desk_chalkboard.skp After this change, all PDF GMs look better (closer to 8888). The dashing4, emptystroke, and zeroPath GMs still need a lot of work to make them look right. BUG=538726 Review URL: https://codereview.chromium.org/1374383004
* SkPDF: Move utility fns to SkPDFUtilsGravatar halcanary2015-05-06
| | | | | | BUG=skia:3585 Review URL: https://codereview.chromium.org/1124193003
* My clang now doesn't complain about !"foo".Gravatar mtklein@google.com2013-08-22
| | | | | | | | | BUG= R=robertphillips@google.com Review URL: https://codereview.chromium.org/22875037 git-svn-id: http://skia.googlecode.com/svn/trunk@10874 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implemented transparent gradientsGravatar commit-bot@chromium.org2013-07-23
| | | | | | | | | | R=vandebo@chromium.org, edisonn@google.com Author: richardlin@chromium.org Review URL: https://chromiumcodereview.appspot.com/18585002 git-svn-id: http://skia.googlecode.com/svn/trunk@10297 2bbb7eff-a529-9590-31e7-b0007b416f81
* Update SkFlattenable buffers to be more modular.Gravatar djsollen@google.com2012-08-07
| | | | | | | | | | | | | | | | | This CL is an effort to stage the conversion to named parameters for all SkFlattenable commands. This particular stage only does the following two things... 1. Move flattenable buffers from SkFlattenable.h into their own header. 2. Update and Add new read write methods for better clarity and convenience. BUG= Review URL: https://codereview.appspot.com/6448095 git-svn-id: http://skia.googlecode.com/svn/trunk@4980 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Ensure that filling single line paths (with no area) does not draw ↵Gravatar vandebo@chromium.org2012-05-09
| | | | | | | | | | | | anything. Add a test to a gm to confirm the new behavior. Fixes http://crbug.com/123072 Review URL: https://codereview.appspot.com/6137060 git-svn-id: http://skia.googlecode.com/svn/trunk@3884 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Move most of the headers to be private.Gravatar vandebo@chromium.org2012-03-22
| | | | | | | | | | Compute font stats in SkPDFDocument in order to make more of the headers private. Previous review: https://codereview.appspot.com/5868049/ Review URL: https://codereview.appspot.com/5875049 git-svn-id: http://skia.googlecode.com/svn/trunk@3470 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "[PDF] Move most of the headers to be private."Gravatar vandebo@chromium.org2012-03-21
| | | | | | | | | | This reverts r3457 TBR=epoger@google.com Review URL: https://codereview.appspot.com/5866051 git-svn-id: http://skia.googlecode.com/svn/trunk@3458 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Move most of the headers to be private.Gravatar vandebo@chromium.org2012-03-21
| | | | | | | | | | Compute font stats in SkPDFDocument in order to make more of the headers private. Previous review: https://codereview.appspot.com/5865048/ Review URL: https://codereview.appspot.com/5868049 git-svn-id: http://skia.googlecode.com/svn/trunk@3457 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "[PDF] Move most of the headers to be private."Gravatar vandebo@chromium.org2012-03-21
| | | | | | | | | | This reverts r3453 TBR=epoger@google.com Review URL: https://codereview.appspot.com/5869048 git-svn-id: http://skia.googlecode.com/svn/trunk@3454 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Move most of the headers to be private.Gravatar vandebo@chromium.org2012-03-21
Compute font stats in SkPDFDocument in order to make more of the headers private. Review URL: https://codereview.appspot.com/5865048 git-svn-id: http://skia.googlecode.com/svn/trunk@3453 2bbb7eff-a529-9590-31e7-b0007b416f81