Add raw functions for putat in charwin

This commit is contained in:
drmortalwombat 2022-02-01 22:23:38 +01:00
parent 3507b09207
commit 90a1462ece
2 changed files with 38 additions and 1 deletions

View File

@ -291,6 +291,17 @@ void cwin_put_chars_raw(CharWin * win, const char * chars, char num, char color)
} }
} }
char cwin_put_string_raw(CharWin * win, const char * str, char color)
{
char n = cwin_putat_string_raw(win, win->cx, win->cy, str, color);
win->cx += n;
if (win->cx >= win->wx)
{
win->cx = 0;
win->cy++;
}
return n;
}
@ -342,7 +353,6 @@ char cwin_putat_string(CharWin * win, char x, char y, const char * str, char col
#pragma native(cwin_putat_string) #pragma native(cwin_putat_string)
void cwin_putat_char_raw(CharWin * win, char x, char y, char ch, char color) void cwin_putat_char_raw(CharWin * win, char x, char y, char ch, char color)
{ {
int offset = mul40[y] + x; int offset = mul40[y] + x;
@ -371,6 +381,25 @@ void cwin_putat_chars_raw(CharWin * win, char x, char y, const char * chars, cha
#pragma native(cwin_putat_chars_raw) #pragma native(cwin_putat_chars_raw)
char cwin_putat_string_raw(CharWin * win, char x, char y, const char * str, char color)
{
int offset = mul40[y] + x;
char * sp = win->sp + offset;
char * cp = win->cp + offset;
char i = 0;
while (char ch = str[i])
{
sp[i] = ch;
cp[i] = color;
i++;
}
return i;
}
#pragma native(cwin_putat_string_raw)
char cwin_getat_char(CharWin * win, char x, char y) char cwin_getat_char(CharWin * win, char x, char y)
{ {

View File

@ -71,6 +71,10 @@ void cwin_put_char_raw(CharWin * win, char ch, char color);
// //
void cwin_put_chars_raw(CharWin * win, const char * chars, char num, char color); void cwin_put_chars_raw(CharWin * win, const char * chars, char num, char color);
// Put a zero terminated raw string at the cursor location and advance the cursor
//
char cwin_put_string_raw(CharWin * win, const char * str, char color);
// Put a single char at the given window location // Put a single char at the given window location
@ -94,6 +98,10 @@ void cwin_putat_char_raw(CharWin * win, char x, char y, char ch, char color);
// //
void cwin_putat_chars_raw(CharWin * win, char x, char y, const char * chars, char num, char color); void cwin_putat_chars_raw(CharWin * win, char x, char y, const char * chars, char num, char color);
// Put a zero terminated string at the given window location
//
char cwin_putat_string_raw(CharWin * win, char x, char y, const char * str, char color);
// Get a single char at the given window location // Get a single char at the given window location
// //