/* Crafter®.Graphics Copyright (C) 2026 Catcrafts® catcrafts.net This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3.0 as published by the Free Software Foundation; This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ export module Crafter.Graphics:Transform2D; import std; import :Types; export namespace Crafter { struct RendertargetBase; struct Anchor2D { float x; float y; float width; float height; float offsetX; float offsetY; std::int32_t z; bool maintainAspectRatio; Anchor2D() = default; Anchor2D(float x, float y, float width, float height, float offsetX, float offsetY, std::int32_t z, bool maintainAspectRatio = false); }; struct Transform2D { Anchor2D anchor; ScaleData2D scaled; std::vector children; Transform2D() = default; Transform2D(Anchor2D anchor); Transform2D(Transform2D&) = delete; Transform2D(Transform2D&&) = delete; Transform2D& operator=(Transform2D&) = delete; virtual ~Transform2D() = default; void ScaleElement(Transform2D& parent); virtual void UpdatePosition(RendertargetBase& window, Transform2D& parent); }; }