Initial release

This commit is contained in:
civ
2026-08-16 18:24:52 +07:00
commit 876886a39a
13244 changed files with 2353959 additions and 0 deletions
@@ -0,0 +1,81 @@
// This file is part of VSTGUI. It is subject to the license terms
// in the LICENSE file found in the top-level directory of this
// distribution and at http://github.com/steinbergmedia/vstgui/LICENSE
#pragma once
#include "../lib/vstguifwd.h"
#include "../lib/cstring.h"
#include <vector>
#include "../lib/platform/std_unorderedmap.h"
namespace VSTGUI {
class OutputStream;
class InputStream;
using UIAttributesMap = std::unordered_map<std::string,std::string>;
//-----------------------------------------------------------------------------
class UIAttributes : public NonAtomicReferenceCounted, private UIAttributesMap
{
public:
using StringArray = std::vector<std::string>;
explicit UIAttributes (UTF8StringPtr* attributes = nullptr);
explicit UIAttributes (size_t reserve);
~UIAttributes () noexcept override = default;
using UIAttributesMap::empty;
using UIAttributesMap::begin;
using UIAttributesMap::end;
using UIAttributesMap::iterator;
using UIAttributesMap::const_iterator;
bool hasAttribute (const std::string& name) const;
const std::string* getAttributeValue (const std::string& name) const;
void setAttribute (const std::string& name, const std::string& value);
void setAttribute (const std::string& name, std::string&& value);
void setAttribute (std::string&& name, std::string&& value);
void removeAttribute (const std::string& name);
void setBooleanAttribute (const std::string& name, bool value);
bool getBooleanAttribute (const std::string& name, bool& value) const;
void setIntegerAttribute (const std::string& name, int32_t value);
bool getIntegerAttribute (const std::string& name, int32_t& value) const;
void setDoubleAttribute (const std::string& name, double value);
bool getDoubleAttribute (const std::string& name, double& value) const;
void setPointAttribute (const std::string& name, const CPoint& p);
bool getPointAttribute (const std::string& name, CPoint& p) const;
void setRectAttribute (const std::string& name, const CRect& r);
bool getRectAttribute (const std::string& name, CRect& r) const;
void setStringArrayAttribute (const std::string& name, const StringArray& values);
bool getStringArrayAttribute (const std::string& name, StringArray& values) const;
void removeAll () { clear (); }
bool store (OutputStream& stream) const;
bool restore (InputStream& stream);
static std::string pointToString (CPoint p);
static bool stringToPoint (const std::string& str, CPoint& p);
static std::string doubleToString (double value, uint32_t precision = 6);
static bool stringToDouble (const std::string& str, double& value);
static std::string boolToString (bool value);
static bool stringToBool (const std::string& str, bool& value);
static std::string integerToString (int32_t value);
static bool stringToInteger (const std::string& str, int32_t& value);
static std::string rectToString (CRect r, uint32_t precision = 6);
static bool stringToRect (const std::string& str, CRect& r);
static std::string stringArrayToString (const StringArray& values);
static bool stringToStringArray (const std::string& str, StringArray& values);
};
} // VSTGUI