git-svn-id: svn://db.shs.com.ru/pip@552 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2017-11-03 15:35:56 +00:00
parent 245781e314
commit 606261c38d
4 changed files with 42 additions and 4 deletions

View File

@@ -113,6 +113,7 @@ PIVariant::Type PIVariant::typeFromName(const PIString & tname) {
if (s == "enum") return PIVariant::pivEnum;
if (s == "file" || s == "path") return PIVariant::pivFile;
if (s == "dir" || s == "directory") return PIVariant::pivDir;
if (s == "color") return PIVariant::pivColor;
return PIVariant::pivInvalid;
}
@@ -153,6 +154,7 @@ PIString PIVariant::typeName(PIVariant::Type type) {
case PIVariant::pivEnum: return "Enum";
case PIVariant::pivFile: return "File";
case PIVariant::pivDir: return "Dir";
case PIVariant::pivColor: return "Color";
case PIVariant::pivCustom: return "Custom";
default: break;
}
@@ -215,6 +217,7 @@ int PIVariant::toInt() const {
case PIVariant::pivString: {PIString r; ba >> r; return r.toInt();}
case PIVariant::pivStringList: {PIStringList r; ba >> r; if (r.isEmpty()) return 0; return r.front().toInt();}
case PIVariant::pivEnum: {PIVariantTypes::Enum r; ba >> r; return r.selectedValue();}
case PIVariant::pivColor: {PIVariantTypes::Color r; ba >> r; return (int)r.rgba;}
case PIVariant::pivCustom: return getAsValue<int>(*this);
default: break;
}
@@ -431,6 +434,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 "#" + PIString::fromNumber(r.rgba, 16);}
case PIVariant::pivCustom: return getAsValue<PIString>(*this);
default: break;
}
@@ -490,7 +494,7 @@ PIVariantTypes::Enum PIVariant::toEnum() const {
/** \brief Returns variant content as file
* \details In case of File type returns file value. \n
* In case of String returns File with string value path. \n
* In case of other types returns empty Enum. */
* In case of other types returns empty File. */
PIVariantTypes::File PIVariant::toFile() const {
PIByteArray ba(_content);
if (_type == PIVariant::pivFile) {PIVariantTypes::File r; ba >> r; return r;}
@@ -502,8 +506,8 @@ PIVariantTypes::File PIVariant::toFile() const {
/** \brief Returns variant content as dir
* \details In case of Dir type returns dir value. \n
* In case of Dir returns Dir with string value path. \n
* In case of other types returns empty Enum. */
* In case of String returns Dir with string value path. \n
* In case of other types returns empty Dir. */
PIVariantTypes::Dir PIVariant::toDir() const {
PIByteArray ba(_content);
if (_type == PIVariant::pivDir) {PIVariantTypes::Dir r; ba >> r; return r;}
@@ -511,3 +515,16 @@ PIVariantTypes::Dir PIVariant::toDir() const {
if (_type == PIVariant::pivCustom) {return getAsValue<PIVariantTypes::Dir>(*this);}
return PIVariantTypes::Dir();
}
/** \brief Returns variant content as color
* \details In case of Color type returns color value. \n
* In case of int returns color with int value. \n
* In case of other types returns empty Color. */
PIVariantTypes::Color PIVariant::toColor() const {
PIByteArray ba(_content);
if (_type == PIVariant::pivColor) {PIVariantTypes::Color r; ba >> r; return r;}
if (_type == PIVariant::pivInt) {int v; ba >> v; return PIVariantTypes::Color(v);}
if (_type == PIVariant::pivCustom) {return getAsValue<PIVariantTypes::Color>(*this);}
return PIVariantTypes::Color();
}