push2: vector, not map
This commit is contained in:
parent
6627d24c2b
commit
06abdb4c4e
@ -38,10 +38,12 @@ Push2::build_maps ()
|
||||
|
||||
boost::shared_ptr<Pad> pad;
|
||||
|
||||
_xy_pad_map.assign (64, boost::shared_ptr<Pad>());
|
||||
|
||||
#define MAKE_PAD(x,y,nn) \
|
||||
pad.reset (new Pad ((x), (y), (nn))); \
|
||||
_nn_pad_map.insert (std::make_pair (pad->extra(), pad)); \
|
||||
_xy_pad_map.insert (std::make_pair (y * 8 + x, pad));
|
||||
_xy_pad_map[y * 8 + x] = pad;
|
||||
|
||||
MAKE_PAD (0, 0, 92);
|
||||
MAKE_PAD (0, 1, 93);
|
||||
|
@ -1906,7 +1906,9 @@ Push2::set_pressure_mode (PressureMode pm)
|
||||
boost::shared_ptr<Push2::Pad>
|
||||
Push2::pad_by_xy (int x, int y)
|
||||
{
|
||||
Push2::PadMap::iterator p = _xy_pad_map.find ((x * 8) +y);
|
||||
assert (p != _xy_pad_map.end());
|
||||
return p->second;
|
||||
vector<boost::shared_ptr<Pad> >::size_type index = (x * 8) + y;
|
||||
if (index >= _xy_pad_map.size()) {
|
||||
return boost::shared_ptr<Pad>();
|
||||
}
|
||||
return _xy_pad_map[index];
|
||||
}
|
||||
|
@ -455,7 +455,6 @@ class Push2 : public ARDOUR::ControlProtocol
|
||||
|
||||
typedef std::map<int,boost::shared_ptr<Pad> > PadMap;
|
||||
PadMap const & nn_pad_map() const { return _nn_pad_map; }
|
||||
PadMap const & xy_pad_map() const { return _xy_pad_map; }
|
||||
|
||||
boost::shared_ptr<Pad> pad_by_xy (int x, int y);
|
||||
|
||||
@ -499,9 +498,9 @@ class Push2 : public ARDOUR::ControlProtocol
|
||||
*/
|
||||
PadMap _nn_pad_map;
|
||||
|
||||
/* map of Pads by x,y duple (computed as (x*8) + y */
|
||||
/* array of Pads by x,y duple (indexed as (x*8) + y */
|
||||
|
||||
PadMap _xy_pad_map;
|
||||
std::vector<boost::shared_ptr<Pad> > _xy_pad_map;
|
||||
|
||||
/* map of Pads by note number they generate (their "filtered" value)
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user