Better computation of animation keyframes

This begins to address #26625 by properly applying CSS variables during
keyframe computation and no longer using `apply_declarations`. Instead,
walk the declarations, combining them into IntermediateComputedKeyframe,
maintaining declarations that modify CSS custom properties. Then compute
a set of AnimationValues for each keyframe and use those to produce
interpolated animation values.
This commit is contained in:
Martin Robinson 2020-05-26 19:42:28 +02:00
parent 83fa1b9eaa
commit b875f14e86
69 changed files with 269 additions and 1609 deletions

View file

@ -17,7 +17,7 @@ use crate::font_metrics::FontMetricsProvider;
use crate::media_queries::Device;
use crate::properties::{AnimationRules, ComputedValues, PropertyDeclarationBlock};
use crate::selector_parser::{AttrValue, Lang, PseudoElement, SelectorImpl};
use crate::shared_lock::Locked;
use crate::shared_lock::{Locked, SharedRwLock};
use crate::stylist::CascadeData;
use crate::traversal_flags::TraversalFlags;
use crate::{Atom, LocalName, Namespace, WeakAtom};
@ -128,6 +128,9 @@ pub trait TDocument: Sized + Copy + Clone {
{
Err(())
}
/// This document's shared lock.
fn shared_lock(&self) -> &SharedRwLock;
}
/// The `TNode` trait. This is the main generic trait over which the style