Commit Graph

56 Commits

Author SHA1 Message Date
vandebo@chromium.org
5676b4a23a Revert r2122, r2116, r2108 Now that Chrome's PlatformDevice doesn't inherit from SkDevice.
Review URL: http://codereview.appspot.com/5178045

git-svn-id: http://skia.googlecode.com/svn/trunk@2396 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-10-03 19:03:48 +00:00
tomhudson@google.com
8a0b0291ae Revert r2250 - removal of setMatrixClip() - because Chrome makes heavy use
of those functions in a way we're not yet ready to clean up.



git-svn-id: http://skia.googlecode.com/svn/trunk@2254 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-09-13 14:41:06 +00:00
tomhudson@google.com
66d57255ad Replaces SkDevice::setMatrixClip() with markMatrixDirty() and markClipDirty(),
which require no arguments and so may be called without requiring the matrix
and clip to be completely evaluated.

De-inlines virtual functions in SkDevice interface.



git-svn-id: http://skia.googlecode.com/svn/trunk@2250 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-09-12 19:52:44 +00:00
epoger@google.com
17b7894609 rolling back the experimental rollbacks in r2178-2179
git-svn-id: http://skia.googlecode.com/svn/trunk@2180 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-26 14:40:38 +00:00
epoger@google.com
5f226572b3 rolling tree back to its state as of r2169 to see if that fixes Windows buildbots
git-svn-id: http://skia.googlecode.com/svn/trunk@2179 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-26 14:27:59 +00:00
twiz@google.com
8185f33b38 Export SkPDFDevice::setDrawingArea as SK_API.
git-svn-id: http://skia.googlecode.com/svn/trunk@2172 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-25 19:27:20 +00:00
ctguil@chromium.org
769fa6a013 No effect cleanup in pdf code.
Review URL: http://codereview.appspot.com/4927042

git-svn-id: http://skia.googlecode.com/svn/trunk@2146 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-20 00:36:18 +00:00
vandebo@chromium.org
37be7b0b01 Mark setMatrixClip as public only for VectorPlatformDeviceSkia.
Review URL: http://codereview.appspot.com/4903044

git-svn-id: http://skia.googlecode.com/svn/trunk@2122 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-16 17:11:48 +00:00
ctguil@chromium.org
a5c7234e81 Address lint issues in pdf directories.
Review URL: http://codereview.appspot.com/4887042

git-svn-id: http://skia.googlecode.com/svn/trunk@2117 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-15 23:55:03 +00:00
vandebo@chromium.org
7b5e017169 Make SkPDFDevice::setOrigin accessible to Chrome's VectorPlatformDeviceSkia.
BUG=chrome 82746

Review URL: http://codereview.appspot.com/4888048

git-svn-id: http://skia.googlecode.com/svn/trunk@2116 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-15 21:20:59 +00:00
bungeman@google.com
88edf1e507 Protect much of SkDevice and clarify usage of drawDevice.
http://codereview.appspot.com/4798069/



git-svn-id: http://skia.googlecode.com/svn/trunk@2066 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-08 19:41:56 +00:00
epoger@google.com
ec3ed6a5eb Automatic update of all copyright notices to reflect new license terms.
I have manually examined all of these diffs and restored a few files that
seem to require manual adjustment.

The following files still need to be modified manually, in a separate CL:

android_sample/SampleApp/AndroidManifest.xml
android_sample/SampleApp/res/layout/layout.xml
android_sample/SampleApp/res/menu/sample.xml
android_sample/SampleApp/res/values/strings.xml
android_sample/SampleApp/src/com/skia/sampleapp/SampleApp.java
android_sample/SampleApp/src/com/skia/sampleapp/SampleView.java
experimental/CiCarbonSampleMain.c
experimental/CocoaDebugger/main.m
experimental/FileReaderApp/main.m
experimental/SimpleCocoaApp/main.m
experimental/iOSSampleApp/Shared/SkAlertPrompt.h
experimental/iOSSampleApp/Shared/SkAlertPrompt.m
experimental/iOSSampleApp/SkiOSSampleApp-Base.xcconfig
experimental/iOSSampleApp/SkiOSSampleApp-Debug.xcconfig
experimental/iOSSampleApp/SkiOSSampleApp-Release.xcconfig
gpu/src/android/GrGLDefaultInterface_android.cpp
gyp/common.gypi
gyp_skia
include/ports/SkHarfBuzzFont.h
include/views/SkOSWindow_wxwidgets.h
make.bat
make.py
src/opts/memset.arm.S
src/opts/memset16_neon.S
src/opts/memset32_neon.S
src/opts/opts_check_arm.cpp
src/ports/SkDebug_brew.cpp
src/ports/SkMemory_brew.cpp
src/ports/SkOSFile_brew.cpp
src/ports/SkXMLParser_empty.cpp
src/utils/ios/SkImageDecoder_iOS.mm
src/utils/ios/SkOSFile_iOS.mm
src/utils/ios/SkStream_NSData.mm
tests/FillPathTest.cpp
Review URL: http://codereview.appspot.com/4816058

git-svn-id: http://skia.googlecode.com/svn/trunk@1982 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-28 14:26:00 +00:00
ctguil@chromium.org
9510ccc06b Cleanup from r1843 based on revision comments.
Review URL: http://codereview.appspot.com/4794044

git-svn-id: http://skia.googlecode.com/svn/trunk@1966 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-27 00:10:51 +00:00
vandebo@chromium.org
9859428e71 [PDF] Refactor SkPDFFont to enable font/cmap subsetting.
Patch from Arthur Hsu, original CL: http://codereview.appspot.com/4633050/

Committed: http://code.google.com/p/skia/source/detail?r=1943
Reverted: http://code.google.com/p/skia/source/detail?r=1944

Review URL: http://codereview.appspot.com/4811049

git-svn-id: http://skia.googlecode.com/svn/trunk@1956 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-25 22:34:12 +00:00
vandebo@chromium.org
31dcee7b84 Revert "[PDF] Refactor SkPDFFont to enable font/cmap subsetting."
The PDF xref table is corrupt with this change. Revert until we figure it out.

Review URL: http://codereview.appspot.com/4803049

git-svn-id: http://skia.googlecode.com/svn/trunk@1944 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-23 21:13:30 +00:00
vandebo@chromium.org
6504cfdfc0 [PDF] Refactor SkPDFFont to enable font/cmap subsetting.
Patch from Arthur Hsu, original CL: http://codereview.appspot.com/4633050/

Review URL: http://codereview.appspot.com/4811049

git-svn-id: http://skia.googlecode.com/svn/trunk@1943 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-23 20:22:53 +00:00
reed@google.com
1feb33068b replace SkRefPtr for parameters with simple pointers
git-svn-id: http://skia.googlecode.com/svn/trunk@1913 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-20 18:43:19 +00:00
vandebo@chromium.org
421d6443fb [PDF] Make stream compression optional on a per device basis.
There are a lot of small pieces to make this change work:
- SkPDFDocument (and SkPDFCatalog) take flags to disable compression (and font embedding - not implemented yet, can disable font subsetting for now).
- SkPDFStream now defers compression until the size/emit step.
- Classes that *had* a stream (because they didn't know the stream size at construction time) now *are* streams to make the substitution work correctly.
- The SkPDFShader implementation got pulled apart into two classes, one that is a SkPDFDict, and one that is a SkPDFStream (making the common ancestor SkPDFObject).
- Added helper methods in SkPDFObject for children that have simple resource lists.
- Added an iterator to SkPDFDict so that a substitute SkPDFStream can get a copy of the stream dictionary.
- Change SkPDFDocument to have a pointer to an SkPDFCatalog to remove a new circular header reference.

Review URL: http://codereview.appspot.com/4700045

git-svn-id: http://skia.googlecode.com/svn/trunk@1911 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-20 17:39:01 +00:00
ctguil@chromium.org
8dcf74f276 Modified to add support to print in the margins of pdf documents
Review URL: http://codereview.appspot.com/4657087

git-svn-id: http://skia.googlecode.com/svn/trunk@1843 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-12 21:56:27 +00:00
reed@google.com
cde92111d5 remove SkDeviceFactory from the collective consciousness, now that devices know
how to create compatible siblings.



git-svn-id: http://skia.googlecode.com/svn/trunk@1808 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-06 20:00:52 +00:00
reed@google.com
5667afc5cb remove drawShape from canvas api
git-svn-id: http://skia.googlecode.com/svn/trunk@1723 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-27 14:42:15 +00:00
bsalomon@google.com
e97f0856a8 Add createNewCompatibleDevice. Allow devices to have a NULL factory and saveLayer will fall back on createNewCompatibleDevice.
Review URL: http://codereview.appspot.com/4633044/



git-svn-id: http://skia.googlecode.com/svn/trunk@1625 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-17 13:10:25 +00:00
vandebo@chromium.org
3509f05081 Add more SK_API declarations to fix Chrome.
TBR=ctguil@chromium.org

Review URL: http://codereview.appspot.com/4526088

git-svn-id: http://skia.googlecode.com/svn/trunk@1445 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-05-30 20:52:33 +00:00
vandebo@chromium.org
f0ec2666d9 [PDF] Add plumbing and accessors so that Chrome can record the font types used in a PDF.
- Add a font type accessor to SkPDFFont.
- Plumb font resource retrivial up to SkPDFPage.

Review URL: http://codereview.appspot.com/4547069

git-svn-id: http://skia.googlecode.com/svn/trunk@1444 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-05-29 05:55:42 +00:00
vandebo@chromium.org
13d14a9dbd [PDF] Rename ContentEntryAccessor to ScopedContentEntry.
Review URL: http://codereview.appspot.com/4515134

git-svn-id: http://skia.googlecode.com/svn/trunk@1416 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-05-24 23:12:41 +00:00
vandebo@chromium.org
61d267879b [PDF] Fix regression - correct for fInitialTrnasform in form xobjects.
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
2011-05-24 23:02:07 +00:00
vandebo@chromium.org
b069c8cfcd [PDF] Add helper class to manage ContentEntry set up and completion.
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
2011-05-24 17:19:38 +00:00
vandebo@chromium.org
481aef6833 [PDF] Add clip support and some optimizations for "complex" xfer modes.
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
2011-05-24 16:39:05 +00:00
vandebo@chromium.org
466f3d66f0 [PDF] Implement clear xfermode with a mask instead of pushing the clip down.
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
2011-05-18 23:06:29 +00:00
vandebo@chromium.org
ff3903202e [PDF] Improve path effect and drawPath(prePathMatrix) support.
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
2011-05-17 18:58:44 +00:00
vandebo@chromium.org
6112c215fb [PDF] Add support for SrcIn, SrcOut, DstIn, DstOut xfermodes.
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
2011-05-13 03:50:38 +00:00
vandebo@chromium.org
78dad54080 [PDF] Fix Chrome crash - don't assume that SkDraw.fClipStack != NULL.
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
2011-05-11 18:46:03 +00:00
vandebo@chromium.org
25adce81ce [PDF] Add support for Clear, Src, Dst, DstOver xfermodes.
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
2011-05-09 08:05:01 +00:00
vandebo@chromium.org
a0c7edbb08 [PDF] Fix setting of existing clip for layers.
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
2011-05-09 07:58:08 +00:00
vandebo@chromium.org
9fbdf87518 [PDF] Refactor content stream creation in SkPDFDevice to support more xfermodes.
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
2011-05-09 07:55:58 +00:00
vandebo@chromium.org
be2048a371 [PDF] Fix fallout from r1217.
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
2011-05-02 15:24:01 +00:00
ctguil@chromium.org
1526129380 PDF Device should report non-transformed size for width and height.
Review URL: http://codereview.appspot.com/4435074

git-svn-id: http://skia.googlecode.com/svn/trunk@1217 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-29 17:54:16 +00:00
mike@reedtribe.org
ea4ac97dec make SkDeviceFactory reference counted
git-svn-id: http://skia.googlecode.com/svn/trunk@1180 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-26 11:48:33 +00:00
vandebo@chromium.org
77bcaa324a [PDF] Implement clear() method and a couple fixes.
+ 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
2011-04-15 20:57:37 +00:00
vandebo@chromium.org
75f97e452e Generalize the flip origin argument to the PDF device constructor.
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
2011-04-11 23:24:18 +00:00
vandebo@chromium.org
cae5fba82e Store content streams in an SkStream instead of an SkString (64k size limit).
Review URL: http://codereview.appspot.com/4272070

git-svn-id: http://skia.googlecode.com/svn/trunk@1011 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-03-28 19:03:50 +00:00
vandebo@chromium.org
da912d61ed [PDF] Add support for Shaders.
- 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
2011-03-08 18:31:02 +00:00
ctguil@chromium.org
9db86bb9cd PDF Type3 Support.
git-svn-id: http://skia.googlecode.com/svn/trunk@892 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-03-04 21:43:27 +00:00
vandebo@chromium.org
c2a9b7fe56 [PDF] Remove one copy of each content stream.
Review URL: http://codereview.appspot.com/4231044

git-svn-id: http://skia.googlecode.com/svn/trunk@856 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-02-24 23:22:30 +00:00
vandebo@chromium.org
f60a001d1a [PDF] Change the way flip origin is done.
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
2011-02-24 23:14:04 +00:00
reed@google.com
46799cd9f0 change virtual setMatrixClip() to take a SkClipStack parameter.
git-svn-id: http://skia.googlecode.com/svn/trunk@831 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-02-22 20:56:26 +00:00
vandebo@chromium.org
befebb8a84 [PDF] Honor srcRect in drawBitmap.
Review URL: http://codereview.appspot.com/4083045

git-svn-id: http://skia.googlecode.com/svn/trunk@745 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-01-29 01:38:50 +00:00
vandebo@chromium.org
02cc5aa736 Update SkPDFDevice::drawPath signature to match SkDevice.
Review URL: http://codereview.appspot.com/4068044

git-svn-id: http://skia.googlecode.com/svn/trunk@729 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-01-25 22:06:29 +00:00
vandebo@chromium.org
2a22e10ab2 Add Truetype and Type 1 font embedding support
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
2011-01-25 21:01:34 +00:00
reed@android.com
f2b98d67dc merge with changes for GPU backend
git-svn-id: http://skia.googlecode.com/svn/trunk@637 2bbb7eff-a529-9590-31e7-b0007b416f81
2010-12-20 18:26:13 +00:00