2002-10-12 11:37:38 +00:00
/**
* $ 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 * * * * *
*/
2002-11-25 12:02:15 +00:00
# ifdef HAVE_CONFIG_H
# include <config.h>
# endif
2002-10-12 11:37:38 +00:00
# include <string.h>
# include <math.h>
# include "MEM_guardedalloc.h"
# include "BMF_Api.h"
# include "BLI_blenlib.h"
# include "BLI_arithb.h"
# include "IMB_imbuf_types.h"
# include "DNA_sequence_types.h"
# include "DNA_scene_types.h"
# include "DNA_screen_types.h"
# include "DNA_space_types.h"
# include "DNA_view2d_types.h"
# include "BKE_global.h"
2004-06-16 20:25:56 +00:00
# include "BKE_plugin_types.h"
Biiig commit! Thanks to 2-3 weeks of cvs freeze...
Render:
- New; support for dual CPU render (SDL thread)
Currently only works with alternating scanlines, but gives excellent
performance. For both normal render as unified implemented.
Note the "mutex" locks on z-transp buffer render and imbuf loads.
- This has been made possible by major cleanups in render code, especially
getting rid of globals (example Tin Tr Tg Tb Ta for textures) or struct
OSA or using Materials or Texture data to write to.
- Made normal render fully 4x32 floats too, and removed all old optimizes
with chars or shorts.
- Made normal render and unified render use same code for sky and halo
render, giving equal (and better) results for halo render. Old render
now also uses PostProcess options (brightness, mul, gamma)
- Added option ("FBuf") in F10 Output Panel, this keeps a 4x32 bits buffer
after render. Using PostProcess menu you will note an immediate re-
display of image too (32 bits RGBA)
- Added "Hue" and "Saturation" sliders to PostProcess options
- Render module is still not having a "nice" API, but amount of dependencies
went down a lot. Next todo: remove abusive "previewrender" code.
The last main global in Render (struct Render) now can be re-used for fully
controlling a render, to allow multiple "instances" of render to open.
- Renderwindow now displays a smal bar on top with the stats, and keeps the
stats after render too. Including "spare" page support.
Not only easier visible that way, but also to remove the awkward code that
was drawing stats in the Info header (extreme slow on some ATIs too)
- Cleaned up blendef.h and BKE_utildefines.h, these two had overlapping
defines.
- I might have forgotten stuff... and will write a nice doc on the architecture!
2004-12-27 19:28:52 +00:00
# include "BKE_scene.h"
# include "BKE_utildefines.h"
2002-10-12 11:37:38 +00:00
# include "BIF_gl.h"
# include "BIF_mywindow.h"
# include "BIF_screen.h"
# include "BIF_drawseq.h"
# include "BIF_editseq.h"
2005-01-07 21:48:25 +00:00
# include "BIF_glutil.h"
2003-10-22 23:20:44 +00:00
# include "BIF_resources.h"
2004-06-16 20:25:56 +00:00
# include "BIF_space.h"
# include "BIF_interface.h"
2002-10-12 11:37:38 +00:00
# include "BSE_view.h"
# include "BSE_drawipo.h"
# include "BSE_sequence.h"
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
# include "BSE_seqaudio.h"
2002-10-12 11:37:38 +00:00
2004-06-16 20:25:56 +00:00
# include "IMB_imbuf_types.h"
# include "IMB_imbuf.h"
# include "blendef.h" /* CFRA */
# include "mydevice.h" /* REDRAWSEQ */
2002-10-12 11:37:38 +00:00
int no_rightbox = 0 , no_leftbox = 0 ;
static void EmbossBoxf ( float x1 , float y1 , float x2 , float y2 , int sel , unsigned int dark , unsigned int light )
{
2004-06-18 15:04:27 +00:00
if ( sel ) cpack ( dark ) ;
2002-10-12 11:37:38 +00:00
else cpack ( light ) ;
if ( sel ) glLineWidth ( 2.0 ) ;
2003-04-28 14:43:20 +00:00
fdrawline ( x1 , y2 , x2 , y2 ) ; /* top */
if ( no_leftbox = = 0 ) fdrawline ( x1 , y1 , x1 , y2 ) ; /* left */
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
if ( sel ) glLineWidth ( 1.0 ) ;
2004-06-18 15:04:27 +00:00
if ( sel ) cpack ( light ) ;
else cpack ( dark ) ;
2003-04-28 14:43:20 +00:00
fdrawline ( x1 , y1 , x2 , y1 ) ; /* bottom */
if ( no_rightbox = = 0 ) fdrawline ( x2 , y1 , x2 , y2 ) ; /* right */
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
}
static char * give_seqname ( Sequence * seq )
{
if ( seq - > type = = SEQ_META ) {
if ( seq - > name [ 2 ] ) return seq - > name + 2 ;
return " META " ;
}
2004-06-18 15:04:27 +00:00
else if ( seq - > type = = SEQ_IMAGE ) return " IMAGE " ;
2002-10-12 11:37:38 +00:00
else if ( seq - > type = = SEQ_SCENE ) return " SCENE " ;
else if ( seq - > type = = SEQ_MOVIE ) return " MOVIE " ;
2004-06-18 15:04:27 +00:00
else if ( seq - > type = = SEQ_SOUND ) return " AUDIO " ;
2002-10-12 11:37:38 +00:00
else if ( seq - > type < SEQ_EFFECT ) return seq - > strip - > dir ;
else if ( seq - > type = = SEQ_CROSS ) return " CROSS " ;
else if ( seq - > type = = SEQ_GAMCROSS ) return " GAMMA CROSS " ;
else if ( seq - > type = = SEQ_ADD ) return " ADD " ;
else if ( seq - > type = = SEQ_SUB ) return " SUB " ;
else if ( seq - > type = = SEQ_MUL ) return " MUL " ;
else if ( seq - > type = = SEQ_ALPHAOVER ) return " ALPHAOVER " ;
else if ( seq - > type = = SEQ_ALPHAUNDER ) return " ALPHAUNDER " ;
else if ( seq - > type = = SEQ_OVERDROP ) return " OVER DROP " ;
2004-08-03 19:36:17 +00:00
else if ( seq - > type = = SEQ_WIPE ) return " WIPE " ;
2004-06-23 22:11:57 +00:00
else if ( seq - > type = = SEQ_GLOW ) return " GLOW " ;
2002-10-12 11:37:38 +00:00
else if ( seq - > type = = SEQ_PLUGIN ) {
if ( seq - > plugin & & seq - > plugin - > doit ) return seq - > plugin - > pname ;
return " PLUGIN " ;
}
else return " EFFECT " ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
}
static void draw_cfra_seq ( void )
{
glColor3ub ( 0x30 , 0x90 , 0x50 ) ;
glLineWidth ( 2.0 ) ;
glBegin ( GL_LINES ) ;
glVertex2f ( G . scene - > r . cfra , G . v2d - > cur . ymin ) ;
glVertex2f ( G . scene - > r . cfra , G . v2d - > cur . ymax ) ;
glEnd ( ) ;
glLineWidth ( 1.0 ) ;
}
static unsigned int seq_color ( Sequence * seq )
{
switch ( seq - > type ) {
case SEQ_META :
return 0x509090 ;
case SEQ_MOVIE :
return 0x805040 ;
case SEQ_SCENE :
if ( seq - > scene = = G . scene ) return 0x709050 ;
return 0x609060 ;
case SEQ_CROSS :
return 0x505090 ;
case SEQ_GAMCROSS :
return 0x5040A0 ;
case SEQ_ADD :
return 0x6060A0 ;
case SEQ_SUB :
return 0x8060A0 ;
case SEQ_MUL :
return 0x8080A0 ;
case SEQ_ALPHAOVER :
return 0x6080A0 ;
case SEQ_ALPHAUNDER :
return 0x9080A0 ;
case SEQ_OVERDROP :
return 0x5080B0 ;
2004-08-03 19:36:17 +00:00
case SEQ_WIPE :
2004-06-18 22:53:06 +00:00
return 0x2080B0 ;
2004-06-23 22:11:57 +00:00
case SEQ_GLOW :
return 0x0080B0 ;
2002-10-12 11:37:38 +00:00
case SEQ_PLUGIN :
return 0x906000 ;
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
case SEQ_SOUND :
if ( seq - > flag & SEQ_MUTE ) return 0x707060 ; else return 0x787850 ;
2002-10-12 11:37:38 +00:00
default :
return 0x906060 ;
}
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
}
static void drawmeta_contents ( Sequence * seqm , float x1 , float y1 , float x2 , float y2 )
{
Sequence * seq ;
float dx ;
int nr ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
nr = 0 ;
WHILE_SEQ ( & seqm - > seqbase ) {
nr + + ;
}
END_SEQ
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
dx = ( x2 - x1 ) / nr ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
WHILE_SEQ ( & seqm - > seqbase ) {
cpack ( seq_color ( seq ) ) ;
glRectf ( x1 , y1 , x1 + 0.9 * dx , y2 ) ;
EmbossBoxf ( x1 , y1 , x1 + 0.9 * dx , y2 , 0 , 0x404040 , 0xB0B0B0 ) ;
x1 + = dx ;
}
END_SEQ
}
2005-03-09 19:45:59 +00:00
static void drawseqwave ( Sequence * seq , float x1 , float y1 , float x2 , float y2 )
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
{
float f , height , midy ;
int offset , sofs , eofs ;
signed short * s ;
bSound * sound ;
audio_makestream ( seq - > sound ) ;
2004-05-03 21:21:29 +00:00
if ( seq - > sound - > stream = = NULL ) return ;
2004-06-18 15:04:27 +00:00
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
if ( seq - > flag & SEQ_MUTE ) glColor3ub ( 0x70 , 0x80 , 0x80 ) ; else glColor3ub ( 0x70 , 0xc0 , 0xc0 ) ;
sound = seq - > sound ;
sofs = ( ( int ) ( ( ( ( float ) ( seq - > startdisp - seq - > start ) ) / ( float ) G . scene - > r . frs_sec ) * ( float ) G . scene - > audio . mixrate * 4.0 ) ) & ( ~ 3 ) ;
2004-06-18 15:04:27 +00:00
eofs = ( ( int ) ( ( ( ( float ) ( seq - > enddisp - seq - > start ) ) / ( float ) G . scene - > r . frs_sec ) * ( float ) G . scene - > audio . mixrate * 4.0 ) ) & ( ~ 3 ) ;
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
for ( f = x1 ; f < = x2 ; f + = 0.2 ) {
offset = ( int ) ( ( float ) sofs + ( ( f - x1 ) / ( x2 - x1 ) ) * ( float ) ( eofs - sofs ) ) & ( ~ 3 ) ;
if ( offset > = sound - > streamlen ) offset = sound - > streamlen - 1 ;
s = ( signed short * ) ( ( ( Uint8 * ) sound - > stream ) + offset ) ;
midy = ( y1 + y2 ) / 2 ;
height = ( ( ( ( float ) s [ 0 ] / 32768 + ( float ) s [ 1 ] / 32768 ) / 2 ) * ( y2 - y1 ) ) / 2 ;
glBegin ( GL_LINES ) ;
glVertex2f ( f , midy - height ) ;
glVertex2f ( f , midy + height ) ;
glEnd ( ) ;
}
}
2002-10-12 11:37:38 +00:00
void drawseq ( Sequence * seq )
{
float v1 [ 2 ] , v2 [ 2 ] , x1 , x2 , y1 , y2 ;
unsigned int body , dark , light ;
int len , size ;
short mval [ 2 ] ;
char str [ 120 ] , * strp ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
if ( seq - > startdisp > seq - > enddisp ) body = 0x707070 ;
body = seq_color ( seq ) ;
dark = 0x202020 ;
light = 0xB0B0B0 ;
if ( G . moving & & ( seq - > flag & SELECT ) ) {
if ( seq - > flag & SEQ_OVERLAP ) dark = light = 0x4040FF ;
else {
if ( seq - > flag & ( SEQ_LEFTSEL + SEQ_RIGHTSEL ) ) ;
else dark = light = 0xFFFFFF ;
}
}
/* body */
if ( seq - > startstill ) x1 = seq - > start ;
else x1 = seq - > startdisp ;
y1 = seq - > machine + 0.2 ;
if ( seq - > endstill ) x2 = seq - > start + seq - > len ;
else x2 = seq - > enddisp ;
y2 = seq - > machine + 0.8 ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
cpack ( body ) ;
glRectf ( x1 , y1 , x2 , y2 ) ;
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
if ( seq - > type = = SEQ_SOUND ) drawseqwave ( seq , x1 , y1 , x2 , y2 ) ;
2002-10-12 11:37:38 +00:00
EmbossBoxf ( x1 , y1 , x2 , y2 , seq - > flag & 1 , dark , light ) ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
v1 [ 1 ] = y1 ;
v2 [ 1 ] = y2 ;
if ( seq - > type < SEQ_EFFECT ) {
2003-04-28 14:43:20 +00:00
/* decoration: the bars */
2002-10-12 11:37:38 +00:00
x1 = seq - > startdisp ;
x2 = seq - > enddisp ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
if ( seq - > startofs ) {
cpack ( 0x707070 ) ;
glRectf ( ( float ) ( seq - > start ) , y1 - 0.2 , x1 , y1 ) ;
EmbossBoxf ( ( float ) ( seq - > start ) , y1 - 0.2 , x1 , y1 , seq - > flag & 1 , dark , light ) ;
}
if ( seq - > endofs ) {
cpack ( 0x707070 ) ;
glRectf ( x2 , y2 , ( float ) ( seq - > start + seq - > len ) , y2 + 0.2 ) ;
EmbossBoxf ( x2 , y2 , ( float ) ( seq - > start + seq - > len ) , y2 + 0.2 , seq - > flag & 1 , dark , light ) ;
}
if ( seq - > startstill ) {
cpack ( body ) ;
glRectf ( x1 , y1 + 0.1 , ( float ) ( seq - > start ) , y1 + 0.5 ) ;
no_rightbox = 1 ;
EmbossBoxf ( x1 , y1 + 0.1 , ( float ) ( seq - > start ) , y1 + 0.5 , seq - > flag & 1 , dark , light ) ;
no_rightbox = 0 ;
}
if ( seq - > endstill ) {
cpack ( body ) ;
glRectf ( ( float ) ( seq - > start + seq - > len ) , y1 + 0.1 , x2 , y1 + 0.5 ) ;
no_leftbox = 1 ;
EmbossBoxf ( ( float ) ( seq - > start + seq - > len ) , y1 + 0.1 , x2 , y1 + 0.5 , seq - > flag & 1 , dark , light ) ;
no_leftbox = 0 ;
}
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
}
2003-04-28 14:43:20 +00:00
/* calculate if seq is long enough to print a name */
2002-10-12 11:37:38 +00:00
x1 = seq - > startdisp + seq - > handsize ;
x2 = seq - > enddisp - seq - > handsize ;
2004-06-18 15:04:27 +00:00
2003-04-28 14:43:20 +00:00
/* but first the contents of a meta */
2002-10-12 11:37:38 +00:00
if ( seq - > type = = SEQ_META ) drawmeta_contents ( seq , x1 , y1 + 0.15 , x2 , y2 - 0.15 ) ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
if ( x1 < G . v2d - > cur . xmin ) x1 = G . v2d - > cur . xmin ;
else if ( x1 > G . v2d - > cur . xmax ) x1 = G . v2d - > cur . xmax ;
if ( x2 < G . v2d - > cur . xmin ) x2 = G . v2d - > cur . xmin ;
else if ( x2 > G . v2d - > cur . xmax ) x2 = G . v2d - > cur . xmax ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
if ( x1 ! = x2 ) {
v1 [ 0 ] = x1 ;
ipoco_to_areaco_noclip ( G . v2d , v1 , mval ) ;
x1 = mval [ 0 ] ;
v2 [ 0 ] = x2 ;
ipoco_to_areaco_noclip ( G . v2d , v2 , mval ) ;
x2 = mval [ 0 ] ;
size = x2 - x1 ;
2004-06-18 15:04:27 +00:00
if ( seq - > name [ 2 ] ) {
sprintf ( str , " %s: %s (%d) " , give_seqname ( seq ) , seq - > name + 2 , seq - > len ) ;
} else {
if ( seq - > type = = SEQ_META ) {
sprintf ( str , " %d %s " , seq - > len , give_seqname ( seq ) ) ;
}
else if ( seq - > type = = SEQ_SCENE ) {
if ( seq - > scene ) sprintf ( str , " %d %s %s " , seq - > len , give_seqname ( seq ) , seq - > scene - > id . name + 2 ) ;
else sprintf ( str , " %d %s " , seq - > len , give_seqname ( seq ) ) ;
}
else if ( seq - > type = = SEQ_IMAGE ) {
sprintf ( str , " %d %s%s " , seq - > len , seq - > strip - > dir , seq - > strip - > stripdata - > name ) ;
}
else if ( seq - > type & SEQ_EFFECT ) {
if ( seq - > seq3 ! = seq - > seq2 & & seq - > seq1 ! = seq - > seq3 )
sprintf ( str , " %d %s: %d-%d (use %d) " , seq - > len , give_seqname ( seq ) , seq - > seq1 - > machine , seq - > seq2 - > machine , seq - > seq3 - > machine ) ;
else
sprintf ( str , " %d %s: %d-%d " , seq - > len , give_seqname ( seq ) , seq - > seq1 - > machine , seq - > seq2 - > machine ) ;
}
else if ( seq - > type = = SEQ_SOUND ) {
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
sprintf ( str , " %d %s " , seq - > len , seq - > strip - > stripdata - > name ) ;
2004-06-18 15:04:27 +00:00
}
else if ( seq - > type = = SEQ_MOVIE ) {
sprintf ( str , " %d %s%s " , seq - > len , seq - > strip - > dir , seq - > strip - > stripdata - > name ) ;
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
}
}
2002-10-12 11:37:38 +00:00
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
strp = str ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
while ( ( len = BMF_GetStringWidth ( G . font , strp ) ) > size ) {
if ( len < 10 ) break ;
if ( strp [ 1 ] = = 0 ) break ;
strp + + ;
}
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
mval [ 0 ] = ( x1 + x2 - len + 1 ) / 2 ;
mval [ 1 ] = 1 ;
areamouseco_to_ipoco ( G . v2d , mval , & x1 , & x2 ) ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
if ( seq - > flag & SELECT ) cpack ( 0xFFFFFF ) ;
else cpack ( 0x0 ) ;
glRasterPos3f ( x1 , y1 + 0.2 , 0.0 ) ;
BMF_DrawString ( G . font , strp ) ;
}
if ( seq - > type < SEQ_EFFECT ) {
2003-04-28 14:43:20 +00:00
/* decoration: triangles */
2002-10-12 11:37:38 +00:00
x1 = seq - > startdisp ;
x2 = seq - > enddisp ;
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
2002-10-12 11:37:38 +00:00
body + = 0x101010 ;
dark = 0x202020 ;
light = 0xB0B0B0 ;
2004-06-18 15:04:27 +00:00
2003-04-28 14:43:20 +00:00
/* left triangle */
2002-10-12 11:37:38 +00:00
if ( seq - > flag & SEQ_LEFTSEL ) {
cpack ( body + 0x20 ) ;
if ( G . moving ) {
if ( seq - > flag & SEQ_OVERLAP ) dark = light = 0x4040FF ;
else dark = light = 0xFFFFFF ;
}
}
else {
cpack ( body ) ;
}
glBegin ( GL_TRIANGLES ) ;
v1 [ 0 ] = x1 ; glVertex2fv ( v1 ) ;
v2 [ 0 ] = x1 ; glVertex2fv ( v2 ) ;
v2 [ 0 ] + = seq - > handsize ; v2 [ 1 ] = ( y1 + y2 ) / 2.0 ; glVertex2fv ( v2 ) ; v2 [ 1 ] = y2 ;
glEnd ( ) ;
cpack ( light ) ;
glBegin ( GL_LINE_STRIP ) ;
v1 [ 0 ] = x1 ; glVertex2fv ( v1 ) ;
v2 [ 0 ] = x1 ; glVertex2fv ( v2 ) ;
v2 [ 0 ] + = seq - > handsize ; v2 [ 1 ] = ( y1 + y2 ) / 2.0 ; glVertex2fv ( v2 ) ; v2 [ 1 ] = y2 ;
cpack ( dark ) ;
glVertex2fv ( v1 ) ;
glEnd ( ) ;
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
}
2002-10-12 11:37:38 +00:00
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
if ( G . moving | | ( seq - > flag & SEQ_LEFTSEL ) ) {
cpack ( 0xFFFFFF ) ;
glRasterPos3f ( x1 , y1 + 0.2 , 0.0 ) ;
sprintf ( str , " %d " , seq - > startdisp ) ;
BMF_DrawString ( G . font , str ) ;
}
2004-06-18 15:04:27 +00:00
2003-04-28 14:43:20 +00:00
/* right triangle */
2004-06-18 15:04:27 +00:00
if ( seq - > type < SEQ_EFFECT ) {
2002-10-12 11:37:38 +00:00
dark = 0x202020 ;
light = 0xB0B0B0 ;
if ( seq - > flag & SEQ_RIGHTSEL ) {
cpack ( body + 0x20 ) ;
if ( G . moving ) {
if ( seq - > flag & SEQ_OVERLAP ) dark = light = 0x4040FF ;
else dark = light = 0xFFFFFF ;
}
}
else {
cpack ( body ) ;
}
glBegin ( GL_TRIANGLES ) ;
v2 [ 0 ] = x2 ; glVertex2fv ( v2 ) ;
v1 [ 0 ] = x2 ; glVertex2fv ( v1 ) ;
v2 [ 0 ] - = seq - > handsize ; v2 [ 1 ] = ( y1 + y2 ) / 2.0 ; glVertex2fv ( v2 ) ; v2 [ 1 ] = y2 ;
glEnd ( ) ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
cpack ( dark ) ;
glBegin ( GL_LINE_STRIP ) ;
v2 [ 0 ] = x2 ; glVertex2fv ( v2 ) ;
v1 [ 0 ] = x2 ; glVertex2fv ( v1 ) ;
v1 [ 0 ] - = seq - > handsize ; v1 [ 1 ] = ( y1 + y2 ) / 2.0 ; glVertex2fv ( v1 ) ; v1 [ 1 ] = y2 ;
cpack ( light ) ;
glVertex2fv ( v2 ) ;
glEnd ( ) ;
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
}
2002-10-12 11:37:38 +00:00
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
if ( G . moving | | ( seq - > flag & SEQ_RIGHTSEL ) ) {
cpack ( 0xFFFFFF ) ;
glRasterPos3f ( x2 - seq - > handsize / 2 , y1 + 0.2 , 0.0 ) ;
sprintf ( str , " %d " , seq - > enddisp - 1 ) ;
BMF_DrawString ( G . font , str ) ;
2002-10-12 11:37:38 +00:00
}
}
static Sequence * special_seq_update = 0 ;
void set_special_seq_update ( int val )
{
int x ;
2003-04-28 14:43:20 +00:00
/* if mouse over a sequence && LEFTMOUSE */
2002-10-12 11:37:38 +00:00
if ( val ) {
special_seq_update = find_nearest_seq ( & x ) ;
}
else special_seq_update = 0 ;
}
2004-12-02 18:12:18 +00:00
static void draw_image_seq ( ScrArea * sa )
2002-10-12 11:37:38 +00:00
{
SpaceSeq * sseq ;
StripElem * se ;
struct ImBuf * ibuf ;
int x1 , y1 ;
2005-11-07 13:22:23 +00:00
float zoom ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
glClearColor ( 0.0 , 0.0 , 0.0 , 0.0 ) ;
glClear ( GL_COLOR_BUFFER_BIT ) ;
ibuf = ( ImBuf * ) give_ibuf_seq ( ( G . scene - > r . cfra ) ) ;
if ( special_seq_update ) {
se = special_seq_update - > curelem ;
if ( se ) {
if ( se - > ok = = 2 ) {
if ( se - > se1 )
ibuf = se - > se1 - > ibuf ;
}
else ibuf = se - > ibuf ;
}
}
if ( ibuf = = 0 | | ibuf - > rect = = 0 ) return ;
2004-06-18 15:04:27 +00:00
2004-12-02 18:12:18 +00:00
sseq = sa - > spacedata . first ;
2002-10-12 11:37:38 +00:00
if ( sseq = = 0 ) return ;
2004-06-18 15:04:27 +00:00
2005-11-07 13:22:23 +00:00
if ( sseq - > zoom > 0 ) zoom = sseq - > zoom ;
else zoom = - 1.0 / sseq - > zoom ;
2003-04-28 14:43:20 +00:00
/* calc location */
2005-11-07 13:22:23 +00:00
x1 = ( sa - > winx - zoom * ibuf - > x ) / 2 ;
y1 = ( sa - > winy - zoom * ibuf - > y ) / 2 ;
2004-06-18 15:04:27 +00:00
2005-01-07 21:48:25 +00:00
/* needed for gla draw */
glaDefine2DArea ( & curarea - > winrct ) ;
2005-11-07 13:22:23 +00:00
glPixelZoom ( zoom , zoom ) ;
2005-01-07 21:48:25 +00:00
glaDrawPixelsSafe ( x1 , y1 , ibuf - > x , ibuf - > y , ibuf - > rect ) ;
glPixelZoom ( 1.0 , 1.0 ) ;
2002-10-12 11:37:38 +00:00
2004-12-02 18:12:18 +00:00
sa - > win_swap = WIN_BACK_OK ;
2002-10-12 11:37:38 +00:00
}
static void draw_extra_seqinfo ( void )
{
extern Sequence * last_seq ;
StripElem * se , * last ;
float xco , xfac ;
int sta , end ;
char str [ 256 ] ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
if ( last_seq = = 0 ) return ;
2004-06-18 15:04:27 +00:00
2003-04-28 14:43:20 +00:00
/* xfac: size of 1 pixel */
2002-10-12 11:37:38 +00:00
xfac = G . v2d - > cur . xmax - G . v2d - > cur . xmin ;
xfac / = ( float ) ( G . v2d - > mask . xmax - G . v2d - > mask . xmin ) ;
xco = G . v2d - > cur . xmin + 40 * xfac ;
2004-06-18 15:04:27 +00:00
2003-10-22 23:20:44 +00:00
BIF_ThemeColor ( TH_TEXT ) ;
2004-06-18 15:04:27 +00:00
2003-04-28 14:43:20 +00:00
/* NAME */
2002-10-12 11:37:38 +00:00
glRasterPos3f ( xco , 0.3 , 0.0 ) ;
2005-03-24 09:37:06 +00:00
strncpy ( str , give_seqname ( last_seq ) , 255 ) ;
2002-10-12 11:37:38 +00:00
BMF_DrawString ( G . font , str ) ;
xco + = xfac * BMF_GetStringWidth ( G . font , str ) + 30.0 * xfac ;
if ( last_seq - > type = = SEQ_SCENE & & last_seq - > scene ) {
glRasterPos3f ( xco , 0.3 , 0.0 ) ;
BMF_DrawString ( G . font , last_seq - > scene - > id . name + 2 ) ;
xco + = xfac * BMF_GetStringWidth ( G . font , last_seq - > scene - > id . name + 2 ) + 30.0 * xfac ;
}
/* LEN */
if ( last_seq - > type & SEQ_EFFECT )
sprintf ( str , " len: %d From %d - %d " , last_seq - > len , last_seq - > startdisp , last_seq - > enddisp - 1 ) ;
2004-06-18 15:04:27 +00:00
else
2002-10-12 11:37:38 +00:00
sprintf ( str , " len: %d (%d) " , last_seq - > enddisp - last_seq - > startdisp , last_seq - > len ) ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
glRasterPos3f ( xco , 0.3 , 0.0 ) ;
BMF_DrawString ( G . font , str ) ;
xco + = xfac * BMF_GetStringWidth ( G . font , str ) + 30.0 * xfac ;
if ( last_seq - > type = = SEQ_IMAGE ) {
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
/* CURRENT */
se = ( StripElem * ) give_stripelem ( last_seq , ( G . scene - > r . cfra ) ) ;
if ( se ) {
sprintf ( str , " cur: %s " , se - > name ) ;
glRasterPos3f ( xco , 0.3 , 0.0 ) ;
BMF_DrawString ( G . font , str ) ;
xco + = xfac * BMF_GetStringWidth ( G . font , str ) + 30.0 * xfac ;
}
2004-06-18 15:04:27 +00:00
2003-04-28 14:43:20 +00:00
/* FIRST AND LAST */
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
if ( last_seq - > strip ) {
se = last_seq - > strip - > stripdata ;
last = se + last_seq - > len - 1 ;
if ( last_seq - > startofs ) se + = last_seq - > startofs ;
if ( last_seq - > endofs ) last - = last_seq - > endofs ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
sprintf ( str , " First: %s at %d Last: %s at %d " , se - > name , last_seq - > startdisp , last - > name , last_seq - > enddisp - 1 ) ;
glRasterPos3f ( xco , 0.3 , 0.0 ) ;
BMF_DrawString ( G . font , str ) ;
xco + = xfac * BMF_GetStringWidth ( G . font , str ) + 30.0 * xfac ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
/* orig size */
sprintf ( str , " OrigSize: %d x %d " , last_seq - > strip - > orx , last_seq - > strip - > ory ) ;
glRasterPos3f ( xco , 0.3 , 0.0 ) ;
BMF_DrawString ( G . font , str ) ;
xco + = xfac * BMF_GetStringWidth ( G . font , str ) + 30.0 * xfac ;
}
}
else if ( last_seq - > type = = SEQ_MOVIE ) {
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
sta = last_seq - > startofs ;
end = last_seq - > len - 1 - last_seq - > endofs ;
2004-06-18 15:04:27 +00:00
sprintf ( str , " %s %s%s First: %d at %d Last: %d at %d Cur: %d " ,
last_seq - > name + 2 , last_seq - > strip - > dir , last_seq - > strip - > stripdata - > name ,
2002-10-12 11:37:38 +00:00
sta , last_seq - > startdisp , end , last_seq - > enddisp - 1 , ( G . scene - > r . cfra ) - last_seq - > startdisp ) ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
glRasterPos3f ( xco , 0.3 , 0.0 ) ;
BMF_DrawString ( G . font , str ) ;
}
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
else if ( last_seq - > type = = SEQ_SOUND ) {
2004-06-18 15:04:27 +00:00
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
sta = last_seq - > startofs ;
end = last_seq - > len - 1 - last_seq - > endofs ;
2004-06-18 15:04:27 +00:00
sprintf ( str , " %s %s%s First: %d at %d Last: %d at %d Cur: %d Gain: %.2f dB Pan: %.2f " ,
last_seq - > name + 2 , last_seq - > strip - > dir , last_seq - > strip - > stripdata - > name ,
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
sta , last_seq - > startdisp , end , last_seq - > enddisp - 1 , ( G . scene - > r . cfra ) - last_seq - > startdisp ,
last_seq - > level , last_seq - > pan ) ;
2004-06-18 15:04:27 +00:00
Commit message and the brunt of the code courtesy of intrr, apologies for the
size of this;
Finally, the Sequencer audio support and global audio/animation sync stuff!
(See http://intrr.org/blender/audiosequencer.html)
Stuff that has been done:
./source/blender/blenloader/intern/writefile.c
./source/blender/blenloader/intern/readfile.c
Added code to make it handle sounds used by audio strips, and to convert
Scene data from older (<2.28) versions to init Scene global audio settings
(Scene->audio) to defaults.
./source/blender/include/BSE_seqaudio.h
./source/blender/src/seqaudio.c
The main audio routines that start/stop/scrub the audio stream at
a certain frame position, provide the frame reference for the current
stream position, mix the audio, convert the audio, mixdown the audio
into a file.
./source/blender/makesdna/DNA_sound_types.h
Introduced new variables in the bSound struct to accomodate the sample
data after converted to the scene's global mixing format (stream, streamlen).
Also added a new flag SOUND_FLAGS_SEQUENCE that gets set if the Sound
belongs to a sequence strip.
./source/blender/makesdna/DNA_scene_types.h
Added AudioData struct, which holds scene-global audio settings.
./source/blender/makesdna/DNA_sequence_types.h
Added support for audio strips. Some variables to hold Panning/Attenuation
information, position information, reference to the sample, and some flags.
./source/blender/makesdna/DNA_userdef_types.h
./source/blender/src/usiblender.c
Added a "Mixing buffer size" userpref. Made the versions stuff initialize
it to a default for versions <2.28.
./source/blender/makesdna/DNA_space_types.h
./source/blender/src/filesel.c
Added a Cyan dot to .WAV files. Any other suggestions on a better color? :)
./source/blender/src/editsound.c
Changes (fixes) to the WAV file loader, re-enabled some gameengine code that
is needed for dealing with bSounds and bSamples.
./source/blender/src/editipo.c
./source/blender/src/drawseq.c
./source/blender/src/editnla.c
./source/blender/src/space.c
./source/blender/src/drawview.c
./source/blender/src/renderwin.c
./source/blender/src/headerbuttons.c
- Created two different wrappers for update_for_newframe(), one which scrubs
the audio, one which doesn't.
- Replaced some of the occurences of update_for_newframe() with
update_for_newframe_muted(), which doesn't scrub the audio.
- In drawview.c: Changed the synchronization scheme to get the current audio
position from the audio engine, and use that as a reference for setting
CFRA. Implements a/v sync and framedrop.
- In editipo.c: Changed handling of Fac IPOs to be usable for audio strips as
volume envelopes.
- In space.c: Added the mixing buffer size Userpref, enabled audio scrubbing
(update_for_newframe()) for moving the sequence editor framebar.
./source/blender/src/editseq.c
Added support for audio strips and a default directory for WAV files which
gets saved from the last Shift-A operation.
./source/blender/src/buttons.c
Added Scene-global audio sequencer settings in Sound buttons.
./source/blender/src/sequence.c
Various stuff that deals with handling audio strips differently than
usual strips.
2003-07-13 20:16:56 +00:00
glRasterPos3f ( xco , 0.3 , 0.0 ) ;
BMF_DrawString ( G . font , str ) ;
2004-06-18 15:04:27 +00:00
}
2002-10-12 11:37:38 +00:00
}
2004-06-16 20:25:56 +00:00
# define SEQ_BUT_PLUGIN 1
2005-01-07 18:07:13 +00:00
# define SEQ_BUT_RELOAD 2
2004-06-23 18:22:51 +00:00
# define SEQ_BUT_EFFECT 3
2004-06-16 20:25:56 +00:00
void do_seqbuttons ( short val )
{
extern Sequence * last_seq ;
2004-06-18 15:04:27 +00:00
2004-06-16 20:25:56 +00:00
switch ( val ) {
case SEQ_BUT_PLUGIN :
new_stripdata ( last_seq ) ;
free_imbuf_effect_spec ( CFRA ) ;
break ;
2004-06-18 15:04:27 +00:00
2005-01-07 18:07:13 +00:00
case SEQ_BUT_RELOAD :
free_imbuf_seq ( ) ; // frees all
2004-06-16 20:25:56 +00:00
break ;
2004-06-23 18:22:51 +00:00
case SEQ_BUT_EFFECT :
new_stripdata ( last_seq ) ;
calc_sequence ( last_seq ) ;
2004-06-18 15:04:27 +00:00
break ;
2004-06-16 20:25:56 +00:00
}
2004-06-18 15:04:27 +00:00
2004-06-16 20:25:56 +00:00
allqueue ( REDRAWSEQ , 0 ) ;
}
static void seq_panel_properties ( short cntrl ) // SEQ_HANDLER_PROPERTIES
{
extern Sequence * last_seq ;
uiBlock * block ;
2004-06-18 15:04:27 +00:00
2004-06-16 20:25:56 +00:00
block = uiNewBlock ( & curarea - > uiblocks , " seq_panel_properties " , UI_EMBOSS , UI_HELV , curarea - > win ) ;
uiPanelControl ( UI_PNL_SOLID | UI_PNL_CLOSE | cntrl ) ;
uiSetPanelHandler ( SEQ_HANDLER_PROPERTIES ) ; // for close and esc
2004-07-21 01:44:27 +00:00
if ( uiNewPanel ( curarea , block , " Strip Properties " , " Seq " , 10 , 230 , 318 , 204 ) = = 0 ) return ;
2004-06-16 20:25:56 +00:00
if ( last_seq = = NULL ) return ;
if ( last_seq - > type = = SEQ_PLUGIN ) {
PluginSeq * pis ;
VarStruct * varstr ;
int a , xco , yco ;
2004-06-18 15:04:27 +00:00
2004-07-21 01:44:27 +00:00
uiDefBut ( block , LABEL , 0 , " Type: Plugin " , 10 , 50 , 70 , 20 , 0 , 0 , 0 , 0 , 0 , " " ) ;
2004-06-18 15:04:27 +00:00
2004-06-16 20:25:56 +00:00
pis = last_seq - > plugin ;
if ( pis - > vars = = 0 ) return ;
2004-06-18 15:04:27 +00:00
2004-06-16 20:25:56 +00:00
varstr = pis - > varstr ;
if ( varstr ) {
for ( a = 0 ; a < pis - > vars ; a + + , varstr + + ) {
xco = 150 * ( a / 6 ) + 10 ;
yco = 125 - 20 * ( a % 6 ) + 1 ;
uiDefBut ( block , varstr - > type , SEQ_BUT_PLUGIN , varstr - > name , xco , yco , 150 , 19 , & ( pis - > data [ a ] ) , varstr - > min , varstr - > max , 100 , 0 , varstr - > tip ) ;
}
}
}
2004-06-18 15:04:27 +00:00
else if ( last_seq - > type = = SEQ_IMAGE ) {
2004-07-21 01:44:27 +00:00
uiDefBut ( block , LABEL , 0 , " Type: Image " , 10 , 140 , 150 , 20 , 0 , 0 , 0 , 0 , 0 , " " ) ;
2004-09-16 17:57:14 +00:00
uiDefBut ( block , TEX , B_NOP , " Name: " , 10 , 120 , 150 , 19 , last_seq - > name + 2 , 0.0 , 21.0 , 100 , 0 , " " ) ;
2004-06-18 15:04:27 +00:00
2005-08-03 18:48:22 +00:00
uiDefButBitS ( block , TOG , SEQ_MAKE_PREMUL , SEQ_BUT_RELOAD , " Convert to Premul " , 10 , 90 , 150 , 19 , & last_seq - > flag , 0.0 , 21.0 , 100 , 0 , " Converts RGB values to become premultiplied with Alpha " ) ;
uiDefButBitS ( block , TOG , SEQ_FILTERY , SEQ_BUT_RELOAD , " FilterY " , 10 , 70 , 150 , 19 , & last_seq - > flag , 0.0 , 21.0 , 100 , 0 , " For video movies to remove fields " ) ;
2005-01-07 18:07:13 +00:00
uiDefButF ( block , NUM , SEQ_BUT_RELOAD , " Mul: " , 10 , 50 , 150 , 19 , & last_seq - > mul , 0.001 , 5.0 , 100 , 0 , " Multiply colors " ) ;
2005-09-21 20:28:44 +00:00
uiDefButS ( block , TOG | BIT | 7 , SEQ_BUT_RELOAD , " Reverse Frames " , 10 , 30 , 150 , 19 , & last_seq - > flag , 0.0 , 21.0 , 100 , 0 , " Reverse frame order " ) ;
2005-11-07 23:13:00 +00:00
uiDefButS ( block , NUM , SEQ_BUT_RELOAD , " Strobe: " , 10 , 10 , 150 , 19 , & last_seq - > strobe , 1.0 , 30.0 , 100 , 0 , " Only display every nth frame " ) ;
2004-06-18 15:04:27 +00:00
}
else if ( last_seq - > type = = SEQ_META ) {
2004-07-21 01:44:27 +00:00
uiDefBut ( block , LABEL , 0 , " Type: Meta " , 10 , 140 , 150 , 20 , 0 , 0 , 0 , 0 , 0 , " " ) ;
2004-09-16 17:57:14 +00:00
uiDefBut ( block , TEX , B_NOP , " Name: " , 10 , 120 , 150 , 19 , last_seq - > name + 2 , 0.0 , 21.0 , 100 , 0 , " " ) ;
2004-06-18 15:04:27 +00:00
}
else if ( last_seq - > type = = SEQ_SCENE ) {
2004-07-21 01:44:27 +00:00
uiDefBut ( block , LABEL , 0 , " Type: Scene " , 10 , 140 , 150 , 20 , 0 , 0 , 0 , 0 , 0 , " " ) ;
2004-09-16 17:57:14 +00:00
uiDefBut ( block , TEX , B_NOP , " Name: " , 10 , 120 , 150 , 19 , last_seq - > name + 2 , 0.0 , 21.0 , 100 , 0 , " " ) ;
2005-09-21 20:28:44 +00:00
uiDefButS ( block , TOG | BIT | 7 , SEQ_BUT_RELOAD , " Reverse Frames " , 10 , 90 , 150 , 19 , & last_seq - > flag , 0.0 , 21.0 , 100 , 0 , " Reverse frame order " ) ;
2004-06-18 15:04:27 +00:00
}
2004-06-16 20:25:56 +00:00
else if ( last_seq - > type = = SEQ_MOVIE ) {
if ( last_seq - > mul = = 0.0 ) last_seq - > mul = 1.0 ;
2004-07-21 01:44:27 +00:00
uiDefBut ( block , LABEL , 0 , " Type: Movie " , 10 , 140 , 150 , 20 , 0 , 0 , 0 , 0 , 0 , " " ) ;
2004-09-16 17:57:14 +00:00
uiDefBut ( block , TEX , B_NOP , " Name: " , 10 , 120 , 150 , 19 , last_seq - > name + 2 , 0.0 , 21.0 , 100 , 0 , " " ) ;
2004-06-18 15:04:27 +00:00
2005-08-03 18:48:22 +00:00
uiDefButBitS ( block , TOG , SEQ_MAKE_PREMUL , SEQ_BUT_RELOAD , " Make Premul Alpha " , 10 , 90 , 150 , 19 , & last_seq - > flag , 0.0 , 21.0 , 100 , 0 , " Converts RGB values to become premultiplied with Alpha " ) ;
uiDefButBitS ( block , TOG , SEQ_FILTERY , SEQ_BUT_RELOAD , " FilterY " , 10 , 70 , 150 , 19 , & last_seq - > flag , 0.0 , 21.0 , 100 , 0 , " For video movies to remove fields " ) ;
2005-01-07 18:07:13 +00:00
uiDefButF ( block , NUM , SEQ_BUT_RELOAD , " Mul: " , 10 , 50 , 150 , 19 , & last_seq - > mul , 0.001 , 5.0 , 100 , 0 , " Multiply colors " ) ;
2005-09-21 20:28:44 +00:00
uiDefButS ( block , TOG | BIT | 7 , SEQ_BUT_RELOAD , " Reverse Frames " , 10 , 30 , 150 , 19 , & last_seq - > flag , 0.0 , 21.0 , 100 , 0 , " Reverse frame order " ) ;
2005-11-07 23:13:00 +00:00
uiDefButS ( block , NUM , SEQ_BUT_RELOAD , " Strobe: " , 10 , 10 , 150 , 19 , & last_seq - > strobe , 1.0 , 30.0 , 100 , 0 , " Only display every nth frame " ) ;
2004-06-16 20:25:56 +00:00
}
else if ( last_seq - > type = = SEQ_SOUND ) {
2004-07-21 01:44:27 +00:00
uiDefBut ( block , LABEL , 0 , " Type: Audio " , 10 , 140 , 150 , 20 , 0 , 0 , 0 , 0 , 0 , " " ) ;
uiDefBut ( block , TEX , 0 , " Name: " , 10 , 120 , 150 , 19 , last_seq - > name + 2 , 0.0 , 21.0 , 100 , 0 , " " ) ;
2004-06-16 20:25:56 +00:00
2005-08-03 18:48:22 +00:00
uiDefButBitS ( block , TOG , SEQ_MUTE , B_NOP , " Mute " , 10 , 90 , 120 , 19 , & last_seq - > flag , 0.0 , 21.0 , 100 , 0 , " " ) ;
2005-01-07 18:07:13 +00:00
uiDefButF ( block , NUM , SEQ_BUT_RELOAD , " Gain (dB): " , 10 , 70 , 150 , 19 , & last_seq - > level , - 96.0 , 6.0 , 100 , 0 , " " ) ;
uiDefButF ( block , NUM , SEQ_BUT_RELOAD , " Pan: " , 10 , 50 , 150 , 19 , & last_seq - > pan , - 1.0 , 1.0 , 100 , 0 , " " ) ;
2004-06-18 15:04:27 +00:00
}
else if ( last_seq - > type > = SEQ_EFFECT ) {
2004-07-21 01:44:27 +00:00
uiDefBut ( block , LABEL , 0 , " Type: Effect " , 10 , 140 , 150 , 20 , 0 , 0 , 0 , 0 , 0 , " " ) ;
2004-09-16 17:57:14 +00:00
uiDefBut ( block , TEX , B_NOP , " Name: " , 10 , 120 , 150 , 19 , last_seq - > name + 2 , 0.0 , 21.0 , 100 , 0 , " " ) ;
2004-06-16 20:25:56 +00:00
2004-08-03 19:36:17 +00:00
if ( last_seq - > type = = SEQ_WIPE ) {
WipeVars * wipe = ( WipeVars * ) last_seq - > effectdata ;
2005-03-24 09:37:06 +00:00
char formatstring [ 256 ] ;
strncpy ( formatstring , " Transition Type %t|Single Wipe%x0|Double Wipe %x1|Iris Wipe %x4|Clock Wipe %x5 " , 255 ) ;
2004-09-16 17:57:14 +00:00
uiDefButS ( block , MENU , SEQ_BUT_EFFECT , formatstring , 10 , 90 , 220 , 22 , & wipe - > wipetype , 0 , 0 , 0 , 0 , " What type of wipe should be performed " ) ;
uiDefButF ( block , NUM , SEQ_BUT_EFFECT , " Blur: " , 10 , 65 , 220 , 22 , & wipe - > edgeWidth , 0.0 , 1.0 , 1 , 2 , " The percent width of the blur edge " ) ;
2004-08-03 19:36:17 +00:00
switch ( wipe - > wipetype ) { /*Skip Types that do not require angle*/
2004-07-12 17:59:42 +00:00
case DO_IRIS_WIPE :
case DO_CLOCK_WIPE :
break ;
default :
2004-09-16 17:57:14 +00:00
uiDefButF ( block , NUM , SEQ_BUT_EFFECT , " Angle: " , 10 , 40 , 220 , 22 , & wipe - > angle , - 90.0 , 90.0 , 1 , 2 , " The Angle of the Edge " ) ;
2004-07-12 17:59:42 +00:00
}
2004-09-16 17:57:14 +00:00
uiDefButS ( block , TOG , SEQ_BUT_EFFECT , " Wipe In " , 10 , 15 , 220 , 22 , & wipe - > forward , 0 , 0 , 0 , 0 , " Controls Primary Direction of Wipe " ) ;
2004-06-18 22:53:06 +00:00
}
2004-06-23 22:11:57 +00:00
else if ( last_seq - > type = = SEQ_GLOW ) {
GlowVars * glow = ( GlowVars * ) last_seq - > effectdata ;
uiDefButF ( block , NUM , SEQ_BUT_EFFECT , " Threshold: " , 10 , 90 , 150 , 19 , & glow - > fMini , 0.0 , 1.0 , 0 , 0 , " Trigger Intensity " ) ;
uiDefButF ( block , NUM , SEQ_BUT_EFFECT , " Clamp: " , 10 , 70 , 150 , 19 , & glow - > fClamp , 0.0 , 1.0 , 0 , 0 , " Brightness limit of intensity " ) ;
uiDefButF ( block , NUM , SEQ_BUT_EFFECT , " Boost factor: " , 10 , 50 , 150 , 19 , & glow - > fBoost , 0.0 , 10.0 , 0 , 0 , " Brightness multiplier " ) ;
uiDefButF ( block , NUM , SEQ_BUT_EFFECT , " Blur distance: " , 10 , 30 , 150 , 19 , & glow - > dDist , 0.5 , 20.0 , 0 , 0 , " Radius of glow effect " ) ;
2004-09-16 17:57:14 +00:00
uiDefButI ( block , NUM , B_NOP , " Quality: " , 10 , 10 , 150 , 19 , & glow - > dQuality , 1.0 , 5.0 , 0 , 0 , " Accuracy of the blur effect " ) ;
uiDefButI ( block , TOG , B_NOP , " Only boost " , 10 , - 10 , 150 , 19 , & glow - > bNoComp , 0.0 , 0.0 , 0 , 0 , " Show the glow buffer only " ) ;
2004-06-23 22:11:57 +00:00
}
2004-06-18 22:53:06 +00:00
2004-06-16 20:25:56 +00:00
}
2004-06-18 15:04:27 +00:00
2004-06-16 20:25:56 +00:00
}
static void seq_blockhandlers ( ScrArea * sa )
{
SpaceSeq * sseq = sa - > spacedata . first ;
short a ;
/* warning; blocks need to be freed each time, handlers dont remove (for ipo moved to drawipospace) */
uiFreeBlocksWin ( & sa - > uiblocks , sa - > win ) ;
for ( a = 0 ; a < SPACE_MAXHANDLER ; a + = 2 ) {
switch ( sseq - > blockhandler [ a ] ) {
case SEQ_HANDLER_PROPERTIES :
seq_panel_properties ( sseq - > blockhandler [ a + 1 ] ) ;
break ;
2004-06-18 15:04:27 +00:00
2004-06-16 20:25:56 +00:00
}
/* clear action value for event */
sseq - > blockhandler [ a + 1 ] = 0 ;
}
uiDrawBlocksPanels ( sa , 0 ) ;
}
2003-03-24 01:46:05 +00:00
void drawseqspace ( ScrArea * sa , void * spacedata )
2002-10-12 11:37:38 +00:00
{
SpaceSeq * sseq ;
Editing * ed ;
Sequence * seq ;
2003-10-22 23:20:44 +00:00
float col [ 3 ] ;
2002-10-12 11:37:38 +00:00
int ofsx , ofsy ;
ed = G . scene - > ed ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
sseq = curarea - > spacedata . first ;
if ( sseq - > mainb = = 1 ) {
2004-12-02 18:12:18 +00:00
draw_image_seq ( curarea ) ;
2002-10-12 11:37:38 +00:00
return ;
}
2004-06-16 20:25:56 +00:00
bwin_clear_viewmat ( sa - > win ) ; /* clear buttons view */
glLoadIdentity ( ) ;
2003-10-22 23:20:44 +00:00
BIF_GetThemeColor3fv ( TH_BACK , col ) ;
2004-11-13 12:55:59 +00:00
if ( ed & & ed - > metastack . first ) glClearColor ( col [ 0 ] , col [ 1 ] , col [ 2 ] - 0.1 , 0.0 ) ;
2003-10-22 23:20:44 +00:00
else glClearColor ( col [ 0 ] , col [ 1 ] , col [ 2 ] , 0.0 ) ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
glClear ( GL_COLOR_BUFFER_BIT ) ;
2005-01-31 18:37:54 +00:00
calc_scrollrcts ( sa , G . v2d , curarea - > winx , curarea - > winy ) ;
2002-10-12 11:37:38 +00:00
if ( curarea - > winx > SCROLLB + 10 & & curarea - > winy > SCROLLH + 10 ) {
2004-06-18 15:04:27 +00:00
if ( G . v2d - > scroll ) {
2003-04-28 14:43:20 +00:00
ofsx = curarea - > winrct . xmin ; /* because of mywin */
2002-10-12 11:37:38 +00:00
ofsy = curarea - > winrct . ymin ;
2004-06-18 15:04:27 +00:00
glViewport ( ofsx + G . v2d - > mask . xmin , ofsy + G . v2d - > mask . ymin , ( ofsx + G . v2d - > mask . xmax - 1 ) - ( ofsx + G . v2d - > mask . xmin ) + 1 , ( ofsy + G . v2d - > mask . ymax - 1 ) - ( ofsy + G . v2d - > mask . ymin ) + 1 ) ;
2002-10-12 11:37:38 +00:00
glScissor ( ofsx + G . v2d - > mask . xmin , ofsy + G . v2d - > mask . ymin , ( ofsx + G . v2d - > mask . xmax - 1 ) - ( ofsx + G . v2d - > mask . xmin ) + 1 , ( ofsy + G . v2d - > mask . ymax - 1 ) - ( ofsy + G . v2d - > mask . ymin ) + 1 ) ;
}
}
myortho2 ( G . v2d - > cur . xmin , G . v2d - > cur . xmax , G . v2d - > cur . ymin , G . v2d - > cur . ymax ) ;
2004-06-18 15:04:27 +00:00
2003-10-22 23:20:44 +00:00
BIF_ThemeColorShade ( TH_BACK , - 20 ) ;
2002-10-12 11:37:38 +00:00
glRectf ( G . v2d - > cur . xmin , 0.0 , G . v2d - > cur . xmax , 1.0 ) ;
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
boundbox_seq ( ) ;
2004-06-18 15:04:27 +00:00
calc_ipogrid ( ) ;
2002-10-12 11:37:38 +00:00
draw_ipogrid ( ) ;
draw_cfra_seq ( ) ;
2003-04-28 14:43:20 +00:00
/* sequences: first deselect */
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
if ( ed ) {
seq = ed - > seqbasep - > first ;
while ( seq ) {
if ( seq - > flag & SELECT ) ; else drawseq ( seq ) ;
seq = seq - > next ;
}
}
ed = G . scene - > ed ;
if ( ed ) {
seq = ed - > seqbasep - > first ;
while ( seq ) {
if ( seq - > flag & SELECT ) drawseq ( seq ) ;
seq = seq - > next ;
}
}
draw_extra_seqinfo ( ) ;
/* restore viewport */
mywinset ( curarea - > win ) ;
2003-10-04 20:35:50 +00:00
/* ortho at pixel level curarea */
2003-11-18 11:22:17 +00:00
myortho2 ( - 0.375 , curarea - > winx - 0.375 , - 0.375 , curarea - > winy - 0.375 ) ;
2003-10-04 20:35:50 +00:00
2002-10-12 11:37:38 +00:00
if ( curarea - > winx > SCROLLB + 10 & & curarea - > winy > SCROLLH + 10 ) {
if ( G . v2d - > scroll ) {
drawscroll ( 0 ) ;
}
}
2004-06-18 15:04:27 +00:00
2003-10-04 20:35:50 +00:00
draw_area_emboss ( sa ) ;
2004-06-16 20:25:56 +00:00
if ( sseq - > mainb = = 0 ) {
/* it is important to end a view in a transform compatible with buttons */
bwin_scalematrix ( sa - > win , sseq - > blockscale , sseq - > blockscale , sseq - > blockscale ) ;
seq_blockhandlers ( sa ) ;
}
2004-06-18 15:04:27 +00:00
2002-10-12 11:37:38 +00:00
curarea - > win_swap = WIN_BACK_OK ;
}