mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:02:45 +00:00 
			
		
		
		
	LibWeb: Add DOMMatrix and DOMMatrixReadOnly fromMatrix
This commit is contained in:
		
							parent
							
								
									bbf66ea055
								
							
						
					
					
						commit
						ff1bcc694d
					
				
					 8 changed files with 35 additions and 2 deletions
				
			
		
							
								
								
									
										2
									
								
								Tests/LibWeb/Text/expected/geometry/dommatrix.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Tests/LibWeb/Text/expected/geometry/dommatrix.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| 1. {"a":10,"b":20,"c":30,"d":40,"e":50,"f":60,"m11":10,"m12":20,"m13":0,"m14":0,"m21":30,"m22":40,"m23":0,"m24":0,"m31":0,"m32":0,"m33":1,"m34":0,"m41":50,"m42":60,"m43":0,"m44":1,"is2D":true,"isIdentity":false} | ||||
| 2. {"a":10,"b":20,"c":30,"d":40,"e":50,"f":60,"m11":10,"m12":20,"m13":0,"m14":0,"m21":30,"m22":40,"m23":0,"m24":0,"m31":0,"m32":0,"m33":1,"m34":0,"m41":50,"m42":60,"m43":0,"m44":1,"is2D":true,"isIdentity":false} | ||||
							
								
								
									
										15
									
								
								Tests/LibWeb/Text/input/geometry/dommatrix.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								Tests/LibWeb/Text/input/geometry/dommatrix.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| <script src="../include.js"></script> | ||||
| <script> | ||||
|     test(() => { | ||||
|         let testCounter = 1; | ||||
|         function testPart(part) { | ||||
|             println(`${testCounter++}. ${JSON.stringify(part())}`); | ||||
|         } | ||||
| 
 | ||||
|         // 1. Creating a DOMMatrix | ||||
|         testPart(() => new DOMMatrix([10, 20, 30, 40, 50, 60])); | ||||
| 
 | ||||
|         // 2. Creating a DOMMatrix with fromMatrix | ||||
|         testPart(() => DOMMatrix.fromMatrix({ a: 10, b: 20, c: 30, d: 40, e: 50, f: 60 })); | ||||
|     }); | ||||
| </script> | ||||
|  | @ -73,6 +73,12 @@ void DOMMatrix::initialize(JS::Realm& realm) | |||
|     set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMMatrixPrototype>(realm, "DOMMatrix")); | ||||
| } | ||||
| 
 | ||||
| // https://drafts.fxtf.org/geometry/#dom-dommatrix-frommatrix
 | ||||
| WebIDL::ExceptionOr<JS::NonnullGCPtr<DOMMatrix>> DOMMatrix::from_matrix(JS::VM& vm, DOMMatrixInit other) | ||||
| { | ||||
|     return create_from_dom_matrix_2d_init(*vm.current_realm(), other); | ||||
| } | ||||
| 
 | ||||
| // https://drafts.fxtf.org/geometry/#dom-dommatrixreadonly-m11
 | ||||
| void DOMMatrix::set_m11(double value) | ||||
| { | ||||
|  |  | |||
|  | @ -21,6 +21,8 @@ public: | |||
| 
 | ||||
|     virtual ~DOMMatrix() override; | ||||
| 
 | ||||
|     static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOMMatrix>> from_matrix(JS::VM&, DOMMatrixInit other = {}); | ||||
| 
 | ||||
|     void set_m11(double value); | ||||
|     void set_m12(double value); | ||||
|     void set_m13(double value); | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| interface DOMMatrix : DOMMatrixReadOnly { | ||||
|     constructor(optional (DOMString or sequence<unrestricted double>) init); | ||||
| 
 | ||||
|     // FIXME: [NewObject] static DOMMatrix fromMatrix(optional DOMMatrixInit other = {}); | ||||
|     [NewObject] static DOMMatrix fromMatrix(optional DOMMatrixInit other = {}); | ||||
|     // FIXME: [NewObject] static DOMMatrix fromFloat32Array(Float32Array array32); | ||||
|     // FIXME: [NewObject] static DOMMatrix fromFloat64Array(Float64Array array64); | ||||
| 
 | ||||
|  |  | |||
|  | @ -180,6 +180,12 @@ void DOMMatrixReadOnly::initialize_from_create_3d_matrix(double m11, double m12, | |||
|     // 4. Return matrix
 | ||||
| } | ||||
| 
 | ||||
| // https://drafts.fxtf.org/geometry/#dom-dommatrixreadonly-frommatrix
 | ||||
| WebIDL::ExceptionOr<JS::NonnullGCPtr<DOMMatrixReadOnly>> DOMMatrixReadOnly::from_matrix(JS::VM& vm, DOMMatrixInit& other) | ||||
| { | ||||
|     return create_from_dom_matrix_2d_init(*vm.current_realm(), other); | ||||
| } | ||||
| 
 | ||||
| // https://drafts.fxtf.org/geometry/#dom-dommatrixreadonly-isidentity
 | ||||
| bool DOMMatrixReadOnly::is_identity() const | ||||
| { | ||||
|  |  | |||
|  | @ -53,6 +53,8 @@ public: | |||
| 
 | ||||
|     virtual ~DOMMatrixReadOnly() override; | ||||
| 
 | ||||
|     static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOMMatrixReadOnly>> from_matrix(JS::VM&, DOMMatrixInit& other); | ||||
| 
 | ||||
|     // https://drafts.fxtf.org/geometry/#dommatrix-attributes
 | ||||
|     double m11() const { return m_matrix.elements()[0][0]; } | ||||
|     double m12() const { return m_matrix.elements()[1][0]; } | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| interface DOMMatrixReadOnly { | ||||
|     constructor(optional (DOMString or sequence<unrestricted double>) init); | ||||
| 
 | ||||
|     // FIXME: [NewObject] static DOMMatrixReadOnly fromMatrix(optional DOMMatrixInit other = {}); | ||||
|     [NewObject] static DOMMatrixReadOnly fromMatrix(optional DOMMatrixInit other = {}); | ||||
|     // FIXME: [NewObject] static DOMMatrixReadOnly fromFloat32Array(Float32Array array32); | ||||
|     // FIXME: [NewObject] static DOMMatrixReadOnly fromFloat64Array(Float64Array array64); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Bastiaan van der Plaat
						Bastiaan van der Plaat