19 transformed_filter_(nullptr) {}
26 if (
NotEquals(filter_, prev->filter_) || offset_ != prev->offset_) {
37 auto filter = filter_->makeWithLocalMatrix(context->
GetMatrix());
69 child_bounds = child_bounds.
Shift(offset_);
83 filter_->map_device_bounds(filter_in_bounds,
DlMatrix(), filter_out_bounds);
98 if (transformed_filter_) {
110 if (context.raster_cache) {
125 mutator.translate(offset_);
128 if (context.raster_cache) {
129 mutator.integralTransform();
std::unique_ptr< LayerRasterCacheItem > layer_raster_cache_item_
const DlRect & child_paint_bounds() const
void PrerollChildren(PrerollContext *context, DlRect *child_paint_bounds)
void PaintChildren(PaintContext &context) const override
virtual void DiffChildren(DiffContext *context, const ContainerLayer *old_layer)
void WillPaintWithIntegralTransform()
void SetLayerPaintRegion(const Layer *layer, const PaintRegion ®ion)
void MarkSubtreeDirty(const PaintRegion &previous_paint_region=PaintRegion())
PaintRegion CurrentSubtreeRegion() const
void PushFilterBoundsAdjustment(const FilterBoundsAdjustment &filter)
bool has_raster_cache() const
PaintRegion GetOldLayerPaintRegion(const Layer *layer) const
const DlMatrix & GetMatrix() const
bool IsSubtreeDirty() const
void PushTransform(const DlMatrix &transform)
DlPaint & setImageFilter(std::nullptr_t filter)
void Diff(DiffContext *context, const Layer *old_layer) override
void Paint(PaintContext &context) const override
void Preroll(PrerollContext *context) override
ImageFilterLayer(const std::shared_ptr< DlImageFilter > &filter, const DlPoint &offset=DlPoint())
static AutoPrerollSaveLayerState Create(PrerollContext *preroll_context, bool save_layer_is_active=true, bool layer_itself_performs_readback=false)
void set_paint_bounds(const DlRect &paint_bounds)
bool needs_painting(PaintContext &context) const
void translate(DlScalar tx, DlScalar ty)
void fill(MutatorsStack *mutators)
static constexpr int kCallerCanApplyColorFilter
const DlMatrix matrix() const
static constexpr int kCallerCanApplyOpacity
#define FML_DCHECK(condition)
impeller::Matrix DlMatrix
bool NotEquals(const T *a, const U *b)
LayerStateStack & state_stack
LayerStateStack & state_stack
int renderable_state_flags
static constexpr Matrix MakeTranslation(const Vector3 &t)
static constexpr std::enable_if_t< std::is_floating_point_v< FT >, TRect > Make(const TRect< U > &rect)
RoundOut(const TRect< U > &r)
constexpr TRect< T > Shift(T dx, T dy) const
Returns a new rectangle translated by the given offset.