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