Mixer: Make spatializer view options song global.
This commit is contained in:
parent
cf5c557c2f
commit
9fba8a8577
|
@ -32,6 +32,8 @@
|
||||||
/* 2D Panner widget. Supports various multichannel configurations. */
|
/* 2D Panner widget. Supports various multichannel configurations. */
|
||||||
|
|
||||||
Panner::Point *Panner::drag;
|
Panner::Point *Panner::drag;
|
||||||
|
int Panner::_range_mode = 1;
|
||||||
|
int Panner::_projection_mode = 0;
|
||||||
|
|
||||||
Panner::Panner ( int X, int Y, int W, int H, const char *L ) :
|
Panner::Panner ( int X, int Y, int W, int H, const char *L ) :
|
||||||
Fl_Group( X, Y, W, H, L )
|
Fl_Group( X, Y, W, H, L )
|
||||||
|
@ -51,7 +53,8 @@ Panner::Panner ( int X, int Y, int W, int H, const char *L ) :
|
||||||
o->add("5 Meters",0,0,&ranges[1]);
|
o->add("5 Meters",0,0,&ranges[1]);
|
||||||
o->add("10 Meters",0,0,&ranges[2]);
|
o->add("10 Meters",0,0,&ranges[2]);
|
||||||
o->add("15 Meters",0,0,&ranges[3]);
|
o->add("15 Meters",0,0,&ranges[3]);
|
||||||
o->value(1);
|
o->value(_range_mode);
|
||||||
|
o->callback( cb_mode, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
{ Fl_Choice *o = _projection_choice = new Fl_Choice(X + W - 75,Y + H - 18,75,18,"Projection:");
|
{ Fl_Choice *o = _projection_choice = new Fl_Choice(X + W - 75,Y + H - 18,75,18,"Projection:");
|
||||||
|
@ -62,7 +65,8 @@ Panner::Panner ( int X, int Y, int W, int H, const char *L ) :
|
||||||
o->align(FL_ALIGN_LEFT);
|
o->align(FL_ALIGN_LEFT);
|
||||||
o->add("Spherical");
|
o->add("Spherical");
|
||||||
o->add("Planar");
|
o->add("Planar");
|
||||||
o->value(0);
|
o->value(_projection_mode);
|
||||||
|
o->callback( cb_mode, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
end();
|
end();
|
||||||
|
@ -89,12 +93,29 @@ static int find_numeric_menu_item( const Fl_Menu_Item *menu, int n )
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Panner::cb_mode ( Fl_Widget *w, void *v )
|
||||||
|
{
|
||||||
|
((Panner*)v)->cb_mode( w );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Panner::cb_mode ( Fl_Widget *w )
|
||||||
|
{
|
||||||
|
if ( w == _range_choice )
|
||||||
|
_range_mode = _range_choice->value();
|
||||||
|
else if ( w == _projection_choice )
|
||||||
|
_projection_mode = _projection_choice->value();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Panner::range ( float v )
|
Panner::range ( float v )
|
||||||
{
|
{
|
||||||
int i = find_numeric_menu_item( _range_choice->menu(), v );
|
int i = find_numeric_menu_item( _range_choice->menu(), v );
|
||||||
|
|
||||||
_range_choice->value( i );
|
_range_choice->value( i );
|
||||||
|
|
||||||
|
_range_mode = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** set X, Y, W, and H to the bounding box of point /p/ in screen coords */
|
/** set X, Y, W, and H to the bounding box of point /p/ in screen coords */
|
||||||
|
@ -435,6 +456,8 @@ Panner::handle ( int m )
|
||||||
{
|
{
|
||||||
case FL_ENTER:
|
case FL_ENTER:
|
||||||
case FL_LEAVE:
|
case FL_LEAVE:
|
||||||
|
_projection_choice->value(_projection_mode);
|
||||||
|
_range_choice->value(_range_mode);
|
||||||
redraw();
|
redraw();
|
||||||
return 1;
|
return 1;
|
||||||
case FL_PUSH:
|
case FL_PUSH:
|
||||||
|
|
|
@ -36,6 +36,9 @@ class Panner : public Fl_Group
|
||||||
Fl_Image *_bg_image[2];
|
Fl_Image *_bg_image[2];
|
||||||
void draw_grid( int,int,int,int);
|
void draw_grid( int,int,int,int);
|
||||||
void draw_the_box( int, int, int, int );
|
void draw_the_box( int, int, int, int );
|
||||||
|
|
||||||
|
static int _range_mode;
|
||||||
|
static int _projection_mode;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -168,8 +171,9 @@ private:
|
||||||
void project_polar ( const Point *p, float *X, float *Y, float *S ) const;
|
void project_polar ( const Point *p, float *X, float *Y, float *S ) const;
|
||||||
void project_ortho ( const Point *p, float *X, float *Y, float *S ) const;
|
void project_ortho ( const Point *p, float *X, float *Y, float *S ) const;
|
||||||
|
|
||||||
int _projection;
|
static void cb_mode ( Fl_Widget *w, void *v );
|
||||||
|
void cb_mode ( Fl_Widget *w );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual void draw ( void );
|
virtual void draw ( void );
|
||||||
|
@ -179,12 +183,12 @@ public:
|
||||||
|
|
||||||
enum { POLAR, ORTHO };
|
enum { POLAR, ORTHO };
|
||||||
|
|
||||||
int projection ( void ) const { return _projection_choice->value(); }
|
int projection ( void ) const { return _projection_mode; }
|
||||||
void projection ( int v ) { _projection_choice->value(v); }
|
void projection ( int v ) { _projection_choice->value(v); _projection_mode = v; }
|
||||||
|
|
||||||
Panner ( int X, int Y, int W, int H, const char *L = 0 );
|
Panner ( int X, int Y, int W, int H, const char *L = 0 );
|
||||||
|
|
||||||
float range ( void ) const { return *((int*)_range_choice->mvalue()->user_data()); }
|
float range ( void ) const { return *((int*)_range_choice->menu()[_range_mode].user_data()); }
|
||||||
void range ( float v );
|
void range ( float v );
|
||||||
|
|
||||||
void clear_points ( void ) { _points.clear(); }
|
void clear_points ( void ) { _points.clear(); }
|
||||||
|
|
Loading…
Reference in New Issue