OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright 2016 Google Inc. |
| 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. |
| 6 */ |
| 7 |
| 8 #include "SkCanvas.h" |
| 9 #include "SkSVGLine.h" |
| 10 #include "SkSVGRenderContext.h" |
| 11 #include "SkSVGValue.h" |
| 12 |
| 13 SkSVGLine::SkSVGLine() : INHERITED(SkSVGTag::kLine) {} |
| 14 |
| 15 void SkSVGLine::setX1(const SkSVGLength& x1) { |
| 16 fX1 = x1; |
| 17 } |
| 18 |
| 19 void SkSVGLine::setY1(const SkSVGLength& y1) { |
| 20 fY1 = y1; |
| 21 } |
| 22 |
| 23 void SkSVGLine::setX2(const SkSVGLength& x2) { |
| 24 fX2 = x2; |
| 25 } |
| 26 |
| 27 void SkSVGLine::setY2(const SkSVGLength& y2) { |
| 28 fY2 = y2; |
| 29 } |
| 30 |
| 31 void SkSVGLine::onSetAttribute(SkSVGAttribute attr, const SkSVGValue& v) { |
| 32 switch (attr) { |
| 33 case SkSVGAttribute::kX1: |
| 34 if (const auto* x1 = v.as<SkSVGLengthValue>()) { |
| 35 this->setX1(*x1); |
| 36 } |
| 37 break; |
| 38 case SkSVGAttribute::kY1: |
| 39 if (const auto* y1 = v.as<SkSVGLengthValue>()) { |
| 40 this->setY1(*y1); |
| 41 } |
| 42 break; |
| 43 case SkSVGAttribute::kX2: |
| 44 if (const auto* x2 = v.as<SkSVGLengthValue>()) { |
| 45 this->setX2(*x2); |
| 46 } |
| 47 break; |
| 48 case SkSVGAttribute::kY2: |
| 49 if (const auto* y2 = v.as<SkSVGLengthValue>()) { |
| 50 this->setY2(*y2); |
| 51 } |
| 52 break; |
| 53 default: |
| 54 this->INHERITED::onSetAttribute(attr, v); |
| 55 } |
| 56 } |
| 57 |
| 58 void SkSVGLine::onDraw(SkCanvas* canvas, const SkSVGLengthContext& lctx, |
| 59 const SkPaint& paint) const { |
| 60 const auto x1 = lctx.resolve(fX1, SkSVGLengthContext::LengthType::kHorizonta
l); |
| 61 const auto y1 = lctx.resolve(fY1, SkSVGLengthContext::LengthType::kVertical)
; |
| 62 const auto x2 = lctx.resolve(fX2, SkSVGLengthContext::LengthType::kHorizonta
l); |
| 63 const auto y2 = lctx.resolve(fY2, SkSVGLengthContext::LengthType::kVertical)
; |
| 64 |
| 65 canvas->drawLine(x1, y1, x2, y2, paint); |
| 66 } |
OLD | NEW |