Semi-working number frame
This commit is contained in:
+80
-38
@@ -1,6 +1,8 @@
|
|||||||
#ifndef GUI_NUMBERFRAME_H__
|
#ifndef GUI_NUMBERFRAME_H__
|
||||||
#define GUI_NUMBERFRAME_H__
|
#define GUI_NUMBERFRAME_H__
|
||||||
|
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
#include "GUI/TextureFrame.h"
|
#include "GUI/TextureFrame.h"
|
||||||
|
|
||||||
namespace dd
|
namespace dd
|
||||||
@@ -26,20 +28,20 @@ public:
|
|||||||
m_NumberTextures[9] = "Textures/GUI/Numbers/N9.png";
|
m_NumberTextures[9] = "Textures/GUI/Numbers/N9.png";
|
||||||
|
|
||||||
// Create number frame if missing
|
// Create number frame if missing
|
||||||
for (int i = 0; i < 10; i++) {
|
// for (int i = 0; i < 10; i++) {
|
||||||
auto frame = new GUI::TextureFrame(this, "NumberFrameDigit");
|
// auto frame = new GUI::TextureFrame(this, "NumberFrameDigit");
|
||||||
frame->SetTexture(m_NumberTextures[0]);
|
// frame->SetTexture(m_NumberTextures[0]);
|
||||||
frame->DisableScissor();
|
// frame->DisableScissor();
|
||||||
// Position frame based on alignment
|
// // Position frame based on alignment
|
||||||
if (i > 0) {
|
// if (i > 0) {
|
||||||
frame->X = i * 20;
|
// frame->SetLeft(m_NumberFrames[0]->Right());
|
||||||
}
|
// }
|
||||||
Width += frame->Width;
|
// Width += frame->Width;
|
||||||
if (Height < frame->Height) {
|
// if (Height < frame->Height) {
|
||||||
Height = frame->Height;
|
// Height = frame->Height;
|
||||||
}
|
// }
|
||||||
m_NumberFrames.push_front(frame);
|
// m_NumberFrames.push_front(frame);
|
||||||
}
|
// }
|
||||||
|
|
||||||
SetNumber(0);
|
SetNumber(0);
|
||||||
}
|
}
|
||||||
@@ -50,41 +52,80 @@ public:
|
|||||||
m_Number = number;
|
m_Number = number;
|
||||||
|
|
||||||
// Clear number textures
|
// Clear number textures
|
||||||
//for (auto& frame : m_NumberFrames) {
|
for (auto& frame : m_NumberFrames) {
|
||||||
// frame->SetTexture("");
|
frame->SetTexture("");
|
||||||
//}
|
}
|
||||||
|
|
||||||
//Width = 0;
|
Width = 0;
|
||||||
//Height = 0;
|
Height = 0;
|
||||||
|
|
||||||
|
std::string digits = std::to_string(number);
|
||||||
|
|
||||||
|
Width = 0;
|
||||||
|
Height = 0;
|
||||||
|
|
||||||
|
std::string digits = std::to_string(number);
|
||||||
|
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
for (char& c : digits) {
|
||||||
|
// Create number frame if missing
|
||||||
|
if (i >= m_NumberFrames.size()) {
|
||||||
|
auto frame = new GUI::TextureFrame(this, "NumberFrameDigit");
|
||||||
|
if (i > 0) {
|
||||||
|
frame->SetLeft(m_NumberFrames[i - 1]->Right());
|
||||||
|
}
|
||||||
|
frame->DisableScissor();
|
||||||
|
m_NumberFrames.push_back(frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update value
|
||||||
|
std::string texture = "Textures/Core/ErrorTexture.png";
|
||||||
|
if (m_CharacterTextures.find(c) != m_CharacterTextures.end()) {
|
||||||
|
texture = m_CharacterTextures.at(c);
|
||||||
|
}
|
||||||
|
m_NumberFrames[i]->SetTexture(m_CharacterTextures.at(c));
|
||||||
|
Width += m_NumberFrames[i]->Width;
|
||||||
|
if (Height < m_NumberFrames[i]->Height) {
|
||||||
|
Height = m_NumberFrames[i]->Height;
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
int n = 0;
|
int n = 0;
|
||||||
do {
|
do {
|
||||||
// // Create number frame if missing
|
// Create number frame if missing
|
||||||
// if (m_NumberFrames.size() <= n) {
|
if (m_NumberFrames.size() <= n) {
|
||||||
// auto frame = new GUI::TextureFrame(this, "NumberFrameDigit");
|
auto frame = new GUI::TextureFrame(this, "NumberFrameDigit");
|
||||||
// frame->DisableScissor();
|
frame->DisableScissor();
|
||||||
// m_NumberFrames.push_front(frame);
|
m_NumberFrames.push_back(frame);
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
int digit = number % 10;
|
||||||
|
|
||||||
// Update value
|
// Update value
|
||||||
int digit = number % 10;
|
|
||||||
m_NumberFrames[n]->SetTexture(m_NumberTextures[digit]);
|
m_NumberFrames[n]->SetTexture(m_NumberTextures[digit]);
|
||||||
//Width += m_NumberFrames[n]->Width;
|
Width += m_NumberFrames[n]->Width;
|
||||||
//if (Height < m_NumberFrames[n]->Height) {
|
if (Height < m_NumberFrames[n]->Height) {
|
||||||
// Height = m_NumberFrames[n]->Height;
|
Height = m_NumberFrames[n]->Height;
|
||||||
//}
|
}
|
||||||
// // Position frame based on alignment
|
// Position frame based on alignment
|
||||||
// if (n > 0) {
|
if (n > 0) {
|
||||||
// if (!m_LeftAligned) {
|
if (m_LeftAligned) {
|
||||||
// m_NumberFrames[n]->SetLeft(m_NumberFrames[n - 1]->Right());
|
m_NumberFrames[n]->SetLeft(m_NumberFrames[n - 1]->Right());
|
||||||
// } else {
|
} else {
|
||||||
// m_NumberFrames[n]->SetRight(m_NumberFrames[n - 1]->Left());
|
m_NumberFrames[n]->SetRight(m_NumberFrames[n - 1]->Left());
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
ss << digit;
|
||||||
|
|
||||||
number /= 10;
|
number /= 10;
|
||||||
n++;
|
n++;
|
||||||
} while (number > 0);
|
} while (number > 0);
|
||||||
|
|
||||||
|
LOG_DEBUG("Number: %s", ss.str().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetLeftAlign() { m_LeftAligned = true; }
|
void SetLeftAlign() { m_LeftAligned = true; }
|
||||||
@@ -100,6 +141,7 @@ private:
|
|||||||
bool m_LeftAligned = true;
|
bool m_LeftAligned = true;
|
||||||
|
|
||||||
std::string m_NumberTextures[10];
|
std::string m_NumberTextures[10];
|
||||||
|
std::unordered_map<char, std::string> m_CharacterTextures;
|
||||||
std::deque<TextureFrame*> m_NumberFrames;
|
std::deque<TextureFrame*> m_NumberFrames;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user