SceneSwitcher/lib/utils/canvas-helpers.hpp
WarmUpTill 03f67534c7
Some checks are pending
debian-build / build (push) Waiting to run
Check locale / ubuntu64 (push) Waiting to run
Push to master / Check Formatting 🔍 (push) Waiting to run
Push to master / Build Project 🧱 (push) Waiting to run
Push to master / Create Release 🛫 (push) Blocked by required conditions
Default to main canvas in scene selection
New scene selections would have no canvas selected at all.
This would cause issues in places which do not support an empty canvas
selection.

For example, the "scene changed" check of the scene condition would not
work as without any canvas it is not clear which scene to check for.
2025-12-05 17:30:16 +01:00

63 lines
2.0 KiB
C++

#pragma once
#include "filter-combo-box.hpp"
#include <obs.hpp>
namespace advss {
#if LIBOBS_API_VER < MAKE_SEMANTIC_VERSION(31, 1, 0)
class EXPORT obs_canvas_t {};
class EXPORT obs_weak_canvas_t {};
EXPORT obs_canvas_t *obs_canvas_get_ref(obs_canvas_t *);
EXPORT void obs_canvas_release(obs_canvas_t *);
EXPORT void obs_weak_canvas_addref(obs_weak_canvas_t *);
EXPORT void obs_weak_canvas_release(obs_weak_canvas_t *);
using OBSCanvas =
OBSSafeRef<obs_canvas_t *, obs_canvas_get_ref, obs_canvas_release>;
using OBSWeakCanvas = OBSRef<obs_weak_canvas_t *, obs_weak_canvas_addref,
obs_weak_canvas_release>;
using OBSCanvasAutoRelease =
OBSRefAutoRelease<obs_canvas_t *, obs_canvas_release>;
using OBSWeakCanvasAutoRelease =
OBSRefAutoRelease<obs_weak_canvas_t *, obs_weak_canvas_release>;
EXPORT obs_weak_canvas_t *obs_canvas_get_weak_canvas(obs_canvas_t *);
EXPORT obs_canvas_t *obs_weak_canvas_get_canvas(obs_weak_canvas_t *);
EXPORT void obs_canvas_enum_scenes(obs_canvas_t *,
bool (*enum_proc)(void *, obs_source_t *),
void *param);
EXPORT OBSCanvas OBSGetStrongRef(obs_weak_canvas_t *);
EXPORT OBSWeakCanvas OBSGetWeakRef(obs_canvas_t *);
EXPORT obs_canvas_t *obs_get_main_canvas();
#endif
EXPORT int GetCanvasCount();
EXPORT OBSWeakCanvas GetWeakCanvasByName(const char *name);
EXPORT std::string GetWeakCanvasName(const OBSWeakCanvas &canvas);
EXPORT bool IsMainCanvas(obs_weak_canvas_t *canvas);
EXPORT OBSWeakSource GetActiveCanvasScene(const OBSWeakCanvas &canvas);
EXPORT OBSWeakSource GetSceneAtIndex(const OBSWeakCanvas &weakCanvas, int idx);
EXPORT int GetIndexOfScene(const OBSWeakCanvas &weakCanvas,
const OBSWeakSource &scene);
EXPORT OBSWeakCanvas GetMainCanvas();
class CanvasSelection : public FilterComboBox {
Q_OBJECT
public:
EXPORT CanvasSelection(QWidget *parent);
EXPORT void SetCanvas(const OBSWeakCanvas &);
EXPORT OBSWeakCanvas GetCanvas();
signals:
void CanvasChanged(const OBSWeakCanvas &);
private:
void Populate();
};
} // namespace advss