mtklein 2015-11-03 09:45:03 -08:00 committed by Commit bot
parent 98cad6219b
commit 444d91fec1
2 changed files with 24 additions and 6 deletions

View File

@ -165,7 +165,15 @@ namespace SkRemote {
SaveLayerStrategy willSaveLayer(const SkRect* bounds,
const SkPaint* paint,
SaveFlags flags) override {
// TODO
SkPath path;
if (bounds) {
path.addRect(*bounds);
}
const SkPaint defaultPaint;
if (!paint) {
paint = &defaultPaint;
}
fEncoder->saveLayer(this->id(path), this->commonIDs(*paint), flags);
return kNoLayer_SaveLayerStrategy;
}
@ -473,6 +481,12 @@ namespace SkRemote {
void save() override { fCanvas->save(); }
void restore() override { fCanvas->restore(); }
void saveLayer(ID bounds, CommonIDs common, SkCanvas::SaveFlags flags) override {
SkPaint paint;
this->applyCommon(common, &paint);
SkRect rect;
fCanvas->saveLayer(fPath.find(bounds).isRect(&rect) ? &rect : nullptr, &paint, flags);
}
void setMatrix(ID matrix) override { fCanvas->setMatrix(fMatrix.find(matrix)); }
@ -636,6 +650,9 @@ namespace SkRemote {
void save() override { fWrapped-> save(); }
void restore() override { fWrapped->restore(); }
void saveLayer(ID bounds, CommonIDs common, SkCanvas::SaveFlags flags) override {
fWrapped->saveLayer(bounds, common, flags);
}
void setMatrix(ID matrix) override { fWrapped->setMatrix(matrix); }

View File

@ -81,17 +81,18 @@ namespace SkRemote {
virtual void undefine(ID) = 0;
virtual void save() = 0;
virtual void restore() = 0;
virtual void setMatrix(ID matrix) = 0;
// TODO: do these all belong here in CommonIDs?
struct CommonIDs {
ID misc, patheffect, shader, xfermode, maskfilter,
colorfilter, rasterizer, looper, imagefilter, annotation;
};
virtual void save() = 0;
virtual void restore() = 0;
virtual void saveLayer(ID bounds, CommonIDs, SkCanvas::SaveFlags) = 0;
virtual void setMatrix(ID matrix) = 0;
virtual void clipPath(ID path, SkRegion::Op, bool aa) = 0;
virtual void fillPath(ID path, CommonIDs) = 0;
virtual void strokePath(ID path, CommonIDs, ID stroke) = 0;