Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
flutter::SceneBuilder Class Reference

#include <scene_builder.h>

Inheritance diagram for flutter::SceneBuilder:
flutter::RefCountedDartWrappable< SceneBuilder > fml::RefCountedThreadSafe< T > tonic::DartWrappable fml::internal::RefCountedThreadSafeBase

Public Member Functions

 ~SceneBuilder () override
 
void pushTransformHandle (Dart_Handle layer_handle, Dart_Handle matrix4_handle, const fml::RefPtr< EngineLayer > &oldLayer)
 
void pushTransform (Dart_Handle layer_handle, tonic::Float64List &matrix4, const fml::RefPtr< EngineLayer > &oldLayer)
 
void pushOffset (Dart_Handle layer_handle, double dx, double dy, const fml::RefPtr< EngineLayer > &oldLayer)
 
void pushClipRect (Dart_Handle layer_handle, double left, double right, double top, double bottom, int clipBehavior, const fml::RefPtr< EngineLayer > &oldLayer)
 
void pushClipRRect (Dart_Handle layer_handle, const RRect &rrect, int clipBehavior, const fml::RefPtr< EngineLayer > &oldLayer)
 
void pushClipPath (Dart_Handle layer_handle, const CanvasPath *path, int clipBehavior, const fml::RefPtr< EngineLayer > &oldLayer)
 
void pushOpacity (Dart_Handle layer_handle, int alpha, double dx, double dy, const fml::RefPtr< EngineLayer > &oldLayer)
 
void pushColorFilter (Dart_Handle layer_handle, const ColorFilter *color_filter, const fml::RefPtr< EngineLayer > &oldLayer)
 
void pushImageFilter (Dart_Handle layer_handle, const ImageFilter *image_filter, double dx, double dy, const fml::RefPtr< EngineLayer > &oldLayer)
 
void pushBackdropFilter (Dart_Handle layer_handle, ImageFilter *filter, int blendMode, const fml::RefPtr< EngineLayer > &oldLayer)
 
void pushShaderMask (Dart_Handle layer_handle, Shader *shader, double maskRectLeft, double maskRectRight, double maskRectTop, double maskRectBottom, int blendMode, int filterQualityIndex, const fml::RefPtr< EngineLayer > &oldLayer)
 
void addRetained (const fml::RefPtr< EngineLayer > &retainedLayer)
 
void pop ()
 
void addPerformanceOverlay (uint64_t enabledOptions, double left, double right, double top, double bottom)
 
void addPicture (double dx, double dy, Picture *picture, int hints)
 
void addTexture (double dx, double dy, double width, double height, int64_t textureId, bool freeze, int filterQuality)
 
void addPlatformView (double dx, double dy, double width, double height, int64_t viewId)
 
void setRasterizerTracingThreshold (uint32_t frameInterval)
 
void setCheckerboardRasterCacheImages (bool checkerboard)
 
void setCheckerboardOffscreenLayers (bool checkerboard)
 
void build (Dart_Handle scene_handle)
 
const std::vector< std::shared_ptr< ContainerLayer > > & layer_stack ()
 
- Public Member Functions inherited from flutter::RefCountedDartWrappable< SceneBuilder >
virtual void RetainDartWrappableReference () const override
 
virtual void ReleaseDartWrappableReference () const override
 
- Public Member Functions inherited from fml::RefCountedThreadSafe< T >
void Release () const
 
- Public Member Functions inherited from fml::internal::RefCountedThreadSafeBase
void AddRef () const
 
bool HasOneRef () const
 
void AssertHasOneRef () const
 
- Public Member Functions inherited from tonic::DartWrappable
 DartWrappable ()
 
virtual const DartWrapperInfoGetDartWrapperInfo () const =0
 
Dart_Handle CreateDartWrapper (DartState *dart_state)
 
void AssociateWithDartWrapper (Dart_Handle wrappable)
 
void ClearDartWrapper ()
 
Dart_WeakPersistentHandle dart_wrapper () const
 

Static Public Member Functions

static void Create (Dart_Handle wrapper)
 

Additional Inherited Members

- Public Types inherited from tonic::DartWrappable
enum  DartNativeFields { kPeerIndex , kNumberOfNativeFields }
 
- Protected Member Functions inherited from fml::RefCountedThreadSafe< T >
 RefCountedThreadSafe ()
 
 ~RefCountedThreadSafe ()
 
- Protected Member Functions inherited from fml::internal::RefCountedThreadSafeBase
 RefCountedThreadSafeBase ()
 
 ~RefCountedThreadSafeBase ()
 
bool Release () const
 
void Adopt ()
 
- Protected Member Functions inherited from tonic::DartWrappable
virtual ~DartWrappable ()
 
- Static Protected Member Functions inherited from tonic::DartWrappable
static Dart_PersistentHandle GetTypeForWrapper (tonic::DartState *dart_state, const tonic::DartWrapperInfo &wrapper_info)
 

Detailed Description

Definition at line 26 of file scene_builder.h.

Constructor & Destructor Documentation

◆ ~SceneBuilder()

flutter::SceneBuilder::~SceneBuilder ( )
overridedefault

Member Function Documentation

◆ addPerformanceOverlay()

void flutter::SceneBuilder::addPerformanceOverlay ( uint64_t  enabledOptions,
double  left,
double  right,
double  top,
double  bottom 
)

Definition at line 258 of file scene_builder.cc.

262 {
264 SafeNarrow(right), SafeNarrow(bottom));
265 auto layer =
266 std::make_unique<flutter::PerformanceOverlayLayer>(enabledOptions);
267 layer->set_paint_bounds(rect);
268 AddLayer(std::move(layer));
269}
static bool left(const SkPoint &p0, const SkPoint &p1)
static bool right(const SkPoint &p0, const SkPoint &p1)
sk_sp< SkBlender > blender SkRect rect
Definition SkRecords.h:350
static float SafeNarrow(double value)
static constexpr SkRect MakeLTRB(float l, float t, float r, float b)
Definition SkRect.h:646

◆ addPicture()

void flutter::SceneBuilder::addPicture ( double  dx,
double  dy,
Picture picture,
int  hints 
)

Definition at line 213 of file scene_builder.cc.

216 {
217 if (!picture) {
218 // Picture::dispose was called and it has been collected.
219 return;
220 }
221
222 // Explicitly check for display_list, since the picture object might have
223 // been disposed but not collected yet, but the display list is null.
224 if (picture->display_list()) {
225 auto layer = std::make_unique<flutter::DisplayListLayer>(
226 SkPoint::Make(SafeNarrow(dx), SafeNarrow(dy)), picture->display_list(),
227 !!(hints & 1), !!(hints & 2));
228 AddLayer(std::move(layer));
229 }
230}
sk_sp< const SkPicture > picture
Definition SkRecords.h:299
static constexpr SkPoint Make(float x, float y)

◆ addPlatformView()

void flutter::SceneBuilder::addPlatformView ( double  dx,
double  dy,
double  width,
double  height,
int64_t  viewId 
)

Definition at line 247 of file scene_builder.cc.

251 {
252 auto layer = std::make_unique<flutter::PlatformViewLayer>(
255 AddLayer(std::move(layer));
256}
int32_t height
int32_t width
static constexpr SkSize Make(SkScalar w, SkScalar h)
Definition SkSize.h:56

◆ addRetained()

void flutter::SceneBuilder::addRetained ( const fml::RefPtr< EngineLayer > &  retainedLayer)

Definition at line 205 of file scene_builder.cc.

205 {
206 AddLayer(retainedLayer->Layer());
207}

◆ addTexture()

void flutter::SceneBuilder::addTexture ( double  dx,
double  dy,
double  width,
double  height,
int64_t  textureId,
bool  freeze,
int  filterQuality 
)

Definition at line 232 of file scene_builder.cc.

238 {
239 auto sampling = ImageFilter::SamplingFromIndex(filterQualityIndex);
240 auto layer = std::make_unique<flutter::TextureLayer>(
242 SkSize::Make(SafeNarrow(width), SafeNarrow(height)), textureId, freeze,
243 sampling);
244 AddLayer(std::move(layer));
245}
static DlImageSampling SamplingFromIndex(int filterQualityIndex)
SkSamplingOptions sampling
Definition SkRecords.h:337

◆ build()

void flutter::SceneBuilder::build ( Dart_Handle  scene_handle)

Definition at line 283 of file scene_builder.cc.

283 {
284 FML_DCHECK(layer_stack_.size() >= 1);
285
287 scene_handle, std::move(layer_stack_[0]), rasterizer_tracing_threshold_,
288 checkerboard_raster_cache_images_, checkerboard_offscreen_layers_);
289 layer_stack_.clear();
290 ClearDartWrapper(); // may delete this object.
291}
static void create(Dart_Handle scene_handle, std::shared_ptr< flutter::Layer > rootLayer, uint32_t rasterizerTracingThreshold, bool checkerboardRasterCacheImages, bool checkerboardOffscreenLayers)
Definition scene.cc:27
#define FML_DCHECK(condition)
Definition logging.h:103

◆ Create()

static void flutter::SceneBuilder::Create ( Dart_Handle  wrapper)
inlinestatic

Definition at line 31 of file scene_builder.h.

31 {
33 auto res = fml::MakeRefCounted<SceneBuilder>();
34 res->AssociateWithDartWrapper(wrapper);
35 }
static void ThrowIfUIOperationsProhibited()

◆ layer_stack()

const std::vector< std::shared_ptr< ContainerLayer > > & flutter::SceneBuilder::layer_stack ( )
inline

Definition at line 126 of file scene_builder.h.

126 {
127 return layer_stack_;
128 }

◆ pop()

void flutter::SceneBuilder::pop ( )

Definition at line 209 of file scene_builder.cc.

209 {
210 PopLayer();
211}

◆ pushBackdropFilter()

void flutter::SceneBuilder::pushBackdropFilter ( Dart_Handle  layer_handle,
ImageFilter filter,
int  blendMode,
const fml::RefPtr< EngineLayer > &  oldLayer 
)

Definition at line 167 of file scene_builder.cc.

171 {
172 auto layer = std::make_shared<flutter::BackdropFilterLayer>(
173 filter->filter(), static_cast<DlBlendMode>(blendMode));
174 PushLayer(layer);
175 EngineLayer::MakeRetained(layer_handle, layer);
176
177 if (oldLayer && oldLayer->Layer()) {
178 layer->AssignOldLayer(oldLayer->Layer().get());
179 }
180}
static void MakeRetained(Dart_Handle dart_handle, const std::shared_ptr< flutter::ContainerLayer > &layer)
T * get() const
Definition ref_ptr.h:116

◆ pushClipPath()

void flutter::SceneBuilder::pushClipPath ( Dart_Handle  layer_handle,
const CanvasPath path,
int  clipBehavior,
const fml::RefPtr< EngineLayer > &  oldLayer 
)

Definition at line 108 of file scene_builder.cc.

111 {
112 flutter::Clip clip_behavior = static_cast<flutter::Clip>(clipBehavior);
113 FML_DCHECK(clip_behavior != flutter::Clip::kNone);
114 auto layer =
115 std::make_shared<flutter::ClipPathLayer>(path->path(), clip_behavior);
116 PushLayer(layer);
117 EngineLayer::MakeRetained(layer_handle, layer);
118
119 if (oldLayer && oldLayer->Layer()) {
120 layer->AssignOldLayer(oldLayer->Layer().get());
121 }
122}
@ kNone
Definition layer.h:52
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 switches.h:57

◆ pushClipRect()

void flutter::SceneBuilder::pushClipRect ( Dart_Handle  layer_handle,
double  left,
double  right,
double  top,
double  bottom,
int  clipBehavior,
const fml::RefPtr< EngineLayer > &  oldLayer 
)

Definition at line 73 of file scene_builder.cc.

79 {
81 SafeNarrow(right), SafeNarrow(bottom));
82 flutter::Clip clip_behavior = static_cast<flutter::Clip>(clipBehavior);
83 auto layer =
84 std::make_shared<flutter::ClipRectLayer>(clipRect, clip_behavior);
85 PushLayer(layer);
86 EngineLayer::MakeRetained(layer_handle, layer);
87
88 if (oldLayer && oldLayer->Layer()) {
89 layer->AssignOldLayer(oldLayer->Layer().get());
90 }
91}
clipRect(r.rect, r.opAA.op(), r.opAA.aa())) template<> void Draw

◆ pushClipRRect()

void flutter::SceneBuilder::pushClipRRect ( Dart_Handle  layer_handle,
const RRect rrect,
int  clipBehavior,
const fml::RefPtr< EngineLayer > &  oldLayer 
)

Definition at line 93 of file scene_builder.cc.

96 {
97 flutter::Clip clip_behavior = static_cast<flutter::Clip>(clipBehavior);
98 auto layer =
99 std::make_shared<flutter::ClipRRectLayer>(rrect.sk_rrect, clip_behavior);
100 PushLayer(layer);
101 EngineLayer::MakeRetained(layer_handle, layer);
102
103 if (oldLayer && oldLayer->Layer()) {
104 layer->AssignOldLayer(oldLayer->Layer().get());
105 }
106}
SkRRect rrect
Definition SkRecords.h:232

◆ pushColorFilter()

void flutter::SceneBuilder::pushColorFilter ( Dart_Handle  layer_handle,
const ColorFilter color_filter,
const fml::RefPtr< EngineLayer > &  oldLayer 
)

Definition at line 139 of file scene_builder.cc.

141 {
142 auto layer =
143 std::make_shared<flutter::ColorFilterLayer>(color_filter->filter());
144 PushLayer(layer);
145 EngineLayer::MakeRetained(layer_handle, layer);
146
147 if (oldLayer && oldLayer->Layer()) {
148 layer->AssignOldLayer(oldLayer->Layer().get());
149 }
150}
static sk_sp< SkImage > color_filter(const SkImage *image, SkColorFilter *colorFilter)

◆ pushImageFilter()

void flutter::SceneBuilder::pushImageFilter ( Dart_Handle  layer_handle,
const ImageFilter image_filter,
double  dx,
double  dy,
const fml::RefPtr< EngineLayer > &  oldLayer 
)

Definition at line 152 of file scene_builder.cc.

156 {
157 auto layer = std::make_shared<flutter::ImageFilterLayer>(
158 image_filter->filter(), SkPoint::Make(SafeNarrow(dx), SafeNarrow(dy)));
159 PushLayer(layer);
160 EngineLayer::MakeRetained(layer_handle, layer);
161
162 if (oldLayer && oldLayer->Layer()) {
163 layer->AssignOldLayer(oldLayer->Layer().get());
164 }
165}

◆ pushOffset()

void flutter::SceneBuilder::pushOffset ( Dart_Handle  layer_handle,
double  dx,
double  dy,
const fml::RefPtr< EngineLayer > &  oldLayer 
)

Definition at line 59 of file scene_builder.cc.

62 {
64 auto layer = std::make_shared<flutter::TransformLayer>(sk_matrix);
65 PushLayer(layer);
66 EngineLayer::MakeRetained(layer_handle, layer);
67
68 if (oldLayer && oldLayer->Layer()) {
69 layer->AssignOldLayer(oldLayer->Layer().get());
70 }
71}
static SkMatrix Translate(SkScalar dx, SkScalar dy)
Definition SkMatrix.h:91
SkMatrix sk_matrix

◆ pushOpacity()

void flutter::SceneBuilder::pushOpacity ( Dart_Handle  layer_handle,
int  alpha,
double  dx,
double  dy,
const fml::RefPtr< EngineLayer > &  oldLayer 
)

Definition at line 124 of file scene_builder.cc.

128 {
129 auto layer = std::make_shared<flutter::OpacityLayer>(
130 alpha, SkPoint::Make(SafeNarrow(dx), SafeNarrow(dy)));
131 PushLayer(layer);
132 EngineLayer::MakeRetained(layer_handle, layer);
133
134 if (oldLayer && oldLayer->Layer()) {
135 layer->AssignOldLayer(oldLayer->Layer().get());
136 }
137}

◆ pushShaderMask()

void flutter::SceneBuilder::pushShaderMask ( Dart_Handle  layer_handle,
Shader shader,
double  maskRectLeft,
double  maskRectRight,
double  maskRectTop,
double  maskRectBottom,
int  blendMode,
int  filterQualityIndex,
const fml::RefPtr< EngineLayer > &  oldLayer 
)

Definition at line 182 of file scene_builder.cc.

190 {
191 SkRect rect =
192 SkRect::MakeLTRB(SafeNarrow(maskRectLeft), SafeNarrow(maskRectTop),
193 SafeNarrow(maskRectRight), SafeNarrow(maskRectBottom));
194 auto sampling = ImageFilter::SamplingFromIndex(filterQualityIndex);
195 auto layer = std::make_shared<flutter::ShaderMaskLayer>(
196 shader->shader(sampling), rect, static_cast<DlBlendMode>(blendMode));
197 PushLayer(layer);
198 EngineLayer::MakeRetained(layer_handle, layer);
199
200 if (oldLayer && oldLayer->Layer()) {
201 layer->AssignOldLayer(oldLayer->Layer().get());
202 }
203}

◆ pushTransform()

void flutter::SceneBuilder::pushTransform ( Dart_Handle  layer_handle,
tonic::Float64List &  matrix4,
const fml::RefPtr< EngineLayer > &  oldLayer 
)

Definition at line 44 of file scene_builder.cc.

46 {
47 SkM44 sk_matrix = ToSkM44(matrix4);
48 auto layer = std::make_shared<flutter::TransformLayer>(sk_matrix);
49 PushLayer(layer);
50 // matrix4 has to be released before we can return another Dart object
51 matrix4.Release();
52 EngineLayer::MakeRetained(layer_handle, layer);
53
54 if (oldLayer && oldLayer->Layer()) {
55 layer->AssignOldLayer(oldLayer->Layer().get());
56 }
57}
Definition SkM44.h:150
SkM44 ToSkM44(const tonic::Float64List &matrix4)
Definition matrix.cc:21

◆ pushTransformHandle()

void flutter::SceneBuilder::pushTransformHandle ( Dart_Handle  layer_handle,
Dart_Handle  matrix4_handle,
const fml::RefPtr< EngineLayer > &  oldLayer 
)
inline

Definition at line 39 of file scene_builder.h.

41 {
42 tonic::Float64List matrix4(matrix4_handle);
43 pushTransform(layer_handle, matrix4, oldLayer);
44 }
void pushTransform(Dart_Handle layer_handle, tonic::Float64List &matrix4, const fml::RefPtr< EngineLayer > &oldLayer)

◆ setCheckerboardOffscreenLayers()

void flutter::SceneBuilder::setCheckerboardOffscreenLayers ( bool  checkerboard)

Definition at line 279 of file scene_builder.cc.

279 {
280 checkerboard_offscreen_layers_ = checkerboard;
281}
static void checkerboard(SkCanvas *canvas, SkColor c1, SkColor c2, int size)

◆ setCheckerboardRasterCacheImages()

void flutter::SceneBuilder::setCheckerboardRasterCacheImages ( bool  checkerboard)

Definition at line 275 of file scene_builder.cc.

275 {
276 checkerboard_raster_cache_images_ = checkerboard;
277}

◆ setRasterizerTracingThreshold()

void flutter::SceneBuilder::setRasterizerTracingThreshold ( uint32_t  frameInterval)

Definition at line 271 of file scene_builder.cc.

271 {
272 rasterizer_tracing_threshold_ = frameInterval;
273}

The documentation for this class was generated from the following files: