Commit Graph

179 Commits

Author SHA1 Message Date
edisonn@google.com
d9dfa18372 Encode images with DCTDecode (JPEG) in PDFs if it makes sense. Fallback to FlateDecode (zip) if it makes sense. Otherewise include uncompressed stream.
This change will reduce the size of PDFs to 50% (in the case of the existing SKPs, we reduce the total size of PDFs from 105MB to 50MB) 
Review URL: https://codereview.appspot.com/7068055

git-svn-id: http://skia.googlecode.com/svn/trunk@8835 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-04-24 13:01:01 +00:00
tfarina@chromium.org
7731eada5b Fix more clang errors.
Fixed -Wunused-private-field errors.

R=reed@google.com,bsalomon@google.com

Review URL: https://codereview.chromium.org/13474012

git-svn-id: http://skia.googlecode.com/svn/trunk@8547 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-04-05 21:13:14 +00:00
edisonn@google.com
6addb19300 resubmit https://code.google.com/p/skia/source/detail?r=7883 (in the meantime we
added capability to collect minidump and callstack if buildbot fails with heap
coruption in windows, and a NPE bug was fixed in SkPDFDocument, when document was destroyed without ever beeing used and a field was NULL + a few minor conflicts have been resolved)

git-svn-id: http://skia.googlecode.com/svn/trunk@8487 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-04-02 15:33:08 +00:00
robertphillips@google.com
acef3c4082 Reverting r8233 (Use SkSet in PDF)
git-svn-id: http://skia.googlecode.com/svn/trunk@8255 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-20 14:42:51 +00:00
edisonn@google.com
66bedbb02d resubmit https://code.google.com/p/skia/source/detail?r=7883 (in the meantime we added capability to collect minidump and callstack if buildbot fails with heap coruption in windows. a few minor conflicts have been resolved)
Review URL: https://codereview.chromium.org/12840004

git-svn-id: http://skia.googlecode.com/svn/trunk@8233 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-19 17:19:05 +00:00
edisonn@google.com
8c020612ba Update flag to reflect actual meaning.
Review URL: https://codereview.chromium.org/12754004

git-svn-id: http://skia.googlecode.com/svn/trunk@8118 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-12 19:53:16 +00:00
epoger@google.com
b58772f866 PDF: add support for named destinations.
Landing patchset 7 from https://codereview.appspot.com/7374052 for dml@google.com
Review URL: https://codereview.chromium.org/12533009

git-svn-id: http://skia.googlecode.com/svn/trunk@8034 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-08 09:09:10 +00:00
epoger@google.com
812b6f59fa Revert r8000 due to failures on some buildbots
git-svn-id: http://skia.googlecode.com/svn/trunk@8001 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-06 00:47:22 +00:00
epoger@google.com
1cad898916 PDF: add support for named destinations
Imported from https://codereview.appspot.com/7374052/ on behalf of dml@google.com
Review URL: https://codereview.chromium.org/12466008

git-svn-id: http://skia.googlecode.com/svn/trunk@8000 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-03-06 00:05:13 +00:00
edisonn@google.com
5bd26d32ab revert r7892
git-svn-id: http://skia.googlecode.com/svn/trunk@7896 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-28 14:01:44 +00:00
edisonn@google.com
194b7cdb50 resubmit after fixing assert issue: https://codereview.appspot.com/6744050
git-svn-id: http://skia.googlecode.com/svn/trunk@7892 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-27 19:45:11 +00:00
edisonn@google.com
d1c53aae59 Revert r7883
git-svn-id: http://skia.googlecode.com/svn/trunk@7884 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-27 17:46:09 +00:00
edisonn@google.com
676aef05ab Use SkSet to fix issue when pdf generates an exp number of resources.
The problem fixed - http://code.google.com/p/skia/issues/detail?id=940 - is that getResources will recursively obtain all child resource recursively without checking for duplicates.

If we have lots of duplicates, then we try to build a very large vector (exponential with the number of nodes usually) and sooner or later we end up using too much memory and crash.

A possible solution could have been to make sure resources do not have duplicates, but that requirement is impractical, and it this leaves the solution fragile, if there is any issue in the tree,  we crash.

When we emit the pdf, the large number of duplicates is not an issue, because SkPDFCatalog::addObject will deal with duplicates.

I have run the gm with --config pdf, and the images are 100% same bits, while the pdfs have the same size but some very small changes, the order of some objects.
Review URL: https://codereview.appspot.com/6744050

git-svn-id: http://skia.googlecode.com/svn/trunk@7883 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-27 16:54:44 +00:00
edisonn@google.com
2ae67e70cd add custom implementation for drawBitmapRect to shield from changes in SkDevice
git-svn-id: http://skia.googlecode.com/svn/trunk@7696 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-12 01:06:38 +00:00
reed@google.com
af777278c5 remove use of SkRefPtr in public header (SkPDFDocument.h)
Review URL: https://codereview.appspot.com/6546048

git-svn-id: http://skia.googlecode.com/svn/trunk@5612 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-20 18:19:26 +00:00
reed@google.com
fc641d09e5 remove all SkRefPtr from SkPDFDevice.h
Review URL: https://codereview.appspot.com/6542049

git-svn-id: http://skia.googlecode.com/svn/trunk@5609 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-20 17:52:20 +00:00
reed@google.com
2a006c1127 begin to skiafy PDF headers : removing use of SkRefPtr
Review URL: https://codereview.appspot.com/6526050

git-svn-id: http://skia.googlecode.com/svn/trunk@5596 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-09-19 17:05:55 +00:00
vandebo@chromium.org
238be8c7e5 [PDF] Add link annotations.
Review URL: https://codereview.appspot.com/6346100

git-svn-id: http://skia.googlecode.com/svn/trunk@4609 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-13 20:06:02 +00:00
robertphillips@google.com
40a1ae4df2 Added SkDevice onAttachToCanvas & onDetachFromCanvas methods
http://codereview.appspot.com/6348100/



git-svn-id: http://skia.googlecode.com/svn/trunk@4598 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-07-13 15:36:15 +00:00
vandebo@chromium.org
7d6c8f997f [PDF] Move most of the headers to be private.
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
2012-03-22 20:45:15 +00:00
vandebo@chromium.org
ec1a7fa304 Move SkBitSet to utils.
Review URL: https://codereview.appspot.com/5875043

git-svn-id: http://skia.googlecode.com/svn/trunk@3460 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-03-21 23:11:46 +00:00
vandebo@chromium.org
76d6de0845 Revert "[PDF] Move most of the headers to be private."
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
2012-03-21 20:31:08 +00:00
vandebo@chromium.org
bd960c7f19 [PDF] Move most of the headers to be private.
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
2012-03-21 19:59:04 +00:00
vandebo@chromium.org
008c498b58 Revert "[PDF] Move most of the headers to be private."
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
2012-03-21 17:55:04 +00:00
vandebo@chromium.org
f7f9aa8bd9 [PDF] Move most of the headers to be private.
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
2012-03-21 17:45:06 +00:00
vandebo@chromium.org
188838c208 [PDF] Fix memory hungry inefficiency in pdf resource tracking.
When moving the content of a device into a PDF object like SkPDFFormXObject
or SkPDFShader does, we only need the top level resources in the new object's
resource list, not the recursive set of objects.  Otherwise, when you
put a form on a form on form, etc, references to the objects multiply.

This fixed http://crbug.com/117321

Review URL: https://codereview.appspot.com/5796048

git-svn-id: http://skia.googlecode.com/svn/trunk@3360 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-03-09 22:16:58 +00:00
vandebo@chromium.org
74b4619616 Formatting cleanup: remove extra whitespace
Change by arthurhsu@chromium.org, original CL: http://codereview.appspot.com/5587049/

Review URL: https://codereview.appspot.com/5594043

git-svn-id: http://skia.googlecode.com/svn/trunk@3098 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-01-28 01:45:11 +00:00
digit@google.com
1771cbf43d posix: Avoid static initializers in static/global mutexes
This patch removes static initializers related to static and
global mutexes from the final library's machine code when
building on a pthread-capable system.

We use PTHREAD_MUTEX_INITIALIZER to perform POD-style
initialization. You need a line like the following to declare
a global mutex with it:

    SkBaseMutex gMutex = { PTHREAD_MUTEX_INITIALIZER };

We introduce the SK_DECLARE_STATIC_MUTEX and SK_DECLARE_GLOBAL_MUTEX
macros to be able to declare static/global mutexes in the source tree
uniformly.

SkMutex is now defined as a sub-class of SkBaseMutex, with standard
construction/destruction semantics. This is useful if the mutex
object is a member of another C++ class, or allocated dynamically.

We also modify a few places to refer to SkBaseMutex instead of a
SkMutex, where it makes sense. Generally speaking, client code
should hold and use pointers to SkBaseMutex whenever they can
now.

We defined a new built-time macro named SK_USE_POSIX_THREADS
to indicate that we're using a pthread-based SkThread.h
interface. The macro will also be used in future patches
to implement other helper thread synchronization classes.

Finally, we inline the acquire() and release() functions in the
case of Posix to improve performance a bit.

Running: 'bench -repeat 10 -match mutex' on an Android device or
a 2.4GHz Xeon Linux desktop shows the following improvements:

                      Before     After

        Galaxy Nexus    1.64      1.45
        Nexus S         1.47      1.16
        Xoom            1.86      1.66
        Xeon            0.36      0.31

This removes 5 static mutex initializers from the library
Review URL: https://codereview.appspot.com/5501066

git-svn-id: http://skia.googlecode.com/svn/trunk@3091 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-01-26 21:26:40 +00:00
reed@google.com
b55deeb1c7 add allowImageFilter() so a device can allow/disallow filters
(esp. for printing)



git-svn-id: http://skia.googlecode.com/svn/trunk@2981 2bbb7eff-a529-9590-31e7-b0007b416f81
2012-01-06 14:43:09 +00:00
reed@google.com
982cb875f0 add SK_OVERRIDE, move subclass impls of virtuals into .cpp
git-svn-id: http://skia.googlecode.com/svn/trunk@2823 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-12-07 18:34:08 +00:00
bsalomon@google.com
6850eab42b Override 32BPP format in SkCanvas::readPixels
Review URL: http://codereview.appspot.com/5330073/



git-svn-id: http://skia.googlecode.com/svn/trunk@2600 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-03 20:29:47 +00:00
bsalomon@google.com
910267dde2 Make SkDevice::onReadPixels take a const& rather than const*
git-svn-id: http://skia.googlecode.com/svn/trunk@2587 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-02 20:06:25 +00:00
bsalomon@google.com
c69809745e Recommit r2584 with gpu pass of the new ReadPixels test disabled in fixed pt (gpu code doesn't work in general in fixed pt).
git-svn-id: http://skia.googlecode.com/svn/trunk@2586 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-02 19:57:21 +00:00
bsalomon@google.com
ace7bd5623 Revert r2584 (new test fails in fixed pt builds)
git-svn-id: http://skia.googlecode.com/svn/trunk@2585 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-02 19:39:51 +00:00
bsalomon@google.com
1a8ddf0a35 Changes the SkCanvas::readPixels API. Allows caller to read into prealloced bitmap pixels. Changes how clipping to device bounds is handled.
Review URL: http://codereview.appspot.com/5307077/



git-svn-id: http://skia.googlecode.com/svn/trunk@2584 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-11-02 19:34:16 +00:00
bungeman@google.com
b29c883fb4 Add xps device to skia.
http://codereview.appspot.com/5076041/


git-svn-id: http://skia.googlecode.com/svn/trunk@2437 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-10-10 13:19:10 +00:00
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
37ad8fb72f [PDF] Subset font advance data (W array).
Patch by arthurhsu@chromium.org. Original CL:
http://codereview.appspot.com/4830068
http://codereview.appspot.com/4905051/

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

git-svn-id: http://skia.googlecode.com/svn/trunk@2134 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-18 02:38:50 +00:00
vandebo@chromium.org
7b13aca86f Revert "Improve generation of glyph advance array." This reverts commit r2126
gm segfaults in font id retrieval.

TBR=arthurhsu@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@2128 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-16 23:30:48 +00:00
vandebo@chromium.org
e7f3300f42 Improve generation of glyph advance array.
Review URL: http://codereview.appspot.com/4830068

git-svn-id: http://skia.googlecode.com/svn/trunk@2126 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-08-16 22:45:43 +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
vandebo@chromium.org
17e66e2d34 [PDF] Improve efficiency of glyph id collection during font subsetting.
Patch from Arthur Hsu, original CL: http://codereview.appspot.com/4828044/

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

git-svn-id: http://skia.googlecode.com/svn/trunk@1978 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-27 20:59:55 +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
reed@google.com
f6c3ebdeb1 fix Capitalization of static methods
git-svn-id: http://skia.googlecode.com/svn/trunk@1910 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-20 17:20:28 +00:00
reed@google.com
c789cf1c6f helpers for append and insert when the value is a POD.
reduces code-size and perf: fewer refs/unrefs



git-svn-id: http://skia.googlecode.com/svn/trunk@1909 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-20 12:14:33 +00:00
vandebo@chromium.org
f5181a496d [PDF] Fix substitute resources size calculation.
Review URL: http://codereview.appspot.com/4803041

git-svn-id: http://skia.googlecode.com/svn/trunk@1908 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-20 00:33:53 +00:00
vandebo@chromium.org
fb6a53a406 [PDF] Add setPage method to SkPDFDocument.
BUG=312

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

git-svn-id: http://skia.googlecode.com/svn/trunk@1892 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-18 23:13:19 +00:00
vandebo@chromium.org
b88cfe58e1 [PDF] Make color shaders work correctly.
Make SkPDFShader correctly bail out for color shaders.
Fix the bail out handling code.

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

git-svn-id: http://skia.googlecode.com/svn/trunk@1886 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-18 18:40:32 +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
vandebo@chromium.org
2ef12d4bb5 [PDF] Add a concept of a substitute object to the SkPDFCatalog class.
Code by Arthur Hsu, original code review: http://codereview.appspot.com/4650060/

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

git-svn-id: http://skia.googlecode.com/svn/trunk@1812 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-06 23:31:24 +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
vandebo@chromium.org
d3a8c94dfd A bit set class. Will be used for font subsetting.
Committed on behalf of arthurhsu@chromium.org with a few final nits.

Original CL: http://codereview.appspot.com/4627077

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

git-svn-id: http://skia.googlecode.com/svn/trunk@1788 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-07-02 01:26:37 +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
reed@google.com
6ed8249358 update dox
git-svn-id: http://skia.googlecode.com/svn/trunk@1720 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-24 21:01:17 +00:00
vandebo@chromium.org
7332207465 Fix some problems detected by coverity.
- Uninitialized class member in GSCanonicalEntry and SkPDFDocument.
- Incorrect sign extension in SkPDFFont.
- Dead code in SkPDFUtils.

CID=16262,16272,16273,16275

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

git-svn-id: http://skia.googlecode.com/svn/trunk@1668 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-06-21 21:19:41 +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
d897bfb76f [PDF] Add pages accessor to SkPDFDocument.
Also add SK_API to SkPDFPage::getFontResources.

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

git-svn-id: http://skia.googlecode.com/svn/trunk@1453 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-05-31 18:18:21 +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
19e3c1ed1b [PDF] Reuse the invert function object for xform object masks.
Review URL: http://codereview.appspot.com/4557046

git-svn-id: http://skia.googlecode.com/svn/trunk@1417 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-05-25 00:41:30 +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
8989d31cf0 [PDF] Fix windows compile warning.
Review URL: http://codereview.appspot.com/4545056

git-svn-id: http://skia.googlecode.com/svn/trunk@1374 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-05-18 22:10:09 +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
6744d498fc [PDF] Add a ToUnicode mapping for fonts.
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
2011-05-09 18:13:47 +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
f71b2103d5 [PDF] Make the NOT_IMPLEMENTED macro not print anything by default.
Review URL: http://codereview.appspot.com/4351046

git-svn-id: http://skia.googlecode.com/svn/trunk@1050 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-04-04 19:46:31 +00:00
ctguil@chromium.org
dfc5ffe478 Additional SK_API annotations needed for print preview on windows.
Review URL: http://codereview.appspot.com/4324042

git-svn-id: http://skia.googlecode.com/svn/trunk@1022 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-03-30 20:14:49 +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
f77e27deb9 Use Type3 fonts for platforms that don't yet support SkFontHost::GetAdvancedTypefaceMetrics.
Review URL: http://codereview.appspot.com/4273041

git-svn-id: http://skia.googlecode.com/svn/trunk@922 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-03-10 22:50:28 +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
f966fd35cf Add SkPDFUtils.cpp to build.
git-svn-id: http://skia.googlecode.com/svn/trunk@893 2bbb7eff-a529-9590-31e7-b0007b416f81
2011-03-04 21:47:04 +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