/* * Copyright (c) 2023, Bastiaan van der Plaat * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::Geometry { // https://drafts.fxtf.org/geometry/#dictdef-domquadinit struct DOMQuadInit { DOMPointInit p1; DOMPointInit p2; DOMPointInit p3; DOMPointInit p4; }; // https://drafts.fxtf.org/geometry/#domquad class DOMQuad : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(DOMQuad, Bindings::PlatformObject); JS_DECLARE_ALLOCATOR(DOMQuad); public: static JS::NonnullGCPtr construct_impl(JS::Realm&, DOMPointInit const& p1, DOMPointInit const& p2, DOMPointInit const& p3, DOMPointInit const& p4); virtual ~DOMQuad() override; static JS::NonnullGCPtr from_rect(JS::VM&, DOMRectInit const&); static JS::NonnullGCPtr from_quad(JS::VM&, DOMQuadInit const&); JS::NonnullGCPtr p1() const { return m_p1; } JS::NonnullGCPtr p2() const { return m_p2; } JS::NonnullGCPtr p3() const { return m_p3; } JS::NonnullGCPtr p4() const { return m_p4; } JS::NonnullGCPtr get_bounds() const; private: DOMQuad(JS::Realm&, DOMPointInit const& p1, DOMPointInit const& p2, DOMPointInit const& p3, DOMPointInit const& p4); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; JS::NonnullGCPtr m_p1; JS::NonnullGCPtr m_p2; JS::NonnullGCPtr m_p3; JS::NonnullGCPtr m_p4; }; }