mirror of
https://github.com/servo/servo.git
synced 2025-08-07 14:35:33 +01:00
Bug 1317209 - Part 2: Implement interpolate FFI. r=manishearth
This commit is contained in:
parent
4f0791a94b
commit
1f1c67f485
2 changed files with 23 additions and 1 deletions
|
@ -1220,6 +1220,12 @@ extern "C" {
|
||||||
ServoComputedValuesBorrowed)
|
ServoComputedValuesBorrowed)
|
||||||
-> ServoComputedValuesStrong;
|
-> ServoComputedValuesStrong;
|
||||||
}
|
}
|
||||||
|
extern "C" {
|
||||||
|
pub fn Servo_AnimationValues_Interpolate(from: RawServoAnimationValueBorrowed,
|
||||||
|
to: RawServoAnimationValueBorrowed,
|
||||||
|
progress: f64)
|
||||||
|
-> RawServoAnimationValueStrong;
|
||||||
|
}
|
||||||
extern "C" {
|
extern "C" {
|
||||||
pub fn Servo_AnimationValues_Uncompute(value: RawServoAnimationValueBorrowedListBorrowed)
|
pub fn Servo_AnimationValues_Uncompute(value: RawServoAnimationValueBorrowedListBorrowed)
|
||||||
-> RawServoDeclarationBlockStrong;
|
-> RawServoDeclarationBlockStrong;
|
||||||
|
|
|
@ -40,6 +40,7 @@ use style::gecko_bindings::bindings::RawGeckoElementBorrowed;
|
||||||
use style::gecko_bindings::bindings::RawGeckoPresContextBorrowed;
|
use style::gecko_bindings::bindings::RawGeckoPresContextBorrowed;
|
||||||
use style::gecko_bindings::bindings::RawServoAnimationValueBorrowed;
|
use style::gecko_bindings::bindings::RawServoAnimationValueBorrowed;
|
||||||
use style::gecko_bindings::bindings::RawServoAnimationValueBorrowedListBorrowed;
|
use style::gecko_bindings::bindings::RawServoAnimationValueBorrowedListBorrowed;
|
||||||
|
use style::gecko_bindings::bindings::RawServoAnimationValueStrong;
|
||||||
use style::gecko_bindings::bindings::RawServoImportRuleBorrowed;
|
use style::gecko_bindings::bindings::RawServoImportRuleBorrowed;
|
||||||
use style::gecko_bindings::bindings::ServoComputedValuesBorrowedOrNull;
|
use style::gecko_bindings::bindings::ServoComputedValuesBorrowedOrNull;
|
||||||
use style::gecko_bindings::bindings::nsTArrayBorrowed_uintptr_t;
|
use style::gecko_bindings::bindings::nsTArrayBorrowed_uintptr_t;
|
||||||
|
@ -59,7 +60,7 @@ use style::parser::{ParserContext, ParserContextExtraData};
|
||||||
use style::properties::{CascadeFlags, ComputedValues, Importance, PropertyDeclaration};
|
use style::properties::{CascadeFlags, ComputedValues, Importance, PropertyDeclaration};
|
||||||
use style::properties::{PropertyDeclarationParseResult, PropertyDeclarationBlock, PropertyId};
|
use style::properties::{PropertyDeclarationParseResult, PropertyDeclarationBlock, PropertyId};
|
||||||
use style::properties::{apply_declarations, parse_one_declaration};
|
use style::properties::{apply_declarations, parse_one_declaration};
|
||||||
use style::properties::animated_properties::AnimationValue;
|
use style::properties::animated_properties::{AnimationValue, Interpolate};
|
||||||
use style::restyle_hints::RestyleHint;
|
use style::restyle_hints::RestyleHint;
|
||||||
use style::selector_parser::PseudoElementCascadeType;
|
use style::selector_parser::PseudoElementCascadeType;
|
||||||
use style::sequential;
|
use style::sequential;
|
||||||
|
@ -161,6 +162,21 @@ pub extern "C" fn Servo_TraverseSubtree(root: RawGeckoElementBorrowed,
|
||||||
behavior == structs::TraversalRootBehavior::UnstyledChildrenOnly);
|
behavior == structs::TraversalRootBehavior::UnstyledChildrenOnly);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[no_mangle]
|
||||||
|
pub extern "C" fn Servo_AnimationValues_Interpolate(from: RawServoAnimationValueBorrowed,
|
||||||
|
to: RawServoAnimationValueBorrowed,
|
||||||
|
progress: f64)
|
||||||
|
-> RawServoAnimationValueStrong
|
||||||
|
{
|
||||||
|
let from_value = AnimationValue::as_arc(&from);
|
||||||
|
let to_value = AnimationValue::as_arc(&to);
|
||||||
|
if let Ok(value) = from_value.interpolate(to_value, progress) {
|
||||||
|
Arc::new(value).into_strong()
|
||||||
|
} else {
|
||||||
|
RawServoAnimationValueStrong::null()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn Servo_AnimationValues_Uncompute(value: RawServoAnimationValueBorrowedListBorrowed)
|
pub extern "C" fn Servo_AnimationValues_Uncompute(value: RawServoAnimationValueBorrowedListBorrowed)
|
||||||
-> RawServoDeclarationBlockStrong
|
-> RawServoDeclarationBlockStrong
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue