Go to file
Leon Scroggins 7d1153fc4c Handle EXIF orientation in SkAnimatedImage
Bug: skia:10914
Bug: b/163595585

In a WebP image, it is possible to combine animation with an EXIF
orientation. While SkAndroidCodec attempts to handle orientation itself
by decoding into temporary memory and then drawing through a matrix,
this doesn't work directly when compositing a P-frame into a prior
frame. SkAnimatedImage already uses an SkMatrix to handle cropping and
scaling, so update that matrix to include the orientation.

Make SkAnimatedImage a friend of SkAndroidCodec. This allows the former
to have the same ExifOrientationBehavior specified by the latter, and to
recreate the latter so it does not try to handle the orientation itself.

Clip SkAnimatedImage to its bounds. Android's AnimatedImageDrawable
performs its own clip, but this makes a crop rect work for other
clients.

Update getCurrentFrame to take cropping, scaling, and orientation into
account. This method is used by CanvasKit, which does not use cropping
or scaling, but will now properly orient an animation with an EXIF
orientation.

Add a GM that exercises the various combinations of ways SkAnimatedImage
can be used:
- via newPictureSnapshot (as in Android) versus getCurrentFrame
- scaling down to a dimension that can be output from the
  SkAndroidCodec, versus up, which SkAnimatedImage scales
- with a crop rect
- with a post processor

Change-Id: If1854e9aea23fc4afddf75d39132b38e3fbc6071
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/333223
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
2020-11-12 19:47:59 +00:00
animations
bazel bazel baby steps 2020-09-14 15:18:32 +00:00
bench Reland "add ERMS (enhanced rep mov/sto) SkOpts slice" 2020-11-12 18:00:39 +00:00
bin bin/try: automatically set 'git cl issue' when not found 2020-06-25 17:44:01 +00:00
build/fuchsia [fuchsia] Fix fidlc command. 2020-06-10 03:29:24 +00:00
build_overrides Port to ANGLE's GN files 2020-09-11 15:22:34 +00:00
client_utils/android Replace 'typedef xxxxx INHERITED' with 'using INHERITED = xxxx;'. 2020-09-03 03:41:26 +00:00
demos.skia.org [canvaskit] Remove Sk from nearly all function/type names. 2020-10-07 21:01:32 +00:00
dm Update DDL testing harness to support drawing DDL w/ integer offsets 2020-11-10 14:34:46 +00:00
docker [canvaskit,pathkit] Update to emsdk 2.0 2020-08-20 14:55:50 +00:00
docs/examples Only expose isConvex on path publicly. 2020-08-28 16:56:29 +00:00
example Reland "Remove use of legacy display globals." 2020-10-05 19:13:58 +00:00
experimental Split SkYUVAInfo::PlanarConfig into PlaneConfig and Subsampling enums 2020-11-11 22:42:36 +00:00
fuzz Move GrShaderCaps from Program::Settings to Compiler 2020-11-04 19:38:33 +00:00
gm Handle EXIF orientation in SkAnimatedImage 2020-11-12 19:47:59 +00:00
gn Handle EXIF orientation in SkAnimatedImage 2020-11-12 19:47:59 +00:00
include Handle EXIF orientation in SkAnimatedImage 2020-11-12 19:47:59 +00:00
infra add arm64 mac builders 2020-11-12 14:59:47 +00:00
modules [skottie] Fix font style parsing 2020-11-12 18:36:49 +00:00
platform_tools implement SkotieAnimation as an Animator to better work in an Android environment 2020-11-11 17:34:15 +00:00
resources Handle EXIF orientation in SkAnimCodecPlayer 2020-11-12 14:43:47 +00:00
samplecode [svg] Allow clients to pass a custom SkFontMgr 2020-11-11 01:51:44 +00:00
site [bugs-central] Add documentation for sheriffs 2020-11-09 15:42:26 +00:00
specs Fix CanvasKit generated documentation to work with emscripten 1.39.16. 2020-05-27 12:23:32 +00:00
src Handle EXIF orientation in SkAnimatedImage 2020-11-12 19:47:59 +00:00
tests Revert "make quickReject treat empty rects and paths the same" 2020-11-12 16:10:39 +00:00
third_party [canvaskit] Add support for woff2 fonts 2020-11-10 15:07:26 +00:00
tools don't use MASK_FORMAT_UNKNOWN to represent scaler context state 2020-11-12 18:10:50 +00:00
.bazelignore bazel baby steps 2020-09-14 15:18:32 +00:00
.clang-format Disable BinPackParameters in .clang-format 2020-03-27 14:32:40 +00:00
.clang-tidy Disable ClangTidy namespace comments for short blocks. 2020-08-24 14:01:22 +00:00
.gitignore bazel baby steps 2020-09-14 15:18:32 +00:00
.gn
AUTHORS Fix issues with latest GN 2020-11-07 13:55:45 +00:00
BUILD.bazel bazel baby steps 2020-09-14 15:18:32 +00:00
BUILD.gn Fix issues with latest GN 2020-11-07 13:55:45 +00:00
codereview.settings
CONTRIBUTING
CQ_COMMITTERS
DEPS Roll SwiftShader from 019feda602ec to 4804ac8724ff (9 revisions) 2020-11-12 14:37:47 +00:00
go.mod Update Go Deps 2020-11-02 12:13:02 +00:00
go.sum Update Go Deps 2020-11-02 12:13:02 +00:00
LICENSE LICENSE file: clean up 2019-11-22 21:59:03 +00:00
OWNERS
PRESUBMIT.py Generate SkSL golden output files from test inputs during the build. 2020-09-14 14:54:12 +00:00
public.bzl [svg] Post-relocation cleanup 2020-10-18 19:29:38 +00:00
README
README.chromium
RELEASE_NOTES.txt Split SkYUVAInfo::PlanarConfig into PlaneConfig and Subsampling enums 2020-11-11 22:42:36 +00:00
whitespace.txt Whitespace change to re-trigger Mac/iOS tests 2020-02-23 20:55:01 +00:00
WORKSPACE.bazel bazel baby steps 2020-09-14 15:18:32 +00:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at https://skia.org.