Loading core/jni/android_graphics_Canvas.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -187,10 +187,6 @@ static jboolean quickRejectPath(JNIEnv* env, jobject, jlong canvasHandle, jlong // from one to the other (though SkClipOp is destined to become a strict subset) static_assert(SkRegion::kDifference_Op == static_cast<SkRegion::Op>(SkClipOp::kDifference), ""); static_assert(SkRegion::kIntersect_Op == static_cast<SkRegion::Op>(SkClipOp::kIntersect), ""); static_assert(SkRegion::kUnion_Op == static_cast<SkRegion::Op>(SkClipOp::kUnion), ""); static_assert(SkRegion::kXOR_Op == static_cast<SkRegion::Op>(SkClipOp::kXOR), ""); static_assert(SkRegion::kReverseDifference_Op == static_cast<SkRegion::Op>(SkClipOp::kReverseDifference), ""); static_assert(SkRegion::kReplace_Op == static_cast<SkRegion::Op>(SkClipOp::kReplace), ""); static SkClipOp opHandleToClipOp(jint opHandle) { // The opHandle is defined in Canvas.java to be Region::Op Loading libs/hwui/pipeline/skia/SkiaPipeline.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -100,7 +100,7 @@ void SkiaPipeline::renderLayersImpl(const LayerUpdateQueue& layers, bool opaque) int saveCount = layerCanvas->save(); SkASSERT(saveCount == 1); layerCanvas->clipRect(layerDamage.toSkRect(), SkClipOp::kReplace); layerCanvas->clipRect(layerDamage.toSkRect(), SkClipOp::kReplace_private_internal_do_not_use); auto savedLightCenter = mLightCenter; // map current light center into RenderNode's coordinate space Loading Loading @@ -234,7 +234,7 @@ void SkiaPipeline::renderFrameImpl(const LayerUpdateQueue& layers, const SkRect& const std::vector<sp<RenderNode>>& nodes, bool opaque, const Rect &contentDrawBounds, SkCanvas* canvas) { canvas->clipRect(clip, SkClipOp::kReplace); canvas->clipRect(clip, SkClipOp::kReplace_private_internal_do_not_use); if (!opaque) { canvas->clear(SK_ColorTRANSPARENT); Loading libs/hwui/tests/unit/CanvasStateTests.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ TEST(CanvasState, simpleClipping) { state.clipRect(10, 10, 200, 200, SkClipOp::kIntersect); ASSERT_EQ(state.getRenderTargetClipBounds(), Rect(10, 10, 100, 100)); state.clipRect(50, 50, 150, 150, SkClipOp::kReplace); state.clipRect(50, 50, 150, 150, SkClipOp::kReplace_private_internal_do_not_use); ASSERT_EQ(state.getRenderTargetClipBounds(), Rect(50, 50, 150, 150)); } Loading libs/hwui/tests/unit/FrameBuilderTests.cpp +13 −5 Original line number Diff line number Diff line Loading @@ -453,20 +453,28 @@ RENDERTHREAD_TEST(FrameBuilder, clippedMerging) { sk_sp<Bitmap> bitmap(TestUtils::createBitmap(20, 20)); // left side clipped (to inset left half) canvas.clipRect(10, 0, 50, 100, SkClipOp::kReplace); canvas.save(SaveFlags::MatrixClip); canvas.clipRect(10, 0, 50, 100, SkClipOp::kIntersect); canvas.drawBitmap(*bitmap, 0, 40, nullptr); canvas.restore(); // top side clipped (to inset top half) canvas.clipRect(0, 10, 100, 50, SkClipOp::kReplace); canvas.save(SaveFlags::MatrixClip); canvas.clipRect(0, 10, 100, 50, SkClipOp::kIntersect); canvas.drawBitmap(*bitmap, 40, 0, nullptr); canvas.restore(); // right side clipped (to inset right half) canvas.clipRect(50, 0, 90, 100, SkClipOp::kReplace); canvas.save(SaveFlags::MatrixClip); canvas.clipRect(50, 0, 90, 100, SkClipOp::kIntersect); canvas.drawBitmap(*bitmap, 80, 40, nullptr); canvas.restore(); // bottom not clipped, just abutting (inset bottom half) canvas.clipRect(0, 50, 100, 90, SkClipOp::kReplace); canvas.save(SaveFlags::MatrixClip); canvas.clipRect(0, 50, 100, 90, SkClipOp::kIntersect); canvas.drawBitmap(*bitmap, 40, 70, nullptr); canvas.restore(); }); FrameBuilder frameBuilder(SkRect::MakeWH(100, 100), 100, 100, Loading Loading @@ -2252,7 +2260,7 @@ RENDERTHREAD_TEST(FrameBuilder, clip_replace) { }; auto node = TestUtils::createNode<RecordingCanvas>(20, 20, 30, 30, [](RenderProperties& props, RecordingCanvas& canvas) { canvas.clipRect(0, -20, 10, 30, SkClipOp::kReplace); canvas.clipRect(0, -20, 10, 30, SkClipOp::kReplace_private_internal_do_not_use); canvas.drawColor(SK_ColorWHITE, SkBlendMode::kSrcOver); }); Loading libs/hwui/tests/unit/RecordingCanvasTests.cpp +1 −4 Original line number Diff line number Diff line Loading @@ -459,9 +459,6 @@ TEST(RecordingCanvas, saveLayer_addClipFlag) { TEST(RecordingCanvas, saveLayer_viewportCrop) { auto dl = TestUtils::createDisplayList<RecordingCanvas>(200, 200, [](RecordingCanvas& canvas) { // shouldn't matter, since saveLayer will clip to its bounds canvas.clipRect(-1000, -1000, 1000, 1000, SkClipOp::kReplace); canvas.saveLayerAlpha(100, 100, 300, 300, 128, SaveFlags::ClipToLayer); canvas.drawRect(0, 0, 400, 400, SkPaint()); canvas.restore(); Loading Loading @@ -638,7 +635,7 @@ TEST(RecordingCanvas, firstClipWillReplace) { TEST(RecordingCanvas, replaceClipIntersectWithRoot) { auto dl = TestUtils::createDisplayList<RecordingCanvas>(100, 100, [](RecordingCanvas& canvas) { canvas.save(SaveFlags::MatrixClip); canvas.clipRect(-10, -10, 110, 110, SkClipOp::kReplace); canvas.clipRect(-10, -10, 110, 110, SkClipOp::kReplace_private_internal_do_not_use); canvas.drawColor(SK_ColorWHITE, SkBlendMode::kSrcOver); canvas.restore(); }); Loading Loading
core/jni/android_graphics_Canvas.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -187,10 +187,6 @@ static jboolean quickRejectPath(JNIEnv* env, jobject, jlong canvasHandle, jlong // from one to the other (though SkClipOp is destined to become a strict subset) static_assert(SkRegion::kDifference_Op == static_cast<SkRegion::Op>(SkClipOp::kDifference), ""); static_assert(SkRegion::kIntersect_Op == static_cast<SkRegion::Op>(SkClipOp::kIntersect), ""); static_assert(SkRegion::kUnion_Op == static_cast<SkRegion::Op>(SkClipOp::kUnion), ""); static_assert(SkRegion::kXOR_Op == static_cast<SkRegion::Op>(SkClipOp::kXOR), ""); static_assert(SkRegion::kReverseDifference_Op == static_cast<SkRegion::Op>(SkClipOp::kReverseDifference), ""); static_assert(SkRegion::kReplace_Op == static_cast<SkRegion::Op>(SkClipOp::kReplace), ""); static SkClipOp opHandleToClipOp(jint opHandle) { // The opHandle is defined in Canvas.java to be Region::Op Loading
libs/hwui/pipeline/skia/SkiaPipeline.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -100,7 +100,7 @@ void SkiaPipeline::renderLayersImpl(const LayerUpdateQueue& layers, bool opaque) int saveCount = layerCanvas->save(); SkASSERT(saveCount == 1); layerCanvas->clipRect(layerDamage.toSkRect(), SkClipOp::kReplace); layerCanvas->clipRect(layerDamage.toSkRect(), SkClipOp::kReplace_private_internal_do_not_use); auto savedLightCenter = mLightCenter; // map current light center into RenderNode's coordinate space Loading Loading @@ -234,7 +234,7 @@ void SkiaPipeline::renderFrameImpl(const LayerUpdateQueue& layers, const SkRect& const std::vector<sp<RenderNode>>& nodes, bool opaque, const Rect &contentDrawBounds, SkCanvas* canvas) { canvas->clipRect(clip, SkClipOp::kReplace); canvas->clipRect(clip, SkClipOp::kReplace_private_internal_do_not_use); if (!opaque) { canvas->clear(SK_ColorTRANSPARENT); Loading
libs/hwui/tests/unit/CanvasStateTests.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ TEST(CanvasState, simpleClipping) { state.clipRect(10, 10, 200, 200, SkClipOp::kIntersect); ASSERT_EQ(state.getRenderTargetClipBounds(), Rect(10, 10, 100, 100)); state.clipRect(50, 50, 150, 150, SkClipOp::kReplace); state.clipRect(50, 50, 150, 150, SkClipOp::kReplace_private_internal_do_not_use); ASSERT_EQ(state.getRenderTargetClipBounds(), Rect(50, 50, 150, 150)); } Loading
libs/hwui/tests/unit/FrameBuilderTests.cpp +13 −5 Original line number Diff line number Diff line Loading @@ -453,20 +453,28 @@ RENDERTHREAD_TEST(FrameBuilder, clippedMerging) { sk_sp<Bitmap> bitmap(TestUtils::createBitmap(20, 20)); // left side clipped (to inset left half) canvas.clipRect(10, 0, 50, 100, SkClipOp::kReplace); canvas.save(SaveFlags::MatrixClip); canvas.clipRect(10, 0, 50, 100, SkClipOp::kIntersect); canvas.drawBitmap(*bitmap, 0, 40, nullptr); canvas.restore(); // top side clipped (to inset top half) canvas.clipRect(0, 10, 100, 50, SkClipOp::kReplace); canvas.save(SaveFlags::MatrixClip); canvas.clipRect(0, 10, 100, 50, SkClipOp::kIntersect); canvas.drawBitmap(*bitmap, 40, 0, nullptr); canvas.restore(); // right side clipped (to inset right half) canvas.clipRect(50, 0, 90, 100, SkClipOp::kReplace); canvas.save(SaveFlags::MatrixClip); canvas.clipRect(50, 0, 90, 100, SkClipOp::kIntersect); canvas.drawBitmap(*bitmap, 80, 40, nullptr); canvas.restore(); // bottom not clipped, just abutting (inset bottom half) canvas.clipRect(0, 50, 100, 90, SkClipOp::kReplace); canvas.save(SaveFlags::MatrixClip); canvas.clipRect(0, 50, 100, 90, SkClipOp::kIntersect); canvas.drawBitmap(*bitmap, 40, 70, nullptr); canvas.restore(); }); FrameBuilder frameBuilder(SkRect::MakeWH(100, 100), 100, 100, Loading Loading @@ -2252,7 +2260,7 @@ RENDERTHREAD_TEST(FrameBuilder, clip_replace) { }; auto node = TestUtils::createNode<RecordingCanvas>(20, 20, 30, 30, [](RenderProperties& props, RecordingCanvas& canvas) { canvas.clipRect(0, -20, 10, 30, SkClipOp::kReplace); canvas.clipRect(0, -20, 10, 30, SkClipOp::kReplace_private_internal_do_not_use); canvas.drawColor(SK_ColorWHITE, SkBlendMode::kSrcOver); }); Loading
libs/hwui/tests/unit/RecordingCanvasTests.cpp +1 −4 Original line number Diff line number Diff line Loading @@ -459,9 +459,6 @@ TEST(RecordingCanvas, saveLayer_addClipFlag) { TEST(RecordingCanvas, saveLayer_viewportCrop) { auto dl = TestUtils::createDisplayList<RecordingCanvas>(200, 200, [](RecordingCanvas& canvas) { // shouldn't matter, since saveLayer will clip to its bounds canvas.clipRect(-1000, -1000, 1000, 1000, SkClipOp::kReplace); canvas.saveLayerAlpha(100, 100, 300, 300, 128, SaveFlags::ClipToLayer); canvas.drawRect(0, 0, 400, 400, SkPaint()); canvas.restore(); Loading Loading @@ -638,7 +635,7 @@ TEST(RecordingCanvas, firstClipWillReplace) { TEST(RecordingCanvas, replaceClipIntersectWithRoot) { auto dl = TestUtils::createDisplayList<RecordingCanvas>(100, 100, [](RecordingCanvas& canvas) { canvas.save(SaveFlags::MatrixClip); canvas.clipRect(-10, -10, 110, 110, SkClipOp::kReplace); canvas.clipRect(-10, -10, 110, 110, SkClipOp::kReplace_private_internal_do_not_use); canvas.drawColor(SK_ColorWHITE, SkBlendMode::kSrcOver); canvas.restore(); }); Loading