Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
modules
svg
src
SkSVGTransformableNode.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2016 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 "
include/core/SkCanvas.h
"
9
#include "
modules/svg/include/SkSVGRenderContext.h
"
10
#include "
modules/svg/include/SkSVGTransformableNode.h
"
11
#include "
modules/svg/include/SkSVGValue.h
"
12
13
SkSVGTransformableNode::SkSVGTransformableNode
(
SkSVGTag
tag)
14
:
INHERITED
(tag)
15
, fTransform(
SkMatrix
::
I
()) { }
16
17
18
bool
SkSVGTransformableNode::onPrepareToRender
(
SkSVGRenderContext
* ctx)
const
{
19
if
(!fTransform.
isIdentity
()) {
20
ctx->
saveOnce
();
21
ctx->
canvas
()->
concat
(fTransform);
22
}
23
24
return
this->
INHERITED::onPrepareToRender
(ctx);
25
}
26
27
void
SkSVGTransformableNode::onSetAttribute
(
SkSVGAttribute
attr,
const
SkSVGValue
& v) {
28
switch
(attr) {
29
case
SkSVGAttribute::kTransform
:
30
if
(
const
auto
*
transform
= v.
as
<
SkSVGTransformValue
>()) {
31
this->
setTransform
(*
transform
);
32
}
33
break
;
34
default
:
35
this->
INHERITED::onSetAttribute
(attr, v);
36
break
;
37
}
38
}
39
40
void
SkSVGTransformableNode::mapToParent
(
SkPath
* path)
const
{
41
// transforms the path to parent node coordinates.
42
path->transform(fTransform);
43
}
44
45
void
SkSVGTransformableNode::mapToParent
(
SkRect
* rect)
const
{
46
*rect = fTransform.
mapRect
(*rect);
47
}
SkCanvas.h
SkSVGAttribute
SkSVGAttribute
Definition
SkSVGAttribute.h:16
SkSVGAttribute::kTransform
@ kTransform
SkSVGTag
SkSVGTag
Definition
SkSVGNode.h:23
SkSVGRenderContext.h
SkSVGTransformableNode.h
SkSVGValue.h
SkCanvas::concat
void concat(const SkMatrix &matrix)
Definition
SkCanvas.cpp:1642
SkMatrix
Definition
SkMatrix.h:54
SkMatrix::mapRect
bool mapRect(SkRect *dst, const SkRect &src, SkApplyPerspectiveClip pc=SkApplyPerspectiveClip::kYes) const
Definition
SkMatrix.cpp:1141
SkMatrix::isIdentity
bool isIdentity() const
Definition
SkMatrix.h:223
SkPath
Definition
SkPath.h:59
SkSVGNode
Definition
SkSVGNode.h:95
SkSVGNode::onSetAttribute
virtual void onSetAttribute(SkSVGAttribute, const SkSVGValue &)
Definition
SkSVGNode.h:168
SkSVGNode::onPrepareToRender
virtual bool onPrepareToRender(SkSVGRenderContext *) const
Definition
SkSVGNode.cpp:62
SkSVGRenderContext
Definition
SkSVGRenderContext.h:63
SkSVGRenderContext::canvas
SkCanvas * canvas() const
Definition
SkSVGRenderContext.h:90
SkSVGRenderContext::saveOnce
void saveOnce()
Definition
SkSVGRenderContext.cpp:323
SkSVGTransformableNode::setTransform
void setTransform(const SkSVGTransformType &t)
Definition
SkSVGTransformableNode.h:16
SkSVGTransformableNode::onPrepareToRender
bool onPrepareToRender(SkSVGRenderContext *) const override
Definition
SkSVGTransformableNode.cpp:18
SkSVGTransformableNode::mapToParent
void mapToParent(SkPath *) const
Definition
SkSVGTransformableNode.cpp:40
SkSVGTransformableNode::onSetAttribute
void onSetAttribute(SkSVGAttribute, const SkSVGValue &) override
Definition
SkSVGTransformableNode.cpp:27
SkSVGTransformableNode::SkSVGTransformableNode
SkSVGTransformableNode(SkSVGTag)
Definition
SkSVGTransformableNode.cpp:13
SkSVGValue
Definition
SkSVGValue.h:18
SkSVGValue::as
const T * as() const
Definition
SkSVGValue.h:36
SkSVGWrapperValue
Definition
SkSVGValue.h:50
transform
static SkColor4f transform(SkColor4f c, SkColorSpace *src, SkColorSpace *dst)
Definition
p3.cpp:47
I
Definition
SkMD5.cpp:134
SkRect
Definition
extension.cpp:13
Generated on Fri Apr 26 2024 06:16:30 for Flutter Engine by
1.9.8