TGUI
=
=
Download
Tutorials
1.0-dev
0.9
0.8
Documentation
1.0-dev
0.9
0.8
Examples
1.0-dev
0.9
0.8
Community
TGUI
1.0-beta
Loading...
Searching...
No Matches
include
TGUI
Config.hpp
1
2
//
3
// TGUI - Texus' Graphical User Interface
4
// Copyright (C) 2012-2022 Bruno Van de Velde (vdv_b@tgui.eu)
5
//
6
// This software is provided 'as-is', without any express or implied warranty.
7
// In no event will the authors be held liable for any damages arising from the use of this software.
8
//
9
// Permission is granted to anyone to use this software for any purpose,
10
// including commercial applications, and to alter it and redistribute it freely,
11
// subject to the following restrictions:
12
//
13
// 1. The origin of this software must not be misrepresented;
14
// you must not claim that you wrote the original software.
15
// If you use this software in a product, an acknowledgment
16
// in the product documentation would be appreciated but is not required.
17
//
18
// 2. Altered source versions must be plainly marked as such,
19
// and must not be misrepresented as being the original software.
20
//
21
// 3. This notice may not be removed or altered from any source distribution.
22
//
24
25
#ifndef TGUI_CONFIG_HPP
26
#define TGUI_CONFIG_HPP
27
28
// Config.hpp is generated by CMake, it should not be edited directly.
29
30
// Version of the library
31
#define TGUI_VERSION_MAJOR 0
32
#define TGUI_VERSION_MINOR 10
33
#define TGUI_VERSION_PATCH 0
34
35
// Detect the platform, to enable platform-specific code
36
#if defined(_WIN32)
37
#define TGUI_SYSTEM_WINDOWS
// Windows
38
#elif defined(__APPLE__) && defined(__MACH__)
39
#include "TargetConditionals.h"
40
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
41
#define TGUI_SYSTEM_IOS
// iOS
42
#elif TARGET_OS_MAC
43
#define TGUI_SYSTEM_MACOS
// macOS
44
#endif
45
#elif defined(__unix__)
46
#if defined(__ANDROID__)
47
#define TGUI_SYSTEM_ANDROID
// Android
48
#else
//if defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
49
#define TGUI_SYSTEM_LINUX
// Linux or BSD
50
#endif
51
#endif
52
53
// TGUI will link in the same way as SFML, unless TGUI_DYNAMIC or TGUI_STATIC is defined
54
#if !defined(TGUI_DYNAMIC) && !defined(TGUI_STATIC)
55
#ifdef SFML_STATIC
56
#define TGUI_STATIC
57
#endif
58
#endif
59
60
#ifndef TGUI_STATIC
61
#ifdef TGUI_SYSTEM_WINDOWS
62
// Windows compilers need specific (and different) keywords for export and import
63
#ifdef TGUI_EXPORTS
64
#define TGUI_API __declspec(dllexport)
65
#else
66
#define TGUI_API __declspec(dllimport)
67
#endif
68
69
// For Visual C++ compilers, we also need to turn off the annoying C4251 warning
70
#ifdef _MSC_VER
71
#pragma warning(disable: 4251)
72
#endif
73
#else
74
#define TGUI_API __attribute__ ((__visibility__ ("default"
)))
75
#endif
76
#else
77
// Static build doesn't need import/export macros
78
#define TGUI_API
79
#endif
80
81
// Enables code that relies on a specific backend
82
#define TGUI_HAS_WINDOW_BACKEND_SFML 1
83
#define TGUI_HAS_WINDOW_BACKEND_SDL 1
84
#define TGUI_HAS_WINDOW_BACKEND_GLFW 1
85
86
#define TGUI_HAS_RENDERER_BACKEND_SFML_GRAPHICS 1
87
#define TGUI_HAS_RENDERER_BACKEND_SDL_RENDERER 1
88
#define TGUI_HAS_RENDERER_BACKEND_OPENGL3 1
89
#define TGUI_HAS_RENDERER_BACKEND_GLES2 1
90
91
#define TGUI_HAS_FONT_BACKEND_SFML_GRAPHICS 1
92
#define TGUI_HAS_FONT_BACKEND_SDL_TTF 1
93
#define TGUI_HAS_FONT_BACKEND_FREETYPE 1
94
95
#define TGUI_HAS_BACKEND_SFML_GRAPHICS 1
96
#define TGUI_HAS_BACKEND_SFML_OPENGL3 1
97
#define TGUI_HAS_BACKEND_SDL_RENDERER 1
98
#define TGUI_HAS_BACKEND_SDL_OPENGL3 1
99
#define TGUI_HAS_BACKEND_SDL_GLES2 1
100
#define TGUI_HAS_BACKEND_SDL_TTF_OPENGL3 1
101
#define TGUI_HAS_BACKEND_SDL_TTF_GLES2 1
102
#define TGUI_HAS_BACKEND_GLFW_OPENGL3 1
103
#define TGUI_HAS_BACKEND_GLFW_GLES2 1
104
105
// Some window backends (SFML < 2.6 and SDL) don't support diagonal mouse cursors on Linux in which case TGUI loads them directly with X11.
106
// Settig this option to FALSE in CMake will remove the X11 dependency but will cause those cursors to not show up when using them.
107
#define TGUI_USE_X11 1
108
109
// Define that specifies the mininmum c++ support in both the TGUI code and user code.
110
// This constant can be lower than the actual c++ standard version used to compile with,
111
// as long as this constant is the same when compiling TGUI and when using the TGUI libs.
112
#define TGUI_COMPILED_WITH_CPP_VER 17
113
114
// Include the version header when c++20 is available to use the library feature-testing macros
115
#if TGUI_COMPILED_WITH_CPP_VER >= 20
116
#include <version>
117
#elif defined(__has_include)
118
// Try including the header even when TGUI itself wasn't compiled with c++20
119
#if __has_include(<version>)
120
#include <version>
121
#endif
122
#endif
123
124
// Enable the use of std::filesystem if TGUI is built with c++17 with a new enough compiler.
125
// Although GCC and clang supported it before version 9, this is the first version where no
126
// additional library has to be linked in order to use std::filesystem. This is also the
127
// reason why we can't rely on __cpp_lib_filesystem for this.
128
// Xcode 11 supports it on macOS 10.15 only, so we require Xcode 12 which doesn't run on macOS 10.14.
129
#if TGUI_COMPILED_WITH_CPP_VER >= 17
130
#if (defined(__apple_build_version__) && defined(__clang_major__) && (__clang_major__ >= 12)) \
131
|| (!defined(__apple_build_version__) && defined(__clang_major__) && (__clang_major__ >= 9)) \
132
|| (defined(__GNUC__) && (__GNUC__ >= 9)) \
133
|| (defined(_MSC_VER) && (_MSC_VER >= 1914))
134
#define TGUI_USE_STD_FILESYSTEM
135
#endif
136
#endif
137
138
// No compiler supports clock_cast yet, so enabling the following define has never been tested
139
//#if __cpp_lib_chrono >= 201907L && defined(TGUI_USE_STD_FILESYSTEM)
140
// #define TGUI_USE_STD_FILESYSTEM_FILE_TIME
141
//#endif
142
143
#if __cplusplus >= 201703L
144
#define TGUI_EMPLACE_BACK(object, vector) auto& object = vector.emplace_back();
145
#else
146
#define TGUI_EMPLACE_BACK(object, vector) vector.emplace_back(); auto& object = vector.back();
147
#endif
148
149
#ifndef TGUI_NO_DEPRECATED_WARNINGS
150
#define TGUI_DEPRECATED(msg) [[deprecated(msg)]]
151
#else
152
#define TGUI_DEPRECATED(msg)
153
#endif
154
155
#if defined(__GNUC__)
156
#define TGUI_IGNORE_DEPRECATED_WARNINGS_START \
157
_Pragma("GCC diagnostic push"
) \
158
_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
159
160
#define TGUI_IGNORE_DEPRECATED_WARNINGS_END _Pragma("GCC diagnostic pop"
)
161
#elif defined (_MSC_VER) && (_MSC_VER >= 1927)
162
#define TGUI_IGNORE_DEPRECATED_WARNINGS_START \
163
_Pragma("warning(push)"
) \
164
_Pragma("warning(disable: 4996)")
165
166
#define TGUI_IGNORE_DEPRECATED_WARNINGS_END _Pragma("warning(pop)"
)
167
#elif defined (_MSC_VER)
168
#define TGUI_IGNORE_DEPRECATED_WARNINGS_START \
169
__pragma(warning(push)) \
170
__pragma(warning(disable: 4996))
171
172
#define TGUI_IGNORE_DEPRECATED_WARNINGS_END __pragma(warning(pop))
173
#endif
174
175
#if !defined(NDEBUG) && !defined(TGUI_NO_RUNTIME_WARNINGS)
176
#include <iostream>
177
#define TGUI_PRINT_WARNING(msg) { std::cerr << "TGUI warning: "
<< msg << "\n"; }
178
#else
179
#define TGUI_PRINT_WARNING(msg)
180
#endif
181
182
#if !defined(NDEBUG) && !defined(TGUI_DISABLE_ASSERTS)
183
#include <iostream>
184
#include <cassert>
185
#include <exception>
186
#define TGUI_ASSERT(condition, msg) { \
187
if (!(condition)) { \
188
std::cerr << "TGUI assertion: "
<< msg << "\n"; \
189
assert(condition); \
190
std::terminate(); \
191
} \
192
}
193
#else
194
#define TGUI_ASSERT(condition, msg)
195
#endif
196
197
// Using [=] gives a warning in c++20, but using [=,this] may not compile with older c++ versions
198
#if __cplusplus > 201703L
199
#define TGUI_LAMBDA_CAPTURE_EQ_THIS [=,this]
200
#else
201
#define TGUI_LAMBDA_CAPTURE_EQ_THIS [=]
202
#endif
203
204
#endif
// TGUI_CONFIG_HPP
Generated on Sat Dec 10 2022 16:04:59 for TGUI by
1.9.5