Return empty string from wxColour::GetAsString() if it's invalid
This is consistent with wxToString(wxColour) and seems more useful than either returning black string representation (as wxMSW used to do) or asserting (as wxGTK did). Document this behaviour and add a test checking for it. Closes #18623.
This commit is contained in:
@@ -113,10 +113,11 @@ public:
|
|||||||
@c wxC2S_HTML_SYNTAX, to obtain the colour as "#" followed by 6
|
@c wxC2S_HTML_SYNTAX, to obtain the colour as "#" followed by 6
|
||||||
hexadecimal digits (e.g. wxColour(255,0,0) == "#FF0000").
|
hexadecimal digits (e.g. wxColour(255,0,0) == "#FF0000").
|
||||||
|
|
||||||
This function never fails and always returns a non-empty string but
|
This function returns empty string if the colour is not initialized
|
||||||
asserts if the colour has alpha channel (i.e. is non opaque) but
|
(see IsOk()). Otherwise, the returned string is always non-empty, but
|
||||||
@c wxC2S_CSS_SYNTAX (which is the only one supporting alpha) is not
|
the function asserts if the colour has alpha channel (i.e. is non
|
||||||
specified in flags.
|
opaque) but @c wxC2S_CSS_SYNTAX (which is the only one supporting
|
||||||
|
alpha) is not specified in @a flags.
|
||||||
|
|
||||||
@note For non-solid (i.e. non-RGB) colour this function returns
|
@note For non-solid (i.e. non-RGB) colour this function returns
|
||||||
"rgb(??, ?? ??)" or "#??????".
|
"rgb(??, ?? ??)" or "#??????".
|
||||||
|
@@ -218,6 +218,9 @@ bool wxColourBase::FromString(const wxString& str)
|
|||||||
|
|
||||||
wxString wxColourBase::GetAsString(long flags) const
|
wxString wxColourBase::GetAsString(long flags) const
|
||||||
{
|
{
|
||||||
|
if ( !IsOk() )
|
||||||
|
return wxString();
|
||||||
|
|
||||||
wxString colName;
|
wxString colName;
|
||||||
|
|
||||||
if ( IsSolid() )
|
if ( IsSolid() )
|
||||||
|
@@ -145,6 +145,16 @@ TEST_CASE("wxColour::FromString", "[colour][string]")
|
|||||||
CHECK( !wxFromString("rgba(1, 2, 3.456, foo)", &col) );
|
CHECK( !wxFromString("rgba(1, 2, 3.456, foo)", &col) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("wxColour::GetAsString", "[colour][string]")
|
||||||
|
{
|
||||||
|
CHECK( wxColour().GetAsString() == "" );
|
||||||
|
|
||||||
|
wxColour red("red");
|
||||||
|
CHECK( red.GetAsString() == "red" );
|
||||||
|
CHECK( red.GetAsString(wxC2S_CSS_SYNTAX) == "rgb(255, 0, 0)" );
|
||||||
|
CHECK( red.GetAsString(wxC2S_HTML_SYNTAX) == "#FF0000" );
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("wxColour::GetLuminance", "[colour][luminance]")
|
TEST_CASE("wxColour::GetLuminance", "[colour][luminance]")
|
||||||
{
|
{
|
||||||
CHECK( wxBLACK->GetLuminance() == Approx(0.0) );
|
CHECK( wxBLACK->GetLuminance() == Approx(0.0) );
|
||||||
|
Reference in New Issue
Block a user