blob: 9220b0f0af79fbe34b58595a61cb20dc82a0b0be [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 "SkSGPaintNode.h"
9
10namespace sksg {
11
Florin Malitac14f1442018-01-05 11:32:31 -050012// Paint nodes don't generate damage on their own, but via their aggregation ancestor Draw nodes.
13PaintNode::PaintNode() : INHERITED(kBubbleDamage_Trait) {}
Florin Malita4aa44412017-12-19 12:21:02 -050014
15const SkPaint& PaintNode::makePaint() {
Florin Malitac75e2402018-01-03 16:17:29 -050016 SkASSERT(!this->hasInval());
Florin Malita4aa44412017-12-19 12:21:02 -050017
18 return fPaint;
19}
20
Florin Malitac14f1442018-01-05 11:32:31 -050021SkRect PaintNode::onRevalidate(InvalidationController*, const SkMatrix&) {
Florin Malitac75e2402018-01-03 16:17:29 -050022 SkASSERT(this->hasInval());
Florin Malita4aa44412017-12-19 12:21:02 -050023
Florin Malitac14f1442018-01-05 11:32:31 -050024 fPaint.reset();
25 fPaint.setAntiAlias(fAntiAlias);
Florin Malita25366fa2018-01-23 13:37:59 -050026 fPaint.setBlendMode(fBlendMode);
Florin Malitac14f1442018-01-05 11:32:31 -050027 fPaint.setStyle(fStyle);
28 fPaint.setStrokeWidth(fStrokeWidth);
29 fPaint.setStrokeMiter(fStrokeMiter);
30 fPaint.setStrokeJoin(fStrokeJoin);
31 fPaint.setStrokeCap(fStrokeCap);
Florin Malitafa8d49a2017-12-29 11:52:44 -050032
Florin Malitac14f1442018-01-05 11:32:31 -050033 this->onApplyToPaint(&fPaint);
Florin Malitac75e2402018-01-03 16:17:29 -050034
Florin Malita1586d852018-01-12 14:27:39 -050035 // Compose opacity on top of the subclass value.
36 fPaint.setAlpha(SkScalarRoundToInt(fPaint.getAlpha() * SkTPin<SkScalar>(fOpacity, 0, 1)));
37
Florin Malitac14f1442018-01-05 11:32:31 -050038 return SkRect::MakeEmpty();
Florin Malita4aa44412017-12-19 12:21:02 -050039}
40
41} // namespace sksg