5#ifndef FLUTTER_FLOW_DIFF_CONTEXT_H_
6#define FLUTTER_FLOW_DIFF_CONTEXT_H_
13#include "flutter/flow/paint_region.h"
14#include "flutter/fml/macros.h"
147 int horizontal_clip_alignment = 0,
148 int vertical_clip_alignment = 0)
const;
189 ++different_instance_but_equal_pictures_;
196 int new_pictures_ = 0;
197 int pictures_too_complex_to_compare_ = 0;
198 int same_instance_pictures_ = 0;
199 int deep_compare_pictures_ = 0;
200 int different_instance_but_equal_pictures_ = 0;
213 size_t rect_index = 0;
224 bool integral_transform =
false;
227 int clip_tracker_save_count = 0;
231 bool has_filter_bounds_adjustment =
false;
234 bool has_texture =
false;
237 void MakeCurrentTransformIntegral();
239 DisplayListMatrixClipTracker clip_tracker_;
240 std::shared_ptr<std::vector<SkRect>> rects_;
243 std::vector<State> state_stack_;
244 std::vector<FilterBoundsAdjustment> filter_bounds_adjustment_stack_;
254 bool has_raster_cache_;
255 bool impeller_enabled_;
260 int horizontal_alignment,
261 int vertical_clip_alignment)
const;
275 std::vector<Readback> readbacks_;
276 Statistics statistics_;
static SkPath clip(const SkPath &path, const SkHalfPlane &plane)
AutoSubtreeRestore(DiffContext *context)
void AddSameInstancePicture()
void AddPictureTooComplexToCompare()
void AddDifferentInstanceButEqualPicture()
void AddDeepComparePicture()
SkMatrix GetTransform3x3() const
void PushTransform(const SkMatrix &transform)
void WillPaintWithIntegralTransform()
bool impeller_enabled() const
void AddLayerBounds(const SkRect &rect)
void SetLayerPaintRegion(const Layer *layer, const PaintRegion ®ion)
void MarkSubtreeDirty(const PaintRegion &previous_paint_region=PaintRegion())
Statistics & statistics()
void AddDamage(const PaintRegion &damage)
PaintRegion CurrentSubtreeRegion() const
void AddExistingPaintRegion(const PaintRegion ®ion)
void PushFilterBoundsAdjustment(const FilterBoundsAdjustment &filter)
bool has_raster_cache() const
PaintRegion GetOldLayerPaintRegion(const Layer *layer) const
SkRect MapRect(const SkRect &rect)
bool PushCullRect(const SkRect &clip)
Damage ComputeDamage(const SkIRect &additional_damage, int horizontal_clip_alignment=0, int vertical_clip_alignment=0) const
void MarkSubtreeHasTextureLayer()
bool IsSubtreeDirty() const
void AddReadbackRegion(const SkIRect &paint_rect, const SkIRect &readback_rect)
std::function< SkRect(SkRect)> FilterBoundsAdjustment
SkRect GetCullRect() const
#define FML_DISALLOW_COPY_ASSIGN_AND_MOVE(TypeName)
std::map< uint64_t, PaintRegion > PaintRegionMap
static SkColor4f transform(SkColor4f c, SkColorSpace *src, SkColorSpace *dst)
static constexpr SkRect MakeEmpty()