Skip to content
Snippets Groups Projects
Commit 9952aab1 authored by deuce's avatar deuce
Browse files

Clean up win32_putch() to rely in ciolib rather than internal variables.

parent 91007283
No related branches found
No related tags found
No related merge requests found
......@@ -577,46 +577,63 @@ int win32_putch(int ch)
{
struct text_info ti;
unsigned char buf[2];
int i;
buf[0]=ch;
buf[1]=currattr;
gettextinfo(&ti);
switch(ch) {
case '\r':
win32_gotoxy(1,ypos);
gotoxy(1,wherey());
break;
case '\n':
if(ypos==ti.winbottom-ti.wintop+1)
gettextinfo(&ti);
if(ti.cury==ti.winbottom-ti.wintop+1)
wscroll();
else
win32_gotoxy(xpos,ypos+1);
gotoxy(ti.curx,ti.cury+1);
break;
case '\b':
if(ti.curx>ti.winleft) {
gettextinfo(&ti);
if(ti.curx>1) {
buf[0]=' ';
win32_gotoxy(xpos-1,ypos);
puttext(xpos,ypos,xpos,ypos,buf);
gotoxy(ti.curx-1,ti.cury);
puttext(ti.winleft+ti.curx-2, ti.wintop+ti.cury-1,ti.winleft+ti.curx-2, ti.wintop+ti.cury-1,buf);
}
break;
case 7: /* Bell */
MessageBeep(MB_OK);
break;
case '\t':
for(i=0;i<10;i++) {
if(cio_tabs[i]>wherex()) {
while(wherex()<cio_tabs[i]) {
putch(' ');
}
break;
}
}
if(i==10) {
putch('\r');
putch('\n');
}
break;
default:
if(ypos==ti.winbottom-ti.wintop+1
&& xpos==ti.winright-ti.winleft+1) {
puttext(xpos,ypos,xpos,ypos,buf);
win32_gotoxy(1,ypos);
gettextinfo(&ti);
if(ti.cury==ti.winbottom-ti.wintop+1
&& ti.curx==ti.winright-ti.winleft+1) {
puttext(ti.winleft+ti.curx-1, ti.wintop+ti.cury-1,ti.winleft+ti.curx-1, ti.wintop+ti.cury-1,buf);
wscroll();
gotoxy(1,ti.cury);
}
else {
if(xpos==ti.winright-ti.winleft+1) {
puttext(xpos,ypos,xpos,ypos,buf);
win32_gotoxy(1,ypos+1);
if(ti.curx==ti.winright-ti.winleft+1) {
puttext(ti.winleft+ti.curx-1, ti.wintop+ti.cury-1,ti.winleft+ti.curx-1, ti.wintop+ti.cury-1,buf);
gotoxy(1,ti.cury+1);
}
else {
puttext(xpos,ypos,xpos,ypos,buf);
win32_gotoxy(xpos+1,ypos);
puttext(ti.winleft+ti.curx-1, ti.wintop+ti.cury-1,ti.winleft+ti.curx-1, ti.wintop+ti.cury-1,buf);
gotoxy(ti.curx+1,ti.cury);
}
}
break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment