diff options
Diffstat (limited to 'static/tests/space.packing/spacefill.js')
| -rwxr-xr-x | static/tests/space.packing/spacefill.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/static/tests/space.packing/spacefill.js b/static/tests/space.packing/spacefill.js new file mode 100755 index 0000000..6a2e0a5 --- /dev/null +++ b/static/tests/space.packing/spacefill.js @@ -0,0 +1,93 @@ +var ColumnFill = {
+ "init": function(){
+ var cfg = SpaceFill.config
+ var numColumns = ColumnFill.calcColumns()
+ ColumnFill.columns = []
+ for (var i = 0; i < numColumns; i++) {
+ ColumnFill.columns.push({"height": 0})
+ }
+
+ cfg.marginWidth = cfg.marginHeight = cfg.minMargin
+
+ if (cfg.spacing == "center") {
+ cfg.columnSpacingAmt = (cfg.width - (numColumns * (cfg.columnWidth + cfg.marginWidth) + cfg.marginWidth)) / 2
+ } else if (cfg.spacing == "justify") {
+ cfg.marginWidth = (cfg.width - (numColumns * cfg.columnWidth)) / (numColumns + 1)
+ }
+
+
+ },
+ "add": function(obj){
+ var cfg = SpaceFill.config
+ var colIndex = ColumnFill.shortestColumn()
+ var col = ColumnFill.columns[colIndex]
+
+ if (cfg.spacing == "center") {
+ var colLeft = colIndex * (cfg.marginWidth + cfg.columnWidth) + cfg.columnSpacingAmt
+ var imgLeft = Math.floor((cfg.marginWidth / 2) + (cfg.columnWidth / 2) - (parseInt(obj.style.width) / 2)) + colLeft + "px"
+ } else if (cfg.spacing == "justify") {
+ var colLeft = (colIndex * (cfg.marginWidth + cfg.columnWidth))
+ var imgLeft = Math.floor((cfg.marginWidth / 2) + (cfg.columnWidth / 2) - (parseInt(obj.style.width) / 2)) + colLeft + "px"
+ }
+
+ obj.style.position = 'absolute'
+ obj.style.top = col.height + cfg.marginHeight + "px"
+ obj.style.left = imgLeft
+
+ col.height += cfg.marginHeight + parseInt(obj.style.height)
+
+ $(cfg.container).append(obj)
+
+ },
+ "calcColumns": function(){
+ var cfg = SpaceFill.config
+ var numColumns = 0
+ var width = cfg.width - cfg.minMargin
+ var columnSub = cfg.columnWidth + cfg.minMargin
+ while (width > columnSub) {
+ width -= columnSub
+ numColumns++
+ }
+ return numColumns
+ },
+ "shortestColumn": function(){
+ var min = Infinity
+ var mindex = 0
+ for(var i = 0; i< ColumnFill.columns.length; i++){
+ var col = ColumnFill.columns[i]
+ if ( min > col.height) {
+ min = col.height
+ mindex = i
+ }
+ }
+
+ return mindex
+ },
+ "isSpaceFilled": function(){
+ var config = SpaceFill.config
+ var colIndex = ColumnFill.shortestColumn()
+ var col = ColumnFill.columns[colIndex]
+
+ if (col.height > 4 * config.height) return true;
+ else return false;
+
+
+ }
+
+}
+
+var SpaceFill = {
+
+ "init": function(config){
+ config.type = "columns"
+ SpaceFill.config = config
+
+ SpaceFill.types[config.type].init()
+ SpaceFill.add = SpaceFill.types[config.type].add
+
+
+ },
+
+ "types": { "columns": ColumnFill }
+
+}
\ No newline at end of file |
