bool __ParseString<CSize>(const CStrW& Value, CSize &Output) { // Use the parser to parse the values CParser& parser (CParserCache::Get("_$value_$value_")); CParserLine line; line.ParseString(parser, Value.ToUTF8()); if (!line.m_ParseOK) { // Parsing failed return false; } float x, y; // x if (!line.GetArgFloat(0, x)) { // TODO Gee: Parsing failed return false; } // y if (!line.GetArgFloat(1, y)) { // TODO Gee: Parsing failed return false; } Output.cx = x; Output.cy = y; return true; }
bool CColor::ParseString(const CStr8& Value, float DefaultAlpha) { // Use the parser to parse the values CParser& parser (CParserCache::Get("_[-$arg(_minus)]$value_[-$arg(_minus)]$value_[-$arg(_minus)]$value_[[-$arg(_minus)]$value_]")); std::string str = Value; CParserLine line; line.ParseString(parser, str); if (!line.m_ParseOK) { // TODO Gee: Parsing failed return false; } float values[4]; values[3] = DefaultAlpha; for (int i=0; i<(int)line.GetArgCount(); ++i) { if (!line.GetArgFloat(i, values[i])) { // Parsing failed return false; } } r = values[0]/255.f; g = values[1]/255.f; b = values[2]/255.f; a = values[3]/255.f; return true; }
bool __ParseString<CRect>(const CStrW& Value, CRect &Output) { // Use the parser to parse the values CParser& parser (CParserCache::Get("_$value_$value_$value_$value_")); CParserLine line; line.ParseString(parser, Value.ToUTF8()); if (!line.m_ParseOK) { // Parsing failed return false; } float values[4]; for (int i=0; i<4; ++i) { if (!line.GetArgFloat(i, values[i])) { // Parsing failed return false; } } // Finally the rectangle values Output = CRect(values[0], values[1], values[2], values[3]); return true; }
bool __ParseString<CPos>(const CStrW& Value, CPos &Output) { CParser& parser (CParserCache::Get("_[-$arg(_minus)]$value_[-$arg(_minus)]$value_")); CParserLine line; line.ParseString(parser, Value.ToUTF8()); if (!line.m_ParseOK) return false; float x, y; if (!line.GetArgFloat(0, x)) return false; if (!line.GetArgFloat(1, y)) return false; Output.x = x; Output.y = y; return true; }