Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
Loading...
Searching...
No Matches
helpers.h
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#ifndef FLUTTER_SKWASM_HELPERS_H_
6
#define FLUTTER_SKWASM_HELPERS_H_
7
8
#include "
flutter/display_list/dl_sampling_options.h
"
9
#include "
flutter/display_list/geometry/dl_geometry_types.h
"
10
#include "third_party/skia/include/core/SkMatrix.h"
11
#include "third_party/skia/include/core/SkRRect.h"
12
#include "third_party/skia/include/core/SkSamplingOptions.h"
13
14
namespace
Skwasm
{
15
16
template
<
typename
T>
17
class
sp_wrapper
{
18
public
:
19
sp_wrapper
(std::shared_ptr<T> ptr) : ptr_(
std
::move(ptr)) {}
20
21
const
std::shared_ptr<T>&
Shared
() {
return
ptr_; }
22
23
T*
Raw
() {
return
ptr_.get(); }
24
25
private
:
26
std::shared_ptr<T> ptr_;
27
};
28
29
inline
flutter::DlMatrix
CreateDlMatrixFrom3x3
(
const
flutter::DlScalar
* f) {
30
// clang-format off
31
return
flutter::DlMatrix
(
32
f[0], f[3], 0, f[6],
33
f[1], f[4], 0, f[7],
34
0, 0, 1, 0,
35
f[2], f[5], 0, f[8]
36
);
37
// clang-format on
38
}
39
40
inline
SkMatrix
CreateSkMatrix
(
const
SkScalar* f) {
41
return
SkMatrix::MakeAll(f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7],
42
f[8]);
43
}
44
45
inline
flutter::DlRect
CreateDlRect
(
const
float
* f) {
46
return
flutter::DlRect::MakeLTRB
(f[0], f[1], f[2], f[3]);
47
}
48
49
inline
flutter::DlRoundingRadii
CreateDlRadii
(
const
float
* f) {
50
// Flutter has radii in TL,TR,BR,BL (clockwise) order,
51
// but Impeller uses TL,TR,BL,BR (zig-zag) order
52
impeller::RoundingRadii
radii = {
53
.
top_left
=
flutter::DlSize
(f[0], f[1]),
54
.top_right =
flutter::DlSize
(f[2], f[3]),
55
.bottom_left =
flutter::DlSize
(f[6], f[7]),
56
.bottom_right =
flutter::DlSize
(f[4], f[5]),
57
};
58
return
radii;
59
}
60
61
inline
flutter::DlRoundRect
CreateDlRRect
(
const
float
* f) {
62
return
flutter::DlRoundRect::MakeRectRadii
(
CreateDlRect
(f),
63
CreateDlRadii
(f + 4));
64
}
65
66
inline
SkRRect
CreateSkRRect
(
const
SkScalar* f) {
67
const
SkRect* rect =
reinterpret_cast<
const
SkRect*
>
(f);
68
const
SkVector* radiiValues =
reinterpret_cast<
const
SkVector*
>
(f + 4);
69
SkRRect rr;
70
rr.setRectRadii(*rect, radiiValues);
71
return
rr;
72
}
73
74
// This must be kept in sync with the `ImageByteFormat` enum in dart:ui.
75
enum class
ImageByteFormat
{
76
rawRgba
,
77
rawStraightRgba
,
78
rawUnmodified
,
79
png
,
80
};
81
82
// This needs to be kept in sync with the "FilterQuality" enum in dart:ui
83
enum class
FilterQuality
{
84
none
,
85
low
,
86
medium
,
87
high
,
88
};
89
90
inline
flutter::DlFilterMode
FilterModeForQuality
(
FilterQuality
quality) {
91
switch
(quality) {
92
case
FilterQuality::none
:
93
return
flutter::DlFilterMode::kNearest
;
94
case
FilterQuality::low
:
95
case
FilterQuality::medium
:
96
case
FilterQuality::high
:
97
return
flutter::DlFilterMode::kLinear
;
98
}
99
}
100
101
inline
flutter::DlImageSampling
SamplingOptionsForQuality
(
102
FilterQuality
quality) {
103
switch
(quality) {
104
case
FilterQuality::none
:
105
return
flutter::DlImageSampling::kNearestNeighbor
;
106
case
FilterQuality::low
:
107
return
flutter::DlImageSampling::kLinear
;
108
case
FilterQuality::medium
:
109
return
flutter::DlImageSampling::kMipmapLinear
;
110
case
FilterQuality::high
:
111
return
flutter::DlImageSampling::kCubic
;
112
}
113
}
114
}
// namespace Skwasm
115
116
#endif
// FLUTTER_SKWASM_HELPERS_H_
Skwasm::sp_wrapper
Definition
helpers.h:17
Skwasm::sp_wrapper::Raw
T * Raw()
Definition
helpers.h:23
Skwasm::sp_wrapper::sp_wrapper
sp_wrapper(std::shared_ptr< T > ptr)
Definition
helpers.h:19
Skwasm::sp_wrapper::Shared
const std::shared_ptr< T > & Shared()
Definition
helpers.h:21
dl_geometry_types.h
dl_sampling_options.h
Skwasm
Definition
helpers.h:14
Skwasm::FilterModeForQuality
flutter::DlFilterMode FilterModeForQuality(FilterQuality quality)
Definition
helpers.h:90
Skwasm::CreateDlMatrixFrom3x3
flutter::DlMatrix CreateDlMatrixFrom3x3(const flutter::DlScalar *f)
Definition
helpers.h:29
Skwasm::CreateDlRRect
flutter::DlRoundRect CreateDlRRect(const float *f)
Definition
helpers.h:61
Skwasm::CreateSkRRect
SkRRect CreateSkRRect(const SkScalar *f)
Definition
helpers.h:66
Skwasm::SamplingOptionsForQuality
flutter::DlImageSampling SamplingOptionsForQuality(FilterQuality quality)
Definition
helpers.h:101
Skwasm::FilterQuality
FilterQuality
Definition
helpers.h:83
Skwasm::FilterQuality::medium
@ medium
Skwasm::FilterQuality::none
@ none
Skwasm::FilterQuality::low
@ low
Skwasm::FilterQuality::high
@ high
Skwasm::CreateDlRect
flutter::DlRect CreateDlRect(const float *f)
Definition
helpers.h:45
Skwasm::CreateSkMatrix
SkMatrix CreateSkMatrix(const SkScalar *f)
Definition
helpers.h:40
Skwasm::ImageByteFormat
ImageByteFormat
Definition
helpers.h:75
Skwasm::ImageByteFormat::rawRgba
@ rawRgba
Skwasm::ImageByteFormat::rawUnmodified
@ rawUnmodified
Skwasm::ImageByteFormat::png
@ png
Skwasm::ImageByteFormat::rawStraightRgba
@ rawStraightRgba
Skwasm::CreateDlRadii
flutter::DlRoundingRadii CreateDlRadii(const float *f)
Definition
helpers.h:49
flutter::DlScalar
impeller::Scalar DlScalar
Definition
dl_geometry_types.h:17
flutter::DlMatrix
impeller::Matrix DlMatrix
Definition
dl_geometry_types.h:32
flutter::DlFilterMode
DlFilterMode
Definition
dl_sampling_options.h:10
flutter::DlFilterMode::kLinear
@ kLinear
flutter::DlFilterMode::kNearest
@ kNearest
flutter::DlSize
impeller::Size DlSize
Definition
dl_geometry_types.h:25
flutter::DlImageSampling
DlImageSampling
Definition
dl_sampling_options.h:17
flutter::DlImageSampling::kMipmapLinear
@ kMipmapLinear
flutter::DlImageSampling::kCubic
@ kCubic
flutter::DlImageSampling::kLinear
@ kLinear
flutter::DlImageSampling::kNearestNeighbor
@ kNearestNeighbor
std
Definition
ref_ptr.h:261
impeller::Matrix
A 4x4 matrix using column-major storage.
Definition
matrix.h:37
impeller::RoundRect
Definition
round_rect.h:16
impeller::RoundRect::MakeRectRadii
static RoundRect MakeRectRadii(const Rect &rect, const RoundingRadii &radii)
Definition
round_rect.cc:9
impeller::RoundingRadii
Definition
rounding_radii.h:14
impeller::RoundingRadii::top_left
Size top_left
Definition
rounding_radii.h:15
impeller::TRect< Scalar >
impeller::TRect< Scalar >::MakeLTRB
static constexpr TRect MakeLTRB(Type left, Type top, Type right, Type bottom)
Definition
rect.h:129
skwasm
helpers.h
Generated on Wed Dec 31 2025 04:49:51 for Flutter Engine Uber Docs by
1.9.8