| Index: experimental/svg/model/SkSVGRenderContext.cpp
|
| diff --git a/experimental/svg/model/SkSVGRenderContext.cpp b/experimental/svg/model/SkSVGRenderContext.cpp
|
| index 38498d36c819dd577a33d7219e883d84b5b7ba28..e902d4ecf3d389018535e941299ef989c1e7bd42 100644
|
| --- a/experimental/svg/model/SkSVGRenderContext.cpp
|
| +++ b/experimental/svg/model/SkSVGRenderContext.cpp
|
| @@ -5,6 +5,7 @@
|
| * found in the LICENSE file.
|
| */
|
|
|
| +#include "SkCanvas.h"
|
| #include "SkSVGRenderContext.h"
|
| #include "SkSVGTypes.h"
|
|
|
| @@ -42,10 +43,27 @@ SkScalar SkSVGLengthContext::resolve(const SkSVGLength& l, LengthType t) const {
|
| return 0;
|
| }
|
|
|
| -SkSVGRenderContext::SkSVGRenderContext(const SkSize& initialViewport)
|
| - : fLengthContext(initialViewport) {}
|
| +SkRect SkSVGLengthContext::resolveRect(const SkSVGLength& x, const SkSVGLength& y,
|
| + const SkSVGLength& w, const SkSVGLength& h) const {
|
| + return SkRect::MakeXYWH(
|
| + this->resolve(x, SkSVGLengthContext::LengthType::kHorizontal),
|
| + this->resolve(y, SkSVGLengthContext::LengthType::kVertical),
|
| + this->resolve(w, SkSVGLengthContext::LengthType::kHorizontal),
|
| + this->resolve(h, SkSVGLengthContext::LengthType::kVertical));
|
| +}
|
| +
|
| +SkSVGPresentationContext::SkSVGPresentationContext() {}
|
| +
|
| +SkSVGPresentationContext::SkSVGPresentationContext(const SkSVGPresentationContext& o) {
|
| + this->initFrom(o);
|
| +}
|
| +
|
| +SkSVGPresentationContext& SkSVGPresentationContext::operator=(const SkSVGPresentationContext& o) {
|
| + this->initFrom(o);
|
| + return *this;
|
| +}
|
|
|
| -SkSVGRenderContext& SkSVGRenderContext::operator=(const SkSVGRenderContext& other) {
|
| +void SkSVGPresentationContext::initFrom(const SkSVGPresentationContext& other) {
|
| if (other.fFill.isValid()) {
|
| fFill.set(*other.fFill.get());
|
| } else {
|
| @@ -57,11 +75,9 @@ SkSVGRenderContext& SkSVGRenderContext::operator=(const SkSVGRenderContext& othe
|
| } else {
|
| fStroke.reset();
|
| }
|
| -
|
| - return *this;
|
| }
|
|
|
| -SkPaint& SkSVGRenderContext::ensureFill() {
|
| +SkPaint& SkSVGPresentationContext::ensureFill() {
|
| if (!fFill.isValid()) {
|
| fFill.init();
|
| fFill.get()->setStyle(SkPaint::kFill_Style);
|
| @@ -70,7 +86,7 @@ SkPaint& SkSVGRenderContext::ensureFill() {
|
| return *fFill.get();
|
| }
|
|
|
| -SkPaint& SkSVGRenderContext::ensureStroke() {
|
| +SkPaint& SkSVGPresentationContext::ensureStroke() {
|
| if (!fStroke.isValid()) {
|
| fStroke.init();
|
| fStroke.get()->setStyle(SkPaint::kStroke_Style);
|
| @@ -79,10 +95,27 @@ SkPaint& SkSVGRenderContext::ensureStroke() {
|
| return *fStroke.get();
|
| }
|
|
|
| -void SkSVGRenderContext::setFillColor(SkColor color) {
|
| +void SkSVGPresentationContext::setFillColor(SkColor color) {
|
| this->ensureFill().setColor(color);
|
| }
|
|
|
| -void SkSVGRenderContext::setStrokeColor(SkColor color) {
|
| +void SkSVGPresentationContext::setStrokeColor(SkColor color) {
|
| this->ensureStroke().setColor(color);
|
| }
|
| +
|
| +SkSVGRenderContext::SkSVGRenderContext(SkCanvas* canvas,
|
| + const SkSVGLengthContext& lctx,
|
| + const SkSVGPresentationContext& pctx)
|
| + : fLengthContext(lctx)
|
| + , fPresentationContext(pctx)
|
| + , fCanvas(canvas)
|
| + , fCanvasSaveCount(canvas->getSaveCount()) {}
|
| +
|
| +SkSVGRenderContext::SkSVGRenderContext(const SkSVGRenderContext& other)
|
| + : SkSVGRenderContext(other.canvas(),
|
| + other.lengthContext(),
|
| + other.presentationContext()) {}
|
| +
|
| +SkSVGRenderContext::~SkSVGRenderContext() {
|
| + fCanvas->restoreToCount(fCanvasSaveCount);
|
| +}
|
|
|