Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Antalik <richardantalik@gmail.com>2020-12-19 08:44:57 +0300
committerRichard Antalik <richardantalik@gmail.com>2020-12-19 09:25:01 +0300
commita5a302bd18061e833c4d629fffd06f57e7447d39 (patch)
tree7fd13444a1093f1f85fb26c9ff49598489c827e6 /source/blender/sequencer/SEQ_effects.h
parent046ca0749a9389ec52da90b29c8b2032f3225c51 (diff)
Cleanup: Split SEQ_sequencer.h file
Diffstat (limited to 'source/blender/sequencer/SEQ_effects.h')
-rw-r--r--source/blender/sequencer/SEQ_effects.h118
1 files changed, 118 insertions, 0 deletions
diff --git a/source/blender/sequencer/SEQ_effects.h b/source/blender/sequencer/SEQ_effects.h
new file mode 100644
index 00000000000..1258efd2694
--- /dev/null
+++ b/source/blender/sequencer/SEQ_effects.h
@@ -0,0 +1,118 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2004 Blender Foundation.
+ * All rights reserved.
+ */
+
+#pragma once
+
+/** \file
+ * \ingroup sequencer
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct Sequence;
+struct ImBuf;
+struct SeqRenderData;
+struct TextVars;
+
+/* Wipe effect */
+enum {
+ DO_SINGLE_WIPE,
+ DO_DOUBLE_WIPE,
+ /* DO_BOX_WIPE, */ /* UNUSED */
+ /* DO_CROSS_WIPE, */ /* UNUSED */
+ DO_IRIS_WIPE,
+ DO_CLOCK_WIPE,
+};
+
+struct SeqEffectHandle {
+ bool multithreaded;
+ bool supports_mask;
+
+ /* constructors & destructor */
+ /* init is _only_ called on first creation */
+ void (*init)(struct Sequence *seq);
+
+ /* number of input strips needed
+ * (called directly after construction) */
+ int (*num_inputs)(void);
+
+ /* load is called first time after readblenfile in
+ * get_sequence_effect automatically */
+ void (*load)(struct Sequence *seqconst);
+
+ /* duplicate */
+ void (*copy)(struct Sequence *dst, struct Sequence *src, const int flag);
+
+ /* destruct */
+ void (*free)(struct Sequence *seq, const bool do_id_user);
+
+ /* returns: -1: no input needed,
+ * 0: no early out,
+ * 1: out = ibuf1,
+ * 2: out = ibuf2 */
+ int (*early_out)(struct Sequence *seq, float facf0, float facf1);
+
+ /* stores the y-range of the effect IPO */
+ void (*store_icu_yrange)(struct Sequence *seq, short adrcode, float *ymin, float *ymax);
+
+ /* stores the default facf0 and facf1 if no IPO is present */
+ void (*get_default_fac)(struct Sequence *seq, float timeline_frame, float *facf0, float *facf1);
+
+ /* execute the effect
+ * sequence effects are only required to either support
+ * float-rects or byte-rects
+ * (mixed cases are handled one layer up...) */
+
+ struct ImBuf *(*execute)(const struct SeqRenderData *context,
+ struct Sequence *seq,
+ float timeline_frame,
+ float facf0,
+ float facf1,
+ struct ImBuf *ibuf1,
+ struct ImBuf *ibuf2,
+ struct ImBuf *ibuf3);
+
+ struct ImBuf *(*init_execution)(const struct SeqRenderData *context,
+ struct ImBuf *ibuf1,
+ struct ImBuf *ibuf2,
+ struct ImBuf *ibuf3);
+
+ void (*execute_slice)(const struct SeqRenderData *context,
+ struct Sequence *seq,
+ float timeline_frame,
+ float facf0,
+ float facf1,
+ struct ImBuf *ibuf1,
+ struct ImBuf *ibuf2,
+ struct ImBuf *ibuf3,
+ int start_line,
+ int total_lines,
+ struct ImBuf *out);
+};
+
+struct SeqEffectHandle SEQ_effect_handle_get(struct Sequence *seq);
+int SEQ_effect_get_num_inputs(int seq_type);
+void SEQ_effect_text_font_unload(struct TextVars *data, const bool do_id_user);
+void SEQ_effect_text_font_load(struct TextVars *data, const bool do_id_user);
+
+#ifdef __cplusplus
+}
+#endif