#pragma once #include "Runtime/CToken.hpp" //#include #include #include #include namespace metaforce { class CTexture; enum class EFilterShape; enum class EFilterType; class CColoredQuadFilter { struct Uniform { zeus::CMatrix4f m_matrix; zeus::CColor m_color; }; // boo::ObjToken m_vbo; // boo::ObjToken m_uniBuf; // boo::ObjToken m_dataBind; Uniform m_uniform; public: static void Initialize(); static void Shutdown(); static constexpr zeus::CRectangle DefaultRect{0.f, 0.f, 1.f, 1.f}; explicit CColoredQuadFilter(EFilterType type); explicit CColoredQuadFilter(EFilterType type, const TLockedToken&) : CColoredQuadFilter(type) {} void draw(const zeus::CColor& color, const zeus::CRectangle& rect = DefaultRect); void DrawFilter(EFilterShape shape, const zeus::CColor& color, float t) { draw(color); } }; class CWideScreenFilter { CColoredQuadFilter m_top; CColoredQuadFilter m_bottom; public: explicit CWideScreenFilter(EFilterType type) : m_top(type), m_bottom(type) {} explicit CWideScreenFilter(EFilterType type, const TLockedToken&) : CWideScreenFilter(type) {} void draw(const zeus::CColor& color, float t); void DrawFilter(EFilterShape shape, const zeus::CColor& color, float t) { draw(color, t); } static float SetViewportToMatch(float t); static void SetViewportToFull(); }; } // namespace metaforce