mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-27 17:47:34 +09:00
Issue #2241 - Part 7.1: Implement .fromFloat{32/64}Array.
Backported from Mozilla bug 1558101.
This commit is contained in:
parent
10bdcb7e5f
commit
0e2f687f4d
3 changed files with 73 additions and 10 deletions
|
|
@ -163,6 +163,35 @@ DOMMatrixReadOnly::FromMatrix(const GlobalObject& aGlobal, const DOMMatrixInit&
|
||||||
return rval.forget();
|
return rval.forget();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
already_AddRefed<DOMMatrixReadOnly>
|
||||||
|
DOMMatrixReadOnly::FromFloat32Array(const GlobalObject& aGlobal, const Float32Array& aArray32, ErrorResult& aRv)
|
||||||
|
{
|
||||||
|
aArray32.ComputeLengthAndData();
|
||||||
|
|
||||||
|
const int length = aArray32.Length();
|
||||||
|
const bool is2D = length == 6;
|
||||||
|
RefPtr<DOMMatrixReadOnly> obj =
|
||||||
|
new DOMMatrixReadOnly(aGlobal.GetAsSupports(), is2D);
|
||||||
|
SetDataInMatrix(obj, aArray32.Data(), length, aRv);
|
||||||
|
|
||||||
|
return obj.forget();
|
||||||
|
}
|
||||||
|
|
||||||
|
already_AddRefed<DOMMatrixReadOnly>
|
||||||
|
DOMMatrixReadOnly::FromFloat64Array(const GlobalObject& aGlobal, const Float64Array& aArray64, ErrorResult& aRv)
|
||||||
|
{
|
||||||
|
aArray64.ComputeLengthAndData();
|
||||||
|
|
||||||
|
const int length = aArray64.Length();
|
||||||
|
const bool is2D = length == 6;
|
||||||
|
RefPtr<DOMMatrixReadOnly> obj =
|
||||||
|
new DOMMatrixReadOnly(aGlobal.GetAsSupports(), is2D);
|
||||||
|
SetDataInMatrix(obj, aArray64.Data(), length, aRv);
|
||||||
|
|
||||||
|
return obj.forget();
|
||||||
|
}
|
||||||
|
|
||||||
already_AddRefed<DOMMatrixReadOnly>
|
already_AddRefed<DOMMatrixReadOnly>
|
||||||
DOMMatrixReadOnly::Constructor(
|
DOMMatrixReadOnly::Constructor(
|
||||||
const GlobalObject& aGlobal,
|
const GlobalObject& aGlobal,
|
||||||
|
|
@ -573,6 +602,32 @@ DOMMatrix::FromMatrix(const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixI
|
||||||
return matrix.forget();
|
return matrix.forget();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
already_AddRefed<DOMMatrix>
|
||||||
|
DOMMatrix::FromFloat32Array(const GlobalObject& aGlobal, const Float32Array& aArray32, ErrorResult& aRv)
|
||||||
|
{
|
||||||
|
aArray32.ComputeLengthAndData();
|
||||||
|
|
||||||
|
const int length = aArray32.Length();
|
||||||
|
const bool is2D = length == 6;
|
||||||
|
RefPtr<DOMMatrix> obj = new DOMMatrix(aGlobal.GetAsSupports(), is2D);
|
||||||
|
SetDataInMatrix(obj, aArray32.Data(), length, aRv);
|
||||||
|
|
||||||
|
return obj.forget();
|
||||||
|
}
|
||||||
|
|
||||||
|
already_AddRefed<DOMMatrix>
|
||||||
|
DOMMatrix::FromFloat64Array(const GlobalObject& aGlobal, const Float64Array& aArray64, ErrorResult& aRv)
|
||||||
|
{
|
||||||
|
aArray64.ComputeLengthAndData();
|
||||||
|
|
||||||
|
const int length = aArray64.Length();
|
||||||
|
const bool is2D = length == 6;
|
||||||
|
RefPtr<DOMMatrix> obj = new DOMMatrix(aGlobal.GetAsSupports(), is2D);
|
||||||
|
SetDataInMatrix(obj, aArray64.Data(), length, aRv);
|
||||||
|
|
||||||
|
return obj.forget();
|
||||||
|
}
|
||||||
|
|
||||||
already_AddRefed<DOMMatrix>
|
already_AddRefed<DOMMatrix>
|
||||||
DOMMatrix::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
|
DOMMatrix::Constructor(const GlobalObject& aGlobal, ErrorResult& aRv)
|
||||||
{
|
{
|
||||||
|
|
@ -639,21 +694,13 @@ SetDataInMatrix(DOMMatrixReadOnly* aMatrix, const T* aData, int aLength, ErrorRe
|
||||||
already_AddRefed<DOMMatrix>
|
already_AddRefed<DOMMatrix>
|
||||||
DOMMatrix::Constructor(const GlobalObject& aGlobal, const Float32Array& aArray32, ErrorResult& aRv)
|
DOMMatrix::Constructor(const GlobalObject& aGlobal, const Float32Array& aArray32, ErrorResult& aRv)
|
||||||
{
|
{
|
||||||
RefPtr<DOMMatrix> obj = new DOMMatrix(aGlobal.GetAsSupports());
|
return FromFloat32Array(aGlobal, aArray32, aRv);
|
||||||
aArray32.ComputeLengthAndData();
|
|
||||||
SetDataInMatrix(obj, aArray32.Data(), aArray32.Length(), aRv);
|
|
||||||
|
|
||||||
return obj.forget();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
already_AddRefed<DOMMatrix>
|
already_AddRefed<DOMMatrix>
|
||||||
DOMMatrix::Constructor(const GlobalObject& aGlobal, const Float64Array& aArray64, ErrorResult& aRv)
|
DOMMatrix::Constructor(const GlobalObject& aGlobal, const Float64Array& aArray64, ErrorResult& aRv)
|
||||||
{
|
{
|
||||||
RefPtr<DOMMatrix> obj = new DOMMatrix(aGlobal.GetAsSupports());
|
return FromFloat64Array(aGlobal, aArray64, aRv);
|
||||||
aArray64.ComputeLengthAndData();
|
|
||||||
SetDataInMatrix(obj, aArray64.Data(), aArray64.Length(), aRv);
|
|
||||||
|
|
||||||
return obj.forget();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
already_AddRefed<DOMMatrix>
|
already_AddRefed<DOMMatrix>
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,12 @@ public:
|
||||||
static already_AddRefed<DOMMatrixReadOnly>
|
static already_AddRefed<DOMMatrixReadOnly>
|
||||||
FromMatrix(const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixInit, ErrorResult& aRv);
|
FromMatrix(const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixInit, ErrorResult& aRv);
|
||||||
|
|
||||||
|
static already_AddRefed<DOMMatrixReadOnly>
|
||||||
|
FromFloat32Array(const GlobalObject& aGlobal, const Float32Array& aArray32, ErrorResult& aRv);
|
||||||
|
|
||||||
|
static already_AddRefed<DOMMatrixReadOnly>
|
||||||
|
FromFloat64Array(const GlobalObject& aGlobal, const Float64Array& aArray64, ErrorResult& aRv);
|
||||||
|
|
||||||
static already_AddRefed<DOMMatrixReadOnly>
|
static already_AddRefed<DOMMatrixReadOnly>
|
||||||
Constructor(const GlobalObject& aGlobal, const Optional<StringOrUnrestrictedDoubleSequence>& aArg, ErrorResult& aRv);
|
Constructor(const GlobalObject& aGlobal, const Optional<StringOrUnrestrictedDoubleSequence>& aArg, ErrorResult& aRv);
|
||||||
|
|
||||||
|
|
@ -253,6 +259,12 @@ public:
|
||||||
static already_AddRefed<DOMMatrix>
|
static already_AddRefed<DOMMatrix>
|
||||||
FromMatrix(const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixInit, ErrorResult& aRv);
|
FromMatrix(const GlobalObject& aGlobal, const DOMMatrixInit& aMatrixInit, ErrorResult& aRv);
|
||||||
|
|
||||||
|
static already_AddRefed<DOMMatrix>
|
||||||
|
FromFloat32Array(const GlobalObject& aGlobal, const Float32Array& aArray32, ErrorResult& aRv);
|
||||||
|
|
||||||
|
static already_AddRefed<DOMMatrix>
|
||||||
|
FromFloat64Array(const GlobalObject& aGlobal, const Float64Array& aArray64, ErrorResult& aRv);
|
||||||
|
|
||||||
static already_AddRefed<DOMMatrix>
|
static already_AddRefed<DOMMatrix>
|
||||||
Constructor(const GlobalObject& aGlobal, ErrorResult& aRv);
|
Constructor(const GlobalObject& aGlobal, ErrorResult& aRv);
|
||||||
static already_AddRefed<DOMMatrix>
|
static already_AddRefed<DOMMatrix>
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,8 @@
|
||||||
Exposed=(Window,Worker)]
|
Exposed=(Window,Worker)]
|
||||||
interface DOMMatrixReadOnly {
|
interface DOMMatrixReadOnly {
|
||||||
[NewObject, Throws] static DOMMatrixReadOnly fromMatrix(optional DOMMatrixInit other);
|
[NewObject, Throws] static DOMMatrixReadOnly fromMatrix(optional DOMMatrixInit other);
|
||||||
|
[NewObject, Throws] static DOMMatrixReadOnly fromFloat32Array(Float32Array array32);
|
||||||
|
[NewObject, Throws] static DOMMatrixReadOnly fromFloat64Array(Float64Array array64);
|
||||||
|
|
||||||
// These attributes are simple aliases for certain elements of the 4x4 matrix
|
// These attributes are simple aliases for certain elements of the 4x4 matrix
|
||||||
readonly attribute unrestricted double a;
|
readonly attribute unrestricted double a;
|
||||||
|
|
@ -91,6 +93,8 @@ interface DOMMatrixReadOnly {
|
||||||
Exposed=(Window,Worker)]
|
Exposed=(Window,Worker)]
|
||||||
interface DOMMatrix : DOMMatrixReadOnly {
|
interface DOMMatrix : DOMMatrixReadOnly {
|
||||||
[NewObject, Throws] static DOMMatrix fromMatrix(optional DOMMatrixInit other);
|
[NewObject, Throws] static DOMMatrix fromMatrix(optional DOMMatrixInit other);
|
||||||
|
[NewObject, Throws] static DOMMatrix fromFloat32Array(Float32Array array32);
|
||||||
|
[NewObject, Throws] static DOMMatrix fromFloat64Array(Float64Array array64);
|
||||||
|
|
||||||
// These attributes are simple aliases for certain elements of the 4x4 matrix
|
// These attributes are simple aliases for certain elements of the 4x4 matrix
|
||||||
inherit attribute unrestricted double a;
|
inherit attribute unrestricted double a;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue