1
0
Fork 0
mirror of https://github.com/suchmememanyskill/TegraExplorer.git synced 2024-11-22 20:06:43 +00:00

create some helper functions in gfx.c

This commit is contained in:
suchmememanyskill 2020-08-04 01:16:50 +02:00
parent 0146f0ddb0
commit 5adb95095e
2 changed files with 54 additions and 6 deletions

View file

@ -180,6 +180,8 @@ void gfx_con_setpos(u32 x, u32 y)
gfx_con.y = YLEFT - x; gfx_con.y = YLEFT - x;
} }
u32 YLeftConfig = YLEFT;
void gfx_putc(char c) void gfx_putc(char c)
{ {
// Duplicate code for performance reasons. // Duplicate code for performance reasons.
@ -231,13 +233,13 @@ void gfx_putc(char c)
*/ */
gfx_con.y -= 16; gfx_con.y -= 16;
if (gfx_con.y < 16){ if (gfx_con.y < 16){
gfx_con.y = YLEFT; gfx_con.y = YLeftConfig;
gfx_con.x += 16; gfx_con.x += 16;
} }
} }
else if (c == '\n') else if (c == '\n')
{ {
gfx_con.y = YLEFT; gfx_con.y = YLeftConfig;
gfx_con.x += 16; gfx_con.x += 16;
if (gfx_con.x > gfx_ctxt.width - 16) if (gfx_con.x > gfx_ctxt.width - 16)
gfx_con.x = 0; gfx_con.x = 0;
@ -247,7 +249,7 @@ void gfx_putc(char c)
else if (c == '\a') else if (c == '\a')
gfx_con.y = 639; gfx_con.y = 639;
else if (c == '\r') else if (c == '\r')
gfx_con.y = YLEFT; gfx_con.y = YLeftConfig;
break; break;
case 8: case 8:
@ -273,14 +275,14 @@ void gfx_putc(char c)
gfx_con.y -= 8; gfx_con.y -= 8;
if (gfx_con.y < 8){ if (gfx_con.y < 8){
gfx_con.y = YLEFT; gfx_con.y = YLeftConfig;
gfx_con.x += 8; gfx_con.x += 8;
} }
} }
else if (c == '\n') else if (c == '\n')
{ {
gfx_con.y = YLEFT; gfx_con.y = YLeftConfig;
gfx_con.x += 8; gfx_con.x += 8;
if (gfx_con.x > gfx_ctxt.width - 8) if (gfx_con.x > gfx_ctxt.width - 8)
gfx_con.x = 0; gfx_con.x = 0;
@ -290,7 +292,7 @@ void gfx_putc(char c)
else if (c == '\a') else if (c == '\a')
gfx_con.y = 639; gfx_con.y = 639;
else if (c == '\r') else if (c == '\r')
gfx_con.y = YLEFT; gfx_con.y = YLeftConfig;
break; break;
} }
@ -305,6 +307,46 @@ void gfx_puts(const char *s)
gfx_putc(*s); gfx_putc(*s);
} }
u32 _strLenLimit(const char *s, u32 limit){
u32 len = 0;
for (; *s; s++){
len++;
if (len >= limit)
return len;
}
return len;
}
void gfx_puts_limit(const char *s, u32 limit)
{
if (!s || gfx_con.mute)
return;
for (u32 i = 0; i < limit; i++){
if (i == limit - 3){
if (_strLenLimit(&s[i], 4) >= 4){
gfx_puts("...");
return;
}
}
gfx_putc(s[i]);
}
/*
for (u32 i = 0; *s && i < limit; s++, i++){
if (i == limit - 3){
if (!(!(*s) || !(*(s + 1)) || !(*(s + 2)))){
gfx_puts("...");
return;
}
}
gfx_putc(*s);
}
*/
}
static void _gfx_putn(u32 v, int base, char fill, int fcnt) static void _gfx_putn(u32 v, int base, char fill, int fcnt)
{ {
char buf[65]; char buf[65];
@ -381,6 +423,11 @@ void gfx_vprintf(const char *fmt, va_list ap)
} }
switch(*fmt) switch(*fmt)
{ {
case 'b':;
u32 begin = YLEFT - va_arg(ap, u32);
YLeftConfig = begin;
gfx_con.y = begin;
break;
case 'c': case 'c':
gfx_putc(va_arg(ap, u32)); gfx_putc(va_arg(ap, u32));
break; break;

View file

@ -53,6 +53,7 @@ void gfx_set_rect_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 po
void gfx_render_bmp_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y); void gfx_render_bmp_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
void gfx_box(int x0, int y0, int x1, int y1, u32 color); void gfx_box(int x0, int y0, int x1, int y1, u32 color);
void gfx_boxGrey(int x0, int y0, int x1, int y1, u8 shade); void gfx_boxGrey(int x0, int y0, int x1, int y1, u8 shade);
void gfx_puts_limit(const char *s, u32 limit);
/* /*
#define GFX_SETPOSCORRECTED(x, y) gfx_con_setpos(y - YLEFT, x) #define GFX_SETPOSCORRECTED(x, y) gfx_con_setpos(y - YLEFT, x)