Attention! Rather large sequencer rewrite: * Implemented layer blending using implicit effects. (works like layers in "The Gimp" or Photoshop.) * Fixed Space-Bar start-stop in preview windows. You can start playback using spacebar within a preview-window and it _works_! * Fixed Flip Y (didn't work for float) * Fixed premul (didn't work for float) * Added IPOs to _all_ tracks. In blend-mode REPLACE it drives the "mul"-parameter in all other blend modes it drives the effect. * you can meta single tracks. * moved "mute track" from "M" to "Shift-M" * added "Shift-L" for "lock track" * changed inner workings for Metas. Now all ImBufs have to use the reference counting mechanism. (Only interesting for coders :) !!! Really important change, that affects current files! Since you can mute tracks and now there is real layer blending capabilities in place, I changed the silly behaviour that chose the output track. Old behaviour: if we have an effect track visible, use the uppermost effect track. If there is _no_ effect track visible, use the lowest input track. New behaviour: always use the uppermost track. With blend modes active: work our way down starting from the uppermost track to the first "replace"-mode track. This is the way the gimp, photoshop, basically _all_ other applications work... So if this change ruins your day: please try to fix your files using "mute". If this doesn't work out, I can still restore the old behaviour, but I really hope, that this is _not_ necessary! Rational: most people won't get affected by this change, since you can't really do anything usefull with the (old) sequencer without at least one effect track and then you are on the safe side...
101 lines
3.2 KiB
C++
101 lines
3.2 KiB
C++
/**
|
|
* $Id$
|
|
*
|
|
* ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
|
|
*
|
|
* 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. The Blender
|
|
* Foundation also sells licenses for use in proprietary software under
|
|
* the Blender License. See http://www.blender.org/BL/ for information
|
|
* about this.
|
|
*
|
|
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): none yet.
|
|
*
|
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
|
*
|
|
*/
|
|
|
|
#ifndef BSE_SEQUENCE_H
|
|
#define BSE_SEQUENCE_H
|
|
|
|
|
|
struct PluginSeq;
|
|
struct StripElem;
|
|
struct TStripElem;
|
|
struct Strip;
|
|
struct Sequence;
|
|
struct ListBase;
|
|
struct Editing;
|
|
struct ImBuf;
|
|
struct Scene;
|
|
|
|
void free_tstripdata(int len, struct TStripElem *se);
|
|
void free_strip(struct Strip *strip);
|
|
void new_tstripdata(struct Sequence *seq);
|
|
void free_sequence(struct Sequence *seq);
|
|
void build_seqar(struct ListBase *seqbase, struct Sequence ***seqar, int *totseq);
|
|
|
|
#define BUILD_SEQAR_COUNT_NOTHING 0
|
|
#define BUILD_SEQAR_COUNT_CURRENT 1
|
|
#define BUILD_SEQAR_COUNT_CHILDREN 2
|
|
|
|
void build_seqar_cb(struct ListBase *seqbase, struct Sequence ***seqar,
|
|
int *totseq, int (*test_func)(struct Sequence * seq));
|
|
void free_editing(struct Editing *ed);
|
|
void calc_sequence(struct Sequence *seq);
|
|
void calc_sequence_disp(struct Sequence *seq);
|
|
void reload_sequence_new_file(struct Sequence * seq);
|
|
void sort_seq(void);
|
|
void clear_scene_in_allseqs(struct Scene *sce);
|
|
|
|
char *give_seqname_by_type(int type);
|
|
char *give_seqname(struct Sequence *seq);
|
|
|
|
int evaluate_seq_frame(int cfra);
|
|
struct StripElem *give_stripelem(struct Sequence *seq, int cfra);
|
|
struct TStripElem *give_tstripelem(struct Sequence *seq, int cfra);
|
|
void set_meta_stripdata(struct Sequence *seqm);
|
|
struct ImBuf *give_ibuf_seq(int rectx, int recty, int cfra, int chansel);
|
|
/* chansel: render this channel. Default=0 (renders end result)*/
|
|
struct ImBuf *give_ibuf_seq_direct(int rectx, int recty, int cfra,
|
|
struct Sequence * seq);
|
|
|
|
/* sequence prefetch API */
|
|
void seq_start_threads();
|
|
void seq_stop_threads();
|
|
void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown);
|
|
void seq_wait_for_prefetch_ready();
|
|
struct ImBuf * give_ibuf_seq_threaded(int rectx, int recty, int cfra,
|
|
int chanshown);
|
|
|
|
|
|
void free_imbuf_seq_except(int cfra);
|
|
void free_imbuf_seq_with_ipo(struct Ipo * ipo);
|
|
void free_imbuf_seq(void);
|
|
|
|
void update_changed_seq_and_deps(struct Sequence *seq, int len_change, int ibuf_change);
|
|
|
|
/* still bad level call... */
|
|
struct RenderResult;
|
|
void do_render_seq(struct RenderResult *rr, int cfra);
|
|
|
|
|
|
#endif
|
|
|