mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
utils: Clean up a few iteration functions
This commit is contained in:
parent
5b8fd096d5
commit
f4b72b69ce
@ -27,7 +27,7 @@ struct CreateSceneItemData {
|
|||||||
OBSSceneItem sceneItem; // Out
|
OBSSceneItem sceneItem; // Out
|
||||||
};
|
};
|
||||||
|
|
||||||
void CreateSceneItemHelper(void *_data, obs_scene_t *scene)
|
static void CreateSceneItemHelper(void *_data, obs_scene_t *scene)
|
||||||
{
|
{
|
||||||
auto *data = static_cast<CreateSceneItemData *>(_data);
|
auto *data = static_cast<CreateSceneItemData *>(_data);
|
||||||
data->sceneItem = obs_scene_add(scene, data->source);
|
data->sceneItem = obs_scene_add(scene, data->source);
|
||||||
|
@ -60,15 +60,16 @@ std::vector<obs_hotkey_t *> Utils::Obs::ArrayHelper::GetHotkeyList()
|
|||||||
{
|
{
|
||||||
std::vector<obs_hotkey_t *> ret;
|
std::vector<obs_hotkey_t *> ret;
|
||||||
|
|
||||||
obs_enum_hotkeys(
|
auto cb =
|
||||||
[](void *data, obs_hotkey_id, obs_hotkey_t *hotkey) {
|
[](void *data, obs_hotkey_id, obs_hotkey_t *hotkey) {
|
||||||
auto ret = static_cast<std::vector<obs_hotkey_t *> *>(data);
|
auto ret = static_cast<std::vector<obs_hotkey_t *> *>(data);
|
||||||
|
|
||||||
ret->push_back(hotkey);
|
ret->push_back(hotkey);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
};
|
||||||
&ret);
|
|
||||||
|
obs_enum_hotkeys(cb, &ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -134,16 +135,21 @@ std::vector<json> Utils::Obs::ArrayHelper::GetSceneItemList(obs_scene_t *scene,
|
|||||||
std::pair<std::vector<json>, bool> enumData;
|
std::pair<std::vector<json>, bool> enumData;
|
||||||
enumData.second = basic;
|
enumData.second = basic;
|
||||||
|
|
||||||
obs_scene_enum_items(
|
auto cb =
|
||||||
scene,
|
|
||||||
[](obs_scene_t *, obs_sceneitem_t *sceneItem, void *param) {
|
[](obs_scene_t *, obs_sceneitem_t *sceneItem, void *param) {
|
||||||
auto enumData = static_cast<std::pair<std::vector<json>, bool> *>(param);
|
auto enumData = static_cast<std::pair<std::vector<json>, bool> *>(param);
|
||||||
|
|
||||||
|
// TODO: Make ObjectHelper util for scene items
|
||||||
|
|
||||||
json item;
|
json item;
|
||||||
item["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
|
item["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
|
||||||
// Should be slightly faster than calling obs_sceneitem_get_order_position()
|
item["sceneItemIndex"] =
|
||||||
item["sceneItemIndex"] = enumData->first.size();
|
enumData->first.size(); // Should be slightly faster than calling obs_sceneitem_get_order_position()
|
||||||
if (!enumData->second) {
|
if (!enumData->second) {
|
||||||
|
item["sceneItemEnabled"] = obs_sceneitem_visible(sceneItem);
|
||||||
|
item["sceneItemLocked"] = obs_sceneitem_locked(sceneItem);
|
||||||
|
item["sceneItemTransform"] = ObjectHelper::GetSceneItemTransform(sceneItem);
|
||||||
|
item["sceneItemBlendMode"] = obs_sceneitem_get_blending_mode(sceneItem);
|
||||||
OBSSource itemSource = obs_sceneitem_get_source(sceneItem);
|
OBSSource itemSource = obs_sceneitem_get_source(sceneItem);
|
||||||
item["sourceName"] = obs_source_get_name(itemSource);
|
item["sourceName"] = obs_source_get_name(itemSource);
|
||||||
item["sourceType"] = obs_source_get_type(itemSource);
|
item["sourceType"] = obs_source_get_type(itemSource);
|
||||||
@ -160,8 +166,9 @@ std::vector<json> Utils::Obs::ArrayHelper::GetSceneItemList(obs_scene_t *scene,
|
|||||||
enumData->first.push_back(item);
|
enumData->first.push_back(item);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
};
|
||||||
&enumData);
|
|
||||||
|
obs_scene_enum_items(scene, cb, &enumData);
|
||||||
|
|
||||||
return enumData.first;
|
return enumData.first;
|
||||||
}
|
}
|
||||||
@ -176,7 +183,7 @@ std::vector<json> Utils::Obs::ArrayHelper::GetInputList(std::string inputKind)
|
|||||||
EnumInputInfo inputInfo;
|
EnumInputInfo inputInfo;
|
||||||
inputInfo.inputKind = inputKind;
|
inputInfo.inputKind = inputKind;
|
||||||
|
|
||||||
auto inputEnumProc = [](void *param, obs_source_t *input) {
|
auto cb = [](void *param, obs_source_t *input) {
|
||||||
// Sanity check in case the API changes
|
// Sanity check in case the API changes
|
||||||
if (obs_source_get_type(input) != OBS_SOURCE_TYPE_INPUT)
|
if (obs_source_get_type(input) != OBS_SOURCE_TYPE_INPUT)
|
||||||
return true;
|
return true;
|
||||||
@ -196,8 +203,9 @@ std::vector<json> Utils::Obs::ArrayHelper::GetInputList(std::string inputKind)
|
|||||||
inputInfo->inputs.push_back(inputJson);
|
inputInfo->inputs.push_back(inputJson);
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Actually enumerates only public inputs, despite the name
|
// Actually enumerates only public inputs, despite the name
|
||||||
obs_enum_sources(inputEnumProc, &inputInfo);
|
obs_enum_sources(cb, &inputInfo);
|
||||||
|
|
||||||
return inputInfo.inputs;
|
return inputInfo.inputs;
|
||||||
}
|
}
|
||||||
@ -302,7 +310,7 @@ std::vector<json> Utils::Obs::ArrayHelper::GetSourceFilterList(obs_source_t *sou
|
|||||||
{
|
{
|
||||||
std::vector<json> filters;
|
std::vector<json> filters;
|
||||||
|
|
||||||
auto enumFilters = [](obs_source_t *, obs_source_t *filter, void *param) {
|
auto cb = [](obs_source_t *, obs_source_t *filter, void *param) {
|
||||||
auto filters = reinterpret_cast<std::vector<json> *>(param);
|
auto filters = reinterpret_cast<std::vector<json> *>(param);
|
||||||
|
|
||||||
json filterJson;
|
json filterJson;
|
||||||
@ -316,7 +324,8 @@ std::vector<json> Utils::Obs::ArrayHelper::GetSourceFilterList(obs_source_t *sou
|
|||||||
|
|
||||||
filters->push_back(filterJson);
|
filters->push_back(filterJson);
|
||||||
};
|
};
|
||||||
obs_source_enum_filters(source, enumFilters, &filters);
|
|
||||||
|
obs_source_enum_filters(source, cb, &filters);
|
||||||
|
|
||||||
return filters;
|
return filters;
|
||||||
}
|
}
|
||||||
|
@ -70,8 +70,7 @@ obs_sceneitem_t *Utils::Obs::SearchHelper::GetSceneItemByName(obs_scene_t *scene
|
|||||||
enumData.name = name;
|
enumData.name = name;
|
||||||
enumData.offset = offset;
|
enumData.offset = offset;
|
||||||
|
|
||||||
obs_scene_enum_items(
|
auto cb =
|
||||||
scene,
|
|
||||||
[](obs_scene_t *, obs_sceneitem_t *sceneItem, void *param) {
|
[](obs_scene_t *, obs_sceneitem_t *sceneItem, void *param) {
|
||||||
auto enumData = static_cast<SceneItemSearchData *>(param);
|
auto enumData = static_cast<SceneItemSearchData *>(param);
|
||||||
|
|
||||||
@ -91,8 +90,9 @@ obs_sceneitem_t *Utils::Obs::SearchHelper::GetSceneItemByName(obs_scene_t *scene
|
|||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
};
|
||||||
&enumData);
|
|
||||||
|
obs_scene_enum_items(scene, cb, &enumData);
|
||||||
|
|
||||||
return enumData.ret;
|
return enumData.ret;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user