This commit is contained in:
Palakis 2017-02-17 11:41:41 +01:00
parent 68cf9af6a3
commit afaaff298f
2 changed files with 74 additions and 6 deletions

View File

@ -36,9 +36,12 @@ WSRequestHandler::WSRequestHandler(QWebSocket *client) :
messageMap["SetCurrentScene"] = WSRequestHandler::HandleSetCurrentScene;
messageMap["GetCurrentScene"] = WSRequestHandler::HandleGetCurrentScene;
messageMap["GetSceneList"] = WSRequestHandler::HandleGetSceneList;
messageMap["SetSourceOrder"] = WSRequestHandler::ErrNotImplemented;
messageMap["SetSourceRender"] = WSRequestHandler::HandleSetSourceRender;
messageMap["SetSceneItemPositionAndSize"] = WSRequestHandler::ErrNotImplemented;
messageMap["SetSourceRender"] = WSRequestHandler::HandleSetSourceRender; // Retrocompat
messageMap["SetSceneItemRender"] = WSRequestHandler::HandleSetSourceRender;
messageMap["SetSceneItemPosition"] = WSRequestHandler::HandleSetSceneItemPosition;
messageMap["SetSceneItemTransform"] = WSRequestHandler::HandleSetSceneItemTransform;
messageMap["GetStreamingStatus"] = WSRequestHandler::HandleGetStreamingStatus;
messageMap["StartStopStreaming"] = WSRequestHandler::HandleStartStopStreaming;
messageMap["StartStopRecording"] = WSRequestHandler::HandleStartStopRecording;
@ -51,7 +54,6 @@ WSRequestHandler::WSRequestHandler(QWebSocket *client) :
messageMap["GetVolume"] = WSRequestHandler::HandleGetVolume;
messageMap["ToggleMute"] = WSRequestHandler::ToggleMute;
messageMap["SetMute"] = WSRequestHandler::SetMute;
messageMap["GetVolumes"] = WSRequestHandler::ErrNotImplemented;
authNotRequired.insert("GetVersion");
authNotRequired.insert("GetAuthRequired");
@ -464,6 +466,69 @@ void WSRequestHandler::SetMute(WSRequestHandler *owner)
obs_source_release(item);
}
void WSRequestHandler::HandleSetSceneItemPosition(WSRequestHandler *owner)
{
const char *item_name = obs_data_get_string(owner->_requestData, "item");
if (!item_name)
{
owner->SendErrorResponse("invalid request parameters");
}
vec2 item_position = {0};
item_position.x = obs_data_get_double(owner->_requestData, "x");
item_position.y = obs_data_get_double(owner->_requestData, "y");
obs_source_t* current_scene = obs_frontend_get_current_scene();
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(current_scene, item_name);
if (scene_item)
{
obs_sceneitem_set_pos(scene_item, &item_position);
obs_sceneitem_release(scene_item);
owner->SendOKResponse();
}
else
{
owner->SendErrorResponse("specified scene item doesn't exist");
}
obs_source_release(current_scene);
}
void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
{
const char *item_name = obs_data_get_string(owner->_requestData, "item");
if (!item_name)
{
owner->SendErrorResponse("invalid request parameters");
}
vec2 scale;
scale.x = obs_data_get_double(owner->_requestData, "x-scale");
scale.y = obs_data_get_double(owner->_requestData, "y-scale");
float rotation = obs_data_get_double(owner->_requestData, "rotation");
obs_source_t* current_scene = obs_frontend_get_current_scene();
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(current_scene, item_name);
if (scene_item)
{
obs_sceneitem_set_scale(scene_item, &scale);
obs_sceneitem_set_rot(scene_item, rotation);
obs_sceneitem_release(scene_item);
owner->SendOKResponse();
}
else
{
owner->SendErrorResponse("specified scene item doesn't exist");
}
obs_source_release(current_scene);
}
void WSRequestHandler::ErrNotImplemented(WSRequestHandler *owner)
{
owner->SendErrorResponse("not implemented");

View File

@ -53,7 +53,10 @@ class WSRequestHandler : public QObject
static void HandleSetCurrentScene(WSRequestHandler *owner);
static void HandleGetCurrentScene(WSRequestHandler *owner);
static void HandleGetSceneList(WSRequestHandler *owner);
static void HandleSetSourceRender(WSRequestHandler *owner);
static void HandleSetSceneItemPosition(WSRequestHandler *owner);
static void HandleSetSceneItemTransform(WSRequestHandler *owner);
static void HandleGetStreamingStatus(WSRequestHandler *owner);
static void HandleStartStopStreaming(WSRequestHandler *owner);