#pragma once #include "../../helpers/math/Math.hpp" #include "../../helpers/memory/Memory.hpp" #include "ModeAlgorithm.hpp" namespace Layout { class ITarget; class CAlgorithm; class IFloatingAlgorithm : public IModeAlgorithm { public: virtual ~IFloatingAlgorithm() = default; // a target is being moved by a delta virtual void moveTarget(const Vector2D& Δ, SP target) = 0; // a target is moved to a pos x size virtual void setTargetGeom(const CBox& geom, SP target) = 0; virtual void recenter(SP t); virtual void recalculate(eRecalculateReason reason = RECALCULATE_REASON_UNKNOWN); protected: IFloatingAlgorithm() = default; WP m_parent; friend class Layout::CAlgorithm; }; }