aboutsummaryrefslogtreecommitdiff
path: root/resources
AgeCommit message (Collapse)Author
2018-11-28[skottie] Add a custom property manager util classFlorin Malita
To facilitate demo code consolidation, introduce a custom property manager which filters for node names starting with '$' and treats all properties sharing the same name unitarily. Update the Colorize GM to use this new helper. Also revisit the PropertyObserver interface: * aliases for client-facing value types * introduce a new (decomposed) TransformPropertyValue, to replace component-wise setters * consolidate the PropertyHandle interface to only expose get()/set() Bug: skia: Change-Id: I9aa9ee80c1fb57bbfbacab0fc3f017da909b24d9 Reviewed-on: https://skia-review.googlesource.com/c/173220 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
2018-11-27Add support for fallbackFor in Android parser.Ben Wagner
Change-Id: Id328c67b6ad5d76584030f480316425f25979ebf Reviewed-on: https://skia-review.googlesource.com/c/171644 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
2018-10-12Test a GIF with an out of range transparent indexLeon Scroggins III
Bug: skia:8461 According to skbug.com/7069, we should allow GIFs to use a transparent index outside of the range of the color table. Add a test to verify support for this. The GIF is 2x2 with the following pixels: ------------------------------------------------- | black | white | ------------------------------------------------- | transparent | transparent | ------------------------------------------------- The color table only has 2 entries (black and white), and the transparent index is 2. Change-Id: I16574a61e2982b6628c3eca96cb7b3e1f57d3b2a Reviewed-on: https://skia-review.googlesource.com/c/161561 Reviewed-by: Nigel Tao <nigeltao@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com> Auto-Submit: Leon Scroggins <scroggo@google.com>
2018-10-03[skottie] Multi-frame image supportFlorin Malita
Extend the image asset provider API to support animated/multi-frame images. Add a GM based on SkAnimCodecPlayer + animated public domain GIF (source: https://giphy.com/explore/public-domain). Bug: skia: Change-Id: Iaa596e01a7626ca6574db1ebc90632f5a9a02bdc Reviewed-on: https://skia-review.googlesource.com/159162 Commit-Queue: Florin Malita <fmalita@chromium.org> Reviewed-by: Mike Reed <reed@google.com>
2018-09-26[skottie] Add a property setter sample/GMFlorin Malita
skottie_colorize: press 'c' to cycle through stroke/fill colors. Change-Id: I7fa9dcd67822df37e97cafabe088c4b9ded9c622 TBR= Reviewed-on: https://skia-review.googlesource.com/156882 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
2018-09-20[skottie] GM exercising external font loadingFlorin Malita
Sets up a fake web font loader which serves a local/resource font to the sample text animation. Also rename resources/skotty/skotty_* -> resources/skottie/skottie_*. Change-Id: I4af5b24fc3cc5c63c78801979f9be56744047134 Reviewed-on: https://skia-review.googlesource.com/155881 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
2018-08-27Reland "Switch SkCodec to use skcms plus fixes""Leon Scroggins III
This reverts commit 83988edfd3256dc822b961362aad7fbc3e0cdabc. The CTS failure was actually due to another CL. TBR=brianosman@google.com TBR=djsollen@google.com Bug: skia:6839 Bug: skia:8052 Bug: skia:8278 Change-Id: Id9f152ec2c66467d90f49df223cb9b7c168ac2ac Reviewed-on: https://skia-review.googlesource.com/149483 Reviewed-by: Leon Scroggins <scroggo@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
2018-08-24Revert "Reland "Switch SkCodec to use skcms" plus fixes"Leon Scroggins
This reverts commit 49894f450fb155f4f236067109abd9017c85096e. Reason for revert: Breaking a CTS test on the Android roll: java.lang.AssertionError: expected:<67043583> but was:<50266367> at org.junit.Assert.fail(Assert.java:88) at org.junit.Assert.failNotEquals(Assert.java:834) at org.junit.Assert.assertEquals(Assert.java:645) at org.junit.Assert.assertEquals(Assert.java:631) at android.graphics.cts.BitmapColorSpaceTest.verifyGetPixel(BitmapColorSpaceTest.java:301) at android.graphics.cts.BitmapColorSpaceTest.inColorSpaceP3ToSRGB(BitmapColorSpaceTest.java:612) Expected: 3FF00FF Actual: 2FF00FF Original change's description: > Reland "Switch SkCodec to use skcms" plus fixes > > This reverts commit 33d5394d08f645a9f612ba96115acb0e8408a97c, > relanding 81886e8f9461c7049751c6a2c194a1df632dd362 as well as > "Fix CMYK handling in JPEG codec" (commit > f8ae5ce20cf6df2dab4149fb2838d9d8dc6bd1af) > > Add a test based on the CTS test that failed in the original commit. > purple-displayprofile.png is the image used in the CTS test, with the > Android license. > > This also adds a fix for SkAndroidCodec, ensuring that we continue to > use a wide gamut SkColorSpace for images that do not have a numerical > transfer function and have a wide gamut. This includes a test, with > wide-gamut.png, which was created with Photoshop and the profile > "sRGB_Calibrated_Homogeneous.icc" from the skcms tree. > > Bug: skia:6839 > Bug: skia:8052 > Bug: skia:8278 > > TBR=djsollen@google.com > As with the original, no API change > > Change-Id: I4e5bba6a3151f9dc6491e8eda73d4de0535bd692 > Reviewed-on: https://skia-review.googlesource.com/149043 > Commit-Queue: Leon Scroggins <scroggo@google.com> > Reviewed-by: Brian Osman <brianosman@google.com> > Reviewed-by: Leon Scroggins <scroggo@google.com> TBR=djsollen@google.com,mtklein@google.com,scroggo@google.com,brianosman@google.com Change-Id: Ie71e1fecc26de8225d2fe603765c1e1e0d738634 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia:6839, skia:8052, skia:8278 Reviewed-on: https://skia-review.googlesource.com/149262 Reviewed-by: Leon Scroggins <scroggo@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
2018-08-24Reland "Switch SkCodec to use skcms" plus fixesLeon Scroggins III
This reverts commit 33d5394d08f645a9f612ba96115acb0e8408a97c, relanding 81886e8f9461c7049751c6a2c194a1df632dd362 as well as "Fix CMYK handling in JPEG codec" (commit f8ae5ce20cf6df2dab4149fb2838d9d8dc6bd1af) Add a test based on the CTS test that failed in the original commit. purple-displayprofile.png is the image used in the CTS test, with the Android license. This also adds a fix for SkAndroidCodec, ensuring that we continue to use a wide gamut SkColorSpace for images that do not have a numerical transfer function and have a wide gamut. This includes a test, with wide-gamut.png, which was created with Photoshop and the profile "sRGB_Calibrated_Homogeneous.icc" from the skcms tree. Bug: skia:6839 Bug: skia:8052 Bug: skia:8278 TBR=djsollen@google.com As with the original, no API change Change-Id: I4e5bba6a3151f9dc6491e8eda73d4de0535bd692 Reviewed-on: https://skia-review.googlesource.com/149043 Commit-Queue: Leon Scroggins <scroggo@google.com> Reviewed-by: Brian Osman <brianosman@google.com> Reviewed-by: Leon Scroggins <scroggo@google.com>
2018-08-22Revert "Switch SkCodec to use skcms" and follow on changeLeon Scroggins III
This reverts commit 81886e8f9461c7049751c6a2c194a1df632dd362 and f8ae5ce20cf6df2dab4149fb2838d9d8dc6bd1af ("Fix CMYK handling in JPEG codec") This fixes the Android build, which was failing a CTS test with this change. Bug: skia:6839 Bug: skia:8052 TBR=djsollen@google.com As with the original, no API change Change-Id: Ic744a610e9f431707f871de44f9f64040bc60d14 Reviewed-on: https://skia-review.googlesource.com/148810 Reviewed-by: Leon Scroggins <scroggo@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
2018-08-22Switch SkCodec to use skcmsLeon Scroggins III
Bug: skia:6839 Bug: skia:8052 Create an skcms_Profile instead of an SkColorSpace when creating an SkCodec. Eventually we'll move the SkImageInfo (and its SkColorSpace) entirely to clients (e.g. SkAndroidCodec, SkCodecImageGenerator), but for now, create it with SkEncodedInfo::makeImageInfo. Create new SkEncodedInfo::Colors for the special PNG cases that we want to map to specific SkColorTypes. SkEncodedInfo: - Add ICCProfile, which owns an skcms_ICCProfile - FIXME: maybe we should have a single instance for SRGB like SkColorSpace? - Add kXAlpha_Color, for kAlpha_8. Since I'm not longer creating an SkImageInfo (at least in SkPngCodec), it needs a way to pass this info to the caller. - Add k565_Color, for the same reason. Matt originally had this in https://codereview.chromium.org/2212563003/#ps120001, but didn't land that version. I like it though. Mike didn't like the bits per component for 565, but it seems like a sensible hack, much like the existing one for kAlpha_8 - Add width and height. These were removed for redundancy with SkImageInfo, but it makes sense to have them here without it. BUILD.gn: - Build the new SkEncodedInfo.cpp SkCodec: - Remove the constructor with an SkImageInfo. Edit the other one to drop width and height (now in SkEncodedInfo) and take a RHS reference to SkEncodedInfo - Create the SkImageInfo from fEncodedInfo (for now) - Consolidate choosing skcms_AlphaFormat for Transform here - Call conversionSupported from initializeColorXform, with a new parameter for whether there is a color Xform, allowing SkJpegCodec and SkHeifCodec to override that method instead of having another method. SkBmpCodec (etc) - Adapt to the changes above - Create a new SkEncodedInfo w/o profile for the swizzler. SkPngCodec: - use the new SkEncodedInfo::Colors rather than a custom SkImageInfo SkRawCodec: - Remove SkEncodedInfo from SkDngImage, which doesn't actually need it. This is helpful since we don't know all the info yet. - Rewrite gAdobeRGB_toXYZD50 as an skcms_Matrix3x3 SkWebpCodec: - Remove premul_step computation, and simplify to just rely on the base class' handling of applying the transform. SkSwizzler: - Add cases for the new SkEncodedInfo::Colors TBR=reed@google.com No public API changes. Only private/public members of SkCodec.h are modified. Change-Id: Ic0d3bb752b03f13be886b80331987aa5a5713fc0 Reviewed-on: https://skia-review.googlesource.com/136062 Commit-Queue: Leon Scroggins <scroggo@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
2018-07-09Add sRGB profile to mandrill imagesBrian Osman
Bug: skia: Change-Id: Ic0e0ae23c88f86885583a304d90d1ce874ff14ed Reviewed-on: https://skia-review.googlesource.com/139960 Auto-Submit: Brian Osman <brianosman@google.com> Commit-Queue: Mike Klein <mtklein@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
2018-07-09Update mandrill PNGs to be sRGB (rather than gamma 2.2)Brian Osman
This eliminates many GM diffs between gl and glsrgb. Bug: skia: Change-Id: Ia35ae9db3f9dba03c227f82d2ad7ab602100d2e9 Reviewed-on: https://skia-review.googlesource.com/139861 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
2018-06-29skeletal animation support added to API and software backendRuiqi Mao
SkCanvas::drawVertices now supports overloads that take an array of bone deformation matrices. SkVertices::MakeCopy and SkVertices::Builder now support two additional optional attributes, boneIndices and boneWeights. Bug: skia: Change-Id: I30a3b11691e7cdb13924907cc1401ff86d127aea Reviewed-on: https://skia-review.googlesource.com/137221 Reviewed-by: Brian Osman <brianosman@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Ruiqi Mao <ruiqimao@google.com>
2018-06-26Update libjpeg-turbo to pre-2.0.0 (from 1.5.3)Leon Scroggins III
jpeg_skip_scanlines was incorrectly incrementing an internal counter, resulting in an infinite loop. (This only occurs for certain types of progressive images, using certain sample sizes.) The fix is at https://github.com/libjpeg-turbo/libjpeg-turbo/commit/26f109290dc4ffc9c522d9f5d5a7d5d1ee2c0e0a. This is included in tip-of-tree, which is unofficially 2.0.0, so go ahead and update to it. Add a test based on the original bug. Bug: b/78329453 Change-Id: I5ade9924812324d58668c26f71cd622ef93f40a7 Reviewed-on: https://skia-review.googlesource.com/129459 Commit-Queue: Leon Scroggins <scroggo@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
2018-06-21fixed NIMA deformed vertices renderingRuiqi Mao
Bug: skia: Change-Id: I43c1a86eead7701db052451c446f9ad59467f909 Reviewed-on: https://skia-review.googlesource.com/136610 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Ruiqi Mao <ruiqimao@google.com>
2018-06-19added NIMA sample to showcase animationsBrian Osman
improved third_party template to include headers as system headers for non-Windows machines Bug: skia: Change-Id: Id2fa74fc31b49f9b07cc83e7f60477c7ab4f8d83 Reviewed-on: https://skia-review.googlesource.com/135450 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
2018-05-23update ColorSpaceTest.cpp to remove MakeICCMike Klein
The upperLeft and upperRight profiles are A2B/B2A-only, and so cannot be represented as SkColorSpace using SkColorSpace::Make(skcms_ICCProfile). They do parse fine, of course. Change-Id: Iaf51911c2b06b985037d3d5e74b043fb344e320e Reviewed-on: https://skia-review.googlesource.com/129653 Commit-Queue: Mike Klein <mtklein@chromium.org> Commit-Queue: Brian Osman <brianosman@google.com> Auto-Submit: Mike Klein <mtklein@chromium.org> Reviewed-by: Brian Osman <brianosman@google.com>
2018-05-22Update SampleLua and lua files.Ben Wagner
The lua files were moved at one point without the internal path references being updated. This updates them so that the SampleLua slides can be seen in their full glory. Change-Id: I4dd09c847be48d80fa61d3b9864d34a4aa9bb2f5 Reviewed-on: https://skia-review.googlesource.com/129515 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
2018-03-28Add color fonts.Ben Wagner
BUG=skia:7624 Change-Id: I68a6bb4c6fa541ffad565d970438d93ff1bd8ed6 Reviewed-on: https://skia-review.googlesource.com/109521 Commit-Queue: Ben Wagner <bungeman@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Reviewed-by: Herb Derby <herb@google.com> Reviewed-on: https://skia-review.googlesource.com/116541 Reviewed-on: https://skia-review.googlesource.com/116984 Reviewed-by: Ben Wagner <bungeman@google.com>
2018-03-27Revert "Add color fonts."Ben Wagner
This reverts commit d3b933f3e03d5c22e9e7c56d2110469e41509720. Reason for revert: we're not mirroring experimental/ everywhere. Original change's description: > Add color fonts. > > BUG=skia:7624 > > Change-Id: I1d0974282adce2fd7b13a003309e63593b6e1a9c > Reviewed-on: https://skia-review.googlesource.com/109521 > Commit-Queue: Ben Wagner <bungeman@google.com> > Reviewed-by: Mike Klein <mtklein@google.com> > Reviewed-by: Herb Derby <herb@google.com> > Reviewed-on: https://skia-review.googlesource.com/116541 TBR=mtklein@google.com,bungeman@google.com,herb@google.com Change-Id: Ic2d763244cbce663a23eb53321ac45201c466501 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia:7624 Reviewed-on: https://skia-review.googlesource.com/116680 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
2018-03-27Add color fonts.Ben Wagner
BUG=skia:7624 Change-Id: I1d0974282adce2fd7b13a003309e63593b6e1a9c Reviewed-on: https://skia-review.googlesource.com/109521 Commit-Queue: Ben Wagner <bungeman@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Reviewed-by: Herb Derby <herb@google.com> Reviewed-on: https://skia-review.googlesource.com/116541
2018-03-23Revert "Add color fonts."Jim Van Verth
This reverts commit c912d6133c66df7cde3d64adc76941856a12da64. Reason for revert: Causing TSAN issues. Original change's description: > Add color fonts. > > BUG=skia:7624 > > Change-Id: Id2b7449048591892ff802484d5e3745a7e1402bb > Reviewed-on: https://skia-review.googlesource.com/109521 > Commit-Queue: Ben Wagner <bungeman@google.com> > Reviewed-by: Mike Klein <mtklein@google.com> > Reviewed-by: Herb Derby <herb@google.com> TBR=mtklein@google.com,bungeman@google.com,herb@google.com Change-Id: I2ccd1f00e91bb92b7059323c95da0dd3de954164 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia:7624 Reviewed-on: https://skia-review.googlesource.com/116141 Reviewed-by: Jim Van Verth <jvanverth@google.com> Commit-Queue: Jim Van Verth <jvanverth@google.com>
2018-03-22Add color fonts.Ben Wagner
BUG=skia:7624 Change-Id: Id2b7449048591892ff802484d5e3745a7e1402bb Reviewed-on: https://skia-review.googlesource.com/109521 Commit-Queue: Ben Wagner <bungeman@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Reviewed-by: Herb Derby <herb@google.com>
2018-03-09Avoid serializing to 'typ1' on Mac.Ben Wagner
CoreGraphics does not provide a means to get the original font data for a CGFont, only the tables. As a result, Skia pieces the font data back together when requested. The most awkward part of this is choosing the first four bytes, and the CTFont suggestion seems to often be wrong. This change doublechecks the selection of 'typ1', prefering to use 'OTTO' if there are no 'TYP1' or 'CID ' tables. These sorts of fonts are extremely old and unlikely to be in current use. It appears that CTFont may report that it has this format if it is an 'OTTO' font with very few glyphs. If Skia serializes such a font with 'typ1' as the first four bytes, CoreGraphics will not create a CGFont from the resulting font data. BUG=chromium:809763,skia:7630 Change-Id: I9979b9f0ebdd27c4ad0903e8ee6237241e755541 Reviewed-on: https://skia-review.googlesource.com/113306 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
2018-02-28Support pngs with incorrect CMF bytesLeon Scroggins III
Bug: chromium:807324 Though these pngs are technically incorrect, many such PNGs exist, and they are supported in Chromium. Ensure that users of SkCodec (e.g. Android, Flutter) display them as well. Change-Id: I2f1e573b4b7039cea81f96397cc0aa4cbc9461c3 Reviewed-on: https://skia-review.googlesource.com/111082 Commit-Queue: Leon Scroggins <scroggo@google.com> Reviewed-by: Derek Sollenberger <djsollen@google.com>
2018-02-23[skottie] Nested animation supportFlorin Malita
Extend composition layers to support referencing external .json animations ("$"<PATH> syntax). This is a custom extension (not supported in BM/Lottie). Also make skottie::Animation ref-counted, to facilitate sharing. TBR= Change-Id: I062d031e5868d759f3930dea9b261f9b3ec81684 Reviewed-on: https://skia-review.googlesource.com/109806 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
2018-02-22Update piex and add test imageLeon Scroggins III
Bug: oss-fuzz:6347 Change-Id: Iacf8c7a1677f2651e5c211cffb09eecb388a5f8a Reviewed-on: https://skia-review.googlesource.com/109400 Reviewed-by: Kevin Lubick <kjlubick@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
2018-02-16Ensure all rows of a gif are initializedLeon Scroggins III
Bug: oss-fuzz:6274 Even if a frame does not have enough LZW blocks to decode all rows, (which is unknown until we actually decode them), it is marked complete once there are no more LZW blocks. When decoding, even if we've decoded all LZW blocks, check fRowsDecoded to determine whether we've actually all the rows. Report the number of rows decoded so that SkCodec can fill in the remaining ones. Change-Id: I1d6e0c29e3c37649725836cf24a4a239e3266b76 Reviewed-on: https://skia-review.googlesource.com/106964 Commit-Queue: Leon Scroggins <scroggo@google.com> Reviewed-by: Mike Klein <mtklein@google.com>
2018-02-15Check for min int in BMP headerLeon Scroggins III
Bug: os-fuzz:6288 Negating it is undefined, so don't try. Change-Id: I055520b8036dd8b355e744114717e08d76206bc1 Reviewed-on: https://skia-review.googlesource.com/107062 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Leon Scroggins <scroggo@google.com>
2018-02-13Check the length of marker before reading itLeon Scroggins III
Bug: os-fuzz:6295 Change-Id: I0ea9a3c54d61d41f21f2e9b945ab83fa2beb00d8 Reviewed-on: https://skia-review.googlesource.com/107025 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Leon Scroggins <scroggo@google.com>
2018-01-26Make SkAndroidCodec (optionally) respect originLeon Scroggins III
Bug: b/63909536 ImageDecoder will respect the origin, but BitmapFactory will maintain its current behavior of not respecting it. Add an option to respect it. In addition, add support for reading the EXIF data from a WEBP. This seems to be an uncommon use case, but is occasionally used when converting from a JPEG. Add 8 WEBPs, all converted (with cwebp) from their analogous JPEG files already checked in. Change-Id: I38afca58c86fa99ee9ab7d1dc83aaa4f23132c11 Reviewed-on: https://skia-review.googlesource.com/95300 Reviewed-by: Derek Sollenberger <djsollen@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
2018-01-17Add a GM and images to test SkEncodedOriginLeon Scroggins III
Bug: skia:7138 Change-Id: I4800bcffc6a397cb688e63a505dd36145e423fa2 Reviewed-on: https://skia-review.googlesource.com/95083 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
2017-12-31[skotty] Fix path close handlingFlorin Malita
... and add a transform animation sample TBR= Change-Id: I27a67d7861dffb9ca22a5e7155ee0eba3b4575f6 Reviewed-on: https://skia-review.googlesource.com/90023 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
2017-12-30Initial Lottie loader impl (Skotty)Florin Malita
Coarse workflow: * Construction 1) build a Json tree 2) collect asset IDs (for preComp/image layer resolution) 3) "attach" pass - traverse the Json tree - build an SkSG dom, one fragment at a time - attach "animator" objects to the dom, for each animated prop 4) done, we can throw away the Json tree * For each animation tick 1) iterate over active animators and poke their respective dom nodes/attributes 2) revalidate the SkSG dom 3) draw the SkSG dom Note: post construction, things are super-simple - we just poke SkSG DOM attributes with interpolated values, and everything else is handled by SkSG (invalidation, revalidation, render). Change-Id: I96a02be7eb4fb4cb3831f59bf2b3908ea190c0dd Reviewed-on: https://skia-review.googlesource.com/89420 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
2017-12-20Fix Adobe RGB color space in SkiaBrian Osman
Our runtime definition of the XYZ matrix was fairly inaccurate. It also didn't round-trip through ICC fixed point correctly. Now, constructing the color space at runtime produces exactly the same matrix as constructing the space from the ICC profile. And the values can then be serialized back to ICC exactly. This eliminates the need for the snapping logic, too. Bug: skia: Change-Id: I69f4a9bfec3eeef153935e21ab3a0630794b1607 Reviewed-on: https://skia-review.googlesource.com/84840 Reviewed-by: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Brian Osman <brianosman@google.com>
2017-12-08resources: orgainize directory.Hal Canary
Should make it easier to ask just for images. Change-Id: If821743dc924c4bfbc6b2b2d29b14affde7b3afd Reviewed-on: https://skia-review.googlesource.com/82684 Commit-Queue: Hal Canary <halcanary@google.com> Reviewed-by: Leon Scroggins <scroggo@google.com>
2017-11-13Extract Android FontMgr part of Typeface test.Ben Wagner
Part of the Typeface test is Android specific and tests that the Android legacyMakeTypeface returns nullptr when called with a non-null family name and there is no match. A new FontMgrAndroidLegacyMakeTypeface test is introduced to test this and also properly test creating one with SkFontMgr_Android_CustomFonts. Change-Id: Iceb8b9b5490f5eeeaeac30a68daf2c4daac53c86 Reviewed-on: https://skia-review.googlesource.com/70660 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Ben Wagner <bungeman@google.com>
2017-09-28Avoid uninitialized memory in readByteArrayAsDataLeon Scroggins III
Bug: 769134 readByteArray can fail (due to not having enough available or due to the wrong alignment). If it does, do not return an uninitialized block of memory. Further, drop the initial size check, which is covered by readByteArray. Add a test. Change-Id: Ia101697c5bb1ca3ae3df1795f37a74b2f602797d Reviewed-on: https://skia-review.googlesource.com/52742 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
2017-09-25Add animated cowboy sample from WebKit tests, and fix.Jim Van Verth
Bug: chromium:712455 Change-Id: Ic9bb9b862abe01f112cc41d28589733460b15bc1 Reviewed-on: https://skia-review.googlesource.com/50181 Commit-Queue: Jim Van Verth <jvanverth@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
2017-08-14Move lang to list in Android font manager.Ben Wagner
Change-Id: Ia4af2769f4761e6b444ed0c232c48199872f3acc Reviewed-on: https://skia-review.googlesource.com/33480 Reviewed-by: Derek Sollenberger <djsollen@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
2017-08-08Remove SkTypeface::Style from fuzzers and lua.Ben Wagner
Change-Id: I53be039e21a4c11ec3a4bc54c1424cd3e15afc6a Reviewed-on: https://skia-review.googlesource.com/31643 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
2017-07-14Fix double delete in SkBmpCodecLeon Scroggins III
Previously, if ReadHeader returned false, it deleted the input stream. But there are a couple of cases where ReadHeader creates an SkCodec and then returns false. The SkCodec deletes the stream, and then so does NewFromStream. Make sure that we do not double delete by only deleting if no SkCodec was created. Add a test, so such a double delete will be caught by the bots. Bug: b/37623797 Change-Id: I787422c9af58f0b92ad9e9ef9ad87c54a12f5e31 Reviewed-on: https://skia-review.googlesource.com/23620 Reviewed-by: Derek Sollenberger <djsollen@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
2017-06-07Make SkCodec more flexible about its required frameLeon Scroggins III
SkCodec sets fRequiredFrame to be the earliest possible frame that a given frame can depend on. e.g. - Frame A fills the screen, Keep - Frame B does not cover A, Keep - Frame C covers B but not A, and is opaque Frame C can depend on either A or B. SkCodec already reports that C depends on A. This CL allows a client of SkCodec to use either A or B to create C. Also expose the DisposalMethod. Since any frame between A and C can be used to create C except for DisposePrevious frames, the client needs to be able to know the disposal method so they do not try to use such a frame to create C. Further, the disposal method can be used to give the client a better idea whether they will continue to need a frame. (e.g. if frame i is DisposePrevious and depends on i-1, the client may not want to steal i-1 to create i, since i+1 may also depend on i-1.) TODO: Share code for decoding prior frames between GIF and WEBP Change-Id: I91a5ae22ba3d8dfbe0bde833fa67ae3da0d81ed6 Reviewed-on: https://skia-review.googlesource.com/13722 Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Chris Blume <cblume@chromium.org> Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
2017-06-05Defend against ICOs with large BMPs embeddedLeon Scroggins III
If the ICO reports that it has a large BMP file embedded, do not crash if we attempt to allocate too much memory. Bug: b/38116746 Change-Id: I70eb66f5e4ffc15587007b398bbe843665eae500 Reviewed-on: https://skia-review.googlesource.com/18447 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Leon Scroggins <scroggo@google.com>
2017-06-01Better image for copyTo4444 testMatt Sarett
This one produces noticeable differences if we fail to dither. Bug:720105 Change-Id: I208d0c8147f4cca1b484f2f55edc09ce1bef2dcb Reviewed-on: https://skia-review.googlesource.com/18036 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
2017-05-23Add ship.png for DrawShip sampleJim Van Verth
Bug: skia:5526 Change-Id: I12bd44c7dabd72f215a34ce9e733bb7a29d3fc68 Reviewed-on: https://skia-review.googlesource.com/17763 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Jim Van Verth <jvanverth@google.com>
2017-05-23Add Material Design shadow reference sampleJim Van Verth
Change-Id: I889a3f508407178c457f675c321880d869caf9ea Reviewed-on: https://skia-review.googlesource.com/17717 Commit-Queue: Jim Van Verth <jvanverth@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
2017-05-23Add animation support to SkWebpCodecLeon Scroggins III
TBR=reed@google.com (No change to the public API, but changed a header file) SkWebpCodec: - Implement onGetFrameCount, onGetFrameInfo, and onGetRepetitionCount - Respect the alpha reported by libwebp. Although the spec states that it is only a hint, the libwebp encoder uses it properly. Respecting allows us to draw opaque images faster and decode them to 565. This also matches other SkCodecs (and Chromium). - onGetPixels: - Decode the frame requested, recursively decoding required frame if necessary - When blending with a prior frame, use SkRasterPipeline SkCodec: - Move check for negative index to getFrameInfo - Reset the colorXform if one is not needed SkCodecAnimation: - Add new blend enum, for WebP's (and APNG's) non-blending option SkFrameHolder: - New base classes for frames and the owner of the frames, allowing code sharing between SkWebpCodec and SkGifCodec (particularly for determining whether a frame has alpha and what frame it depends on) - When moving items from SkGIFFrameContext, use Skia conventions (i.e. int instead of unsigned) - Rename "delay time" to "duration", to match e.g. SkFrameInfo:: fDuration SkGifImageReader: - Move pieces to SkFrameHolder, and adapt to changes made in the process - Make setAlphaAndRequiredFrame (now on the base class SkFrameHolder) more general to support webp, and add support for frames that do not blend - Change SkGIFFrameContext from a struct to a class, to match how we use the distinction elsewhere (i.e. struct is a small object with public fields) - Rework hasTransparentPixel (now hasTransparency, since it returns true in some cases where there is not a transparent pixel) to better fit with the modified setAlphaAndRequiredFrame. Also be more consistent when there is no transparent pixel but no color map. - Simplify an if condition that was previously simplified in 2d61e717 but accidentally got reverted in a4db9be6 CodecAnimTest: - Test new animated webp files - Rearrange the test to more cleanly print alpha type mismatches for the first frame resources: - webp-animated.webp - animated webp from Chromium - blendBG.webp - new webp file using bits of webp-animated-semitransparent4.webp from Chromium - tests required frame and alpha when using the non-blending mode - frames have the following properties: - Frame 0: no alpha, fills screen - Frame 1: alpha, fills screen - Frame 2: no alpha, fills screen - Frame 3: alpha, fills screen, blendBG - Frame 4: no alpha, fills screen, blendBG - Frame 5: alpha, blendBG - Frame 6: covers 4, has alpha, blendBG - also used to test decoding to 565 if the new frame data has alpha but blends onto an opaque frame DM.cpp: - Test animated images to non-native 8888 and unpremul DMSrcSink.cpp: - Do not test non-native 8888 decodes to f16 dst - Test unpremul decodes to f16 - Copy a frame of an animated image prior to drawing, since in unpremul mode, the DM code will premultiply first. Bug: skia: 3315 Change-Id: I4e55ae2ee5bc095b37a743bdcfac644be603b980 Reviewed-on: https://skia-review.googlesource.com/16707 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Leon Scroggins <scroggo@google.com> Reviewed-by: Matt Sarett <msarett@google.com>
2017-05-17Add tool to create test images with interesting color profilesMatt Sarett
Bug: skia: Change-Id: Ia4f892368fceda4a99490f5bd29851837a7a6927 Reviewed-on: https://skia-review.googlesource.com/17212 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Matt Sarett <msarett@google.com>