|
1 |
| -from ctypes import CFUNCTYPE, POINTER, c_bool, c_uint, c_size_t, c_uint32, c_float, Structure, c_uint64, \ |
2 |
| - c_int |
| 1 | +from ctypes import CFUNCTYPE, POINTER, c_bool, c_uint, c_size_t, c_uint32, c_float, Structure, c_uint64, c_int |
3 | 2 | from dataclasses import dataclass
|
4 |
| -from enum import IntEnum |
| 3 | +from enum import IntEnum, IntFlag |
5 | 4 |
|
6 | 5 | from libretro.api._utils import FieldsFromTypeHints
|
7 | 6 |
|
8 | 7 |
|
9 | 8 | retro_camera_buffer = c_int
|
10 | 9 | RETRO_CAMERA_BUFFER_OPENGL_TEXTURE = 0
|
11 |
| -RETRO_CAMERA_BUFFER_RAW_FRAMEBUFFER = (RETRO_CAMERA_BUFFER_OPENGL_TEXTURE + 1) |
12 |
| -RETRO_CAMERA_BUFFER_DUMMY = 0x7fffffff |
| 10 | +RETRO_CAMERA_BUFFER_RAW_FRAMEBUFFER = RETRO_CAMERA_BUFFER_OPENGL_TEXTURE + 1 |
| 11 | +RETRO_CAMERA_BUFFER_DUMMY = 0x7FFFFFFF |
13 | 12 |
|
14 | 13 |
|
15 | 14 | retro_camera_start_t = CFUNCTYPE(c_bool)
|
|
19 | 18 | retro_camera_frame_opengl_texture_t = CFUNCTYPE(None, c_uint, c_uint, POINTER(c_float))
|
20 | 19 |
|
21 | 20 |
|
22 |
| -class CameraBufferType(IntEnum): |
| 21 | +class CameraCapabilities(IntEnum): |
23 | 22 | OPENGL_TEXTURE = RETRO_CAMERA_BUFFER_OPENGL_TEXTURE
|
24 | 23 | RAW_FRAMEBUFFER = RETRO_CAMERA_BUFFER_RAW_FRAMEBUFFER
|
25 | 24 |
|
| 25 | + def flag(self) -> int: |
| 26 | + return 1 << self.value |
| 27 | + |
| 28 | + |
| 29 | +class CameraCapabilityFlags(IntFlag): |
| 30 | + OPENGL_TEXTURE = 1 << CameraCapabilities.OPENGL_TEXTURE |
| 31 | + RAW_FRAMEBUFFER = 1 << CameraCapabilities.RAW_FRAMEBUFFER |
| 32 | + |
26 | 33 |
|
27 | 34 | @dataclass(init=False)
|
28 | 35 | class retro_camera_callback(Structure, metaclass=FieldsFromTypeHints):
|
@@ -57,6 +64,7 @@ def __deepcopy__(self, _):
|
57 | 64 | 'retro_camera_frame_raw_framebuffer_t',
|
58 | 65 | 'retro_camera_frame_opengl_texture_t',
|
59 | 66 | 'retro_camera_callback',
|
60 |
| - 'CameraBufferType', |
| 67 | + 'CameraCapabilities', |
| 68 | + 'CameraCapabilityFlags', |
61 | 69 | 'retro_camera_buffer',
|
62 | 70 | ]
|
0 commit comments