Flutter Engine
 
Loading...
Searching...
No Matches
dl_sk_dispatcher.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_DISPLAY_LIST_SKIA_DL_SK_DISPATCHER_H_
6#define FLUTTER_DISPLAY_LIST_SKIA_DL_SK_DISPATCHER_H_
7
12#include "flutter/fml/macros.h"
13
14namespace flutter {
15
16//------------------------------------------------------------------------------
17/// @brief Backend implementation of |DlOpReceiver| for |SkCanvas|.
18///
19/// @see DlOpReceiver
20class DlSkCanvasDispatcher : public virtual DlOpReceiver,
22 public:
23 explicit DlSkCanvasDispatcher(SkCanvas* canvas, DlScalar opacity = SK_Scalar1)
25 canvas_(canvas),
26 original_transform_(canvas->getLocalToDevice()) {}
27
28 const SkPaint* safe_paint(bool use_attributes);
29
30 void save() override;
31 void restore() override;
32 void saveLayer(const DlRect& bounds,
33 const SaveLayerOptions options,
34 const DlImageFilter* backdrop,
35 std::optional<int64_t> backdrop_id) override;
36
37 void translate(DlScalar tx, DlScalar ty) override;
38 void scale(DlScalar sx, DlScalar sy) override;
39 void rotate(DlScalar degrees) override;
40 void skew(DlScalar sx, DlScalar sy) override;
41 // clang-format off
42 // 2x3 2D affine subset of a 4x4 transform in row major order
44 DlScalar myx, DlScalar myy, DlScalar myt) override;
45 // full 4x4 transform in row major order
47 DlScalar mxx, DlScalar mxy, DlScalar mxz, DlScalar mxt,
48 DlScalar myx, DlScalar myy, DlScalar myz, DlScalar myt,
49 DlScalar mzx, DlScalar mzy, DlScalar mzz, DlScalar mzt,
50 DlScalar mwx, DlScalar mwy, DlScalar mwz, DlScalar mwt) override;
51 // clang-format on
52 void transformReset() override;
53
54 void clipRect(const DlRect& rect, DlClipOp clip_op, bool is_aa) override;
55 void clipOval(const DlRect& bounds, DlClipOp clip_op, bool is_aa) override;
56 void clipRoundRect(const DlRoundRect& rrect,
57 DlClipOp clip_op,
58 bool is_aa) override;
60 DlClipOp clip_op,
61 bool is_aa) override;
62 void clipPath(const DlPath& path, DlClipOp clip_op, bool is_aa) override;
63
64 void drawPaint() override;
65 void drawColor(DlColor color, DlBlendMode mode) override;
66 void drawLine(const DlPoint& p0, const DlPoint& p1) override;
67 void drawDashedLine(const DlPoint& p0,
68 const DlPoint& p1,
69 DlScalar on_length,
70 DlScalar off_length) override;
71 void drawRect(const DlRect& rect) override;
72 void drawOval(const DlRect& bounds) override;
73 void drawCircle(const DlPoint& center, DlScalar radius) override;
74 void drawRoundRect(const DlRoundRect& rrect) override;
75 void drawDiffRoundRect(const DlRoundRect& outer,
76 const DlRoundRect& inner) override;
77 void drawRoundSuperellipse(const DlRoundSuperellipse& rse) override;
78 void drawPath(const DlPath& path) override;
79 void drawArc(const DlRect& bounds,
80 DlScalar start,
81 DlScalar sweep,
82 bool useCenter) override;
83 void drawPoints(DlPointMode mode,
84 uint32_t count,
85 const DlPoint pts[]) override;
86 void drawVertices(const std::shared_ptr<DlVertices>& vertices,
87 DlBlendMode mode) override;
88 void drawImage(const sk_sp<DlImage> image,
89 const DlPoint& point,
90 DlImageSampling sampling,
91 bool render_with_attributes) override;
92 void drawImageRect(const sk_sp<DlImage> image,
93 const DlRect& src,
94 const DlRect& dst,
95 DlImageSampling sampling,
96 bool render_with_attributes,
97 DlSrcRectConstraint constraint) override;
98 void drawImageNine(const sk_sp<DlImage> image,
99 const DlIRect& center,
100 const DlRect& dst,
101 DlFilterMode filter,
102 bool render_with_attributes) override;
103 void drawAtlas(const sk_sp<DlImage> atlas,
104 const DlRSTransform xform[],
105 const DlRect tex[],
106 const DlColor colors[],
107 int count,
108 DlBlendMode mode,
109 DlImageSampling sampling,
110 const DlRect* cullRect,
111 bool render_with_attributes) override;
112 void drawDisplayList(const sk_sp<DisplayList> display_list,
113 DlScalar opacity) override;
114 void drawText(const std::shared_ptr<DlText>& text,
115 DlScalar x,
116 DlScalar y) override;
117 void drawShadow(const DlPath& path,
118 const DlColor color,
119 const DlScalar elevation,
120 bool transparent_occluder,
121 DlScalar dpr) override;
122
123 static void DrawShadow(SkCanvas* canvas,
124 const SkPath& path,
125 DlColor color,
126 float elevation,
127 bool transparentOccluder,
128 DlScalar dpr);
129
130 private:
131 SkCanvas* canvas_;
132 const SkM44 original_transform_;
133 SkPaint temp_paint_;
134};
135
136} // namespace flutter
137
138#endif // FLUTTER_DISPLAY_LIST_SKIA_DL_SK_DISPATCHER_H_
Internal API for rendering recorded display lists to backends.
Backend implementation of |DlOpReceiver| for |SkCanvas|.
void transform2DAffine(DlScalar mxx, DlScalar mxy, DlScalar mxt, DlScalar myx, DlScalar myy, DlScalar myt) override
void drawImage(const sk_sp< DlImage > image, const DlPoint &point, DlImageSampling sampling, bool render_with_attributes) override
void transformFullPerspective(DlScalar mxx, DlScalar mxy, DlScalar mxz, DlScalar mxt, DlScalar myx, DlScalar myy, DlScalar myz, DlScalar myt, DlScalar mzx, DlScalar mzy, DlScalar mzz, DlScalar mzt, DlScalar mwx, DlScalar mwy, DlScalar mwz, DlScalar mwt) override
DlSkCanvasDispatcher(SkCanvas *canvas, DlScalar opacity=SK_Scalar1)
void drawArc(const DlRect &bounds, DlScalar start, DlScalar sweep, bool useCenter) override
void drawImageRect(const sk_sp< DlImage > image, const DlRect &src, const DlRect &dst, DlImageSampling sampling, bool render_with_attributes, DlSrcRectConstraint constraint) override
void drawDashedLine(const DlPoint &p0, const DlPoint &p1, DlScalar on_length, DlScalar off_length) override
void drawVertices(const std::shared_ptr< DlVertices > &vertices, DlBlendMode mode) override
const SkPaint * safe_paint(bool use_attributes)
void saveLayer(const DlRect &bounds, const SaveLayerOptions options, const DlImageFilter *backdrop, std::optional< int64_t > backdrop_id) override
void drawRect(const DlRect &rect) override
void clipRect(const DlRect &rect, DlClipOp clip_op, bool is_aa) override
void rotate(DlScalar degrees) override
void drawText(const std::shared_ptr< DlText > &text, DlScalar x, DlScalar y) override
void drawCircle(const DlPoint &center, DlScalar radius) override
void drawAtlas(const sk_sp< DlImage > atlas, const DlRSTransform xform[], const DlRect tex[], const DlColor colors[], int count, DlBlendMode mode, DlImageSampling sampling, const DlRect *cullRect, bool render_with_attributes) override
void drawLine(const DlPoint &p0, const DlPoint &p1) override
void drawImageNine(const sk_sp< DlImage > image, const DlIRect &center, const DlRect &dst, DlFilterMode filter, bool render_with_attributes) override
void drawColor(DlColor color, DlBlendMode mode) override
void drawPoints(DlPointMode mode, uint32_t count, const DlPoint pts[]) override
void skew(DlScalar sx, DlScalar sy) override
void drawShadow(const DlPath &path, const DlColor color, const DlScalar elevation, bool transparent_occluder, DlScalar dpr) override
static void DrawShadow(SkCanvas *canvas, const SkPath &path, DlColor color, float elevation, bool transparentOccluder, DlScalar dpr)
void drawRoundSuperellipse(const DlRoundSuperellipse &rse) override
void clipOval(const DlRect &bounds, DlClipOp clip_op, bool is_aa) override
void drawRoundRect(const DlRoundRect &rrect) override
void drawPath(const DlPath &path) override
void drawOval(const DlRect &bounds) override
void drawDisplayList(const sk_sp< DisplayList > display_list, DlScalar opacity) override
void clipRoundRect(const DlRoundRect &rrect, DlClipOp clip_op, bool is_aa) override
void scale(DlScalar sx, DlScalar sy) override
void clipPath(const DlPath &path, DlClipOp clip_op, bool is_aa) override
void clipRoundSuperellipse(const DlRoundSuperellipse &rse, DlClipOp clip_op, bool is_aa) override
void translate(DlScalar tx, DlScalar ty) override
void drawDiffRoundRect(const DlRoundRect &outer, const DlRoundRect &inner) override
int32_t x
FlutterVulkanImage * image
std::u16string text
double y
impeller::Scalar DlScalar
DlPointMode
Definition dl_types.h:15
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition switch_defs.h:52
DlSrcRectConstraint
Definition dl_types.h:21
BlendMode
Definition color.h:58