Use array to look-up wxMSW underline colours
Remove previously added colours from wxColourDatabase.
This commit is contained in:
@@ -328,7 +328,6 @@ void wxColourDatabase::Initialize()
|
|||||||
{wxT("INDIAN RED"), 79, 47, 47},
|
{wxT("INDIAN RED"), 79, 47, 47},
|
||||||
{wxT("KHAKI"), 159, 159, 95},
|
{wxT("KHAKI"), 159, 159, 95},
|
||||||
{wxT("LIGHT BLUE"), 191, 216, 216},
|
{wxT("LIGHT BLUE"), 191, 216, 216},
|
||||||
{wxT("LIGHT GREEN"), 0, 128, 0},
|
|
||||||
{wxT("LIGHT GREY"), 192, 192, 192},
|
{wxT("LIGHT GREY"), 192, 192, 192},
|
||||||
{wxT("LIGHT STEEL BLUE"), 143, 143, 188},
|
{wxT("LIGHT STEEL BLUE"), 143, 143, 188},
|
||||||
{wxT("LIME GREEN"), 50, 204, 50},
|
{wxT("LIME GREEN"), 50, 204, 50},
|
||||||
@@ -348,7 +347,6 @@ void wxColourDatabase::Initialize()
|
|||||||
{wxT("MEDIUM VIOLET RED"), 219, 112, 147},
|
{wxT("MEDIUM VIOLET RED"), 219, 112, 147},
|
||||||
{wxT("MIDNIGHT BLUE"), 47, 47, 79},
|
{wxT("MIDNIGHT BLUE"), 47, 47, 79},
|
||||||
{wxT("NAVY"), 35, 35, 142},
|
{wxT("NAVY"), 35, 35, 142},
|
||||||
{wxT("OLIVE"), 128, 128, 0},
|
|
||||||
{wxT("ORANGE"), 204, 50, 50},
|
{wxT("ORANGE"), 204, 50, 50},
|
||||||
{wxT("ORANGE RED"), 255, 0, 127},
|
{wxT("ORANGE RED"), 255, 0, 127},
|
||||||
{wxT("ORCHID"), 219, 112, 219},
|
{wxT("ORCHID"), 219, 112, 219},
|
||||||
@@ -365,7 +363,6 @@ void wxColourDatabase::Initialize()
|
|||||||
{wxT("SPRING GREEN"), 0, 255, 127},
|
{wxT("SPRING GREEN"), 0, 255, 127},
|
||||||
{wxT("STEEL BLUE"), 35, 107, 142},
|
{wxT("STEEL BLUE"), 35, 107, 142},
|
||||||
{wxT("TAN"), 219, 147, 112},
|
{wxT("TAN"), 219, 147, 112},
|
||||||
{wxT("TEAL"), 0, 128, 128},
|
|
||||||
{wxT("THISTLE"), 216, 191, 216},
|
{wxT("THISTLE"), 216, 191, 216},
|
||||||
{wxT("TURQUOISE"), 173, 234, 234},
|
{wxT("TURQUOISE"), 173, 234, 234},
|
||||||
{wxT("VIOLET"), 79, 47, 79},
|
{wxT("VIOLET"), 79, 47, 79},
|
||||||
|
@@ -2812,6 +2812,30 @@ bool wxTextCtrl::SetFont(const wxFont& font)
|
|||||||
// styling support for rich edit controls
|
// styling support for rich edit controls
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if _RICHEDIT_VER >= 0x0800
|
||||||
|
static const wxColour gs_underlineColourMap[] =
|
||||||
|
{
|
||||||
|
// The colours are coming from https://docs.microsoft.com/en-us/windows/desktop/api/tom/nf-tom-itextdocument2-geteffectcolor.
|
||||||
|
wxNullColour, // text colour
|
||||||
|
wxColour(0, 0, 0 ), // black
|
||||||
|
wxColour(0, 0, 255), // blue
|
||||||
|
wxColour(0, 255, 255), // cyan
|
||||||
|
wxColour(0, 255, 0 ), // green
|
||||||
|
wxColour(255, 0, 255), // magenta
|
||||||
|
wxColour(255, 0, 0 ), // red
|
||||||
|
wxColour(255, 255, 0 ), // yellow
|
||||||
|
wxColour(255, 255, 255), // white
|
||||||
|
wxColour(0, 0, 128), // navy
|
||||||
|
wxColour(0, 128, 128), // teal
|
||||||
|
wxColour(0, 128, 0 ), // light green
|
||||||
|
wxColour(128, 0, 128), // purple
|
||||||
|
wxColour(128, 0, 0 ), // maroon
|
||||||
|
wxColour(128, 128, 0 ), // olive
|
||||||
|
wxColour(128, 128, 128), // grey
|
||||||
|
wxColour(192, 192, 192), // light grey
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
bool wxTextCtrl::MSWSetCharFormat(const wxTextAttr& style, long start, long end)
|
bool wxTextCtrl::MSWSetCharFormat(const wxTextAttr& style, long start, long end)
|
||||||
{
|
{
|
||||||
// initialize CHARFORMAT struct
|
// initialize CHARFORMAT struct
|
||||||
@@ -2903,43 +2927,16 @@ bool wxTextCtrl::MSWSetCharFormat(const wxTextAttr& style, long start, long end)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if _RICHEDIT_VER >= 0x0800
|
#if _RICHEDIT_VER >= 0x0800
|
||||||
// The colours are coming from https://docs.microsoft.com/en-us/windows/desktop/api/tom/nf-tom-itextdocument2-geteffectcolor.
|
|
||||||
BYTE colour = 0;
|
BYTE colour = 0;
|
||||||
wxColour col = style.GetUnderlineColour();
|
const wxColour& col = style.GetUnderlineColour();
|
||||||
if ( col == wxNullColour )
|
for ( size_t c = 0; c < WXSIZEOF(gs_underlineColourMap); ++c )
|
||||||
colour = 0;
|
{
|
||||||
else if ( col == wxTheColourDatabase->Find("BLACK") )
|
if ( col == gs_underlineColourMap[c] )
|
||||||
colour = 1;
|
{
|
||||||
else if ( col == wxTheColourDatabase->Find("BLUE") )
|
colour = static_cast<BYTE>(c);
|
||||||
colour = 2;
|
break;
|
||||||
else if ( col == wxTheColourDatabase->Find("CYAN") )
|
}
|
||||||
colour = 3;
|
}
|
||||||
else if ( col == wxTheColourDatabase->Find("GREEN") )
|
|
||||||
colour = 4;
|
|
||||||
else if ( col == wxTheColourDatabase->Find("MAGENTA") )
|
|
||||||
colour = 5;
|
|
||||||
else if ( col == wxTheColourDatabase->Find("RED") )
|
|
||||||
colour = 6;
|
|
||||||
else if ( col == wxTheColourDatabase->Find("YELLOW") )
|
|
||||||
colour = 7;
|
|
||||||
else if ( col == wxTheColourDatabase->Find("WHITE") )
|
|
||||||
colour = 8;
|
|
||||||
else if ( col == wxColour(0, 0, 128) ) // navy
|
|
||||||
colour = 9;
|
|
||||||
else if ( col == wxTheColourDatabase->Find("TEAL") )
|
|
||||||
colour = 10;
|
|
||||||
else if ( col == wxTheColourDatabase->Find("LIGHT GREEN") )
|
|
||||||
colour = 11;
|
|
||||||
else if ( col == wxColour(128, 0, 128) ) // purple
|
|
||||||
colour = 12;
|
|
||||||
else if ( col == wxColour(128, 0, 0) ) // maroon
|
|
||||||
colour = 13;
|
|
||||||
else if ( col == wxTheColourDatabase->Find("OLIVE") )
|
|
||||||
colour = 14;
|
|
||||||
else if ( col == wxTheColourDatabase->Find("GREY") )
|
|
||||||
colour = 15;
|
|
||||||
else if ( col == wxTheColourDatabase->Find("LIGHT GREY") )
|
|
||||||
colour = 16;
|
|
||||||
cf.bUnderlineColor = colour;
|
cf.bUnderlineColor = colour;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -3273,42 +3270,10 @@ bool wxTextCtrl::GetStyle(long position, wxTextAttr& style)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxColour underlineColour = wxNullColour;
|
wxColour underlineColour;
|
||||||
#if _RICHEDIT_VER >= 0x0800
|
#if _RICHEDIT_VER >= 0x0800
|
||||||
if ( cf.bUnderlineColor == 0 )
|
if ( cf.bUnderlineColor < WXSIZEOF(gs_underlineColourMap) )
|
||||||
underlineColour = wxNullColour;
|
underlineColour = gs_underlineColourMap[cf.bUnderlineColor];
|
||||||
else if ( cf.bUnderlineColor == 1 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("BLACK");
|
|
||||||
else if ( cf.bUnderlineColor == 2 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("BLUE");
|
|
||||||
else if ( cf.bUnderlineColor == 3 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("CYAN");
|
|
||||||
else if ( cf.bUnderlineColor == 4 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("GREEN");
|
|
||||||
else if ( cf.bUnderlineColor == 5 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("MAGENTA");
|
|
||||||
else if ( cf.bUnderlineColor == 6 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("RED");
|
|
||||||
else if ( cf.bUnderlineColor == 7 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("YELLOW");
|
|
||||||
else if ( cf.bUnderlineColor == 8 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("WHITE");
|
|
||||||
else if ( cf.bUnderlineColor == 9 )
|
|
||||||
underlineColour = wxColour(0, 0, 128); // navy
|
|
||||||
else if ( cf.bUnderlineColor == 10 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("TEAL");
|
|
||||||
else if ( cf.bUnderlineColor == 11 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("LIGHT GREEN");
|
|
||||||
else if ( cf.bUnderlineColor == 12 )
|
|
||||||
underlineColour = wxColour(128, 0, 128); // purple
|
|
||||||
else if ( cf.bUnderlineColor == 13 )
|
|
||||||
underlineColour = wxColour(128, 0, 0); // maroon
|
|
||||||
else if ( cf.bUnderlineColor == 14 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("OLIVE");
|
|
||||||
else if ( cf.bUnderlineColor == 15 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("GREY");
|
|
||||||
else if ( cf.bUnderlineColor == 16 )
|
|
||||||
underlineColour = wxTheColourDatabase->Find("LIGHT GREY");
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ( underlineType != wxTEXT_ATTR_UNDERLINE_NONE )
|
if ( underlineType != wxTEXT_ATTR_UNDERLINE_NONE )
|
||||||
|
Reference in New Issue
Block a user