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:
parent
5d14346325
commit
9890cf6bac
@ -113,10 +113,11 @@ public:
|
||||
@c wxC2S_HTML_SYNTAX, to obtain the colour as "#" followed by 6
|
||||
hexadecimal digits (e.g. wxColour(255,0,0) == "#FF0000").
|
||||
|
||||
This function never fails and always returns a non-empty string but
|
||||
asserts if the colour has alpha channel (i.e. is non opaque) but
|
||||
@c wxC2S_CSS_SYNTAX (which is the only one supporting alpha) is not
|
||||
specified in flags.
|
||||
This function returns empty string if the colour is not initialized
|
||||
(see IsOk()). Otherwise, the returned string is always non-empty, but
|
||||
the function asserts if the colour has alpha channel (i.e. is non
|
||||
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
|
||||
"rgb(??, ?? ??)" or "#??????".
|
||||
|
@ -218,6 +218,9 @@ bool wxColourBase::FromString(const wxString& str)
|
||||
|
||||
wxString wxColourBase::GetAsString(long flags) const
|
||||
{
|
||||
if ( !IsOk() )
|
||||
return wxString();
|
||||
|
||||
wxString colName;
|
||||
|
||||
if ( IsSolid() )
|
||||
|
@ -145,6 +145,16 @@ TEST_CASE("wxColour::FromString", "[colour][string]")
|
||||
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]")
|
||||
{
|
||||
CHECK( wxBLACK->GetLuminance() == Approx(0.0) );
|
||||
|
Loading…
Reference in New Issue
Block a user