14aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita/* 24aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita * Copyright 2017 Google Inc. 34aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita * 44aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita * Use of this source code is governed by a BSD-style license that can be 54aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita * found in the LICENSE file. 64aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita */ 74aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 84aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita#ifndef SkSGRect_DEFINED 94aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita#define SkSGRect_DEFINED 104aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 114aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita#include "SkSGGeometryNode.h" 124aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 134aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita#include "SkRect.h" 142e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita#include "SkRRect.h" 154aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 164aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitaclass SkCanvas; 174aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitaclass SkPaint; 184aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 194aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitanamespace sksg { 204aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 214aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita/** 224aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita * Concrete Geometry node, wrapping an SkRect. 234aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita */ 242e1d7e234241328154a93b6ddb19f573abc29c15Florin Malitaclass Rect final : public GeometryNode { 254aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitapublic: 264aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita static sk_sp<Rect> Make() { return sk_sp<Rect>(new Rect(SkRect::MakeEmpty())); } 274aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita static sk_sp<Rect> Make(const SkRect& r) { return sk_sp<Rect>(new Rect(r)); } 284aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 294aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita SG_ATTRIBUTE(L, SkScalar, fRect.fLeft ) 304aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita SG_ATTRIBUTE(T, SkScalar, fRect.fTop ) 314aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita SG_ATTRIBUTE(R, SkScalar, fRect.fRight ) 324aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita SG_ATTRIBUTE(B, SkScalar, fRect.fBottom) 334aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 344aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitaprotected: 3538ea40eb750596c75b8ffb5c8f94bcb84b94a7c3Florin Malita void onClip(SkCanvas*, bool antiAlias) const override; 364aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita void onDraw(SkCanvas*, const SkPaint&) const override; 374aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 38c14f144484eff57f6861766510876d83b9046fa6Florin Malita SkRect onRevalidate(InvalidationController*, const SkMatrix&) override; 39e6345d90f8f9d975128de9890d26b1af1fedc524Florin Malita SkPath onAsPath() const override; 404aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 414aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitaprivate: 424aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita explicit Rect(const SkRect&); 434aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 444aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita SkRect fRect; 4551012ce332016cca5160b5a63b91a04b6cb56899Florin Malita 4651012ce332016cca5160b5a63b91a04b6cb56899Florin Malita using INHERITED = GeometryNode; 474aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita}; 484aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 492e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita/** 502e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita * Concrete Geometry node, wrapping an SkRRect. 512e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita */ 522e1d7e234241328154a93b6ddb19f573abc29c15Florin Malitaclass RRect final : public GeometryNode { 532e1d7e234241328154a93b6ddb19f573abc29c15Florin Malitapublic: 542e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita static sk_sp<RRect> Make() { return sk_sp<RRect>(new RRect(SkRRect())); } 552e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita static sk_sp<RRect> Make(const SkRRect& rr) { return sk_sp<RRect>(new RRect(rr)); } 562e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita 572e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita SG_ATTRIBUTE(RRect, SkRRect, fRRect) 582e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita 592e1d7e234241328154a93b6ddb19f573abc29c15Florin Malitaprotected: 6038ea40eb750596c75b8ffb5c8f94bcb84b94a7c3Florin Malita void onClip(SkCanvas*, bool antiAlias) const override; 612e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita void onDraw(SkCanvas*, const SkPaint&) const override; 622e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita 63c14f144484eff57f6861766510876d83b9046fa6Florin Malita SkRect onRevalidate(InvalidationController*, const SkMatrix&) override; 64e6345d90f8f9d975128de9890d26b1af1fedc524Florin Malita SkPath onAsPath() const override; 652e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita 662e1d7e234241328154a93b6ddb19f573abc29c15Florin Malitaprivate: 672e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita explicit RRect(const SkRRect&); 682e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita 692e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita SkRRect fRRect; 7051012ce332016cca5160b5a63b91a04b6cb56899Florin Malita 7151012ce332016cca5160b5a63b91a04b6cb56899Florin Malita using INHERITED = GeometryNode; 722e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita}; 732e1d7e234241328154a93b6ddb19f573abc29c15Florin Malita 744aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita} // namespace sksg 754aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita 764aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita#endif // SkSGRect_DEFINED 77