blob: f4bf0734b7cfad8ffef0c6c2d5463abefeb6207c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/core/animation/sampled_effect.h"
namespace blink {
SampledEffect::SampledEffect(KeyframeEffect* effect, unsigned sequence_number)
: effect_(effect),
sequence_number_(sequence_number),
priority_(effect->GetPriority()) {}
void SampledEffect::Clear() {
effect_ = nullptr;
interpolations_.clear();
}
// Design doc:
// https://docs.google.com/document/d/1NomOWRrGQHlynQGO64CgdqRPAAEHhi3fSa8sf0Ip6xE
bool SampledEffect::WillNeverChange() const {
return !effect_ || !effect_->HasAnimation();
}
void SampledEffect::RemoveReplacedInterpolations(
const HashSet<PropertyHandle>& replaced_properties) {
auto* new_end = std::remove_if(
interpolations_.begin(), interpolations_.end(),
[&](const auto& interpolation) {
return replaced_properties.Contains(interpolation->GetProperty());
});
interpolations_.Shrink(new_end - interpolations_.begin());
}
void SampledEffect::UpdateReplacedProperties(
HashSet<PropertyHandle>& replaced_properties) {
for (const auto& interpolation : interpolations_) {
if (!interpolation->DependsOnUnderlyingValue())
replaced_properties.insert(interpolation->GetProperty());
}
}
void SampledEffect::Trace(Visitor* visitor) const {
visitor->Trace(effect_);
visitor->Trace(interpolations_);
}
} // namespace blink
|