From c741a7389322cbe54a6051dc22515284a98c7e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Wed, 18 Mar 2020 01:18:20 +0100 Subject: [PATCH] request(SetTBarPosition): wip --- src/WSRequestHandler.cpp | 1 + src/WSRequestHandler.h | 1 + src/WSRequestHandler_StudioMode.cpp | 27 +++++++++++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/src/WSRequestHandler.cpp b/src/WSRequestHandler.cpp index f2ae6c47..a5914744 100644 --- a/src/WSRequestHandler.cpp +++ b/src/WSRequestHandler.cpp @@ -130,6 +130,7 @@ const QHash WSRequestHandler::messageMap { { "EnableStudioMode", &WSRequestHandler::EnableStudioMode }, { "DisableStudioMode", &WSRequestHandler::DisableStudioMode }, { "ToggleStudioMode", &WSRequestHandler::ToggleStudioMode }, + { "SetTBarPosition", &WSRequestHandler::SetTBarPosition }, { "SetTextGDIPlusProperties", &WSRequestHandler::SetTextGDIPlusProperties }, { "GetTextGDIPlusProperties", &WSRequestHandler::GetTextGDIPlusProperties }, diff --git a/src/WSRequestHandler.h b/src/WSRequestHandler.h index d17384ee..a644bca4 100644 --- a/src/WSRequestHandler.h +++ b/src/WSRequestHandler.h @@ -148,6 +148,7 @@ class WSRequestHandler { RpcResponse EnableStudioMode(const RpcRequest&); RpcResponse DisableStudioMode(const RpcRequest&); RpcResponse ToggleStudioMode(const RpcRequest&); + RpcResponse SetTBarPosition(const RpcRequest&); RpcResponse SetTextGDIPlusProperties(const RpcRequest&); RpcResponse GetTextGDIPlusProperties(const RpcRequest&); diff --git a/src/WSRequestHandler_StudioMode.cpp b/src/WSRequestHandler_StudioMode.cpp index fb958f3b..219435ed 100644 --- a/src/WSRequestHandler_StudioMode.cpp +++ b/src/WSRequestHandler_StudioMode.cpp @@ -177,3 +177,30 @@ RpcResponse WSRequestHandler::ToggleStudioMode(const RpcRequest& request) { return request.success(); } + +/** + * Set the position of the T-Bar (in Studio Mode) to the specified value. Will return an error if OBS is not in studio mode + * or if the current transition doesn't support T-Bar control. + * + * @param {double} `position` T-Bar position. This value will be clamped between 0.0 and 1.0. + * + * @api requests + * @name TransitionToProgram + * @category studio mode + * @since 4.8.0 + */ +RpcResponse WSRequestHandler::SetTBarPosition(const RpcRequest& request) { + if (!obs_frontend_preview_program_mode_active()) { + return request.failed("studio mode not enabled"); + } + + OBSSourceAutoRelease currentTransition = obs_frontend_get_current_transition(); + if (obs_transition_fixed(currentTransition)) { + return request.failed("current transition doesn't support t-bar control"); + } + + double position = obs_data_get_double(request.parameters(), "position"); + obs_transition_set_manual_time(currentTransition, position); + + return request.success(); +}