Browse Source

Add a Meter base class, rename VU Meter to DPM.

tags/non-daw-v1.1.0
Jonathan Moore Liles 17 years ago
parent
commit
0101ee43b9
4 changed files with 26 additions and 59 deletions
  1. +11
    -33
      DPM.C
  2. +9
    -20
      DPM.H
  3. +3
    -3
      Makefile
  4. +3
    -3
      Mixer_Strip.fl

VU_Meter.C → DPM.C View File

@@ -17,22 +17,19 @@
/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/*******************************************************************************/ /*******************************************************************************/


/* a VU meter, either horizontal or vertical. Color is a gradient
from min_color() to max_color(). box() is used to draw the
/* a Digital Peak Meter, either horizontal or vertical. Color is a
gradient from min_color() to max_color(). box() is used to draw the
individual 'lights'. division() controls how many 'lights' there individual 'lights'. division() controls how many 'lights' there
are. */
are. value() is volume in dBFS */


#include "VU_Meter.H"
#include "DPM.H"


#include <FL/Fl.H> #include <FL/Fl.H>
#include <FL/fl_draw.H> #include <FL/fl_draw.H>


VU_Meter::VU_Meter ( int X, int Y, int W, int H, const char *L ) :
Fl_Widget( X, Y, W, H, L )
DPM::DPM ( int X, int Y, int W, int H, const char *L ) :
Meter( X, Y, W, H, L )
{ {

_peak = 0.0f;

divisions( 32 ); divisions( 32 );
type( FL_VERTICAL ); type( FL_VERTICAL );


@@ -42,19 +39,17 @@ VU_Meter::VU_Meter ( int X, int Y, int W, int H, const char *L ) :
max_color( FL_RED ); max_color( FL_RED );


box( FL_ROUNDED_BOX ); box( FL_ROUNDED_BOX );

minimum( 0.0f );
maximum( 1.0f );

value( 0.0f );
} }


/* which marks to draw beside meter */
const int marks [] = { -70, -50, -40, -30, -10, -3, 0, 4 };

void void
VU_Meter::draw ( void )
DPM::draw ( void )
{ {
// draw_box( FL_FLAT_BOX, x(), y(), w(), h(), color() ); // draw_box( FL_FLAT_BOX, x(), y(), w(), h(), color() );
int v = pos( value() ); int v = pos( value() );
int pv = pos( _peak );
int pv = pos( peak() );


int bh = h() / _divisions; int bh = h() / _divisions;
int bw = w() / _divisions; int bw = w() / _divisions;
@@ -75,21 +70,4 @@ VU_Meter::draw ( void )
else else
draw_box( box(), x(), y() + h() - (p * bh), w(), bh, c ); draw_box( box(), x(), y() + h() - (p * bh), w(), bh, c );
} }

if ( value() > _peak )
_peak = value();
}


int
VU_Meter::handle ( int m )
{
switch ( m )
{
case FL_PUSH:
reset();
break;
}

return 0;
} }

VU_Meter.H → DPM.H View File

@@ -21,14 +21,10 @@


#include <FL/Fl_Valuator.H> // for FL_HORIZONTAL and FL_VERTICAL #include <FL/Fl_Valuator.H> // for FL_HORIZONTAL and FL_VERTICAL


class VU_Meter : public Fl_Widget
{

float _peak;
#include "Meter.H"


float _value;
float _minimum;
float _maximum;
class DPM : public Meter
{


int _type; int _type;
int _divisions; int _divisions;
@@ -37,27 +33,20 @@ class VU_Meter : public Fl_Widget
Fl_Color _min_color; Fl_Color _min_color;
Fl_Color _max_color; Fl_Color _max_color;


int pos ( float v ) { return ( v / _maximum ) * _divisions; }
int pos ( float v )
{
return deflection( v ) * _divisions;
}


protected: protected:


virtual void draw ( void ); virtual void draw ( void );
virtual int handle ( int m );


public: public:


VU_Meter ( int X, int Y, int W, int H, const char *L = 0 );

void maximum( float v ) { _maximum = v; redraw(); }
float maximum ( void ) const { return _maximum; }

void minimum ( float v ) { _minimum = v; redraw(); }
float minimum ( void ) const { return _minimum; }

void value ( float v ) { if ( pos( v ) != pos( _value ) ) redraw(); _value = v; }
float value ( void ) const { return _value; }
DPM ( int X, int Y, int W, int H, const char *L = 0 );


void reset ( void ) { _peak = 0.0f; }
// void value ( float v ) { if ( pos( v ) != pos( value() ) ) redraw(); Meter::value( v ) }


bool divisions ( void ) const { return _divisions; } bool divisions ( void ) const { return _divisions; }
void divisions ( int v ) { _divisions = v; } void divisions ( int v ) { _divisions = v; }

+ 3
- 3
Makefile View File

@@ -1,5 +1,5 @@


CXXFLAGS=-ggdb -Wall -O0
CXXFLAGS=-ggdb -Wall -O0 -fno-rtti -fno-exceptions
#LIBS=-L/usr/lib/sox -I/usr/include/sox -lsox -lsfx #LIBS=-L/usr/lib/sox -I/usr/include/sox -lsox -lsfx
LIBS=-lsndfile `fltk-config --ldflags` LIBS=-lsndfile `fltk-config --ldflags`
# CXXFLAGS=`fltk-config -cxxflags` # CXXFLAGS=`fltk-config -cxxflags`
@@ -26,8 +26,8 @@ $(OBJS): Makefile
test: $(OBJS) test: $(OBJS)
$(CXX) $(CXXFLAGS) $(LIBS) $(OBJS) -o $@ $(CXX) $(CXXFLAGS) $(LIBS) $(OBJS) -o $@


mixer: Mixer_Strip.o Mixer.o
$(CXX) $(CXXFLAGS) $(LIBS) Mixer_Strip.o Mixer.o -o $@
mixer: Mixer_Strip.o Mixer.o DPM.o
$(CXX) $(CXXFLAGS) $(LIBS) Mixer_Strip.o Mixer.o DPM.o -o $@




ESRCS=Audio_File.C Audio_File_SF.C Loggable.C ESRCS=Audio_File.C Audio_File_SF.C Loggable.C


+ 3
- 3
Mixer_Strip.fl View File

@@ -2,7 +2,7 @@
version 1.0108 version 1.0108
header_name {.H} header_name {.H}
code_name {.C} code_name {.C}
decl {\#include "VU_Meter.H"} {selected public global
decl {\#include "DPM.H"} {public global
} }


widget_class Mixer_Strip {open widget_class Mixer_Strip {open
@@ -42,9 +42,9 @@ widget_class Mixer_Strip {open
xywh {14 195 33 471} type {Vert Knob} color 32 selection_color 1 minimum 1.5 maximum 0 step 0.01 value 1 textsize 14 xywh {14 195 33 471} type {Vert Knob} color 32 selection_color 1 minimum 1.5 maximum 0 step 0.01 value 1 textsize 14
} }
Fl_Box meter { Fl_Box meter {
label VU
label DPM selected
xywh {57 193 55 484} box ROUNDED_BOX selection_color 88 xywh {57 193 55 484} box ROUNDED_BOX selection_color 88
class VU_Meter
class DPM
} }
} }
Fl_Box {} { Fl_Box {} {


Loading…
Cancel
Save