aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkPicture.cpp
Commit message (Collapse)AuthorAge
...
* Expose SkPicture::willPlayBackBitmaps()Gravatar tomhudson@google.com2013-10-24
| | | | | | | | | | | | | | This returns true if (1) the picture has finished recording and (2) this picture or any picture drawn into it refers to any bitmaps. It allows clients doing complicated manipulations of the picture to early-out when there are no bitmaps present. BUG=303281 R=reed@google.com git-svn-id: http://skia.googlecode.com/svn/trunk@11935 2bbb7eff-a529-9590-31e7-b0007b416f81
* Allow creating a picture from skp to fail.Gravatar scroggo@google.com2013-10-01
| | | | | | | | | | | | | | | | | Replace the current constructor for creating an SkPicturePlayback to a factory. In the factory, check for incorrect data that would result in an invalid playback. If the playback is invalid, return NULL, and return NULL from SkPicture's factory as well. Update SkTimedPicture(Playback) as well. BUG=skia:1672 R=caryclark@google.com Review URL: https://codereview.chromium.org/24826002 git-svn-id: http://skia.googlecode.com/svn/trunk@11554 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move bound and isFinite into pathrefGravatar robertphillips@google.com2013-09-26
| | | | | | | | https://codereview.chromium.org/24350006/ git-svn-id: http://skia.googlecode.com/svn/trunk@11467 2bbb7eff-a529-9590-31e7-b0007b416f81
* R-Tree -- Don't sort draw commands unless specified.Gravatar sglez@google.com2013-08-30
| | | | | | | | | | | | We expect Webkit and Bink to give us draw commands in a reasonable x,y order. We can maintain correctness and get a 17% recording speedup for the R-Tree by not sorting in x and y when bulk-loading. R=caryclark@google.com, reed@google.com Review URL: https://codereview.chromium.org/23480002 git-svn-id: http://skia.googlecode.com/svn/trunk@11037 2bbb7eff-a529-9590-31e7-b0007b416f81
* Split SkDevice into SkBaseDevice and SkBitmapDeviceGravatar robertphillips@google.com2013-08-29
| | | | | | | | https://codereview.chromium.org/22978012/ git-svn-id: http://skia.googlecode.com/svn/trunk@10995 2bbb7eff-a529-9590-31e7-b0007b416f81
* Blur refactoringGravatar robertphillips@google.com2013-08-27
| | | | | | | | https://codereview.chromium.org/21835004/ git-svn-id: http://skia.googlecode.com/svn/trunk@10936 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert r10830 (Split SkDevice out of SkRasterDevice) until we can get ↵Gravatar robertphillips@google.com2013-08-20
| | | | | | Chromium ready. git-svn-id: http://skia.googlecode.com/svn/trunk@10835 2bbb7eff-a529-9590-31e7-b0007b416f81
* Split SkDevice out of SkBitmapDeviceGravatar robertphillips@google.com2013-08-20
| | | | | | | | https://codereview.chromium.org/22978012/ git-svn-id: http://skia.googlecode.com/svn/trunk@10830 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-08-17
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10790 2bbb7eff-a529-9590-31e7-b0007b416f81
* This CL plumbs in the drawBitmapRectToRect "bleed" flag and makes it live on ↵Gravatar commit-bot@chromium.org2013-08-16
| | | | | | | | | | | | the simplest GPU path. R=bsalomon@google.com, reed@google.com, edisonn@google.com, scroggo@google.com, jvanverth@google.com, mtklein@google.com Author: robertphillips@google.com Review URL: https://chromiumcodereview.appspot.com/20806003 git-svn-id: http://skia.googlecode.com/svn/trunk@10765 2bbb7eff-a529-9590-31e7-b0007b416f81
* Turn on -Wall -Wextra on Mac, and fix all the warnings that crop up for ↵Gravatar commit-bot@chromium.org2013-07-23
| | | | | | | | | | | | | /usr/bin/g++ and Clang 3.3. BUG= R=bungeman@google.com Author: mtklein@google.com Review URL: https://chromiumcodereview.appspot.com/19569012 git-svn-id: http://skia.googlecode.com/svn/trunk@10255 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Temporary change to keep chrome happy."Gravatar scroggo@google.com2013-07-08
| | | | | | | | | | | Now that chrome has https://chromiumcodereview.appspot.com/18078003/, this is no longer needed. Fully switched over to using CreateFromStream! Review URL: https://codereview.chromium.org/18655008 git-svn-id: http://skia.googlecode.com/svn/trunk@9911 2bbb7eff-a529-9590-31e7-b0007b416f81
* Temporary change to keep chrome happy.Gravatar scroggo@google.com2013-06-28
| | | | | | | | | | | | | Add back in a version of the constructor taking a stream so that chrome can build until we switch chrome to using the factory. Will be reverted once chrome switches to using the factory. R=robertphillips@google.com Review URL: https://codereview.chromium.org/17916003 git-svn-id: http://skia.googlecode.com/svn/trunk@9823 2bbb7eff-a529-9590-31e7-b0007b416f81
* Replace SkPicture(SkStream) constructors with a factory.Gravatar scroggo@google.com2013-06-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SkPicture: Remove the constructors which take an SkStream as an argument. Rather than having to check a variable for success, the factory will return NULL on failure. Add a protected function for determining if an SkStream is an SKP to share code with SkTimedPicture. In the factory, check for a NULL SkStream. Use a default decoder (from BUG: https://code.google.com/p/skia/issues/detail?id=1325) SkDebuggerGUI: Call SkPicture::CreateFromStream when necessary. Write a factory for creating SkTimedPictures and use it. Use the factory throughout tools. Add include/lazy to utils and effects gyp include_dirs so SkPicture.h can reference SkImageDecoder.h which references SkBitmapFactory.h (in include/lazy). Changes code Chromium uses, so this will require a temporary Skia and then a change to Chromium to use the new Skia code. TODO: Create a decoder that does nothing to be used by pinspect, lua pictures, etc, and allow it to not assert in SkOrderedReadBuffer. R=reed@google.com Review URL: https://codereview.chromium.org/17113004 git-svn-id: http://skia.googlecode.com/svn/trunk@9822 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Patch to prevent chromium breakage until the DEPS."Gravatar scroggo@google.com2013-05-24
| | | | | | | | This reverts commit d2a284728d30082d46b02c39d916294c6d36e11f. Review URL: https://codereview.chromium.org/16019005 git-svn-id: http://skia.googlecode.com/svn/trunk@9275 2bbb7eff-a529-9590-31e7-b0007b416f81
* Patch to prevent chromium breakage until the DEPS.Gravatar scroggo@google.com2013-05-21
| | | | | | | | | | | | | | | | | Once https://codereview.chromium.org/15489004/ is submitted to Skia, a DEPS roll into chrome will break due to a change in the API. A long term fix for chrome to use the new API is at https://codereview.chromium.org/15496006/, but since it depends on the earlier Skia change, this patch fills in the gap. Will be reverted once https://codereview.chromium.org/15496006/ is submitted to chrome. R=djsollen@google.com Review URL: https://codereview.chromium.org/15538005 git-svn-id: http://skia.googlecode.com/svn/trunk@9228 2bbb7eff-a529-9590-31e7-b0007b416f81
* add SkDrawPictureCallback optional parameter to drawPicture(), which can ↵Gravatar reed@google.com2013-05-20
| | | | | | | | | | abort the picture drawing. R=bsalomon@google.com Review URL: https://codereview.chromium.org/14598023 git-svn-id: http://skia.googlecode.com/svn/trunk@9197 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Allow supporting 1 older PICTURE_VERSION."Gravatar scroggo@google.com2013-05-07
| | | | | | | | | | | | | | This reverts commit deb9d6990ef2d153230340d960d86b0966f261e1. That change was just to allow us to bump the PICTURE_VERSION without changing the SKPs to the new one. Since it is not entirely reliable, I am removing it. R=rmistry@google.com Review URL: https://codereview.chromium.org/14741007 git-svn-id: http://skia.googlecode.com/svn/trunk@9035 2bbb7eff-a529-9590-31e7-b0007b416f81
* Allow supporting 1 older PICTURE_VERSION.Gravatar scroggo@google.com2013-04-30
| | | | | | | | | | | Allows https://codereview.chromium.org/14230022/ to be submitted without breaking bench_pictures and render_pictures. After DEPS roll and SKP capture, this will be reverted. Review URL: https://codereview.chromium.org/14158015 git-svn-id: http://skia.googlecode.com/svn/trunk@8918 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove bogus ability for creating an SkPicturePlayback to fail.Gravatar scroggo@google.com2013-02-25
| | | | | | | | | | | | | | | | | | | Change SkPicturePlayback::parseBufferTag to return void, since it can never return false. Change SkPicturePlayback::parseStreamTag to return void, since the only way it can return false is if parseBufferTag returns false, or if creating a sub picture failed, both of which are nonsensical. Due to the above, there is no reason for creating an SkPicturePlayback to fail, so remove the isValid parameter. Update subclasses in SkDebuggerGUI. Review URL: https://codereview.appspot.com/7388050 git-svn-id: http://skia.googlecode.com/svn/trunk@7844 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove SkSerializationHelpers.Gravatar scroggo@google.com2013-02-22
| | | | | | | | | | Move the function definition for EncodeBitmap to SkPicture, where InstallPixelRefProc has already moved (and where it is relevant). Review URL: https://codereview.appspot.com/7386053 git-svn-id: http://skia.googlecode.com/svn/trunk@7837 2bbb7eff-a529-9590-31e7-b0007b416f81
* Create SkLazyPixelRef which performs lazy decoding.Gravatar scroggo@google.com2013-02-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new pixel ref behaves similarly to SkImageRef, with some key differences: It does not depend on the images project. It requires an SkImageCache, which handles allocation and caching of the pixel memory. It takes a function signature for decoding which decodes into already allocated pixel memory rather than into an SkBitmap. Add two implementations of SkImageCache: SkLruImageCache and SkAshmemImageCache. Replace SkSerializationHelpers::DecodeBitmap with SkPicture::InstallPixelRefProc, and update sites that referenced it. SkBitmapFactory now sets the pixel ref to a new object of the new class SkLazyPixelRef, provided it has an SkImageCache for caching. Provide an option to do lazy decodes in render_pictures and bench_pictures. SkPicture: Eliminate the default parameters in the constructor. If a proc for decoding bitmaps is installed, use it to decode any encoded data in subpictures. When parsing deserializing subpictures, check for success. When serializing subpictures, pass the picture's bitmap encoder to the subpicture's call to serialize. Update BitmapFactoryTest to test its new behavior. BUG=https://code.google.com/p/skia/issues/detail?id=1008 BUG=https://code.google.com/p/skia/issues/detail?id=1009 Review URL: https://codereview.appspot.com/7060052 git-svn-id: http://skia.googlecode.com/svn/trunk@7835 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add NOOP "command" to picture formatGravatar robertphillips@google.com2013-02-15
| | | | | | | | https://codereview.appspot.com/7343044/ git-svn-id: http://skia.googlecode.com/svn/trunk@7752 2bbb7eff-a529-9590-31e7-b0007b416f81
* Only support SkPicture abort for Android due to the fragility of the ↵Gravatar djsollen@google.com2013-02-01
| | | | | | | | existing API Review URL: https://codereview.appspot.com/7225083 git-svn-id: http://skia.googlecode.com/svn/trunk@7515 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2013-01-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7406 2bbb7eff-a529-9590-31e7-b0007b416f81
* Allow SkPicture-derived classes install their own SkPicturePlayback-derived ↵Gravatar robertphillips@google.com2012-11-13
| | | | | | | | | | object https://codereview.appspot.com/6851048/ git-svn-id: http://skia.googlecode.com/svn/trunk@6405 2bbb7eff-a529-9590-31e7-b0007b416f81
* When cloning into an SkPicture, clear its data.Gravatar scroggo@google.com2012-11-02
| | | | | | | | | Prevents a memory leak if the caller clones into an SkPicture that already has a playback or record. Review URL: https://codereview.appspot.com/6813081 git-svn-id: http://skia.googlecode.com/svn/trunk@6282 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2012-11-02
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@6258 2bbb7eff-a529-9590-31e7-b0007b416f81
* Refactoring RTree integration to support SkBBoxHierarchy polymorphism in ↵Gravatar junov@chromium.org2012-11-01
| | | | | | | | | SkPicture. This moves the rtree creation into a virtual method. Review URL: https://codereview.appspot.com/6811057 git-svn-id: http://skia.googlecode.com/svn/trunk@6242 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make SkPictures valid regardless of SK_SUPPORT_HINTING_SCALE_FACTOR.Gravatar scroggo@google.com2012-10-09
| | | | | | | | | | | | | | When the build flag is not set, read/write dummy values so that the creator of an SKP file need not have the same support/lack of support of the feature as the reader. Will separately update the checked in skps to the new version when checking in. BUG=http://code.google.com/p/skia/issues/detail?id=922 Review URL: https://codereview.appspot.com/6642057 git-svn-id: http://skia.googlecode.com/svn/trunk@5869 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add the ability to provide function pointers to SkPicture serializationGravatar scroggo@google.com2012-10-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and deserialization for encoding and decoding bitmaps. Remove kForceFlattenBitmapPixels_Flag, which is no longer used. When an SkOrderedReadBuffer needs to read a bitmap, if it does not have an image decoder, use a dummy bitmap. In GM, add a tolerance option for color differences, used when testing picture serialization, so it can assume two images are the same even though PNG encoding/decoding may have resulted in small differences. Create dummy implementations for SkImageDecoder and SkImageEncoder functions in SkImageDecoder_empty so that a project that does not want to include the images project it can still build. Allow ports to build without images project. In Mac's image encoder, copy 4444 to 8888 before encoding. Add SkWriter32::reservePad, to provide a pointer to write non 4 byte aligned data, padded with zeroes. In bench_ and render_ pictures, pass decode function to SkPicture creation from a stream. BUG=https://code.google.com/p/skia/issues/detail?id=842 Review URL: https://codereview.appspot.com/6551071 git-svn-id: http://skia.googlecode.com/svn/trunk@5818 2bbb7eff-a529-9590-31e7-b0007b416f81
* remove call to setBitmapDevice (deprecated).Gravatar reed@google.com2012-09-27
| | | | | | Review URL: https://codereview.appspot.com/6569070 git-svn-id: http://skia.googlecode.com/svn/trunk@5715 2bbb7eff-a529-9590-31e7-b0007b416f81
* re-re-land 5578Gravatar reed@google.com2012-09-18
| | | | | | | | will follow w/ new .skp files to keep the waterfall green (I hope) git-svn-id: http://skia.googlecode.com/svn/trunk@5584 2bbb7eff-a529-9590-31e7-b0007b416f81
* revert 5580Gravatar reed@google.com2012-09-18
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5581 2bbb7eff-a529-9590-31e7-b0007b416f81
* re-land 5578 w/ pipe fixGravatar reed@google.com2012-09-18
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5580 2bbb7eff-a529-9590-31e7-b0007b416f81
* revert 5578 -- broke pipeGravatar reed@google.com2012-09-18
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5579 2bbb7eff-a529-9590-31e7-b0007b416f81
* Change drawBitmapRect to take a float-src-rect instead of integer-src-rect. ThisGravatar reed@google.com2012-09-18
| | | | | | | | | | | | | | | | | | allows the client more control over the scaling. Because of virtual overrides and wanting to keep the old call-sites up and running, this CL renames the virtual entry-point to drawBitmapRectToRect, and downgrades drawBitmapRect to a non-virtual helper function. The implementation is to use the float-rect for computing the matrix, but still cons-up an integer rect for the purposes of subsetting the original bitmap. We do this by calling float_src->roundOut(&int_src) so that we include all (partially) covered src pixels. No change needed on SkDevice, since that signature is explicitly passed the computed matrix. Review URL: https://codereview.appspot.com/6501140 git-svn-id: http://skia.googlecode.com/svn/trunk@5578 2bbb7eff-a529-9590-31e7-b0007b416f81
* Check for invalid SkPicturesGravatar borenet@google.com2012-09-17
| | | | | | | | | - Remove hasRecorded() since nobody uses it. - Add "success" boolean to SkPicture stream constructor - Track failures in render_pictures and bench_pictures Review URL: https://codereview.appspot.com/6493105 git-svn-id: http://skia.googlecode.com/svn/trunk@5573 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix some nits from http://codereview.appspot.com/6506103/Gravatar rileya@google.com2012-09-14
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5547 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2012-09-14
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5539 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add R-Tree record flag to SkPicture, plus some cleanup/fixes in associated ↵Gravatar rileya@google.com2012-09-13
| | | | | | | | classes. Review URL: https://codereview.appspot.com/6506103 git-svn-id: http://skia.googlecode.com/svn/trunk@5537 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement multi-threaded picture playback via cloning.Gravatar djsollen@google.com2012-08-29
| | | | | | | | | | | | | | The CL adds SkPicture.clone() which produces a thread-safe copy by creating a shallow copy of the thread-safe data within the picture and a deep copy of the data that is not (e.g. SkPaint). This implementation re-flattens the paints when cloning instead of retaining the flattened paints from the recording process. Changes were also needed to various classes to ensure thread safety Review URL: https://codereview.appspot.com/6459105 git-svn-id: http://skia.googlecode.com/svn/trunk@5335 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added Serialization of SkPath's boundGravatar robertphillips@google.com2012-08-17
| | | | | | | | http://codereview.appspot.com/6458143/ git-svn-id: http://skia.googlecode.com/svn/trunk@5143 2bbb7eff-a529-9590-31e7-b0007b416f81
* Always store pixels of mutable bitmaps when recording a SkPicture.Gravatar djsollen@google.com2012-07-27
| | | | | | | | | | | | | | | | | | | | | | | Prior to this CL mutable bitmaps only saved a copy of their pixels if a flag was set at recording time. That flag has been removed and the default behavior when recording a mutable bitmap is to make a copy of it's pixels. This is the only way to ensure that the pixels are not manipulated before we playback their contents. However, enabling this behavior breaks the recording of extracted bitmaps in SkPicture. This is because we currently cache bitmaps within a picture based only on their pixelRef. This results in false positive cache hit when drawing an extracted bitmap as it shares a pixelRef with its orginating bitmap. Therefore we must update the index of the bitmap cache to be both the pixelRef AND the size and offset of the bitmap using those pixels. BUG= TEST=extractbitmap.cpp Review URL: https://codereview.appspot.com/6439043 git-svn-id: http://skia.googlecode.com/svn/trunk@4809 2bbb7eff-a529-9590-31e7-b0007b416f81
* Cleanup restore offsets at end of SkPicture recordingGravatar junov@chromium.org2012-07-12
| | | | | | | | | | Review URL: http://codereview.appspot.com/6355099/ TEST=skia unit test CanvasTest, test step TwoClipOps BUG=https://code.google.com/p/chromium/issues/detail?id=133432 git-svn-id: http://skia.googlecode.com/svn/trunk@4577 2bbb7eff-a529-9590-31e7-b0007b416f81
* export flags on the state of the world when a picture was serialized.Gravatar reed@google.com2012-06-25
| | | | | | | e.g. don't read/write functionptrs in that case (sizeof may be different for one) Review URL: https://codereview.appspot.com/6331050 git-svn-id: http://skia.googlecode.com/svn/trunk@4318 2bbb7eff-a529-9590-31e7-b0007b416f81
* Expand header in serialized picturesGravatar reed@google.com2012-06-22
| | | | | | | | Make chunk/tag reading allow for optional and (somewhat) out-of-order chunks. Return empty picture instead of throwing on error Review URL: https://codereview.appspot.com/6329049 git-svn-id: http://skia.googlecode.com/svn/trunk@4308 2bbb7eff-a529-9590-31e7-b0007b416f81
* add PictInfo chunk to serialized picturesGravatar reed@google.com2012-06-22
| | | | | | Review URL: https://codereview.appspot.com/6325048 git-svn-id: http://skia.googlecode.com/svn/trunk@4302 2bbb7eff-a529-9590-31e7-b0007b416f81
* Expanded distribution of instance countingGravatar robertphillips@google.com2012-06-21
| | | | | | | | http://codereview.appspot.com/6300114/ git-svn-id: http://skia.googlecode.com/svn/trunk@4291 2bbb7eff-a529-9590-31e7-b0007b416f81
* Record pixel ref's gen ID in pictureGravatar bsalomon@google.com2012-06-21
| | | | | | | | Review URL: http://codereview.appspot.com/6325046/ git-svn-id: http://skia.googlecode.com/svn/trunk@4289 2bbb7eff-a529-9590-31e7-b0007b416f81