Code

Merge and cleanup of GSoC C++-ification project.
[inkscape.git] / src / sp-item-rm-unsatisfied-cns.cpp
2 #include <algorithm>
4 #include "approx-equal.h"
5 #include "remove-last.h"
6 #include "sp-guide.h"
7 #include "sp-guide-constraint.h"
8 #include "sp-item.h"
10 using std::vector;
12 void sp_item_rm_unsatisfied_cns(SPItem &item)
13 {
14     if (item.constraints.empty()) {
15         return;
16     }
17     std::vector<Inkscape::SnapCandidatePoint> snappoints;
18     item.getSnappoints(snappoints, NULL);
19     for (unsigned i = item.constraints.size(); i--;) {
20         g_assert( i < item.constraints.size() );
21         SPGuideConstraint const &cn = item.constraints[i];
22         int const snappoint_ix = cn.snappoint_ix;
23         g_assert( snappoint_ix < int(snappoints.size()) );
24         if (!approx_equal( cn.g->getDistanceFrom(snappoints[snappoint_ix].getPoint()), 0) ) {
25             remove_last(cn.g->attached_items, SPGuideAttachment(&item, cn.snappoint_ix));
26             g_assert( i < item.constraints.size() );
27             vector<SPGuideConstraint>::iterator const ei(&item.constraints[i]);
28             item.constraints.erase(ei);
29         }
30     }
31 }
34 /*
35   Local Variables:
36   mode:c++
37   c-file-style:"stroustrup"
38   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
39   indent-tabs-mode:nil
40   fill-column:99
41   End:
42 */
43 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :