Browse Source

obs-scripting: add transition duration functions

Scratch 4 năm trước cách đây
mục cha
commit
a78558b46a

+ 18 - 0
deps/obs-scripting/obs-scripting-lua-frontend.c

@@ -113,6 +113,22 @@ static int set_current_transition(lua_State *script)
 	return 0;
 }
 
+static int get_transition_duration(lua_State *script)
+{
+	int duration = obs_frontend_get_transition_duration();
+	lua_pushinteger(script, duration);
+	return 1;
+}
+
+static int set_transition_duration(lua_State *script)
+{
+	if (lua_isnumber(script, 1)) {
+		int duration = (int)lua_tointeger(script, 1);
+		obs_frontend_set_transition_duration(duration);
+	}
+	return 0;
+}
+
 static int get_scene_collections(lua_State *script)
 {
 	char **names = obs_frontend_get_scene_collections();
@@ -299,6 +315,8 @@ void add_lua_frontend_funcs(lua_State *script)
 	add_func(get_transitions);
 	add_func(get_current_transition);
 	add_func(set_current_transition);
+	add_func(get_transition_duration);
+	add_func(set_transition_duration);
 	add_func(get_scene_collections);
 	add_func(get_current_scene_collection);
 	add_func(set_current_scene_collection);

+ 22 - 0
deps/obs-scripting/obs-scripting-python-frontend.c

@@ -161,6 +161,26 @@ static PyObject *set_current_transition(PyObject *self, PyObject *args)
 	return python_none();
 }
 
+static PyObject *get_transition_duration(PyObject *self, PyObject *args)
+{
+	int duration = obs_frontend_get_transition_duration();
+	PyObject *ret = PyLong_FromLong(duration);
+	UNUSED_PARAMETER(self);
+	UNUSED_PARAMETER(args);
+	return ret;
+}
+
+static PyObject *set_transition_duration(PyObject *self, PyObject *args)
+{
+	int duration;
+	if (!parse_args(args, "i", &duration))
+		return python_none();
+
+	obs_frontend_set_transition_duration(duration);
+	UNUSED_PARAMETER(self);
+	return python_none();
+}
+
 static PyObject *get_scene_collections(PyObject *self, PyObject *args)
 {
 	char **names = obs_frontend_get_scene_collections();
@@ -415,6 +435,8 @@ void add_python_frontend_funcs(PyObject *module)
 		DEF_FUNC(get_transitions),
 		DEF_FUNC(get_current_transition),
 		DEF_FUNC(set_current_transition),
+		DEF_FUNC(set_transition_duration),
+		DEF_FUNC(get_transition_duration),
 		DEF_FUNC(get_scene_collections),
 		DEF_FUNC(get_current_scene_collection),
 		DEF_FUNC(set_current_scene_collection),

+ 1 - 0
deps/obs-scripting/obs-scripting-python-import.c

@@ -81,6 +81,7 @@ bool import_python(const char *python_path)
 	IMPORT_FUNC(PyUnicode_FromFormat);
 	IMPORT_FUNC(PyUnicode_Concat);
 	IMPORT_FUNC(PyLong_FromVoidPtr);
+	IMPORT_FUNC(PyLong_FromLong);
 	IMPORT_FUNC(PyBool_FromLong);
 	IMPORT_FUNC(PyGILState_Ensure);
 	IMPORT_FUNC(PyGILState_GetThisThreadState);

+ 2 - 0
deps/obs-scripting/obs-scripting-python-import.h

@@ -69,6 +69,7 @@ PY_EXTERN PyObject *(*Import_PyObject_Init)(PyObject *, PyTypeObject *);
 PY_EXTERN PyObject *(*Import_PyUnicode_FromFormat)(const char *format, ...);
 PY_EXTERN PyObject *(*Import_PyUnicode_Concat)(PyObject *left, PyObject *right);
 PY_EXTERN PyObject *(*Import_PyLong_FromVoidPtr)(void *);
+PY_EXTERN PyObject *(*Import_PyLong_FromLong)(long);
 PY_EXTERN PyObject *(*Import_PyBool_FromLong)(long);
 PY_EXTERN PyGILState_STATE (*Import_PyGILState_Ensure)(void);
 PY_EXTERN PyThreadState *(*Import_PyGILState_GetThisThreadState)(void);
@@ -169,6 +170,7 @@ extern bool import_python(const char *python_path);
 #define PyUnicode_FromFormat Import_PyUnicode_FromFormat
 #define PyUnicode_Concat Import_PyUnicode_Concat
 #define PyLong_FromVoidPtr Import_PyLong_FromVoidPtr
+#define PyLong_FromLong Import_PyLong_FromLong
 #define PyBool_FromLong Import_PyBool_FromLong
 #define PyGILState_Ensure Import_PyGILState_Ensure
 #define PyGILState_GetThisThreadState Import_PyGILState_GetThisThreadState