blob: c0b5d5489461663a96aa12ba01f1ed7626bb9a74 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
(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_car_reversed (a,b){
if (a[0] < b[0]) {
return 1
}
if (a[0] > b[0]) {
return -1
}
return 0
}
function compare_car (a,b){
if (a[0] < b[0]) {
return -1
}
if (a[0] > b[0]) {
return 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] }
var sort = {}
sort.rooms_by_id = function (list){
return list.map(room_id_tuple)
.sort(compare_car)
.map(cdr)
}
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)
}
sort.rects_by_position = function (list){
return list.map(identity_tuple)
.sort(compare_rect_position)
.map(cdr)
}
sort.rects_by_area = function (list){
return list.map(rect_area_tuple)
.sort(compare_car)
.map(cdr)
}
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
}
if ("window" in this) {
window.sort = sort
}
else {
module.exports = sort
}
})()
|