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