Working on fixing grid movement.

This commit is contained in:
2021-09-11 17:23:31 -07:00
parent 9b179778b9
commit 4f705ad278
7 changed files with 25 additions and 20 deletions

View File

@ -27,14 +27,6 @@ typedef struct {
float gutterY; float gutterY;
} gridbreakpoint_t; } gridbreakpoint_t;
/** Callback to receive when a grid child is to be resized */
typedef void gridchildresizecallback_t(
void *user, uint8_t i,
float screenWidth, float screenHeight,
float x, float y,
float width, float height
);
/** Definition of a grid child's breakpoint */ /** Definition of a grid child's breakpoint */
typedef struct { typedef struct {
uint8_t columns; uint8_t columns;
@ -43,6 +35,14 @@ typedef struct {
uint8_t y; uint8_t y;
} gridchildbreakpoint_t; } gridchildbreakpoint_t;
/** Callback to receive when a grid child is to be resized */
typedef void gridchildresizecallback_t(
void *user, uint8_t i, gridchildbreakpoint_t *breakpoint,
float screenWidth, float screenHeight,
float x, float y,
float width, float height
);
/** Definition of a grid child */ /** Definition of a grid child */
typedef struct { typedef struct {
gridchildbreakpoint_t breakpoints[GRID_BREAKPOINT_COUNT]; gridchildbreakpoint_t breakpoints[GRID_BREAKPOINT_COUNT];

View File

@ -5,6 +5,7 @@
#pragma once #pragma once
#include "../libs.h" #include "../libs.h"
#include "../display/font.h"
#include "menuv2.h" #include "menuv2.h"
#include "grid.h" #include "grid.h"
#include "label.h" #include "label.h"

View File

@ -190,8 +190,6 @@ void fontTextClamp(font_t *font, fonttextinfo_t *info, char *text,
info->width = mathMax(info->width, quad->x1); info->width = mathMax(info->width, quad->x1);
info->height = mathMax(info->height, quad->y1); info->height = mathMax(info->height, quad->y1);
} }
printf("Break");
} }
int32_t fontGetLineCharCount(fonttextinfo_t *info,int32_t start,int32_t count) { int32_t fontGetLineCharCount(fonttextinfo_t *info,int32_t start,int32_t count) {

View File

@ -11,7 +11,6 @@ void framedTextMenuInit(framedtextmenu_t *menu, font_t *font, texture_t *text) {
frameInit(&menu->frame); frameInit(&menu->frame);
textMenuInit(&menu->menu, font); textMenuInit(&menu->menu, font);
menu->frame.texture = text; menu->frame.texture = text;
menu->width = -1; menu->width = -1;
menu->height = -1; menu->height = -1;
} }

View File

@ -122,7 +122,7 @@ void gridSetSize(grid_t *grid,
// Fire the resize event. // Fire the resize event.
grid->onResize( grid->onResize(
grid->user, i, grid->user, i, childbp,
screenWidth, screenHeight, screenWidth, screenHeight,
x + gx, y + gy, x + gx, y + gy,
gw, gh gw, gh

View File

@ -19,12 +19,13 @@ void menu2Init(menuv2_t *menu) {
} }
void menu2Update(menuv2_t *menu, engine_t *engine) { void menu2Update(menuv2_t *menu, engine_t *engine) {
uint8_t x, y, i, j; uint8_t x, y, i, j, cx, cy;
gridchild_t *current; gridchild_t *current;
gridchildbreakpoint_t *currentbp; gridchildbreakpoint_t *currentbp;
gridchild_t *item; gridchild_t *item;
gridchildbreakpoint_t *itembp; gridchildbreakpoint_t *itembp;
current = menu->grid.children + menu->selected; current = menu->grid.children + menu->selected;
currentbp = gridChildGetBreakpoint(current, menu->grid.breakpointCurrent); currentbp = gridChildGetBreakpoint(current, menu->grid.breakpointCurrent);
@ -56,15 +57,19 @@ void menu2Update(menuv2_t *menu, engine_t *engine) {
// Update cursor positions // Update cursor positions
if(x != 0 || y != 0) { if(x != 0 || y != 0) {
if(x > 0) { if(x > 0) {
menu->cursorX = (currentbp->x + currentbp->columns - 1) + x; cx = (currentbp->x + currentbp->columns - 1) + x;
} else if(x < 0) { } else if(x < 0) {
menu->cursorX = currentbp->x + x; cx = currentbp->x + x;
} else {
cx = menu->cursorX;
} }
if(y > 0) { if(y > 0) {
menu->cursorY = (currentbp->y + currentbp->rows - 1) + y; cy = (currentbp->y + currentbp->rows - 1) + y;
} else if(y < 0) { } else if(y < 0) {
menu->cursorY = currentbp->y + y; cy = currentbp->y + y;
} else {
cy = menu->cursorY;
} }
// Get the item selected // Get the item selected
@ -75,8 +80,8 @@ void menu2Update(menuv2_t *menu, engine_t *engine) {
itembp = gridChildGetBreakpoint(item, menu->grid.breakpointCurrent); itembp = gridChildGetBreakpoint(item, menu->grid.breakpointCurrent);
if( if(
itembp->x > menu->cursorX||(itembp->x+itembp->columns-1)<menu->cursorX|| itembp->x > cx || (itembp->x + itembp->columns - 1) < cx ||
itembp->y > menu->cursorY||(itembp->y+itembp->rows-1) < menu->cursorY itembp->y > cy || (itembp->y + itembp->rows - 1) < cy
) continue; ) continue;
j = i; j = i;
@ -85,6 +90,8 @@ void menu2Update(menuv2_t *menu, engine_t *engine) {
// Was a target found? // Was a target found?
if(j == GRID_CHILD_COUNT) return; if(j == GRID_CHILD_COUNT) return;
menu->cursorX = cx;
menu->cursorY = cy;
menu->selected = j; menu->selected = j;
} }
} }

View File

@ -16,7 +16,7 @@ void _textMenuOnSelect(menuv2_t *menu, uint8_t i) {
} }
void _textMenuOnResize( void _textMenuOnResize(
void *user, uint8_t i, void *user, uint8_t i, gridchildbreakpoint_t *breakpoint,
float screenWidth, float screenHeight, float screenWidth, float screenHeight,
float x, float y, float x, float y,
float width, float height float width, float height