opencamera
This commit is contained in:
@@ -189,4 +189,10 @@ opaque playTrack : @& SDLTrack → SDLIO Bool
|
||||
@[extern "sdl_get_cameras"]
|
||||
opaque getCameras : SDLIO (List UInt32)
|
||||
|
||||
private opaque SDLCamera.nonemptyType : NonemptyType
|
||||
def SDLCamera : Type := SDLCamera.nonemptyType.type
|
||||
instance SDLCamera.instNonempty : Nonempty SDLCamera := SDLCamera.nonemptyType.property
|
||||
@[extern "sdl_get_cameras"]
|
||||
opaque openCamera : SDLIO UInt32 -> SDLCamera
|
||||
|
||||
end SDL
|
||||
|
||||
@@ -95,6 +95,12 @@ static void sdl_mixer_audio_finalizer(void * h) {
|
||||
|
||||
static void sdl_mixer_audio_foreach(void * val, lean_obj_arg fn) {
|
||||
|
||||
}
|
||||
static lean_external_class * sdl_camera_external_class = NULL;
|
||||
static void sdl_camera_foreach(void * val, lean_obj_arg fn) {
|
||||
|
||||
}
|
||||
static void sdl_camera_finalizer(void * h) {
|
||||
}
|
||||
|
||||
lean_obj_res sdl_init(uint32_t flags, lean_obj_arg w) {
|
||||
@@ -105,6 +111,7 @@ lean_obj_res sdl_init(uint32_t flags, lean_obj_arg w) {
|
||||
sdl_window_external_class = lean_register_external_class(sdl_window_finalizer, sdl_window_foreach);
|
||||
sdl_renderer_external_class = lean_register_external_class(sdl_renderer_finalizer, sdl_renderer_foreach);
|
||||
sdl_surface_external_class = lean_register_external_class(sdl_surface_finalizer, sdl_surface_foreach);
|
||||
sdl_camera_external_class = lean_register_external_class(sdl_camera_finalizer, sdl_camera_foreach);
|
||||
|
||||
return lean_io_result_mk_ok(lean_box_uint32(result));
|
||||
}
|
||||
@@ -389,7 +396,7 @@ lean_obj_res sdl_render_entire_texture(lean_object* g_renderer, lean_object * g_
|
||||
}
|
||||
|
||||
|
||||
lean_obj_res sdl_get_cameras(lean_obj_arg w) {
|
||||
lean_obj_res sdl_get_cameras() {
|
||||
int count = 0;
|
||||
SDL_CameraID* devices = SDL_GetCameras(&count);
|
||||
if (devices == NULL) {
|
||||
@@ -420,6 +427,18 @@ lean_obj_res sdl_get_cameras(lean_obj_arg w) {
|
||||
}
|
||||
|
||||
|
||||
//TODO: implement 2nd SDL_CameraSpec arg
|
||||
lean_obj_res sdl_open_camera(uint32_t instance_id) {
|
||||
|
||||
SDL_Camera* camera = SDL_OpenCamera(instance_id, NULL);
|
||||
if (camera == NULL) {
|
||||
return lean_io_result_mk_error(lean_mk_string(SDL_GetError()));
|
||||
}
|
||||
lean_object* external_camera = lean_alloc_external(sdl_camera_external_class, camera);
|
||||
return lean_io_result_mk_ok(external_camera);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Mouse support (caching avoids redundant SDL calls within the same frame)
|
||||
static struct {
|
||||
|
||||
Reference in New Issue
Block a user