aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/sksg/SkSGPaintNode.cpp
blob: be8edac7c59f7f70c73d65f25c5203b61abf0c85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*
 * Copyright 2017 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "SkSGPaintNode.h"

namespace sksg {

PaintNode::PaintNode() {}

const SkPaint& PaintNode::makePaint() {
    SkASSERT(!this->hasInval());

    return fPaint;
}

Node::RevalidationResult PaintNode::onRevalidate(InvalidationController*, const SkMatrix&) {
    SkASSERT(this->hasInval());

    if (this->hasSelfInval()) {
        fPaint.reset();
        fPaint.setAntiAlias(fAntiAlias);
        fPaint.setStyle(fStyle);
        fPaint.setStrokeWidth(fStrokeWidth);
        fPaint.setStrokeMiter(fStrokeMiter);
        fPaint.setStrokeJoin(fStrokeJoin);
        fPaint.setStrokeCap(fStrokeCap);

        this->onApplyToPaint(&fPaint);
    }

    // Paints have no bounds and don't contribute to damage.
    return { SkRect::MakeEmpty(), Damage::kBlockSelf };
}

} // namespace sksg