Skip to content

Commit

Permalink
Change the window outline to a simple border and change icons as requ…
Browse files Browse the repository at this point in the history
…ested in #380

fixes #380
  • Loading branch information
IntegratedQuantum committed May 24, 2024
1 parent 5495c37 commit a9c21ed
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 12 deletions.
66 changes: 66 additions & 0 deletions src/graphics.zig
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,70 @@ pub const draw = struct {
c.glDrawArrays(c.GL_TRIANGLE_STRIP, 0, 4);
}

// ----------------------------------------------------------------------------
// Stuff for fillRectBorder:
var rectBorderUniforms: struct {
screen: c_int,
start: c_int,
size: c_int,
rectColor: c_int,
lineWidth: c_int,
} = undefined;
var rectBorderShader: Shader = undefined;
var rectBorderVAO: c_uint = undefined;
var rectBorderVBO: c_uint = undefined;

fn initRectBorder() void {
rectBorderShader = Shader.initAndGetUniforms("assets/cubyz/shaders/graphics/RectBorder.vs", "assets/cubyz/shaders/graphics/RectBorder.fs", &rectBorderUniforms);
const rawData = [_]f32 {
0, 0, 0, 0,
0, 0, 1, 1,
0, 1, 0, 0,
0, 1, 1, -1,
1, 1, 0, 0,
1, 1, -1, -1,
1, 0, 0, 0,
1, 0, -1, 1,
0, 0, 0, 0,
0, 0, 1, 1,
};

c.glGenVertexArrays(1, &rectBorderVAO);
c.glBindVertexArray(rectBorderVAO);
c.glGenBuffers(1, &rectBorderVBO);
c.glBindBuffer(c.GL_ARRAY_BUFFER, rectBorderVBO);
c.glBufferData(c.GL_ARRAY_BUFFER, rawData.len*@sizeOf(f32), &rawData, c.GL_STATIC_DRAW);
c.glVertexAttribPointer(0, 4, c.GL_FLOAT, c.GL_FALSE, 4*@sizeOf(f32), null);
c.glEnableVertexAttribArray(0);
}

fn deinitRectBorder() void {
rectBorderShader.deinit();
c.glDeleteVertexArrays(1, &rectBorderVAO);
c.glDeleteBuffers(1, &rectBorderVBO);
}

pub fn rectBorder(_pos: Vec2f, _dim: Vec2f, _width: f32) void {
var pos = _pos;
var dim = _dim;
var width = _width;
pos *= @splat(scale);
pos += translation;
dim *= @splat(scale);
width *= scale;

rectBorderShader.bind();

c.glUniform2f(rectBorderUniforms.screen, @floatFromInt(Window.width), @floatFromInt(Window.height));
c.glUniform2f(rectBorderUniforms.start, pos[0], pos[1]);
c.glUniform2f(rectBorderUniforms.size, dim[0], dim[1]);
c.glUniform1i(rectBorderUniforms.rectColor, @bitCast(color));
c.glUniform1f(rectBorderUniforms.lineWidth, width);

c.glBindVertexArray(rectBorderVAO);
c.glDrawArrays(c.GL_TRIANGLE_STRIP, 0, 10);
}

// ----------------------------------------------------------------------------
// Stuff for drawLine:
var lineUniforms: struct {
Expand Down Expand Up @@ -1049,6 +1113,7 @@ pub fn init() void {
draw.initImage();
draw.initLine();
draw.initRect();
draw.initRectBorder();
TextRendering.init() catch |err| {
std.log.err("Error while initializing TextRendering: {s}", .{@errorName(err)});
};
Expand All @@ -1061,6 +1126,7 @@ pub fn deinit() void {
draw.deinitImage();
draw.deinitLine();
draw.deinitRect();
draw.deinitRectBorder();
TextRendering.deinit();
block_texture.deinit();
}
Expand Down
22 changes: 10 additions & 12 deletions src/gui/GuiWindow.zig
Original file line number Diff line number Diff line change
Expand Up @@ -447,9 +447,9 @@ fn drawOrientationLines(self: *const GuiWindow) void {

pub fn drawIcons(self: *const GuiWindow) void {
draw.setColor(0xffffffff);
closeTexture.render(.{self.size[0]/self.scale - 16, 0}, .{16, 16});
zoomOutTexture.render(.{self.size[0]/self.scale - 32, 0}, .{16, 16});
zoomInTexture.render(.{self.size[0]/self.scale - 48, 0}, .{16, 16});
closeTexture.render(.{self.size[0]/self.scale - 16, 2}, .{14, 14});
zoomOutTexture.render(.{self.size[0]/self.scale - 32, 2}, .{14, 14});
zoomInTexture.render(.{self.size[0]/self.scale - 48, 2}, .{14, 14});
}

pub fn render(self: *const GuiWindow, mousePosition: Vec2f) void {
Expand All @@ -470,30 +470,28 @@ pub fn render(self: *const GuiWindow, mousePosition: Vec2f) void {
shader.bind();
titleTexture.bindTo(0);
draw.setColor(0xff000000);
draw.customShadedRect(windowUniforms, .{0, 0}, .{self.size[0]/self.scale, 16});
draw.customShadedRect(windowUniforms, .{0, 0}, .{self.size[0]/self.scale, 18});
self.drawIcons();
} else if(!main.Window.grabbed) {
if(self.titleBarExpanded) {
shader.bind();
titleTexture.bindTo(0);
draw.setColor(0xff000000);
draw.customShadedRect(windowUniforms, .{0, 0}, .{self.size[0]/self.scale, 16});
draw.customShadedRect(windowUniforms, .{0, 0}, .{self.size[0]/self.scale, 18});
self.drawIcons();
expandTitleBarTexture.render(.{0, 0}, .{16, 16});
expandTitleBarTexture.render(.{2, 2}, .{14, 14});
} else {
shader.bind();
titleTexture.bindTo(0);
draw.setColor(0xff000000);
draw.customShadedRect(windowUniforms, .{0, 0}, .{16, 16});
draw.customShadedRect(windowUniforms, .{0, 0}, .{18, 18});
draw.setColor(0xffffffff);
expandTitleBarTexture.render(.{0, 0}, .{16, 16});
expandTitleBarTexture.render(.{2, 2}, .{14, 14});
}
}
if(self.hasBackground or (!main.Window.grabbed and self.titleBarExpanded)) {
draw.setColor(0x80000000);
borderShader.bind();
graphics.c.glUniform2f(borderUniforms.effectLength, 2.5, 2.5);
draw.customShadedRect(borderUniforms, .{0, 0}, self.size/@as(Vec2f, @splat(self.scale)));
draw.setColor(0xff1d1d1d);
draw.rectBorder(.{-2, -2}, self.size/@as(Vec2f, @splat(self.scale)) + Vec2f{4, 4}, 2.0);
}
draw.restoreTranslation(oldTranslation);
draw.restoreScale(oldScale);
Expand Down

0 comments on commit a9c21ed

Please sign in to comment.