PIVariantTypes::Color::toString() now can return color name
This commit is contained in:
@@ -187,7 +187,9 @@ PIColorCollection & PIColorCollection::instance() {
|
|||||||
PIColorCollection::PIColorCollection() {
|
PIColorCollection::PIColorCollection() {
|
||||||
CSSColor * c = css_colors;
|
CSSColor * c = css_colors;
|
||||||
while (c->name) {
|
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;
|
++c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,10 +26,12 @@
|
|||||||
class PIColorCollection {
|
class PIColorCollection {
|
||||||
public:
|
public:
|
||||||
static PIColorCollection & instance();
|
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:
|
private:
|
||||||
PIColorCollection();
|
PIColorCollection();
|
||||||
PIMap<PIString, PIVariantTypes::Color> css;
|
PIMap<PIString, PIVariantTypes::Color> css_color;
|
||||||
|
PIMap<PIVariantTypes::Color, PIString> css_name;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -822,7 +822,7 @@ PIString PIVariant::toString() const {
|
|||||||
case PIVariant::pivEnum: {PIVariantTypes::Enum r; ba >> r; return r.selectedName();}
|
case PIVariant::pivEnum: {PIVariantTypes::Enum r; ba >> r; return r.selectedName();}
|
||||||
case PIVariant::pivFile: {PIVariantTypes::File r; ba >> r; return r.file;}
|
case PIVariant::pivFile: {PIVariantTypes::File r; ba >> r; return r.file;}
|
||||||
case PIVariant::pivDir: {PIVariantTypes::Dir r; ba >> r; return r.dir;}
|
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::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::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;
|
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();
|
PIString cn = str.toLowerCase().trim();
|
||||||
if (cn.startsWith('#')) return Color(str.mid(1).toUInt(16));
|
if (cn.startsWith('#')) return Color(str.mid(1).toUInt(16));
|
||||||
if (cn.startsWith("0x")) return Color(str.mid(2).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);
|
return "#" + PIString::fromNumber(rgba, 16);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -237,15 +237,20 @@ struct PIP_EXPORT Color {
|
|||||||
//! \~russian Возвращает цвет от #HEX, 0xHEX или имени.
|
//! \~russian Возвращает цвет от #HEX, 0xHEX или имени.
|
||||||
static Color fromString(const PIString & str);
|
static Color fromString(const PIString & str);
|
||||||
|
|
||||||
//! \~english Returns color as #HEX.
|
//! \~english Returns color as #HEX, or as name if "find_name".
|
||||||
//! \~russian Возвращает цвет как #HEX.
|
//! \~russian Возвращает цвет как #HEX, либо как имя если "find_name".
|
||||||
PIString toString() const;
|
PIString toString(bool find_name = false) const;
|
||||||
|
|
||||||
//! \~english Integer color.
|
//! \~english Integer color.
|
||||||
//! \~russian Целочисленный цвет.
|
//! \~russian Целочисленный цвет.
|
||||||
uint rgba;
|
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
|
//! \addtogroup Types
|
||||||
//! \{
|
//! \{
|
||||||
|
|||||||
Reference in New Issue
Block a user