Browse Source

obs-frontend-api: Add methods to get/set transition duration

Stéphane L 6 years ago
parent
commit
d3910149d2

+ 11 - 0
UI/api-interface.cpp

@@ -139,6 +139,17 @@ struct OBSStudioAPI : obs_frontend_callbacks {
 				Q_ARG(OBSSource, OBSSource(transition)));
 	}
 
+	int obs_frontend_get_transition_duration(void) override
+	{
+		return main->ui->transitionDuration->value();
+	}
+
+	void obs_frontend_set_transition_duration(int duration) override
+	{
+		QMetaObject::invokeMethod(main->ui->transitionDuration, "setValue",
+			Q_ARG(int, duration));
+	}
+
 	void obs_frontend_get_scene_collections(
 			std::vector<std::string> &strings) override
 	{

+ 13 - 0
UI/obs-frontend-api/obs-frontend-api.cpp

@@ -132,6 +132,19 @@ void obs_frontend_set_current_transition(obs_source_t *transition)
 		c->obs_frontend_set_current_transition(transition);
 }
 
+int obs_frontend_get_transition_duration(void)
+{
+	return !!callbacks_valid()
+		? c->obs_frontend_get_transition_duration()
+		: 0;
+}
+
+void obs_frontend_set_transition_duration(int duration)
+{
+	if (callbacks_valid())
+		c->obs_frontend_set_transition_duration(duration);
+}
+
 char **obs_frontend_get_scene_collections(void)
 {
 	if (!callbacks_valid())

+ 2 - 0
UI/obs-frontend-api/obs-frontend-api.h

@@ -93,6 +93,8 @@ EXPORT void obs_frontend_get_transitions(
 		struct obs_frontend_source_list *sources);
 EXPORT obs_source_t *obs_frontend_get_current_transition(void);
 EXPORT void obs_frontend_set_current_transition(obs_source_t *transition);
+EXPORT int obs_frontend_get_transition_duration(void);
+EXPORT void obs_frontend_set_transition_duration(int duration);
 
 EXPORT char **obs_frontend_get_scene_collections(void);
 EXPORT char *obs_frontend_get_current_scene_collection(void);

+ 2 - 0
UI/obs-frontend-api/obs-frontend-internal.hpp

@@ -21,6 +21,8 @@ struct obs_frontend_callbacks {
 	virtual obs_source_t *obs_frontend_get_current_transition(void)=0;
 	virtual void obs_frontend_set_current_transition(
 			obs_source_t *transition)=0;
+	virtual int obs_frontend_get_transition_duration(void)=0;
+	virtual void obs_frontend_set_transition_duration(int duration)=0;
 
 	virtual void obs_frontend_get_scene_collections(
 			std::vector<std::string> &strings)=0;

+ 12 - 0
docs/sphinx/reference-frontend-api.rst

@@ -235,6 +235,18 @@ Functions
 
 ---------------------------------------
 
+.. function:: int obs_frontend_get_transition_duration(void)
+
+   :return: The transition duration (in milliseconds) currently set in the UI.
+
+---------------------------------------
+
+.. function:: void obs_frontend_set_transition_duration(int duration)
+
+   :param duration: Desired transition duration (in milliseconds)
+
+---------------------------------------
+
 .. function:: char **obs_frontend_get_scene_collections(void)
 
    :return: The list of profile names, ending with NULL.  The list is