@@ -153,10 +153,6 @@ void FilterContents::SetInputs(FilterInput::Vector inputs) {
153153 inputs_ = std::move (inputs);
154154}
155155
156- void FilterContents::SetCoverageCrop (std::optional<Rect> coverage_crop) {
157- coverage_crop_ = coverage_crop;
158- }
159-
160156void FilterContents::SetEffectTransform (Matrix effect_transform) {
161157 effect_transform_ = effect_transform;
162158}
@@ -171,7 +167,7 @@ bool FilterContents::Render(const ContentContext& renderer,
171167
172168 // Run the filter.
173169
174- auto maybe_entity = GetEntity (renderer, entity);
170+ auto maybe_entity = GetEntity (renderer, entity, GetCoverageHint () );
175171 if (!maybe_entity.has_value ()) {
176172 return true ;
177173 }
@@ -181,8 +177,8 @@ bool FilterContents::Render(const ContentContext& renderer,
181177std::optional<Rect> FilterContents::GetLocalCoverage (
182178 const Entity& local_entity) const {
183179 auto coverage = GetFilterCoverage (inputs_, local_entity, effect_transform_);
184- if (coverage_crop_ .has_value () && coverage.has_value ()) {
185- coverage = coverage->Intersection (coverage_crop_. value ());
180+ if (GetCoverageHint () .has_value () && coverage.has_value ()) {
181+ coverage = coverage->Intersection (* GetCoverageHint ());
186182 }
187183
188184 return coverage;
@@ -223,8 +219,10 @@ std::optional<Rect> FilterContents::GetFilterCoverage(
223219 return result;
224220}
225221
226- std::optional<Entity> FilterContents::GetEntity (const ContentContext& renderer,
227- const Entity& entity) const {
222+ std::optional<Entity> FilterContents::GetEntity (
223+ const ContentContext& renderer,
224+ const Entity& entity,
225+ const std::optional<Rect>& coverage_hint) const {
228226 Entity entity_with_local_transform = entity;
229227 entity_with_local_transform.SetTransformation (
230228 GetTransform (entity.GetTransformation ()));
@@ -235,7 +233,7 @@ std::optional<Entity> FilterContents::GetEntity(const ContentContext& renderer,
235233 }
236234
237235 return RenderFilter (inputs_, renderer, entity_with_local_transform,
238- effect_transform_, coverage.value ());
236+ effect_transform_, coverage.value (), coverage_hint );
239237}
240238
241239std::optional<Snapshot> FilterContents::RenderToSnapshot (
@@ -247,12 +245,13 @@ std::optional<Snapshot> FilterContents::RenderToSnapshot(
247245 const std::string& label) const {
248246 // Resolve the render instruction (entity) from the filter and render it to a
249247 // snapshot.
250- if (std::optional<Entity> result = GetEntity (renderer, entity);
248+ if (std::optional<Entity> result =
249+ GetEntity (renderer, entity, coverage_limit);
251250 result.has_value ()) {
252251 return result->GetContents ()->RenderToSnapshot (
253252 renderer, // renderer
254253 result.value (), // entity
255- std:: nullopt , // coverage_limit
254+ coverage_limit, // coverage_limit
256255 std::nullopt , // sampler_descriptor
257256 true , // msaa_enabled
258257 label); // label
0 commit comments