Add charwin get/put rect functions
This commit is contained in:
parent
864c8ec9a5
commit
67142bdb01
|
@ -422,7 +422,7 @@ char cwin_getat_char_raw(CharWin * win, char x, char y)
|
||||||
return *sp;
|
return *sp;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma native(cwin_getat_char_raw)
|
#pragma native(cwin_getat_chars_raw)
|
||||||
|
|
||||||
void cwin_getat_chars_raw(CharWin * win, char x, char y, char * chars, char num)
|
void cwin_getat_chars_raw(CharWin * win, char x, char y, char * chars, char num)
|
||||||
{
|
{
|
||||||
|
@ -434,6 +434,98 @@ void cwin_getat_chars_raw(CharWin * win, char x, char y, char * chars, char num)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma native(cwin_put_rect_raw)
|
||||||
|
|
||||||
|
void cwin_put_rect_raw(CharWin * win, char x, char y, char w, char h, const char * chars, char color)
|
||||||
|
{
|
||||||
|
int offset = mul40[y] + x;
|
||||||
|
|
||||||
|
char * sp = win->sp + offset;
|
||||||
|
char * cp = win->cp + offset;
|
||||||
|
|
||||||
|
for(char i=0; i<h; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
for(char j=0; j<w; j++)
|
||||||
|
{
|
||||||
|
sp[j] = chars[j];
|
||||||
|
cp[j] = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
chars += w;
|
||||||
|
sp += 40;
|
||||||
|
cp += 40;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma native(cwin_put_rect)
|
||||||
|
|
||||||
|
void cwin_put_rect(CharWin * win, char x, char y, char w, char h, const char * chars, char color)
|
||||||
|
{
|
||||||
|
int offset = mul40[y] + x;
|
||||||
|
|
||||||
|
char * sp = win->sp + offset;
|
||||||
|
char * cp = win->cp + offset;
|
||||||
|
|
||||||
|
for(char i=0; i<h; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
for(char j=0; j<w; j++)
|
||||||
|
{
|
||||||
|
sp[j] = p2s(chars[j]);
|
||||||
|
cp[j] = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
chars += w;
|
||||||
|
sp += 40;
|
||||||
|
cp += 40;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma native(cwin_get_rect_raw)
|
||||||
|
|
||||||
|
void cwin_get_rect_raw(CharWin * win, char x, char y, char w, char h, char * chars)
|
||||||
|
{
|
||||||
|
int offset = mul40[y] + x;
|
||||||
|
|
||||||
|
char * sp = win->sp + offset;
|
||||||
|
|
||||||
|
for(char i=0; i<h; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
for(char j=0; j<w; j++)
|
||||||
|
{
|
||||||
|
chars[j] = sp[j];
|
||||||
|
}
|
||||||
|
|
||||||
|
chars += w;
|
||||||
|
sp += 40;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma native(cwin_get_rect)
|
||||||
|
|
||||||
|
void cwin_get_rect(CharWin * win, char x, char y, char w, char h, char * chars)
|
||||||
|
{
|
||||||
|
int offset = mul40[y] + x;
|
||||||
|
|
||||||
|
char * sp = win->sp + offset;
|
||||||
|
|
||||||
|
for(char i=0; i<h; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
for(char j=0; j<w; j++)
|
||||||
|
{
|
||||||
|
chars[j] = s2p(sp[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
chars += w;
|
||||||
|
sp += 40;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#pragma native(cwin_getat_chars_raw)
|
#pragma native(cwin_getat_chars_raw)
|
||||||
|
|
||||||
void cwin_insert_char(CharWin * win)
|
void cwin_insert_char(CharWin * win)
|
||||||
|
|
|
@ -122,6 +122,17 @@ char cwin_getat_char_raw(CharWin * win, char x, char y);
|
||||||
void cwin_getat_chars_raw(CharWin * win, char x, char y, char * chars, char num);
|
void cwin_getat_chars_raw(CharWin * win, char x, char y, char * chars, char num);
|
||||||
|
|
||||||
|
|
||||||
|
// Put an array of characters into a rectangle in the char win
|
||||||
|
void cwin_put_rect_raw(CharWin * win, char x, char y, char w, char h, const char * chars, char color);
|
||||||
|
|
||||||
|
void cwin_put_rect(CharWin * win, char x, char y, char w, char h, const char * chars, char color);
|
||||||
|
|
||||||
|
// Get an array of characters from a rectangle of a char win
|
||||||
|
void cwin_get_rect_raw(CharWin * win, char x, char y, char w, char h, char * chars);
|
||||||
|
|
||||||
|
void cwin_get_rect(CharWin * win, char x, char y, char w, char h, char * chars);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Insert one space character at the cursor position
|
// Insert one space character at the cursor position
|
||||||
//
|
//
|
||||||
|
@ -160,6 +171,8 @@ inline void cwin_fill_rect(CharWin * win, char x, char y, char w, char h, char c
|
||||||
//
|
//
|
||||||
void cwin_fill_rect_raw(CharWin * win, char x, char y, char w, char h, char ch, char color);
|
void cwin_fill_rect_raw(CharWin * win, char x, char y, char w, char h, char ch, char color);
|
||||||
|
|
||||||
|
|
||||||
#pragma compile("charwin.c")
|
#pragma compile("charwin.c")
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue