diff --git a/interface/wx/colour.h b/interface/wx/colour.h index 8f3a8535bc..4b35c82598 100644 --- a/interface/wx/colour.h +++ b/interface/wx/colour.h @@ -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 "#??????". diff --git a/src/common/colourcmn.cpp b/src/common/colourcmn.cpp index 9d0b40a46c..56ed78321a 100644 --- a/src/common/colourcmn.cpp +++ b/src/common/colourcmn.cpp @@ -218,6 +218,9 @@ bool wxColourBase::FromString(const wxString& str) wxString wxColourBase::GetAsString(long flags) const { + if ( !IsOk() ) + return wxString(); + wxString colName; if ( IsSolid() ) diff --git a/tests/graphics/colour.cpp b/tests/graphics/colour.cpp index ec26cfefa2..865d92f662 100644 --- a/tests/graphics/colour.cpp +++ b/tests/graphics/colour.cpp @@ -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) );