diff --git a/src/syncdraw/draw.c b/src/syncdraw/draw.c index 94c94a5e6217e4a474e5455ced8ada7f824ede64..141a2f5636933b88f6adfa3e6d79ee8433e9c508 100644 --- a/src/syncdraw/draw.c +++ b/src/syncdraw/draw.c @@ -9,6 +9,14 @@ #include "options.h" #include "miscfunctions.h" +enum { + MOVE_NONE + ,MOVE_UP + ,MOVE_DOWN + ,MOVE_RIGHT + ,MOVE_LEFT +}; + void addlinestr(char *bottom, char *top, char *result) { @@ -226,124 +234,124 @@ line2str(unsigned char ch, char *buffer) { switch (ch) { case 179: - strncpy(buffer, "SNSN", 5); + strcpy(buffer, "SNSN"); break; case 180: - strncpy(buffer, "SNSS", 5); + strcpy(buffer, "SNSS"); break; case 191: - strncpy(buffer, "NNSS", 5); + strcpy(buffer, "NNSS"); break; case 217: - strncpy(buffer, "SNNS", 5); + strcpy(buffer, "SNNS"); break; case 192: - strncpy(buffer, "SSNN", 5); + strcpy(buffer, "SSNN"); break; case 218: - strncpy(buffer, "NSSN", 5); + strcpy(buffer, "NSSN"); break; case 193: - strncpy(buffer, "SSNS", 5); + strcpy(buffer, "SSNS"); break; case 194: - strncpy(buffer, "NSSS", 5); + strcpy(buffer, "NSSS"); break; case 195: - strncpy(buffer, "SSSN", 5); + strcpy(buffer, "SSSN"); break; case 196: - strncpy(buffer, "NSNS", 5); + strcpy(buffer, "NSNS"); break; case 197: - strncpy(buffer, "SSSS", 5); + strcpy(buffer, "SSSS"); break; case 181: - strncpy(buffer, "SNSD", 5); + strcpy(buffer, "SNSD"); break; case 184: - strncpy(buffer, "NNSD", 5); + strcpy(buffer, "NNSD"); break; case 190: - strncpy(buffer, "SNND", 5); + strcpy(buffer, "SNND"); break; case 212: - strncpy(buffer, "SDNN", 5); + strcpy(buffer, "SDNN"); break; case 213: - strncpy(buffer, "NDSN", 5); + strcpy(buffer, "NDSN"); break; case 207: - strncpy(buffer, "SDND", 5); + strcpy(buffer, "SDND"); break; case 209: - strncpy(buffer, "NDSD", 5); + strcpy(buffer, "NDSD"); break; case 198: - strncpy(buffer, "SDSN", 5); + strcpy(buffer, "SDSN"); break; case 216: - strncpy(buffer, "SDSD", 5); + strcpy(buffer, "SDSD"); break; case 182: - strncpy(buffer, "DNDS", 5); + strcpy(buffer, "DNDS"); break; case 183: - strncpy(buffer, "NNDS", 5); + strcpy(buffer, "NNDS"); break; case 189: - strncpy(buffer, "DNNS", 5); + strcpy(buffer, "DNNS"); break; case 211: - strncpy(buffer, "DSNN", 5); + strcpy(buffer, "DSNN"); break; case 214: - strncpy(buffer, "NSDN", 5); + strcpy(buffer, "NSDN"); break; case 208: - strncpy(buffer, "DSNS", 5); + strcpy(buffer, "DSNS"); break; case 210: - strncpy(buffer, "NSDS", 5); + strcpy(buffer, "NSDS"); break; case 199: - strncpy(buffer, "DSDN", 5); + strcpy(buffer, "DSDN"); break; case 215: - strncpy(buffer, "DSDS", 5); + strcpy(buffer, "DSDS"); break; case 185: - strncpy(buffer, "DNDD", 5); + strcpy(buffer, "DNDD"); break; case 186: - strncpy(buffer, "DNDN", 5); + strcpy(buffer, "DNDN"); break; case 187: - strncpy(buffer, "NNDD", 5); + strcpy(buffer, "NNDD"); break; case 188: - strncpy(buffer, "DNND", 5); + strcpy(buffer, "DNND"); break; case 200: - strncpy(buffer, "DDNN", 5); + strcpy(buffer, "DDNN"); break; case 201: - strncpy(buffer, "NDDN", 5); + strcpy(buffer, "NDDN"); break; case 202: - strncpy(buffer, "DDND", 5); + strcpy(buffer, "DDND"); break; case 203: - strncpy(buffer, "NDDD", 5); + strcpy(buffer, "NDDD"); break; case 204: - strncpy(buffer, "DDDN", 5); + strcpy(buffer, "DDDN"); break; case 205: - strncpy(buffer, "NDND", 5); + strcpy(buffer, "NDND"); break; case 206: - strncpy(buffer, "DDDD", 5); + strcpy(buffer, "DDDD"); break; default: buffer[0] = 0; @@ -365,7 +373,7 @@ addtopage(int y, int x, char ch) void drawline(void) { - int a=0, b=0, c=0, d=0, ch, maxy = 22; + int mv=MOVE_NONE, lmv=MOVE_NONE, ch, maxy = 22; struct text_info ti; struct mouse_event me; @@ -391,16 +399,16 @@ drawline(void) getmouse(&me); switch (ch) { case CIO_KEY_DOWN: - a = 1; + mv=MOVE_DOWN; break; case CIO_KEY_UP: - a = -1; + mv=MOVE_UP; break; case CIO_KEY_LEFT: - b = -1; + mv=MOVE_LEFT; break; case CIO_KEY_RIGHT: - b = 1; + mv=MOVE_RIGHT; break; } if (CursorY > maxy) { @@ -411,67 +419,116 @@ drawline(void) LastLine = CursorY; } CursorCheck(); - switch (a) { - case 1: - Screen[ActivePage][CursorY + FirstLine - 1][CursorX * 2 + 1] = Attribute; - if (d == -1) - addtopage(CursorY + FirstLine - 1, CursorX * 2, CharSet[ActiveCharset][0]); - /*Screen[ActivePage][CursorY + FirstLine - 1][CursorX * 2] = CharSet[ActiveCharset][0]; */ - else - if (d == 1) - addtopage(CursorY + FirstLine - 1, CursorX * 2, CharSet[ActiveCharset][1]); - /*Screen[ActivePage][CursorY + FirstLine - 1][CursorX * 2] = CharSet[ActiveCharset][1]; */ - else - addtopage(CursorY + FirstLine - 1, CursorX * 2, CharSet[ActiveCharset][5]); - /*Screen[ActivePage][CursorY + FirstLine - 1][CursorX * 2] = CharSet[ActiveCharset][5]; */ + switch (mv) { + case MOVE_UP: + switch(lmv) { + case MOVE_NONE: + Screen[ActivePage][CursorY + FirstLine + 1][CursorX * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine + 1, CursorX * 2, CharSet[ActiveCharset][5]); + break; + case MOVE_UP: + Screen[ActivePage][CursorY + FirstLine + 1][CursorX * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine + 1, CursorX * 2, CharSet[ActiveCharset][5]); + break; + case MOVE_DOWN: +#if 0 + Screen[ActivePage][CursorY + FirstLine + 1][CursorX * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine + 1, CursorX * 2, CharSet[ActiveCharset][5]); +#endif + break; + case MOVE_LEFT: + Screen[ActivePage][CursorY + FirstLine + 1][CursorX * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine + 1, CursorX * 2, CharSet[ActiveCharset][2]); + break; + case MOVE_RIGHT: + Screen[ActivePage][CursorY + FirstLine + 1][CursorX * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine + 1, CursorX * 2, CharSet[ActiveCharset][3]); + break; + } break; - case -1: - Screen[ActivePage][CursorY + FirstLine + 1][CursorX * 2 + 1] = Attribute; - if (d == -1) - addtopage(CursorY + FirstLine + 1, CursorX * 2, CharSet[ActiveCharset][2]); - /*Screen[ActivePage][CursorY + FirstLine + 1][CursorX * 2] = CharSet[ActiveCharset][2]; */ - else - if (d == 1) - addtopage(CursorY + FirstLine + 1, CursorX * 2, CharSet[ActiveCharset][3]); - /*Screen[ActivePage][CursorY + FirstLine + 1][CursorX * 2] = CharSet[ActiveCharset][3]; */ - else - addtopage(CursorY + FirstLine + 1, CursorX * 2, CharSet[ActiveCharset][5]); - /*Screen[ActivePage][CursorY + FirstLine + 1][CursorX * 2] = CharSet[ActiveCharset][5]; */ + case MOVE_DOWN: + switch(lmv) { + case MOVE_NONE: + Screen[ActivePage][CursorY + FirstLine - 1][CursorX * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine - 1, CursorX * 2, CharSet[ActiveCharset][5]); + break; + case MOVE_UP: +#if 0 + Screen[ActivePage][CursorY + FirstLine - 1][CursorX * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine - 1, CursorX * 2, CharSet[ActiveCharset][5]); +#endif + break; + case MOVE_DOWN: + Screen[ActivePage][CursorY + FirstLine - 1][CursorX * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine - 1, CursorX * 2, CharSet[ActiveCharset][5]); + break; + case MOVE_LEFT: + Screen[ActivePage][CursorY + FirstLine - 1][CursorX * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine - 1, CursorX * 2, CharSet[ActiveCharset][0]); + break; + case MOVE_RIGHT: + Screen[ActivePage][CursorY + FirstLine - 1][CursorX * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine - 1, CursorX * 2, CharSet[ActiveCharset][1]); + break; + } break; - } - switch (b) { - case 1: - Screen[ActivePage][CursorY + FirstLine][CursorX * 2 - 1] = Attribute; - if (c == 1) - addtopage(CursorY + FirstLine, CursorX * 2 - 2, CharSet[ActiveCharset][2]); - /*Screen[ActivePage][CursorY + FirstLine][CursorX * 2 - 2] = CharSet[ActiveCharset][2]; */ - else - if (c == -1) - addtopage(CursorY + FirstLine, CursorX * 2 - 2, CharSet[ActiveCharset][0]); - /*Screen[ActivePage][CursorY + FirstLine][CursorX * 2 - 2] = CharSet[ActiveCharset][0]; */ - else - addtopage(CursorY + FirstLine, CursorX * 2 - 2, CharSet[ActiveCharset][4]); - /*Screen[ActivePage][CursorY + FirstLine][CursorX * 2 - 2] = CharSet[ActiveCharset][4]; */ + case MOVE_LEFT: + switch(lmv) { + case MOVE_NONE: + Screen[ActivePage][CursorY + FirstLine][(CursorX + 1) * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine, (CursorX + 1) * 2, CharSet[ActiveCharset][4]); + break; + case MOVE_UP: + Screen[ActivePage][CursorY + FirstLine][(CursorX + 1) * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine, (CursorX + 1) * 2, CharSet[ActiveCharset][1]); + break; + case MOVE_DOWN: + Screen[ActivePage][CursorY + FirstLine][(CursorX + 1) * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine, (CursorX + 1) * 2, CharSet[ActiveCharset][3]); + break; + case MOVE_LEFT: + Screen[ActivePage][CursorY + FirstLine][(CursorX + 1) * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine, (CursorX + 1) * 2, CharSet[ActiveCharset][4]); + break; + case MOVE_RIGHT: +#if 0 + Screen[ActivePage][CursorY + FirstLine][(CursorX + 1) * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine, (CursorX + 1) * 2, CharSet[ActiveCharset][4]); +#endif + break; + } break; - - case -1: - Screen[ActivePage][CursorY + FirstLine][CursorX * 2 + 3] = Attribute; - if (c == 1) - addtopage(CursorY + FirstLine, CursorX * 2 + 2, CharSet[ActiveCharset][3]); - /*Screen[ActivePage][CursorY + FirstLine][CursorX * 2 + 2] = CharSet[ActiveCharset][3]; */ - else - if (c == -1) - addtopage(CursorY + FirstLine, CursorX * 2 + 2, CharSet[ActiveCharset][1]); - /*Screen[ActivePage][CursorY + FirstLine][CursorX * 2 + 2] = CharSet[ActiveCharset][1]; */ - else - addtopage(CursorY + FirstLine, CursorX * 2 + 2, CharSet[ActiveCharset][4]); - /*Screen[ActivePage][CursorY + FirstLine][CursorX * 2 + 2] = CharSet[ActiveCharset][4]; */ + case MOVE_RIGHT: + switch(lmv) { + case MOVE_NONE: + Screen[ActivePage][CursorY + FirstLine][(CursorX - 1) * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine, (CursorX - 1) * 2, CharSet[ActiveCharset][4]); + break; + case MOVE_UP: + Screen[ActivePage][CursorY + FirstLine][(CursorX - 1) * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine, (CursorX - 1) * 2, CharSet[ActiveCharset][0]); + break; + case MOVE_DOWN: + Screen[ActivePage][CursorY + FirstLine][(CursorX - 1) * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine, (CursorX - 1) * 2, CharSet[ActiveCharset][2]); + break; + case MOVE_LEFT: +#if 0 + Screen[ActivePage][CursorY + FirstLine][(CursorX - 1) * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine, (CursorX - 1) * 2, CharSet[ActiveCharset][4]); +#endif + break; + case MOVE_RIGHT: + Screen[ActivePage][CursorY + FirstLine][(CursorX - 1) * 2 + 1] = Attribute; + addtopage(CursorY + FirstLine, (CursorX - 1) * 2, CharSet[ActiveCharset][4]); + break; + } break; } - c = a; - d = b; - a = 0; - b = 0; + if(mv != MOVE_NONE) { + lmv=mv; + mv=MOVE_NONE; + } Statusline(); ShowScreen(0, 1); Colors(Attribute);