Added font sizing, needs full testing
This commit is contained in:
39
src/ui/label.c
Normal file
39
src/ui/label.c
Normal file
@ -0,0 +1,39 @@
|
||||
/**
|
||||
* Copyright (c) 2021 Dominic Masters
|
||||
*
|
||||
* This software is released under the MIT License.
|
||||
* https://opensource.org/licenses/MIT
|
||||
*/
|
||||
|
||||
#include "label.h"
|
||||
|
||||
void labelInit(label_t *label) {
|
||||
label->x = 0;
|
||||
label->y = 0;
|
||||
label->z = 0;
|
||||
label->fontSize = FONT_SIZE_DEFAULT;
|
||||
label->font = NULL;
|
||||
label->primitive.verticeCount = 0;
|
||||
}
|
||||
|
||||
void labelSetText(label_t *label, font_t *font, char *text) {
|
||||
if(label->primitive.verticeCount != 0) {
|
||||
primitiveDispose(&label->primitive);
|
||||
label->primitive.verticeCount = 0;
|
||||
}
|
||||
|
||||
label->font = font;
|
||||
fontTextClamp(font, &label->info, text, -1, 16.0);
|
||||
fontTextInit(font, &label->primitive, &label->info);
|
||||
}
|
||||
|
||||
void labelRender(label_t *label, shader_t *shader) {
|
||||
if(label->primitive.verticeCount == 0) return;
|
||||
shaderUsePosition(shader, label->x, label->y, label->z, 0, 0, 0);
|
||||
shaderUseTexture(shader, &label->font->texture);
|
||||
primitiveDraw(&label->primitive, 0, -1);
|
||||
}
|
||||
|
||||
void labelDispose(label_t *label) {
|
||||
primitiveDispose(&label->primitive);
|
||||
}
|
18
src/ui/label.h
Normal file
18
src/ui/label.h
Normal file
@ -0,0 +1,18 @@
|
||||
// Copyright (c) 2021 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#pragma once
|
||||
#include <dawn/dawn.h>
|
||||
#include "../display/shader.h"
|
||||
#include "../display/primitive.h"
|
||||
#include "../display/gui/font.h"
|
||||
|
||||
void labelInit(label_t *label);
|
||||
|
||||
void labelSetText(label_t *label, font_t *font, char *text);
|
||||
|
||||
void labelRender(label_t *label, shader_t *shader);
|
||||
|
||||
void labelDispose(label_t *label);
|
Reference in New Issue
Block a user