Icon: Use std::array where applicable

This commit is contained in:
Lioncash 2019-09-01 00:49:18 -04:00
parent 462d2bb8fa
commit 532e6909f3
1 changed files with 11 additions and 6 deletions

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <array>
#include <cstddef> #include <cstddef>
#include "specter/View.hpp" #include "specter/View.hpp"
@ -15,9 +16,9 @@ class ViewResources;
struct Icon { struct Icon {
boo::ObjToken<boo::ITexture> m_tex; boo::ObjToken<boo::ITexture> m_tex;
zeus::CVector2f m_uvCoords[4]; std::array<zeus::CVector2f, 4> m_uvCoords;
Icon() = default; Icon() = default;
Icon(boo::ObjToken<boo::ITexture> tex, float rect[4]) : m_tex(std::move(tex)) { Icon(boo::ObjToken<boo::ITexture> tex, const std::array<float, 4>& rect) : m_tex(std::move(tex)) {
m_uvCoords[0][0] = rect[0]; m_uvCoords[0][0] = rect[0];
m_uvCoords[0][1] = -rect[3]; m_uvCoords[0][1] = -rect[3];
@ -35,11 +36,15 @@ struct Icon {
template <size_t COLS, size_t ROWS> template <size_t COLS, size_t ROWS>
class IconAtlas { class IconAtlas {
boo::ObjToken<boo::ITextureS> m_tex; boo::ObjToken<boo::ITextureS> m_tex;
Icon m_icons[COLS][ROWS]; std::array<std::array<Icon, ROWS>, COLS> m_icons;
Icon MakeIcon(float x, float y) { Icon MakeIcon(float x, float y) const {
float rect[] = {x / float(COLS), y / float(ROWS), x / float(COLS) + 1.f / float(COLS), const std::array<float, 4> rect{
y / float(ROWS) + 1.f / float(ROWS)}; x / float(COLS),
y / float(ROWS),
x / float(COLS) + 1.f / float(COLS),
y / float(ROWS) + 1.f / float(ROWS),
};
return Icon(m_tex.get(), rect); return Icon(m_tex.get(), rect);
} }