 |
Flutter Impeller
|
|
Go to the documentation of this file.
5 #ifndef FLUTTER_IMPELLER_TOOLKIT_INTEROP_FORMATS_H_
6 #define FLUTTER_IMPELLER_TOOLKIT_INTEROP_FORMATS_H_
10 #include "flutter/display_list/dl_builder.h"
11 #include "flutter/display_list/dl_color.h"
12 #include "flutter/third_party/txt/src/txt/font_style.h"
13 #include "flutter/third_party/txt/src/txt/font_weight.h"
14 #include "flutter/third_party/txt/src/txt/paragraph_style.h"
30 return SkRect::MakeXYWH(rect->
x, rect->
y, rect->
width, rect->
height);
34 return SkPoint::Make(point.
x, point.
y);
38 return SkRect::MakeXYWH(rect.
GetX(),
48 return SkPathFillType::kWinding;
50 return SkPathFillType::kEvenOdd;
52 return SkPathFillType::kWinding;
56 return SkIRect::MakeXYWH(rect.
GetX(),
63 template <
class SkiaType,
class OtherType>
64 std::vector<SkiaType>
ToSkiaType(
const std::vector<OtherType>& other_vec) {
65 std::vector<SkiaType> skia_vec;
66 skia_vec.reserve(other_vec.size());
67 for (
const auto& other : other_vec) {
74 return flutter::DlColor::RGBA(
color.red,
82 return SkM44::ColMajor(matrix.
m).asM33();
85 template <
class DlType,
class OtherType>
87 std::vector<DlType> dl_vec;
88 dl_vec.reserve(other_vec.size());
89 for (
const auto& other : other_vec) {
99 return flutter::DlImageSampling::kNearestNeighbor;
101 return flutter::DlImageSampling::kLinear;
103 return flutter::DlImageSampling::kLinear;
109 return flutter::DlBlurStyle::kNormal;
111 return flutter::DlBlurStyle::kSolid;
113 return flutter::DlBlurStyle::kOuter;
115 return flutter::DlBlurStyle::kInner;
117 return flutter::DlBlurStyle::kNormal;
121 using Mode = flutter::DlBlendMode;
130 return Mode::kSrcOver;
132 return Mode::kDstOver;
138 return Mode::kSrcOut;
140 return Mode::kDstOut;
142 return Mode::kSrcATop;
144 return Mode::kDstATop;
150 return Mode::kModulate;
152 return Mode::kScreen;
154 return Mode::kOverlay;
156 return Mode::kDarken;
158 return Mode::kLighten;
160 return Mode::kColorDodge;
162 return Mode::kColorBurn;
164 return Mode::kHardLight;
166 return Mode::kSoftLight;
168 return Mode::kDifference;
170 return Mode::kExclusion;
172 return Mode::kMultiply;
176 return Mode::kSaturation;
180 return Mode::kLuminosity;
182 return Mode::kSrcOver;
187 using Corner = SkRRect::Corner;
188 SkVector sk_radii[4];
194 result.setRectRadii(
ToSkiaType(rect), sk_radii);
200 m.
m[4], m.
m[5], m.
m[6], m.
m[7],
201 m.
m[8], m.
m[9], m.
m[10], m.
m[11],
202 m.
m[12], m.
m[13], m.
m[14], m.
m[15]
217 to.
m[10] = from.
m[10];
218 to.
m[11] = from.
m[11];
219 to.
m[12] = from.
m[12];
220 to.
m[13] = from.
m[13];
221 to.
m[14] = from.
m[14];
222 to.
m[15] = from.
m[15];
230 return Point{point.
x, point.
y};
240 return flutter::DlTileMode::kClamp;
242 return flutter::DlTileMode::kRepeat;
244 return flutter::DlTileMode::kMirror;
246 return flutter::DlTileMode::kDecal;
248 return flutter::DlTileMode::kClamp;
274 return flutter::DlCanvas::ClipOp::kDifference;
276 return flutter::DlCanvas::ClipOp::kIntersect;
278 return flutter::DlCanvas::ClipOp::kDifference;
357 return flutter::DlDrawStyle::kFill;
359 return flutter::DlDrawStyle::kStroke;
361 return flutter::DlDrawStyle::kStrokeAndFill;
363 return flutter::DlDrawStyle::kFill;
369 return flutter::DlStrokeCap::kButt;
371 return flutter::DlStrokeCap::kRound;
373 return flutter::DlStrokeCap::kSquare;
375 return flutter::DlStrokeCap::kButt;
381 return flutter::DlStrokeJoin::kMiter;
383 return flutter::DlStrokeJoin::kRound;
385 return flutter::DlStrokeJoin::kBevel;
387 return flutter::DlStrokeJoin::kMiter;
404 switch (color_space) {
406 return flutter::DlColorSpace::kSRGB;
408 return flutter::DlColorSpace::kExtendedSRGB;
410 return flutter::DlColorSpace::kDisplayP3;
412 return flutter::DlColorSpace::kSRGB;
416 return flutter::DlColor(
color.alpha,
427 return txt::FontWeight::w100;
429 return txt::FontWeight::w200;
431 return txt::FontWeight::w300;
433 return txt::FontWeight::w400;
435 return txt::FontWeight::w500;
437 return txt::FontWeight::w600;
439 return txt::FontWeight::w700;
441 return txt::FontWeight::w800;
443 return txt::FontWeight::w900;
445 return txt::FontWeight::w400;
451 return txt::FontStyle::normal;
453 return txt::FontStyle::italic;
455 return txt::FontStyle::normal;
461 return txt::TextAlign::left;
463 return txt::TextAlign::right;
465 return txt::TextAlign::center;
467 return txt::TextAlign::justify;
469 return txt::TextAlign::start;
471 return txt::TextAlign::end;
473 return txt::TextAlign::left;
479 return txt::TextDirection::rtl;
481 return txt::TextDirection::ltr;
483 return txt::TextDirection::ltr;
488 #endif // FLUTTER_IMPELLER_TOOLKIT_INTEROP_FORMATS_H_
@ kImpellerBlendModeColorBurn
constexpr flutter::DlColor ToDisplayListType(Color color)
@ kImpellerStrokeCapSquare
@ kImpellerBlendModeExclusion
@ kImpellerTextAlignmentLeft
@ kImpellerBlendModeColor
@ kImpellerTextAlignmentRight
@ kImpellerStrokeJoinRound
@ kImpellerBlendModeDestinationOver
@ kImpellerTextAlignmentEnd
constexpr void FromImpellerType(const Matrix &from, ImpellerMatrix &to)
constexpr static TRect MakeXYWH(Type x, Type y, Type width, Type height)
@ kImpellerBlendModeDestinationOut
@ kImpellerBlendModeHardLight
@ kImpellerFontStyleNormal
@ kImpellerBlendModeDifference
@ kImpellerTextAlignmentStart
@ kImpellerColorSpaceDisplayP3
@ kImpellerBlurStyleOuter
constexpr Type GetX() const
Returns the X coordinate of the upper left corner, equivalent to |GetOrigin().x|.
constexpr Type GetHeight() const
Returns the height of the rectangle, equivalent to |GetSize().height|.
@ kImpellerBlurStyleInner
@ kImpellerBlurStyleSolid
PixelFormat
The Pixel formats supported by Impeller. The naming convention denotes the usage of the component,...
@ kImpellerBlendModeSoftLight
@ kImpellerBlendModeSourceOver
@ kImpellerClipOperationDifference
constexpr txt::FontWeight ToTxtType(ImpellerFontWeight weight)
@ kImpellerTextDirectionRTL
constexpr std::optional< SkRect > ToSkiaType(const ImpellerRect *rect)
@ kImpellerPixelFormatRGBA8888
@ kImpellerClipOperationIntersect
constexpr Type GetWidth() const
Returns the width of the rectangle, equivalent to |GetSize().width|.
@ kImpellerBlendModeOverlay
@ kImpellerBlendModeSourceATop
@ kImpellerBlendModeSourceOut
@ kImpellerDrawStyleStroke
@ kImpellerBlendModeSource
@ kImpellerBlendModeDestinationATop
@ kImpellerBlendModeMultiply
@ kImpellerTextAlignmentJustify
@ kImpellerBlendModeDarken
@ kImpellerStrokeJoinBevel
ImpellerPoint bottom_left
constexpr Matrix ToImpellerType(const ImpellerMatrix &m)
@ kImpellerTileModeMirror
@ kImpellerBlendModeDestination
@ kImpellerBlendModeDestinationIn
@ kImpellerBlendModeScreen
@ kImpellerStrokeCapRound
@ kImpellerBlendModeLighten
@ kImpellerBlendModeModulate
@ kImpellerBlendModeClear
@ kImpellerFontStyleItalic
@ kImpellerStrokeJoinMiter
@ kImpellerTextureSamplingLinear
@ kImpellerFillTypeNonZero
@ kImpellerTileModeRepeat
@ kImpellerColorSpaceExtendedSRGB
@ kImpellerBlendModeColorDodge
@ kImpellerBlendModeSourceIn
static constexpr TSize MakeWH(Type width, Type height)
@ kImpellerBlendModeLuminosity
constexpr SkMatrix ToSkMatrix(const Matrix &matrix)
@ kImpellerTextAlignmentCenter
constexpr Type GetY() const
Returns the Y coordinate of the upper left corner, equivalent to |GetOrigin().y|.
@ kImpellerBlurStyleNormal
@ kImpellerColorSpaceSRGB
A 4x4 matrix using column-major storage.
@ kImpellerBlendModeSaturation
@ kImpellerTextDirectionLTR
ImpellerPoint bottom_right
@ kImpellerTextureSamplingNearestNeighbor
@ kImpellerDrawStyleStrokeAndFill