Serenity Operating System
1/*
2 * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
3 * Copyright (c) 2022, Sam Atkins <atkinssj@serenityos.org>
4 *
5 * SPDX-License-Identifier: BSD-2-Clause
6 */
7
8#include <LibWeb/Bindings/Intrinsics.h>
9#include <LibWeb/Geometry/DOMPoint.h>
10#include <LibWeb/WebIDL/ExceptionOr.h>
11
12namespace Web::Geometry {
13
14WebIDL::ExceptionOr<JS::NonnullGCPtr<DOMPoint>> DOMPoint::construct_impl(JS::Realm& realm, double x, double y, double z, double w)
15{
16 return MUST_OR_THROW_OOM(realm.heap().allocate<DOMPoint>(realm, realm, x, y, z, w));
17}
18
19DOMPoint::DOMPoint(JS::Realm& realm, double x, double y, double z, double w)
20 : DOMPointReadOnly(realm, x, y, z, w)
21{
22}
23
24// https://drafts.fxtf.org/geometry/#dom-dompoint-frompoint
25JS::NonnullGCPtr<DOMPoint> DOMPoint::from_point(JS::VM& vm, DOMPointInit const& other)
26{
27 // The fromPoint(other) static method on DOMPoint must create a DOMPoint from the dictionary other.
28 return construct_impl(*vm.current_realm(), other.x, other.y, other.z, other.w).release_value_but_fixme_should_propagate_errors();
29}
30
31DOMPoint::~DOMPoint() = default;
32
33JS::ThrowCompletionOr<void> DOMPoint::initialize(JS::Realm& realm)
34{
35 MUST_OR_THROW_OOM(Base::initialize(realm));
36 set_prototype(&Bindings::ensure_web_prototype<Bindings::DOMPointPrototype>(realm, "DOMPoint"));
37
38 return {};
39}
40
41}