3 #ifndef SPECTMORPH_SAMPLE_VIEW_HH 4 #define SPECTMORPH_SAMPLE_VIEW_HH 7 #include <bse/bseblockutils.hh> 27 virtual size_t count() = 0;
28 virtual EditMarkerType type (
size_t marker) = 0;
29 virtual float position (
size_t marker) = 0;
30 virtual bool valid (
size_t marker) = 0;
31 virtual void set_position (
size_t marker,
float new_position) = 0;
32 virtual void clear (
size_t marker) = 0;
36 std::vector<float> signal;
43 EditMarkerType m_edit_marker_type;
44 bool button_1_pressed;
47 void mousePressEvent (QMouseEvent *event);
48 void move_marker (
int x);
49 void mouseMoveEvent (QMouseEvent *event);
50 void mouseReleaseEvent (QMouseEvent *event);
55 void set_zoom (
double hzoom,
double vzoom);
56 void paintEvent (QPaintEvent *event);
58 void set_edit_marker_type (EditMarkerType marker_type);
59 EditMarkerType edit_marker_type();
61 template<
class Pa
inter>
static void 62 draw_signal (std::vector<float>& signal, Painter& painter,
const QRect& rect,
int height,
double vz,
double hz)
66 double last_value = 0;
68 for (
int x = rect.x(); x < rect.x() + rect.width(); x++)
71 int i1 = (x + 1) / hz + 1;
75 if (i0 <
int (signal.size()) && i0 >= 0 && i1 <
int (signal.size() + 1) && i1 > 0)
77 painter.drawLine (last_x, (height / 2) + last_value * vz, x, (height / 2) + signal[i0] * vz);
79 float min_value, max_value;
80 Bse::Block::range (i1 - i0, &signal[i0], min_value, max_value);
82 painter.drawLine (x, (height / 2) + min_value * vz, x, (height / 2) + max_value * vz);
85 last_value = signal[i1 - 1];
93 void mouse_time_changed (
int pos);
Audio sample containing many blocks.
Definition: smaudio.hh:79
Definition: smsampleview.hh:25
Definition: smaudio.hh:15
Definition: smsampleview.hh:13