5#ifndef FLUTTER_FLOW_LAYERS_LAYER_H_
6#define FLUTTER_FLOW_LAYERS_LAYER_H_
10#include <unordered_set>
35class DisplayListLayer;
36class PerformanceOverlayLayer;
133 original_layer_id_ = old_layer->original_layer_id_;
140 return original_layer_id_ == old_layer->original_layer_id_;
166 bool save_layer_is_active =
true,
167 bool layer_itself_performs_readback =
false);
173 bool save_layer_is_active,
174 bool layer_itself_performs_readback);
177 bool save_layer_is_active_;
178 bool layer_itself_performs_readback_;
180 bool prev_surface_needs_readback_;
189 subtree_has_platform_view_ =
value;
219 if (subtree_has_platform_view_) {
257 uint64_t original_layer_id_;
258 bool subtree_has_platform_view_ =
false;
260 static uint64_t NextUniqueID();
void SetLayerPaintRegion(const Layer *layer, const PaintRegion ®ion)
PaintRegion GetOldLayerPaintRegion(const Layer *layer) const
Developer-facing API for rendering anything within the engine.
static AutoPrerollSaveLayerState Create(PrerollContext *preroll_context, bool save_layer_is_active=true, bool layer_itself_performs_readback=false)
~AutoPrerollSaveLayerState()
virtual void Diff(DiffContext *context, const Layer *old_layer)
virtual void Preroll(PrerollContext *context)=0
uint64_t original_layer_id() const
virtual RasterCacheKeyID caching_key_id() const
virtual void PreservePaintRegion(DiffContext *context)
virtual const testing::MockLayer * as_mock_layer() const
static constexpr int kSaveLayerRenderFlags
void set_subtree_has_platform_view(bool value)
void AssignOldLayer(Layer *old_layer)
static constexpr int kRasterCacheRenderFlags
virtual void PaintChildren(PaintContext &context) const
virtual bool IsReplacing(DiffContext *context, const Layer *old_layer) const
virtual const PerformanceOverlayLayer * as_performance_overlay_layer() const
void set_paint_bounds(const DlRect &paint_bounds)
bool subtree_has_platform_view() const
bool needs_painting(PaintContext &context) const
const DlRect & paint_bounds() const
virtual const DisplayListLayer * as_display_list_layer() const
virtual void Paint(PaintContext &context) const =0
virtual const ContainerLayer * as_container_layer() const
virtual const TextureLayer * as_texture_layer() const
uint64_t unique_id() const
bool painting_is_nop() const
bool content_culled(const DlRect &content_bounds) const
static constexpr int kCallerCanApplyColorFilter
static constexpr int kCallerCanApplyImageFilter
static constexpr int kCallerCanApplyOpacity
#define FML_DCHECK(condition)
#define FML_DISALLOW_COPY_AND_ASSIGN(TypeName)
@ kAntiAliasWithSaveLayer
static constexpr DlRect kGiantRect
NOT_SLIMPELLER(const RasterCache *raster_cache)
ExternalViewEmbedder * view_embedder
impeller::AiksContext * aiks_context
bool rendering_above_platform_view
sk_sp< SkColorSpace > dst_color_space
const Stopwatch & raster_time
const Stopwatch & ui_time
std::shared_ptr< TextureRegistry > texture_registry
GrDirectContext * gr_context
LayerStateStack & state_stack
GrDirectContext * gr_context
std::vector< RasterCacheItem * > * raster_cached_entries
std::shared_ptr< TextureRegistry > texture_registry
const Stopwatch & ui_time
const Stopwatch & raster_time
sk_sp< SkColorSpace > dst_color_space
NOT_SLIMPELLER(RasterCache *raster_cache)
LayerStateStack & state_stack
bool surface_needs_readback
int renderable_state_flags
ExternalViewEmbedder * view_embedder
constexpr bool IsEmpty() const
Returns true if either of the width or height are 0, negative, or NaN.
static constexpr TRect MakeLTRB(Type left, Type top, Type right, Type bottom)