forked from mikke89/RmlUi
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into add_tests
# Conflicts: # CMakeLists.txt # Source/Core/DataModel.cpp # Source/Core/GeometryDatabase.cpp
- Loading branch information
Showing
158 changed files
with
644 additions
and
419 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,203 @@ | ||
/* | ||
* This source file is part of RmlUi, the HTML/CSS Interface Middleware | ||
* | ||
* For the latest information, see http://github.com/mikke89/RmlUi | ||
* | ||
* Copyright (c) 2008-2010 CodePoint Ltd, Shift Technology Ltd | ||
* Copyright (c) 2019 The RmlUi Team, and contributors | ||
* | ||
* Permission is hereby granted, free of charge, to any person obtaining a copy | ||
* of this software and associated documentation files (the "Software"), to deal | ||
* in the Software without restriction, including without limitation the rights | ||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
* copies of the Software, and to permit persons to whom the Software is | ||
* furnished to do so, subject to the following conditions: | ||
* | ||
* The above copyright notice and this permission notice shall be included in | ||
* all copies or substantial portions of the Software. | ||
* | ||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
* THE SOFTWARE. | ||
* | ||
*/ | ||
|
||
#ifndef RMLUI_CONFIG_CONFIG_H | ||
#define RMLUI_CONFIG_CONFIG_H | ||
|
||
/* | ||
* This file provides the means to configure various types used across RmlUi. It is possible to override container | ||
* types with your own, provided they are compatible with STL, or customize STL containers, for example by setting | ||
* custom allocators. This file may be edited directly, or can be copied to an alternate location, modified, and | ||
* included by setting the CMake option CUSTOM_CONFIGURATION_FILE (RMLUI_CUSTOM_CONFIGURATION_FILE preprocessor | ||
* define) to the path of that file. | ||
*/ | ||
|
||
#ifdef RMLUI_CUSTOM_CONFIGURATION_FILE | ||
#include RMLUI_CUSTOM_CONFIGURATION_FILE | ||
#else | ||
#include <utility> | ||
#include <vector> | ||
#include <string> | ||
#include <stack> | ||
#include <list> | ||
#include <functional> | ||
#include <queue> | ||
#include <array> | ||
#include <unordered_map> | ||
#include <memory> | ||
|
||
#ifdef RMLUI_NO_THIRDPARTY_CONTAINERS | ||
#include <set> | ||
#include <unordered_set> | ||
#else | ||
#include "../Core/Containers/chobo/flat_map.hpp" | ||
#include "../Core/Containers/chobo/flat_set.hpp" | ||
#include "../Core/Containers/robin_hood.h" | ||
#endif // RMLUI_NO_THIRDPARTY_CONTAINERS | ||
|
||
namespace Rml { | ||
|
||
// Default matrix type to be used. This alias may be set to ColumnMajorMatrix4f or RowMajorMatrix4f. This alias can not | ||
// be set here because matrix types are defined after this include in Core/Types.h. | ||
#ifdef RMLUI_MATRIX_ROW_MAJOR | ||
#define RMLUI_MATRIX4_TYPE RowMajorMatrix4f | ||
#else | ||
#define RMLUI_MATRIX4_TYPE ColumnMajorMatrix4f | ||
#endif | ||
|
||
// A way to disable 'final' specified for Rml::Releaser class. It breaks EASTL. | ||
#define RMLUI_RELEASER_FINAL final | ||
|
||
// Containers types. | ||
template<typename T> | ||
using Vector = std::vector<T>; | ||
template<typename T, size_t N = 1> | ||
using Array = std::array<T, N>; | ||
template<typename T> | ||
using Stack = std::stack<T>; | ||
template<typename T> | ||
using List = std::list<T>; | ||
template<typename T> | ||
using Queue = std::queue<T>; | ||
template<typename T1, typename T2> | ||
using Pair = std::pair<T1, T2>; | ||
template <typename Key, typename Value> | ||
using UnorderedMultimap = std::unordered_multimap< Key, Value >; | ||
#ifdef RMLUI_NO_THIRDPARTY_CONTAINERS | ||
template <typename Key, typename Value> | ||
using UnorderedMap = std::unordered_map< Key, Value >; | ||
template <typename Key, typename Value> | ||
using SmallUnorderedMap = UnorderedMap< Key, Value >; | ||
template <typename T> | ||
using UnorderedSet = std::unordered_set< T >; | ||
template <typename T> | ||
using SmallUnorderedSet = std::unordered_set< T >; | ||
template <typename T> | ||
using SmallOrderedSet = std::set< T >; | ||
#else | ||
template < typename Key, typename Value> | ||
using UnorderedMap = robin_hood::unordered_flat_map< Key, Value >; | ||
template <typename Key, typename Value> | ||
using SmallUnorderedMap = chobo::flat_map< Key, Value >; | ||
template <typename T> | ||
using UnorderedSet = robin_hood::unordered_flat_set< T >; | ||
template <typename T> | ||
using SmallUnorderedSet = chobo::flat_set< T >; | ||
template <typename T> | ||
using SmallOrderedSet = chobo::flat_set< T >; | ||
#endif // RMLUI_NO_THIRDPARTY_CONTAINERS | ||
template<typename Iterator> | ||
inline std::move_iterator<Iterator> MakeMoveIterator(Iterator it) { return std::make_move_iterator(it); } | ||
|
||
// Utilities. | ||
template <typename T> | ||
using Hash = std::hash<T>; | ||
template<typename T> | ||
using Function = std::function<T>; | ||
|
||
// Strings. | ||
using String = std::string; | ||
using StringList = Vector< String >; | ||
using U16String = std::u16string; | ||
|
||
// Smart pointer types. | ||
template<typename T> | ||
using UniquePtr = std::unique_ptr<T>; | ||
template<typename T> | ||
class Releaser; | ||
template<typename T> | ||
using UniqueReleaserPtr = std::unique_ptr<T, Releaser<T>>; | ||
template<typename T> | ||
using SharedPtr = std::shared_ptr<T>; | ||
template<typename T> | ||
using WeakPtr = std::weak_ptr<T>; | ||
template<typename T, typename... Args> | ||
inline SharedPtr<T> MakeShared(Args... args) { return std::make_shared<T, Args...>(std::forward<Args>(args)...); } | ||
template<typename T, typename... Args> | ||
inline UniquePtr<T> MakeUnique(Args... args) { return std::make_unique<T, Args...>(std::forward<Args>(args)...); } | ||
|
||
} | ||
|
||
|
||
/*** | ||
// The following defines should be used for inserting custom type cast operators for conversion of RmlUi types | ||
// to user types. RmlUi uses template math types, therefore conversion operators to non-templated types | ||
// should be done using SFINAE as in example below. | ||
// Extra code to be inserted into RmlUi::Color<> class body. Note: be mindful of colorspaces used by different | ||
// color types. RmlUi assumes that float colors are interpreted in linear colorspace while byte colors are | ||
// interpreted as sRGB. | ||
#define RMLUI_COLOUR_USER_EXTRA \ | ||
template<typename U = ColourType, typename std::enable_if_t<std::is_same_v<U, byte>>* = nullptr> \ | ||
operator MyColor() const { return MyColor( \ | ||
(float)red / 255.0f, (float)green / 255.0f, (float)blue / 255.0f, (float)alpha / 255.0f); } \ | ||
template<typename U = ColourType, typename std::enable_if_t<std::is_same_v<U, float>>* = nullptr> \ | ||
operator MyColor() const { return MyColor(red, green, blue, alpha); } \ | ||
// Extra code to be inserted into RmlUi::Vector2<> class body. | ||
#define RMLUI_VECTOR2_USER_EXTRA \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, int>>* = nullptr> \ | ||
operator typename MyIntVector2() const { return MyIntVector2(x, y); } \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, float>>* = nullptr> \ | ||
operator MyVector2() const { return MyVector2(x, y); } \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, int>>* = nullptr> \ | ||
Vector2(MyIntVector2 value) : Vector2(value.x_, value.y_) { } \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, float>>* = nullptr> \ | ||
Vector2(MyVector2 value) : Vector2(value.x_, value.y_) { } \ | ||
// Extra code to be inserted into RmlUi::Vector3<> class body. | ||
#define RMLUI_VECTOR3_USER_EXTRA \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, int>>* = nullptr> \ | ||
operator typename MyIntVector3() const { return MyIntVector3(x, y, z); } \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, float>>* = nullptr> \ | ||
operator MyVector3() const { return MyVector3(x, y, z); } \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, int>>* = nullptr> \ | ||
Vector3(MyIntVector3 value) : Vector3(value.x_, value.y_, value.z_) { } \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, float>>* = nullptr> \ | ||
Vector3(MyVector3 value) : Vector3(value.x_, value.y_, value.z_) { } \ | ||
// Extra code to be inserted into RmlUi::Vector4<> class body. | ||
#define RMLUI_VECTOR4_USER_EXTRA \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, int>>* = nullptr> \ | ||
operator typename MyIntVector4() const { return MyIntVector4(x, y, z, w); } \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, float>>* = nullptr> \ | ||
operator MyVector4() const { return MyVector4(x, y, z, w); } \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, int>>* = nullptr> \ | ||
Vector4(MyIntVector4 value) : Vector4(value.x_, value.y_, value.z_, value.w_) { } \ | ||
template<typename U = Type, typename std::enable_if_t<std::is_same_v<U, float>>* = nullptr> \ | ||
Vector4(MyVector4 value) : Vector4(value.x_, value.y_, value.z_, value.w_) { } \ | ||
// Extra code to be inserted into RmlUi::Matrix4<> class body. | ||
#define RMLUI_MATRIX4_USER_EXTRA operator MyMatrix4() const { return MyMatrix4(data()); } | ||
***/ | ||
|
||
|
||
#endif // RMLUI_USER_CONFIG_FILE | ||
|
||
#endif // RMLUI_CONFIG_CONFIG_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.