pingus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pingus-CVS] r3822 - trunk/pingus/src/display


From: grumbel at BerliOS
Subject: [Pingus-CVS] r3822 - trunk/pingus/src/display
Date: Mon, 14 Jul 2008 20:31:46 +0200

Author: grumbel
Date: 2008-07-14 20:31:45 +0200 (Mon, 14 Jul 2008)
New Revision: 3822

Modified:
   trunk/pingus/src/display/rect_merger.cpp
Log:
Some more debugging stuff and throw away non-normalized or empty rectangles

Modified: trunk/pingus/src/display/rect_merger.cpp
===================================================================
--- trunk/pingus/src/display/rect_merger.cpp    2008-07-14 18:08:38 UTC (rev 
3821)
+++ trunk/pingus/src/display/rect_merger.cpp    2008-07-14 18:31:45 UTC (rev 
3822)
@@ -81,10 +81,12 @@
 
 void print_rects(std::ostream& out, const std::vector<Rect>& rects)
 {
+  out << "(rects " << std::endl;
   for(std::vector<Rect>::const_iterator i = rects.begin(); i != rects.end(); 
++i)
     {
       out << *i << std::endl;
     }
+  out << ") ;; rects " << std::endl;
 }
 
 /** Take a list of rectangles and generate a list of rows written to
@@ -96,6 +98,8 @@
  */
 void generate_rows(const std::vector<Rect>& rects, std::vector<Row>& rows_out)
 {
+  assert(!rects.empty());
+
   // Figure out the horizontal split lines
   std::vector<Mark> marks;
   for(std::vector<Rect>::const_iterator i = rects.begin(); i != rects.end(); 
++i)
@@ -126,6 +130,7 @@
         }
     }
 
+  //print_rects(std::cout, rects);
   assert(!rows_out.empty());
 }
 
@@ -263,15 +268,23 @@
 }
 
 /** Takes a list of overlapping rectangles and generates a list of
-    non-overlapping rectangles covering the same area. Rectangles have to be 
normalized.
+    non-overlapping rectangles covering the same area.
  */
 void merge_rectangles(const std::vector<Rect>& rects_, std::vector<Rect>& 
rects_out)
 {
-  if (rects_.empty())
+  //print_rects(std::cerr, rects_);
+  std::vector<Rect> rects;
+
+  for(std::vector<Rect>::const_iterator i = rects_.begin(); i != rects_.end(); 
++i)
+    { // Only add non-empty rectangles
+      if (i->left < i->right &&
+          i->top  < i->bottom)
+        rects.push_back(*i);
+    }
+
+  if (rects.empty())
     return;
 
-  std::vector<Rect> rects = rects_;
-
   // Prepare rectangles
   std::sort(rects.begin(), rects.end(), rect_y_sorter);
 
@@ -313,14 +326,34 @@
   std::vector<Rect> rects_out;
 
   // Generate random rectangles
-  for(int i = 0; i < 400; ++i)
-    {
-      rects_in.push_back(Rect(Vector2i(rand() % 800,
-                                       rand() % 800),
-                              Size(rand() % 60 + 10,
-                                   rand() % 60 + 10)));
-    }
+  if (0)
+    for(int i = 0; i < 400; ++i)
+      {
+        rects_in.push_back(Rect(Vector2i(rand() % 800,
+                                         rand() % 800),
+                                Size(rand() % 60 + 10,
+                                     rand() % 60 + 10)));
+      }
 
+  rects_in.push_back(Rect(380, 279, 412, 311));
+  rects_in.push_back(Rect(307, 280, 339, 312));
+  rects_in.push_back(Rect(397, 279, 429, 311));
+  rects_in.push_back(Rect(354, 280, 386, 312));
+  rects_in.push_back(Rect(282, 277, 314, 309));
+  rects_in.push_back(Rect(441, 282, 473, 314));
+  rects_in.push_back(Rect(531, 281, 563, 313));
+  rects_in.push_back(Rect(249, 280, 281, 312));
+  rects_in.push_back(Rect(4, 112, 36, 144));
+  rects_in.push_back(Rect(381, 279, 413, 311));
+  rects_in.push_back(Rect(306, 280, 338, 312));
+  rects_in.push_back(Rect(396, 279, 428, 311));
+  rects_in.push_back(Rect(355, 280, 387, 312));
+  rects_in.push_back(Rect(283, 277, 315, 309));
+  rects_in.push_back(Rect(440, 282, 472, 314));
+  rects_in.push_back(Rect(530, 281, 562, 313));
+  rects_in.push_back(Rect(249, 280, 281, 312));
+  rects_in.push_back(Rect(4, 112, 36, 144));
+                                        
   merge_rectangles(rects_in, rects_out);
   
   if (1) // print results as SVG 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]