Updated some docs
This commit is contained in:
110
archive/ui/finished/UILabel.cpp
Normal file
110
archive/ui/finished/UILabel.cpp
Normal file
@ -0,0 +1,110 @@
|
||||
// Copyright (c) 2022 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#include "UILabel.hpp"
|
||||
#include "game/DawnGame.hpp"
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
UILabel::UILabel(UICanvas *canvas) : UIComponent(canvas) {
|
||||
evtLangUpdated = useEvent([&]{
|
||||
this->needsRebuffering = true;
|
||||
if(key.size() > 0 && this->getGame()->localeManager.getString(key).size() > 0) {
|
||||
this->hasText = true;
|
||||
}
|
||||
}, getGame()->localeManager.eventLanguageUpdated);
|
||||
}
|
||||
|
||||
void UILabel::updatePositions() {
|
||||
UIComponent::updatePositions();
|
||||
this->updateMesh();
|
||||
}
|
||||
|
||||
void UILabel::updateMesh() {
|
||||
if(!this->needsRebuffering || !this->hasText) return;
|
||||
if(this->font == nullptr || !this->font->isReady()) return;
|
||||
|
||||
float_t width = this->width;
|
||||
if(width == 0) width = -1;
|
||||
|
||||
std::string text = this->getGame()->localeManager.getString(key);
|
||||
this->font->buffer(
|
||||
text,
|
||||
this->fontSize,
|
||||
width,
|
||||
&this->mesh,
|
||||
&this->measure
|
||||
);
|
||||
|
||||
this->needsRebuffering = false;
|
||||
}
|
||||
|
||||
void UILabel::setFont(Font *font) {
|
||||
this->font = font;
|
||||
this->needsRebuffering = true;
|
||||
}
|
||||
|
||||
void UILabel::setText(std::string key) {
|
||||
this->key = key;
|
||||
this->hasText = false;
|
||||
if(key.size() > 0 && this->getGame()->localeManager.getString(key).size()>0){
|
||||
this->hasText = true;
|
||||
}
|
||||
this->needsRebuffering = true;
|
||||
}
|
||||
|
||||
void UILabel::setFontSize(float_t fontSize) {
|
||||
this->fontSize = fontSize;
|
||||
this->needsRebuffering = true;
|
||||
}
|
||||
|
||||
float_t UILabel::getFontSize() {
|
||||
return this->fontSize;
|
||||
}
|
||||
|
||||
float_t UILabel::getContentWidth() {
|
||||
this->updateMesh();
|
||||
return this->measure.getWidth();
|
||||
}
|
||||
|
||||
float_t UILabel::getContentHeight() {
|
||||
this->updateMesh();
|
||||
return this->measure.getHeight();
|
||||
}
|
||||
|
||||
std::vector<struct ShaderPassItem> UILabel::getSelfPassItems(
|
||||
glm::mat4 projection,
|
||||
glm::mat4 view,
|
||||
glm::mat4 transform
|
||||
) {
|
||||
std::vector<struct ShaderPassItem> items;
|
||||
if(this->font == nullptr) return items;
|
||||
|
||||
// this has to go eventually
|
||||
this->updateMesh();
|
||||
auto item = this->getGame()->renderManager.uiShaderProgram.getUIPassItem(
|
||||
projection,
|
||||
view,
|
||||
transform,
|
||||
this->font->getTexture(),
|
||||
this->textColor,
|
||||
&this->mesh,
|
||||
this->z
|
||||
);
|
||||
item.start = this->startQuad * QUAD_INDICE_COUNT;
|
||||
item.count = this->quadCount == -1 ? -1 : this->quadCount * QUAD_INDICE_COUNT;
|
||||
items.push_back(item);
|
||||
return items;
|
||||
}
|
||||
|
||||
void UILabel::setTransform(
|
||||
UIComponentAlign xAlign,
|
||||
UIComponentAlign yAlign,
|
||||
glm::vec4 alignment,
|
||||
float_t z
|
||||
) {
|
||||
this->needsRebuffering = true;
|
||||
UIComponent::setTransform(xAlign, yAlign, alignment, z);
|
||||
}
|
Reference in New Issue
Block a user