Revision: 2195
          http://vexi.svn.sourceforge.net/vexi/?rev=2195&view=rev
Author:   clrg
Date:     2007-09-14 15:07:41 -0700 (Fri, 14 Sep 2007)

Log Message:
-----------
Packing code is now complete

Modified Paths:
--------------
    trunk/widgets/org.vexi.widgets/src/vexi/layout/grid.t

Modified: trunk/widgets/org.vexi.widgets/src/vexi/layout/grid.t
===================================================================
--- trunk/widgets/org.vexi.widgets/src/vexi/layout/grid.t       2007-09-14 
21:57:20 UTC (rev 2194)
+++ trunk/widgets/org.vexi.widgets/src/vexi/layout/grid.t       2007-09-14 
22:07:41 UTC (rev 2195)
@@ -1,6 +1,6 @@
 <!-- Copyright 2007 - see COPYING for details [LGPL] -->
 
-<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta">
+<vexi xmlns:ui="vexi://ui" xmlns:meta="vexi://meta" xmlns="vexi.util">
     <meta:doc>
         <author>Charles Goodwin</author>
         <name>Grid</name>
@@ -35,8 +35,8 @@
         var frontier = [];
         
         // used to track what regions of the grid a child affects
-        var colregions;
-        var rowregions;
+        var colregions = .orderedlist(vexi.box);
+        var rowregions = .orderedlist(vexi.box);
         
         /* 
          * PACKING
@@ -47,11 +47,22 @@
          * children down the number of rows and accomodate children by
          * adding extra columns.
          */
+         
+        var assignSlot = function(c, col, row) {
+            // col-related assignments
+            if (c.col != col) {
+               c.col = col;
+               colregions.insert(c, c.col+c.colspan);
+            }
+            // row-related assignments
+            if (c.row != row) {
+               c.row = row;
+               rowregions.insert(c, c.row+c.rowspan);
+            }
+         }
         
         var packByCol = function() {
             if (!activegrid) return;
-            var col_regions = {};
-            var row_regions = {};
             var frontier_size = 0;
             var nextcol = 0;  // the next available col
             var nextrow = 0;  // the next available row
@@ -90,18 +101,8 @@
                 }
                 // add to frontier if we affect the frontier
                 if (c.rowspan>1) frontier[frontier_size++] = c;
-                // assign col/row
-                c.row = nextrow;
-                c.col = nextcol;
-                // build regions
-                var rreg = c.row+c.rowspan;
-                if (!row_regions[rreg])
-                    row_regions[rreg] = { max:vexi.ui.maxdim, min:0, valid:[c] 
};
-                else row_regions[rreg].valid[row_regions[rreg].valid.length] = 
c;
-                var creg = c.col+c.colspan;
-                if (!col_regions[creg])
-                    col_regions[creg] = { max:vexi.ui.maxdim, min:0, valid:[c] 
};
-                else col_regions[creg].valid[col_regions[creg].valid.length] = 
c;
+                // place packed child
+                assignSlot(nextcol, nextrow);
                 // prepare for next iteration
                 minrows = 0;            // reset minrows
                 nextcol += c.colspan;   // bump up nextcol
@@ -140,17 +141,7 @@
                     }
                 }
                 if (c.rowspan>1) frontier[frontier_size++] = c;
-                c.row = nextrow;
-                c.col = nextcol;
-                // build regions
-                var rreg = c.row+c.rowspan;
-                if (!row_regions[rreg])
-                    row_regions[rreg] = { max:vexi.ui.maxdim, min:0, valid:[c] 
};
-                else row_regions[rreg].valid[row_regions[rreg].valid.length] = 
c;
-                var creg = c.col+c.colspan;
-                if (!col_regions[creg])
-                    col_regions[creg] = { max:vexi.ui.maxdim, min:0, valid:[c] 
};
-                else col_regions[creg].valid[col_regions[creg].valid.length] = 
c;
+                assignSlot(nextcol, nextrow);
                 mincols = 0;
                 nextrow += c.rowspan;
                 rows = max(rows, c.col+c.rowspan);


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to