#ifndef _RIVE_AABB_HPP_
#define _RIVE_AABB_HPP_

#include "rive/math/mat2d.hpp"
#include "rive/math/vec2d.hpp"
#include <cstddef>

namespace rive
{
	class AABB
	{
	public:
		union
		{
			float buffer[4];
			struct
			{
				float minX, minY, maxX, maxY;
			};
		};

	public:
		AABB();
		AABB(const AABB& copy);
		AABB(float minX, float minY, float maxX, float maxY);

		inline const float* values() const { return buffer; }

		float& operator[](std::size_t idx) { return buffer[idx]; }
		const float& operator[](std::size_t idx) const { return buffer[idx]; }

		static void center(Vec2D& out, const AABB& a);
		static void size(Vec2D& out, const AABB& a);
		static void extents(Vec2D& out, const AABB& a);
		static void combine(AABB& out, const AABB& a, const AABB& b);
		static bool contains(const AABB& a, const AABB& b);
		static bool isValid(const AABB& a);
		static bool testOverlap(const AABB& a, const AABB& b);
		static bool areIdentical(const AABB& a, const AABB& b);
		static void transform(AABB& out, const AABB& a, const Mat2D& matrix);

		float width() const;
		float height() const;
		float perimeter() const;
	};
} // namespace rive
#endif
