aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf
Commit message (Collapse)AuthorAge
* use special-image for imagefilters and save/restore layerGravatar reed2016-07-20
| | | | | | | | | | | | | add special virtuals to device, in preparation for using them instead of bitmap for imagefilters BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2155933002 patch from issue 2155933002 at patchset 20001 (http://crrev.com/2155933002#ps20001) use specialimages instead of bitmaps for imagefiltering Review-Url: https://codereview.chromium.org/2155063002
* pre-land special methods on deviceGravatar reed2016-07-19
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2161233002 Review-Url: https://codereview.chromium.org/2161233002
* Make SkFont a bit more useableGravatar robertphillips2016-07-19
| | | | | | | | Split out of https://codereview.chromium.org/2163483002/ (Use SkFont in GrStencilAndCoverTextContext) GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2163633002 Review-Url: https://codereview.chromium.org/2163633002
* move responsibility for creating raster-device into pdfGravatar reed2016-07-15
| | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146333004 NOTRY=True win failure seems unrelated Review-Url: https://codereview.chromium.org/2146333004
* 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: Always give a default advance for glyphs.Gravatar halcanary2016-07-15
| | | | | | | | | | Prior to this we assumed the default default was 0. It is actually 1000, according to the spec. fixes BUG=skia:5321 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146403005 Review-Url: https://codereview.chromium.org/2146403005
* remove unused CreateInfo flagGravatar reed2016-07-15
| | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2153173002 NOTRY=True Review-Url: https://codereview.chromium.org/2153173002
* 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
* SkPDF: fix PDFA-only metadata errorGravatar halcanary2016-07-07
| | | | Review-Url: https://codereview.chromium.org/2119883002
* SkPDF: Glyph Useage Map improvementsGravatar halcanary2016-06-30
| | | | | | | | | | | | | | | | | | | | Instead of having a fFontGlyphUsage on each device and one on each document, just have the one on the document, and never merge. Make fGlyphUsage accesible on SkPDFDocument. Remove SkPDFGlyphSetMap::merge, ::reset, and SkPDFGlyphSet::merge. SkPDFGlyphSetMap has an TArray of SkPDFGlyphSet, not TDArray of SkPDFGlyphSet pointers. SkPDFGlyphSet and SkPDFBitset get move constructors. All tests produce exactly identical output PDFs. BUG=skia:5434 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2112943002 Review-Url: https://codereview.chromium.org/2112943002
* SkPDF: allow overriding Producer metadataGravatar halcanary2016-06-30
| | | | | | | | | | | | I recommend not using this functionality. Also, some documentation. BUG=skia:5436 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2074583003 Review-Url: https://codereview.chromium.org/2074583003
* SkPDF: always assume SkStreamAsset behaves as specifiedGravatar halcanary2016-06-29
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2104223003 Review-Url: https://codereview.chromium.org/2104223003
* SkPDF: SkPDFStream takes only SkStreamAssetGravatar halcanary2016-06-29
| | | | | | | | | This is possible since https://crrev.com/869763002. Later, I'll clean up the logic and class constructors. For now, I assert everywhere I expect a SkStreamAsset to be well-behaved (duplcate, hasLength). GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2098393002 Review-Url: https://codereview.chromium.org/2098393002
* 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
* SkPDF: Use type 2/3 shading for gradient shadersGravatar cabanier2016-06-17
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1925233003 Review-Url: https://codereview.chromium.org/1925233003
* SkPDF: handle unpremul rightGravatar halcanary2016-06-03
| | | | | | | . GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2037083002 Review-Url: https://codereview.chromium.org/2037083002
* SkPDF/SkColorSpace: use writeToICCGravatar halcanary2016-05-26
| | | | | | | . GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2012133003 Review-Url: https://codereview.chromium.org/2012133003
* Move SkTypeface to sk_sp.Gravatar bungeman2016-05-12
| | | | | | | Committed: https://skia.googlesource.com/skia/+/6296da736fbf40aae881650c239420f64e576c3f GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1933393002 Review-Url: https://codereview.chromium.org/1933393002
* Revert of Move SkTypeface to sk_sp. (patchset #5 id:80001 of ↵Gravatar scroggo2016-05-12
| | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1933393002/ ) Reason for revert: fontmgr_iterAndroid failing to draw emoji. E.g. https://gold.skia.org/search2?blame=6296da736fbf40aae881650c239420f64e576c3f&unt=true&head=true&query=source_type%3Dgm Original issue's description: > Move SkTypeface to sk_sp. > > Committed: https://skia.googlesource.com/skia/+/6296da736fbf40aae881650c239420f64e576c3f TBR=reed@google.com,fmalita@chromium.org,tomhudson@google.com,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/1974783002
* Move SkTypeface to sk_sp.Gravatar bungeman2016-05-11
| | | | Review-Url: https://codereview.chromium.org/1933393002
* SkAdvancedTypefaceMetrics: abstract out linked listGravatar halcanary2016-05-08
| | | | | | | | | | | | | + use SkSinglyLinkedList<T> + move SkSinglyLinkedList.h to core + remove SkHackyAutoTDelete + getAdvanceData() -> setGlyphWidths() + finishRange no longer templated + remove unused templated functions GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1953153004 Review-Url: https://codereview.chromium.org/1953153004
* SkAdvancedTypefaceMetrics: improve robustnessGravatar halcanary2016-05-06
| | | | | | | | | Manually unwind linked list. BUG=567031 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1955033002 Review-Url: https://codereview.chromium.org/1955033002
* SkPDF/None: fix compilationGravatar halcanary2016-04-27
| | | | | | TBR=stephana@google.com Review-Url: https://codereview.chromium.org/1929593002
* remove 'deprecated' region from SkDrawGravatar reed2016-04-27
| | | | | | | | | | | | | | | Most call-sites that used it just took its bounds, so it was trivial to convert them to get the bounds of the RasterClip. Two clients wanted the actual region: 1. layeriter for android 2. pdf Android already only has BW clips, so should be safe. PDF now overrides its clip methods to ensure that all clips are BW. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1925693002 Review URL: https://codereview.chromium.org/1925693002
* SkDocument/PDF: new APIGravatar halcanary2016-04-27
| | | | | | | | | | has a pdf/a switch. sets metadata in factory. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1916093002 Review URL: https://codereview.chromium.org/1916093002
* SkStringPrintf and SkString::printf now are no longer limted by a static bufferGravatar halcanary2016-04-25
| | | | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1403803002 Committed: https://skia.googlesource.com/skia/+/606cadd5aac62299ef2e277709b3684cae2bf96c Review URL: https://codereview.chromium.org/1403803002
* Revert of SkStringPrintf and SkString::printf now are no longer limted by a ↵Gravatar halcanary2016-04-22
| | | | | | | | | | | | | | | | | | | | | | static buffer (patchset #5 id:80001 of https://codereview.chromium.org/1403803002/ ) Reason for revert: breaking something Original issue's description: > SkStringPrintf and SkString::printf now are no longer limted by a static buffer > > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1403803002 > > Committed: https://skia.googlesource.com/skia/+/606cadd5aac62299ef2e277709b3684cae2bf96c TBR=tomhudson@google.com,reed@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/1908423002
* SkStringPrintf and SkString::printf now are no longer limted by a static bufferGravatar halcanary2016-04-22
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1403803002 Review URL: https://codereview.chromium.org/1403803002
* SkPDF: PDF/A runtime switchGravatar halcanary2016-04-22
| | | | | | | | | | | | | TODO: remove gyp variable and modify API in SkDocument.h SkMD5 now moved into core as pdf depends on it now. BUG=skia:3110 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1891873002 Committed: https://skia.googlesource.com/skia/+/570f18b43417d73c3fbd113cc0b4258e08b14c82 Review URL: https://codereview.chromium.org/1891873002
* Revert of SkPDF: PDF/A runtime switch (patchset #1 id:100001 of ↵Gravatar halcanary2016-04-15
| | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1891873002/ ) Reason for revert: breaking something. Original issue's description: > SkPDF: PDF/A runtime switch > > TODO: remove gyp variable and modify API in SkDocument.h > > BUG=skia:3110 > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1891873002 > > Committed: https://skia.googlesource.com/skia/+/570f18b43417d73c3fbd113cc0b4258e08b14c82 TBR=tomhudson@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:3110 Review URL: https://codereview.chromium.org/1892203002
* SkPDF: PDF/A runtime switchGravatar halcanary2016-04-15
| | | | | | | | | TODO: remove gyp variable and modify API in SkDocument.h BUG=skia:3110 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1891873002 Review URL: https://codereview.chromium.org/1891873002
* SkPDF: Fix links to be more valid PDF/AGravatar halcanary2016-04-08
| | | | | | | | | | | See: https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Parts-2-and-3-rules#rule-632-1 https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Parts-2-and-3-rules#rule-632-2 BUG=skia:3010 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1867003004 Review URL: https://codereview.chromium.org/1867003004
* SkPDF: fix pessimizing-move in PDFA codeGravatar halcanary2016-04-08
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1863393004 Review URL: https://codereview.chromium.org/1863393004
* SkPDF Fix PDF/A to be more validGravatar halcanary2016-04-07
| | | | | | | | | | | Some produced PDFs are recognized by veraPDF 0.13.2 (http://verapdf.org/software/) as valid PDF/A-2B. BUG=skia:4535 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1864173004 Review URL: https://codereview.chromium.org/1864173004
* SkPDF: fix PDF/AGravatar halcanary2016-04-07
| | | | | | | | | TODO: get a bot to start testing this. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1864163004 Review URL: https://codereview.chromium.org/1864163004
* SkPDF: properly dedup bitmaps in shadersGravatar halcanary2016-04-01
| | | | | | | BUG=skia:5161 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1848383002 Review URL: https://codereview.chromium.org/1848383002
* SkPDF: PDFShader does not hold images/bitmapsGravatar halcanary2016-04-01
| | | | | | | | motivation: measurable memory savings. GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1851123002 Review URL: https://codereview.chromium.org/1851123002
* SkPDF: Use Pathops clippingGravatar halcanary2016-03-31
| | | | | | | | | | | | | | | | | Turn this on all the time. Remove the SK_PDF_USE_PATHOPS_CLIPPING define that used to hide this functionality. All rendering tests are the same or improved by this. Also, remove non-functional SK_ALLOW_LARGE_PDF_SCALARS. TBR=reed@google.com removing dead #defines from SkUserConfig.h BUG=591805 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1845623002 Review URL: https://codereview.chromium.org/1845623002
* SkPDF: Make magic make senseGravatar halcanary2016-03-31
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1849453004 Review URL: https://codereview.chromium.org/1849453004
* SkPDF: SkTypeface::openStream could return nullptrGravatar halcanary2016-03-30
| | | | | | | | | Speculative fix for hard-to-reproduce bug. BUG=163892 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1842163002 Review URL: https://codereview.chromium.org/1842163002
* SkPDF: skia_pdf_less_compression - for debugging onlyGravatar halcanary2016-03-29
| | | | | | | | | | | | | Motivation: as we implement more features in PDF, it would be nice to more easily see what is happening in the output. This change serializes page content as plain text rather than compressed text, but it has to be explicitly enabled with a GYP_DEFINE change: export GYP_DEFINES='skia_pdf_less_compression=1' bin/sync-and-gyp ninja -C out/Debug dm out/Debug/dm --config pdf --src gm -w /tmp GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1840103002 Review URL: https://codereview.chromium.org/1840103002
* SkPDF: milestone in metadata, also SkMilestone.hGravatar halcanary2016-03-29
| | | | | | | | TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1823753002 Review URL: https://codereview.chromium.org/1823753002
* 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: PDFDevice::ContentEntry now implemented with SinglyLinkedListGravatar halcanary2016-03-28
| | | | | | | | | | add SkSinglyLinkedList<T> class no change in SkPDF output. GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1839633003 Review URL: https://codereview.chromium.org/1839633003
* SkPDF s/SkAutoTDelete/std::unique_ptr/Gravatar halcanary2016-03-28
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1837553002 Review URL: https://codereview.chromium.org/1837553002
* SkPDF: remove margin foolishnessGravatar halcanary2016-03-25
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1837453003 Review URL: https://codereview.chromium.org/1837453003
* Change SkTime::GetMSecs to double; ensure values stored in SkMSec do not ↵Gravatar benjaminwagner2016-03-25
| | | | | | | | | | | | | | | | | | | | | | | overflow. The following are currently unused in Android, Google3, Chromium, and Mozilla: - SkEvent - SkTime::GetMSecs - SK_TIME_FACTOR (also unused in Skia) - SkAutoTime I left uses of SkMSec more-or-less intact for SkEvent, SkAnimator, and SkInterpolator. SkInterpolator is used in Chromium, so I did not want to change the API. The views/ and animator/ code is crufty, so it didn't seem worthwhile to refactor it. Instead, I added SkEvent::GetMSecsSinceStartup, which is likely to be adequate for use in SampleApp. I also left SkMSec where it is used to measure a duration rather than a timestamp. With the exception of SkMovie, which is used in Android, all of the uses appear to measure the execution time of a piece of code, which I would hope does not exceed 2^31 milliseconds. Added skiatest::Timer to support a common idiom in tests where we want to measure the wallclock time in integer milliseconds. (Not used in tests/PathOpsSkpClipTest.cpp because it redefines things in Test.h.) Removed tabs in tests/StrokerTest.cpp. BUG=skia:4632 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1811613004 Review URL: https://codereview.chromium.org/1811613004
* SkPDF: draw{Image,Bitmap} always serializes earlyGravatar halcanary2016-03-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this change, the PDFCanon held a map from BitmapKeys to SkImages for de-duping bitmaps. Even if the PDFDocument serialized images early, the Canon still held a ref to that image inside the map. With this change, the Canon holds a single map from BitmapKeys to PDFObjects. Now, Images are only held by the PDFObject, which the document serializes and drops early. This change also: - Moves SkBitmapKey into its own header (for possible reuse); it now can operate with images as well as bitmaps. - Creates SkImageBitmap, which wraps a pointer to a bitmap or an image and abstracts out some common tasks so that drawBitmap and drawImage behave the same. - Modifies SkPDFCreateBitmapObject to take and return a sk_sp<T>, not a T*. - Refactors SkPDFDevice::internalDrawImage to use bitmaps or images (via a SkImageBitmap). - Turns on pre-serialization of all images. BUG=skia:5087 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1829693002 Review URL: https://codereview.chromium.org/1829693002