PIVariantTypes::Color::toString() now can return color name
This commit is contained in:
@@ -187,7 +187,9 @@ PIColorCollection & PIColorCollection::instance() {
|
||||
PIColorCollection::PIColorCollection() {
|
||||
CSSColor * c = css_colors;
|
||||
while (c->name) {
|
||||
css[c->name] = c->color | 0xFF000000;
|
||||
PIVariantTypes::Color col(c->color | 0xFF000000);
|
||||
css_color[c->name] = col;
|
||||
css_name[col] = c->name;
|
||||
++c;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,10 +26,12 @@
|
||||
class PIColorCollection {
|
||||
public:
|
||||
static PIColorCollection & instance();
|
||||
PIVariantTypes::Color getCSS(const PIString & name) const {return css.value(name);}
|
||||
PIVariantTypes::Color getCSSColor(const PIString & name) const {return css_color.value(name);}
|
||||
PIString getCSSName(const PIVariantTypes::Color color) const {return css_name.value(color);}
|
||||
private:
|
||||
PIColorCollection();
|
||||
PIMap<PIString, PIVariantTypes::Color> css;
|
||||
PIMap<PIString, PIVariantTypes::Color> css_color;
|
||||
PIMap<PIVariantTypes::Color, PIString> css_name;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -822,7 +822,7 @@ PIString PIVariant::toString() const {
|
||||
case PIVariant::pivEnum: {PIVariantTypes::Enum r; ba >> r; return r.selectedName();}
|
||||
case PIVariant::pivFile: {PIVariantTypes::File r; ba >> r; return r.file;}
|
||||
case PIVariant::pivDir: {PIVariantTypes::Dir r; ba >> r; return r.dir;}
|
||||
case PIVariant::pivColor: {PIVariantTypes::Color r; ba >> r; return r.toString();}
|
||||
case PIVariant::pivColor: {PIVariantTypes::Color r; ba >> r; return r.toString(true);}
|
||||
case PIVariant::pivIODevice: {PIVariantTypes::IODevice r; ba >> r; return "IODevice";} // TODO
|
||||
case PIVariant::pivPoint: {PIPointd r; ba >> r; return PIString::fromNumber(r.x) + ";" + PIString::fromNumber(r.y);} break;
|
||||
case PIVariant::pivRect: {PIRectd r; ba >> r; return PIString::fromNumber(r.left()) + ";" + PIString::fromNumber(r.bottom()) + ";" + PIString::fromNumber(r.width()) + ";" + PIString::fromNumber(r.height());} break;
|
||||
|
||||
@@ -165,10 +165,14 @@ PIVariantTypes::Color PIVariantTypes::Color::fromString(const PIString & str) {
|
||||
PIString cn = str.toLowerCase().trim();
|
||||
if (cn.startsWith('#')) return Color(str.mid(1).toUInt(16));
|
||||
if (cn.startsWith("0x")) return Color(str.mid(2).toUInt(16));
|
||||
return PIColorCollection::instance().getCSS(cn);
|
||||
return PIColorCollection::instance().getCSSColor(cn);
|
||||
}
|
||||
|
||||
|
||||
PIString PIVariantTypes::Color::toString() const {
|
||||
PIString PIVariantTypes::Color::toString(bool find_name) const {
|
||||
if (find_name) {
|
||||
PIString ret = PIColorCollection::instance().getCSSName(*this);
|
||||
if (ret.isNotEmpty()) return ret;
|
||||
}
|
||||
return "#" + PIString::fromNumber(rgba, 16);
|
||||
}
|
||||
|
||||
@@ -237,15 +237,20 @@ struct PIP_EXPORT Color {
|
||||
//! \~russian Возвращает цвет от #HEX, 0xHEX или имени.
|
||||
static Color fromString(const PIString & str);
|
||||
|
||||
//! \~english Returns color as #HEX.
|
||||
//! \~russian Возвращает цвет как #HEX.
|
||||
PIString toString() const;
|
||||
//! \~english Returns color as #HEX, or as name if "find_name".
|
||||
//! \~russian Возвращает цвет как #HEX, либо как имя если "find_name".
|
||||
PIString toString(bool find_name = false) const;
|
||||
|
||||
//! \~english Integer color.
|
||||
//! \~russian Целочисленный цвет.
|
||||
uint rgba;
|
||||
};
|
||||
|
||||
inline bool operator < (const Color c0, const Color c1) {return c0.rgba < c1.rgba;}
|
||||
inline bool operator > (const Color c0, const Color c1) {return c0.rgba > c1.rgba;}
|
||||
inline bool operator ==(const Color c0, const Color c1) {return c0.rgba == c1.rgba;}
|
||||
inline bool operator !=(const Color c0, const Color c1) {return c0.rgba != c1.rgba;}
|
||||
|
||||
|
||||
//! \addtogroup Types
|
||||
//! \{
|
||||
|
||||
Reference in New Issue
Block a user