#include "SkPaint.h"
#include "SkRRect.h"
#include "SkRect.h"
+#include "SkTLazy.h"
#include "Test.h"
// dlopen and the library flag are only used for tests which require this flag.
};
const int layerAlpha[] = { 255, 255, 0 };
- const SkCanvas::SaveFlags flags[] = { SkCanvas::kARGB_NoClipLayer_SaveFlag,
- SkCanvas::kARGB_ClipLayer_SaveFlag,
- SkCanvas::kARGB_NoClipLayer_SaveFlag
+ const SkCanvas::SaveLayerFlags flags[] = {
+ static_cast<SkCanvas::SaveLayerFlags>(SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag),
+ 0,
+ static_cast<SkCanvas::SaveLayerFlags>(SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag),
};
REPORTER_ASSERT(reporter, sizeof(layerAlpha) == sizeof(flags));
canvas.drawColor(SK_ColorRED);
for (size_t k = 0; k < SK_ARRAY_COUNT(layerAlpha); ++k) {
+ SkTLazy<SkPaint> paint;
+ if (layerAlpha[k] != 0xFF) {
+ paint.init()->setAlpha(layerAlpha[k]);
+ }
+
// draw a rect within the layer's bounds and again outside the layer's bounds
- canvas.saveLayerAlpha(&rect, layerAlpha[k], flags[k]);
+ canvas.saveLayer(SkCanvas::SaveLayerRec(&rect, paint.getMaybeNull(), flags[k]));
if (j) {
// Capture from the first Skia.
SkRegion::kIntersect_Op,
SkRegion::kReplace_Op,
};
- const SkCanvas::SaveFlags flags[] = { SkCanvas::kARGB_NoClipLayer_SaveFlag,
- SkCanvas::kARGB_ClipLayer_SaveFlag,
- SkCanvas::kARGB_NoClipLayer_SaveFlag,
+ const SkCanvas::SaveLayerFlags flags[] = {
+ static_cast<SkCanvas::SaveLayerFlags>(SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag),
+ 0,
+ static_cast<SkCanvas::SaveLayerFlags>(SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag),
};
REPORTER_ASSERT(reporter, sizeof(clipOps) == sizeof(flags));
SkRegion localRegion = clipRegion;
+ SkPaint paint;
+ paint.setAlpha(128);
for (size_t j = 0; j < SK_ARRAY_COUNT(flags); ++j) {
SkRect layerBounds = SkRect::Make(layerRect);
- canvas.saveLayerAlpha(&layerBounds, 128, flags[j]);
+ canvas.saveLayer(SkCanvas::SaveLayerRec(&layerBounds, &paint, flags[j]));
if (i) {
SkCanvasState* state = SkCanvasStateUtils::CaptureCanvasState(&canvas);
// Check that saveLayer without the kClipToLayer_SaveFlag leaves the
// clip stack unchanged.
- canvas.saveLayer(&bounds, nullptr, SkCanvas::kARGB_NoClipLayer_SaveFlag);
+ canvas.saveLayer(SkCanvas::SaveLayerRec(&bounds,
+ nullptr,
+ SkCanvas::kDontClipToLayer_Legacy_SaveLayerFlag));
SkRect clipStackBounds;
SkClipStack::BoundsType boundsType;
canvas.getClipStack()->getBounds(&clipStackBounds, &boundsType);
// Check that saveLayer with the kClipToLayer_SaveFlag sets the clip
// stack to the layer bounds.
- canvas.saveLayer(&bounds, nullptr, SkCanvas::kARGB_ClipLayer_SaveFlag);
+ canvas.saveLayer(&bounds, nullptr);
canvas.getClipStack()->getBounds(&clipStackBounds, &boundsType);
REPORTER_ASSERT(reporter, clipStackBounds.width() == LAYER_WIDTH);
REPORTER_ASSERT(reporter, clipStackBounds.height() == LAYER_HEIGHT);