diff options
Diffstat (limited to 'public/assets/javascripts/rectangles/util')
| -rw-r--r-- | public/assets/javascripts/rectangles/util/colors.js | 10 | ||||
| -rw-r--r-- | public/assets/javascripts/rectangles/util/sort.js | 161 | ||||
| -rw-r--r-- | public/assets/javascripts/rectangles/util/uid.js | 35 |
3 files changed, 121 insertions, 85 deletions
diff --git a/public/assets/javascripts/rectangles/util/colors.js b/public/assets/javascripts/rectangles/util/colors.js index c590072..95827cc 100644 --- a/public/assets/javascripts/rectangles/util/colors.js +++ b/public/assets/javascripts/rectangles/util/colors.js @@ -3,6 +3,12 @@ alpha: [ "rgba(0,0,0,0.1)", ], + alphaQuad: [ + "rgba(0,0,0,0.1)", + "rgba(0,0,0,0.1)", + "rgba(0,0,0,0.1)", + "rgba(0,0,0,0.1)", + ], redblue: [ "rgba(0,0,0,0.2)", "rgba(255,0,0,0.2)", @@ -52,9 +58,9 @@ select.blur() }) - window.colors = color_palettes[select ? select.value : 'bone'] + window.colors = color_palettes[select ? select.value : 'alphaQuad'] window.grayColors = {} - _.zip([FRONT, LEFT, BACK, RIGHT], color_palettes.bone).map(function(pair){ + _.zip([FRONT, LEFT, BACK, RIGHT], color_palettes.alphaQuad).map(function(pair){ window.grayColors[pair[0]] = pair[1] }) window.palettes = color_palettes diff --git a/public/assets/javascripts/rectangles/util/sort.js b/public/assets/javascripts/rectangles/util/sort.js index a0665ae..3b4771c 100644 --- a/public/assets/javascripts/rectangles/util/sort.js +++ b/public/assets/javascripts/rectangles/util/sort.js @@ -1,86 +1,101 @@ +(function(){ + function compare_rect_position(a,b){ + if (a[0].x.a < b[0].x.a) { + return -1 + } + if (a[0].x.a > b[0].x.a) { + return 1 + } + if (a[0].y.a < b[0].y.a) { + return -1 + } + if (a[0].y.a > b[0].y.a) { + return 1 + } + return 0 + } -function compare_rect_position(a,b){ - if (a[0].x.a < b[0].x.a) { - return -1 + function compare_car_reversed (a,b){ + if (a[0] < b[0]) { + return 1 + } + if (a[0] > b[0]) { + return -1 + } + return 0 } - if (a[0].x.a > b[0].x.a) { - return 1 + function compare_car (a,b){ + if (a[0] < b[0]) { + return -1 + } + if (a[0] > b[0]) { + return 1 + } + return 0 } - if (a[0].y.a < b[0].y.a) { - return -1 + + function room_id_tuple (r){ return [r.id, r] } + function room_height_tuple (r){ return [r.height, r] } + function room_area_tuple (r){ return [r.rect.area(), r] } + function rect_area_tuple (r){ return [r.area(), r] } + function rect_area_tuple_larger (r){ return [-r.area(), r] } + + function room_rect_tuple (r){ return [r.rect, r] } + function identity_tuple (r){ return [r, r] } + function car (r){ return r[0] } + function cdr (r){ return r[1] } + + var sort = {} + + sort.rooms_by_id = function (list){ + return list.map(room_id_tuple) + .sort(compare_car) + .map(cdr) } - if (a[0].y.a > b[0].y.a) { - return 1 + sort.rooms_by_height = function (list){ + return list.map(room_height_tuple) + .sort(compare_car_reversed) + .map(cdr) + } + sort.rooms_by_position = function (list){ + return list.map(room_rect_tuple) + .sort(compare_rect_position) + .map(cdr) + } + sort.rooms_by_area = function (list){ + return list.map(room_area_tuple) + .sort(compare_car) + .map(cdr) } - return 0 -} -function compare_car_reversed (a,b){ - if (a[0] < b[0]) { - return 1 + sort.rects_by_position = function (list){ + return list.map(identity_tuple) + .sort(compare_rect_position) + .map(cdr) } - if (a[0] > b[0]) { - return -1 + sort.rects_by_area = function (list){ + return list.map(rect_area_tuple) + .sort(compare_car) + .map(cdr) } - return 0 -} -function compare_car (a,b){ - if (a[0] < b[0]) { - return -1 + sort.rects_by_larger_area = function (list){ + return list.map(rect_area_tuple_larger) + .sort(compare_car) + .map(cdr) } - if (a[0] > b[0]) { - return 1 + sort.compare_z = function (a,b){ + return a.rect.y.a < b.rect.y.a ? -1 : a.rect.y.a == b.rect.y.a ? 0 : 1 + } + sort.compare_x = function (a,b){ + return a.rect.x.a > b.rect.x.a ? -1 : a.rect.x.a == b.rect.x.a ? 0 : 1 } - return 0 -} - -function room_id_tuple (r){ return [r.id, r] } -function room_height_tuple (r){ return [r.height, r] } -function room_area_tuple (r){ return [r.rect.area(), r] } -function rect_area_tuple (r){ return [r.area(), r] } - -function room_rect_tuple (r){ return [r.rect, r] } -function identity_tuple (r){ return [r, r] } -function car (r){ return r[0] } -function cdr (r){ return r[1] } - - -function sort_rooms_by_id(list){ - return list.map(room_id_tuple) - .sort(compare_car) - .map(cdr) -} -function sort_rooms_by_height(list){ - return list.map(room_height_tuple) - .sort(compare_car_reversed) - .map(cdr) -} -function sort_rooms_by_position(list){ - return list.map(room_rect_tuple) - .sort(compare_rect_position) - .map(cdr) -} -function sort_rooms_by_area(list){ - return list.map(room_area_tuple) - .sort(compare_car) - .map(cdr) -} -function sort_rects_by_position(list){ - return list.map(identity_tuple) - .sort(compare_rect_position) - .map(cdr) -} -function sort_rects_by_area(list){ - return list.map(rect_area_tuple) - .sort(compare_car) - .map(cdr) -} + if ("window" in this) { + window.sort = sort + } + else { + module.exports = sort + } -function compare_z(a,b){ - return a.rect.y.a < b.rect.y.a ? -1 : a.rect.y.a == b.rect.y.a ? 0 : 1 -} -function compare_x(a,b){ - return a.rect.x.a > b.rect.x.a ? -1 : a.rect.x.a == b.rect.x.a ? 0 : 1 -} +})() diff --git a/public/assets/javascripts/rectangles/util/uid.js b/public/assets/javascripts/rectangles/util/uid.js index ca22fb3..0c0b176 100644 --- a/public/assets/javascripts/rectangles/util/uid.js +++ b/public/assets/javascripts/rectangles/util/uid.js @@ -1,14 +1,29 @@ +(function(){ -var UidGenerator = function(list){ - var id = 0 - return function(s){ - s = s || "" - var ss - while (1) { - ss = s + (id++) - if (! (ss in list)) { - return ss + var UidGenerator = function(list){ + var id = 0 + var generator = function(s){ + s = s || "" + var ss + while (1) { + ss = s + (id++) + if (! (ss in list)) { + return ss + } } } + generator.setList = function(newList){ + list = newList + } + return generator + } + + if ('window' in this) { + window.UidGenerator = UidGenerator } -}
\ No newline at end of file + else { + module.exports = UidGenerator + } + +})() + |
