mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 07:52:45 +00:00 
			
		
		
		
	 13ae2a4dab
			
		
	
	
		13ae2a4dab
		
	
	
	
	
		
			
			This will be required for propagating the current animation time to all relevant timelines, which each propagate that time to all of their relevant animations.
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2023, Matthew Olsson <mattco@serenityos.org>.
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <LibWeb/Bindings/PlatformObject.h>
 | |
| 
 | |
| namespace Web::Animations {
 | |
| 
 | |
| // https://www.w3.org/TR/web-animations-1/#animationtimeline
 | |
| class AnimationTimeline : public Bindings::PlatformObject {
 | |
|     WEB_PLATFORM_OBJECT(AnimationTimeline, Bindings::PlatformObject);
 | |
| 
 | |
| public:
 | |
|     Optional<double> current_time() const { return m_current_time; }
 | |
|     virtual WebIDL::ExceptionOr<void> set_current_time(Optional<double>);
 | |
| 
 | |
|     JS::GCPtr<DOM::Document> associated_document() const { return m_associated_document; }
 | |
|     void set_associated_document(JS::GCPtr<DOM::Document>);
 | |
| 
 | |
|     virtual bool is_inactive() const;
 | |
|     bool is_monotonically_increasing() const { return m_is_monotonically_increasing; }
 | |
| 
 | |
|     // https://www.w3.org/TR/web-animations-1/#timeline-time-to-origin-relative-time
 | |
|     virtual Optional<double> convert_a_timeline_time_to_an_original_relative_time(Optional<double>) { VERIFY_NOT_REACHED(); }
 | |
|     virtual bool can_convert_a_timeline_time_to_an_original_relative_time() const { return false; }
 | |
| 
 | |
| protected:
 | |
|     AnimationTimeline(JS::Realm&);
 | |
|     virtual ~AnimationTimeline() override;
 | |
| 
 | |
|     virtual void initialize(JS::Realm&) override;
 | |
|     virtual void visit_edges(Cell::Visitor&) override;
 | |
| 
 | |
|     // https://www.w3.org/TR/web-animations-1/#dom-animationtimeline-currenttime
 | |
|     Optional<double> m_current_time {};
 | |
| 
 | |
|     // https://www.w3.org/TR/web-animations-1/#monotonically-increasing-timeline
 | |
|     bool m_is_monotonically_increasing { true };
 | |
| 
 | |
|     // https://www.w3.org/TR/web-animations-1/#timeline-associated-with-a-document
 | |
|     JS::GCPtr<DOM::Document> m_associated_document {};
 | |
| };
 | |
| 
 | |
| }
 |