diff options
-rw-r--r-- | graphics/java/android/graphics/Canvas.java | 10 | ||||
-rw-r--r-- | libs/hwui/SkiaCanvas.cpp | 22 | ||||
-rw-r--r-- | libs/hwui/SkiaCanvas.h | 6 | ||||
-rw-r--r-- | libs/hwui/hwui/Canvas.h | 6 | ||||
-rw-r--r-- | libs/hwui/jni/android_graphics_Canvas.cpp | 14 | ||||
-rw-r--r-- | libs/hwui/tests/common/scenes/ListOfFadedTextAnimation.cpp | 2 | ||||
-rw-r--r-- | libs/hwui/tests/common/scenes/SaveLayer2Animation.cpp | 3 | ||||
-rw-r--r-- | libs/hwui/tests/common/scenes/SaveLayerAnimation.cpp | 10 | ||||
-rw-r--r-- | libs/hwui/tests/unit/RenderNodeDrawableTests.cpp | 2 |
9 files changed, 28 insertions, 47 deletions
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java index 42e6ab9c830c..81aeec07db9e 100644 --- a/graphics/java/android/graphics/Canvas.java +++ b/graphics/java/android/graphics/Canvas.java @@ -550,8 +550,7 @@ public class Canvas extends BaseCanvas { @Saveflags int saveFlags) { checkValidSaveFlags(saveFlags); return nSaveLayer(mNativeCanvasWrapper, left, top, right, bottom, - paint != null ? paint.getNativeInstance() : 0, - ALL_SAVE_FLAG); + paint != null ? paint.getNativeInstance() : 0); } /** @@ -626,8 +625,7 @@ public class Canvas extends BaseCanvas { @Saveflags int saveFlags) { checkValidSaveFlags(saveFlags); alpha = Math.min(255, Math.max(0, alpha)); - return nSaveLayerAlpha(mNativeCanvasWrapper, left, top, right, bottom, - alpha, ALL_SAVE_FLAG); + return nSaveLayerAlpha(mNativeCanvasWrapper, left, top, right, bottom, alpha); } /** @@ -1420,10 +1418,10 @@ public class Canvas extends BaseCanvas { private static native int nSave(long canvasHandle, int saveFlags); @CriticalNative private static native int nSaveLayer(long nativeCanvas, float l, float t, float r, float b, - long nativePaint, int layerFlags); + long nativePaint); @CriticalNative private static native int nSaveLayerAlpha(long nativeCanvas, float l, float t, float r, float b, - int alpha, int layerFlags); + int alpha); @CriticalNative private static native int nSaveUnclippedLayer(long nativeCanvas, int l, int t, int r, int b); @CriticalNative diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index 1dbce58fb7c9..9a4ed8166de6 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -160,32 +160,20 @@ void SkiaCanvas::restoreToCount(int restoreCount) { } } -static inline SkCanvas::SaveLayerFlags layerFlags(SaveFlags::Flags flags) { - SkCanvas::SaveLayerFlags layerFlags = 0; - - if (!(flags & SaveFlags::ClipToLayer)) { - layerFlags |= SkCanvasPriv::kDontClipToLayer_SaveLayerFlag; - } - - return layerFlags; -} - -int SkiaCanvas::saveLayer(float left, float top, float right, float bottom, const SkPaint* paint, - SaveFlags::Flags flags) { +int SkiaCanvas::saveLayer(float left, float top, float right, float bottom, const SkPaint* paint) { const SkRect bounds = SkRect::MakeLTRB(left, top, right, bottom); - const SkCanvas::SaveLayerRec rec(&bounds, paint, layerFlags(flags)); + const SkCanvas::SaveLayerRec rec(&bounds, paint); return mCanvas->saveLayer(rec); } -int SkiaCanvas::saveLayerAlpha(float left, float top, float right, float bottom, int alpha, - SaveFlags::Flags flags) { +int SkiaCanvas::saveLayerAlpha(float left, float top, float right, float bottom, int alpha) { if (static_cast<unsigned>(alpha) < 0xFF) { SkPaint alphaPaint; alphaPaint.setAlpha(alpha); - return this->saveLayer(left, top, right, bottom, &alphaPaint, flags); + return this->saveLayer(left, top, right, bottom, &alphaPaint); } - return this->saveLayer(left, top, right, bottom, nullptr, flags); + return this->saveLayer(left, top, right, bottom, nullptr); } int SkiaCanvas::saveUnclippedLayer(int left, int top, int right, int bottom) { diff --git a/libs/hwui/SkiaCanvas.h b/libs/hwui/SkiaCanvas.h index 2cb850c83934..591ae5c44227 100644 --- a/libs/hwui/SkiaCanvas.h +++ b/libs/hwui/SkiaCanvas.h @@ -73,10 +73,8 @@ public: virtual void restoreToCount(int saveCount) override; virtual void restoreUnclippedLayer(int saveCount, const SkPaint& paint) override; - virtual int saveLayer(float left, float top, float right, float bottom, const SkPaint* paint, - SaveFlags::Flags flags) override; - virtual int saveLayerAlpha(float left, float top, float right, float bottom, int alpha, - SaveFlags::Flags flags) override; + virtual int saveLayer(float left, float top, float right, float bottom, const SkPaint* paint) override; + virtual int saveLayerAlpha(float left, float top, float right, float bottom, int alpha) override; virtual int saveUnclippedLayer(int left, int top, int right, int bottom) override; virtual void getMatrix(SkMatrix* outMatrix) const override; diff --git a/libs/hwui/hwui/Canvas.h b/libs/hwui/hwui/Canvas.h index 772b7a28ef04..f94bae2746d9 100644 --- a/libs/hwui/hwui/Canvas.h +++ b/libs/hwui/hwui/Canvas.h @@ -178,10 +178,8 @@ public: virtual void restoreToCount(int saveCount) = 0; virtual void restoreUnclippedLayer(int saveCount, const SkPaint& paint) = 0; - virtual int saveLayer(float left, float top, float right, float bottom, const SkPaint* paint, - SaveFlags::Flags flags) = 0; - virtual int saveLayerAlpha(float left, float top, float right, float bottom, int alpha, - SaveFlags::Flags flags) = 0; + virtual int saveLayer(float left, float top, float right, float bottom, const SkPaint* paint) = 0; + virtual int saveLayerAlpha(float left, float top, float right, float bottom, int alpha) = 0; virtual int saveUnclippedLayer(int, int, int, int) = 0; // Matrix diff --git a/libs/hwui/jni/android_graphics_Canvas.cpp b/libs/hwui/jni/android_graphics_Canvas.cpp index c04340c36511..89fb8bb2a2a0 100644 --- a/libs/hwui/jni/android_graphics_Canvas.cpp +++ b/libs/hwui/jni/android_graphics_Canvas.cpp @@ -93,16 +93,14 @@ static jint save(CRITICAL_JNI_PARAMS_COMMA jlong canvasHandle, jint flagsHandle) } static jint saveLayer(CRITICAL_JNI_PARAMS_COMMA jlong canvasHandle, jfloat l, jfloat t, - jfloat r, jfloat b, jlong paintHandle, jint flagsHandle) { + jfloat r, jfloat b, jlong paintHandle) { Paint* paint = reinterpret_cast<Paint*>(paintHandle); - SaveFlags::Flags flags = static_cast<SaveFlags::Flags>(flagsHandle); - return static_cast<jint>(get_canvas(canvasHandle)->saveLayer(l, t, r, b, paint, flags)); + return static_cast<jint>(get_canvas(canvasHandle)->saveLayer(l, t, r, b, paint)); } static jint saveLayerAlpha(CRITICAL_JNI_PARAMS_COMMA jlong canvasHandle, jfloat l, jfloat t, - jfloat r, jfloat b, jint alpha, jint flagsHandle) { - SaveFlags::Flags flags = static_cast<SaveFlags::Flags>(flagsHandle); - return static_cast<jint>(get_canvas(canvasHandle)->saveLayerAlpha(l, t, r, b, alpha, flags)); + jfloat r, jfloat b, jint alpha) { + return static_cast<jint>(get_canvas(canvasHandle)->saveLayerAlpha(l, t, r, b, alpha)); } static jint saveUnclippedLayer(CRITICAL_JNI_PARAMS_COMMA jlong canvasHandle, jint l, jint t, jint r, jint b) { @@ -688,8 +686,8 @@ static const JNINativeMethod gMethods[] = { {"nGetWidth","(J)I", (void*) CanvasJNI::getWidth}, {"nGetHeight","(J)I", (void*) CanvasJNI::getHeight}, {"nSave","(JI)I", (void*) CanvasJNI::save}, - {"nSaveLayer","(JFFFFJI)I", (void*) CanvasJNI::saveLayer}, - {"nSaveLayerAlpha","(JFFFFII)I", (void*) CanvasJNI::saveLayerAlpha}, + {"nSaveLayer","(JFFFFJ)I", (void*) CanvasJNI::saveLayer}, + {"nSaveLayerAlpha","(JFFFFI)I", (void*) CanvasJNI::saveLayerAlpha}, {"nSaveUnclippedLayer","(JIIII)I", (void*) CanvasJNI::saveUnclippedLayer}, {"nRestoreUnclippedLayer","(JIJ)V", (void*) CanvasJNI::restoreUnclippedLayer}, {"nGetSaveCount","(J)I", (void*) CanvasJNI::getSaveCount}, diff --git a/libs/hwui/tests/common/scenes/ListOfFadedTextAnimation.cpp b/libs/hwui/tests/common/scenes/ListOfFadedTextAnimation.cpp index a9449b62a1f8..5eaf1853233a 100644 --- a/libs/hwui/tests/common/scenes/ListOfFadedTextAnimation.cpp +++ b/libs/hwui/tests/common/scenes/ListOfFadedTextAnimation.cpp @@ -32,7 +32,7 @@ class ListOfFadedTextAnimation : public TestListViewSceneBase { int itemHeight) override { canvas.drawColor(Color::White, SkBlendMode::kSrcOver); int length = dp(100); - canvas.saveLayer(0, 0, length, itemHeight, nullptr, SaveFlags::HasAlphaLayer); + canvas.saveLayer(0, 0, length, itemHeight, nullptr); Paint textPaint; textPaint.getSkFont().setSize(dp(20)); textPaint.setAntiAlias(true); diff --git a/libs/hwui/tests/common/scenes/SaveLayer2Animation.cpp b/libs/hwui/tests/common/scenes/SaveLayer2Animation.cpp index 8630be87c09c..252f539ffca9 100644 --- a/libs/hwui/tests/common/scenes/SaveLayer2Animation.cpp +++ b/libs/hwui/tests/common/scenes/SaveLayer2Animation.cpp @@ -47,8 +47,7 @@ public: // interleave drawText and drawRect with saveLayer ops for (int i = 0; i < regions; i++, top += smallRectHeight) { - canvas.saveLayer(bounds.fLeft, top, bounds.fRight, top + padding, &mBluePaint, - SaveFlags::ClipToLayer | SaveFlags::MatrixClip); + canvas.saveLayer(bounds.fLeft, top, bounds.fRight, top + padding, &mBluePaint); canvas.drawColor(SkColorSetARGB(255, 255, 255, 0), SkBlendMode::kSrcOver); std::string stri = std::to_string(i); std::string offscreen = "offscreen line " + stri; diff --git a/libs/hwui/tests/common/scenes/SaveLayerAnimation.cpp b/libs/hwui/tests/common/scenes/SaveLayerAnimation.cpp index 97bfba34c790..10ba07905c45 100644 --- a/libs/hwui/tests/common/scenes/SaveLayerAnimation.cpp +++ b/libs/hwui/tests/common/scenes/SaveLayerAnimation.cpp @@ -33,10 +33,10 @@ public: card = TestUtils::createNode(0, 0, 400, 800, [](RenderProperties& props, Canvas& canvas) { // nested clipped saveLayers - canvas.saveLayerAlpha(0, 0, 400, 400, 200, SaveFlags::ClipToLayer); + canvas.saveLayerAlpha(0, 0, 400, 400, 200); canvas.drawColor(Color::Green_700, SkBlendMode::kSrcOver); canvas.clipRect(50, 50, 350, 350, SkClipOp::kIntersect); - canvas.saveLayerAlpha(100, 100, 300, 300, 128, SaveFlags::ClipToLayer); + canvas.saveLayerAlpha(100, 100, 300, 300, 128); canvas.drawColor(Color::Blue_500, SkBlendMode::kSrcOver); canvas.restore(); canvas.restore(); @@ -44,12 +44,14 @@ public: // single unclipped saveLayer canvas.save(SaveFlags::MatrixClip); canvas.translate(0, 400); - canvas.saveLayerAlpha(100, 100, 300, 300, 128, SaveFlags::Flags(0)); // unclipped + int unclippedSaveLayer = canvas.saveUnclippedLayer(100, 100, 300, 300); Paint paint; paint.setAntiAlias(true); paint.setColor(Color::Green_700); canvas.drawCircle(200, 200, 200, paint); - canvas.restore(); + SkPaint alphaPaint; + alphaPaint.setAlpha(128); + canvas.restoreUnclippedLayer(unclippedSaveLayer, alphaPaint); canvas.restore(); }); diff --git a/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp b/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp index 7aa6be8722cf..abdf9d587189 100644 --- a/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp +++ b/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp @@ -198,7 +198,7 @@ TEST(RenderNodeDrawable, saveLayerClipAndMatrixRestore) { EXPECT_TRUE(getRecorderMatrix(recorder).isIdentity()); // note we don't pass SaveFlags::MatrixClip, but matrix and clip will be saved - recorder.saveLayer(0, 0, 400, 400, &layerPaint, SaveFlags::ClipToLayer); + recorder.saveLayer(0, 0, 400, 400, &layerPaint); ASSERT_EQ(SkRect::MakeLTRB(0, 0, 400, 400), getRecorderClipBounds(recorder)); EXPECT_TRUE(getRecorderMatrix(recorder).isIdentity()); |