diff options
author | 2017-01-19 11:36:41 -0500 | |
---|---|---|
committer | 2017-01-19 18:31:28 +0000 | |
commit | 3726a4ac68821deea7ef4d5472a42f7d35ec4b4e (patch) | |
tree | 1caa4c84140921e0a90157a65bca6cf5ebb20942 /src | |
parent | fbff3297876a7c9c77a48be9a6fe62274a58bd8c (diff) |
new hacky api to get cliprgn for android
BUG=skia:
Change-Id: I42711a474906084adb3c888a599ae02505726484
Reviewed-on: https://skia-review.googlesource.com/7220
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkCanvas.cpp | 12 | ||||
-rw-r--r-- | src/utils/SkCanvasStateUtils.cpp | 7 |
2 files changed, 15 insertions, 4 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index e3374dde52..0375ab738d 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -1819,8 +1819,16 @@ const SkMatrix& SkCanvas::getTotalMatrix() const { return fMCRec->fMatrix; } -const SkRegion& SkCanvas::internal_private_getTotalClip() const { - return fMCRec->fRasterClip.forceGetBW(); +void SkCanvas::temporary_internal_getRgnClip(SkRegion* rgn) { + // we know that ganesh doesn't track the rgn, so ask for its clipstack + if (this->getGrContext()) { + SkPath path; + this->getClipStack()->asPath(&path); + SkISize size = this->getBaseLayerSize(); + rgn->setPath(path, SkRegion(SkIRect::MakeWH(size.width(), size.height()))); + } else { + *rgn = fMCRec->fRasterClip.forceGetBW(); + } } GrRenderTargetContext* SkCanvas::internal_private_accessTopLayerRenderTargetContext() { diff --git a/src/utils/SkCanvasStateUtils.cpp b/src/utils/SkCanvasStateUtils.cpp index 6dd0ca337b..a78f3435a4 100644 --- a/src/utils/SkCanvasStateUtils.cpp +++ b/src/utils/SkCanvasStateUtils.cpp @@ -202,8 +202,11 @@ SkCanvasState* SkCanvasStateUtils::CaptureCanvasState(SkCanvas* canvas) { std::unique_ptr<SkCanvasState_v1> canvasState(new SkCanvasState_v1(canvas)); // decompose the total matrix and clip - setup_MC_state(&canvasState->mcState, canvas->getTotalMatrix(), - canvas->internal_private_getTotalClip()); + { + SkRegion rgn; + canvas->temporary_internal_getRgnClip(&rgn); + setup_MC_state(&canvasState->mcState, canvas->getTotalMatrix(), rgn); + } /* * decompose the layers |