@@ -14,6 +14,9 @@ decl {\#include "Fl_Scalepack.H"} {public global | |||
decl {\#include "Fl_Flip_Button.H"} {public global | |||
} | |||
decl {\#include "Fl_Arc_Dial.H"} {public global | |||
} | |||
widget_class Mixer_Strip {open | |||
xywh {1051 42 124 816} type Double box UP_FRAME color 32 selection_color 63 resizable | |||
code0 {size( 120, h() );} visible | |||
@@ -24,7 +27,7 @@ widget_class Mixer_Strip {open | |||
} | |||
Fl_Box {} { | |||
label {<Oscilloscope>} | |||
xywh {7 33 110 104} box UP_FRAME | |||
xywh {7 33 110 104} box UP_FRAME hide | |||
} | |||
Fl_Group {} {open | |||
xywh {7 143 110 25} | |||
@@ -83,11 +86,27 @@ widget_class Mixer_Strip {open | |||
} | |||
} | |||
Fl_Box {} { | |||
label Pan selected | |||
label Pan | |||
xywh {6 693 110 90} box THIN_UP_BOX labelsize 11 align 1 | |||
class Panner | |||
} | |||
Fl_Progress {} { | |||
xywh {8 789 110 21} labeltype NO_LABEL | |||
} | |||
Fl_Dial {} { | |||
xywh {10 36 41 39} box OVAL_FRAME color 52 selection_color 55 | |||
class Fl_Arc_Dial | |||
} | |||
Fl_Dial {} {selected | |||
xywh {10 80 41 39} box OVAL_FRAME color 52 selection_color 55 | |||
class Fl_Arc_Dial | |||
} | |||
Fl_Dial {} { | |||
xywh {73 36 41 39} box OVAL_FRAME color 52 selection_color 55 | |||
class Fl_Arc_Dial | |||
} | |||
Fl_Dial {} { | |||
xywh {73 80 41 39} box OVAL_FRAME color 52 selection_color 55 | |||
class Fl_Arc_Dial | |||
} | |||
} |
@@ -105,28 +105,28 @@ Panner::event_point ( void ) | |||
return NULL; | |||
} | |||
#if 0 | |||
/* translate angle /a/ into x/y coords and place the result in /X/ and /Y/ */ | |||
void | |||
Panner::angle_to_axes ( float a, float *X, float *Y ) | |||
Panner::Point | |||
Panner::angle_to_axes ( float a ) | |||
{ | |||
Point p; | |||
float A; | |||
// int X, Y; | |||
a -= 90; | |||
a = 360 - a; | |||
A = a * ( M_PI / 180 ); | |||
double A; | |||
float r = tw / 2; | |||
A = a * ( M_PI / 180 ); | |||
X = r * cos( A ); | |||
Y = -r * sin( A ); | |||
// const float r = tw / 2; | |||
/* fl_push_matrix(); */ | |||
const double r = 1.0f; | |||
/* fl_translate( (tx + (tw / 2)) + X, (ty + (th / 2)) + Y ); */ | |||
p.x = r * cos( A ); | |||
p.y = -r * sin( A ); | |||
return p; | |||
} | |||
#endif | |||
void | |||
Panner::draw ( void ) | |||
@@ -161,9 +161,13 @@ Panner::draw ( void ) | |||
a -= 90; | |||
a = 360 - a; | |||
/* fl_color( FL_WHITE ); */ | |||
/* /\* fl_color( FL_WHITE ); *\/ */ | |||
/* fl_line_style( FL_SOLID, 10 ); */ | |||
/* fl_arc( tx, ty, tw, th, a - 20, a + 20 ); */ | |||
/* fl_line_style( FL_SOLID, 0 ); */ | |||
/* fl_arc( tx, ty, tw, th, a - 3, a + 3 ); */ | |||
Point p = angle_to_axes( a ); | |||
// printf( "%d: %f, %f\n", i, p.x, p.y ); | |||
{ | |||
float A; | |||
@@ -245,6 +249,8 @@ Panner::handle ( int m ) | |||
drag->x = (float)(X / (w() / 2)) - 1.0f; | |||
drag->y = (float)(Y / (h() / 2)) - 1.0f; | |||
printf( "%f\n", drag->distance( angle_to_axes( _configs[ _outs ][ 0 ] ) ) ); | |||
redraw(); | |||
return 1; | |||
@@ -23,6 +23,8 @@ | |||
#include <FL/fl_draw.H> | |||
#include <FL/Fl.H> | |||
#include <math.h> | |||
#include <vector> | |||
using namespace std; | |||
@@ -36,6 +38,14 @@ class Panner : public Fl_Widget | |||
Point ( ) : x( 0.0f ), y( 0.0f ) { } | |||
Point ( float X, float Y ) : x( X ), y( Y ) { } | |||
/* return the distance between the point and that referenced by /p/ */ | |||
float | |||
distance ( const Point &p ) | |||
{ | |||
return sqrt( pow( x - p.x, 2 ) + pow( y - p.y, 2 ) ); | |||
} | |||
}; | |||
@@ -59,6 +69,7 @@ class Panner : public Fl_Widget | |||
} | |||
Point * event_point ( void ); | |||
Point angle_to_axes ( float a ); | |||
public: | |||