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/txt/src/txt/font_style.h"
13 #include "flutter/txt/src/txt/font_weight.h"
14 #include "flutter/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);
42 return SkRect::MakeXYWH(rect.
GetX(),
52 return SkPathFillType::kWinding;
54 return SkPathFillType::kEvenOdd;
56 return SkPathFillType::kWinding;
60 return SkIRect::MakeXYWH(rect.
GetX(),
67 template <
class SkiaType,
class OtherType>
68 std::vector<SkiaType>
ToSkiaType(
const std::vector<OtherType>& other_vec) {
69 std::vector<SkiaType> skia_vec;
70 skia_vec.reserve(other_vec.size());
71 for (
const auto& other : other_vec) {
78 return flutter::DlColor::RGBA(color.
red,
86 return SkM44::ColMajor(matrix.
m).asM33();
89 template <
class DlType,
class OtherType>
91 std::vector<DlType> dl_vec;
92 dl_vec.reserve(other_vec.size());
93 for (
const auto& other : other_vec) {
103 return flutter::DlImageSampling::kNearestNeighbor;
105 return flutter::DlImageSampling::kLinear;
107 return flutter::DlImageSampling::kLinear;
113 return flutter::DlBlurStyle::kNormal;
115 return flutter::DlBlurStyle::kSolid;
117 return flutter::DlBlurStyle::kOuter;
119 return flutter::DlBlurStyle::kInner;
121 return flutter::DlBlurStyle::kNormal;
125 using Mode = flutter::DlBlendMode;
134 return Mode::kSrcOver;
136 return Mode::kDstOver;
142 return Mode::kSrcOut;
144 return Mode::kDstOut;
146 return Mode::kSrcATop;
148 return Mode::kDstATop;
154 return Mode::kModulate;
156 return Mode::kScreen;
158 return Mode::kOverlay;
160 return Mode::kDarken;
162 return Mode::kLighten;
164 return Mode::kColorDodge;
166 return Mode::kColorBurn;
168 return Mode::kHardLight;
170 return Mode::kSoftLight;
172 return Mode::kDifference;
174 return Mode::kExclusion;
176 return Mode::kMultiply;
180 return Mode::kSaturation;
184 return Mode::kLuminosity;
186 return Mode::kSrcOver;
190 using Corner = SkRRect::Corner;
191 SkVector sk_radii[4];
197 result.setRectRadii(
ToSkiaType(rect), sk_radii);
203 m.
m[4], m.
m[5], m.
m[6], m.
m[7],
204 m.
m[8], m.
m[9], m.
m[10], m.
m[11],
205 m.
m[12], m.
m[13], m.
m[14], m.
m[15]
220 to.
m[10] = from.
m[10];
221 to.
m[11] = from.
m[11];
222 to.
m[12] = from.
m[12];
223 to.
m[13] = from.
m[13];
224 to.
m[14] = from.
m[14];
225 to.
m[15] = from.
m[15];
233 return Point{point.
x, point.
y};
237 return Size{point.
x, point.
y};
247 return flutter::DlTileMode::kClamp;
249 return flutter::DlTileMode::kRepeat;
251 return flutter::DlTileMode::kMirror;
253 return flutter::DlTileMode::kDecal;
255 return flutter::DlTileMode::kClamp;
280 return flutter::DlClipOp::kDifference;
282 return flutter::DlClipOp::kIntersect;
284 return flutter::DlClipOp::kDifference;
363 return flutter::DlDrawStyle::kFill;
365 return flutter::DlDrawStyle::kStroke;
367 return flutter::DlDrawStyle::kStrokeAndFill;
369 return flutter::DlDrawStyle::kFill;
375 return flutter::DlStrokeCap::kButt;
377 return flutter::DlStrokeCap::kRound;
379 return flutter::DlStrokeCap::kSquare;
381 return flutter::DlStrokeCap::kButt;
387 return flutter::DlStrokeJoin::kMiter;
389 return flutter::DlStrokeJoin::kRound;
391 return flutter::DlStrokeJoin::kBevel;
393 return flutter::DlStrokeJoin::kMiter;
410 switch (color_space) {
412 return flutter::DlColorSpace::kSRGB;
414 return flutter::DlColorSpace::kExtendedSRGB;
416 return flutter::DlColorSpace::kDisplayP3;
418 return flutter::DlColorSpace::kSRGB;
422 return flutter::DlColor(color.
alpha,
433 return txt::FontWeight::w100;
435 return txt::FontWeight::w200;
437 return txt::FontWeight::w300;
439 return txt::FontWeight::w400;
441 return txt::FontWeight::w500;
443 return txt::FontWeight::w600;
445 return txt::FontWeight::w700;
447 return txt::FontWeight::w800;
449 return txt::FontWeight::w900;
451 return txt::FontWeight::w400;
457 return txt::FontStyle::normal;
459 return txt::FontStyle::italic;
461 return txt::FontStyle::normal;
467 return txt::TextAlign::left;
469 return txt::TextAlign::right;
471 return txt::TextAlign::center;
473 return txt::TextAlign::justify;
475 return txt::TextAlign::start;
477 return txt::TextAlign::end;
479 return txt::TextAlign::left;
485 return txt::TextDirection::rtl;
487 return txt::TextDirection::ltr;
489 return txt::TextDirection::ltr;
@ kImpellerFillTypeNonZero
@ kImpellerTextDirectionLTR
@ kImpellerTextDirectionRTL
@ kImpellerTextureSamplingNearestNeighbor
@ kImpellerTextureSamplingLinear
@ kImpellerStrokeJoinRound
@ kImpellerStrokeJoinBevel
@ kImpellerStrokeJoinMiter
@ kImpellerBlendModeSaturation
@ kImpellerBlendModeSoftLight
@ kImpellerBlendModeHardLight
@ kImpellerBlendModeLuminosity
@ kImpellerBlendModeLighten
@ kImpellerBlendModeModulate
@ kImpellerBlendModeSourceIn
@ kImpellerBlendModeDifference
@ kImpellerBlendModeClear
@ kImpellerBlendModeColor
@ kImpellerBlendModeMultiply
@ kImpellerBlendModeSourceATop
@ kImpellerBlendModeDestinationOut
@ kImpellerBlendModeScreen
@ kImpellerBlendModeExclusion
@ kImpellerBlendModeColorBurn
@ kImpellerBlendModeDarken
@ kImpellerBlendModeOverlay
@ kImpellerBlendModeDestinationIn
@ kImpellerBlendModeDestinationATop
@ kImpellerBlendModeDestination
@ kImpellerBlendModeSourceOver
@ kImpellerBlendModeColorDodge
@ kImpellerBlendModeDestinationOver
@ kImpellerBlendModeSource
@ kImpellerBlendModeSourceOut
@ kImpellerStrokeCapRound
@ kImpellerStrokeCapSquare
@ kImpellerDrawStyleStroke
@ kImpellerDrawStyleStrokeAndFill
@ kImpellerColorSpaceExtendedSRGB
@ kImpellerColorSpaceSRGB
@ kImpellerColorSpaceDisplayP3
@ kImpellerTileModeMirror
@ kImpellerTileModeRepeat
@ kImpellerTextAlignmentJustify
@ kImpellerTextAlignmentLeft
@ kImpellerTextAlignmentCenter
@ kImpellerTextAlignmentRight
@ kImpellerTextAlignmentStart
@ kImpellerTextAlignmentEnd
@ kImpellerFontStyleItalic
@ kImpellerFontStyleNormal
@ kImpellerClipOperationIntersect
@ kImpellerClipOperationDifference
@ kImpellerBlurStyleNormal
@ kImpellerBlurStyleOuter
@ kImpellerBlurStyleInner
@ kImpellerBlurStyleSolid
@ kImpellerPixelFormatRGBA8888
constexpr SkVector ToSkiaVector(const Size &point)
constexpr SkMatrix ToSkMatrix(const Matrix &matrix)
constexpr Matrix ToImpellerType(const ImpellerMatrix &m)
constexpr Size ToImpellerSize(const ImpellerPoint &point)
constexpr txt::FontWeight ToTxtType(ImpellerFontWeight weight)
constexpr void FromImpellerType(const Matrix &from, ImpellerMatrix &to)
constexpr flutter::DlColor ToDisplayListType(Color color)
constexpr std::optional< SkRect > ToSkiaType(const ImpellerRect *rect)
PixelFormat
The Pixel formats supported by Impeller. The naming convention denotes the usage of the component,...
ImpellerColorSpace color_space
ImpellerPoint bottom_left
ImpellerPoint bottom_right
A 4x4 matrix using column-major storage.
constexpr Type GetY() const
Returns the Y coordinate of the upper left corner, equivalent to |GetOrigin().y|.
constexpr Type GetHeight() const
Returns the height of the rectangle, equivalent to |GetSize().height|.
constexpr Type GetX() const
Returns the X coordinate of the upper left corner, equivalent to |GetOrigin().x|.
constexpr static TRect MakeXYWH(Type x, Type y, Type width, Type height)
constexpr Type GetWidth() const
Returns the width of the rectangle, equivalent to |GetSize().width|.
static constexpr TSize MakeWH(Type width, Type height)