Some refactoring (getting rid of an unused attribute)

This commit is contained in:
Matthias Koefferlein 2025-08-15 17:36:00 +02:00
parent 5bd74b73bb
commit 437c48c1fb
6 changed files with 72 additions and 77 deletions

View File

@ -1410,8 +1410,8 @@ Service::begin_move (lay::Editable::MoveMode mode, const db::DPoint &p, lay::ang
double dmin = std::numeric_limits <double>::max (); double dmin = std::numeric_limits <double>::max ();
const ant::Object *robj_min = 0; const ant::Object *robj_min = 0;
for (std::map<obj_iterator, unsigned int>::const_iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
const ant::Object *robj = dynamic_cast<const ant::Object *> ((*r->first).ptr ()); const ant::Object *robj = dynamic_cast<const ant::Object *> ((*r)->ptr ());
if (robj) { if (robj) {
double d; double d;
if (is_selected (*robj, p, l, d)) { if (is_selected (*robj, p, l, d)) {
@ -1425,9 +1425,9 @@ Service::begin_move (lay::Editable::MoveMode mode, const db::DPoint &p, lay::ang
// further investigate what part to drag // further investigate what part to drag
for (std::map<obj_iterator, unsigned int>::const_iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
obj_iterator ri = r->first; obj_iterator ri = *r;
const ant::Object *robj = dynamic_cast <const ant::Object *> ((*ri).ptr ()); const ant::Object *robj = dynamic_cast <const ant::Object *> ((*ri).ptr ());
if (robj && (! robj_min || robj == robj_min)) { if (robj && (! robj_min || robj == robj_min)) {
@ -1435,7 +1435,7 @@ Service::begin_move (lay::Editable::MoveMode mode, const db::DPoint &p, lay::ang
// found anything: make the moved ruler the selection // found anything: make the moved ruler the selection
clear_selection (); clear_selection ();
m_selected.insert (std::make_pair (ri, 0)); m_selected.insert (ri);
m_current = *robj; m_current = *robj;
m_original = m_current; m_original = m_current;
m_rulers.push_back (new ant::View (this, &m_current, true)); m_rulers.push_back (new ant::View (this, &m_current, true));
@ -1492,7 +1492,7 @@ Service::begin_move (lay::Editable::MoveMode mode, const db::DPoint &p, lay::ang
// found anything: make the moved ruler the selection // found anything: make the moved ruler the selection
clear_selection (); clear_selection ();
m_selected.insert (std::make_pair (mp_view->annotation_shapes ().iterator_from_pointer (&*r), 0)); m_selected.insert (mp_view->annotation_shapes ().iterator_from_pointer (&*r));
m_current = *robj; m_current = *robj;
m_original = m_current; m_original = m_current;
m_rulers.push_back (new ant::View (this, &m_current, true)); m_rulers.push_back (new ant::View (this, &m_current, true));
@ -1667,16 +1667,16 @@ Service::end_move (const db::DPoint &, lay::angle_constraint_type)
if (m_move_mode == MoveSelected) { if (m_move_mode == MoveSelected) {
// replace the rulers that were moved: // replace the rulers that were moved:
for (std::map<obj_iterator, unsigned int>::const_iterator s = m_selected.begin (); s != m_selected.end (); ++s) { for (auto s = m_selected.begin (); s != m_selected.end (); ++s) {
const ant::Object *robj = dynamic_cast<const ant::Object *> (s->first->ptr ()); const ant::Object *robj = dynamic_cast<const ant::Object *> ((*s)->ptr ());
if (robj) { if (robj) {
// compute moved object and replace // compute moved object and replace
ant::Object *rnew = new ant::Object (*robj); ant::Object *rnew = new ant::Object (*robj);
rnew->transform (m_trans); rnew->transform (m_trans);
int new_id = rnew->id (); int new_id = rnew->id ();
mp_view->annotation_shapes ().replace (s->first, db::DUserObject (rnew)); mp_view->annotation_shapes ().replace (*s, db::DUserObject (rnew));
annotation_changed_event (new_id); annotation_changed_event (new_id);
} }
@ -1690,7 +1690,7 @@ Service::end_move (const db::DPoint &, lay::angle_constraint_type)
// replace the ruler that was moved // replace the ruler that was moved
m_current.clean_points (); m_current.clean_points ();
mp_view->annotation_shapes ().replace (m_selected.begin ()->first, db::DUserObject (new ant::Object (m_current))); mp_view->annotation_shapes ().replace (*m_selected.begin (), db::DUserObject (new ant::Object (m_current)));
annotation_changed_event (m_current.id ()); annotation_changed_event (m_current.id ());
// clear the selection (that was artifically created before) // clear the selection (that was artifically created before)
@ -1717,9 +1717,8 @@ Service::selection_to_view ()
} }
m_rulers.clear (); m_rulers.clear ();
m_rulers.reserve (m_selected.size ()); m_rulers.reserve (m_selected.size ());
for (std::map<obj_iterator, unsigned int>::iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
r->second = (unsigned int) m_rulers.size (); const ant::Object *robj = dynamic_cast<const ant::Object *> ((*r)->ptr ());
const ant::Object *robj = dynamic_cast<const ant::Object *> (r->first->ptr ());
m_rulers.push_back (new ant::View (this, robj, true /*selected*/)); m_rulers.push_back (new ant::View (this, robj, true /*selected*/));
} }
} }
@ -1728,8 +1727,8 @@ db::DBox
Service::selection_bbox () Service::selection_bbox ()
{ {
db::DBox box; db::DBox box;
for (std::map<obj_iterator, unsigned int>::iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
const ant::Object *robj = dynamic_cast<const ant::Object *> (r->first->ptr ()); const ant::Object *robj = dynamic_cast<const ant::Object *> ((*r)->ptr ());
if (robj) { if (robj) {
box += robj->box (); box += robj->box ();
} }
@ -1741,16 +1740,16 @@ void
Service::transform (const db::DCplxTrans &trans) Service::transform (const db::DCplxTrans &trans)
{ {
// replace the rulers that were transformed: // replace the rulers that were transformed:
for (std::map<obj_iterator, unsigned int>::const_iterator s = m_selected.begin (); s != m_selected.end (); ++s) { for (auto s = m_selected.begin (); s != m_selected.end (); ++s) {
const ant::Object *robj = dynamic_cast<const ant::Object *> (s->first->ptr ()); const ant::Object *robj = dynamic_cast<const ant::Object *> ((*s)->ptr ());
if (robj) { if (robj) {
// compute transformed object and replace // compute transformed object and replace
int id = robj->id (); int id = robj->id ();
ant::Object *rnew = new ant::Object (*robj); ant::Object *rnew = new ant::Object (*robj);
rnew->transform (trans); rnew->transform (trans);
mp_view->annotation_shapes ().replace (s->first, db::DUserObject (rnew)); mp_view->annotation_shapes ().replace (*s, db::DUserObject (rnew));
annotation_changed_event (id); annotation_changed_event (id);
} }
@ -2173,9 +2172,8 @@ void
Service::copy_selected () Service::copy_selected ()
{ {
// extract all selected rulers and paste in "micron" space // extract all selected rulers and paste in "micron" space
for (std::map<obj_iterator, unsigned int>::iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
r->second = (unsigned int) m_rulers.size (); const ant::Object *robj = dynamic_cast<const ant::Object *> ((*r)->ptr ());
const ant::Object *robj = dynamic_cast<const ant::Object *> (r->first->ptr ());
if (robj) { if (robj) {
db::Clipboard::instance () += new db::ClipboardValue<ant::Object> (*robj); db::Clipboard::instance () += new db::ClipboardValue<ant::Object> (*robj);
} }
@ -2212,7 +2210,7 @@ Service::paste ()
if (! new_objects.empty ()) { if (! new_objects.empty ()) {
for (auto r = new_objects.begin (); r != new_objects.end (); ++r) { for (auto r = new_objects.begin (); r != new_objects.end (); ++r) {
m_selected.insert (std::make_pair (mp_view->annotation_shapes ().iterator_from_pointer (*r), 0)); m_selected.insert (mp_view->annotation_shapes ().iterator_from_pointer (*r));
} }
selection_to_view (); selection_to_view ();
@ -2240,8 +2238,8 @@ Service::del_selected ()
// positions will hold a set of iterators that are to be erased // positions will hold a set of iterators that are to be erased
std::vector <lay::AnnotationShapes::iterator> positions; std::vector <lay::AnnotationShapes::iterator> positions;
positions.reserve (m_selected.size ()); positions.reserve (m_selected.size ());
for (std::map<obj_iterator, unsigned int>::iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
positions.push_back (r->first); positions.push_back (*r);
} }
// clear selection // clear selection
@ -2276,7 +2274,7 @@ Service::select (obj_iterator obj, lay::Editable::SelectionMode mode)
if (mode == lay::Editable::Replace || mode == lay::Editable::Add) { if (mode == lay::Editable::Replace || mode == lay::Editable::Add) {
// select // select
if (m_selected.find (obj) == m_selected.end ()) { if (m_selected.find (obj) == m_selected.end ()) {
m_selected.insert (std::make_pair (obj, 0)); m_selected.insert (obj);
return true; return true;
} }
} else if (mode == lay::Editable::Reset) { } else if (mode == lay::Editable::Reset) {
@ -2290,7 +2288,7 @@ Service::select (obj_iterator obj, lay::Editable::SelectionMode mode)
if (m_selected.find (obj) != m_selected.end ()) { if (m_selected.find (obj) != m_selected.end ()) {
m_selected.erase (obj); m_selected.erase (obj);
} else { } else {
m_selected.insert (std::make_pair (obj, 0)); m_selected.insert (obj);
} }
return true; return true;
} }
@ -2312,7 +2310,7 @@ Service::click_proximity (const db::DPoint &pos, lay::Editable::SelectionMode mo
// for single-point selections either exclude the current selection or the // for single-point selections either exclude the current selection or the
// accumulated previous selection from the search. // accumulated previous selection from the search.
const std::map<obj_iterator, unsigned int> *exclude = 0; const std::set<obj_iterator> *exclude = 0;
if (mode == lay::Editable::Replace) { if (mode == lay::Editable::Replace) {
exclude = &m_previous_selection; exclude = &m_previous_selection;
} else if (mode == lay::Editable::Add) { } else if (mode == lay::Editable::Add) {
@ -2493,7 +2491,7 @@ Service::transient_to_selection ()
for (lay::AnnotationShapes::iterator r = mp_view->annotation_shapes ().begin (); r != mp_view->annotation_shapes ().end (); ++r) { for (lay::AnnotationShapes::iterator r = mp_view->annotation_shapes ().begin (); r != mp_view->annotation_shapes ().end (); ++r) {
const ant::Object *robj = dynamic_cast <const ant::Object *> (r->ptr ()); const ant::Object *robj = dynamic_cast <const ant::Object *> (r->ptr ());
if (robj == mp_transient_ruler->ruler ()) { if (robj == mp_transient_ruler->ruler ()) {
m_selected.insert (std::make_pair (r, 0)); m_selected.insert (r);
selection_to_view (); selection_to_view ();
return; return;
} }
@ -2523,7 +2521,7 @@ Service::select (const db::DBox &box, lay::Editable::SelectionMode mode)
// for single-point selections either exclude the current selection or the // for single-point selections either exclude the current selection or the
// accumulated previous selection from the search. // accumulated previous selection from the search.
const std::map<obj_iterator, unsigned int> *exclude = 0; const std::set<obj_iterator> *exclude = 0;
if (mode == lay::Editable::Replace) { if (mode == lay::Editable::Replace) {
exclude = &m_previous_selection; exclude = &m_previous_selection;
} else if (mode == lay::Editable::Add) { } else if (mode == lay::Editable::Add) {
@ -2605,7 +2603,7 @@ Service::select (const db::DBox &box, lay::Editable::SelectionMode mode)
// select the one that was found // select the one that was found
if (any_selected) { if (any_selected) {
select (mp_view->annotation_shapes ().iterator_from_pointer (&*rmin), mode); select (mp_view->annotation_shapes ().iterator_from_pointer (&*rmin), mode);
m_previous_selection.insert (std::make_pair (mp_view->annotation_shapes ().iterator_from_pointer (&*rmin), mode)); m_previous_selection.insert (mp_view->annotation_shapes ().iterator_from_pointer (&*rmin));
needs_update = true; needs_update = true;
} }
@ -2667,8 +2665,8 @@ Service::get_selection (std::vector <obj_iterator> &sel) const
sel.reserve (m_selected.size ()); sel.reserve (m_selected.size ());
// positions will hold a set of iterators that are to be erased // positions will hold a set of iterators that are to be erased
for (std::map<obj_iterator, unsigned int>::const_iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
sel.push_back (r->first); sel.push_back (*r);
} }
} }
@ -2677,7 +2675,7 @@ Service::set_selection (const std::vector<obj_iterator> &selection)
{ {
m_selected.clear (); m_selected.clear ();
for (auto i = selection.begin (); i != selection.end (); ++i) { for (auto i = selection.begin (); i != selection.end (); ++i) {
m_selected.insert (std::make_pair (*i, 0)); m_selected.insert (*i);
} }
selection_to_view (); selection_to_view ();

View File

@ -393,7 +393,7 @@ public:
/** /**
* @brief Direct access to the selection * @brief Direct access to the selection
*/ */
const std::map<obj_iterator, unsigned int> &selection () const const std::set<obj_iterator> &selection () const
{ {
return m_selected; return m_selected;
} }
@ -563,9 +563,9 @@ private:
// and the moved rules in move mode // and the moved rules in move mode
std::vector<ant::View *> m_rulers; std::vector<ant::View *> m_rulers;
// The selection // The selection
std::map<obj_iterator, unsigned int> m_selected; std::set<obj_iterator> m_selected;
// The previous selection // The previous selection
std::map<obj_iterator, unsigned int> m_previous_selection; std::set<obj_iterator> m_previous_selection;
// The reference point in move mode // The reference point in move mode
db::DPoint m_p1; db::DPoint m_p1;
// The transformation in MoveSelection mode // The transformation in MoveSelection mode

View File

@ -1263,7 +1263,7 @@ class AnnotationSelectionIterator
{ {
public: public:
typedef AnnotationRef value_type; typedef AnnotationRef value_type;
typedef std::map<ant::Service::obj_iterator, unsigned int>::const_iterator iterator_type; typedef std::set<ant::Service::obj_iterator>::const_iterator iterator_type;
typedef void pointer; typedef void pointer;
typedef value_type reference; typedef value_type reference;
typedef std::forward_iterator_tag iterator_category; typedef std::forward_iterator_tag iterator_category;
@ -1292,7 +1292,7 @@ public:
reference operator* () const reference operator* () const
{ {
return value_type (*(static_cast<const ant::Object *> (m_iter->first->ptr ())), m_services[m_service]->view ()); return value_type (*(static_cast<const ant::Object *> ((*m_iter)->ptr ())), m_services[m_service]->view ());
} }
private: private:

View File

@ -1272,7 +1272,7 @@ class SelectionIterator
{ {
public: public:
typedef ImageRef value_type; typedef ImageRef value_type;
typedef std::map<img::Service::obj_iterator, unsigned int>::const_iterator iterator_type; typedef std::set<img::Service::obj_iterator>::const_iterator iterator_type;
typedef void pointer; typedef void pointer;
typedef value_type reference; typedef value_type reference;
typedef std::forward_iterator_tag iterator_category; typedef std::forward_iterator_tag iterator_category;
@ -1301,7 +1301,7 @@ public:
value_type operator* () const value_type operator* () const
{ {
return value_type (*(dynamic_cast<const img::Object *> (m_iter->first->ptr ())), m_services[m_service]->view ()); return value_type (*(dynamic_cast<const img::Object *> ((*m_iter)->ptr ())), m_services[m_service]->view ());
} }
private: private:

View File

@ -609,11 +609,11 @@ Service::begin_move (lay::Editable::MoveMode mode, const db::DPoint &p, lay::ang
} else if (mode == lay::Editable::Partial) { } else if (mode == lay::Editable::Partial) {
// test, whether we are moving a handle of one selected object // test, whether we are moving a handle of one selected object
for (std::map<obj_iterator, unsigned int>::const_iterator s = m_selected.begin (); s != m_selected.end (); ++s) { for (auto s = m_selected.begin (); s != m_selected.end (); ++s) {
MoveMode mm = move_none; MoveMode mm = move_none;
size_t ml = 0; size_t ml = 0;
obj_iterator si = s->first; obj_iterator si = *s;
const img::Object *iobj = dynamic_cast <const img::Object *> ((*si).ptr ()); const img::Object *iobj = dynamic_cast <const img::Object *> ((*si).ptr ());
if (iobj && dragging_what (iobj, search_dbox, mm, ml, m_p1) && mm != move_all) { if (iobj && dragging_what (iobj, search_dbox, mm, ml, m_p1) && mm != move_all) {
@ -624,7 +624,7 @@ Service::begin_move (lay::Editable::MoveMode mode, const db::DPoint &p, lay::ang
// found a handle of one of the selected object: make the moved image the selection // found a handle of one of the selected object: make the moved image the selection
clear_selection (); clear_selection ();
m_selected.insert (std::make_pair (si, 0)); m_selected.insert (si);
m_current = *iobj; m_current = *iobj;
m_initial = m_current; m_initial = m_current;
m_selected_image_views.push_back (new img::View (this, &m_current, img::View::mode_transient_move)); m_selected_image_views.push_back (new img::View (this, &m_current, img::View::mode_transient_move));
@ -661,7 +661,7 @@ Service::begin_move (lay::Editable::MoveMode mode, const db::DPoint &p, lay::ang
// found anything: make the moved image the selection // found anything: make the moved image the selection
clear_selection (); clear_selection ();
m_selected.insert (std::make_pair (mp_view->annotation_shapes ().iterator_from_pointer (robj), 0)); m_selected.insert (mp_view->annotation_shapes ().iterator_from_pointer (robj));
m_current = *iobj; m_current = *iobj;
m_initial = m_current; m_initial = m_current;
m_selected_image_views.push_back (new img::View (this, &m_current, img::View::mode_transient_move)); m_selected_image_views.push_back (new img::View (this, &m_current, img::View::mode_transient_move));
@ -865,15 +865,15 @@ Service::end_move (const db::DPoint &, lay::angle_constraint_type)
if (m_move_mode == move_selected) { if (m_move_mode == move_selected) {
// replace the images that were moved: // replace the images that were moved:
for (std::map<obj_iterator, unsigned int>::const_iterator s = m_selected.begin (); s != m_selected.end (); ++s) { for (auto s = m_selected.begin (); s != m_selected.end (); ++s) {
const img::Object *iobj = dynamic_cast<const img::Object *> (s->first->ptr ()); const img::Object *iobj = dynamic_cast<const img::Object *> ((*s)->ptr ());
// compute moved object and replace // compute moved object and replace
// KLUDGE: this creates a copy of the data! // KLUDGE: this creates a copy of the data!
img::Object *inew = new img::Object (*iobj); img::Object *inew = new img::Object (*iobj);
inew->transform (m_trans); inew->transform (m_trans);
int id = obj2id (mp_view->annotation_shapes ().replace (s->first, db::DUserObject (inew))); int id = obj2id (mp_view->annotation_shapes ().replace (*s, db::DUserObject (inew)));
image_changed_event (id); image_changed_event (id);
@ -886,7 +886,7 @@ Service::end_move (const db::DPoint &, lay::angle_constraint_type)
// replace the image that was moved // replace the image that was moved
img::Object *inew = new img::Object (m_current); img::Object *inew = new img::Object (m_current);
int id = obj2id (mp_view->annotation_shapes ().replace (m_selected.begin ()->first, db::DUserObject (inew))); int id = obj2id (mp_view->annotation_shapes ().replace (*m_selected.begin (), db::DUserObject (inew)));
image_changed_event (id); image_changed_event (id);
// clear the selection (that was artificially created before) // clear the selection (that was artificially created before)
@ -900,7 +900,7 @@ Service::end_move (const db::DPoint &, lay::angle_constraint_type)
// replace the image that was moved // replace the image that was moved
img::Object *inew = new img::Object (m_current); img::Object *inew = new img::Object (m_current);
int id = obj2id (mp_view->annotation_shapes ().replace (m_selected.begin ()->first, db::DUserObject (inew))); int id = obj2id (mp_view->annotation_shapes ().replace (*m_selected.begin (), db::DUserObject (inew)));
image_changed_event (id); image_changed_event (id);
// clear the selection (that was artificially created before) // clear the selection (that was artificially created before)
@ -919,7 +919,7 @@ Service::end_move (const db::DPoint &, lay::angle_constraint_type)
} }
const db::DUserObject * const db::DUserObject *
Service::find_image (const db::DPoint &p, const db::DBox &search_box, double l, double &dmin, const std::map<img::Service::obj_iterator, unsigned int> *exclude) Service::find_image (const db::DPoint &p, const db::DBox &search_box, double l, double &dmin, const std::set<img::Service::obj_iterator> *exclude)
{ {
if (! m_images_visible) { if (! m_images_visible) {
return 0; return 0;
@ -967,9 +967,8 @@ Service::selection_to_view (img::View::Mode mode)
m_selected_image_views.clear (); m_selected_image_views.clear ();
m_selected_image_views.reserve (m_selected.size ()); m_selected_image_views.reserve (m_selected.size ());
for (std::map<obj_iterator, unsigned int>::iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
r->second = (unsigned int) m_selected_image_views.size (); m_selected_image_views.push_back (new img::View (this, *r, mode));
m_selected_image_views.push_back (new img::View (this, r->first, mode));
} }
} }
@ -977,8 +976,8 @@ db::DBox
Service::selection_bbox () Service::selection_bbox ()
{ {
db::DBox box; db::DBox box;
for (std::map<obj_iterator, unsigned int>::iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
const img::Object *iobj = dynamic_cast<const img::Object *> (r->first->ptr ()); const img::Object *iobj = dynamic_cast<const img::Object *> ((*r)->ptr ());
if (iobj) { if (iobj) {
box += iobj->box (); box += iobj->box ();
} }
@ -990,14 +989,14 @@ void
Service::transform (const db::DCplxTrans &trans) Service::transform (const db::DCplxTrans &trans)
{ {
// replace the images that were transformed: // replace the images that were transformed:
for (std::map<obj_iterator, unsigned int>::const_iterator s = m_selected.begin (); s != m_selected.end (); ++s) { for (auto s = m_selected.begin (); s != m_selected.end (); ++s) {
const img::Object *iobj = dynamic_cast<const img::Object *> (s->first->ptr ()); const img::Object *iobj = dynamic_cast<const img::Object *> ((*s)->ptr ());
// compute transformed object and replace // compute transformed object and replace
img::Object *inew = new img::Object (*iobj); img::Object *inew = new img::Object (*iobj);
inew->transform (trans); inew->transform (trans);
int id = obj2id (mp_view->annotation_shapes ().replace (s->first, db::DUserObject (inew))); int id = obj2id (mp_view->annotation_shapes ().replace (*s, db::DUserObject (inew)));
image_changed_event (id); image_changed_event (id);
} }
@ -1037,9 +1036,8 @@ void
Service::copy_selected () Service::copy_selected ()
{ {
// extract all selected images and paste in "micron" space // extract all selected images and paste in "micron" space
for (std::map<obj_iterator, unsigned int>::iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
r->second = (unsigned int) m_selected_image_views.size (); const img::Object *iobj = dynamic_cast<const img::Object *> ((*r)->ptr ());
const img::Object *iobj = dynamic_cast<const img::Object *> (r->first->ptr ());
db::Clipboard::instance () += new db::ClipboardValue<img::Object> (*iobj); db::Clipboard::instance () += new db::ClipboardValue<img::Object> (*iobj);
} }
} }
@ -1077,8 +1075,8 @@ Service::del_selected ()
// positions will hold a set of iterators that are to be erased // positions will hold a set of iterators that are to be erased
std::vector <lay::AnnotationShapes::iterator> positions; std::vector <lay::AnnotationShapes::iterator> positions;
positions.reserve (m_selected.size ()); positions.reserve (m_selected.size ());
for (std::map<obj_iterator, unsigned int>::iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
positions.push_back (r->first); positions.push_back (*r);
} }
// clear selection // clear selection
@ -1117,7 +1115,7 @@ void
Service::transient_to_selection () Service::transient_to_selection ()
{ {
if (mp_transient_view) { if (mp_transient_view) {
m_selected.insert (std::make_pair (mp_transient_view->image_ref (), 0)); m_selected.insert (mp_transient_view->image_ref ());
selection_to_view (); selection_to_view ();
} }
} }
@ -1128,7 +1126,7 @@ Service::select (obj_iterator obj, lay::Editable::SelectionMode mode)
if (mode == lay::Editable::Replace || mode == lay::Editable::Add) { if (mode == lay::Editable::Replace || mode == lay::Editable::Add) {
// select // select
if (m_selected.find (obj) == m_selected.end ()) { if (m_selected.find (obj) == m_selected.end ()) {
m_selected.insert (std::make_pair (obj, 0)); m_selected.insert (obj);
return true; return true;
} }
} else if (mode == lay::Editable::Reset) { } else if (mode == lay::Editable::Reset) {
@ -1142,7 +1140,7 @@ Service::select (obj_iterator obj, lay::Editable::SelectionMode mode)
if (m_selected.find (obj) != m_selected.end ()) { if (m_selected.find (obj) != m_selected.end ()) {
m_selected.erase (obj); m_selected.erase (obj);
} else { } else {
m_selected.insert (std::make_pair (obj, 0)); m_selected.insert (obj);
} }
return true; return true;
} }
@ -1179,7 +1177,7 @@ Service::click_proximity (const db::DPoint &pos, lay::Editable::SelectionMode mo
// for single-point selections either exclude the current selection or the // for single-point selections either exclude the current selection or the
// accumulated previous selection from the search. // accumulated previous selection from the search.
const std::map<obj_iterator, unsigned int> *exclude = 0; const std::set<obj_iterator> *exclude = 0;
if (mode == lay::Editable::Replace) { if (mode == lay::Editable::Replace) {
exclude = &m_previous_selection; exclude = &m_previous_selection;
} else if (mode == lay::Editable::Add) { } else if (mode == lay::Editable::Add) {
@ -1273,7 +1271,7 @@ Service::select (const db::DBox &box, lay::Editable::SelectionMode mode)
// for single-point selections either exclude the current selection or the // for single-point selections either exclude the current selection or the
// accumulated previous selection from the search. // accumulated previous selection from the search.
const std::map<obj_iterator, unsigned int> *exclude = 0; const std::set<obj_iterator> *exclude = 0;
if (mode == lay::Editable::Replace) { if (mode == lay::Editable::Replace) {
exclude = &m_previous_selection; exclude = &m_previous_selection;
} else if (mode == lay::Editable::Add) { } else if (mode == lay::Editable::Add) {
@ -1339,7 +1337,7 @@ Service::select (const db::DBox &box, lay::Editable::SelectionMode mode)
// select the one that was found // select the one that was found
if (robj) { if (robj) {
select (mp_view->annotation_shapes ().iterator_from_pointer (robj), mode); select (mp_view->annotation_shapes ().iterator_from_pointer (robj), mode);
m_previous_selection.insert (std::make_pair (mp_view->annotation_shapes ().iterator_from_pointer (robj), mode)); m_previous_selection.insert (mp_view->annotation_shapes ().iterator_from_pointer (robj));
needs_update = true; needs_update = true;
} }
@ -1397,8 +1395,8 @@ Service::get_selection (std::vector <obj_iterator> &sel) const
sel.reserve (m_selected.size ()); sel.reserve (m_selected.size ());
// positions will hold a set of iterators that are to be erased // positions will hold a set of iterators that are to be erased
for (std::map<obj_iterator, unsigned int>::const_iterator r = m_selected.begin (); r != m_selected.end (); ++r) { for (auto r = m_selected.begin (); r != m_selected.end (); ++r) {
sel.push_back (r->first); sel.push_back (*r);
} }
} }
@ -1407,7 +1405,7 @@ Service::set_selection (const std::vector<obj_iterator> &selection)
{ {
m_selected.clear (); m_selected.clear ();
for (auto i = selection.begin (); i != selection.end (); ++i) { for (auto i = selection.begin (); i != selection.end (); ++i) {
m_selected.insert (std::make_pair (*i, 0)); m_selected.insert (*i);
} }
selection_to_view (); selection_to_view ();

View File

@ -389,7 +389,7 @@ public:
/** /**
* @brief Direct access to the selection * @brief Direct access to the selection
*/ */
const std::map<obj_iterator, unsigned int> &selection () const const std::set<obj_iterator> &selection () const
{ {
return m_selected; return m_selected;
} }
@ -491,11 +491,10 @@ private:
// The view objects representing the selection and the moved images in move mode // The view objects representing the selection and the moved images in move mode
std::vector<View *> m_selected_image_views; std::vector<View *> m_selected_image_views;
// The present views - only used for issueing a proper
// The selection // The selection
std::map<obj_iterator, unsigned int> m_selected; std::set<obj_iterator> m_selected;
// The previous selection // The previous selection
std::map<obj_iterator, unsigned int> m_previous_selection; std::set<obj_iterator> m_previous_selection;
// The reference point in move mode // The reference point in move mode
db::DPoint m_p1; db::DPoint m_p1;
// The image object representing the image being moved as it was before it was moved // The image object representing the image being moved as it was before it was moved
@ -546,7 +545,7 @@ private:
/** /**
* @brief Finds an image object from the given point * @brief Finds an image object from the given point
*/ */
const db::DUserObject *find_image (const db::DPoint &p, const db::DBox &search_box, double l, double &dmin, const std::map<img::Service::obj_iterator, unsigned int> *exclude = 0); const db::DUserObject *find_image (const db::DPoint &p, const db::DBox &search_box, double l, double &dmin, const std::set<img::Service::obj_iterator> *exclude = 0);
/** /**
* @brief Update m_selected_image_views to reflect the selection * @brief Update m_selected_image_views to reflect the selection