summaryrefslogtreecommitdiff
path: root/indra/newview/llsettingsbase.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llsettingsbase.h')
-rw-r--r--indra/newview/llsettingsbase.h312
1 files changed, 0 insertions, 312 deletions
diff --git a/indra/newview/llsettingsbase.h b/indra/newview/llsettingsbase.h
deleted file mode 100644
index d304b8702a..0000000000
--- a/indra/newview/llsettingsbase.h
+++ /dev/null
@@ -1,312 +0,0 @@
-/**
-* @file llsettingsbase.h
-* @author optional
-* @brief A base class for asset based settings groups.
-*
-* $LicenseInfo:2011&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2017, 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_SETTINGS_BASE_H
-#define LL_SETTINGS_BASE_H
-
-#include <string>
-#include <map>
-#include <vector>
-#include <boost/enable_shared_from_this.hpp>
-
-#include "llsd.h"
-#include "llsdutil.h"
-#include "v2math.h"
-#include "v3math.h"
-#include "v4math.h"
-#include "llquaternion.h"
-#include "v4color.h"
-
-class LLSettingsBase :
- public boost::enable_shared_from_this<LLSettingsBase>,
- private boost::noncopyable
-{
- friend class LLEnvironment;
- friend class LLSettingsDay;
-
-public:
- static const std::string SETTING_ID;
- static const std::string SETTING_NAME;
-
- typedef std::map<std::string, S32> parammapping_t;
-
- typedef boost::shared_ptr<LLSettingsBase> ptr_t;
-
- virtual ~LLSettingsBase() { };
-
- //---------------------------------------------------------------------
- virtual std::string getSettingType() const = 0;
-
- //---------------------------------------------------------------------
- // Settings status
- inline bool hasSetting(const std::string &param) const { return mSettings.has(param); }
- inline bool isDirty() const { return mDirty; }
- inline void setDirtyFlag(bool dirty) { mDirty = dirty; }
-
- inline size_t getHash() const
- {
- return boost::hash<LLSD>{}(mSettings);
- }
-
- inline LLUUID getId() const
- {
- return getValue(SETTING_ID).asUUID();
- }
-
- inline std::string getName() const
- {
- return getValue(SETTING_NAME).asString();
- }
-
- inline void setName(std::string val)
- {
- setValue(SETTING_NAME, val);
- }
-
- inline void replaceSettings(LLSD settings)
- {
- mSettings = settings;
- setDirtyFlag(true);
- }
-
- inline LLSD getSettings() const
- {
- return mSettings;
- }
-
- //---------------------------------------------------------------------
- //
- inline void setValue(const std::string &name, const LLSD &value)
- {
- mSettings[name] = value;
- mDirty = true;
- }
-
- inline LLSD getValue(const std::string &name, const LLSD &deflt = LLSD()) const
- {
- if (!mSettings.has(name))
- return deflt;
- return mSettings[name];
- }
-
- inline void setValue(const std::string &name, const LLVector2 &value)
- {
- setValue(name, value.getValue());
- }
-
- inline void setValue(const std::string &name, const LLVector3 &value)
- {
- setValue(name, value.getValue());
- }
-
- inline void setValue(const std::string &name, const LLVector4 &value)
- {
- setValue(name, value.getValue());
- }
-
- inline void setValue(const std::string &name, const LLQuaternion &value)
- {
- setValue(name, value.getValue());
- }
-
- inline void setValue(const std::string &name, const LLColor3 &value)
- {
- setValue(name, value.getValue());
- }
-
- inline void setValue(const std::string &name, const LLColor4 &value)
- {
- setValue(name, value.getValue());
- }
-
- // Note this method is marked const but may modify the settings object.
- // (note the internal const cast). This is so that it may be called without
- // special consideration from getters.
- inline void update() const
- {
- if (!mDirty)
- return;
- (const_cast<LLSettingsBase *>(this))->updateSettings();
- }
-
- // TODO: This is temporary
- virtual void exportSettings(std::string name) const;
-
- virtual void blend(const ptr_t &end, F32 blendf) = 0;
-
- virtual bool validate();
-
-protected:
- class Validator
- {
- public:
- typedef boost::function<bool(LLSD &)> verify_pr;
-
- Validator(std::string name, bool required, LLSD::Type type, verify_pr verify = verify_pr()) :
- mName(name),
- mRequired(required),
- mType(type),
- mVerify(verify)
- { }
-
- std::string getName() const { return mName; }
- bool isRequired() const { return mRequired; }
- LLSD::Type getType() const { return mType; }
-
- bool verify(LLSD &data);
-
- // Some basic verifications
- static bool verifyColor(LLSD &value);
- static bool verifyVector(LLSD &value, S32 length);
- static bool verifyVectorMinMax(LLSD &value, LLSD minvals, LLSD maxvals);
- static bool verifyVectorNormalized(LLSD &value, S32 length);
- static bool verifyQuaternion(LLSD &value);
- static bool verifyQuaternionNormal(LLSD &value);
- static bool verifyFloatRange(LLSD &value, LLSD range);
- static bool verifyIntegerRange(LLSD &value, LLSD range);
-
- private:
- std::string mName;
- bool mRequired;
- LLSD::Type mType;
- verify_pr mVerify;
- };
- typedef std::vector<Validator> validation_list_t;
-
- LLSettingsBase();
- LLSettingsBase(const LLSD setting);
-
- typedef std::set<std::string> stringset_t;
-
- // combining settings objects. Customize for specific setting types
- virtual void lerpSettings(const LLSettingsBase &other, F32 mix);
- LLSD interpolateSDMap(const LLSD &settings, const LLSD &other, F32 mix) const;
-
- /// when lerping between settings, some may require special handling.
- /// Get a list of these key to be skipped by the default settings lerp.
- /// (handling should be performed in the override of lerpSettings.
- virtual stringset_t getSkipInterpolateKeys() const { return stringset_t(); }
-
- // A list of settings that represent quaternions and should be slerped
- // rather than lerped.
- virtual stringset_t getSlerpKeys() const { return stringset_t(); }
-
- // Calculate any custom settings that may need to be cached.
- virtual void updateSettings() { mDirty = false; };
-
- virtual validation_list_t getValidationList() const = 0;
-
- // Apply any settings that need special handling.
- virtual void applySpecial(void *) { };
-
- virtual parammapping_t getParameterMap() const { return parammapping_t(); }
-
- LLSD mSettings;
- bool mIsValid;
-
- LLSD cloneSettings() const;
-
-private:
- bool mDirty;
- size_t mHashValue;
-
- LLSD combineSDMaps(const LLSD &first, const LLSD &other) const;
-
-};
-
-
-class LLSettingsBlender : public boost::enable_shared_from_this<LLSettingsBlender>
-{
-public:
- typedef boost::shared_ptr<LLSettingsBlender> ptr_t;
- typedef boost::signals2::signal<void(const ptr_t &)> finish_signal_t;
- typedef boost::signals2::connection connection_t;
-
- static const F32Seconds DEFAULT_THRESHOLD;
-
- LLSettingsBlender(const LLSettingsBase::ptr_t &target,
- const LLSettingsBase::ptr_t &initsetting, const LLSettingsBase::ptr_t &endsetting, F32Seconds seconds) :
- mTarget(target),
- mInitial(initsetting),
- mFinal(endsetting),
- mSeconds(seconds),
- mOnFinished(),
- mBlendThreshold(DEFAULT_THRESHOLD),
- mLastUpdate(0.0f),
- mTimeSpent(0.0f)
- {
- mTarget->replaceSettings(mInitial->getSettings());
- mTimeStart = F32Seconds(LLDate::now().secondsSinceEpoch());
- mLastUpdate = mTimeStart;
- }
-
- ~LLSettingsBlender() {}
-
- connection_t setOnFinished(const finish_signal_t::slot_type &onfinished)
- {
- return mOnFinished.connect(onfinished);
- }
-
- void setUpdateThreshold(F32Seconds threshold)
- {
- mBlendThreshold = threshold;
- }
-
- F32Seconds getUpdateThreshold() const
- {
- return mBlendThreshold;
- }
-
- LLSettingsBase::ptr_t getTarget() const
- {
- return mTarget;
- }
-
- LLSettingsBase::ptr_t getInitial() const
- {
- return mInitial;
- }
-
- LLSettingsBase::ptr_t getFinal() const
- {
- return mFinal;
- }
-
- void update(F32Seconds time);
-private:
- LLSettingsBase::ptr_t mTarget;
- LLSettingsBase::ptr_t mInitial;
- LLSettingsBase::ptr_t mFinal;
- F32Seconds mSeconds;
- finish_signal_t mOnFinished;
- F32Seconds mBlendThreshold;
- F32Seconds mLastUpdate;
- F32Seconds mTimeSpent;
- F32Seconds mTimeStart;
-};
-
-#endif