summaryrefslogtreecommitdiff
path: root/libs/hwui/SkiaCanvas.cpp
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-01-18 15:34:28 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-01-18 15:34:28 +0000
commit4ef66849258509c19e8900c671966da49b554783 (patch)
tree181239cc82e22f8246b6c90a0ce498de304923dc /libs/hwui/SkiaCanvas.cpp
parent0e4bc3f2ba09740060f8dd904badd161bb6c50d5 (diff)
parent671cce2605ed50c9aba73ab5bd530cb7741c53cd (diff)
Merge changes Ie2ec98d9,I81ce2bef
* changes: Make ImageDecoder return animated Drawables Ensure that PostProcess Canvas is released
Diffstat (limited to 'libs/hwui/SkiaCanvas.cpp')
-rw-r--r--libs/hwui/SkiaCanvas.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 2e08670a757a..dc274cf50a52 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -23,6 +23,7 @@
#include "hwui/MinikinUtils.h"
#include "pipeline/skia/AnimatedDrawables.h"
+#include <SkAnimatedImage.h>
#include <SkCanvasStateUtils.h>
#include <SkColorFilter.h>
#include <SkColorSpaceXformCanvas.h>
@@ -32,6 +33,7 @@
#include <SkGraphics.h>
#include <SkImage.h>
#include <SkImagePriv.h>
+#include <SkPicture.h>
#include <SkRSXform.h>
#include <SkShader.h>
#include <SkTemplates.h>
@@ -723,6 +725,20 @@ void SkiaCanvas::drawNinePatch(Bitmap& bitmap, const Res_png_9patch& chunk, floa
mCanvas->drawImageLattice(image.get(), lattice, dst, addFilter(paint, &tmpPaint, colorFilter));
}
+void SkiaCanvas::drawAnimatedImage(SkAnimatedImage* image, float left, float top,
+ const SkPaint* paint) {
+ sk_sp<SkPicture> pic(image->newPictureSnapshot());
+ SkMatrix matrixStorage;
+ SkMatrix* matrix;
+ if (left == 0.0f && top == 0.0f) {
+ matrix = nullptr;
+ } else {
+ matrixStorage = SkMatrix::MakeTrans(left, top);
+ matrix = &matrixStorage;
+ }
+ mCanvas->drawPicture(pic.get(), matrix, paint);
+}
+
void SkiaCanvas::drawVectorDrawable(VectorDrawableRoot* vectorDrawable) {
vectorDrawable->drawStaging(this);
}