1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "core/dom/DOMPointReadOnly.h"
#include "bindings/core/v8/ExceptionState.h"
#include "bindings/core/v8/ScriptValue.h"
#include "bindings/core/v8/V8ObjectBuilder.h"
#include "core/dom/DOMMatrixInit.h"
#include "core/dom/DOMMatrixReadOnly.h"
#include "core/dom/DOMPoint.h"
#include "core/dom/DOMPointInit.h"
namespace blink {
DOMPointReadOnly* DOMPointReadOnly::create(double x,
double y,
double z,
double w) {
return new DOMPointReadOnly(x, y, z, w);
}
ScriptValue DOMPointReadOnly::toJSONForBinding(
ScriptState* scriptState) const {
V8ObjectBuilder result(scriptState);
result.addNumber("x", x());
result.addNumber("y", y());
result.addNumber("z", z());
result.addNumber("w", w());
return result.scriptValue();
}
DOMPointReadOnly* DOMPointReadOnly::fromPoint(const DOMPointInit& other) {
return new DOMPointReadOnly(other.x(), other.y(), other.z(), other.w());
}
DOMPoint* DOMPointReadOnly::matrixTransform(DOMMatrixInit& other,
ExceptionState& exceptionState) {
DOMMatrixReadOnly* matrix =
DOMMatrixReadOnly::fromMatrix(other, exceptionState);
if (matrix->is2D() && z() == 0 && w() == 1) {
double transformedX =
x() * matrix->m11() + y() * matrix->m12() + matrix->m41();
double transformedY =
x() * matrix->m12() + y() * matrix->m22() + matrix->m42();
return DOMPoint::create(transformedX, transformedY, 0, 1);
}
double transformedX = x() * matrix->m11() + y() * matrix->m21() +
z() * matrix->m31() + w() * matrix->m41();
double transformedY = x() * matrix->m12() + y() * matrix->m22() +
z() * matrix->m32() + w() * matrix->m42();
double transformedZ = x() * matrix->m13() + y() * matrix->m23() +
z() * matrix->m33() + w() * matrix->m43();
double transformedW = x() * matrix->m14() + y() * matrix->m24() +
z() * matrix->m34() + w() * matrix->m44();
return DOMPoint::create(transformedX, transformedY, transformedZ,
transformedW);
}
DOMPointReadOnly::DOMPointReadOnly(double x, double y, double z, double w)
: m_x(x), m_y(y), m_z(z), m_w(w) {}
} // namespace blink
|