raylib 5.6.0.0.dev1__cp312-cp312-win32.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pyray/__init__.py ADDED
@@ -0,0 +1,159 @@
1
+ # Copyright (c) 2021 Richard Smith and others
2
+ #
3
+ # This program and the accompanying materials are made available under the
4
+ # terms of the Eclipse Public License 2.0 which is available at
5
+ # http://www.eclipse.org/legal/epl-2.0.
6
+ #
7
+ # This Source Code may also be made available under the following Secondary
8
+ # licenses when the conditions for such availability set forth in the Eclipse
9
+ # Public License, v. 2.0 are satisfied: GNU General Public License, version 2
10
+ # with the GNU Classpath Exception which is
11
+ # available at https://www.gnu.org/software/classpath/license.html.
12
+ #
13
+ # SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
14
+ import re
15
+ import weakref
16
+ from array import array
17
+
18
+ from raylib import rl, ffi
19
+ from raylib.colors import *
20
+
21
+ try:
22
+ from raylib.defines import *
23
+ except AttributeError:
24
+ print("sorry deprecated enums dont work on dynamic version")
25
+
26
+ from inspect import getmembers, isbuiltin
27
+
28
+ current_module = __import__(__name__)
29
+
30
+
31
+ def _underscore(word: str) -> str:
32
+ word = re.sub('2D$', '_2d', word)
33
+ word = re.sub('3D$', '_3d', word)
34
+ word = re.sub(r"([A-Z]+)([A-Z][a-z])", r'\1_\2', word)
35
+ word = re.sub(r"([a-z\d])([A-Z])", r'\1_\2', word)
36
+ word = word.replace("-", "_")
37
+ return word.lower()
38
+
39
+
40
+ def _wrap_function(original_func):
41
+ c_args = [str(x) for x in ffi.typeof(original_func).args]
42
+ number_of_args = len(c_args)
43
+ c_arg_is_pointer = [x.kind == 'pointer' for x in ffi.typeof(original_func).args]
44
+ c_arg_is_string = [str(x) == "<ctype 'char *'>" for x in ffi.typeof(original_func).args]
45
+ # c_arg_is_void_pointer = [str(x) == "<ctype 'void *'>" for x in ffi.typeof(original_func).args]
46
+
47
+ def wrapped_func(*args):
48
+ args = list(args) # tuple is immutable, converting it to mutable list is faster than constructing new list!
49
+ for i in range(number_of_args):
50
+ try:
51
+ arg = args[i]
52
+ except IndexError:
53
+ raise RuntimeError(f"function requires {number_of_args} arguments but you supplied {len(args)}")
54
+ if c_arg_is_pointer[i]:
55
+ if c_arg_is_string[i]: # we assume c_arg is 'const char *'
56
+ try: # if it's a non-const 'char *' then user should be supplying a ctype pointer, not a Python
57
+ # string
58
+ args[i] = arg.encode('utf-8') # in that case this conversion will fail
59
+ except AttributeError: # but those functions are uncommon, so quicker on average to try the
60
+ # conversion
61
+ pass # and ignore the exception
62
+ # if user supplied a Python string but c_arg is a 'char *' not a 'const char *' then we ought to raise
63
+ # exception because its an out
64
+ # parameter and user should supply a ctype pointer, but we cant because cffi cant detect 'const'
65
+ # so we would have to get the info from raylib.json
66
+ elif c_args[i] == "<ctype 'char * *'>" and type(arg) is list:
67
+ args[i] = [ffi.new("char[]", x.encode('utf-8')) for x in arg]
68
+ elif is_cdata(arg) and "*" not in str(arg):
69
+ args[i] = ffi.addressof(arg)
70
+ elif arg is None:
71
+ args[i] = ffi.NULL
72
+ elif not is_cdata(arg):
73
+ if c_args[i] == "<ctype '_Bool *'>":
74
+ raise TypeError(
75
+ f"Argument {i} ({arg}) must be a ctype bool, please create one with: pyray.ffi.new('bool "
76
+ f"*', True)")
77
+ elif c_args[i] == "<ctype 'int *'>":
78
+ raise TypeError(
79
+ f"Argument {i} ({arg}) must be a ctype int, please create one with: pyray.ffi.new('int "
80
+ f"*', 1)")
81
+ elif c_args[i] == "<ctype 'float *'>":
82
+ raise TypeError(
83
+ f"Argument {i} ({arg}) must be a ctype float, please create one with: pyray.ffi.new("
84
+ f"'float *', 1.0)")
85
+ elif c_args[i] == "<ctype 'void *'>":
86
+ # we could assume it's a string and try to convert it but we would have to be sure it's
87
+ # const. that seems reasonable assumption for char* but i'm not confident it is for void*
88
+ raise TypeError(
89
+ f"Argument {i} ({arg}) must be a cdata pointer. Type is void so I don't know what type it "
90
+ f"should be."
91
+ "If it's a const string you can create it with pyray.ffi.new('char []', b\"whatever\") . "
92
+ "If it's a float you can create it with pyray.ffi.new('float *', 1.0)")
93
+
94
+ result = original_func(*args)
95
+ if result is None:
96
+ return
97
+ elif is_cdata(result) and str(result).startswith("<cdata 'char *'"):
98
+ if str(result) == "<cdata 'char *' NULL>":
99
+ return ""
100
+ else:
101
+ return ffi.string(result).decode('utf-8')
102
+ else:
103
+ return result
104
+
105
+ # apparently pypy and cpython produce different types so check for both
106
+ def is_cdata(arg):
107
+ return str(type(arg)) == "<class '_cffi_backend.__CDataOwn'>" or str(
108
+ type(arg)) == "<class '_cffi_backend._CDataBase'>"
109
+
110
+ return wrapped_func
111
+
112
+
113
+ global_weakkeydict = weakref.WeakKeyDictionary()
114
+
115
+
116
+ def _make_struct_constructor_function(struct):
117
+ def func(*args):
118
+ # print(struct, args)
119
+ modified_args = []
120
+ for (field, arg) in zip(ffi.typeof(struct).fields, args):
121
+ # print("arg:", str(arg), "field:", field[1], "field type:", field[1].type, "type(arg):", str(type(arg)))
122
+ if arg is None:
123
+ arg = ffi.NULL
124
+ elif (field[1].type.kind == 'pointer'
125
+ and (str(type(arg)) == "<class 'numpy.ndarray'>"
126
+ or isinstance(arg, (array, bytes, bytearray, memoryview)))):
127
+ arg = ffi.from_buffer(field[1].type, arg)
128
+ modified_args.append(arg)
129
+ s = ffi.new(f"{struct} *", modified_args)[0]
130
+ global_weakkeydict[s] = modified_args
131
+ return s
132
+
133
+ return func
134
+
135
+
136
+ for name, attr in getmembers(rl):
137
+ # print(name, attr)
138
+ uname = _underscore(name)
139
+ if isbuiltin(attr) or str(type(attr)) == "<class '_cffi_backend.__FFIFunctionWrapper'>" or str(
140
+ type(attr)) == "<class '_cffi_backend._CDataBase'>":
141
+ # print(attr.__call__)
142
+ # print(attr.__doc__)
143
+ # print(dir(attr))
144
+ # print(dir(attr.__repr__))
145
+ f = _wrap_function(attr)
146
+ setattr(current_module, uname, f)
147
+ else:
148
+ setattr(current_module, name, attr)
149
+
150
+ for struct in ffi.list_types()[0]:
151
+ f = _make_struct_constructor_function(struct)
152
+ setattr(current_module, struct, f)
153
+
154
+ # overwrite ffi enums with our own
155
+ from raylib.enums import *
156
+
157
+
158
+ def text_format(*args):
159
+ raise RuntimeError("Use Python f-strings etc rather than calling text_format().")
pyray/__init__.pyi ADDED
@@ -0,0 +1,368 @@
1
+ class ConfigFlags(int):
2
+ """System/Window config flags."""
3
+ FLAG_VSYNC_HINT = 64
4
+ FLAG_FULLSCREEN_MODE = 2
5
+ FLAG_WINDOW_RESIZABLE = 4
6
+ FLAG_WINDOW_UNDECORATED = 8
7
+ FLAG_WINDOW_HIDDEN = 128
8
+ FLAG_WINDOW_MINIMIZED = 512
9
+ FLAG_WINDOW_MAXIMIZED = 1024
10
+ FLAG_WINDOW_UNFOCUSED = 2048
11
+ FLAG_WINDOW_TOPMOST = 4096
12
+ FLAG_WINDOW_ALWAYS_RUN = 256
13
+ FLAG_WINDOW_TRANSPARENT = 16
14
+ FLAG_WINDOW_HIGHDPI = 8192
15
+ FLAG_WINDOW_MOUSE_PASSTHROUGH = 16384
16
+ FLAG_BORDERLESS_WINDOWED_MODE = 32768
17
+ FLAG_MSAA_4X_HINT = 32
18
+ FLAG_INTERLACED_HINT = 65536
19
+
20
+ class TraceLogLevel(int):
21
+ """Trace log level."""
22
+ LOG_ALL = 0
23
+ LOG_TRACE = 1
24
+ LOG_DEBUG = 2
25
+ LOG_INFO = 3
26
+ LOG_WARNING = 4
27
+ LOG_ERROR = 5
28
+ LOG_FATAL = 6
29
+ LOG_NONE = 7
30
+
31
+ class KeyboardKey(int):
32
+ """Keyboard keys (US keyboard layout)."""
33
+ KEY_NULL = 0
34
+ KEY_APOSTROPHE = 39
35
+ KEY_COMMA = 44
36
+ KEY_MINUS = 45
37
+ KEY_PERIOD = 46
38
+ KEY_SLASH = 47
39
+ KEY_ZERO = 48
40
+ KEY_ONE = 49
41
+ KEY_TWO = 50
42
+ KEY_THREE = 51
43
+ KEY_FOUR = 52
44
+ KEY_FIVE = 53
45
+ KEY_SIX = 54
46
+ KEY_SEVEN = 55
47
+ KEY_EIGHT = 56
48
+ KEY_NINE = 57
49
+ KEY_SEMICOLON = 59
50
+ KEY_EQUAL = 61
51
+ KEY_A = 65
52
+ KEY_B = 66
53
+ KEY_C = 67
54
+ KEY_D = 68
55
+ KEY_E = 69
56
+ KEY_F = 70
57
+ KEY_G = 71
58
+ KEY_H = 72
59
+ KEY_I = 73
60
+ KEY_J = 74
61
+ KEY_K = 75
62
+ KEY_L = 76
63
+ KEY_M = 77
64
+ KEY_N = 78
65
+ KEY_O = 79
66
+ KEY_P = 80
67
+ KEY_Q = 81
68
+ KEY_R = 82
69
+ KEY_S = 83
70
+ KEY_T = 84
71
+ KEY_U = 85
72
+ KEY_V = 86
73
+ KEY_W = 87
74
+ KEY_X = 88
75
+ KEY_Y = 89
76
+ KEY_Z = 90
77
+ KEY_LEFT_BRACKET = 91
78
+ KEY_BACKSLASH = 92
79
+ KEY_RIGHT_BRACKET = 93
80
+ KEY_GRAVE = 96
81
+ KEY_SPACE = 32
82
+ KEY_ESCAPE = 256
83
+ KEY_ENTER = 257
84
+ KEY_TAB = 258
85
+ KEY_BACKSPACE = 259
86
+ KEY_INSERT = 260
87
+ KEY_DELETE = 261
88
+ KEY_RIGHT = 262
89
+ KEY_LEFT = 263
90
+ KEY_DOWN = 264
91
+ KEY_UP = 265
92
+ KEY_PAGE_UP = 266
93
+ KEY_PAGE_DOWN = 267
94
+ KEY_HOME = 268
95
+ KEY_END = 269
96
+ KEY_CAPS_LOCK = 280
97
+ KEY_SCROLL_LOCK = 281
98
+ KEY_NUM_LOCK = 282
99
+ KEY_PRINT_SCREEN = 283
100
+ KEY_PAUSE = 284
101
+ KEY_F1 = 290
102
+ KEY_F2 = 291
103
+ KEY_F3 = 292
104
+ KEY_F4 = 293
105
+ KEY_F5 = 294
106
+ KEY_F6 = 295
107
+ KEY_F7 = 296
108
+ KEY_F8 = 297
109
+ KEY_F9 = 298
110
+ KEY_F10 = 299
111
+ KEY_F11 = 300
112
+ KEY_F12 = 301
113
+ KEY_LEFT_SHIFT = 340
114
+ KEY_LEFT_CONTROL = 341
115
+ KEY_LEFT_ALT = 342
116
+ KEY_LEFT_SUPER = 343
117
+ KEY_RIGHT_SHIFT = 344
118
+ KEY_RIGHT_CONTROL = 345
119
+ KEY_RIGHT_ALT = 346
120
+ KEY_RIGHT_SUPER = 347
121
+ KEY_KB_MENU = 348
122
+ KEY_KP_0 = 320
123
+ KEY_KP_1 = 321
124
+ KEY_KP_2 = 322
125
+ KEY_KP_3 = 323
126
+ KEY_KP_4 = 324
127
+ KEY_KP_5 = 325
128
+ KEY_KP_6 = 326
129
+ KEY_KP_7 = 327
130
+ KEY_KP_8 = 328
131
+ KEY_KP_9 = 329
132
+ KEY_KP_DECIMAL = 330
133
+ KEY_KP_DIVIDE = 331
134
+ KEY_KP_MULTIPLY = 332
135
+ KEY_KP_SUBTRACT = 333
136
+ KEY_KP_ADD = 334
137
+ KEY_KP_ENTER = 335
138
+ KEY_KP_EQUAL = 336
139
+ KEY_BACK = 4
140
+ KEY_MENU = 5
141
+ KEY_VOLUME_UP = 24
142
+ KEY_VOLUME_DOWN = 25
143
+
144
+ class MouseButton(int):
145
+ """Mouse buttons."""
146
+ MOUSE_BUTTON_LEFT = 0
147
+ MOUSE_BUTTON_RIGHT = 1
148
+ MOUSE_BUTTON_MIDDLE = 2
149
+ MOUSE_BUTTON_SIDE = 3
150
+ MOUSE_BUTTON_EXTRA = 4
151
+ MOUSE_BUTTON_FORWARD = 5
152
+ MOUSE_BUTTON_BACK = 6
153
+
154
+ class MouseCursor(int):
155
+ """Mouse cursor."""
156
+ MOUSE_CURSOR_DEFAULT = 0
157
+ MOUSE_CURSOR_ARROW = 1
158
+ MOUSE_CURSOR_IBEAM = 2
159
+ MOUSE_CURSOR_CROSSHAIR = 3
160
+ MOUSE_CURSOR_POINTING_HAND = 4
161
+ MOUSE_CURSOR_RESIZE_EW = 5
162
+ MOUSE_CURSOR_RESIZE_NS = 6
163
+ MOUSE_CURSOR_RESIZE_NWSE = 7
164
+ MOUSE_CURSOR_RESIZE_NESW = 8
165
+ MOUSE_CURSOR_RESIZE_ALL = 9
166
+ MOUSE_CURSOR_NOT_ALLOWED = 10
167
+
168
+ class GamepadButton(int):
169
+ """Gamepad buttons."""
170
+ GAMEPAD_BUTTON_UNKNOWN = 0
171
+ GAMEPAD_BUTTON_LEFT_FACE_UP = 1
172
+ GAMEPAD_BUTTON_LEFT_FACE_RIGHT = 2
173
+ GAMEPAD_BUTTON_LEFT_FACE_DOWN = 3
174
+ GAMEPAD_BUTTON_LEFT_FACE_LEFT = 4
175
+ GAMEPAD_BUTTON_RIGHT_FACE_UP = 5
176
+ GAMEPAD_BUTTON_RIGHT_FACE_RIGHT = 6
177
+ GAMEPAD_BUTTON_RIGHT_FACE_DOWN = 7
178
+ GAMEPAD_BUTTON_RIGHT_FACE_LEFT = 8
179
+ GAMEPAD_BUTTON_LEFT_TRIGGER_1 = 9
180
+ GAMEPAD_BUTTON_LEFT_TRIGGER_2 = 10
181
+ GAMEPAD_BUTTON_RIGHT_TRIGGER_1 = 11
182
+ GAMEPAD_BUTTON_RIGHT_TRIGGER_2 = 12
183
+ GAMEPAD_BUTTON_MIDDLE_LEFT = 13
184
+ GAMEPAD_BUTTON_MIDDLE = 14
185
+ GAMEPAD_BUTTON_MIDDLE_RIGHT = 15
186
+ GAMEPAD_BUTTON_LEFT_THUMB = 16
187
+ GAMEPAD_BUTTON_RIGHT_THUMB = 17
188
+
189
+ class GamepadAxis(int):
190
+ """Gamepad axes."""
191
+ GAMEPAD_AXIS_LEFT_X = 0
192
+ GAMEPAD_AXIS_LEFT_Y = 1
193
+ GAMEPAD_AXIS_RIGHT_X = 2
194
+ GAMEPAD_AXIS_RIGHT_Y = 3
195
+ GAMEPAD_AXIS_LEFT_TRIGGER = 4
196
+ GAMEPAD_AXIS_RIGHT_TRIGGER = 5
197
+
198
+ class MaterialMapIndex(int):
199
+ """Material map index."""
200
+ MATERIAL_MAP_ALBEDO = 0
201
+ MATERIAL_MAP_METALNESS = 1
202
+ MATERIAL_MAP_NORMAL = 2
203
+ MATERIAL_MAP_ROUGHNESS = 3
204
+ MATERIAL_MAP_OCCLUSION = 4
205
+ MATERIAL_MAP_EMISSION = 5
206
+ MATERIAL_MAP_HEIGHT = 6
207
+ MATERIAL_MAP_CUBEMAP = 7
208
+ MATERIAL_MAP_IRRADIANCE = 8
209
+ MATERIAL_MAP_PREFILTER = 9
210
+ MATERIAL_MAP_BRDF = 10
211
+
212
+ class ShaderLocationIndex(int):
213
+ """Shader location index."""
214
+ SHADER_LOC_VERTEX_POSITION = 0
215
+ SHADER_LOC_VERTEX_TEXCOORD01 = 1
216
+ SHADER_LOC_VERTEX_TEXCOORD02 = 2
217
+ SHADER_LOC_VERTEX_NORMAL = 3
218
+ SHADER_LOC_VERTEX_TANGENT = 4
219
+ SHADER_LOC_VERTEX_COLOR = 5
220
+ SHADER_LOC_MATRIX_MVP = 6
221
+ SHADER_LOC_MATRIX_VIEW = 7
222
+ SHADER_LOC_MATRIX_PROJECTION = 8
223
+ SHADER_LOC_MATRIX_MODEL = 9
224
+ SHADER_LOC_MATRIX_NORMAL = 10
225
+ SHADER_LOC_VECTOR_VIEW = 11
226
+ SHADER_LOC_COLOR_DIFFUSE = 12
227
+ SHADER_LOC_COLOR_SPECULAR = 13
228
+ SHADER_LOC_COLOR_AMBIENT = 14
229
+ SHADER_LOC_MAP_ALBEDO = 15
230
+ SHADER_LOC_MAP_METALNESS = 16
231
+ SHADER_LOC_MAP_NORMAL = 17
232
+ SHADER_LOC_MAP_ROUGHNESS = 18
233
+ SHADER_LOC_MAP_OCCLUSION = 19
234
+ SHADER_LOC_MAP_EMISSION = 20
235
+ SHADER_LOC_MAP_HEIGHT = 21
236
+ SHADER_LOC_MAP_CUBEMAP = 22
237
+ SHADER_LOC_MAP_IRRADIANCE = 23
238
+ SHADER_LOC_MAP_PREFILTER = 24
239
+ SHADER_LOC_MAP_BRDF = 25
240
+ SHADER_LOC_VERTEX_BONEIDS = 26
241
+ SHADER_LOC_VERTEX_BONEWEIGHTS = 27
242
+ SHADER_LOC_BONE_MATRICES = 28
243
+ SHADER_LOC_VERTEX_INSTANCE_TX = 29
244
+
245
+ class ShaderUniformDataType(int):
246
+ """Shader uniform data type."""
247
+ SHADER_UNIFORM_FLOAT = 0
248
+ SHADER_UNIFORM_VEC2 = 1
249
+ SHADER_UNIFORM_VEC3 = 2
250
+ SHADER_UNIFORM_VEC4 = 3
251
+ SHADER_UNIFORM_INT = 4
252
+ SHADER_UNIFORM_IVEC2 = 5
253
+ SHADER_UNIFORM_IVEC3 = 6
254
+ SHADER_UNIFORM_IVEC4 = 7
255
+ SHADER_UNIFORM_UINT = 8
256
+ SHADER_UNIFORM_UIVEC2 = 9
257
+ SHADER_UNIFORM_UIVEC3 = 10
258
+ SHADER_UNIFORM_UIVEC4 = 11
259
+ SHADER_UNIFORM_SAMPLER2D = 12
260
+
261
+ class ShaderAttributeDataType(int):
262
+ """Shader attribute data types."""
263
+ SHADER_ATTRIB_FLOAT = 0
264
+ SHADER_ATTRIB_VEC2 = 1
265
+ SHADER_ATTRIB_VEC3 = 2
266
+ SHADER_ATTRIB_VEC4 = 3
267
+
268
+ class PixelFormat(int):
269
+ """Pixel formats."""
270
+ PIXELFORMAT_UNCOMPRESSED_GRAYSCALE = 1
271
+ PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA = 2
272
+ PIXELFORMAT_UNCOMPRESSED_R5G6B5 = 3
273
+ PIXELFORMAT_UNCOMPRESSED_R8G8B8 = 4
274
+ PIXELFORMAT_UNCOMPRESSED_R5G5B5A1 = 5
275
+ PIXELFORMAT_UNCOMPRESSED_R4G4B4A4 = 6
276
+ PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 = 7
277
+ PIXELFORMAT_UNCOMPRESSED_R32 = 8
278
+ PIXELFORMAT_UNCOMPRESSED_R32G32B32 = 9
279
+ PIXELFORMAT_UNCOMPRESSED_R32G32B32A32 = 10
280
+ PIXELFORMAT_UNCOMPRESSED_R16 = 11
281
+ PIXELFORMAT_UNCOMPRESSED_R16G16B16 = 12
282
+ PIXELFORMAT_UNCOMPRESSED_R16G16B16A16 = 13
283
+ PIXELFORMAT_COMPRESSED_DXT1_RGB = 14
284
+ PIXELFORMAT_COMPRESSED_DXT1_RGBA = 15
285
+ PIXELFORMAT_COMPRESSED_DXT3_RGBA = 16
286
+ PIXELFORMAT_COMPRESSED_DXT5_RGBA = 17
287
+ PIXELFORMAT_COMPRESSED_ETC1_RGB = 18
288
+ PIXELFORMAT_COMPRESSED_ETC2_RGB = 19
289
+ PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA = 20
290
+ PIXELFORMAT_COMPRESSED_PVRT_RGB = 21
291
+ PIXELFORMAT_COMPRESSED_PVRT_RGBA = 22
292
+ PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA = 23
293
+ PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA = 24
294
+
295
+ class TextureFilter(int):
296
+ """Texture parameters: filter mode."""
297
+ TEXTURE_FILTER_POINT = 0
298
+ TEXTURE_FILTER_BILINEAR = 1
299
+ TEXTURE_FILTER_TRILINEAR = 2
300
+ TEXTURE_FILTER_ANISOTROPIC_4X = 3
301
+ TEXTURE_FILTER_ANISOTROPIC_8X = 4
302
+ TEXTURE_FILTER_ANISOTROPIC_16X = 5
303
+
304
+ class TextureWrap(int):
305
+ """Texture parameters: wrap mode."""
306
+ TEXTURE_WRAP_REPEAT = 0
307
+ TEXTURE_WRAP_CLAMP = 1
308
+ TEXTURE_WRAP_MIRROR_REPEAT = 2
309
+ TEXTURE_WRAP_MIRROR_CLAMP = 3
310
+
311
+ class CubemapLayout(int):
312
+ """Cubemap layouts."""
313
+ CUBEMAP_LAYOUT_AUTO_DETECT = 0
314
+ CUBEMAP_LAYOUT_LINE_VERTICAL = 1
315
+ CUBEMAP_LAYOUT_LINE_HORIZONTAL = 2
316
+ CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR = 3
317
+ CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE = 4
318
+
319
+ class FontType(int):
320
+ """Font type, defines generation method."""
321
+ FONT_DEFAULT = 0
322
+ FONT_BITMAP = 1
323
+ FONT_SDF = 2
324
+
325
+ class BlendMode(int):
326
+ """Color blending modes (pre-defined)."""
327
+ BLEND_ALPHA = 0
328
+ BLEND_ADDITIVE = 1
329
+ BLEND_MULTIPLIED = 2
330
+ BLEND_ADD_COLORS = 3
331
+ BLEND_SUBTRACT_COLORS = 4
332
+ BLEND_ALPHA_PREMULTIPLY = 5
333
+ BLEND_CUSTOM = 6
334
+ BLEND_CUSTOM_SEPARATE = 7
335
+
336
+ class Gesture(int):
337
+ """Gesture."""
338
+ GESTURE_NONE = 0
339
+ GESTURE_TAP = 1
340
+ GESTURE_DOUBLETAP = 2
341
+ GESTURE_HOLD = 4
342
+ GESTURE_DRAG = 8
343
+ GESTURE_SWIPE_RIGHT = 16
344
+ GESTURE_SWIPE_LEFT = 32
345
+ GESTURE_SWIPE_UP = 64
346
+ GESTURE_SWIPE_DOWN = 128
347
+ GESTURE_PINCH_IN = 256
348
+ GESTURE_PINCH_OUT = 512
349
+
350
+ class CameraMode(int):
351
+ """Camera system modes."""
352
+ CAMERA_CUSTOM = 0
353
+ CAMERA_FREE = 1
354
+ CAMERA_ORBITAL = 2
355
+ CAMERA_FIRST_PERSON = 3
356
+ CAMERA_THIRD_PERSON = 4
357
+
358
+ class CameraProjection(int):
359
+ """Camera projection."""
360
+ CAMERA_PERSPECTIVE = 0
361
+ CAMERA_ORTHOGRAPHIC = 1
362
+
363
+ class NPatchLayout(int):
364
+ """N-patch layout."""
365
+ NPATCH_NINE_PATCH = 0
366
+ NPATCH_THREE_PATCH_VERTICAL = 1
367
+ NPATCH_THREE_PATCH_HORIZONTAL = 2
368
+
pyray/py.typed ADDED
File without changes
raylib/SDL3.dll ADDED
Binary file
raylib/__init__.py ADDED
@@ -0,0 +1,34 @@
1
+ # Copyright (c) 2021 Richard Smith and others
2
+ #
3
+ # This program and the accompanying materials are made available under the
4
+ # terms of the Eclipse Public License 2.0 which is available at
5
+ # http://www.eclipse.org/legal/epl-2.0.
6
+ #
7
+ # This Source Code may also be made available under the following Secondary
8
+ # licenses when the conditions for such availability set forth in the Eclipse
9
+ # Public License, v. 2.0 are satisfied: GNU General Public License, version 2
10
+ # with the GNU Classpath Exception which is
11
+ # available at https://www.gnu.org/software/classpath/license.html.
12
+ #
13
+ # SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
14
+
15
+ import sys
16
+ import logging
17
+
18
+ logger = logging.getLogger(__name__)
19
+
20
+ try:
21
+ from ._raylib_cffi import ffi, lib as rl
22
+ except ModuleNotFoundError:
23
+ logger.error("*** ERROR LOADING NATIVE CODE ***")
24
+ logger.error("See https://github.com/electronstudio/raylib-python-cffi/issues/142")
25
+ logger.error("Your Python is: %s", str(sys.implementation))
26
+ raise
27
+
28
+ from raylib._raylib_cffi.lib import *
29
+ from raylib.colors import *
30
+ from raylib.defines import *
31
+ import cffi
32
+ from .version import __version__
33
+
34
+ logger.warning("RAYLIB STATIC %s LOADED", __version__)
raylib/__init__.pyi ADDED
File without changes
Binary file