How to use rect method in ghostjs

Best JavaScript code snippet using ghostjs

test_main.py

Source:test_main.py Github

copy

Full Screen

1from unittest import TestCase2from main import join_rectangles, Rect3class Test(TestCase):4 def test_again(self):5 rects = [Rect(x=1806, y=454, w=1122, h=1282), Rect(x=2298, y=484, w=101, h=86), Rect(x=388, y=488, w=1114, h=1236), Rect(x=2117, y=492, w=38, h=39), Rect(x=2654, y=492, w=7, h=8), Rect(x=2697, y=492, w=46, h=28), Rect(x=2491, y=495, w=14, h=16), Rect(x=2772, y=495, w=13, h=14), Rect(x=1945, y=499, w=59, h=12), Rect(x=2450, y=498, w=11, h=12), Rect(x=2615, y=499, w=11, h=10), Rect(x=2031, y=501, w=16, h=16), Rect(x=2071, y=501, w=10, h=10), Rect(x=2201, y=501, w=7, h=6), Rect(x=2532, y=502, w=57, h=11), Rect(x=2788, y=503, w=9, h=10), Rect(x=2787, y=509, w=70, h=67), Rect(x=2437, y=510, w=14, h=15), Rect(x=2757, y=510, w=14, h=15), Rect(x=2083, y=512, w=10, h=11), Rect(x=2186, y=513, w=13, h=12), Rect(x=2670, y=512, w=14, h=13), Rect(x=1947, y=514, w=59, h=13), Rect(x=2245, y=514, w=13, h=15), Rect(x=2535, y=514, w=52, h=11), Rect(x=2596, y=516, w=16, h=14), Rect(x=1840, y=518, w=70, h=73), Rect(x=2012, y=519, w=16, h=16), Rect(x=2457, y=518, w=35, h=39), Rect(x=2779, y=520, w=13, h=21), Rect(x=2031, y=523, w=51, h=45), Rect(x=1926, y=525, w=7, h=6), Rect(x=2747, y=525, w=10, h=10), Rect(x=2430, y=526, w=7, h=7), Rect(x=2517, y=527, w=13, h=12), Rect(x=2199, y=528, w=45, h=32), Rect(x=2687, y=529, w=11, h=13), Rect(x=389, y=531, w=20, h=21), Rect(x=2164, y=531, w=17, h=16), Rect(x=2260, y=531, w=10, h=13), Rect(x=2102, y=533, w=8, h=7), Rect(x=2585, y=533, w=10, h=10), Rect(x=1938, y=538, w=14, h=13), Rect(x=2533, y=543, w=10, h=11), Rect(x=2832, y=542, w=8, h=8), Rect(x=2700, y=545, w=8, h=8), Rect(x=2574, y=546, w=10, h=8), Rect(x=401, y=549, w=12, h=5), Rect(x=2274, y=548, w=11, h=12), Rect(x=2154, y=551, w=8, h=6), Rect(x=2826, y=554, w=6, h=7), Rect(x=1822, y=573, w=12, h=10), Rect(x=847, y=577, w=29, h=13), Rect(x=894, y=577, w=26, h=12), Rect(x=939, y=577, w=27, h=11), Rect(x=984, y=576, w=33, h=11), Rect(x=1033, y=577, w=29, h=10), Rect(x=1080, y=577, w=33, h=11), Rect(x=1131, y=577, w=25, h=10), Rect(x=1174, y=576, w=22, h=10), Rect(x=1218, y=576, w=24, h=10), Rect(x=1258, y=576, w=26, h=10), Rect(x=1290, y=576, w=27, h=10), Rect(x=1323, y=576, w=25, h=10), Rect(x=665, y=579, w=31, h=13), Rect(x=707, y=579, w=35, h=12), Rect(x=759, y=579, w=27, h=10), Rect(x=803, y=578, w=32, h=11), Rect(x=592, y=581, w=24, h=12), Rect(x=630, y=580, w=29, h=13), Rect(x=518, y=583, w=28, h=30), Rect(x=557, y=582, w=21, h=12), Rect(x=1352, y=582, w=12, h=14), Rect(x=1849, y=586, w=14, h=9), Rect(x=2168, y=589, w=8, h=8), Rect(x=2474, y=589, w=7, h=7), Rect(x=1865, y=593, w=10, h=7), Rect(x=1937, y=593, w=7, h=12), Rect(x=2422, y=592, w=10, h=10), Rect(x=1362, y=599, w=13, h=15), Rect(x=1960, y=598, w=11, h=17), Rect(x=2125, y=599, w=8, h=8), Rect(x=2245, y=598, w=9, h=15), Rect(x=2282, y=598, w=11, h=13), Rect(x=2148, y=600, w=7, h=7), Rect(x=2166, y=600, w=7, h=7), Rect(x=2189, y=600, w=14, h=15), Rect(x=2208, y=600, w=6, h=8), Rect(x=2399, y=601, w=8, h=12), Rect(x=2018, y=606, w=6, h=8), Rect(x=2388, y=610, w=10, h=16), Rect(x=2153, y=613, w=8, h=7), Rect(x=2318, y=615, w=6, h=7), Rect(x=2370, y=615, w=8, h=11), Rect(x=481, y=616, w=38, h=28), Rect(x=1382, y=617, w=22, h=27), Rect(x=1953, y=617, w=7, h=6), Rect(x=2304, y=616, w=9, h=11), Rect(x=2362, y=617, w=6, h=7), Rect(x=2438, y=620, w=7, h=7), Rect(x=1986, y=622, w=6, h=7), Rect(x=2809, y=622, w=69, h=9), Rect(x=1943, y=630, w=8, h=6), Rect(x=1954, y=632, w=12, h=8), Rect(x=1824, y=634, w=64, h=9), Rect(x=1985, y=640, w=13, h=17), Rect(x=2811, y=640, w=65, h=9), Rect(x=1944, y=645, w=7, h=11), Rect(x=2019, y=647, w=11, h=9), Rect(x=2438, y=647, w=8, h=6), Rect(x=2448, y=646, w=8, h=6), Rect(x=476, y=648, w=15, h=29), Rect(x=1395, y=650, w=9, h=20), Rect(x=1823, y=657, w=65, h=9), Rect(x=1909, y=659, w=6, h=7), Rect(x=2687, y=658, w=6, h=8), Rect(x=2812, y=659, w=64, h=10), Rect(x=1959, y=660, w=7, h=7), Rect(x=1944, y=662, w=8, h=11), Rect(x=2004, y=664, w=7, h=7), Rect(x=2028, y=664, w=7, h=22), Rect(x=2439, y=665, w=7, h=6), Rect(x=1987, y=666, w=13, h=10), Rect(x=2450, y=666, w=12, h=9), Rect(x=1823, y=677, w=64, h=8), Rect(x=1940, y=678, w=24, h=27), Rect(x=2462, y=679, w=7, h=6), Rect(x=1983, y=681, w=18, h=15), Rect(x=2666, y=681, w=10, h=10), Rect(x=2019, y=682, w=8, h=7), Rect(x=2687, y=682, w=6, h=7), Rect(x=476, y=684, w=15, h=32), Rect(x=2448, y=685, w=13, h=14), Rect(x=2437, y=688, w=8, h=8), Rect(x=1395, y=691, w=11, h=17), Rect(x=2032, y=695, w=20, h=55), Rect(x=2461, y=694, w=9, h=11), Rect(x=2003, y=698, w=8, h=9), Rect(x=2449, y=704, w=12, h=9), Rect(x=1950, y=708, w=15, h=10), Rect(x=1987, y=708, w=15, h=9), Rect(x=2461, y=714, w=12, h=10), Rect(x=2697, y=714, w=5, h=7), Rect(x=1982, y=718, w=8, h=7), Rect(x=1942, y=720, w=9, h=8), Rect(x=2019, y=720, w=9, h=9), Rect(x=1395, y=724, w=11, h=26), Rect(x=1825, y=724, w=65, h=9), Rect(x=2448, y=725, w=13, h=11), Rect(x=1950, y=726, w=8, h=11), Rect(x=2695, y=727, w=18, h=9), Rect(x=2006, y=732, w=7, h=7), Rect(x=2462, y=733, w=11, h=8), Rect(x=477, y=734, w=15, h=22), Rect(x=1989, y=734, w=7, h=6), Rect(x=1940, y=738, w=10, h=12), Rect(x=1996, y=739, w=6, h=7), Rect(x=1949, y=743, w=10, h=10), Rect(x=2693, y=742, w=28, h=11), Rect(x=1911, y=746, w=7, h=6), Rect(x=1822, y=752, w=69, h=8), Rect(x=1990, y=755, w=7, h=7), Rect(x=1942, y=756, w=6, h=6), Rect(x=1960, y=756, w=6, h=7), Rect(x=2466, y=758, w=7, h=7), Rect(x=2695, y=760, w=15, h=10), Rect(x=1395, y=763, w=12, h=27), Rect(x=2023, y=763, w=5, h=7), Rect(x=1941, y=764, w=19, h=16), Rect(x=2711, y=764, w=9, h=8), Rect(x=2460, y=769, w=7, h=6), Rect(x=478, y=773, w=13, h=27), Rect(x=1996, y=772, w=7, h=9), Rect(x=2008, y=772, w=7, h=7), Rect(x=2701, y=773, w=8, h=8), Rect(x=2710, y=776, w=9, h=10), Rect(x=1981, y=778, w=15, h=8), Rect(x=2459, y=782, w=15, h=13), Rect(x=1947, y=787, w=12, h=9), Rect(x=1941, y=788, w=5, h=7), Rect(x=2486, y=791, w=7, h=6), Rect(x=1959, y=794, w=7, h=6), Rect(x=1989, y=799, w=16, h=9), Rect(x=1395, y=801, w=12, h=26), Rect(x=1945, y=800, w=8, h=7), Rect(x=1838, y=804, w=11, h=6), Rect(x=1850, y=805, w=40, h=11), Rect(x=2460, y=804, w=8, h=8), Rect(x=1823, y=806, w=10, h=6), Rect(x=2006, y=809, w=10, h=11), Rect(x=2486, y=808, w=10, h=8), Rect(x=478, y=811, w=14, h=30), Rect(x=1982, y=811, w=6, h=7), Rect(x=1950, y=812, w=9, h=7), Rect(x=2468, y=815, w=8, h=8), Rect(x=1990, y=823, w=12, h=9), Rect(x=2461, y=826, w=8, h=9), Rect(x=1842, y=832, w=48, h=11), Rect(x=1827, y=834, w=9, h=5), Rect(x=1983, y=837, w=6, h=8), Rect(x=1948, y=838, w=8, h=9), Rect(x=2810, y=839, w=73, h=72), Rect(x=1396, y=843, w=11, h=25), Rect(x=1988, y=842, w=8, h=9), Rect(x=2006, y=845, w=9, h=11), Rect(x=1853, y=853, w=37, h=19), Rect(x=1966, y=852, w=10, h=17), Rect(x=479, y=855, w=15, h=30), Rect(x=1995, y=854, w=7, h=6), Rect(x=1948, y=860, w=7, h=6), Rect(x=1983, y=864, w=12, h=13), Rect(x=1835, y=871, w=13, h=8), Rect(x=1825, y=879, w=15, h=17), Rect(x=1949, y=881, w=8, h=7), Rect(x=2006, y=881, w=9, h=10), Rect(x=2812, y=885, w=72, h=44), Rect(x=1397, y=886, w=10, h=27), Rect(x=1982, y=887, w=7, h=7), Rect(x=1990, y=888, w=12, h=13), Rect(x=479, y=896, w=14, h=24), Rect(x=1846, y=896, w=11, h=8), Rect(x=1860, y=903, w=34, h=20), Rect(x=1943, y=906, w=13, h=7), Rect(x=1823, y=910, w=11, h=8), Rect(x=2003, y=910, w=9, h=12), Rect(x=1840, y=918, w=10, h=8), Rect(x=1989, y=919, w=14, h=14), Rect(x=1855, y=925, w=40, h=23), Rect(x=1396, y=927, w=11, h=30), Rect(x=1945, y=928, w=12, h=10), Rect(x=480, y=936, w=12, h=29), Rect(x=1989, y=937, w=8, h=8), Rect(x=1823, y=938, w=8, h=7), Rect(x=1966, y=943, w=5, h=10), Rect(x=1838, y=947, w=11, h=10), Rect(x=1912, y=952, w=7, h=7), Rect(x=1852, y=956, w=40, h=46), Rect(x=1963, y=957, w=5, h=10), Rect(x=1982, y=958, w=12, h=20), Rect(x=1396, y=973, w=12, h=26), Rect(x=481, y=981, w=12, h=28), Rect(x=2161, y=1000, w=94, h=160), Rect(x=1844, y=1004, w=9, h=9), Rect(x=2312, y=1004, w=97, h=153), Rect(x=2463, y=1006, w=94, h=151), Rect(x=2816, y=1006, w=43, h=48), Rect(x=1050, y=1008, w=93, h=157), Rect(x=895, y=1012, w=90, h=157), Rect(x=755, y=1014, w=72, h=157), Rect(x=1831, y=1014, w=9, h=8), Rect(x=1397, y=1019, w=11, h=30), Rect(x=483, y=1027, w=11, h=28), Rect(x=1848, y=1029, w=13, h=9), Rect(x=1836, y=1039, w=10, h=9), Rect(x=1861, y=1043, w=14, h=11), Rect(x=2814, y=1044, w=72, h=88), Rect(x=1821, y=1050, w=11, h=8), Rect(x=484, y=1063, w=9, h=31), Rect(x=1860, y=1063, w=8, h=6), Rect(x=1832, y=1069, w=10, h=7), Rect(x=1397, y=1070, w=11, h=26), Rect(x=1831, y=1093, w=10, h=10), Rect(x=1843, y=1102, w=12, h=9), Rect(x=1858, y=1111, w=32, h=32), Rect(x=484, y=1113, w=11, h=27), Rect(x=1398, y=1113, w=11, h=25), Rect(x=1915, y=1112, w=8, h=6), Rect(x=2814, y=1113, w=73, h=36), Rect(x=2815, y=1133, w=71, h=78), Rect(x=1845, y=1143, w=13, h=9), Rect(x=1854, y=1144, w=39, h=24), Rect(x=1973, y=1145, w=11, h=13), Rect(x=1827, y=1154, w=15, h=8), Rect(x=484, y=1157, w=11, h=27), Rect(x=1397, y=1163, w=4, h=8), Rect(x=1399, y=1163, w=11, h=20), Rect(x=1965, y=1162, w=6, h=17), Rect(x=1841, y=1168, w=10, h=8), Rect(x=1915, y=1168, w=7, h=5), Rect(x=1824, y=1177, w=12, h=8), Rect(x=1832, y=1189, w=8, h=6), Rect(x=1972, y=1190, w=9, h=9), Rect(x=1847, y=1196, w=11, h=8), Rect(x=1397, y=1198, w=13, h=30), Rect(x=484, y=1201, w=12, h=23), Rect(x=1862, y=1203, w=35, h=22), Rect(x=1828, y=1206, w=7, h=6), Rect(x=1840, y=1211, w=11, h=9), Rect(x=1856, y=1219, w=12, h=11), Rect(x=1971, y=1226, w=12, h=9), Rect(x=1988, y=1227, w=14, h=19), Rect(x=1841, y=1229, w=22, h=14), Rect(x=1400, y=1236, w=12, h=28), Rect(x=485, y=1244, w=11, h=32), Rect(x=1987, y=1265, w=17, h=10), Rect(x=1856, y=1276, w=12, h=8), Rect(x=1400, y=1279, w=12, h=24), Rect(x=1966, y=1280, w=8, h=9), Rect(x=2823, y=1291, w=61, h=59), Rect(x=1988, y=1294, w=16, h=19), Rect(x=485, y=1297, w=13, h=31), Rect(x=1857, y=1299, w=10, h=24), Rect(x=1974, y=1308, w=7, h=8), Rect(x=1987, y=1317, w=8, h=6), Rect(x=1402, y=1318, w=11, h=27), Rect(x=2689, y=1328, w=11, h=8), Rect(x=1858, y=1332, w=7, h=7), Rect(x=1967, y=1338, w=16, h=7), Rect(x=1987, y=1341, w=17, h=9), Rect(x=485, y=1346, w=13, h=33), Rect(x=1955, y=1353, w=8, h=16), Rect(x=1867, y=1357, w=28, h=9), Rect(x=2712, y=1357, w=6, h=8), Rect(x=1852, y=1359, w=10, h=7), Rect(x=1402, y=1363, w=12, h=25), Rect(x=2682, y=1362, w=8, h=6), Rect(x=2824, y=1368, w=55, h=62), Rect(x=1988, y=1373, w=10, h=8), Rect(x=1966, y=1375, w=10, h=9), Rect(x=2655, y=1377, w=15, h=20), Rect(x=1837, y=1378, w=49, h=54), Rect(x=2705, y=1379, w=7, h=7), Rect(x=2000, y=1382, w=8, h=8), Rect(x=2693, y=1383, w=8, h=6), Rect(x=2737, y=1388, w=25, h=25), Rect(x=1958, y=1390, w=5, h=11), Rect(x=486, y=1397, w=12, h=27), Rect(x=2680, y=1398, w=8, h=8), Rect(x=1959, y=1403, w=4, h=8), Rect(x=1989, y=1402, w=10, h=9), Rect(x=2707, y=1405, w=13, h=9), Rect(x=2003, y=1406, w=11, h=9), Rect(x=2735, y=1407, w=13, h=9), Rect(x=1978, y=1413, w=7, h=7), Rect(x=2693, y=1412, w=7, h=7), Rect(x=1402, y=1415, w=12, h=18), Rect(x=1966, y=1420, w=9, h=10), Rect(x=2725, y=1425, w=15, h=9), Rect(x=2706, y=1430, w=12, h=10), Rect(x=1988, y=1432, w=12, h=13), Rect(x=2680, y=1435, w=9, h=9), Rect(x=1978, y=1437, w=7, h=7), Rect(x=486, y=1439, w=13, h=24), Rect(x=2820, y=1439, w=67, h=18), Rect(x=2692, y=1442, w=8, h=7), Rect(x=1402, y=1448, w=12, h=27), Rect(x=2733, y=1448, w=7, h=7), Rect(x=1852, y=1457, w=11, h=7), Rect(x=2704, y=1456, w=15, h=8), Rect(x=2723, y=1456, w=7, h=8), Rect(x=1835, y=1458, w=12, h=8), Rect(x=1865, y=1459, w=33, h=12), Rect(x=1970, y=1459, w=14, h=10), Rect(x=1991, y=1459, w=9, h=9), Rect(x=2666, y=1458, w=7, h=16), Rect(x=2692, y=1469, w=9, h=7), Rect(x=2762, y=1468, w=7, h=5), Rect(x=487, y=1474, w=11, h=26), Rect(x=2677, y=1474, w=7, h=7), Rect(x=2732, y=1475, w=7, h=6), Rect(x=2705, y=1479, w=14, h=13), Rect(x=2723, y=1480, w=7, h=8), Rect(x=1994, y=1482, w=9, h=8), Rect(x=2668, y=1483, w=7, h=6), Rect(x=2740, y=1482, w=7, h=6), Rect(x=2823, y=1483, w=64, h=10), Rect(x=2762, y=1484, w=7, h=7), Rect(x=1402, y=1488, w=12, h=25), Rect(x=1833, y=1489, w=62, h=7), Rect(x=2769, y=1492, w=8, h=7), Rect(x=2670, y=1494, w=14, h=22), Rect(x=2692, y=1496, w=7, h=7), Rect(x=2763, y=1501, w=15, h=10), Rect(x=2721, y=1505, w=7, h=6), Rect(x=2752, y=1506, w=7, h=6), Rect(x=2711, y=1511, w=6, h=7), Rect(x=487, y=1514, w=11, h=23), Rect(x=2702, y=1515, w=8, h=6), Rect(x=2770, y=1517, w=7, h=15), Rect(x=1833, y=1518, w=60, h=66), Rect(x=2692, y=1519, w=8, h=7), Rect(x=1403, y=1521, w=10, h=57), Rect(x=2761, y=1523, w=9, h=6), Rect(x=2733, y=1525, w=12, h=10), Rect(x=1848, y=1537, w=7, h=10), Rect(x=2679, y=1546, w=7, h=7), Rect(x=2732, y=1549, w=12, h=6), Rect(x=1839, y=1555, w=9, h=10), Rect(x=488, y=1557, w=11, h=24), Rect(x=2709, y=1575, w=5, h=7), Rect(x=489, y=1583, w=23, h=26), Rect(x=1394, y=1588, w=13, h=11), Rect(x=2296, y=1599, w=53, h=22), Rect(x=2374, y=1598, w=30, h=12), Rect(x=1379, y=1600, w=13, h=12), Rect(x=1850, y=1607, w=62, h=67), Rect(x=1862, y=1610, w=10, h=7), Rect(x=1354, y=1615, w=25, h=16), Rect(x=1836, y=1615, w=18, h=9), Rect(x=522, y=1619, w=33, h=19), Rect(x=1212, y=1623, w=20, h=10), Rect(x=1249, y=1623, w=23, h=10), Rect(x=1285, y=1623, w=19, h=9), Rect(x=1318, y=1622, w=19, h=11), Rect(x=960, y=1625, w=27, h=11), Rect(x=997, y=1625, w=27, h=9), Rect(x=1034, y=1625, w=28, h=9), Rect(x=1069, y=1625, w=25, h=9), Rect(x=1105, y=1624, w=26, h=11), Rect(x=1140, y=1624, w=21, h=10), Rect(x=1174, y=1624, w=23, h=10), Rect(x=2328, y=1625, w=77, h=65), Rect(x=821, y=1626, w=24, h=11), Rect(x=850, y=1627, w=22, h=10), Rect(x=883, y=1626, w=25, h=11), Rect(x=926, y=1627, w=22, h=9), Rect(x=564, y=1629, w=22, h=9), Rect(x=593, y=1629, w=24, h=9), Rect(x=626, y=1628, w=22, h=11), Rect(x=656, y=1628, w=20, h=11), Rect(x=687, y=1629, w=22, h=9), Rect(x=726, y=1629, w=20, h=10), Rect(x=756, y=1629, w=26, h=9), Rect(x=788, y=1628, w=21, h=9), Rect(x=2202, y=1628, w=53, h=41), Rect(x=2290, y=1630, w=18, h=13), Rect(x=2626, y=1635, w=62, h=10), Rect(x=2796, y=1636, w=15, h=34), Rect(x=2039, y=1638, w=62, h=20), Rect(x=2592, y=1640, w=7, h=9), Rect(x=2277, y=1643, w=9, h=7), Rect(x=2547, y=1642, w=10, h=9), Rect(x=2121, y=1644, w=12, h=13), Rect(x=1956, y=1646, w=7, h=6), Rect(x=2177, y=1647, w=9, h=9), Rect(x=2627, y=1646, w=57, h=12), Rect(x=1891, y=1648, w=9, h=7), Rect(x=2307, y=1648, w=14, h=31), Rect(x=2602, y=1651, w=7, h=7), Rect(x=2446, y=1652, w=11, h=10), Rect(x=1878, y=1655, w=10, h=7), Rect(x=2017, y=1655, w=12, h=11), Rect(x=2529, y=1654, w=14, h=13), Rect(x=2106, y=1657, w=15, h=15), Rect(x=2188, y=1657, w=7, h=8), Rect(x=2262, y=1657, w=9, h=9), Rect(x=2131, y=1660, w=46, h=27), Rect(x=2769, y=1661, w=15, h=15), Rect(x=1865, y=1662, w=9, h=7), Rect(x=2551, y=1663, w=46, h=32), Rect(x=2029, y=1665, w=8, h=10), Rect(x=2457, y=1664, w=9, h=9), Rect(x=2708, y=1665, w=46, h=12), Rect(x=2255, y=1667, w=8, h=7), Rect(x=1930, y=1668, w=12, h=11), Rect(x=2199, y=1669, w=6, h=6), Rect(x=1955, y=1670, w=61, h=12), Rect(x=2667, y=1671, w=16, h=16), Rect(x=2275, y=1675, w=37, h=9), Rect(x=2784, y=1674, w=11, h=13), Rect(x=2469, y=1677, w=15, h=14), Rect(x=2711, y=1677, w=46, h=12), Rect(x=2077, y=1678, w=22, h=22), Rect(x=1955, y=1683, w=61, h=12), Rect(x=1524, y=1987, w=49, h=61), Rect(x=1939, y=1987, w=59, h=62), Rect(x=653, y=1988, w=59, h=62), Rect(x=1617, y=2007, w=43, h=54), Rect(x=897, y=2009, w=42, h=41), Rect(x=1220, y=2009, w=33, h=42), Rect(x=1257, y=2009, w=42, h=42), Rect(x=1347, y=2008, w=30, h=43), Rect(x=1386, y=2009, w=34, h=41), Rect(x=1425, y=2009, w=43, h=42), Rect(x=1579, y=2009, w=36, h=41), Rect(x=1664, y=2009, w=41, h=40), Rect(x=1711, y=2008, w=41, h=42), Rect(x=1758, y=2008, w=33, h=42), Rect(x=2113, y=2009, w=32, h=41), Rect(x=2151, y=2009, w=42, h=40), Rect(x=2201, y=2008, w=32, h=42), Rect(x=2239, y=2008, w=39, h=59), Rect(x=2390, y=2009, w=46, h=41), Rect(x=2482, y=2009, w=39, h=40), Rect(x=2527, y=2008, w=34, h=43), Rect(x=2568, y=2008, w=60, h=43), Rect(x=2747, y=2009, w=41, h=43), Rect(x=2835, y=2009, w=38, h=60), Rect(x=721, y=2010, w=39, h=59), Rect(x=766, y=2010, w=34, h=41), Rect(x=808, y=2011, w=35, h=38), Rect(x=850, y=2011, w=41, h=40), Rect(x=943, y=2011, w=36, h=39), Rect(x=985, y=2010, w=43, h=40), Rect(x=1035, y=2010, w=34, h=41), Rect(x=1305, y=2010, w=35, h=41), Rect(x=2071, y=2010, w=34, h=41), Rect(x=2441, y=2010, w=34, h=41), Rect(x=2794, y=2010, w=33, h=42), Rect(x=2284, y=2012, w=36, h=39), Rect(x=2635, y=2012, w=42, h=39), Rect(x=1119, y=2025, w=74, h=7), Rect(x=1839, y=2024, w=72, h=7), Rect(x=525, y=2026, w=72, h=7), Rect(x=2879, y=2027, w=25, h=8), Rect(x=1798, y=2039, w=12, h=11), Rect(x=1078, y=2040, w=14, h=24), Rect(x=1558, y=2075, w=37, h=63), Rect(x=1431, y=2076, w=29, h=62), Rect(x=1688, y=2076, w=38, h=64), Rect(x=1985, y=2096, w=33, h=42), Rect(x=2078, y=2097, w=34, h=41), Rect(x=2159, y=2097, w=40, h=59), Rect(x=2409, y=2097, w=31, h=42), Rect(x=2449, y=2097, w=30, h=42), Rect(x=2486, y=2097, w=40, h=59), Rect(x=2530, y=2097, w=40, h=41), Rect(x=2665, y=2097, w=34, h=41), Rect(x=392, y=2099, w=35, h=40), Rect(x=432, y=2098, w=37, h=42), Rect(x=671, y=2099, w=39, h=59), Rect(x=807, y=2099, w=34, h=43), Rect(x=958, y=2099, w=37, h=41), Rect(x=1056, y=2099, w=44, h=41), Rect(x=1107, y=2099, w=34, h=41), Rect(x=1147, y=2098, w=41, h=59), Rect(x=1238, y=2098, w=41, h=53), Rect(x=1282, y=2099, w=21, h=40), Rect(x=1300, y=2099, w=24, h=41), Rect(x=1332, y=2099, w=32, h=42), Rect(x=1787, y=2099, w=46, h=42), Rect(x=1893, y=2098, w=42, h=40), Rect(x=1943, y=2098, w=34, h=41), Rect(x=2023, y=2098, w=49, h=40), Rect(x=2119, y=2098, w=34, h=41), Rect(x=2309, y=2099, w=37, h=41), Rect(x=2577, y=2099, w=36, h=41), Rect(x=2618, y=2098, w=39, h=40), Rect(x=2781, y=2098, w=39, h=41), Rect(x=2866, y=2099, w=35, h=42), Rect(x=474, y=2100, w=17, h=25), Rect(x=494, y=2101, w=20, h=39), Rect(x=519, y=2100, w=42, h=40), Rect(x=567, y=2101, w=41, h=40), Rect(x=715, y=2100, w=44, h=41), Rect(x=761, y=2100, w=40, h=52), Rect(x=848, y=2100, w=51, h=41), Rect(x=1192, y=2100, w=44, h=41), Rect(x=2204, y=2100, w=43, h=40), Rect(x=2825, y=2100, w=35, h=40), Rect(x=1475, y=2115, w=71, h=6), Rect(x=1605, y=2114, w=72, h=6), Rect(x=2707, y=2129, w=12, h=24), Rect(x=547, y=2167, w=37, h=62), Rect(x=392, y=2187, w=42, h=56), Rect(x=509, y=2187, w=32, h=42), Rect(x=752, y=2187, w=43, h=42), Rect(x=466, y=2189, w=35, h=40), Rect(x=589, y=2188, w=42, h=41), Rect(x=663, y=2188, w=42, h=40), Rect(x=713, y=2188, w=34, h=41), Rect(x=799, y=2188, w=44, h=56), Rect(x=845, y=2188, w=39, h=41), Rect(x=890, y=2189, w=43, h=40), Rect(x=939, y=2189, w=34, h=41), Rect(x=979, y=2188, w=33, h=42), Rect(x=1016, y=2189, w=44, h=41), Rect(x=1066, y=2219, w=12, h=11), Rect(x=523, y=2253, w=60, h=62), Rect(x=2699, y=2256, w=35, h=61), Rect(x=1969, y=2273, w=32, h=42), Rect(x=2198, y=2273, w=34, h=43), Rect(x=633, y=2275, w=57, h=42), Rect(x=696, y=2275, w=65, h=40), Rect(x=938, y=2275, w=33, h=42), Rect(x=1113, y=2275, w=39, h=59), Rect(x=1159, y=2274, w=32, h=42), Rect(x=1196, y=2275, w=43, h=42), Rect(x=1280, y=2275, w=37, h=41), Rect(x=1360, y=2274, w=32, h=43), Rect(x=1400, y=2275, w=32, h=42), Rect(x=1439, y=2275, w=39, h=59), Rect(x=1483, y=2274, w=41, h=42), Rect(x=1532, y=2275, w=34, h=41), Rect(x=1572, y=2275, w=39, h=40), Rect(x=1620, y=2275, w=34, h=41), Rect(x=1833, y=2274, w=37, h=41), Rect(x=1923, y=2275, w=40, h=52), Rect(x=2006, y=2274, w=41, h=41), Rect(x=2110, y=2275, w=40, h=40), Rect(x=2156, y=2275, w=34, h=41), Rect(x=2325, y=2274, w=32, h=43), Rect(x=2402, y=2275, w=32, h=42), Rect(x=2440, y=2274, w=32, h=41), Rect(x=2477, y=2274, w=34, h=43), Rect(x=2556, y=2275, w=42, h=41), Rect(x=2645, y=2275, w=48, h=41), Rect(x=587, y=2276, w=41, h=40), Rect(x=767, y=2276, w=38, h=42), Rect(x=846, y=2276, w=44, h=41), Rect(x=895, y=2276, w=36, h=41), Rect(x=975, y=2276, w=49, h=40), Rect(x=1031, y=2276, w=35, h=40), Rect(x=1072, y=2276, w=34, h=41), Rect(x=1698, y=2276, w=43, h=40), Rect(x=1785, y=2276, w=44, h=56), Rect(x=1876, y=2276, w=41, h=40), Rect(x=2276, y=2277, w=21, h=39), Rect(x=2295, y=2276, w=25, h=40), Rect(x=2604, y=2276, w=34, h=41), Rect(x=2739, y=2276, w=41, h=40), Rect(x=2787, y=2276, w=40, h=39), Rect(x=2835, y=2276, w=34, h=41), Rect(x=2875, y=2292, w=24, h=8), Rect(x=2056, y=2306, w=12, h=25), Rect(x=695, y=2341, w=37, h=63), Rect(x=1892, y=2341, w=37, h=63), Rect(x=2027, y=2341, w=29, h=63), Rect(x=568, y=2342, w=29, h=62), Rect(x=825, y=2343, w=38, h=64), Rect(x=1761, y=2342, w=38, h=64), Rect(x=389, y=2363, w=42, h=53), Rect(x=438, y=2364, w=41, h=40), Rect(x=897, y=2364, w=37, h=41), Rect(x=969, y=2365, w=31, h=42), Rect(x=1009, y=2365, w=31, h=42), Rect(x=1092, y=2364, w=40, h=41), Rect(x=1139, y=2365, w=38, h=42), Rect(x=1179, y=2365, w=41, h=41), Rect(x=1228, y=2365, w=32, h=42), Rect(x=1345, y=2365, w=35, h=42), Rect(x=1385, y=2365, w=41, h=41), Rect(x=1568, y=2365, w=32, h=42), Rect(x=1647, y=2365, w=33, h=42), Rect(x=1686, y=2365, w=41, h=41), Rect(x=484, y=2366, w=44, h=41), Rect(x=1047, y=2366, w=39, h=59), Rect(x=1295, y=2366, w=44, h=41), Rect(x=1432, y=2366, w=44, h=56), Rect(x=1478, y=2366, w=40, h=39), Rect(x=1525, y=2366, w=36, h=41), Rect(x=1606, y=2367, w=35, h=40), Rect(x=611, y=2380, w=73, h=7), Rect(x=742, y=2380, w=73, h=7), Rect(x=1809, y=2380, w=72, h=7), Rect(x=1941, y=2380, w=71, h=7), Rect(x=2069, y=2395, w=11, h=12), Rect(x=649, y=2429, w=59, h=64), Rect(x=2133, y=2429, w=59, h=63), Rect(x=2351, y=2430, w=60, h=64), Rect(x=1428, y=2432, w=11, h=48), Rect(x=1209, y=2434, w=37, h=62), Rect(x=713, y=2453, w=36, h=42), Rect(x=1127, y=2453, w=34, h=41), Rect(x=1251, y=2452, w=36, h=44), Rect(x=1571, y=2453, w=33, h=42), Rect(x=1609, y=2453, w=41, h=42), Rect(x=1699, y=2453, w=31, h=42), Rect(x=1897, y=2452, w=37, h=42), Rect(x=1939, y=2452, w=44, h=40), Rect(x=2314, y=2452, w=18, h=42), Rect(x=2429, y=2452, w=18, h=43), Rect(x=2532, y=2453, w=42, h=40), Rect(x=2581, y=2453, w=34, h=41), Rect(x=2620, y=2453, w=41, h=41), Rect(x=2666, y=2453, w=44, h=56), Rect(x=2717, y=2453, w=33, h=40), Rect(x=2757, y=2452, w=34, h=41), Rect(x=2800, y=2452, w=29, h=41), Rect(x=716, y=2454, w=10, h=14), Rect(x=754, y=2454, w=43, h=42), Rect(x=878, y=2454, w=39, h=59), Rect(x=924, y=2455, w=36, h=41), Rect(x=965, y=2454, w=32, h=43), Rect(x=1075, y=2454, w=44, h=40), Rect(x=1168, y=2454, w=34, h=41), Rect(x=1294, y=2454, w=39, h=59), Rect(x=1339, y=2454, w=34, h=41), Rect(x=1380, y=2454, w=34, h=41), Rect(x=1657, y=2454, w=36, h=41), Rect(x=1738, y=2454, w=34, h=41), Rect(x=1777, y=2455, w=41, h=40), Rect(x=2198, y=2454, w=31, h=42), Rect(x=2419, y=2455, w=14, h=37), Rect(x=2837, y=2454, w=33, h=39), Rect(x=2328, y=2456, w=14, h=34), Rect(x=520, y=2465, w=75, h=10), Rect(x=2032, y=2467, w=72, h=6), Rect(x=1471, y=2469, w=73, h=8), Rect(x=2876, y=2468, w=24, h=8), Rect(x=1427, y=2482, w=12, h=13), Rect(x=1991, y=2482, w=11, h=12), Rect(x=548, y=2521, w=53, h=62), Rect(x=509, y=2541, w=18, h=42), Rect(x=388, y=2542, w=34, h=41), Rect(x=426, y=2542, w=23, h=42), Rect(x=449, y=2542, w=20, h=41), Rect(x=622, y=2542, w=18, h=42), Rect(x=613, y=2545, w=13, h=36), Rect(x=522, y=2546, w=15, h=34), Rect(x=654, y=2574, w=12, h=11), Rect(x=653, y=2610, w=58, h=62), Rect(x=2316, y=2610, w=25, h=62), Rect(x=2340, y=2610, w=36, h=62), Rect(x=1586, y=2615, w=25, h=13), Rect(x=882, y=2631, w=32, h=42), Rect(x=970, y=2631, w=32, h=42), Rect(x=1009, y=2631, w=39, h=59), Rect(x=1444, y=2631, w=36, h=39), Rect(x=1485, y=2631, w=41, h=41), Rect(x=1829, y=2630, w=37, h=41), Rect(x=1872, y=2631, w=20, h=40), Rect(x=1891, y=2631, w=22, h=40), Rect(x=1919, y=2631, w=40, h=58), Rect(x=1964, y=2631, w=42, h=56), Rect(x=2010, y=2631, w=31, h=40), Rect(x=2048, y=2630, w=34, h=41), Rect(x=2089, y=2631, w=35, h=38), Rect(x=2131, y=2631, w=42, h=56), Rect(x=2177, y=2631, w=20, h=39), Rect(x=2196, y=2630, w=37, h=42), Rect(x=2437, y=2631, w=33, h=42), Rect(x=2529, y=2631, w=34, h=41), Rect(x=2571, y=2631, w=33, h=40), Rect(x=2611, y=2630, w=39, h=59), Rect(x=2655, y=2631, w=21, h=40), Rect(x=2676, y=2631, w=19, h=40), Rect(x=2864, y=2631, w=33, h=40), Rect(x=718, y=2633, w=43, h=57), Rect(x=920, y=2632, w=42, h=40), Rect(x=1148, y=2633, w=46, h=41), Rect(x=1200, y=2632, w=32, h=42), Rect(x=1238, y=2632, w=40, h=59), Rect(x=1286, y=2632, w=31, h=41), Rect(x=1324, y=2632, w=33, h=42), Rect(x=1361, y=2632, w=34, h=41), Rect(x=1403, y=2632, w=36, h=41), Rect(x=1532, y=2632, w=42, h=41), Rect(x=1578, y=2632, w=44, h=41), Rect(x=1680, y=2633, w=44, h=41), Rect(x=1730, y=2632, w=42, h=41), Rect(x=2475, y=2632, w=31, h=40), Rect(x=2505, y=2632, w=18, h=40), Rect(x=2777, y=2632, w=36, h=40), Rect(x=2822, y=2633, w=11, h=13), Rect(x=2830, y=2633, w=17, h=39), Rect(x=2844, y=2633, w=11, h=12), Rect(x=840, y=2635, w=35, h=40), Rect(x=1054, y=2634, w=36, h=39), Rect(x=523, y=2646, w=75, h=8), Rect(x=767, y=2662, w=13, h=25), Rect(x=2243, y=2662, w=11, h=11), Rect(x=2703, y=2663, w=14, h=24), Rect(x=389, y=2718, w=35, h=40), Rect(x=490, y=2719, w=42, h=41), Rect(x=430, y=2720, w=55, h=39), Rect(x=537, y=2720, w=35, h=42), Rect(x=578, y=2721, w=40, h=52), Rect(x=740, y=2720, w=37, h=41), Rect(x=814, y=2721, w=31, h=42), Rect(x=853, y=2721, w=32, h=41), Rect(x=892, y=2721, w=40, h=59), Rect(x=936, y=2721, w=42, h=41), Rect(x=1073, y=2721, w=32, h=42), Rect(x=623, y=2722, w=41, h=40), Rect(x=672, y=2722, w=33, h=40), Rect(x=986, y=2722, w=34, h=41), Rect(x=1025, y=2722, w=41, h=40), Rect(x=1115, y=2751, w=11, h=13), Rect(x=519, y=2786, w=60, h=62), Rect(x=667, y=2786, w=37, h=63), Rect(x=1878, y=2787, w=38, h=64), Rect(x=2009, y=2786, w=37, h=63), Rect(x=2255, y=2786, w=38, h=64), Rect(x=2516, y=2787, w=37, h=63), Rect(x=797, y=2788, w=38, h=64), Rect(x=933, y=2789, w=30, h=63), Rect(x=1751, y=2789, w=29, h=62), Rect(x=2390, y=2788, w=29, h=62), Rect(x=1485, y=2809, w=36, h=41), Rect(x=1521, y=2809, w=20, h=41), Rect(x=1613, y=2809, w=41, h=41), Rect(x=2058, y=2809, w=12, h=13), Rect(x=2603, y=2809, w=42, h=40), Rect(x=2651, y=2809, w=35, h=42), Rect(x=2690, y=2809, w=41, h=41), Rect(x=584, y=2810, w=31, h=42), Rect(x=1015, y=2811, w=37, h=41), Rect(x=1100, y=2810, w=31, h=42), Rect(x=1140, y=2810, w=32, h=42), Rect(x=1179, y=2810, w=39, h=59), Rect(x=1223, y=2810, w=41, h=42), Rect(x=1271, y=2811, w=36, h=41), Rect(x=1311, y=2810, w=43, h=42), Rect(x=1360, y=2811, w=32, h=42), Rect(x=1442, y=2810, w=37, h=41), Rect(x=1545, y=2810, w=65, h=40), Rect(x=2175, y=2810, w=9, h=16), Rect(x=2173, y=2810, w=32, h=42), Rect(x=2736, y=2810, w=42, h=56), Rect(x=2782, y=2810, w=36, h=40), Rect(x=2825, y=2810, w=19, h=40), Rect(x=2845, y=2811, w=22, h=39), Rect(x=1662, y=2812, w=34, h=41), Rect(x=2125, y=2812, w=21, h=40), Rect(x=2143, y=2812, w=24, h=39), Rect(x=714, y=2825, w=72, h=7), Rect(x=2304, y=2825, w=70, h=6), Rect(x=2433, y=2825, w=72, h=7), Rect(x=2872, y=2825, w=26, h=8), Rect(x=845, y=2826, w=73, h=7), Rect(x=1795, y=2826, w=72, h=6), Rect(x=1927, y=2826, w=70, h=6), Rect(x=2058, y=2839, w=13, h=25), Rect(x=584, y=2876, w=38, h=61), Rect(x=720, y=2877, w=29, h=62), Rect(x=846, y=2878, w=38, h=62), Rect(x=384, y=2897, w=44, h=40), Rect(x=435, y=2896, w=34, h=41), Rect(x=475, y=2896, w=34, h=43), Rect(x=513, y=2899, w=36, h=39), Rect(x=633, y=2915, w=71, h=5), Rect(x=762, y=2915, w=74, h=6), Rect(x=892, y=2929, w=12, h=12), Rect(x=648, y=2963, w=58, h=62), Rect(x=2086, y=2965, w=52, h=61), Rect(x=2619, y=2983, w=40, h=41), Rect(x=1703, y=2985, w=33, h=42), Rect(x=1741, y=2985, w=42, h=40), Rect(x=1790, y=2984, w=39, h=59), Rect(x=1835, y=2985, w=34, h=41), Rect(x=1877, y=2985, w=33, h=42), Rect(x=2275, y=2984, w=40, h=41), Rect(x=2322, y=2984, w=33, h=42), Rect(x=2502, y=2985, w=26, h=40), Rect(x=2529, y=2985, w=22, h=40), Rect(x=2558, y=2984, w=34, h=41), Rect(x=2599, y=2984, w=15, h=17), Rect(x=2664, y=2985, w=41, h=40), Rect(x=2808, y=2984, w=42, h=41), Rect(x=2855, y=2984, w=43, h=42), Rect(x=712, y=2986, w=44, h=56), Rect(x=837, y=2986, w=42, h=41), Rect(x=926, y=2987, w=43, h=42), Rect(x=1219, y=2987, w=40, h=52), Rect(x=1411, y=2986, w=32, h=42), Rect(x=1448, y=2987, w=66, h=39), Rect(x=1519, y=2987, w=36, h=39), Rect(x=1914, y=2986, w=41, h=40), Rect(x=1961, y=2987, w=41, h=41), Rect(x=2142, y=2986, w=34, h=41), Rect(x=2182, y=2986, w=40, h=52), Rect(x=2228, y=2986, w=41, h=40), Rect(x=885, y=2988, w=36, h=41), Rect(x=1047, y=2989, w=33, h=40), Rect(x=1085, y=2988, w=36, h=41), Rect(x=1121, y=2988, w=21, h=40), Rect(x=1264, y=2988, w=44, h=56), Rect(x=1312, y=2988, w=49, h=40), Rect(x=1368, y=2988, w=36, h=41), Rect(x=2713, y=2988, w=34, h=41), Rect(x=519, y=3000, w=74, h=9), Rect(x=1603, y=3001, w=73, h=7), Rect(x=2403, y=3000, w=71, h=7), Rect(x=2598, y=3003, w=20, h=22), Rect(x=1562, y=3014, w=14, h=24), Rect(x=2361, y=3014, w=12, h=24), Rect(x=761, y=3018, w=14, h=24), Rect(x=1500, y=3057, w=35, h=61), Rect(x=432, y=3072, w=42, h=41), Rect(x=521, y=3073, w=62, h=42), Rect(x=387, y=3074, w=44, h=56), Rect(x=480, y=3074, w=34, h=41), Rect(x=766, y=3075, w=42, h=41), Rect(x=856, y=3075, w=43, h=60), Rect(x=942, y=3075, w=34, h=41), Rect(x=1027, y=3075, w=42, h=41), Rect(x=1746, y=3075, w=44, h=41), Rect(x=1797, y=3075, w=32, h=42), Rect(x=1835, y=3074, w=40, h=59), Rect(x=2014, y=3075, w=31, h=42), Rect(x=2053, y=3075, w=32, h=42), Rect(x=2092, y=3074, w=40, h=61), Rect(x=2136, y=3074, w=41, h=42), Rect(x=2184, y=3074, w=34, h=41), Rect(x=2224, y=3074, w=41, h=41), Rect(x=2271, y=3075, w=34, h=41), Rect(x=2606, y=3075, w=32, h=43), Rect(x=2645, y=3075, w=32, h=42), Rect(x=2728, y=3074, w=41, h=43), Rect(x=2775, y=3074, w=35, h=43), Rect(x=2814, y=3075, w=42, h=42), Rect(x=2862, y=3075, w=33, h=43), Rect(x=587, y=3076, w=43, h=40), Rect(x=637, y=3076, w=34, h=41), Rect(x=676, y=3077, w=36, h=39), Rect(x=814, y=3076, w=34, h=41), Rect(x=902, y=3077, w=33, h=40), Rect(x=981, y=3077, w=40, h=39), Rect(x=1171, y=3076, w=34, h=41), Rect(x=1214, y=3076, w=34, h=41), Rect(x=1255, y=3076, w=41, h=42), Rect(x=1371, y=3077, w=40, h=40), Rect(x=1460, y=3076, w=34, h=41), Rect(x=1542, y=3076, w=35, h=40), Rect(x=1576, y=3076, w=21, h=40), Rect(x=1649, y=3076, w=44, h=42), Rect(x=1882, y=3076, w=32, h=42), Rect(x=1919, y=3077, w=40, h=52), Rect(x=2312, y=3076, w=51, h=41), Rect(x=2416, y=3077, w=43, h=40), Rect(x=2514, y=3076, w=37, h=41), Rect(x=2684, y=3076, w=40, h=59), Rect(x=1074, y=3078, w=43, h=40), Rect(x=1419, y=3078, w=33, h=40), Rect(x=1303, y=3107, w=13, h=26), Rect(x=1932, y=3144, w=28, h=49), Rect(x=386, y=3163, w=42, h=40), Rect(x=435, y=3164, w=34, h=41), Rect(x=476, y=3164, w=39, h=40), Rect(x=521, y=3165, w=44, h=56), Rect(x=567, y=3165, w=40, h=40), Rect(x=659, y=3164, w=43, h=42), Rect(x=708, y=3165, w=34, h=41), Rect(x=749, y=3165, w=33, h=42), Rect(x=787, y=3165, w=36, h=41), Rect(x=1178, y=3165, w=34, h=43), Rect(x=1246, y=3164, w=64, h=44), Rect(x=1383, y=3164, w=40, h=61), Rect(x=1471, y=3165, w=33, h=42), Rect(x=1603, y=3164, w=36, h=42), Rect(x=1687, y=3164, w=62, h=42), Rect(x=1755, y=3165, w=32, h=42), Rect(x=1793, y=3165, w=43, h=41), Rect(x=1892, y=3165, w=32, h=42), Rect(x=613, y=3166, w=43, h=40), Rect(x=857, y=3166, w=34, h=41), Rect(x=896, y=3166, w=41, h=53), Rect(x=941, y=3166, w=44, h=40), Rect(x=991, y=3166, w=34, h=41), Rect(x=1059, y=3166, w=44, h=41), Rect(x=1137, y=3166, w=34, h=41), Rect(x=1316, y=3166, w=32, h=42), Rect(x=1430, y=3166, w=36, h=41), Rect(x=1509, y=3166, w=42, h=40), Rect(x=1558, y=3166, w=34, h=41), Rect(x=1646, y=3166, w=34, h=41), Rect(x=1841, y=3166, w=43, h=40), Rect(x=1597, y=3192, w=16, h=14), Rect(x=1937, y=3195, w=12, h=12), Rect(x=1400, y=3220, w=5, h=4), Rect(x=1884, y=3231, w=60, h=62), Rect(x=2321, y=3231, w=60, h=63), Rect(x=647, y=3232, w=61, h=62), Rect(x=792, y=3253, w=32, h=42), Rect(x=1052, y=3253, w=41, h=42), Rect(x=1435, y=3253, w=32, h=42), Rect(x=1472, y=3253, w=42, h=54), Rect(x=1663, y=3253, w=32, h=42), Rect(x=1700, y=3253, w=44, h=41), Rect(x=1797, y=3253, w=43, h=40), Rect(x=1948, y=3252, w=41, h=41), Rect(x=2057, y=3253, w=65, h=40), Rect(x=2129, y=3253, w=34, h=41), Rect(x=2641, y=3253, w=62, h=42), Rect(x=2783, y=3252, w=32, h=44), Rect(x=2860, y=3253, w=36, h=42), Rect(x=741, y=3254, w=44, h=40), Rect(x=1014, y=3254, w=33, h=42), Rect(x=1100, y=3254, w=34, h=41), Rect(x=1143, y=3254, w=30, h=41), Rect(x=1181, y=3254, w=34, h=41), Rect(x=1305, y=3255, w=36, h=40), Rect(x=1383, y=3255, w=44, h=40), Rect(x=1518, y=3254, w=34, h=41), Rect(x=1558, y=3255, w=44, h=56), Rect(x=1606, y=3254, w=51, h=41), Rect(x=1749, y=3254, w=43, h=39), Rect(x=1995, y=3254, w=57, h=41), Rect(x=2386, y=3255, w=44, h=56), Rect(x=2469, y=3254, w=42, h=41), Rect(x=2517, y=3255, w=34, h=41), Rect(x=2556, y=3254, w=43, h=42), Rect(x=2709, y=3254, w=32, h=42), Rect(x=2820, y=3254, w=35, h=41), Rect(x=831, y=3256, w=33, h=39), Rect(x=1220, y=3257, w=43, h=42), Rect(x=520, y=3268, w=72, h=6), Rect(x=914, y=3269, w=73, h=7), Rect(x=2218, y=3269, w=73, h=7), Rect(x=712, y=3270, w=26, h=6), Rect(x=2172, y=3283, w=12, h=12), Rect(x=872, y=3284, w=14, h=24), Rect(x=765, y=3321, w=28, h=48), Rect(x=832, y=3320, w=60, h=63), Rect(x=1296, y=3322, w=11, h=47), Rect(x=429, y=3341, w=34, h=41), Rect(x=470, y=3341, w=31, h=42), Rect(x=605, y=3340, w=62, h=42), Rect(x=386, y=3343, w=35, h=38), Rect(x=508, y=3342, w=49, h=40), Rect(x=564, y=3342, w=34, h=41), Rect(x=671, y=3342, w=44, h=40), Rect(x=722, y=3342, w=34, h=41), Rect(x=899, y=3342, w=32, h=42), Rect(x=1079, y=3342, w=31, h=42), Rect(x=1116, y=3343, w=41, h=41), Rect(x=1205, y=3343, w=31, h=42), Rect(x=1243, y=3343, w=42, h=41), Rect(x=938, y=3344, w=34, h=41), Rect(x=1028, y=3344, w=44, h=40), Rect(x=1163, y=3345, w=36, h=39), Rect(x=769, y=3372, w=12, h=12), Rect(x=980, y=3372, w=13, h=25), Rect(x=1295, y=3372, w=12, h=12), Rect(x=646, y=3409, w=52, h=62), Rect(x=1975, y=3409, w=44, h=63), Rect(x=746, y=3430, w=41, h=42), Rect(x=937, y=3431, w=34, h=41), Rect(x=1017, y=3431, w=37, h=40), Rect(x=1062, y=3430, w=32, h=42), Rect(x=1526, y=3431, w=33, h=42), Rect(x=1785, y=3431, w=41, h=42), Rect(x=2025, y=3431, w=41, h=40), Rect(x=2075, y=3430, w=36, h=43), Rect(x=2115, y=3430, w=39, h=41), Rect(x=2161, y=3431, w=41, h=40), Rect(x=2209, y=3431, w=34, h=41), Rect(x=2529, y=3431, w=41, h=55), Rect(x=2755, y=3430, w=40, h=61), Rect(x=705, y=3432, w=36, h=41), Rect(x=979, y=3433, w=33, h=40), Rect(x=1099, y=3433, w=40, h=39), Rect(x=1147, y=3432, w=36, h=41), Rect(x=1187, y=3432, w=41, h=41), Rect(x=1276, y=3432, w=32, h=42), Rect(x=1315, y=3432, w=31, h=40), Rect(x=1351, y=3433, w=36, h=41), Rect(x=1434, y=3433, w=44, h=40), Rect(x=1484, y=3433, w=36, h=41), Rect(x=1606, y=3432, w=34, h=41), Rect(x=1646, y=3432, w=37, h=40), Rect(x=1689, y=3433, w=41, h=40), Rect(x=1737, y=3433, w=43, h=40), Rect(x=2352, y=3433, w=34, h=41), Rect(x=2394, y=3432, w=51, h=41), Rect(x=2489, y=3433, w=35, h=42), Rect(x=2574, y=3432, w=42, h=42), Rect(x=2621, y=3432, w=43, h=41), Rect(x=2709, y=3433, w=42, h=41), Rect(x=2799, y=3433, w=42, h=56), Rect(x=2846, y=3432, w=30, h=41), Rect(x=1564, y=3434, w=33, h=40), Rect(x=2312, y=3434, w=33, h=40), Rect(x=520, y=3445, w=73, h=7), Rect(x=836, y=3447, w=73, h=6), Rect(x=1875, y=3448, w=73, h=6), Rect(x=795, y=3461, w=14, h=24), Rect(x=2881, y=3460, w=15, h=26), Rect(x=1838, y=3462, w=8, h=10), Rect(x=2252, y=3463, w=12, h=25), Rect(x=1043, y=3499, w=61, h=64), Rect(x=1675, y=3500, w=52, h=62), Rect(x=2192, y=3500, w=56, h=80), Rect(x=939, y=3502, w=25, h=14), Rect(x=1572, y=3506, w=10, h=11), Rect(x=1588, y=3507, w=10, h=10), Rect(x=387, y=3519, w=35, h=42), Rect(x=471, y=3518, w=32, h=43), Rect(x=508, y=3521, w=40, h=52), Rect(x=555, y=3520, w=32, h=42), Rect(x=593, y=3520, w=33, h=42), Rect(x=715, y=3521, w=42, h=54), Rect(x=762, y=3521, w=39, h=59), Rect(x=1530, y=3521, w=32, h=43), Rect(x=1773, y=3521, w=33, h=42), Rect(x=1937, y=3521, w=31, h=42), Rect(x=1974, y=3521, w=42, h=41), Rect(x=2022, y=3521, w=39, h=59), Rect(x=2069, y=3520, w=31, h=42), Rect(x=2256, y=3521, w=39, h=59), Rect(x=2550, y=3521, w=9, h=12), Rect(x=631, y=3522, w=36, h=39), Rect(x=805, y=3522, w=44, h=56), Rect(x=853, y=3522, w=31, h=40), Rect(x=890, y=3522, w=34, h=41), Rect(x=930, y=3522, w=43, h=40), Rect(x=1110, y=3523, w=44, h=56), Rect(x=1223, y=3522, w=37, h=41), Rect(x=1268, y=3523, w=34, h=41), Rect(x=1393, y=3523, w=43, h=40), Rect(x=1486, y=3522, w=37, h=41), Rect(x=1569, y=3522, w=32, h=42), Rect(x=1735, y=3522, w=32, h=42), Rect(x=1812, y=3523, w=35, h=40), Rect(x=1897, y=3522, w=33, h=42), Rect(x=2107, y=3523, w=34, h=41), Rect(x=2302, y=3523, w=34, h=41), Rect(x=2344, y=3522, w=30, h=41), Rect(x=2380, y=3523, w=41, h=40), Rect(x=2428, y=3523, w=41, h=40), Rect(x=2475, y=3522, w=40, h=40), Rect(x=2520, y=3523, w=20, h=40), Rect(x=2567, y=3523, w=43, h=40), Rect(x=2658, y=3522, w=37, h=41), Rect(x=2784, y=3523, w=35, h=42), Rect(x=2825, y=3523, w=49, h=40), Rect(x=1310, y=3524, w=33, h=40), Rect(x=2744, y=3524, w=34, h=41), Rect(x=2538, y=3527, w=18, h=36), Rect(x=2881, y=3550, w=14, h=25), Rect(x=983, y=3553, w=12, h=12), Rect(x=1159, y=3553, w=14, h=24), Rect(x=1610, y=3553, w=12, h=11), Rect(x=1500, y=3593, w=25, h=13), Rect(x=383, y=3609, w=20, h=25), Rect(x=797, y=3609, w=39, h=59), Rect(x=1821, y=3609, w=65, h=40), Rect(x=1891, y=3608, w=41, h=42), Rect(x=2151, y=3608, w=32, h=42), Rect(x=2235, y=3609, w=66, h=54), Rect(x=2353, y=3609, w=34, h=41), Rect(x=2394, y=3609, w=32, h=42), Rect(x=2472, y=3609, w=26, h=40), Rect(x=2633, y=3609, w=34, h=41), Rect(x=2805, y=3609, w=25, h=42), Rect(x=2826, y=3609, w=40, h=41), Rect(x=402, y=3610, w=20, h=38), Rect(x=429, y=3610, w=33, h=40), Rect(x=470, y=3610, w=34, h=41), Rect(x=561, y=3610, w=34, h=41), Rect(x=602, y=3610, w=34, h=41), Rect(x=643, y=3610, w=51, h=41), Rect(x=747, y=3610, w=44, h=41), Rect(x=842, y=3611, w=43, h=40), Rect(x=938, y=3611, w=44, h=40), Rect(x=1029, y=3610, w=41, h=41), Rect(x=1124, y=3611, w=40, h=39), Rect(x=1169, y=3611, w=43, h=39), Rect(x=1217, y=3611, w=44, h=41), Rect(x=1316, y=3611, w=36, h=41), Rect(x=1357, y=3610, w=41, h=53), Rect(x=1402, y=3610, w=43, h=40), Rect(x=1452, y=3610, w=34, h=41), Rect(x=1491, y=3611, w=21, h=40), Rect(x=1511, y=3611, w=24, h=40), Rect(x=1587, y=3611, w=44, h=41), Rect(x=1636, y=3611, w=42, h=56), Rect(x=1683, y=3610, w=33, h=42), Rect(x=1722, y=3611, w=33, h=40), Rect(x=1760, y=3611, w=36, h=39), Rect(x=1796, y=3610, w=20, h=40), Rect(x=1938, y=3610, w=41, h=40), Rect(x=2057, y=3610, w=37, h=41), Rect(x=2189, y=3610, w=42, h=56), Rect(x=2305, y=3610, w=41, h=40), Rect(x=2432, y=3610, w=34, h=41), Rect(x=2495, y=3610, w=19, h=39), Rect(x=2590, y=3610, w=36, h=40), Rect(x=2674, y=3610, w=30, h=41), Rect(x=2711, y=3610, w=48, h=40), Rect(x=2765, y=3610, w=34, h=41), Rect(x=989, y=3612, w=36, h=41), Rect(x=1076, y=3612, w=43, h=40), Rect(x=2872, y=3625, w=25, h=8), Rect(x=2710, y=3633, w=16, h=18), Rect(x=1988, y=3641, w=12, h=24), Rect(x=2521, y=3641, w=12, h=24), Rect(x=1828, y=3675, w=59, h=63), Rect(x=2145, y=3675, w=57, h=80), Rect(x=386, y=3696, w=27, h=39), Rect(x=409, y=3697, w=19, h=39), Rect(x=435, y=3696, w=20, h=40), Rect(x=470, y=3696, w=20, h=41), Rect(x=579, y=3697, w=34, h=41), Rect(x=617, y=3697, w=42, h=41), Rect(x=705, y=3697, w=42, h=41), Rect(x=752, y=3697, w=37, h=42), Rect(x=835, y=3697, w=42, h=41), Rect(x=1289, y=3697, w=32, h=42), Rect(x=1554, y=3696, w=23, h=43), Rect(x=2059, y=3697, w=37, h=41), Rect(x=2209, y=3697, w=39, h=59), Rect(x=2473, y=3697, w=41, h=42), Rect(x=537, y=3698, w=34, h=41), Rect(x=665, y=3699, w=36, h=39), Rect(x=884, y=3698, w=39, h=59), Rect(x=927, y=3699, w=44, h=56), Rect(x=975, y=3698, w=32, h=41), Rect(x=1012, y=3699, w=34, h=41), Rect(x=1053, y=3698, w=37, h=41), Rect(x=1095, y=3698, w=36, h=41), Rect(x=1131, y=3698, w=20, h=41), Rect(x=1159, y=3698, w=32, h=42), Rect(x=1237, y=3699, w=44, h=41), Rect(x=1328, y=3698, w=39, h=59), Rect(x=1375, y=3699, w=32, h=42), Rect(x=1415, y=3698, w=32, h=42), Rect(x=1493, y=3699, w=36, h=41), Rect(x=1584, y=3699, w=34, h=41), Rect(x=1625, y=3698, w=37, h=41), Rect(x=1667, y=3699, w=41, h=42), Rect(x=1893, y=3699, w=31, h=40), Rect(x=1930, y=3698, w=39, h=59), Rect(x=1976, y=3699, w=36, h=41), Rect(x=2255, y=3699, w=34, h=41), Rect(x=2297, y=3699, w=30, h=41), Rect(x=2333, y=3698, w=19, h=40), Rect(x=2354, y=3699, w=22, h=39), Rect(x=2381, y=3699, w=43, h=40), Rect(x=2428, y=3698, w=41, h=41), Rect(x=2520, y=3699, w=41, h=56), Rect(x=2629, y=3699, w=41, h=40), Rect(x=2657, y=3698, w=11, h=11), Rect(x=2677, y=3699, w=34, h=41), Rect(x=2717, y=3699, w=41, h=41), Rect(x=2743, y=3698, w=14, h=12), Rect(x=2843, y=3699, w=34, h=40), Rect(x=2878, y=3699, w=24, h=41), Rect(x=1453, y=3700, w=33, h=40), Rect(x=1535, y=3700, w=20, h=39), Rect(x=1714, y=3700, w=42, h=39), Rect(x=2805, y=3700, w=33, h=40), Rect(x=1552, y=3710, w=7, h=9), Rect(x=452, y=3714, w=17, h=21), Rect(x=1764, y=3729, w=11, h=12), Rect(x=2568, y=3729, w=12, h=24), Rect(x=1945, y=3766, w=37, h=62), Rect(x=2147, y=3785, w=19, h=41), Rect(x=386, y=3786, w=21, h=39), Rect(x=404, y=3786, w=25, h=40), Rect(x=471, y=3787, w=31, h=40), Rect(x=509, y=3786, w=34, h=41), Rect(x=552, y=3786, w=49, h=40), Rect(x=641, y=3786, w=42, h=40), Rect(x=691, y=3787, w=34, h=41), Rect(x=731, y=3787, w=42, h=40), Rect(x=829, y=3787, w=49, h=40), Rect(x=884, y=3787, w=35, h=41), Rect(x=928, y=3786, w=32, h=42), Rect(x=966, y=3786, w=65, h=40), Rect(x=1136, y=3787, w=31, h=41), Rect(x=1214, y=3787, w=35, h=42), Rect(x=1291, y=3787, w=44, h=41), Rect(x=1378, y=3787, w=39, h=59), Rect(x=1469, y=3787, w=65, h=40), Rect(x=1539, y=3787, w=42, h=41), Rect(x=1686, y=3787, w=42, h=40), Rect(x=1736, y=3787, w=34, h=41), Rect(x=1989, y=3786, w=32, h=42), Rect(x=2029, y=3787, w=9, h=14), Rect(x=2028, y=3787, w=30, h=41), Rect(x=2063, y=3787, w=40, h=52), Rect(x=2110, y=3786, w=32, h=42), Rect(x=2167, y=3787, w=20, h=39), Rect(x=2193, y=3786, w=41, h=42), Rect(x=2240, y=3787, w=36, h=41), Rect(x=2388, y=3787, w=34, h=41), Rect(x=2508, y=3787, w=34, h=41), Rect(x=2549, y=3787, w=34, h=41), Rect(x=2729, y=3786, w=31, h=42), Rect(x=2861, y=3787, w=37, h=42), Rect(x=780, y=3788, w=41, h=40), Rect(x=1036, y=3788, w=36, h=39), Rect(x=1174, y=3788, w=33, h=40), Rect(x=1341, y=3788, w=31, h=40), Rect(x=1422, y=3788, w=44, h=56), Rect(x=1587, y=3788, w=34, h=41), Rect(x=1774, y=3789, w=40, h=39), Rect(x=1821, y=3788, w=33, h=40), Rect(x=1860, y=3788, w=23, h=40), Rect(x=1883, y=3788, w=20, h=40), Rect(x=2338, y=3788, w=44, h=40), Rect(x=2464, y=3788, w=36, h=40), Rect(x=2625, y=3788, w=41, h=40), Rect(x=2674, y=3788, w=49, h=40), Rect(x=2766, y=3788, w=41, h=40), Rect(x=2814, y=3788, w=41, h=40), Rect(x=1630, y=3817, w=13, h=25), Rect(x=2284, y=3817, w=12, h=24), Rect(x=1080, y=3818, w=14, h=24), Rect(x=1190, y=3857, w=25, h=13), Rect(x=436, y=3873, w=30, h=42), Rect(x=502, y=3873, w=31, h=42), Rect(x=387, y=3874, w=21, h=40), Rect(x=412, y=3875, w=17, h=20), Rect(x=542, y=3875, w=34, h=41), Rect(x=655, y=3875, w=34, h=41), Rect(x=696, y=3875, w=31, h=40), Rect(x=986, y=3875, w=37, h=41), Rect(x=1061, y=3875, w=32, h=42), Rect(x=1601, y=3875, w=32, h=42), Rect(x=1678, y=3875, w=37, h=40), Rect(x=1903, y=3875, w=30, h=41), Rect(x=2060, y=3875, w=42, h=42), Rect(x=2109, y=3874, w=39, h=59), Rect(x=2236, y=3875, w=34, h=41), Rect(x=2278, y=3875, w=35, h=41), Rect(x=2541, y=3875, w=39, h=58), Rect(x=2587, y=3875, w=31, h=41), Rect(x=2625, y=3875, w=32, h=42), Rect(x=615, y=3876, w=33, h=40), Rect(x=734, y=3876, w=34, h=41), Rect(x=827, y=3876, w=40, h=40), Rect(x=874, y=3877, w=33, h=40), Rect(x=914, y=3876, w=35, h=42), Rect(x=1100, y=3877, w=33, h=40), Rect(x=1141, y=3876, w=34, h=41), Rect(x=1181, y=3876, w=43, h=40), Rect(x=1312, y=3876, w=31, h=40), Rect(x=1349, y=3876, w=39, h=59), Rect(x=1397, y=3876, w=31, h=42), Rect(x=1466, y=3876, w=42, h=56), Rect(x=1511, y=3877, w=40, h=39), Rect(x=1559, y=3876, w=34, h=41), Rect(x=1720, y=3876, w=42, h=56), Rect(x=1767, y=3876, w=21, h=40), Rect(x=1786, y=3876, w=37, h=42), Rect(x=1831, y=3877, w=33, h=40), Rect(x=1940, y=3877, w=33, h=40), Rect(x=1980, y=3877, w=20, h=39), Rect(x=2003, y=3877, w=20, h=40), Rect(x=2153, y=3876, w=42, h=55), Rect(x=2199, y=3876, w=31, h=40), Rect(x=2319, y=3876, w=35, h=40), Rect(x=2355, y=3876, w=20, h=40), Rect(x=2381, y=3876, w=33, h=41), Rect(x=2451, y=3876, w=42, h=40), Rect(x=2503, y=3876, w=31, h=40), Rect(x=2663, y=3877, w=33, h=40), Rect(x=2703, y=3876, w=34, h=41), Rect(x=2744, y=3876, w=23, h=40), Rect(x=2765, y=3877, w=19, h=40), Rect(x=2791, y=3876, w=34, h=41), Rect(x=2831, y=3876, w=37, h=41), Rect(x=1262, y=3878, w=43, h=40), Rect(x=1639, y=3878, w=33, h=40), Rect(x=473, y=3891, w=24, h=5), Rect(x=2873, y=3891, w=25, h=9), Rect(x=1996, y=3892, w=8, h=13), Rect(x=412, y=3902, w=17, h=12), Rect(x=777, y=3906, w=12, h=24), Rect(x=403, y=3963, w=21, h=40), Rect(x=432, y=3963, w=41, h=40), Rect(x=539, y=3963, w=34, h=41), Rect(x=615, y=3963, w=42, h=41), Rect(x=787, y=3963, w=39, h=59), Rect(x=1570, y=3963, w=39, h=58), Rect(x=1720, y=3963, w=32, h=42), Rect(x=1973, y=3963, w=32, h=42), Rect(x=2010, y=3963, w=41, h=41), Rect(x=2142, y=3962, w=32, h=42), Rect(x=2502, y=3963, w=38, h=57), Rect(x=2591, y=3963, w=65, h=40), Rect(x=2661, y=3963, w=39, h=41), Rect(x=2784, y=3963, w=32, h=42), Rect(x=384, y=3964, w=19, h=39), Rect(x=663, y=3964, w=34, h=41), Rect(x=705, y=3965, w=33, h=40), Rect(x=746, y=3964, w=34, h=41), Rect(x=831, y=3964, w=35, h=40), Rect(x=866, y=3965, w=21, h=39), Rect(x=892, y=3964, w=42, h=41), Rect(x=976, y=3965, w=49, h=40), Rect(x=1030, y=3965, w=36, h=41), Rect(x=1130, y=3964, w=32, h=42), Rect(x=1168, y=3964, w=67, h=53), Rect(x=1241, y=3964, w=32, h=42), Rect(x=1316, y=3965, w=42, h=40), Rect(x=1366, y=3965, w=34, h=41), Rect(x=1407, y=3965, w=31, h=40), Rect(x=1445, y=3964, w=34, h=41), Rect(x=1529, y=3965, w=34, h=41), Rect(x=1616, y=3965, w=41, h=40), Rect(x=1664, y=3965, w=49, h=40), Rect(x=1756, y=3964, w=42, h=41), Rect(x=1840, y=3965, w=35, h=38), Rect(x=1882, y=3964, w=42, h=40), Rect(x=1932, y=3964, w=34, h=41), Rect(x=2059, y=3964, w=31, h=40), Rect(x=2101, y=3964, w=16, h=15), Rect(x=2096, y=3964, w=41, h=52), Rect(x=2179, y=3964, w=33, h=39), Rect(x=2219, y=3964, w=36, h=40), Rect(x=2261, y=3964, w=43, h=40), Rect(x=2310, y=3964, w=41, h=40), Rect(x=2417, y=3964, w=43, h=40), Rect(x=2465, y=3964, w=31, h=40), Rect(x=2546, y=3964, w=29, h=56), Rect(x=2571, y=3964, w=16, h=19), Rect(x=2707, y=3965, w=34, h=41), Rect(x=2821, y=3965, w=33, h=39), Rect(x=2862, y=3964, w=34, h=41), Rect(x=1065, y=3966, w=22, h=40), Rect(x=1486, y=3966, w=35, h=38), Rect(x=482, y=3992, w=14, h=24), Rect(x=2361, y=3994, w=12, h=25), Rect(x=2023, y=4029, w=59, h=63), Rect(x=2609, y=4029, w=27, h=62), Rect(x=2732, y=4028, w=37, h=63), Rect(x=2860, y=4029, w=40, h=63), Rect(x=1593, y=4035, w=24, h=12), Rect(x=2340, y=4049, w=37, h=41), Rect(x=2423, y=4049, w=32, h=42), Rect(x=384, y=4050, w=41, h=40), Rect(x=434, y=4050, w=34, h=41), Rect(x=473, y=4050, w=40, h=40), Rect(x=519, y=4051, w=44, h=56), Rect(x=613, y=4051, w=36, h=41), Rect(x=806, y=4051, w=42, h=54), Rect(x=938, y=4051, w=34, h=41), Rect(x=977, y=4051, w=41, h=41), Rect(x=1232, y=4051, w=32, h=42), Rect(x=1399, y=4051, w=32, h=42), Rect(x=1437, y=4051, w=31, h=42), Rect(x=1844, y=4051, w=32, h=42), Rect(x=1880, y=4051, w=41, h=41), Rect(x=2167, y=4051, w=42, h=40), Rect(x=2217, y=4051, w=32, h=42), Rect(x=2256, y=4051, w=39, h=59), Rect(x=2384, y=4050, w=31, h=41), Rect(x=566, y=4052, w=21, h=25), Rect(x=585, y=4052, w=20, h=39), Rect(x=657, y=4052, w=31, h=40), Rect(x=695, y=4053, w=33, h=40), Rect(x=853, y=4052, w=34, h=41), Rect(x=894, y=4052, w=36, h=40), Rect(x=1024, y=4053, w=36, h=39), Rect(x=1065, y=4052, w=20, h=39), Rect(x=1087, y=4052, w=22, h=39), Rect(x=1116, y=4053, w=34, h=41), Rect(x=1271, y=4052, w=32, h=42), Rect(x=1311, y=4052, w=39, h=59), Rect(x=1356, y=4052, w=36, h=41), Rect(x=1475, y=4052, w=44, h=40), Rect(x=1523, y=4053, w=36, h=39), Rect(x=1559, y=4052, w=20, h=40), Rect(x=1584, y=4052, w=44, h=41), Rect(x=1689, y=4052, w=33, h=42), Rect(x=1727, y=4052, w=51, h=41), Rect(x=1782, y=4052, w=35, h=40), Rect(x=1817, y=4053, w=21, h=39), Rect(x=2303, y=4052, w=31, h=40), Rect(x=2461, y=4052, w=33, h=40), Rect(x=2499, y=4053, w=43, h=39), Rect(x=2652, y=4067, w=69, h=6), Rect(x=2779, y=4066, w=70, h=7), Rect(x=1930, y=4083, w=12, h=13), Rect(x=468, y=4116, w=38, h=64), Rect(x=600, y=4116, w=37, h=63), Rect(x=735, y=4117, w=29, h=63), Rect(x=1275, y=4123, w=25, h=13), Rect(x=1888, y=4123, w=24, h=12), Rect(x=2786, y=4137, w=40, h=54), Rect(x=380, y=4138, w=34, h=40), Rect(x=817, y=4139, w=45, h=55), Rect(x=914, y=4139, w=41, h=42), Rect(x=959, y=4139, w=43, h=42), Rect(x=1102, y=4139, w=32, h=42), Rect(x=1142, y=4139, w=32, h=42), Rect(x=1178, y=4139, w=41, h=42), Rect(x=2151, y=4139, w=31, h=42), Rect(x=2392, y=4139, w=41, h=42), Rect(x=2534, y=4139, w=31, h=41), Rect(x=2658, y=4139, w=29, h=42), Rect(x=2830, y=4138, w=34, h=41), Rect(x=867, y=4141, w=41, h=40), Rect(x=1007, y=4140, w=43, h=40), Rect(x=1055, y=4141, w=40, h=40), Rect(x=1227, y=4140, w=34, h=41), Rect(x=1267, y=4140, w=44, h=41), Rect(x=1361, y=4141, w=46, h=41), Rect(x=1413, y=4140, w=32, h=42), Rect(x=1453, y=4141, w=39, h=59), Rect(x=1499, y=4140, w=32, h=42), Rect(x=1538, y=4141, w=32, h=42), Rect(x=1658, y=4141, w=44, h=41), Rect(x=1748, y=4140, w=37, h=41), Rect(x=1791, y=4140, w=42, h=41), Rect(x=1839, y=4140, w=34, h=41), Rect(x=1879, y=4140, w=44, h=41), Rect(x=2026, y=4140, w=32, h=42), Rect(x=2062, y=4141, w=41, h=41), Rect(x=2109, y=4141, w=36, h=39), Rect(x=2188, y=4140, w=42, h=41), Rect(x=2302, y=4141, w=21, h=41), Rect(x=2325, y=4140, w=19, h=42), Rect(x=2351, y=4141, w=36, h=41), Rect(x=2484, y=4140, w=43, h=40), Rect(x=2570, y=4141, w=41, h=40), Rect(x=2616, y=4141, w=36, h=39), Rect(x=2695, y=4140, w=39, h=41), Rect(x=1575, y=4142, w=34, h=41), Rect(x=1617, y=4142, w=36, h=41), Rect(x=1708, y=4142, w=34, h=41), Rect(x=1974, y=4142, w=44, h=40), Rect(x=2870, y=4153, w=26, h=9), Rect(x=517, y=4155, w=72, h=6), Rect(x=648, y=4155, w=71, h=7), Rect(x=2237, y=4171, w=13, h=26), Rect(x=381, y=4207, w=37, h=61), Rect(x=2732, y=4207, w=44, h=63), Rect(x=823, y=4208, w=37, h=63), Rect(x=1382, y=4209, w=37, h=64), Rect(x=425, y=4229, w=41, h=40), Rect(x=473, y=4229, w=33, h=40), Rect(x=512, y=4229, w=36, h=39), Rect(x=554, y=4229, w=33, h=42), Rect(x=592, y=4229, w=42, h=41), Rect(x=782, y=4229, w=34, h=41), Rect(x=963, y=4229, w=37, h=41), Rect(x=1043, y=4228, w=32, h=43), Rect(x=1167, y=4229, w=41, h=42), Rect(x=1255, y=4228, w=43, h=42), Rect(x=1731, y=4228, w=64, h=44), Rect(x=1801, y=4228, w=32, h=42), Rect(x=2063, y=4229, w=43, h=42), Rect(x=2115, y=4228, w=32, h=42), Rect(x=2154, y=4229, w=38, h=58), Rect(x=2200, y=4228, w=32, h=42), Rect(x=2321, y=4229, w=31, h=42), Rect(x=2360, y=4228, w=32, h=42), Rect(x=2398, y=4229, w=39, h=59), Rect(x=2442, y=4228, w=40, h=41), Rect(x=2490, y=4229, w=34, h=41), Rect(x=2537, y=4228, w=32, h=40), Rect(x=2576, y=4229, w=35, h=42), Rect(x=2617, y=4229, w=49, h=41), Rect(x=2781, y=4228, w=23, h=40), Rect(x=2804, y=4229, w=18, h=39), Rect(x=2831, y=4228, w=34, h=41), Rect(x=405, y=4230, w=6, h=5), Rect(x=694, y=4231, w=40, h=39), Rect(x=741, y=4230, w=34, h=41), Rect(x=863, y=4231, w=36, h=39), Rect(x=899, y=4230, w=22, h=41), Rect(x=1084, y=4230, w=31, h=40), Rect(x=1122, y=4230, w=39, h=59), Rect(x=1215, y=4230, w=34, h=41), Rect(x=1304, y=4230, w=32, h=42), Rect(x=1423, y=4230, w=36, h=41), Rect(x=1459, y=4231, w=20, h=40), Rect(x=1483, y=4231, w=41, h=41), Rect(x=1652, y=4231, w=34, h=43), Rect(x=1897, y=4231, w=40, h=40), Rect(x=1984, y=4230, w=34, h=41), Rect(x=2237, y=4230, w=40, h=52), Rect(x=1531, y=4232, w=34, h=41), Rect(x=1609, y=4232, w=36, h=41), Rect(x=1944, y=4232, w=33, h=40), Rect(x=2529, y=4241, w=16, h=28), Rect(x=2871, y=4243, w=25, h=9), Rect(x=641, y=4258, w=14, h=24), Rect(x=1841, y=4261, w=14, h=24), Rect(x=2673, y=4260, w=11, h=11), Rect(x=2782, y=4295, w=37, h=64), Rect(x=975, y=4299, w=37, h=62), Rect(x=2422, y=4299, w=35, h=61), Rect(x=379, y=4317, w=23, h=25), Rect(x=623, y=4317, w=32, h=43), Rect(x=659, y=4317, w=41, h=41), Rect(x=800, y=4317, w=44, h=59), Rect(x=2507, y=4317, w=42, h=54), Rect(x=2729, y=4317, w=49, h=42), Rect(x=2823, y=4317, w=45, h=41), Rect(x=399, y=4318, w=21, h=39), Rect(x=425, y=4318, w=41, h=40), Rect(x=474, y=4318, w=34, h=41), Rect(x=585, y=4319, w=32, h=42), Rect(x=708, y=4319, w=40, h=40), Rect(x=936, y=4319, w=32, h=42), Rect(x=1017, y=4319, w=42, h=41), Rect(x=1112, y=4319, w=32, h=42), Rect(x=1367, y=4319, w=34, h=43), Rect(x=1934, y=4319, w=41, h=41), Rect(x=2072, y=4319, w=42, h=41), Rect(x=2162, y=4319, w=41, h=42), Rect(x=2324, y=4318, w=43, h=41), Rect(x=2373, y=4318, w=25, h=41), Rect(x=2396, y=4319, w=20, h=40), Rect(x=2463, y=4319, w=40, h=57), Rect(x=2641, y=4318, w=41, h=42), Rect(x=2688, y=4318, w=34, h=42), Rect(x=894, y=4321, w=34, h=41), Rect(x=1150, y=4320, w=34, h=41), Rect(x=1190, y=4320, w=35, h=42), Rect(x=1231, y=4320, w=43, h=40), Rect(x=1279, y=4320, w=36, h=42), Rect(x=1453, y=4320, w=32, h=42), Rect(x=1492, y=4321, w=36, h=41), Rect(x=1534, y=4320, w=49, h=40), Rect(x=1590, y=4320, w=34, h=41), Rect(x=1631, y=4320, w=31, h=40), Rect(x=1667, y=4320, w=36, h=42), Rect(x=1756, y=4320, w=44, h=41), Rect(x=1808, y=4320, w=36, h=41), Rect(x=1848, y=4320, w=22, h=25), Rect(x=1867, y=4321, w=19, h=40), Rect(x=1895, y=4320, w=34, h=41), Rect(x=1983, y=4321, w=36, h=41), Rect(x=2121, y=4320, w=36, h=41), Rect(x=2210, y=4320, w=36, h=41), Rect(x=2250, y=4320, w=42, h=40), Rect(x=2553, y=4320, w=36, h=39), Rect(x=2871, y=4332, w=25, h=9), Rect(x=2297, y=4335, w=24, h=6), Rect(x=516, y=4348, w=13, h=23), Rect(x=1591, y=4453, w=25, h=54), Rect(x=1622, y=4453, w=33, h=55), Rect(x=1657, y=4454, w=30, h=53)]6 g, joined_rects = join_rectangles(rects)7 print(joined_rects)8 def test_complicated(self):9 rects = [Rect(x=104, y=211, w=42, h=40),10 Rect(x=104, y=391, w=35, h=38),11 Rect(x=105, y=122, w=44, h=56),12 Rect(x=147, y=389, w=34, h=41),13 Rect(x=150, y=120, w=42, h=41),14 Rect(x=153, y=212, w=34, h=41),15 Rect(x=188, y=389, w=31, h=42),16 Rect(x=194, y=212, w=39, h=40),17 Rect(x=198, y=122, w=34, h=41),18 Rect(x=226, y=390, w=49, h=40),19 Rect(x=237, y=48, w=74, h=9),20 Rect(x=238, y=316, w=72, h=6),21 Rect(x=239, y=121, w=62, h=42),22 Rect(x=239, y=213, w=44, h=56),23 Rect(x=282, y=390, w=34, h=41),24 Rect(x=285, y=213, w=40, h=40),25 Rect(x=305, y=124, w=43, h=40),26 Rect(x=323, y=388, w=62, h=42),27 Rect(x=331, y=214, w=43, h=40),28 Rect(x=355, y=124, w=34, h=41),29 Rect(x=365, y=280, w=61, h=62),30 Rect(x=366, y=11, w=58, h=62),31 Rect(x=377, y=212, w=43, h=42),32 Rect(x=389, y=390, w=44, h=40),33 Rect(x=394, y=125, w=36, h=39),34 Rect(x=426, y=213, w=34, h=41),35 Rect(x=430, y=34, w=44, h=56),36 Rect(x=430, y=318, w=26, h=6),37 Rect(x=440, y=390, w=34, h=41),38 Rect(x=459, y=302, w=44, h=40),39 Rect(x=467, y=213, w=33, h=42),40 Rect(x=479, y=66, w=14, h=24),41 Rect(x=483, y=369, w=28, h=48),42 Rect(x=484, y=123, w=42, h=41),43 Rect(x=487, y=420, w=12, h=12),44 Rect(x=505, y=213, w=36, h=41),45 Rect(x=510, y=301, w=32, h=42),46 Rect(x=532, y=124, w=34, h=41),47 Rect(x=549, y=304, w=33, h=39),48 Rect(x=550, y=368, w=60, h=63),49 Rect(x=555, y=34, w=42, h=41),50 Rect(x=574, y=123, w=43, h=60),51 Rect(x=575, y=214, w=34, h=41),52 Rect(x=590, y=332, w=14, h=24),53 Rect(x=603, y=36, w=36, h=41),54 Rect(x=614, y=214, w=41, h=53),55 Rect(x=617, y=390, w=32, h=42),56 Rect(x=620, y=125, w=33, h=40),57 Rect(x=632, y=317, w=73, h=7),58 Rect(x=644, y=35, w=43, h=42),59 Rect(x=656, y=392, w=34, h=41),60 Rect(x=659, y=214, w=44, h=40),61 Rect(x=660, y=123, w=34, h=41),62 Rect(x=698, y=420, w=13, h=25),63 Rect(x=699, y=125, w=40, h=39),64 Rect(x=709, y=214, w=34, h=41),65 Rect(x=732, y=302, w=33, h=42),66 Rect(x=745, y=123, w=42, h=41),67 Rect(x=746, y=392, w=44, h=40),68 Rect(x=765, y=37, w=33, h=40),69 Rect(x=770, y=301, w=41, h=42),70 Rect(x=777, y=214, w=44, h=41),71 Rect(x=792, y=126, w=43, h=40),72 Rect(x=797, y=390, w=31, h=42),73 Rect(x=803, y=36, w=36, h=41),74 Rect(x=818, y=302, w=34, h=41),75 Rect(x=834, y=391, w=41, h=41),76 Rect(x=839, y=36, w=21, h=40),77 Rect(x=855, y=214, w=34, h=41),78 Rect(x=861, y=302, w=30, h=41),79 Rect(x=881, y=393, w=36, h=39),80 Rect(x=889, y=124, w=34, h=41),81 Rect(x=896, y=213, w=34, h=43),82 Rect(x=899, y=302, w=34, h=41),83 Rect(x=923, y=391, w=31, h=42),84 Rect(x=932, y=124, w=34, h=41),85 Rect(x=937, y=35, w=40, h=52),86 Rect(x=938, y=305, w=43, h=42),87 Rect(x=961, y=391, w=42, h=41),88 Rect(x=964, y=212, w=64, h=44),89 Rect(x=973, y=124, w=41, h=42),90 Rect(x=982, y=36, w=44, h=56),91 Rect(x=1013, y=420, w=12, h=12),92 Rect(x=1014, y=370, w=11, h=47),93 Rect(x=1021, y=155, w=13, h=26),94 Rect(x=1023, y=303, w=36, h=40),95 Rect(x=1030, y=36, w=49, h=40),96 Rect(x=1034, y=214, w=32, h=42),97 Rect(x=1086, y=36, w=36, h=41),98 Rect(x=1089, y=125, w=40, h=40),99 Rect(x=1101, y=212, w=40, h=61),100 Rect(x=1101, y=303, w=44, h=40),101 Rect(x=1118, y=268, w=5, h=4),102 Rect(x=1129, y=34, w=32, h=42),103 Rect(x=1137, y=126, w=33, h=40),104 Rect(x=1148, y=214, w=36, h=41),105 Rect(x=1153, y=301, w=32, h=42),106 Rect(x=1166, y=35, w=66, h=39),107 Rect(x=1178, y=124, w=34, h=41),108 Rect(x=1189, y=213, w=33, h=42),109 Rect(x=1190, y=301, w=42, h=54),110 Rect(x=1218, y=105, w=35, h=61),111 Rect(x=1227, y=214, w=42, h=40),112 Rect(x=1236, y=302, w=34, h=41),113 Rect(x=1237, y=35, w=36, h=39),114 Rect(x=1260, y=124, w=35, h=40),115 Rect(x=1276, y=214, w=34, h=41),116 Rect(x=1276, y=303, w=44, h=56),117 Rect(x=1280, y=62, w=14, h=24),118 Rect(x=1294, y=124, w=21, h=40),119 Rect(x=1315, y=240, w=16, h=14),120 Rect(x=1321, y=49, w=73, h=7),121 Rect(x=1321, y=212, w=36, h=42),122 Rect(x=1324, y=302, w=51, h=41),123 Rect(x=1364, y=214, w=34, h=41),124 Rect(x=1367, y=124, w=44, h=42),125 Rect(x=1381, y=301, w=32, h=42),126 Rect(x=1405, y=212, w=62, h=42),127 Rect(x=1418, y=301, w=44, h=41),128 Rect(x=1421, y=33, w=33, h=42),129 Rect(x=1459, y=33, w=42, h=40),130 Rect(x=1464, y=123, w=44, h=41),131 Rect(x=1467, y=302, w=43, h=39),132 Rect(x=1473, y=213, w=32, h=42),133 Rect(x=1508, y=32, w=39, h=59),134 Rect(x=1511, y=213, w=43, h=41),135 Rect(x=1515, y=123, w=32, h=42),136 Rect(x=1515, y=301, w=43, h=40),137 Rect(x=1553, y=33, w=34, h=41),138 Rect(x=1553, y=122, w=40, h=59),139 Rect(x=1559, y=214, w=43, h=40),140 Rect(x=1595, y=33, w=33, h=42),141 Rect(x=1600, y=124, w=32, h=42),142 Rect(x=1602, y=279, w=60, h=62),143 Rect(x=1610, y=213, w=32, h=42),144 Rect(x=1632, y=34, w=41, h=40),145 Rect(x=1637, y=125, w=40, h=52),146 Rect(x=1650, y=192, w=28, h=49),147 Rect(x=1655, y=243, w=12, h=12),148 Rect(x=1666, y=300, w=41, h=41),149 Rect(x=1679, y=35, w=41, h=41),150 Rect(x=1713, y=302, w=57, h=41),151 Rect(x=1732, y=123, w=31, h=42),152 Rect(x=1771, y=123, w=32, h=42),153 Rect(x=1775, y=301, w=65, h=40),154 Rect(x=1804, y=13, w=52, h=61),155 Rect(x=1810, y=122, w=40, h=61),156 Rect(x=1847, y=301, w=34, h=41),157 Rect(x=1854, y=122, w=41, h=42),158 Rect(x=1860, y=34, w=34, h=41),159 Rect(x=1890, y=331, w=12, h=12),160 Rect(x=1900, y=34, w=40, h=52),161 Rect(x=1902, y=122, w=34, h=41),162 Rect(x=1936, y=317, w=73, h=7),163 Rect(x=1942, y=122, w=41, h=41),164 Rect(x=1946, y=34, w=41, h=40),165 Rect(x=1989, y=123, w=34, h=41),166 Rect(x=1993, y=32, w=40, h=41),167 Rect(x=2030, y=124, w=51, h=41),168 Rect(x=2039, y=279, w=60, h=63),169 Rect(x=2040, y=32, w=33, h=42),170 Rect(x=2079, y=62, w=12, h=24),171 Rect(x=2104, y=303, w=44, h=56),172 Rect(x=2121, y=48, w=71, h=7),173 Rect(x=2134, y=125, w=43, h=40),174 Rect(x=2187, y=302, w=42, h=41),175 Rect(x=2220, y=33, w=26, h=40),176 Rect(x=2232, y=124, w=37, h=41),177 Rect(x=2235, y=303, w=34, h=41),178 Rect(x=2247, y=33, w=22, h=40),179 Rect(x=2274, y=302, w=43, h=42),180 Rect(x=2276, y=32, w=34, h=41),181 Rect(x=2316, y=51, w=20, h=22),182 Rect(x=2317, y=32, w=15, h=17),183 Rect(x=2324, y=123, w=32, h=43),184 Rect(x=2337, y=31, w=40, h=41),185 Rect(x=2359, y=301, w=62, h=42),186 Rect(x=2363, y=123, w=32, h=42),187 Rect(x=2382, y=33, w=41, h=40),188 Rect(x=2402, y=124, w=40, h=59),189 Rect(x=2427, y=302, w=32, h=42),190 Rect(x=2431, y=36, w=34, h=41),191 Rect(x=2446, y=122, w=41, h=43),192 Rect(x=2493, y=122, w=35, h=43),193 Rect(x=2501, y=300, w=32, h=44),194 Rect(x=2526, y=32, w=42, h=41),195 Rect(x=2532, y=123, w=42, h=42),196 Rect(x=2538, y=302, w=35, h=41),197 Rect(x=2573, y=32, w=43, h=42),198 Rect(x=2578, y=301, w=36, h=42),199 Rect(x=2580, y=123, w=33, h=43)]200 g, joined_rects = join_rectangles(rects)201 print(len(joined_rects))202 assert(len(joined_rects) == 3)203 print(joined_rects)204 def test_join_rectangles(self):205 rects = [Rect(1,1,1,1), Rect(1,3,1,1), Rect(1,5,1,1), Rect(3,1,1,1), Rect(3,3,1,1),206 Rect(3,5,1,1), Rect(7,1,1,1), Rect(7,3,1,1), Rect(7,5,1,1)]207 g, joined_rects = join_rectangles(rects)208 assert(len(joined_rects) == 0)209 rects = [Rect(1, 1, 3, 3), Rect(3, 3, 3, 3)]210 g, joined_rects = join_rectangles(rects)211 assert(len(joined_rects) == 1)212 rects = [Rect(1, 1, 2, 3), Rect(2, 3, 4, 2), Rect(7, 4, 2, 3), Rect(8, 2, 2, 3), Rect(6, 6, 2, 2)]213 g, joined_rects = join_rectangles(rects)214 assert(len(joined_rects)==2)215 assert(len(g.edges)==3)216 rects = [Rect(1, 1, 1, 1), Rect(3, 1, 1, 1), Rect(5, 1, 1, 1), Rect(2, 3, 1, 1), Rect(4, 3, 1, 1), Rect(1,5,1,1), Rect(3,5,1,1), Rect(5,5,1,1)]217 g, joined_rects = join_rectangles(rects)...

Full Screen

Full Screen

rect_test.py

Source:rect_test.py Github

copy

Full Screen

...393 r1.unionall_ip([r2, r3])394 self.assertEqual(Rect(-2, -2, 5, 5), r1)395 # Bug for an empty list. Would return a Rect instead of None.396 self.assertTrue(r1.unionall_ip([]) is None)397 def test_colliderect(self):398 r1 = Rect(1, 2, 3, 4)399 self.assertTrue(r1.colliderect(Rect(0, 0, 2, 3)),400 "r1 does not collide with Rect(0, 0, 2, 3)")401 self.assertFalse(r1.colliderect(Rect(0, 0, 1, 2)),402 "r1 collides with Rect(0, 0, 1, 2)")403 self.assertFalse(r1.colliderect(Rect(r1.right, r1.bottom, 2, 2)),404 "r1 collides with Rect(r1.right, r1.bottom, 2, 2)")405 self.assertTrue(r1.colliderect(Rect(r1.left + 1, r1.top + 1,406 r1.width - 2, r1.height - 2)),407 "r1 does not collide with Rect(r1.left + 1, r1.top + 1, "+408 "r1.width - 2, r1.height - 2)")409 self.assertTrue(r1.colliderect(Rect(r1.left - 1, r1.top - 1,410 r1.width + 2, r1.height + 2)),411 "r1 does not collide with Rect(r1.left - 1, r1.top - 1, "+412 "r1.width + 2, r1.height + 2)")413 self.assertTrue(r1.colliderect(Rect(r1)),414 "r1 does not collide with an identical rect")415 self.assertFalse(r1.colliderect(Rect(r1.right, r1.bottom, 0, 0)),416 "r1 collides with Rect(r1.right, r1.bottom, 0, 0)")417 self.assertFalse(r1.colliderect(Rect(r1.right, r1.bottom, 1, 1)),418 "r1 collides with Rect(r1.right, r1.bottom, 1, 1)")419 def testEquals(self):420 """ check to see how the rect uses __eq__421 """422 r1 = Rect(1, 2, 3, 4)423 r2 = Rect(10, 20, 30, 40)424 r3 = (10, 20, 30, 40)425 r4 = Rect(10, 20, 30, 40)426 class foo (Rect):427 def __eq__(self, other):428 return id(self) == id(other)429 def __ne__(self, other):430 return id(self) != id(other)431 class foo2 (Rect):...

Full Screen

Full Screen

classes.py

Source:classes.py Github

copy

Full Screen

...4class BackgroundImage(pygame.sprite.Sprite):5 def __init__(self, imagename, x, y, *group, color_key=0):6 super().__init__(*group)7 self.image = load_image("Sprites/" + imagename + ".png", color_key)8 self.rect = self.image.get_rect()9 self.rect.x = x10 self.rect.y = y11class Button(pygame.sprite.Sprite):12 def __init__(self, name, imagename, x, y, *group, text='x', answer_id=0):13 super().__init__(*group)14 self.answer_id = answer_id15 self.not_charge_image = load_image("Buttons/" + imagename + ".png")16 self.image = self.not_charge_image17 self.charge_image = load_image("Buttons/" + imagename + "_charge.png")18 self.now_image = False19 self.now = False20 self.charge_lock = False21 if answer_id:22 self.now_image = load_image("Buttons/" + imagename + "_now.png")23 self.rect = self.image.get_rect()24 self.w, self.h = self.image.get_rect()[2], self.image.get_rect()[3]25 self.rect.x = x26 self.rect.y = y27 self.name = name28 self.charge_log = False29 # Работа с текстом30 self.font = pygame.font.Font(os.path.join('data', "Fonts/VollkornSC-Regular.ttf"), 30)31 self.text = text32 self.text_cords = (10, 15)33 if self.text != 'x':34 self.image.blit(self.font.render(self.text, True, (0, 0, 0)), (self.text_cords[0] + 1, self.text_cords[1] + 1))35 self.image.blit(self.font.render(self.text, True, (253, 253, 253)), self.text_cords)36 def click(self, pos): # Возвращает True если pos находится в области кнопки, иначе возвращает False37 if self.rect.x <= pos[0] <= self.rect.x + self.w and \38 self.rect.y <= pos[1] <= self.rect.y + self.h:39 return self.name40 return False41 def charge_switch(self, pos):42 if self.charge_lock:43 self.image = self.charge_image44 else:45 if not self.now:46 if self.rect.x <= pos[0] <= self.rect.x + self.w and \47 self.rect.y <= pos[1] <= self.rect.y + self.h:48 self.image = self.charge_image49 self.charge_log = True50 else:51 self.image = self.not_charge_image52 self.charge_log = False53 else:54 self.image = self.now_image55 self.charge_log = True56 if self.text != 'x':57 if self.charge_log:58 for i in range(-2, 6):59 self.image.blit(self.font.render(self.text, True,60 (128, 128, 128)), (self.text_cords[0] + i, self.text_cords[1] + i))61 self.image.blit(self.font.render(self.text, True, (0, 0, 0)), (self.text_cords[0] + 1, self.text_cords[1] + 1))62 self.image.blit(self.font.render(self.text, True, (253, 253, 253)), self.text_cords)63class QuestionButton(pygame.sprite.Sprite):64 def __init__(self, id, x, y, w, text, *group):65 super().__init__(*group)66 self.now = False67 self.complete = False68 self.flag = False69 self.font = pygame.font.Font(os.path.join('data', "Fonts/VollkornSC-Regular.ttf"), 17)70 width = (w - 10) / (self.font.size("Wa")[0] / 2)71 self.strings = []72 leng = 073 string = ""74 for i in text.split():75 if leng + len(i) > width:76 self.strings.append(string)77 string = ""78 leng = 079 string += i + " "80 leng += len(i) + 181 if string:82 self.strings.append(string)83 self.image = pygame.Surface((w, len(self.strings) * self.font.size("v")[1] + 10))84 self.image.fill(pygame.Color(180, 180, 180))85 self.render_qt()86 self.rect = self.image.get_rect()87 self.w, self.h = self.image.get_rect()[2], self.image.get_rect()[3]88 self.rect.x = x89 self.rect.y = y90 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)91 self.id = id92 def height(self):93 return self.h94 def click(self, pos): # Возвращает свой id если pos находится в области кнопки, иначе возвращает False95 if self.rect.x <= pos[0] <= self.rect.x + self.w and \96 self.rect.y <= pos[1] <= self.rect.y + self.h:97 return self.id98 return False99 def charge_switch(self, pos):100 if self.now:101 self.image.fill(pygame.Color(140, 130, 40))102 else:103 if self.rect.x <= pos[0] <= self.rect.x + self.w and \104 self.rect.y <= pos[1] <= self.rect.y + self.h:105 self.image.fill(pygame.Color(240, 230, 140))106 else:107 self.image.fill(pygame.Color(180, 180, 180))108 if self.complete:109 pygame.draw.rect(self.image, (0, 0, 255), (0, 0, 10, self.rect.h))110 if self.flag:111 pygame.draw.polygon(self.image, (200, 0, 0),112 ((self.rect.w - 40, 0), (self.rect.w, 0), (self.rect.w, 40)))113 pygame.draw.line(self.image, (100, 0, 0), (self.rect.w - 41, -1), (self.rect.w + 1, 41), 8)114 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)115 self.render_qt()116 def render_qt(self):117 for i in range(len(self.strings)):118 self.image.blit(self.font.render(self.strings[i], True, (30, 30, 30)),119 (18, i * (self.font.size(self.strings[i])[1]) + 5))120class Slider(pygame.sprite.Sprite):121 def __init__(self, x, y, field, *group):122 super().__init__(*group)123 self.field = field124 self.image = pygame.Surface((10, 80))125 self.image.fill(pygame.Color(165, 42, 42))126 self.rect = self.image.get_rect()127 self.w, self.h = self.image.get_rect()[2], self.image.get_rect()[3]128 self.rect.x = x129 self.rect.y = y130 self.id = id131 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)132 def charge_switch(self, pos):133 if self.rect.x <= pos[0] <= self.rect.x + self.w and \134 self.rect.y <= pos[1] <= self.rect.y + self.h:135 # self.image.fill(pygame.Color(184, 134, 11))136 self.image.fill(pygame.Color(163, 73, 164))137 else:138 self.image.fill(pygame.Color(165, 42, 42))139 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)140 def slide(self, pos, y, mouse_logic):141 if (self.field[0] <= pos[0] <= self.field[0] + self.field[2] and142 self.field[1] <= pos[1] <= self.field[1] + self.field[3]) or mouse_logic:143 if (self.field[1] + 10 == self.rect.y and y > 0) or\144 (self.field[1] + self.field[3] - 85 == self.rect.y and y < 0):145 return 0146 k = self.rect.y147 if self.field[1] + 10 >= self.rect.y + y * -8:148 self.rect.y = self.field[1] + 10149 elif self.rect.y + y * -8 + self.rect.h >= self.field[1] + self.field[3] - 5:150 self.rect.y = self.field[1] + self.field[3] - 85151 else:152 self.rect.y += y * -8153 k = abs(k - self.rect.y)154 if y > 0:155 k *= -1156 return k157 def click(self, pos):158 if self.rect.x <= pos[0] <= self.rect.x + self.w and \159 self.rect.y <= pos[1] <= self.rect.y + self.h:160 return "slide"161class BigSlider(pygame.sprite.Sprite):162 def __init__(self, x, y, field, *group):163 super().__init__(*group)164 self.field = field165 self.image = pygame.Surface((30, 80))166 self.image.fill(pygame.Color(165, 42, 42))167 self.rect = self.image.get_rect()168 self.w, self.h = self.image.get_rect()[2], self.image.get_rect()[3]169 self.rect.x = x170 self.rect.y = y171 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)172 def charge_switch(self, pos):173 if self.rect.x <= pos[0] <= self.rect.x + self.w and \174 self.rect.y <= pos[1] <= self.rect.y + self.h:175 # self.image.fill(pygame.Color(184, 134, 11))176 self.image.fill(pygame.Color(163, 73, 164))177 else:178 self.image.fill(pygame.Color(165, 42, 42))179 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)180 def slide(self, pos, y, mouse_logic):181 if (self.field[0] <= pos[0] <= self.field[0] + self.field[2] and182 self.field[1] <= pos[1] <= self.field[1] + self.field[3]) or mouse_logic:183 if (self.field[1] + 10 == self.rect.y and y > 0) or\184 (self.field[1] + self.field[3] - 85 == self.rect.y and y < 0):185 return 0186 k = self.rect.y187 if self.field[1] + 10 >= self.rect.y + y * -8:188 self.rect.y = self.field[1] + 10189 elif self.rect.y + y * -8 + self.rect.h >= self.field[1] + self.field[3] - 5:190 self.rect.y = self.field[1] + self.field[3] - 85191 else:192 self.rect.y += y * -8193 k = abs(k - self.rect.y)194 if y > 0:195 k *= -1196 return k197 def click(self, pos):198 if self.rect.x <= pos[0] <= self.rect.x + self.w and \199 self.rect.y <= pos[1] <= self.rect.y + self.h:200 return "slide"201class QuestionImage(pygame.sprite.Sprite):202 def __init__(self, x, y, w, text, *group, right=-1):203 super().__init__(*group)204 self.font = pygame.font.Font(os.path.join('data', "Fonts/VollkornSC-Regular.ttf"), 17)205 width = (w - 10) / (self.font.size("Wa")[0] / 2)206 self.strings = []207 leng = 0208 string = ""209 for i in text.split():210 if leng + len(i) > width or i == '*':211 self.strings.append(string)212 string = ""213 leng = 0214 if i == '*':215 continue216 string += i + " "217 leng += len(i) + 1218 if string:219 self.strings.append(string)220 self.image = pygame.Surface((w, len(self.strings) * self.font.size("v")[1] + 10))221 if right == -1:222 self.image.fill(pygame.Color(180, 180, 180))223 elif right:224 self.image.fill(pygame.Color(0, 180, 0))225 else:226 self.image.fill(pygame.Color(180, 0, 0))227 indexplus = 0228 for i in range(len(self.strings)):229 if self.strings[i][:3] == 'А. ':230 indexplus = 10231 if self.strings[i][:3] == 'Б. ':232 indexplus = 20233 self.image.blit(self.font.render(self.strings[i], True, (30, 30, 30)),234 (18, i * (self.font.size(self.strings[i])[1] - 3) + indexplus + 5))235 self.rect = self.image.get_rect()236 self.w, self.h = self.image.get_rect()[2], self.image.get_rect()[3]237 self.rect.x = x238 self.rect.y = y239 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)240 def height(self):...

Full Screen

Full Screen

sketch.js

Source:sketch.js Github

copy

Full Screen

...30 31 //warna putih32 noStroke();33 fill('white');34 rect(this.location.x-2, this.location.y-2, 4, 4);35 rect(this.location.x+2, this.location.y+2, 8, 2);36 rect(this.location.x-10, this.location.y+2, 8, 2);37 rect(this.location.x-8, this.location.y+4, 16, 4);38 rect(this.location.x-4, this.location.y+8, 8, 2);39 40 //warna random41 noStroke();42 fill('Red');43 rect(this.location.x-10, this.location.y-2, 6, 2);44 rect(this.location.x+4, this.location.y-2, 6, 2)45 rect(this.location.x-10, this.location.y-4, 8, 2);46 rect(this.location.x+2, this.location.y-4, 8, 2);47 rect(this.location.x-8, this.location.y-8, 16, 4);48 rect(this.location.x-4, this.location.y-10, 8, 2)49 50 //warna hitam51 noStroke();52 fill('Black');53 rect(this.location.x+2, this.location.y, 10, 2);54 rect(this.location.x-12, this.location.y, 10, 2);55 rect(this.location.x-12, this.location.y-4, 2, 8);56 rect(this.location.x+10, this.location.y-4, 2, 8);57 rect(this.location.x-10, this.location.y-8, 2, 4);58 rect(this.location.x+8, this.location.y-8, 2, 4);59 rect(this.location.x-8, this.location.y-10, 4, 2);60 rect(this.location.x+4, this.location.y-10, 4, 2);61 rect(this.location.x-4, this.location.y-12, 8, 2);62 rect(this.location.x-10, this.location.y+4, 2, 4);63 rect(this.location.x+8, this.location.y+4, 2, 4);64 rect(this.location.x-8, this.location.y+8, 4, 2);65 rect(this.location.x+4, this.location.y+8, 4, 2);66 rect(this.location.x-4, this.location.y+10, 8, 2);67 68 }69 70 gerakCuy(){71 var mouse = createVector(mouseX, mouseY);72 var w = p5.Vector.sub(mouse,CENTER);73 noStroke()74 75 //orange76 fill(255,140,0);77 rect(mouse.x+(r*-4), mouse.y+(r*-13), (r*1),(r*3));78 rect(mouse.x+(r*3), mouse.y+(r*-13), (r*1),(r*3));79 rect(mouse.x+(r*-4), mouse.y+(r*-10), (r*8),(r*5));80 rect(mouse.x+(r*-5), mouse.y+(r*-5), (r*10),(r*3));81 rect(mouse.x+(r*-5), mouse.y+(r*-5), (r*10),(r*3));82 rect(mouse.x+(r*-4), mouse.y+(r*-2), (r*8),(r*2));83 rect(mouse.x+(r*-5), mouse.y+(r*0), (r*10),(r*2));84 rect(mouse.x+(r*-6), mouse.y+(r*2), (r*12),(r*2));85 rect(mouse.x+(r*-7), mouse.y+(r*4), (r*14),(r*3));86 rect(mouse.x+(r*7), mouse.y+(r*-7), (r*1),(r*2));87 rect(mouse.x+(r*-8), mouse.y+(r*-7), (r*1),(r*2));88 rect(mouse.x+(r*9), mouse.y+(r*-6), (r*1),(r*1));89 rect(mouse.x+(r*-10), mouse.y+(r*-6), (r*1),(r*1));90 rect(mouse.x+(r*10), mouse.y+(r*-5), (r*1),(r*1));91 rect(mouse.x+(r*-11), mouse.y+(r*-5), (r*1),(r*1));92 rect(mouse.x+(r*11), mouse.y+(r*-4), (r*1),(r*2));93 rect(mouse.x+(r*-12), mouse.y+(r*-4), (r*1),(r*2));94 rect(mouse.x+(r*12), mouse.y+(r*-2), (r*1),(r*2));95 rect(mouse.x+(r*-13), mouse.y+(r*-2), (r*1),(r*2));96 97 //warna kuning98 fill(255,222,173)99 rect(mouse.x+(r*2), mouse.y+(r*3), (r*1),(r*1));100 rect(mouse.x-(r*3), mouse.y+(r*3), (r*1),(r*1));101 rect(mouse.x-(r*4), mouse.y+(r*4), (r*8),(r*2));102 rect(mouse.x-(r*3), mouse.y+(r*6), (r*6),(r*1));103 rect(mouse.x-(r*3), mouse.y+(r*7), (r*6),(r*1));104 rect(mouse.x-(r*2), mouse.y+(r*7), (r*4),(r*1));105 106 //warna hitam107 fill('black');108 rect(mouse.x-(r*5), mouse.y-(r*2), (r*1),(r*2));109 rect(mouse.x-(r*6), mouse.y-(r*6), (r*1),(r*5));110 rect(mouse.x-(r*5), mouse.y-(r*13), (r*1),(r*8));111 rect(mouse.x-(r*4), mouse.y-(r*14), (r*1),(r*1));112 rect(mouse.x-(r*3), mouse.y-(r*13), (r*1),(r*3));113 rect(mouse.x-(r*2), mouse.y-(r*11), (r*1),(r*3));114 rect(mouse.x-(r*1), mouse.y-(r*11), (r*2),(r*1));115 rect(mouse.x+(r*1), mouse.y-(r*11), (r*1),(r*3));116 rect(mouse.x+(r*2), mouse.y-(r*13), (r*1),(r*3));117 rect(mouse.x+(r*3), mouse.y-(r*14), (r*1),(r*1));118 rect(mouse.x+(r*4), mouse.y-(r*13), (r*1),(r*8));119 rect(mouse.x+(r*5), mouse.y-(r*6), (r*1),(r*5));120 rect(mouse.x+(r*4), mouse.y-(r*2), (r*1),(r*2));121 rect(mouse.x+(r*5), mouse.y+(r*0), (r*1),(r*2));122 rect(mouse.x+(r*6), mouse.y+(r*2), (r*1),(r*2));123 rect(mouse.x+(r*7), mouse.y+(r*4), (r*1),(r*3));124 rect(mouse.x+(r*6), mouse.y+(r*7), (r*1),(r*2));125 rect(mouse.x+(r*3), mouse.y+(r*9), (r*3),(r*1));126 rect(mouse.x+(r*-3), mouse.y+(r*8), (r*6),(r*1));127 rect(mouse.x+(r*-6), mouse.y+(r*9), (r*3),(r*1));128 rect(mouse.x+(r*-7), mouse.y+(r*7), (r*1),(r*2));129 rect(mouse.x+(r*-8), mouse.y+(r*4), (r*1),(r*3));130 rect(mouse.x+(r*-7), mouse.y+(r*2), (r*1),(r*2));131 rect(mouse.x+(r*-6), mouse.y+(r*0), (r*1),(r*2));132 rect(mouse.x+(r*-4), mouse.y+(r*6), (r*1),(r*1));133 rect(mouse.x+(r*-3), mouse.y+(r*7), (r*1),(r*1));134 rect(mouse.x+(r*2), mouse.y+(r*7), (r*1),(r*1));135 rect(mouse.x+(r*3), mouse.y+(r*6), (r*1),(r*1));136 rect(mouse.x+(r*-1), mouse.y+(r*3), (r*2),(r*1));137 rect(mouse.x+(r*-4), mouse.y+(r*-7), (r*1),(r*1));138 rect(mouse.x+(r*3), mouse.y+(r*-7), (r*1),(r*1));139 140 //putih141 fill('white');142 rect(mouse.x+(r*-4), mouse.y+(r*-5), (r*1),(r*2));143 rect(mouse.x+(r*3), mouse.y+(r*-5), (r*1),(r*2));144 145 //cokelat146 fill(140,82,45);147 rect(mouse.x+(r*3), mouse.y+(r*1), (r*1),(r*1));148 rect(mouse.x+(r*-4), mouse.y+(r*1), (r*1),(r*1));149 rect(mouse.x+(r*2), mouse.y+(r*2), (r*1),(r*1));150 rect(mouse.x+(r*-3), mouse.y+(r*2), (r*1),(r*1));151 rect(mouse.x+(r*-2), mouse.y+(r*3), (r*1),(r*1));152 rect(mouse.x+(r*-4), mouse.y+(r*3), (r*1),(r*1));153 rect(mouse.x+(r*1), mouse.y+(r*3), (r*1),(r*1));154 rect(mouse.x+(r*3), mouse.y+(r*3), (r*1),(r*1));155 rect(mouse.x+(r*4), mouse.y+(r*4), (r*1),(r*2));156 rect(mouse.x+(r*-5), mouse.y+(r*4), (r*1),(r*2));157 rect(mouse.x+(r*-6), mouse.y+(r*5), (r*1),(r*1));158 rect(mouse.x+(r*5), mouse.y+(r*5), (r*1),(r*1));159 rect(mouse.x+(r*-6), mouse.y+(r*7), (r*3),(r*1));160 rect(mouse.x+(r*3), mouse.y+(r*7), (r*3),(r*1));161 rect(mouse.x+(r*-7), mouse.y+(r*6), (r*1),(r*1));162 rect(mouse.x+(r*6), mouse.y+(r*6), (r*1),(r*1));163 rect(mouse.x+(r*-5), mouse.y+(r*8), (r*1),(r*1));164 rect(mouse.x+(r*4), mouse.y+(r*8), (r*1),(r*1));165 rect(mouse.x+(r*6), mouse.y+(r*-8), (r*1),(r*6));166 rect(mouse.x+(r*7), mouse.y+(r*-8), (r*1),(r*1));167 rect(mouse.x+(r*8), mouse.y+(r*-7), (r*2),(r*1));168 rect(mouse.x+(r*8), mouse.y+(r*-6), (r*1),(r*1));169 rect(mouse.x+(r*7), mouse.y+(r*-5), (r*1),(r*1));170 rect(mouse.x+(r*10), mouse.y+(r*-6), (r*1),(r*1));171 rect(mouse.x+(r*11), mouse.y+(r*-5), (r*1),(r*1));172 rect(mouse.x+(r*12), mouse.y+(r*-4), (r*1),(r*2));173 rect(mouse.x+(r*11), mouse.y+(r*-2), (r*1),(r*1));174 rect(mouse.x+(r*13), mouse.y+(r*-2), (r*1),(r*3));175 rect(mouse.x+(r*12), mouse.y+(r*0), (r*1),(r*1));176 rect(mouse.x+(r*-7), mouse.y+(r*-8), (r*1),(r*6));177 rect(mouse.x+(r*-8), mouse.y+(r*-8), (r*1),(r*1));178 rect(mouse.x+(r*-8), mouse.y+(r*-5), (r*1),(r*1));179 rect(mouse.x+(r*-9), mouse.y+(r*-7), (r*1),(r*2));180 rect(mouse.x+(r*-10), mouse.y+(r*-7), (r*1),(r*1));181 rect(mouse.x+(r*-11), mouse.y+(r*-6), (r*1),(r*1));182 rect(mouse.x+(r*-12), mouse.y+(r*-5), (r*1),(r*1));183 rect(mouse.x+(r*-13), mouse.y+(r*-4), (r*1),(r*2));184 rect(mouse.x+(r*-12), mouse.y+(r*-2), (r*1),(r*1));185 rect(mouse.x+(r*-14), mouse.y+(r*-2), (r*1),(r*3));186 rect(mouse.x+(r*-13), mouse.y+(r*0), (r*1),(r*1));187 188 //biru tua189 fill(25,25,112);190 rect(mouse.x+(r*2), mouse.y+(r*-3), (r*1),(r*1));191 rect(mouse.x+(r*-3), mouse.y+(r*-3), (r*1),(r*1));192 rect(mouse.x+(r*1), mouse.y+(r*2), (r*1),(r*1));193 rect(mouse.x+(r*-2), mouse.y+(r*2), (r*1),(r*1));194 rect(mouse.x+(r*3), mouse.y+(r*8), (r*1),(r*1));195 rect(mouse.x+(r*5), mouse.y+(r*8), (r*1),(r*1));196 rect(mouse.x+(r*-4), mouse.y+(r*8), (r*1),(r*1));197 rect(mouse.x+(r*-6), mouse.y+(r*8), (r*1),(r*1));198 rect(mouse.x+(r*7), mouse.y+(r*-4), (r*1),(r*1));199 rect(mouse.x+(r*-8), mouse.y+(r*-4), (r*1),(r*1));200 rect(mouse.x+(r*7), mouse.y+(r*-3), (r*2),(r*1));201 rect(mouse.x+(r*-9), mouse.y+(r*-3), (r*2),(r*1));202 rect(mouse.x+(r*6), mouse.y+(r*-2), (r*4),(r*1));203 rect(mouse.x+(r*-10), mouse.y+(r*-2), (r*4),(r*1));204 rect(mouse.x+(r*5), mouse.y+(r*-1), (r*7),(r*1));205 rect(mouse.x+(r*-12), mouse.y+(r*-1), (r*7),(r*1));206 rect(mouse.x+(r*6), mouse.y+(r*0), (r*3),(r*1));207 rect(mouse.x+(r*-9), mouse.y+(r*0), (r*3),(r*1));208 209 //biru muda210 fill(65,105,225);211 rect(mouse.x+(r*8), mouse.y+(r*-5), (r*1),(r*2));212 rect(mouse.x+(r*9), mouse.y+(r*-5), (r*1),(r*3));213 rect(mouse.x+(r*10), mouse.y+(r*-4), (r*1),(r*3));214 rect(mouse.x+(r*-9), mouse.y+(r*-5), (r*1),(r*2));215 rect(mouse.x+(r*-10), mouse.y+(r*-5), (r*1),(r*3));216 rect(mouse.x+(r*-11), mouse.y+(r*-4), (r*1),(r*3));217 rect(mouse.x+(r*-3), mouse.y+(r*-4), (r*1),(r*1));218 rect(mouse.x+(r*2), mouse.y+(r*-4), (r*1),(r*1));219 220 221 var arahMouse = p5.Vector.sub(mouse, this.location);222 var topSpeed = (2, 10);223 224 arahMouse.normalize();225 arahMouse.mult(0.5); 226 227 228 this.velocity.add(this.acceleration);229 this.velocity.add(arahMouse);230 this.velocity.limit(topSpeed);231 this.location.add(this.velocity);232 }...

Full Screen

Full Screen

CropRect.js

Source:CropRect.js Github

copy

Full Screen

1/**2 * CropRect.js3 *4 * Released under LGPL License.5 * Copyright (c) 1999-2015 Ephox Corp. All rights reserved6 *7 * License: http://www.tinymce.com/license8 * Contributing: http://www.tinymce.com/contributing9 */10/**11 * ...12 */13define("tinymce/imagetoolsplugin/CropRect", [14 "tinymce/dom/DomQuery",15 "tinymce/ui/DragHelper",16 "tinymce/ui/Rect",17 "tinymce/util/Tools",18 "tinymce/util/Observable"19], function($, DragHelper, Rect, Tools, Observable) {20 var count = 0;21 return function(currentRect, viewPortRect, clampRect, containerElm) {22 var instance, handles, dragHelpers, blockers, prefix = 'mce-', id = prefix + 'crid-' + (count++);23 handles = [24 {name: 'move', xMul: 0, yMul: 0, deltaX: 1, deltaY: 1, deltaW: 0, deltaH: 0},25 {name: 'nw', xMul: 0, yMul: 0, deltaX: 1, deltaY: 1, deltaW: -1, deltaH: -1},26 {name: 'ne', xMul: 1, yMul: 0, deltaX: 0, deltaY: 1, deltaW: 1, deltaH: -1},27 {name: 'sw', xMul: 0, yMul: 1, deltaX: 1, deltaY: 0, deltaW: -1, deltaH: 1},28 {name: 'se', xMul: 1, yMul: 1, deltaX: 0, deltaY: 0, deltaW: 1, deltaH: 1}29 ];30 blockers = ["top", "right", "bottom", "left"];31 function getAbsoluteRect(outerRect, relativeRect) {32 return {33 x: relativeRect.x + outerRect.x,34 y: relativeRect.y + outerRect.y,35 w: relativeRect.w,36 h: relativeRect.h37 };38 }39 function getRelativeRect(outerRect, innerRect) {40 return {41 x: innerRect.x - outerRect.x,42 y: innerRect.y - outerRect.y,43 w: innerRect.w,44 h: innerRect.h45 };46 }47 function getInnerRect() {48 return getRelativeRect(clampRect, currentRect);49 }50 function render() {51 function createDragHelper(handle) {52 var startRect;53 return new DragHelper(id, {54 document: containerElm.ownerDocument,55 handle: id + '-' + handle.name,56 start: function() {57 startRect = currentRect;58 },59 drag: function(e) {60 var x, y, w, h, rect;61 x = startRect.x;62 y = startRect.y;63 w = startRect.w;64 h = startRect.h;65 x += e.deltaX * handle.deltaX;66 y += e.deltaY * handle.deltaY;67 w += e.deltaX * handle.deltaW;68 h += e.deltaY * handle.deltaH;69 if (w < 20) {70 w = 20;71 }72 if (h < 20) {73 h = 20;74 }75 rect = currentRect = Rect.clamp({x: x, y: y, w: w, h: h}, clampRect, handle.name == 'move');76 rect = getRelativeRect(clampRect, rect);77 instance.fire('updateRect', {rect: rect});78 setInnerRect(rect);79 }80 });81 }82 $('<div id="' + id + '" class="' + prefix + 'croprect-container" data-mce-bogus="all">').appendTo(containerElm);83 Tools.each(blockers, function(blocker) {84 $('#' + id, containerElm).append(85 '<div id="' + id + '-' + blocker + '"class="' + prefix + 'croprect-block" style="display: none" data-mce-bogus="all">'86 );87 });88 Tools.each(handles, function(handle) {89 $('#' + id, containerElm).append(90 '<div id="' + id + '-' + handle.name + '" class="' + prefix +91 'croprect-handle ' + prefix + 'croprect-handle-' + handle.name + '" style="display: none" data-mce-bogus="all">'92 );93 });94 dragHelpers = Tools.map(handles, createDragHelper);95 repaint(currentRect);96 }97 function toggleVisibility(state) {98 var selectors;99 selectors = Tools.map(handles, function(handle) {100 return '#' + id + '-' + handle.name;101 }).concat(Tools.map(blockers, function(blocker) {102 return '#' + id + '-' + blocker;103 })).join(',');104 if (state) {105 $(selectors, containerElm).show();106 } else {107 $(selectors, containerElm).hide();108 }109 }110 function repaint(rect) {111 function updateElementRect(name, rect) {112 if (rect.h < 0) {113 rect.h = 0;114 }115 if (rect.w < 0) {116 rect.w = 0;117 }118 $('#' + id + '-' + name, containerElm).css({119 left: rect.x,120 top: rect.y,121 width: rect.w,122 height: rect.h123 });124 }125 Tools.each(handles, function(handle) {126 $('#' + id + '-' + handle.name, containerElm).css({127 left: rect.w * handle.xMul + rect.x,128 top: rect.h * handle.yMul + rect.y129 });130 });131 updateElementRect('top', {x: viewPortRect.x, y: viewPortRect.y, w: viewPortRect.w, h: rect.y - viewPortRect.y});132 updateElementRect('right', {x: rect.x + rect.w, y: rect.y, w: viewPortRect.w - rect.x - rect.w + viewPortRect.x, h: rect.h});133 updateElementRect('bottom', {134 x: viewPortRect.x,135 y: rect.y + rect.h,136 w: viewPortRect.w,137 h: viewPortRect.h - rect.y - rect.h + viewPortRect.y138 });139 updateElementRect('left', {x: viewPortRect.x, y: rect.y, w: rect.x - viewPortRect.x, h: rect.h});140 updateElementRect('move', rect);141 }142 function setRect(rect) {143 currentRect = rect;144 repaint(currentRect);145 }146 function setViewPortRect(rect) {147 viewPortRect = rect;148 repaint(currentRect);149 }150 function setInnerRect(rect) {151 setRect(getAbsoluteRect(clampRect, rect));152 }153 function setClampRect(rect) {154 clampRect = rect;155 repaint(currentRect);156 }157 function destroy() {158 Tools.each(dragHelpers, function(helper) {159 helper.destroy();160 });161 dragHelpers = [];162 }163 render(containerElm);164 instance = Tools.extend({165 toggleVisibility: toggleVisibility,166 setClampRect: setClampRect,167 setRect: setRect,168 getInnerRect: getInnerRect,169 setInnerRect: setInnerRect,170 setViewPortRect: setViewPortRect,171 destroy: destroy172 }, Observable);173 return instance;174 };...

Full Screen

Full Screen

rect.pyi

Source:rect.pyi Github

copy

Full Screen

...54 @overload55 def collidepoint(self, x: float, y: float) -> bool: ...56 @overload57 def collidepoint(self, x_y: Iterable[float]) -> bool: ...58 def colliderect(self, rect: "Rect") -> bool: ...59 def collidelist(self, rect_list: List["Rect"]) -> int: ...60 def collidelistall(self, rect_list: List["Rect"]) -> List[int]: ...61 # Also undocumented: the dict collision methods take a 'values' argument62 # that defaults to False. If it is False, the keys in rect_dict must be63 # Rect-like; otherwise, the values must be Rects.64 @overload65 def collidedict(self, rect_dict: Dict[_RectStyle, _V], values: bool = ...) -> Tuple[_RectStyle, _V]: ...66 @overload67 def collidedict(self, rect_dict: Dict[_K, "Rect"], values: bool) -> Tuple[_K, "Rect"]: ...68 @overload69 def collidedictall(self, rect_dict: Dict[_RectStyle, _V], values: bool = ...) -> List[Tuple[_RectStyle, _V]]: ...70 @overload...

Full Screen

Full Screen

Layout.js

Source:Layout.js Github

copy

Full Screen

1/**2 * Layout.js3 *4 * Released under LGPL License.5 * Copyright (c) 1999-2016 Ephox Corp. All rights reserved6 *7 * License: http://www.tinymce.com/license8 * Contributing: http://www.tinymce.com/contributing9 */10define('tinymce/inlite/core/Layout', [11 'global!tinymce.geom.Rect',12 'tinymce/inlite/core/Convert'13], function (Rect, Convert) {14 var result = function (rect, position) {15 return {16 rect: rect,17 position: position18 };19 };20 var moveTo = function (rect, toRect) {21 return {x: toRect.x, y: toRect.y, w: rect.w, h: rect.h};22 };23 var calcByPositions = function (testPositions1, testPositions2, targetRect, contentAreaRect, panelRect) {24 var relPos, relRect, outputPanelRect;25 relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions1);26 targetRect = Rect.clamp(targetRect, contentAreaRect);27 if (relPos) {28 relRect = Rect.relativePosition(panelRect, targetRect, relPos);29 outputPanelRect = moveTo(panelRect, relRect);30 return result(outputPanelRect, relPos);31 }32 targetRect = Rect.intersect(contentAreaRect, targetRect);33 if (targetRect) {34 relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions2);35 if (relPos) {36 relRect = Rect.relativePosition(panelRect, targetRect, relPos);37 outputPanelRect = moveTo(panelRect, relRect);38 return result(outputPanelRect, relPos);39 }40 outputPanelRect = moveTo(panelRect, targetRect);41 return result(outputPanelRect, relPos);42 }43 return null;44 };45 var calcInsert = function (targetRect, contentAreaRect, panelRect) {46 return calcByPositions(47 ['cr-cl', 'cl-cr'],48 ['bc-tc', 'bl-tl', 'br-tr'],49 targetRect,50 contentAreaRect,51 panelRect52 );53 };54 var calc = function (targetRect, contentAreaRect, panelRect) {55 return calcByPositions(56 ['tc-bc', 'bc-tc', 'tl-bl', 'bl-tl', 'tr-br', 'br-tr'],57 ['bc-tc', 'bl-tl', 'br-tr'],58 targetRect,59 contentAreaRect,60 panelRect61 );62 };63 var userConstrain = function (handler, targetRect, contentAreaRect, panelRect) {64 var userConstrainedPanelRect;65 if (typeof handler === 'function') {66 userConstrainedPanelRect = handler({67 elementRect: Convert.toClientRect(targetRect),68 contentAreaRect: Convert.toClientRect(contentAreaRect),69 panelRect: Convert.toClientRect(panelRect)70 });71 return Convert.fromClientRect(userConstrainedPanelRect);72 }73 return panelRect;74 };75 return {76 calcInsert: calcInsert,77 calc: calc,78 userConstrain: userConstrain79 };...

Full Screen

Full Screen

Direction.py

Source:Direction.py Github

copy

Full Screen

1from enum import Enum2from pygame.rect import Rect3def center(rect: Rect, x: int, y: int) -> Rect:4 rect.center = (x, y)5 return rect6def left(rect: Rect, x: int, y: int) -> Rect:7 rect.center = (x + rect.width / 2, y)8 return rect9def right(rect: Rect, x: int, y: int) -> Rect:10 rect.center = (x - rect.width / 2, y)11 return rect12def up(rect: Rect, x: int, y: int) -> Rect:13 rect.center = (x, y - rect.height / 2)14 return rect15def down(rect: Rect, x: int, y: int) -> Rect:16 rect.center = (x, y + rect.height / 2)17 return rect18class DIRECTION(Enum):19 CENTER = center20 LEFT = left21 RIGHT = right22 UP = up...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var ghostjs = require('ghostjs');2ghostjs.create().then(function (ghost) {3 return ghost.rect('#hplogo');4 }).then(function (rect) {5 console.log(rect);6 });7});8### ghostjs.create([options])9Default: `{width: 1024, height: 768}`10### ghost.open(url)11### ghost.close()12### ghost.reload()13### ghost.back()14### ghost.forward()15### ghost.title()16### ghost.url()17### ghost.html()18### ghost.source()19### ghost.css(selector, property)20### ghost.text(selector)21### ghost.attr(selector, attribute)22### ghost.rect(selector)23### ghost.value(selector)24### ghost.count(selector)25### ghost.exists(selector)26### ghost.visible(selector)27### ghost.click(selector)28### ghost.type(selector, text)29### ghost.clear(selector)30### ghost.select(selector, value)31### ghost.check(selector)32### ghost.uncheck(selector)33### ghost.scrollTo(selector, position)

Full Screen

Using AI Code Generation

copy

Full Screen

1var ghost = require('ghostjs');2 ghost.rect('#hplogo', function(err, rect) {3 console.log(rect);4 ghost.exit();5 });6});7var ghost = require('ghostjs');8 ghost.rect('#hplogo', function(err, rect) {9 console.log(rect);10 ghost.exit();11 });12});13var ghost = require('ghostjs');14 ghost.rect('#hplogo', function(err, rect) {15 console.log(rect);16 ghost.exit();17 });18});19var ghost = require('ghostjs');20 ghost.rect('#hplogo', function(err, rect) {21 console.log(rect);22 ghost.exit();23 });24});25var ghost = require('ghostjs');26 ghost.rect('#hplogo', function(err, rect) {27 console.log(rect);28 ghost.exit();29 });30});31var ghost = require('ghostjs');32 ghost.rect('#hplogo', function(err, rect) {33 console.log(rect);34 ghost.exit();35 });36});37var ghost = require('ghostjs');38 ghost.rect('#hplogo', function(err, rect) {39 console.log(rect);40 ghost.exit();41 });42});43var ghost = require('ghostjs');44 ghost.rect('#hplogo', function(err, rect) {45 console.log(rect);46 ghost.exit();47 });48});49var ghost = require('ghostjs');

Full Screen

Using AI Code Generation

copy

Full Screen

1var ghost = require('ghostjs');2var assert = require('assert');3 .then(function() {4 return ghost.wait(2000);5 })6 .then(function() {7 return ghost.rect('#rectangle');8 })9 .then(function(rect) {10 assert.equal(rect.x, 50);11 assert.equal(rect.y, 50);12 assert.equal(rect.width, 100);13 assert.equal(rect.height, 100);14 })15 .then(function() {16 return ghost.exit();17 })18 .catch(function(e) {19 console.log(e);20 });

Full Screen

Using AI Code Generation

copy

Full Screen

1var ghost = require('ghostjs');2 g.wait(1000, function() {3 g.rect({x: 0, y: 0, width: 100, height: 100}, function(err, rect) {4 console.log(rect);5 });6 });7});8### ghostjs.open(url, [options], callback)9- **options** - (optional) an object with the following properties:10### ghostjs.wait(milliseconds, callback)11### ghostjs.rect(options, callback)12### ghostjs.click(options, callback)13### ghostjs.mouseDown(options, callback)

Full Screen

Using AI Code Generation

copy

Full Screen

1var ghost = require('ghostjs');2 ghost.rect('#hplogo', function(err, rect) {3 console.log(rect);4 });5});6var ghost = require('ghostjs');7 ghost.rect('#hplogo', function(err, rect) {8 console.log(rect);9 });10});11var ghost = require('ghostjs');12 ghost.rect('#hplogo', function(err, rect) {13 console.log(rect);14 });15});16var ghost = require('ghostjs');17 ghost.rect('#hplogo', function(err, rect) {18 console.log(rect);19 });20});21var ghost = require('ghostjs');22 ghost.rect('#hplogo', function(err, rect) {23 console.log(rect);24 });25});26var ghost = require('ghostjs');27 ghost.rect('#hplogo', function(err, rect) {28 console.log(rect);29 });30});31var ghost = require('ghostjs');32 ghost.rect('#hplogo', function(err, rect) {33 console.log(rect);34 });35});36var ghost = require('ghostjs');37 ghost.rect('#hplogo', function(err, rect) {38 console.log(rect);39 });40});41var ghost = require('ghostjs');42 ghost.rect('#hplogo', function(err, rect) {43 console.log(rect);44 });45});

Full Screen

Using AI Code Generation

copy

Full Screen

1var ghost = require('ghostjs');2var rect = require('ghostjs').rect;3 .then(function() {4 return rect(100, 100, 300, 300);5 })6 .then(function() {7 return ghost.screenshot('google.png');8 })9 .then(function() {10 return ghost.exit();11 })12 .catch(function(error) {13 console.log(error);14 });15#### ghostjs.open(url)16#### ghostjs.exit()17#### ghostjs.screenshot(filename)18#### ghostjs.rect(x, y, width, height)19#### ghostjs.click(selector)20#### ghostjs.sendKeys(selector, text)21#### ghostjs.mouseEvent(selector, type)22#### ghostjs.mouseMove(selector)23#### ghostjs.mouseDown(selector)24#### ghostjs.mouseUp(selector)25#### ghostjs.mouseClick(selector)26#### ghostjs.mouseDoubleClick(selector)27#### ghostjs.mouseOver(selector)28#### ghostjs.mouseOut(selector)29#### ghostjs.mouseEnter(selector)30#### ghostjs.mouseLeave(selector)31#### ghostjs.mouseWheel(selector)32#### ghostjs.mouseScroll(selector)33#### ghostjs.mouseDrag(selector)34#### ghostjs.mouseDragAndDrop(selector, target)35#### ghostjs.scroll(x, y)36#### ghostjs.scrollLeft(x

Full Screen

Using AI Code Generation

copy

Full Screen

1var ghost = require('ghostjs');2 .then(function() {3 return ghost.rect('#hplogo', function(rect) {4 console.log(rect);5 });6 })7 .then(function() {8 return ghost.close();9 })10 .catch(function(e) {11 console.log(e);12 ghost.close();13 });14var ghost = require('ghostjs');15 .then(function() {16 return ghost.rect('#hplogo', function(rect) {17 console.log(rect);18 });19 })20 .then(function() {21 return ghost.close();22 })23 .catch(function(e) {24 console.log(e);25 ghost.close();26 });27The MIT License (MIT)28[Michael Zaporozhets](

Full Screen

Using AI Code Generation

copy

Full Screen

1var ghost = require('ghostjs');2 ghost.rect(function(err, rect) {3 console.log(rect);4 });5});6ghost.exit();7{ x: 0, y: 0, width: 1024, height: 768 }

Full Screen

Using AI Code Generation

copy

Full Screen

1var ghost = require('ghostjs');2 ghost.rect(0, 0, 100, 100, function() {3 ghost.exit();4 });5});6var ghost = require('ghostjs');7ghost.open('test.png', function() {8 ghost.rect(0, 0, 100, 100, function() {9 ghost.exit();10 });11});12ghost.rect(x, y, width, height, callback)13{14}

Full Screen

Using AI Code Generation

copy

Full Screen

1#### `new Ghost(options)`2#### `ghost.open(url, options)`3#### `ghost.close()`4#### `ghost.run(code, options)`5#### `ghost.screenshot(options)`6- `format` - format of the screenshot (png, jpeg)7- `quality` - quality of the screenshot (0-100)8#### `ghost.pdf(options)`9- `format` - format of the pdf (A3, A4, A5, Legal, Letter, Tabloid)10- `orientation` - orientation of the pdf (portrait, landscape)11- `margin` - margin of the pdf (in mm)12#### `ghost.injectJs(path)`13#### `ghost.evaluate(code, options)`14#### `ghost.includeJs(url, options)`15#### `ghost.setHeaders(headers)`16#### `ghost.setCookies(cookies)`17#### `ghost.addCookie(cookie)`

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run ghostjs automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful