Render x/y for UI elements.
This commit is contained in:
@ -8,9 +8,6 @@
|
||||
#include "frame.h"
|
||||
|
||||
void frameInit(frame_t *frame) {
|
||||
frame->x = 0;
|
||||
frame->y = 0;
|
||||
|
||||
primitiveInit(
|
||||
&frame->primitive,
|
||||
QUAD_VERTICE_COUNT * FRAME_PRIMITIVE_COUNT,
|
||||
@ -103,8 +100,8 @@ void frameSetInnerSize(frame_t *frame, float width, float height) {
|
||||
);
|
||||
}
|
||||
|
||||
void frameRender(frame_t *frame, shader_t *shader) {
|
||||
shaderUsePosition(shader, frame->x, frame->y, 0, 0, 0, 0);
|
||||
void frameRender(frame_t *frame, shader_t *shader, float x, float y) {
|
||||
shaderUsePosition(shader, x, y, 0, 0, 0, 0);
|
||||
shaderUseTexture(shader, frame->texture);
|
||||
primitiveDraw(&frame->primitive, 0, -1);
|
||||
}
|
||||
|
@ -41,8 +41,10 @@ void frameSetInnerSize(frame_t *frame, float width, float height);
|
||||
*
|
||||
* @param frame Frame to render.
|
||||
* @param shader Shader to use while rendering.
|
||||
* @param x X position.
|
||||
* @param y Y position.
|
||||
*/
|
||||
void frameRender(frame_t *frame, shader_t *shader);
|
||||
void frameRender(frame_t *frame, shader_t *shader, float x, float y);
|
||||
|
||||
/**
|
||||
* Cleanup a previously initialized frame.
|
||||
|
@ -8,8 +8,6 @@
|
||||
#include "image.h"
|
||||
|
||||
void imageInit(image_t *image, texture_t *texture) {
|
||||
image->x = 0;
|
||||
image->y = 0;
|
||||
image->quad.verticeCount = -1;
|
||||
imageSetTexture(image, texture);
|
||||
}
|
||||
@ -24,8 +22,8 @@ void imageSetTexture(image_t *image, texture_t *texture) {
|
||||
quadInit(&image->quad, 0, 0,0,0,0, texture->width,texture->height,1,1);
|
||||
}
|
||||
|
||||
void imageRender(image_t *image, shader_t *shader) {
|
||||
shaderUsePosition(shader, image->x, image->y, 0, 0, 0, 0);
|
||||
void imageRender(image_t *image, shader_t *shader, float x, float y) {
|
||||
shaderUsePosition(shader, x, y, 0, 0, 0, 0);
|
||||
primitiveDraw(&image->quad, 0, -1);
|
||||
}
|
||||
|
||||
|
@ -32,8 +32,10 @@ void imageSetTexture(image_t *image, texture_t *texture);
|
||||
*
|
||||
* @param image Image to render.
|
||||
* @param shader Shader to use while rendering.
|
||||
* @param x X position.
|
||||
* @param y Y position.
|
||||
*/
|
||||
void imageRender(image_t *image, shader_t *shader);
|
||||
void imageRender(image_t *image, shader_t *shader, float x, float y);
|
||||
|
||||
/**
|
||||
* Cleanup a previously initialized image.
|
||||
|
@ -8,8 +8,6 @@
|
||||
#include "label.h"
|
||||
|
||||
void labelInit(label_t *label) {
|
||||
label->x = 0;
|
||||
label->y = 0;
|
||||
label->fontSize = FONT_SIZE_DEFAULT;
|
||||
label->font = NULL;
|
||||
label->primitive.verticeCount = 0;
|
||||
@ -26,9 +24,9 @@ void labelSetText(label_t *label, font_t *font, char *text) {
|
||||
fontTextInit(font, &label->primitive, &label->info);
|
||||
}
|
||||
|
||||
void labelRender(label_t *label, shader_t *shader) {
|
||||
void labelRender(label_t *label, shader_t *shader, float x, float y) {
|
||||
if(label->primitive.verticeCount == 0) return;
|
||||
shaderUsePosition(shader, label->x,label->y,0, 0,0,0);
|
||||
shaderUsePosition(shader, x,y,0, 0,0,0);
|
||||
shaderUseTexture(shader, &label->font->texture);
|
||||
primitiveDraw(&label->primitive, 0, -1);
|
||||
}
|
||||
|
@ -29,8 +29,10 @@ void labelSetText(label_t *label, font_t *font, char *text);
|
||||
*
|
||||
* @param label Label to render.
|
||||
* @param shader Shader to use while rendering.
|
||||
* @param x X position.
|
||||
* @param y Y position.
|
||||
*/
|
||||
void labelRender(label_t *label, shader_t *shader);
|
||||
void labelRender(label_t *label, shader_t *shader, float x, float y);
|
||||
|
||||
/**
|
||||
* Dispose a previously created label.
|
||||
|
@ -14,8 +14,6 @@ void _menuListMenuOnSelect(menu_t *menu, menuitem_t *item, uint8_t i, void *u) {
|
||||
}
|
||||
|
||||
void menuListInit(menulist_t *ml, texture_t *texture) {
|
||||
ml->x = 0;
|
||||
ml->y = 0;
|
||||
ml->onSelect = NULL;
|
||||
|
||||
// Initialize menu
|
||||
@ -67,33 +65,29 @@ void menuListUpdate(menulist_t *ml, engine_t *engine) {
|
||||
menuUpdate(&ml->menu, engine);
|
||||
}
|
||||
|
||||
void menuListRender(menulist_t *ml, shader_t *shader) {
|
||||
void menuListRender(menulist_t *ml, shader_t *shader, float x, float y) {
|
||||
uint8_t i;
|
||||
label_t *label;
|
||||
float fontScale;
|
||||
|
||||
fontScale = fontGetScale(ml->labels->fontSize);
|
||||
|
||||
// Render the frame
|
||||
ml->frame.x = ml->x;
|
||||
ml->frame.y = ml->y;
|
||||
frameRender(&ml->frame, shader);
|
||||
frameRender(&ml->frame, shader, x, y);
|
||||
|
||||
// Render selection box.
|
||||
ml->selection.x = ml->x + FRAME_BORDER_SIZE;
|
||||
ml->selection.y = ml->y + FRAME_BORDER_SIZE +(
|
||||
ml->menu.selected * FONT_LINE_HEIGHT * fontScale
|
||||
);
|
||||
ml->selection.width = 100;
|
||||
ml->selection.height = FONT_LINE_HEIGHT * fontScale;
|
||||
rectangleRender(&ml->selection, shader);
|
||||
rectangleRender(&ml->selection, shader,
|
||||
x + FRAME_BORDER_SIZE,
|
||||
y + FRAME_BORDER_SIZE +ml->menu.selected * FONT_LINE_HEIGHT * fontScale
|
||||
);
|
||||
|
||||
// Render each label.
|
||||
for(i = 0; i < ml->menu.itemCount; i++) {
|
||||
label = ml->labels + i;
|
||||
label->x = FRAME_BORDER_SIZE;
|
||||
label->y = FRAME_BORDER_SIZE + i * FONT_LINE_HEIGHT * fontScale;
|
||||
labelRender(label, shader);
|
||||
labelRender(ml->labels + i, shader,
|
||||
FRAME_BORDER_SIZE,
|
||||
FRAME_BORDER_SIZE + i * FONT_LINE_HEIGHT * fontScale
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,8 +46,10 @@ void menuListUpdate(menulist_t *ml, engine_t *engine);
|
||||
*
|
||||
* @param ml Menu list to render.
|
||||
* @param shader Shader to use.
|
||||
* @param x X position.
|
||||
* @param y Y position.
|
||||
*/
|
||||
void menuListRender(menulist_t *ml, shader_t *shader);
|
||||
void menuListRender(menulist_t *ml, shader_t *shader, float x, float y);
|
||||
|
||||
/**
|
||||
* Cleanup a previously created menu list.
|
||||
|
@ -8,8 +8,6 @@
|
||||
#include "rectangle.h"
|
||||
|
||||
void rectangleInit(rectangle_t *rectangle) {
|
||||
rectangle->x = 0;
|
||||
rectangle->y = 0;
|
||||
rectangle->width = 32;
|
||||
rectangle->height = 32;
|
||||
textureInit(&rectangle->texture, 1, 1, NULL);
|
||||
@ -22,14 +20,14 @@ void rectangleSetColor(rectangle_t *rectangle, pixel_t color) {
|
||||
);
|
||||
}
|
||||
|
||||
void rectangleRender(rectangle_t *rectangle, shader_t *shader) {
|
||||
void rectangleRender(rectangle_t *rect, shader_t *shader, float x, float y) {
|
||||
shaderUsePositionAndScale(shader,
|
||||
rectangle->x, rectangle->y, 0,
|
||||
x, y, 0,
|
||||
0, 0, 0,
|
||||
rectangle->width, rectangle->height, 1
|
||||
rect->width, rect->height, 1
|
||||
);
|
||||
shaderUseTexture(shader, &rectangle->texture);
|
||||
primitiveDraw(&rectangle->quad, 0, -1);
|
||||
shaderUseTexture(shader, &rect->texture);
|
||||
primitiveDraw(&rect->quad, 0, -1);
|
||||
}
|
||||
|
||||
void rectangleDispose(rectangle_t *rectangle) {
|
||||
|
@ -16,6 +16,6 @@ void rectangleInit(rectangle_t *rectangle);
|
||||
|
||||
void rectangleSetColor(rectangle_t *rectangle, pixel_t color);
|
||||
|
||||
void rectangleRender(rectangle_t *rectangle, shader_t *shader);
|
||||
void rectangleRender(rectangle_t *rect, shader_t *shader, float x, float y);
|
||||
|
||||
void rectangleDispose(rectangle_t *rectangle);
|
Reference in New Issue
Block a user