blob: 0184dace9076d5546e3ebb7a7ab2636d630fbbcc [file] [log] [blame]
Florin Malita4aa44412017-12-19 12:21:02 -05001/*
2 * Copyright 2017 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 "SkSGRect.h"
9
10#include "SkCanvas.h"
11#include "SkPaint.h"
Florin Malitae6345d92018-01-03 23:37:54 -050012#include "SkPath.h"
Florin Malita4aa44412017-12-19 12:21:02 -050013
14namespace sksg {
15
16Rect::Rect(const SkRect& rect) : fRect(rect) {}
17
18void Rect::onDraw(SkCanvas* canvas, const SkPaint& paint) const {
19 canvas->drawRect(fRect, paint);
20}
21
Florin Malita0ebf4192018-01-04 19:21:58 -050022Node::RevalidationResult Rect::onRevalidate(InvalidationController*, const SkMatrix&) {
Florin Malitac75e2402018-01-03 16:17:29 -050023 SkASSERT(this->hasSelfInval());
24
Florin Malita0ebf4192018-01-04 19:21:58 -050025 // Geometry does not contribute damage directly.
26 return { fRect, Damage::kBlockSelf };
Florin Malita4aa44412017-12-19 12:21:02 -050027}
28
Florin Malitae6345d92018-01-03 23:37:54 -050029SkPath Rect::onAsPath() const {
30 SkPath path;
31 path.addRect(fRect);
32 return path;
33}
34
Florin Malita2e1d7e22018-01-02 10:40:00 -050035RRect::RRect(const SkRRect& rr) : fRRect(rr) {}
36
37void RRect::onDraw(SkCanvas* canvas, const SkPaint& paint) const {
38 canvas->drawRRect(fRRect, paint);
39}
40
Florin Malita0ebf4192018-01-04 19:21:58 -050041Node::RevalidationResult RRect::onRevalidate(InvalidationController*, const SkMatrix&) {
Florin Malitac75e2402018-01-03 16:17:29 -050042 SkASSERT(this->hasSelfInval());
43
Florin Malita0ebf4192018-01-04 19:21:58 -050044 // Geometry does not contribute damage directly.
45 return { fRRect.getBounds(), Damage::kBlockSelf };
Florin Malita2e1d7e22018-01-02 10:40:00 -050046}
47
Florin Malitae6345d92018-01-03 23:37:54 -050048SkPath RRect::onAsPath() const {
49 SkPath path;
50 path.addRRect(fRRect);
51 return path;
52}
53
Florin Malita4aa44412017-12-19 12:21:02 -050054} // namespace sksg