Flutter Engine
The Flutter Engine
third_party
skia
modules
svg
include
SkSVGValue.h
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
#ifndef SkSVGValue_DEFINED
9
#define SkSVGValue_DEFINED
10
11
#include "
include/core/SkColor.h
"
12
#include "
include/core/SkMatrix.h
"
13
#include "
include/core/SkPath.h
"
14
#include "
include/core/SkTypes.h
"
15
#include "
include/private/base/SkNoncopyable.h
"
16
#include "
modules/svg/include/SkSVGTypes.h
"
17
18
class
SK_API
SkSVGValue
:
public
SkNoncopyable
{
19
public
:
20
enum class
Type
{
21
kColor
,
22
kFilter
,
23
kLength
,
24
kNumber,
25
kObjectBoundingBoxUnits,
26
kPreserveAspectRatio
,
27
kStopColor,
28
kString,
29
kTransform
,
30
kViewBox
,
31
};
32
33
Type
type
()
const
{
return
fType; }
34
35
template
<
typename
T>
36
const
T
*
as
()
const
{
37
return
fType ==
T::TYPE
?
static_cast<
const
T
*
>
(
this
) :
nullptr
;
38
}
39
40
protected
:
41
SkSVGValue
(
Type
t) : fType(t) { }
42
43
private
:
44
Type
fType;
45
46
using
INHERITED
=
SkNoncopyable
;
47
};
48
49
template
<
typename
T, SkSVGValue::Type ValueType>
50
class
SK_API
SkSVGWrapperValue
final :
public
SkSVGValue
{
51
public
:
52
static
constexpr
Type
TYPE
= ValueType;
53
54
explicit
SkSVGWrapperValue
(
const
T
& v)
55
:
INHERITED
(ValueType)
56
, fWrappedValue(v) { }
57
58
operator
const
T
&()
const
{
return
fWrappedValue; }
59
const
T
*
operator->
()
const
{
return
&fWrappedValue; }
60
61
private
:
62
// Stack-only
63
void
*
operator
new
(size_t) =
delete
;
64
void
*
operator
new
(size_t,
void
*) =
delete
;
65
66
const
T
& fWrappedValue;
67
68
using
INHERITED
=
SkSVGValue
;
69
};
70
71
using
SkSVGColorValue
=
SkSVGWrapperValue<SkSVGColorType , SkSVGValue::Type::kColor >
;
72
using
SkSVGLengthValue
=
SkSVGWrapperValue<SkSVGLength , SkSVGValue::Type::kLength >
;
73
using
SkSVGTransformValue
=
SkSVGWrapperValue<SkSVGTransformType, SkSVGValue::Type::kTransform >
;
74
using
SkSVGViewBoxValue
=
SkSVGWrapperValue<SkSVGViewBoxType , SkSVGValue::Type::kViewBox >
;
75
using
SkSVGNumberValue
=
SkSVGWrapperValue<SkSVGNumberType , SkSVGValue::Type::kNumber >
;
76
using
SkSVGStringValue
=
SkSVGWrapperValue<SkSVGStringType , SkSVGValue::Type::kString >
;
77
using
SkSVGStopColorValue
=
SkSVGWrapperValue<SkSVGStopColor , SkSVGValue::Type::kStopColor >
;
78
79
using
SkSVGPreserveAspectRatioValue
=
SkSVGWrapperValue
<
SkSVGPreserveAspectRatio
,
80
SkSVGValue::Type::kPreserveAspectRatio
>;
81
82
using
SkSVGObjectBoundingBoxUnitsValue
=
SkSVGWrapperValue
<
SkSVGObjectBoundingBoxUnits
,
83
SkSVGValue::Type::kObjectBoundingBoxUnits
>;
84
85
#endif
// SkSVGValue_DEFINED
SK_API
#define SK_API
Definition:
SkAPI.h:35
SkBlendMode::kColor
@ kColor
hue and saturation of source with luminosity of destination
SkColor.h
SkMatrix.h
SkNoncopyable.h
SkPath.h
INHERITED
#define INHERITED(method,...)
Definition:
SkRecorder.cpp:128
TYPE
#define TYPE(t)
Definition:
SkSLModuleLoader.cpp:35
SkSVGAttribute::kPreserveAspectRatio
@ kPreserveAspectRatio
SkSVGAttribute::kViewBox
@ kViewBox
SkSVGAttribute::kTransform
@ kTransform
SkSVGAttribute::kFilter
@ kFilter
SkSVGTypes.h
SkTypes.h
SkNoncopyable
Definition:
SkNoncopyable.h:18
SkNoncopyable::SkNoncopyable
SkNoncopyable()=default
SkSVGObjectBoundingBoxUnits
Definition:
SkSVGTypes.h:454
SkSVGValue
Definition:
SkSVGValue.h:18
SkSVGValue::type
Type type() const
Definition:
SkSVGValue.h:33
SkSVGValue::SkSVGValue
SkSVGValue(Type t)
Definition:
SkSVGValue.h:41
SkSVGValue::Type::kPreserveAspectRatio
@ kPreserveAspectRatio
SkSVGValue::Type::kObjectBoundingBoxUnits
@ kObjectBoundingBoxUnits
SkSVGValue::as
const T * as() const
Definition:
SkSVGValue.h:36
SkSVGWrapperValue
Definition:
SkSVGValue.h:50
SkSVGWrapperValue::operator->
const T * operator->() const
Definition:
SkSVGValue.h:59
SkSVGWrapperValue::SkSVGWrapperValue
SkSVGWrapperValue(const T &v)
Definition:
SkSVGValue.h:54
Type
Definition:
asyncrescaleandread.cpp:530
dart::kLength
static int kLength
Definition:
dart_api_impl_test.cc:2199
T
#define T
Definition:
precompiler.cc:65
SkSVGPreserveAspectRatio
Definition:
SkSVGTypes.h:585
Generated on Sun Jun 23 2024 21:56:08 for Flutter Engine by
1.9.4