SkSGRect.h revision 4aa4441186b06565a597ec4a9baac5a972fddb51
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"
144aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita
154aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitaclass SkCanvas;
164aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitaclass SkPaint;
174aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita
184aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitanamespace sksg {
194aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita
204aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita/**
214aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita * Concrete Geometry node, wrapping an SkRect.
224aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita */
234aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitaclass Rect : public GeometryNode {
244aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitapublic:
254aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita    static sk_sp<Rect> Make()                { return sk_sp<Rect>(new Rect(SkRect::MakeEmpty())); }
264aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita    static sk_sp<Rect> Make(const SkRect& r) { return sk_sp<Rect>(new Rect(r)); }
274aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita
284aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita    SG_ATTRIBUTE(L, SkScalar, fRect.fLeft  )
294aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita    SG_ATTRIBUTE(T, SkScalar, fRect.fTop   )
304aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita    SG_ATTRIBUTE(R, SkScalar, fRect.fRight )
314aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita    SG_ATTRIBUTE(B, SkScalar, fRect.fBottom)
324aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita
334aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitaprotected:
344aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita    void onDraw(SkCanvas*, const SkPaint&) const override;
354aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita
364aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita    SkRect onComputeBounds() const override;
374aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita
384aa4441186b06565a597ec4a9baac5a972fddb51Florin Malitaprivate:
394aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita    explicit Rect(const SkRect&);
404aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita
414aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita    SkRect fRect;
424aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita};
434aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita
444aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita} // namespace sksg
454aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita
464aa4441186b06565a597ec4a9baac5a972fddb51Florin Malita#endif // SkSGRect_DEFINED
47