mirror of https://github.com/AxioDL/metaforce.git
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
#include "specter/Icon.hpp"
|
|
#include "specter/RootView.hpp"
|
|
|
|
namespace specter
|
|
{
|
|
|
|
IconView::IconView(ViewResources& res, View& parentView, Icon& icon)
|
|
: View(res, parentView)
|
|
{
|
|
commitResources(res, [&](boo::IGraphicsDataFactory::Context& ctx) -> bool
|
|
{
|
|
buildResources(ctx, res);
|
|
m_vertexBinding.initTex(ctx, res, 4, m_viewVertBlockBuf, icon.m_tex);
|
|
return true;
|
|
});
|
|
TexShaderVert verts[] =
|
|
{
|
|
{{0, 1, 0}, icon.m_uvCoords[0]},
|
|
{{0, 0, 0}, icon.m_uvCoords[1]},
|
|
{{1, 1, 0}, icon.m_uvCoords[2]},
|
|
{{1, 0, 0}, icon.m_uvCoords[3]},
|
|
};
|
|
m_vertexBinding.load(verts, sizeof(verts));
|
|
setBackground(zeus::CColor::skBlue);
|
|
}
|
|
|
|
void IconView::resized(const boo::SWindowRect& root, const boo::SWindowRect& sub)
|
|
{
|
|
m_viewVertBlock.setViewRect(root, sub);
|
|
float pf = rootView().viewRes().pixelFactor();
|
|
m_viewVertBlock.m_mv[0][0] *= sub.size[0];
|
|
m_viewVertBlock.m_mv[1][1] *= sub.size[1];
|
|
View::resized(m_viewVertBlock, sub);
|
|
}
|
|
|
|
void IconView::draw(boo::IGraphicsCommandQueue* gfxQ)
|
|
{
|
|
gfxQ->setShaderDataBinding(m_vertexBinding);
|
|
gfxQ->draw(0, 4);
|
|
}
|
|
|
|
}
|