/* * 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 , public Bindings::Serializable { WEB_PLATFORM_OBJECT(DOMQuad, Bindings::PlatformObject); GC_DECLARE_ALLOCATOR(DOMQuad); public: static GC::Ref construct_impl(JS::Realm&, DOMPointInit const& p1, DOMPointInit const& p2, DOMPointInit const& p3, DOMPointInit const& p4); static GC::Ref create(JS::Realm& realm); virtual ~DOMQuad() override; static GC::Ref from_rect(JS::VM&, DOMRectInit const&); static GC::Ref from_quad(JS::VM&, DOMQuadInit const&); GC::Ref p1() const { return m_p1; } GC::Ref p2() const { return m_p2; } GC::Ref p3() const { return m_p3; } GC::Ref p4() const { return m_p4; } GC::Ref get_bounds() const; virtual StringView interface_name() const override { return "DOMQuad"sv; } virtual WebIDL::ExceptionOr serialization_steps(HTML::SerializationRecord&, bool for_storage, HTML::SerializationMemory&) override; virtual WebIDL::ExceptionOr deserialization_steps(ReadonlySpan const&, size_t& position, HTML::DeserializationMemory&) override; private: DOMQuad(JS::Realm&, DOMPointInit const& p1, DOMPointInit const& p2, DOMPointInit const& p3, DOMPointInit const& p4); explicit DOMQuad(JS::Realm&); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; GC::Ref m_p1; GC::Ref m_p2; GC::Ref m_p3; GC::Ref m_p4; }; }