Partial port of Phoenix Windlight parts
This commit is contained in:
127
indra/newview/llwlparamkey.h
Normal file
127
indra/newview/llwlparamkey.h
Normal file
@@ -0,0 +1,127 @@
|
||||
/**
|
||||
* @file llwlparamkey.h
|
||||
* @brief LLWLParamKey struct
|
||||
*
|
||||
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2011, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLWLPARAMKEY_H
|
||||
#define LL_LLWLPARAMKEY_H
|
||||
|
||||
#include "lltrans.h"
|
||||
#include "llenvmanager.h"
|
||||
|
||||
struct LLWLParamKey : LLEnvKey
|
||||
{
|
||||
public:
|
||||
// scope and source of a param set (WL sky preset)
|
||||
std::string name;
|
||||
EScope scope;
|
||||
|
||||
// for conversion from LLSD
|
||||
static const int NAME_IDX = 0;
|
||||
static const int SCOPE_IDX = 1;
|
||||
|
||||
inline LLWLParamKey(const std::string& n, EScope s)
|
||||
: name(n), scope(s)
|
||||
{
|
||||
}
|
||||
|
||||
inline LLWLParamKey(LLSD llsd)
|
||||
: name(llsd[NAME_IDX].asString()), scope(EScope(llsd[SCOPE_IDX].asInteger()))
|
||||
{
|
||||
}
|
||||
|
||||
inline LLWLParamKey() // NOT really valid, just so std::maps can return a default of some sort
|
||||
: name(""), scope(SCOPE_LOCAL)
|
||||
{
|
||||
}
|
||||
|
||||
inline LLWLParamKey(std::string& stringVal)
|
||||
{
|
||||
size_t len = stringVal.length();
|
||||
if (len > 0)
|
||||
{
|
||||
name = stringVal.substr(0, len - 1);
|
||||
scope = (EScope) atoi(stringVal.substr(len - 1, len).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
inline std::string toStringVal() const
|
||||
{
|
||||
std::stringstream str;
|
||||
str << name << scope;
|
||||
return str.str();
|
||||
}
|
||||
|
||||
inline LLSD toLLSD() const
|
||||
{
|
||||
LLSD llsd = LLSD::emptyArray();
|
||||
llsd.append(LLSD(name));
|
||||
llsd.append(LLSD(scope));
|
||||
return llsd;
|
||||
}
|
||||
|
||||
inline void fromLLSD(const LLSD& llsd)
|
||||
{
|
||||
name = llsd[NAME_IDX].asString();
|
||||
scope = EScope(llsd[SCOPE_IDX].asInteger());
|
||||
}
|
||||
|
||||
inline bool operator <(const LLWLParamKey other) const
|
||||
{
|
||||
if (name < other.name)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (name > other.name)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return scope < other.scope;
|
||||
}
|
||||
}
|
||||
|
||||
inline bool operator ==(const LLWLParamKey other) const
|
||||
{
|
||||
return (name == other.name) && (scope == other.scope);
|
||||
}
|
||||
|
||||
inline std::string toString() const
|
||||
{
|
||||
switch (scope)
|
||||
{
|
||||
case SCOPE_LOCAL:
|
||||
return name + std::string(" (") + LLTrans::getString("Local") + std::string(")");
|
||||
break;
|
||||
case SCOPE_REGION:
|
||||
return name + std::string(" (") + LLTrans::getString("Region") + std::string(")");
|
||||
break;
|
||||
default:
|
||||
return name + " (?)";
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user