sokol_gl based rendering
This commit is contained in:
26
Source/Maker/Widgets/border.c
Normal file
26
Source/Maker/Widgets/border.c
Normal file
@ -0,0 +1,26 @@
|
||||
#if defined(STFU_MAIN) && !defined(STFU_BORDER)
|
||||
#define STFU_BORDER
|
||||
|
||||
struct stfu_border {
|
||||
float x, y;
|
||||
float width, height;
|
||||
float r, g, b;
|
||||
};
|
||||
|
||||
static void stfu_draw_border(struct stfu_border border) {
|
||||
{
|
||||
sgl_begin_lines();
|
||||
sgl_c3f(border.r, border.g, border.b);
|
||||
sgl_v2f(border.x, border.y);
|
||||
sgl_v2f(border.x + border.width, border.y);
|
||||
sgl_v2f(border.x + border.width, border.y);
|
||||
sgl_v2f(border.x + border.width, border.y + border.height);
|
||||
sgl_v2f(border.x + border.width, border.y + border.height);
|
||||
sgl_v2f(border.x, border.y + border.height);
|
||||
sgl_v2f(border.x, border.y + border.height);
|
||||
sgl_v2f(border.x, border.y);
|
||||
sgl_end();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
38
Source/Maker/Widgets/slider.c
Normal file
38
Source/Maker/Widgets/slider.c
Normal file
@ -0,0 +1,38 @@
|
||||
#include "../config.h"
|
||||
#include "border.c"
|
||||
|
||||
#define STFU_SLIDER_WIDTH 16
|
||||
|
||||
struct stfu_slider {
|
||||
float x, y;
|
||||
float width, height;
|
||||
float r, g, b;
|
||||
float min, max, cur;
|
||||
};
|
||||
|
||||
static void stfu_draw_slider(struct stfu_slider slider) {
|
||||
/* Border */
|
||||
stfu_draw_border((struct stfu_border){
|
||||
.x = slider.x,
|
||||
.y = slider.y,
|
||||
.width = slider.width,
|
||||
.height = slider.height,
|
||||
.r = slider.r,
|
||||
.g = slider.g,
|
||||
.b = slider.b,
|
||||
});
|
||||
|
||||
/* Slider */
|
||||
{
|
||||
float progress = (slider.cur - slider.min) / (slider.max - slider.min);
|
||||
float x = slider.x + (slider.width - STFU_SLIDER_WIDTH) * progress;
|
||||
|
||||
sgl_begin_quads();
|
||||
sgl_c3f(slider.r, slider.g, slider.b);
|
||||
sgl_v2f(x, slider.y);
|
||||
sgl_v2f(x + STFU_SLIDER_WIDTH, slider.y);
|
||||
sgl_v2f(x + STFU_SLIDER_WIDTH, slider.y + slider.height);
|
||||
sgl_v2f(x, slider.y + slider.height);
|
||||
sgl_end();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user