Enable displaying text
This commit is contained in:
@@ -12,13 +12,13 @@ public interface GUI extends Renderable, Disposable {
|
|||||||
|
|
||||||
void drawRectangle(float x, float y, float w, float h);
|
void drawRectangle(float x, float y, float w, float h);
|
||||||
|
|
||||||
void fillColor(Color color);
|
void fillColor(float red, float green, float blue, float alpha);
|
||||||
|
|
||||||
|
void strokeColor(float red, float green, float blue, float alpha);
|
||||||
|
|
||||||
void setFontFace(String fontUid);
|
void setFontFace(String fontUid);
|
||||||
|
|
||||||
void setFontSize(float size);
|
void setFontSize(float size);
|
||||||
|
|
||||||
void putText(float x, float y, CharSequence text);
|
void putText(float x, float y, CharSequence text);
|
||||||
|
|
||||||
Color createColor(float red, float green, float blue, float alpha);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class DefaultRenderer implements Renderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void clear() {
|
private void clear() {
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateViewport(Screen screen) {
|
private void updateViewport(Screen screen) {
|
||||||
|
|||||||
@@ -1,20 +1,17 @@
|
|||||||
package com.bartlomiejpluta.base.engine.gui.render;
|
package com.bartlomiejpluta.base.engine.gui.render;
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.api.game.camera.Camera;
|
import com.bartlomiejpluta.base.api.game.camera.Camera;
|
||||||
import com.bartlomiejpluta.base.api.game.gui.Color;
|
|
||||||
import com.bartlomiejpluta.base.api.game.gui.GUI;
|
import com.bartlomiejpluta.base.api.game.gui.GUI;
|
||||||
import com.bartlomiejpluta.base.api.game.gui.Widget;
|
import com.bartlomiejpluta.base.api.game.gui.Widget;
|
||||||
import com.bartlomiejpluta.base.api.game.screen.Screen;
|
import com.bartlomiejpluta.base.api.game.screen.Screen;
|
||||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||||
import com.bartlomiejpluta.base.engine.gui.manager.FontManager;
|
import com.bartlomiejpluta.base.engine.gui.manager.FontManager;
|
||||||
import com.bartlomiejpluta.base.engine.gui.model.NanoVGColorAdapter;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import org.lwjgl.nanovg.NVGColor;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static org.lwjgl.nanovg.NanoVG.*;
|
import static org.lwjgl.nanovg.NanoVG.*;
|
||||||
@@ -28,7 +25,7 @@ public class NanoVGGUI implements GUI {
|
|||||||
@Setter
|
@Setter
|
||||||
private Widget root;
|
private Widget root;
|
||||||
|
|
||||||
private final List<NanoVGColorAdapter> createdColors = new LinkedList<>();
|
private NVGColor color;
|
||||||
private final Set<String> loadedFonts = new HashSet<>();
|
private final Set<String> loadedFonts = new HashSet<>();
|
||||||
|
|
||||||
private final FontManager fontManager;
|
private final FontManager fontManager;
|
||||||
@@ -40,6 +37,8 @@ public class NanoVGGUI implements GUI {
|
|||||||
public void init(Screen screen) {
|
public void init(Screen screen) {
|
||||||
context = nvgCreate(NVG_ANTIALIAS | NVG_STENCIL_STROKES);
|
context = nvgCreate(NVG_ANTIALIAS | NVG_STENCIL_STROKES);
|
||||||
|
|
||||||
|
color = NVGColor.create();
|
||||||
|
|
||||||
if (context == NULL) {
|
if (context == NULL) {
|
||||||
throw new AppException("Could not onCreate NanoVG");
|
throw new AppException("Could not onCreate NanoVG");
|
||||||
}
|
}
|
||||||
@@ -66,22 +65,31 @@ public class NanoVGGUI implements GUI {
|
|||||||
nvgRect(context, x, y, w, h);
|
nvgRect(context, x, y, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fillColor(Color color) {
|
|
||||||
nvgFillColor(context, (NanoVGColorAdapter) color);
|
|
||||||
nvgFill(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void putText(float x, float y, CharSequence text) {
|
public void putText(float x, float y, CharSequence text) {
|
||||||
nvgText(context, x, y, text);
|
nvgText(context, x, y, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Color createColor(float red, float green, float blue, float alpha) {
|
public void fillColor(float red, float green, float blue, float alpha) {
|
||||||
var color = new NanoVGColorAdapter(red, green, blue, alpha);
|
color.r(red);
|
||||||
createdColors.add(color);
|
color.g(green);
|
||||||
return color;
|
color.b(blue);
|
||||||
|
color.a(alpha);
|
||||||
|
|
||||||
|
nvgFillColor(context, color);
|
||||||
|
nvgFill(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void strokeColor(float red, float green, float blue, float alpha) {
|
||||||
|
color.r(red);
|
||||||
|
color.g(green);
|
||||||
|
color.b(blue);
|
||||||
|
color.a(alpha);
|
||||||
|
|
||||||
|
nvgStrokeColor(context, color);
|
||||||
|
nvgFill(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -102,7 +110,7 @@ public class NanoVGGUI implements GUI {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
createdColors.forEach(NanoVGColorAdapter::dispose);
|
color.free();
|
||||||
nvgDelete(context);
|
nvgDelete(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,9 +112,6 @@ public class GLFWScreen implements Screen {
|
|||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
// Required by GUI
|
|
||||||
glEnable(GL_STENCIL_TEST);
|
|
||||||
|
|
||||||
// Set the clear color
|
// Set the clear color
|
||||||
clear(0.0f, 0.0f, 0.0f, 0.0f);
|
clear(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
}
|
}
|
||||||
@@ -137,7 +134,6 @@ public class GLFWScreen implements Screen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restoreState() {
|
public void restoreState() {
|
||||||
glEnable(GL_STENCIL_TEST);
|
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user