mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Utils: add missing scene item methods
This commit is contained in:
parent
3d9a4ef1e6
commit
5586670d38
@ -103,6 +103,22 @@ obs_data_t* Utils::GetSceneItemData(obs_sceneitem_t* item) {
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
obs_sceneitem_t* Utils::GetSceneItemFromItem(obs_source_t* source, obs_data_t* item) {
|
||||||
|
OBSSceneItem sceneItem;
|
||||||
|
if (obs_data_has_user_value(item, "id")) {
|
||||||
|
sceneItem = GetSceneItemFromId(source, obs_data_get_int(item, "id"));
|
||||||
|
if (obs_data_has_user_value(item, "name") &&
|
||||||
|
(QString)obs_source_get_name(obs_sceneitem_get_source(sceneItem)) !=
|
||||||
|
(QString)obs_data_get_string(item, "name")) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (obs_data_has_user_value(item, "name")) {
|
||||||
|
sceneItem = GetSceneItemFromName(source, obs_data_get_string(item, "name"));
|
||||||
|
}
|
||||||
|
return sceneItem;
|
||||||
|
}
|
||||||
|
|
||||||
obs_sceneitem_t* Utils::GetSceneItemFromName(obs_source_t* source, QString name) {
|
obs_sceneitem_t* Utils::GetSceneItemFromName(obs_source_t* source, QString name) {
|
||||||
struct current_search {
|
struct current_search {
|
||||||
QString query;
|
QString query;
|
||||||
@ -139,6 +155,39 @@ obs_sceneitem_t* Utils::GetSceneItemFromName(obs_source_t* source, QString name)
|
|||||||
return search.result;
|
return search.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
obs_sceneitem_t* Utils::GetSceneItemFromId(obs_source_t* source, size_t id) {
|
||||||
|
struct current_search {
|
||||||
|
size_t query;
|
||||||
|
obs_sceneitem_t* result;
|
||||||
|
};
|
||||||
|
|
||||||
|
current_search search;
|
||||||
|
search.query = id;
|
||||||
|
search.result = nullptr;
|
||||||
|
|
||||||
|
OBSScene scene = obs_scene_from_source(source);
|
||||||
|
if (!scene)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
obs_scene_enum_items(scene, [](
|
||||||
|
obs_scene_t* scene,
|
||||||
|
obs_sceneitem_t* currentItem,
|
||||||
|
void* param)
|
||||||
|
{
|
||||||
|
current_search* search = static_cast<current_search*>(param);
|
||||||
|
|
||||||
|
if (obs_sceneitem_get_id(currentItem) == search->query) {
|
||||||
|
search->result = currentItem;
|
||||||
|
obs_sceneitem_addref(search->result);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}, &search);
|
||||||
|
|
||||||
|
return search.result;
|
||||||
|
}
|
||||||
|
|
||||||
bool Utils::IsValidAlignment(const uint32_t alignment) {
|
bool Utils::IsValidAlignment(const uint32_t alignment) {
|
||||||
switch (alignment) {
|
switch (alignment) {
|
||||||
case OBS_ALIGN_CENTER:
|
case OBS_ALIGN_CENTER:
|
||||||
|
@ -39,6 +39,8 @@ class Utils {
|
|||||||
static obs_data_t* GetSceneItemData(obs_sceneitem_t* item);
|
static obs_data_t* GetSceneItemData(obs_sceneitem_t* item);
|
||||||
static obs_sceneitem_t* GetSceneItemFromName(
|
static obs_sceneitem_t* GetSceneItemFromName(
|
||||||
obs_source_t* source, QString name);
|
obs_source_t* source, QString name);
|
||||||
|
static obs_sceneitem_t* GetSceneItemFromId(obs_source_t* source, size_t id);
|
||||||
|
static obs_sceneitem_t* GetSceneItemFromItem(obs_source_t* source, obs_data_t* item);
|
||||||
static obs_source_t* GetTransitionFromName(QString transitionName);
|
static obs_source_t* GetTransitionFromName(QString transitionName);
|
||||||
static obs_source_t* GetSceneFromNameOrCurrent(QString sceneName);
|
static obs_source_t* GetSceneFromNameOrCurrent(QString sceneName);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user