| /* |
| * Copyright 2017 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkSGPaintNode_DEFINED |
| #define SkSGPaintNode_DEFINED |
| |
| #include "SkSGNode.h" |
| |
| #include "SkPaint.h" |
| |
| namespace sksg { |
| |
| /** |
| * Base class for nodes which provide a 'paint' (as opposed to geometry) for |
| * drawing (e.g. colors, gradients, patterns). |
| * |
| * Roughly equivalent to Skia's SkPaint. |
| */ |
| class PaintNode : public Node { |
| public: |
| const SkPaint& makePaint(); |
| |
| SG_ATTRIBUTE(AntiAlias , bool , fAntiAlias ) |
| SG_ATTRIBUTE(Opacity , SkScalar , fOpacity ) |
| SG_ATTRIBUTE(BlendMode , SkBlendMode , fBlendMode ) |
| SG_ATTRIBUTE(StrokeWidth, SkScalar , fStrokeWidth) |
| SG_ATTRIBUTE(StrokeMiter, SkScalar , fStrokeMiter) |
| SG_ATTRIBUTE(Style , SkPaint::Style, fStyle ) |
| SG_ATTRIBUTE(StrokeJoin , SkPaint::Join , fStrokeJoin ) |
| SG_ATTRIBUTE(StrokeCap , SkPaint::Cap , fStrokeCap ) |
| |
| protected: |
| PaintNode(); |
| |
| virtual void onApplyToPaint(SkPaint*) const = 0; |
| |
| SkRect onRevalidate(InvalidationController*, const SkMatrix&) final; |
| |
| private: |
| SkPaint fPaint; |
| |
| SkScalar fOpacity = 1, |
| fStrokeWidth = 1, |
| fStrokeMiter = 4; |
| bool fAntiAlias = false; |
| SkBlendMode fBlendMode = SkBlendMode::kSrcOver; |
| SkPaint::Style fStyle = SkPaint::kFill_Style; |
| SkPaint::Join fStrokeJoin = SkPaint::kMiter_Join; |
| SkPaint::Cap fStrokeCap = SkPaint::kButt_Cap; |
| |
| typedef Node INHERITED; |
| }; |
| |
| } // namespace sksg |
| |
| #endif // SkSGGeometryNode_DEFINED |