in skiko/src/commonMain/cpp/common/node/RenderNode.cpp [219:255]
void RenderNode::onDraw(SkCanvas* canvas) {
this->updateMatrix();
canvas->translate(this->bounds.left(), this->bounds.top());
if (!this->matrixIdentity) {
canvas->concat(this->transformMatrix);
}
if (this->shadowElevation > 0) {
auto lightGeometry = this->context->getLightGeometry();
auto lightInfo = this->context->getLightInfo();
this->drawShadow(canvas, lightGeometry, lightInfo);
}
if (this->clip) {
canvas->save();
if (this->clipRect) {
canvas->clipRect(*this->clipRect, this->clipOp, this->clipAntiAlias);
} else if (this->clipRRect) {
canvas->clipRRect(*this->clipRRect, this->clipOp, this->clipAntiAlias);
} else if (this->clipPath) {
canvas->clipPath(*this->clipPath, this->clipOp, this->clipAntiAlias);
} else {
auto rect = SkRect::MakeWH(this->bounds.width(), this->bounds.height());
canvas->clipRect(rect, this->clipOp, this->clipAntiAlias);
}
}
if (this->layerPaint) {
auto rect = SkRect::MakeWH(this->bounds.width(), this->bounds.height());
canvas->saveLayer(rect, &*this->layerPaint);
} else {
canvas->save();
}
canvas->drawDrawable(this->contentCache.get());
}