Fri, 24 Jul 2015 04:24:38 +0300
Apply Leonard's patch for fixing the colors:
The colors were broken again.
* isprint for some reason returned true when the given byte is higher than 255.
The char cast of the byte was then printed which resulted in odd characters
popping up. Black appeared as ^@ which is NULL in caret notation.
* After that, the colors were all messed up because the RLINE enum didn't take
in account the color swapping.
So instead of messing up the enum order/number I went for a new "range-like"
method.
* After fixing all of that, I noticed the Interface::render_colorline had a
broken loop since the VS2010 commits.
This made the lines not print entierely and messed up the colors etc.
/* Public Domain Curses */ #include "pdcwin.h" RCSID("$Id: pdcsetsc.c,v 1.40 2008/07/14 04:24:52 wmcbrine Exp $") /*man-start************************************************************** Name: pdcsetsc Synopsis: int PDC_set_blink(bool blinkon); void PDC_set_title(const char *title); Description: PDC_set_blink() toggles whether the A_BLINK attribute sets an actual blink mode (TRUE), or sets the background color to high intensity (FALSE). The default is platform-dependent (FALSE in most cases). It returns OK if it could set the state to match the given parameter, ERR otherwise. Current platforms also adjust the value of COLORS according to this function -- 16 for FALSE, and 8 for TRUE. PDC_set_title() sets the title of the window in which the curses program is running. This function may not do anything on some platforms. (Currently it only works in Win32 and X11.) Portability X/Open BSD SYS V PDC_set_blink - - - PDC_set_title - - - **man-end****************************************************************/ int PDC_curs_set(int visibility) { CONSOLE_CURSOR_INFO cci; int ret_vis; PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility)); ret_vis = SP->visibility; if (GetConsoleCursorInfo(pdc_con_out, &cci) == FALSE) return ERR; switch(visibility) { case 0: /* invisible */ cci.bVisible = FALSE; break; case 2: /* highly visible */ cci.bVisible = TRUE; cci.dwSize = 95; break; default: /* normal visibility */ cci.bVisible = TRUE; cci.dwSize = SP->orig_cursor; break; } if (SetConsoleCursorInfo(pdc_con_out, &cci) == FALSE) return ERR; SP->visibility = visibility; return ret_vis; } void PDC_set_title(const char *title) { #ifdef PDC_WIDE wchar_t wtitle[512]; #endif PDC_LOG(("PDC_set_title() - called:<%s>\n", title)); #ifdef PDC_WIDE PDC_mbstowcs(wtitle, title, 511); SetConsoleTitleW(wtitle); #else SetConsoleTitleA(title); #endif } int PDC_set_blink(bool blinkon) { if (pdc_color_started) COLORS = 16; return blinkon ? ERR : OK; }