Font state;

This commit is contained in:
bjorn 2017-08-08 01:36:29 -07:00
parent 80c9d7f4d8
commit 6077cae95a
2 changed files with 28 additions and 35 deletions

View File

@ -22,14 +22,6 @@ static void onCloseWindow(GLFWwindow* window) {
}
}
static void lovrGraphicsEnsureFont() {
if (!state.activeFont && !state.defaultFont) {
FontData* fontData = lovrFontDataCreate(NULL, 32);
state.defaultFont = lovrFontCreate(fontData);
lovrGraphicsSetFont(state.defaultFont);
}
}
// Base
void lovrGraphicsInit() {
@ -70,9 +62,6 @@ void lovrGraphicsInit() {
#endif
// Allocations
state.activeFont = NULL;
state.defaultFont = NULL;
state.activeTexture = NULL;
glGenBuffers(1, &state.buffer.vbo);
glGenBuffers(1, &state.buffer.ibo);
glGenVertexArrays(1, &state.buffer.vao);
@ -264,6 +253,28 @@ void lovrGraphicsSetDepthTest(CompareMode depthTest) {
}
}
Font* lovrGraphicsGetFont() {
if (!state.font && !state.defaultFont) {
FontData* fontData = lovrFontDataCreate(NULL, 32);
state.defaultFont = lovrFontCreate(fontData);
lovrGraphicsSetFont(state.defaultFont);
}
return state.font;
}
void lovrGraphicsSetFont(Font* font) {
if (state.font) {
lovrRelease(&state.font->ref);
}
state.font = font;
if (font) {
lovrRetain(&state.font->ref);
}
}
GraphicsLimits lovrGraphicsGetLimits() {
if (!state.limits.initialized) {
glGetFloatv(GL_POINT_SIZE_RANGE, state.limits.pointSizes);
@ -338,23 +349,6 @@ void lovrGraphicsSetWireframe(int wireframe) {
#endif
}
Font* lovrGraphicsGetFont() {
lovrGraphicsEnsureFont();
return state.activeFont;
}
void lovrGraphicsSetFont(Font* font) {
if (state.activeFont) {
lovrRelease(&state.activeFont->ref);
}
state.activeFont = font;
if (font) {
lovrRetain(&state.activeFont->ref);
}
}
Texture* lovrGraphicsGetTexture() {
return state.activeTexture;
}
@ -969,8 +963,7 @@ void lovrGraphicsPrint(const char* str, mat4 transform, float wrap, HorizontalAl
lovrGraphicsSetShader(state.fontShader);
}
lovrGraphicsEnsureFont();
Font* font = state.activeFont;
Font* font = lovrGraphicsGetFont();
float scale = 1 / font->pixelDensity;
float offsety;
lovrFontRender(font, str, wrap, halign, valign, &state.buffer.data, &offsety);

View File

@ -69,7 +69,6 @@ typedef struct {
Shader* skyboxShader;
Shader* fontShader;
Shader* fullscreenShader;
Font* activeFont;
Font* defaultFont;
Texture* activeTexture;
Texture* defaultTexture;
@ -93,6 +92,7 @@ typedef struct {
int culling;
TextureFilter defaultFilter;
CompareMode depthTest;
Font* font;
GraphicsLimits limits;
float lineWidth;
float pointSize;
@ -122,19 +122,19 @@ TextureFilter lovrGraphicsGetDefaultFilter();
void lovrGraphicsSetDefaultFilter(TextureFilter filter);
CompareMode lovrGraphicsGetDepthTest();
void lovrGraphicsSetDepthTest(CompareMode depthTest);
Font* lovrGraphicsGetFont();
void lovrGraphicsSetFont(Font* font);
GraphicsLimits lovrGraphicsGetLimits();
float lovrGraphicsGetLineWidth();
void lovrGraphicsSetLineWidth(float width);
float lovrGraphicsGetPointSize();
void lovrGraphicsSetPointSize(float size);
Shader* lovrGraphicsGetShader();
void lovrGraphicsSetShader(Shader* shader);
Winding lovrGraphicsGetWinding();
void lovrGraphicsSetWinding(Winding winding);
int lovrGraphicsIsWireframe();
void lovrGraphicsSetWireframe(int wireframe);
Shader* lovrGraphicsGetShader();
void lovrGraphicsSetShader(Shader* shader);
Font* lovrGraphicsGetFont();
void lovrGraphicsSetFont(Font* font);
Texture* lovrGraphicsGetTexture();
void lovrGraphicsBindTexture(Texture* texture);
mat4 lovrGraphicsGetProjection();