aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/pdf
Commit message (Collapse)AuthorAge
...
* [PDF] Fix regression - correct for fInitialTrnasform in form xobjects.Gravatar vandebo@chromium.org2011-05-24
| | | | | | | | Chrome bug http://crbug.com/83658 Review URL: http://codereview.appspot.com/4550072 git-svn-id: http://skia.googlecode.com/svn/trunk@1415 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add helper class to manage ContentEntry set up and completion.Gravatar vandebo@chromium.org2011-05-24
| | | | | | | | This stack object helper class calls finishContentEntry when it goes out of scope, maintains the current content entry, and manages the dst form xobject when it is needed. This can be made cleaner by moving the guts of SkPDFDevice into a core object, which can expose setUp/finishContentEntry as public, but that is left as a todo. Review URL: http://codereview.appspot.com/4515126 git-svn-id: http://skia.googlecode.com/svn/trunk@1409 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add clip support and some optimizations for "complex" xfer modes.Gravatar vandebo@chromium.org2011-05-24
| | | | | | | | | | | | | | For Clear, Src, Dst/Src-In/Out, we have to consider the current clip, and potentially draw Dst, clipped to the inverse of the current clip before doing the operation of interest. For clear or src, if we haven't drawn anything, or the clip is empty, there's nothing to be done. For Src/Dst-In/Out, if either is empty, the result is empty. Review URL: http://codereview.appspot.com/4538082 git-svn-id: http://skia.googlecode.com/svn/trunk@1407 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Implement clear xfermode with a mask instead of pushing the clip down.Gravatar vandebo@chromium.org2011-05-18
| | | | | | | | This approach is much less likely to use an SkRegion and ends up working better for Webkit. Review URL: http://codereview.appspot.com/4550057 git-svn-id: http://skia.googlecode.com/svn/trunk@1375 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Fix windows compile warning.Gravatar vandebo@chromium.org2011-05-18
| | | | | | Review URL: http://codereview.appspot.com/4545056 git-svn-id: http://skia.googlecode.com/svn/trunk@1374 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Improve path effect and drawPath(prePathMatrix) support.Gravatar vandebo@chromium.org2011-05-17
| | | | | | | | | | | | Add path effect handling for drawPoints (via drawPath). Move path effect handling from drawRect to drawPath. Add prePathMatrix support to drawPath. BUG=crbug.com/82849 Review URL: http://codereview.appspot.com/4531047 git-svn-id: http://skia.googlecode.com/svn/trunk@1354 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add support for SrcIn, SrcOut, DstIn, DstOut xfermodes.Gravatar vandebo@chromium.org2011-05-13
| | | | | | | | | | This change uses the soft mask (aka soft clip) functionality of PDF to implement the xfermodes. It has to put existing content (dst) into a form xobject as well as putting the new (src) content into a different form xobject. It then draws one of them with the other as the soft mask. To accomplish this, we add a call to finishContentEntry after each call to setUpContentEntry - this is kind of a hack, but I don't see a better way to extract src. Unfortunately, soft mask is specified in the Graphic State PDF object (and not in the form xobject), so when handling one of these modes, we add a one time GS object to set the soft mask and invoke a simple GS to reset the soft mask when done. Review URL: http://codereview.appspot.com/4496041 git-svn-id: http://skia.googlecode.com/svn/trunk@1320 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Fix Chrome crash - don't assume that SkDraw.fClipStack != NULL.Gravatar vandebo@chromium.org2011-05-11
| | | | | | | | Chrome bug is crbug.com/82198. Review URL: http://codereview.appspot.com/4515061 git-svn-id: http://skia.googlecode.com/svn/trunk@1306 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add a ToUnicode mapping for fonts.Gravatar vandebo@chromium.org2011-05-09
| | | | | | | | | | This makes text in PDFs searchable and copy&paste-able. Code from arthurhsu@chromium.org. Original review: http://codereview.appspot.com/4428082/ Review URL: http://codereview.appspot.com/4525042 git-svn-id: http://skia.googlecode.com/svn/trunk@1280 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add support for Clear, Src, Dst, DstOver xfermodes.Gravatar vandebo@chromium.org2011-05-09
| | | | | | | | This uses the refactoring in http://codereview.appspot.com/4459041/ to add support for additional xfer modes. Calling setupContentEntry may affect previous content entries (removing, reordering, or modifying their clip) and indicates to the caller if it should draw the new item or not. Review URL: http://codereview.appspot.com/4464043 git-svn-id: http://skia.googlecode.com/svn/trunk@1271 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Fix setting of existing clip for layers.Gravatar vandebo@chromium.org2011-05-09
| | | | | | | | The current approach of setting the existing clip just before drawing a layer into a device doesn't work. SkDevice::clear() uses existing clip before that and if we need to put the content in a transparency group (i.e. for SrcIn xfermode), we need a valid existing clip. Instead, change the factory to use a special constructor when creating a layer device. Review URL: http://codereview.appspot.com/4495041 git-svn-id: http://skia.googlecode.com/svn/trunk@1270 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Refactor content stream creation in SkPDFDevice to support more xfermodes.Gravatar vandebo@chromium.org2011-05-09
| | | | | | | | | | | Instead of writing all drawing and state updates into the final content stream immediately, this change creates a new ContentEntry each time the transform, clip, or paint changes. Drawing is done into a stream in the ContentEntry. When the consumer asks for the content, we combine all the ContentEntries with appropriate updates to the state (clip, transform, paint) in between. This allows us to modify the clip even after a drawing has completed. It also lets us remove ContentEntries with no drawing. Further optimization can be done to better use the stack features of PDF, for now we follow the previous model of having a single clip followed by a single transform on the graphic state stack. Push rectangle logic into SkPDFUtil::AppendRectangle. Change private functions to adhere to coding standards. Review URL: http://codereview.appspot.com/4459041 git-svn-id: http://skia.googlecode.com/svn/trunk@1269 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Fix fallout from r1217.Gravatar vandebo@chromium.org2011-05-02
| | | | | | | | | | | The width and height we pass to SkDevice must be postive. Shader can no longer use negative coordinates (without transform). Shader unflip matrix should use same values as passed to SkPDFDevice (height). Most Shader dictionary entries should be scalars and not ints. Review URL: http://codereview.appspot.com/4454047 git-svn-id: http://skia.googlecode.com/svn/trunk@1219 2bbb7eff-a529-9590-31e7-b0007b416f81
* PDF Device should report non-transformed size for width and height.Gravatar ctguil@chromium.org2011-04-29
| | | | | | Review URL: http://codereview.appspot.com/4435074 git-svn-id: http://skia.googlecode.com/svn/trunk@1217 2bbb7eff-a529-9590-31e7-b0007b416f81
* make SkDeviceFactory reference countedGravatar mike@reedtribe.org2011-04-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@1180 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Implement clear() method and a couple fixes.Gravatar vandebo@chromium.org2011-04-15
| | | | | | | | | + If the clip matches the initial clip, don't set the clip. + Don't change the transform for drawPaint. Review URL: http://codereview.appspot.com/4424041 git-svn-id: http://skia.googlecode.com/svn/trunk@1142 2bbb7eff-a529-9590-31e7-b0007b416f81
* Generalize the flip origin argument to the PDF device constructor.Gravatar vandebo@chromium.org2011-04-11
| | | | | | | | | | | The argument still has a default value that does what most users will want, but provides more flexibility. Chrome will use this change to support an initial translation of the origin to simulate a margin and to scale the entire content (needed on Windows). When landing to Chrome, this will need http://codereview.chromium.org/6820038 Review URL: http://codereview.appspot.com/4373052 git-svn-id: http://skia.googlecode.com/svn/trunk@1111 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Make the NOT_IMPLEMENTED macro not print anything by default.Gravatar vandebo@chromium.org2011-04-04
| | | | | | Review URL: http://codereview.appspot.com/4351046 git-svn-id: http://skia.googlecode.com/svn/trunk@1050 2bbb7eff-a529-9590-31e7-b0007b416f81
* Additional SK_API annotations needed for print preview on windows.Gravatar ctguil@chromium.org2011-03-30
| | | | | | Review URL: http://codereview.appspot.com/4324042 git-svn-id: http://skia.googlecode.com/svn/trunk@1022 2bbb7eff-a529-9590-31e7-b0007b416f81
* Store content streams in an SkStream instead of an SkString (64k size limit).Gravatar vandebo@chromium.org2011-03-28
| | | | | | Review URL: http://codereview.appspot.com/4272070 git-svn-id: http://skia.googlecode.com/svn/trunk@1011 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use Type3 fonts for platforms that don't yet support ↵Gravatar vandebo@chromium.org2011-03-10
| | | | | | | | SkFontHost::GetAdvancedTypefaceMetrics. Review URL: http://codereview.appspot.com/4273041 git-svn-id: http://skia.googlecode.com/svn/trunk@922 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add support for Shaders.Gravatar vandebo@chromium.org2011-03-08
| | | | | | | | | | | | - Shaders, or as they are referred to in PDF, patterns, are drawn in the coordinate system of the initial page, so when we canonicalize them, we have to consider the current transform and where they are constructed. - Image shaders are tiled by default, this makes repeat and mirror modes easy, but means we have to draw a pattern as large as the current clip to support clamp mode. - Gradient shaders are implemented with type 4 functions, which are basically small snippets of post script code. I've tried to make the code generation modular and heavily commented to make it easy to understand or expand. Review URL: http://codereview.appspot.com/4239061 git-svn-id: http://skia.googlecode.com/svn/trunk@905 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add SkPDFUtils.cpp to build.Gravatar ctguil@chromium.org2011-03-04
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@893 2bbb7eff-a529-9590-31e7-b0007b416f81
* PDF Type3 Support.Gravatar ctguil@chromium.org2011-03-04
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@892 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Restrict scalars to the range that PDF understands.Gravatar vandebo@chromium.org2011-03-04
| | | | | | | | | | | * Add a config flag to ignore the restrictions * Apply restriction to both SkPDFScalar and scalars used in content streams. * +/- 32,767 for the integer part. * +/1 1/65536 for the fraction part. Review URL: http://codereview.appspot.com/4240050 git-svn-id: http://skia.googlecode.com/svn/trunk@882 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Fix broken encoding conversion code for non-multibyte fonts.Gravatar vandebo@chromium.org2011-02-28
| | | | | | Review URL: http://codereview.appspot.com/4245044 git-svn-id: http://skia.googlecode.com/svn/trunk@863 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Remove one copy of each content stream.Gravatar vandebo@chromium.org2011-02-24
| | | | | | Review URL: http://codereview.appspot.com/4231044 git-svn-id: http://skia.googlecode.com/svn/trunk@856 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Change the way flip origin is done.Gravatar vandebo@chromium.org2011-02-24
| | | | | | | | The PDF shader matrix is dependent on flip origin or not, so we need to set it at device creation time. Review URL: http://codereview.appspot.com/4216046 git-svn-id: http://skia.googlecode.com/svn/trunk@855 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Clean up SkPDFStream and make it inherit from SkPDFDict.Gravatar vandebo@chromium.org2011-02-24
| | | | | | | | | A stream is a dictionary (with a couple particular entries) plus the data. The common parent is useful for the shader implementation. Review URL: http://codereview.appspot.com/4221045 git-svn-id: http://skia.googlecode.com/svn/trunk@852 2bbb7eff-a529-9590-31e7-b0007b416f81
* change virtual setMatrixClip() to take a SkClipStack parameter.Gravatar reed@google.com2011-02-22
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@831 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Change SkPDFFormXObject to not hold a reference to device.Gravatar vandebo@chromium.org2011-02-08
| | | | | | | | This prevents two copies of the content stream from sticking around. It also fixes an invalid memory reference because SkCanvas::internalRestore deletes the device (maybe it should just unref) after drawing it onto the main device. Review URL: http://codereview.appspot.com/4080056 git-svn-id: http://skia.googlecode.com/svn/trunk@773 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Start from an identity transform for drawDevice.Gravatar vandebo@chromium.org2011-02-03
| | | | | | | | drawDevice, like drawSprite should start from the identity transform instead of applying the passed translation on top of the current transform. Review URL: http://codereview.appspot.com/4023066 git-svn-id: http://skia.googlecode.com/svn/trunk@757 2bbb7eff-a529-9590-31e7-b0007b416f81
* Cleanup SkPDFTypfaceInfo and make it more generic.Gravatar vandebo@chromium.org2011-02-02
| | | | | | | | | | | | Renamed to SkAdvancedTypefaceMetrics. Include Em size and return all metrics in unscaled font units. Make retrieval of advances optional. Reorder SkAdvancedTypefaceMetrics to be somewhat logical. Change the types of fields in SkAdvancedTypefaceMetrics to their minimum required size. Review URL: http://codereview.appspot.com/4121049 git-svn-id: http://skia.googlecode.com/svn/trunk@752 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Clean up ref counting.Gravatar vandebo@chromium.org2011-02-01
| | | | | | | | Return ref'd objs where possible enabling removal of many SkRefPtr<> variables. Review URL: http://codereview.appspot.com/4029051 git-svn-id: http://skia.googlecode.com/svn/trunk@750 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Support image alpha channel plus a couple small fixes.Gravatar vandebo@chromium.org2011-01-31
| | | | | | | | | Fix bug in rendering paths with cubic segments. Only compress data if the compressed size is smaller than the uncompressed size. Review URL: http://codereview.appspot.com/4079048 git-svn-id: http://skia.googlecode.com/svn/trunk@747 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Honor srcRect in drawBitmap.Gravatar vandebo@chromium.org2011-01-29
| | | | | | Review URL: http://codereview.appspot.com/4083045 git-svn-id: http://skia.googlecode.com/svn/trunk@745 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix windows build.Gravatar vandebo@chromium.org2011-01-26
| | | | | | Review URL: http://codereview.appspot.com/3996048 git-svn-id: http://skia.googlecode.com/svn/trunk@739 2bbb7eff-a529-9590-31e7-b0007b416f81
* move into core for now, so we can build SkFontHost_FreeType.cppGravatar reed@google.com2011-01-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@738 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix mac build (don't need typedef struct foo foo)Gravatar reed@google.com2011-01-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@733 2bbb7eff-a529-9590-31e7-b0007b416f81
* Update SkPDFDevice::drawPath signature to match SkDevice.Gravatar vandebo@chromium.org2011-01-25
| | | | | | Review URL: http://codereview.appspot.com/4068044 git-svn-id: http://skia.googlecode.com/svn/trunk@729 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add Truetype and Type 1 font embedding supportGravatar vandebo@chromium.org2011-01-25
| | | | | | | | | | | | | | | | | | | | | | | | | Sorry this is such a large CL. It was very exploratory for me to make this work. - Add an interface to SkFontHost to retrieve font information and provide NULL implementations on all platforms except Linux. - Segment large Type 1 fonts into fonts with shared resources with 255 glyphs each. - Convert the various Type 1 formats to the form PDF wants. - Update font as we draw text instead of as part of the graphical state. - Remove built-in font support, we can't really use it. Other changes I can pull out to a separate CL if you like. - Add SkTScopedPtr class. - Fix double free of resources. - Fix bug in resource unique-ifying code. - Don't print anything for any empty clip path. - Fix copy paste error - MiterLimit. - Fix sign extension bug in SkPDFString - Fix FlateTest rename that was missed on a previous commit. Review URL: http://codereview.appspot.com/4082042 git-svn-id: http://skia.googlecode.com/svn/trunk@728 2bbb7eff-a529-9590-31e7-b0007b416f81
* merge with changes for GPU backendGravatar reed@android.com2010-12-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@637 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add deflate support to SkPDFStream.Gravatar vandebo@chromium.org2010-12-01
| | | | | | Review URL: http://codereview.appspot.com/3326043 git-svn-id: http://skia.googlecode.com/svn/trunk@627 2bbb7eff-a529-9590-31e7-b0007b416f81
* PDF: Add text support with a font framework (font embedding to come).Gravatar vandebo@chromium.org2010-11-11
| | | | | | | | | | | | Supports fakeBold, underline, strikethrough, mode (fill, stroke, both), size, skew, alignment (left, center, right). Missing is drawFontOnPath and font lookup and embedding. Changed SkPDFString to support how it is used from drawText methods. Moved compile assert into SkTypes. Moved constants and utility function used to support fakeBold, underline, and strikethrough into higher level locations. Review URL: http://codereview.appspot.com/2946041 git-svn-id: http://skia.googlecode.com/svn/trunk@624 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add clipping support and some small fixes.Gravatar vandebo@chromium.org2010-11-03
| | | | | | | | | | Reorganize how the PDF graphic state stack is managed (fixing several bugs incidentally). Style: fix variables with underscores. Bug: fix image matrix application order, which enabled a small refactor. Review URL: http://codereview.appspot.com/2771042 git-svn-id: http://skia.googlecode.com/svn/trunk@622 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add PDF support for drawDevice using a form xobject.Gravatar vandebo@chromium.org2010-10-26
| | | | | | | | | | | This depends on: http://codereview.appspot.com/2719041 http://codereview.appspot.com/2720041 http://codereview.appspot.com/2721041 Review URL: http://codereview.appspot.com/2710042 git-svn-id: http://skia.googlecode.com/svn/trunk@621 2bbb7eff-a529-9590-31e7-b0007b416f81
* Several cleanups:Gravatar vandebo@chromium.org2010-10-26
| | | | | | | | | | | Fix the spelling of resource in several places Make getResouce(resourceList) part of SkPDFObject make SkDynamicMemoryWStream::getOffset and SkPDFPage::getMediaBox const Add a temporary NOT_IMPLEMENTED macro instead of using SkASSERT Review URL: http://codereview.appspot.com/2721041 git-svn-id: http://skia.googlecode.com/svn/trunk@619 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move the device capability method to SkDevice.Gravatar vandebo@chromium.org2010-10-26
| | | | | | | | These are not the capabilities of the factory, but of the device. Additionally, it is more often needed when you have a device then when you have a factory, which caused creating of a new factory. Review URL: http://codereview.appspot.com/2720041 git-svn-id: http://skia.googlecode.com/svn/trunk@618 2bbb7eff-a529-9590-31e7-b0007b416f81
* Cleanup/unify matrix transform for PDF backend.Gravatar vandebo@chromium.org2010-10-26
| | | | | | Review URL: http://codereview.appspot.com/2719041 git-svn-id: http://skia.googlecode.com/svn/trunk@617 2bbb7eff-a529-9590-31e7-b0007b416f81
* First pieces of SkPDFDevice. Supports:Gravatar vandebo@chromium.org2010-10-20
| | | | | | | | | | | | Matrix transforms. Rendering bitmaps. Basic paint parameters. Rendering rectangles, points, lines, polygons. Render a paint to the page. Review URL: http://codereview.appspot.com/2584041 git-svn-id: http://skia.googlecode.com/svn/trunk@614 2bbb7eff-a529-9590-31e7-b0007b416f81