Corrected final font issues.

This commit is contained in:
2021-05-26 06:17:13 -07:00
parent 5ad7ee233e
commit b81c4ca604
7 changed files with 54 additions and 55 deletions

View File

@ -110,9 +110,6 @@ fonttextinfo_t * fontTextClamp(font_t *font, char *text, float maxWidth) {
if(c == FONT_SPACE) {
x += FONT_SPACE_SIZE;
info->width = mathMax(info->width, quad->x1);
info->height = mathMax(info->height, quad->y1);
// Did this space cause a newline?
if(x > maxWidth) {
info->lines++;
@ -167,8 +164,12 @@ fonttextinfo_t * fontTextClamp(font_t *font, char *text, float maxWidth) {
info->realLength++;
}
info->width = mathMax(info->width, quad->x1);
info->height = mathMax(info->height, quad->y1);
for(j = 0; j < info->realLength; j++) {
quad = info->quads + j;
info->width = mathMax(info->width, quad->x1);
info->height = mathMax(info->height, quad->y1);
}
return info;
}

View File

@ -47,7 +47,9 @@ void pokerUpdate(poker_t *poker, render_t *render) {
}
pokerFrameGui(poker, render);
pokerTalkRender(poker, render);
pokerTalkRender(poker);
poker->textLastWidth = poker->guiWidth;
}
void pokerDispose(poker_t * poker) {

View File

@ -10,11 +10,6 @@
void pokerFrameInit(poker_t *poker, render_t *render) {
frameBufferInit(&poker->frameWorld, render->width, render->height);
frameBufferInit(&poker->frameGui, render->width, render->height);
// fonttextinfo_t *info;
// char *text = "Hello world how are you today? I'm doing fine myself.";
// info = fontTextClamp(&poker->font, text, 16, 500);
// fontTextInit(&poker->font, &bruh, info);
}
void pokerFrameWorld(poker_t *poker, render_t *render) {
@ -32,12 +27,13 @@ void pokerFrameWorld(poker_t *poker, render_t *render) {
void pokerFrameGui(poker_t *poker, render_t *render) {
// Update FB
frameBufferResize(&poker->frameGui, render->width, render->height);
poker->guiWidth = ((float)POKER_GUI_HEIGHT/render->height) * render->width;
// frameBufferUse(&poker->frameGui, true);
// Correct aspect on the ortho camera
cameraOrtho(&poker->cameraGui,
0, render->width,
render->height, 0,
0, poker->guiWidth,
POKER_GUI_HEIGHT, 0,
0.01, 100
);
cameraLookAt(&poker->cameraGui, 0, 0, 5, 0, 0, 0);

View File

@ -6,19 +6,11 @@
*/
#include "talk.h"
#define SCALE 16
texture_t text;
primitive_t primitive;
void pokerTalkInit(poker_t *poker) {
poker->talkText = NULL;
poker->talkTextInfo = NULL;
poker->lastWidth = 0, poker->lastHeight = 0;
// Testing
assetTextureLoad(&text, "red.png");
quadInit(&primitive, 0, 0, 0, 0, 0, 0, 0, 0, 0);
poker->textLastWidth = 0;
}
void pokerTalkDispose(poker_t *poker) {
@ -27,38 +19,33 @@ void pokerTalkDispose(poker_t *poker) {
primitiveDispose(&poker->talkPrimitive);
}
void pokerTalkTextRebuffer(poker_t *poker, render_t *render) {
void pokerTalkTextRebuffer(poker_t *poker) {
// Check if we need to force a redraw or not.
if(poker->talkText == NULL || poker->lastWidth != render->width) {
if(poker->talkText == NULL || poker->textLastWidth != poker->guiWidth) {
if(poker->talkTextInfo != NULL) {
fontTextInfoDispose(poker->talkTextInfo);
primitiveDispose(&poker->talkPrimitive);
}
}
poker->lastWidth = render->width;
poker->lastHeight = render->height;
if(poker->talkText == NULL) return;
// Rebuffer
poker->talkTextInfo = fontTextClamp(&poker->font,poker->talkText,render->width);
poker->talkTextInfo = fontTextClamp(&poker->font, poker->talkText, poker->guiWidth);
fontTextInit(&poker->font, &poker->talkPrimitive, poker->talkTextInfo);
}
void pokerTalkRender(poker_t *poker, render_t *render) {
pokerTalkTextRebuffer(poker, render);
void pokerTalkRender(poker_t *poker) {
pokerTalkTextRebuffer(poker);
if(poker->talkTextInfo == NULL) return;
shaderUsePosition(&poker->shader, 0,0,0, 0,0,0);
// Render text
shaderUsePosition(&poker->shader,
0,POKER_GUI_HEIGHT-poker->talkTextInfo->height,0,
0,0,0
);
shaderUseTexture(&poker->shader, &poker->font.texture);
primitiveDraw(&poker->talkPrimitive, 0, -1);
primitiveDispose(&primitive);
quadInit(&primitive, -0.05, 0, 0, 0.25, 0.25, poker->talkTextInfo->width, poker->talkTextInfo->height, 0.35, 0.35);
shaderUsePosition(&poker->shader, 0,0,0, 0,0,0);
shaderUseTexture(&poker->shader, &text);
primitiveDraw(&primitive, 0, -1);
}
void pokerTalk(poker_t *poker, char *text) {

View File

@ -11,15 +11,12 @@
#include "../../display/primitive.h"
#include "../../display/shader.h"
#include "../../file/asset.h"
#include "../../display/primitives/quad.h"
void pokerTalkInit(poker_t *poker);
void pokerTalkDispose(poker_t *poker);
void pokerTalkTextRebuffer(poker_t *poker, render_t *render);
void pokerTalkTextRebuffer(poker_t *poker);
void pokerTalkRender(poker_t *poker, render_t *render);
void pokerTalkRender(poker_t *poker);
void pokerTalk(poker_t *poker, char *text);