/src/BPMDisplay.cpp
#include "BPMDisplay.h"
#include "ShaderDepot.h"

BPMDisplay::BPMDisplay() {
	this->BPMtex = new Texture("img/bpm.png");
	this->setSize(BPMtex->getWidth(), BPMtex->getHeight());

	labelVertices[0] = 0;
	labelVertices[1] = 0;
	labelVertices[2] = 38;
	labelVertices[3] = 0;
	labelVertices[4] = 38;
	labelVertices[5] = 14;
	labelVertices[6] = 0;
	labelVertices[7] = 14;

	numberVertices[0] = 0;
	numberVertices[1] = 0;
	numberVertices[2] = 10;
	numberVertices[3] = 0;
	numberVertices[4] = 10;
	numberVertices[5] = 14;
	numberVertices[6] = 0;
	numberVertices[7] = 14;
	this->shader = (DecalShader*) loadShader("DecalShader");
}

BPMDisplay::~BPMDisplay() {
}

void BPMDisplay::draw(int t, int bpm) {
	shader->useProgram();
	shader->setTexture(BPMtex);

	shader->setTranslation(this->x, this->y);
	shader->setPositions(4, this->labelVertices);
	shader->setTextureOffset(0, 0);
	glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

	int digit;
	shader->setPositions(4, this->numberVertices);

	digit = (bpm / 100) % 10;
	shader->setTranslation(this->x + 45, this->y);
	shader->setTextureOffset(40 + 10 * digit, 0);
	glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

	digit = (bpm / 10) % 10;
	shader->setTranslation(this->x + 57, this->y);
	shader->setTextureOffset(40 + 10 * digit, 0);
	glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

	digit = bpm % 10;
	shader->setTranslation(this->x + 69, this->y);
	shader->setTextureOffset(40 + 10 * digit, 0);
	glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
}