}
-void
-AudioPlot::search (map<int, PointList> const & search, wxMouseEvent const & ev, double& min_dist, Point& min_point) const
-{
- for (auto const& i: search) {
- for (auto const& j: i.second) {
- double const dist = pow(ev.GetX() - j.draw.x, 2) + pow(ev.GetY() - j.draw.y, 2);
- if (dist < min_dist) {
- min_dist = dist;
- min_point = j;
- }
- }
- }
-}
-
-
void
AudioPlot::left_down ()
{
double min_dist = DBL_MAX;
Point min_point;
- search (_rms, ev, min_dist, min_point);
- search (_peak, ev, min_dist, min_point);
+ auto search = [this](map<int, PointList> const & search, wxMouseEvent const & ev, double& min_dist, Point& min_point) {
+ for (auto const& i: search) {
+ if (_channel_visible[i.first]) {
+ for (auto const& j: i.second) {
+ double const dist = pow(ev.GetX() - j.draw.x, 2) + pow(ev.GetY() - j.draw.y, 2);
+ if (dist < min_dist) {
+ min_dist = dist;
+ min_point = j;
+ }
+ }
+ }
+ }
+ };
+
+ if (_type_visible[AudioPoint::RMS]) {
+ search (_rms, ev, min_dist, min_point);
+ }
+ if (_type_visible[AudioPoint::PEAK]) {
+ search (_peak, ev, min_dist, min_point);
+ }
_cursor = {};
void left_down ();
void mouse_moved (wxMouseEvent& ev);
void mouse_leave (wxMouseEvent& ev);
- void search (std::map<int, PointList> const & search, wxMouseEvent const & ev, double& min_dist, Point& min_point) const;
std::weak_ptr<FilmViewer> _viewer;
std::shared_ptr<AudioAnalysis> _analysis;
wxString _message;
float _gain_correction;
+ /** peak values keyed by channel */
mutable std::map<int, PointList> _peak;
+ /** RMS values keyed by channel */
mutable std::map<int, PointList> _rms;
boost::optional<Point> _cursor;