#include <gtkmm/button.h>
#include <gtkmm/radiobutton.h>
+#include "canvas/canvas.h"
+
#include "evoral/Curve.hpp"
#include "ardour/session_handle.h"
#include "ardour_dialog.h"
-#include "canvas.h"
namespace ARDOUR
{
class Crossfade;
}
+namespace ArdourCanvas {
+ class Rectangle;
+ class Line;
+ class Polygon;
+}
+
+namespace ArdourWaveview {
+ class WaveView;
+}
+
class CrossfadeEditor : public ArdourDialog
{
- public:
+public:
CrossfadeEditor (ARDOUR::Session*, boost::shared_ptr<ARDOUR::Crossfade>, double miny, double maxy);
~CrossfadeEditor ();
static const double canvas_border;
- /* these are public so that a caller/subclass can make them do the right thing.
- */
+ /* these are public so that a caller/subclass can make them do the right thing. */
Gtk::Button* cancel_button;
Gtk::Button* ok_button;
struct PresetPoint {
- double x;
- double y;
+ double x;
+ double y;
- PresetPoint (double a, double b)
- : x (a), y (b) {}
+ PresetPoint (double a, double b)
+ : x (a), y (b) {}
};
struct Preset : public std::list<PresetPoint> {
- const char* name;
- const char* image_name;
+ const char* name;
+ const char* image_name;
- Preset (const char* n, const char* x) : name (n), image_name (x) {}
+ Preset (const char* n, const char* x) : name (n), image_name (x) {}
};
typedef std::list<Preset*> Presets;
static Presets* fade_in_presets;
static Presets* fade_out_presets;
- protected:
+protected:
bool on_key_press_event (GdkEventKey*);
bool on_key_release_event (GdkEventKey*);
- private:
+private:
boost::shared_ptr<ARDOUR::Crossfade> xfade;
Gtk::VBox vpacker;
struct Point {
- ~Point();
+ ~Point();
- ArdourCanvas::SimpleRect* box;
- ArdourCanvas::Line* curve;
- double x;
- double y;
+ ArdourCanvas::Rectangle* box;
+ ArdourCanvas::PolyLine* curve;
+ double x;
+ double y;
- static const int32_t size;
+ static const int32_t size;
- void move_to (double x, double y, double xfract, double yfract);
+ void move_to (double x, double y, double xfract, double yfract);
};
struct PointSorter {
- bool operator() (const CrossfadeEditor::Point* a, const CrossfadeEditor::Point *b) {
- return a->x < b->x;
- }
+ bool operator() (const CrossfadeEditor::Point* a, const CrossfadeEditor::Point *b) {
+ return a->x < b->x;
+ }
};
- ArdourCanvas::SimpleRect* toplevel;
- ArdourCanvas::Canvas* canvas;
+ ArdourCanvas::Rectangle* toplevel;
+ ArdourCanvas::GtkCanvas* canvas;
struct Half {
- ArdourCanvas::Line* line;
- ArdourCanvas::Polygon* shading;
- std::list<Point*> points;
- ARDOUR::AutomationList normative_curve; /* 0 - 1.0, linear */
- ARDOUR::AutomationList gain_curve; /* 0 - 2.0, gain mapping */
- std::vector<ArdourCanvas::WaveView*> waves;
-
- Half();
+ ArdourCanvas::PolyLine* line;
+ ArdourCanvas::Polygon* shading;
+ std::list<Point*> points;
+ ARDOUR::AutomationList normative_curve; /* 0 - 1.0, linear */
+ ARDOUR::AutomationList gain_curve; /* 0 - 2.0, gain mapping */
+ std::vector<ArdourWaveView::WaveView*> waves;
+
+ Half();
};
enum WhichFade {