TerraForge3D  2.3.1
3D Terrain And Landscape Generator
Utils.h
1#pragma once
2
3
4
5#include "Base/Base.h"
6
7#include <string>
8#include <cstring>
9
10class ProjectManager;
11
12std::string UChar2Hex(unsigned char c);
13
14struct Hash
15{
16
17 Hash()
18 {
19 }
20
21 Hash(unsigned char *d, int l)
22 {
23 length = l;
24 data = new unsigned char[length];
25 std::memcpy(data, d, length);
26 }
27
28 ~Hash()
29 {
30 //delete[] data;
31 }
32
33 std::string ToString()
34 {
35 std::string hash;
36
37 for (int i = 0; i < length; i++)
38 {
39 hash += UChar2Hex(data[i]);
40 }
41
42 return hash;
43 }
44
45 int length = 0;
46 unsigned char *data;
47};
48
49
50#define MAX(x, y) (x > y ? x : y)
51
52
53#ifdef TERR3D_WIN32
54std::wstring s2ws(const std::string &s);
55#endif
56
57void OpenURL(std::string url);
58
59std::string ShowSaveFileDialog(std::string ext = ".terr3d");
60
61std::string openfilename();
62
63std::string ShowOpenFileDialog(std::string ext = "*.glsl");
64
65std::string ReadShaderSourceFile(std::string path, bool *result);
66
67std::string GetExecutablePath();
68
69std::string GetExecutableDir();
70
71std::string GenerateId(uint32_t length);
72
73std::string FetchURL(std::string baseURL, std::string path);
74
75char *UChar2Char(unsigned char *data, int length);
76
77bool FileExists(std::string path, bool writeAccess = false);
78
79bool PathExist(const std::string &s);
80
81bool IsNetWorkConnected();
82
83char *ReadBinaryFile(std::string path, int *size, uint32_t sizeToLoad = -1);
84
85char *ReadBinaryFile(std::string path, uint32_t sizeToLoad = -1);
86
87Hash MD5File(std::string path);
88
89void DownloadFile(std::string baseURL, std::string urlPath, std::string path, int size = -1);
90
91void SaveToFile(std::string filename, std::string content = "");
92
93void Log(const char *log);
94
95void Log(std::string log);
96
97#ifdef TERR3D_WIN32
98#include <windows.h>
99void RegSet(HKEY hkeyHive, const char *pszVar, const char *pszValue);
100#endif
101
102void AccocFileType();
103
104void MkDir(std::string path);
105
106void CopyFileData(std::string source, std::string destination);
107
108bool DeleteFileT(std::string path);
109
110bool IsKeyDown(int key);
111
112bool IsMouseButtonDown(int button);
113
114void ShowMessageBox(std::string message, std::string title = "Info");
115
116bool LoadTexture(Texture2D *texture, bool loadToAssets = false, bool preserveData = true, bool readAlpha = false, ProjectManager *projectManager = nullptr);
117
118void ToggleSystemConsole();
119
120
121// KEY DEFINES
122/* The unknown key */
123#define TERR3D_KEY_UNKNOWN -1
124
125#define TERR3D_MOUSE_BUTTON_1 0
126#define TERR3D_MOUSE_BUTTON_2 1
127#define TERR3D_MOUSE_BUTTON_3 2
128#define TERR3D_MOUSE_BUTTON_4 3
129#define TERR3D_MOUSE_BUTTON_5 4
130#define TERR3D_MOUSE_BUTTON_6 5
131#define TERR3D_MOUSE_BUTTON_7 6
132#define TERR3D_MOUSE_BUTTON_8 7
133#define TERR3D_MOUSE_BUTTON_LAST TERR3D_MOUSE_BUTTON_8
134#define TERR3D_MOUSE_BUTTON_LEFT TERR3D_MOUSE_BUTTON_1
135#define TERR3D_MOUSE_BUTTON_RIGHT TERR3D_MOUSE_BUTTON_2
136#define TERR3D_MOUSE_BUTTON_MIDDLE TERR3D_MOUSE_BUTTON_3
137
138/* Printable keys */
139#define TERR3D_KEY_SPACE 32
140#define TERR3D_KEY_APOSTROPHE 39 /* ' */
141#define TERR3D_KEY_COMMA 44 /* , */
142#define TERR3D_KEY_MINUS 45 /* - */
143#define TERR3D_KEY_PERIOD 46 /* . */
144#define TERR3D_KEY_SLASH 47 /* / */
145#define TERR3D_KEY_0 48
146#define TERR3D_KEY_1 49
147#define TERR3D_KEY_2 50
148#define TERR3D_KEY_3 51
149#define TERR3D_KEY_4 52
150#define TERR3D_KEY_5 53
151#define TERR3D_KEY_6 54
152#define TERR3D_KEY_7 55
153#define TERR3D_KEY_8 56
154#define TERR3D_KEY_9 57
155#define TERR3D_KEY_SEMICOLON 59 /* ; */
156#define TERR3D_KEY_EQUAL 61 /* = */
157#define TERR3D_KEY_A 65
158#define TERR3D_KEY_B 66
159#define TERR3D_KEY_C 67
160#define TERR3D_KEY_D 68
161#define TERR3D_KEY_E 69
162#define TERR3D_KEY_F 70
163#define TERR3D_KEY_G 71
164#define TERR3D_KEY_H 72
165#define TERR3D_KEY_I 73
166#define TERR3D_KEY_J 74
167#define TERR3D_KEY_K 75
168#define TERR3D_KEY_L 76
169#define TERR3D_KEY_M 77
170#define TERR3D_KEY_N 78
171#define TERR3D_KEY_O 79
172#define TERR3D_KEY_P 80
173#define TERR3D_KEY_Q 81
174#define TERR3D_KEY_R 82
175#define TERR3D_KEY_S 83
176#define TERR3D_KEY_T 84
177#define TERR3D_KEY_U 85
178#define TERR3D_KEY_V 86
179#define TERR3D_KEY_W 87
180#define TERR3D_KEY_X 88
181#define TERR3D_KEY_Y 89
182#define TERR3D_KEY_Z 90
183#define TERR3D_KEY_LEFT_BRACKET 91 /* [ */
184#define TERR3D_KEY_BACKSLASH 92 /* \ */
185#define TERR3D_KEY_RIGHT_BRACKET 93 /* ] */
186#define TERR3D_KEY_GRAVE_ACCENT 96 /* ` */
187#define TERR3D_KEY_WORLD_1 161 /* non-US #1 */
188#define TERR3D_KEY_WORLD_2 162 /* non-US #2 */
189
190/* Function keys */
191#define TERR3D_KEY_ESCAPE 256
192#define TERR3D_KEY_ENTER 257
193#define TERR3D_KEY_TAB 258
194#define TERR3D_KEY_BACKSPACE 259
195#define TERR3D_KEY_INSERT 260
196#define TERR3D_KEY_DELETE 261
197#define TERR3D_KEY_RIGHT 262
198#define TERR3D_KEY_LEFT 263
199#define TERR3D_KEY_DOWN 264
200#define TERR3D_KEY_UP 265
201#define TERR3D_KEY_PAGE_UP 266
202#define TERR3D_KEY_PAGE_DOWN 267
203#define TERR3D_KEY_HOME 268
204#define TERR3D_KEY_END 269
205#define TERR3D_KEY_CAPS_LOCK 280
206#define TERR3D_KEY_SCROLL_LOCK 281
207#define TERR3D_KEY_NUM_LOCK 282
208#define TERR3D_KEY_PRINT_SCREEN 283
209#define TERR3D_KEY_PAUSE 284
210#define TERR3D_KEY_F1 290
211#define TERR3D_KEY_F2 291
212#define TERR3D_KEY_F3 292
213#define TERR3D_KEY_F4 293
214#define TERR3D_KEY_F5 294
215#define TERR3D_KEY_F6 295
216#define TERR3D_KEY_F7 296
217#define TERR3D_KEY_F8 297
218#define TERR3D_KEY_F9 298
219#define TERR3D_KEY_F10 299
220#define TERR3D_KEY_F11 300
221#define TERR3D_KEY_F12 301
222#define TERR3D_KEY_F13 302
223#define TERR3D_KEY_F14 303
224#define TERR3D_KEY_F15 304
225#define TERR3D_KEY_F16 305
226#define TERR3D_KEY_F17 306
227#define TERR3D_KEY_F18 307
228#define TERR3D_KEY_F19 308
229#define TERR3D_KEY_F20 309
230#define TERR3D_KEY_F21 310
231#define TERR3D_KEY_F22 311
232#define TERR3D_KEY_F23 312
233#define TERR3D_KEY_F24 313
234#define TERR3D_KEY_F25 314
235#define TERR3D_KEY_KP_0 320
236#define TERR3D_KEY_KP_1 321
237#define TERR3D_KEY_KP_2 322
238#define TERR3D_KEY_KP_3 323
239#define TERR3D_KEY_KP_4 324
240#define TERR3D_KEY_KP_5 325
241#define TERR3D_KEY_KP_6 326
242#define TERR3D_KEY_KP_7 327
243#define TERR3D_KEY_KP_8 328
244#define TERR3D_KEY_KP_9 329
245#define TERR3D_KEY_KP_DECIMAL 330
246#define TERR3D_KEY_KP_DIVIDE 331
247#define TERR3D_KEY_KP_MULTIPLY 332
248#define TERR3D_KEY_KP_SUBTRACT 333
249#define TERR3D_KEY_KP_ADD 334
250#define TERR3D_KEY_KP_ENTER 335
251#define TERR3D_KEY_KP_EQUAL 336
252#define TERR3D_KEY_LEFT_SHIFT 340
253#define TERR3D_KEY_LEFT_CONTROL 341
254#define TERR3D_KEY_LEFT_ALT 342
255#define TERR3D_KEY_LEFT_SUPER 343
256#define TERR3D_KEY_RIGHT_SHIFT 344
257#define TERR3D_KEY_RIGHT_CONTROL 345
258#define TERR3D_KEY_RIGHT_ALT 346
259#define TERR3D_KEY_RIGHT_SUPER 347
260#define TERR3D_KEY_MENU 348
261
262#define TERR3D_KEY_LAST TERR3D_KEY_MENU
Definition: Utils.h:15