Coverage Report

Created: 2024-05-20 07:14

/src/skia/modules/sksg/include/SkSGDraw.h
Line
Count
Source (jump to first uncovered line)
1
/*
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
#ifndef SkSGDraw_DEFINED
9
#define SkSGDraw_DEFINED
10
11
#include "include/core/SkRect.h"
12
#include "include/core/SkRefCnt.h"
13
#include "modules/sksg/include/SkSGGeometryNode.h"
14
#include "modules/sksg/include/SkSGPaint.h"
15
#include "modules/sksg/include/SkSGRenderNode.h"
16
17
#include <utility>
18
19
class SkCanvas;
20
class SkMatrix;
21
struct SkPoint;
22
23
namespace sksg {
24
class InvalidationController;
25
26
/**
27
 * Concrete rendering node.
28
 *
29
 * Wraps and draws a [geometry, paint] tuple.
30
 *
31
 * Think Skia SkCanvas::drawFoo(foo, paint) calls.
32
 */
33
class Draw : public RenderNode {
34
public:
35
170k
    static sk_sp<Draw> Make(sk_sp<GeometryNode> geo, sk_sp<PaintNode> paint) {
36
170k
        return (geo && paint) ? sk_sp<Draw>(new Draw(std::move(geo), std::move(paint))) : nullptr;
37
170k
    }
38
39
protected:
40
    Draw(sk_sp<GeometryNode>, sk_sp<PaintNode> paint);
41
    ~Draw() override;
42
43
    void onRender(SkCanvas*, const RenderContext*) const override;
44
    const RenderNode* onNodeAt(const SkPoint&)     const override;
45
46
    SkRect onRevalidate(InvalidationController*, const SkMatrix&) override;
47
48
private:
49
    sk_sp<GeometryNode> fGeometry;
50
    sk_sp<PaintNode>    fPaint;
51
52
    using INHERITED = RenderNode;
53
};
54
55
} // namespace sksg
56
57
#endif // SkSGDraw_DEFINED