Code

warn if unable to fill an unbounded area
[inkscape.git] / src / libvpsc / remove_rectangle_overlap.cpp
index 6f6ace03ae0e88af16cc157dd91eb95071aa718c..68af4c5c59de585c10d5ab175d166d43acf72c58 100644 (file)
@@ -24,6 +24,7 @@ using std::endl;
 #endif
 
 #define EXTRA_GAP 0.0001
+using namespace vpsc;
 
 double Rectangle::xBorder=0;
 double Rectangle::yBorder=0;
@@ -40,32 +41,31 @@ double Rectangle::yBorder=0;
  *    too much in the first pass.
  */
 void removeRectangleOverlap(unsigned n, Rectangle *rs[], double xBorder, double yBorder) {
-       assert(0 <= n);
        try {
        // The extra gap avoids numerical imprecision problems
        Rectangle::setXBorder(xBorder+EXTRA_GAP);
        Rectangle::setYBorder(yBorder+EXTRA_GAP);
        Variable **vs=new Variable*[n];
-       for(int i=0;i<n;i++) {
+       for(unsigned i=0;i<n;i++) {
                vs[i]=new Variable(i,0,1);
        }
        Constraint **cs;
        double *oldX = new double[n];
-       int m=generateXConstraints(n,rs,vs,cs,true);
-       for(int i=0;i<n;i++) {
+       unsigned m=generateXConstraints(n,rs,vs,cs,true);
+       for(unsigned i=0;i<n;i++) {
                oldX[i]=vs[i]->desiredPosition;
        }
-       VPSC vpsc_x(n,vs,m,cs);
+       Solver vpsc_x(n,vs,m,cs);
 #ifdef RECTANGLE_OVERLAP_LOGGING
        ofstream f(LOGFILE,ios::app);
        f<<"Calling VPSC: Horizontal pass 1"<<endl;
        f.close();
 #endif
        vpsc_x.solve();
-       for(int i=0;i<n;i++) {
+       for(unsigned i=0;i<n;i++) {
                rs[i]->moveCentreX(vs[i]->position());
        }
-       for(int i = 0; i < m; ++i) {
+       for(unsigned i = 0; i < m; ++i) {
                delete cs[i];
        }
        delete [] cs;
@@ -73,43 +73,43 @@ void removeRectangleOverlap(unsigned n, Rectangle *rs[], double xBorder, double
        // one another above are not considered overlapping
        Rectangle::setXBorder(Rectangle::xBorder-EXTRA_GAP);
        m=generateYConstraints(n,rs,vs,cs);
-       VPSC vpsc_y(n,vs,m,cs);
+       Solver vpsc_y(n,vs,m,cs);
 #ifdef RECTANGLE_OVERLAP_LOGGING
        f.open(LOGFILE,ios::app);
        f<<"Calling VPSC: Vertical pass"<<endl;
        f.close();
 #endif
        vpsc_y.solve();
-       for(int i=0;i<n;i++) {
+       for(unsigned i=0;i<n;i++) {
                rs[i]->moveCentreY(vs[i]->position());
                rs[i]->moveCentreX(oldX[i]);
        }
        delete [] oldX;
-       for(int i = 0; i < m; ++i) {
+       for(unsigned i = 0; i < m; ++i) {
                delete cs[i];
        }
        delete [] cs;
        Rectangle::setYBorder(Rectangle::yBorder-EXTRA_GAP);
        m=generateXConstraints(n,rs,vs,cs,false);
-       VPSC vpsc_x2(n,vs,m,cs);
+       Solver vpsc_x2(n,vs,m,cs);
 #ifdef RECTANGLE_OVERLAP_LOGGING
        f.open(LOGFILE,ios::app);
        f<<"Calling VPSC: Horizontal pass 2"<<endl;
        f.close();
 #endif
        vpsc_x2.solve();
-       for(int i = 0; i < m; ++i) {
+       for(unsigned i = 0; i < m; ++i) {
                delete cs[i];
        }
        delete [] cs;
-       for(int i=0;i<n;i++) {
+       for(unsigned i=0;i<n;i++) {
                rs[i]->moveCentreX(vs[i]->position());
                delete vs[i];
        }
        delete [] vs;
        } catch (char const *str) {
                std::cerr<<str<<std::endl;
-               for(int i=0;i<n;i++) {
+               for(unsigned i=0;i<n;i++) {
                        std::cerr << *rs[i]<<std::endl;
                }
        }