module Data.QR.Tables ( dataBits , capacity ) where import Data.QR.Types dataBits :: Version -> Level -> Int dataBits v l = values !! ((v - 1) * 4 + levelIndex l) where values = [ 152, 128, 104, 72 , 272, 224, 176, 128 , 440, 352, 272, 208 , 640, 512, 384, 288 , 864, 688, 496, 368 , 1088, 864, 608, 480 , 1248, 992, 704, 528 , 1552, 1232, 880, 688 , 1856, 1456, 1056, 800 , 2192, 1728, 1232, 976 , 2592, 2032, 1440, 1120 , 2960, 2320, 1648, 1264 , 3424, 2672, 1952, 1440 , 3688, 2920, 2088, 1576 , 4184, 3320, 2360, 1784 , 4712, 3624, 2600, 2024 , 5176, 4056, 2936, 2264 , 5768, 4504, 3176, 2504 , 6360, 5016, 3560, 2728 , 6888, 5352, 3880, 3080 , 7456, 5712, 4096, 3248 , 8048, 6256, 4544, 3536 , 8752, 6880, 4912, 3712 , 9392, 7312, 5312, 4112 , 10208, 8000, 5744, 4304 , 10960, 8496, 6032, 4768 , 11744, 9024, 6464, 5024 , 12248, 9544, 6968, 5288 , 13048, 10136, 7288, 5608 , 13880, 10984, 7880, 5960 , 14744, 11640, 8264, 6344 , 15640, 12328, 8920, 6760 , 16568, 13048, 9368, 7208 , 17528, 13800, 9848, 7688 , 18448, 14496, 10288, 7888 , 19472, 15312, 10832, 8432 , 20528, 15936, 11408, 8768 , 21616, 16816, 12016, 9136 , 22496, 17728, 12656, 9776 , 23648, 18672, 13328, 10208 ] capacity :: Level -> Mode -> Version -> Int capacity l m v = capacities !! ((v - 1) * 16 + fromEnum l * 4 + fromEnum m) where capacities = [ 41, 25, 17, 10 , 34, 20, 14, 8 , 27, 16, 11, 7 , 17, 10, 7, 4 , 77, 47, 32, 20 , 63, 38, 26, 16 , 48, 29, 20, 12 , 34, 20, 14, 8 , 127, 77, 53, 32 , 101, 61, 42, 26 , 77, 47, 32, 20 , 58, 35, 24, 15 , 187, 114, 78, 48 , 149, 90, 62, 38 , 111, 67, 46, 28 , 82, 50, 34, 21 , 255, 154, 106, 65 , 202, 122, 84, 52 , 144, 87, 60, 37 , 106, 64, 44, 27 , 322, 195, 134, 82 , 255, 154, 106, 65 , 178, 108, 74, 45 , 139, 84, 58, 36 , 370, 224, 154, 95 , 293, 178, 122, 75 , 207, 125, 86, 53 , 154, 93, 64, 39 , 461, 279, 192, 118 , 365, 221, 152, 93 , 259, 157, 108, 66 , 202, 122, 84, 52 , 552, 335, 230, 141 , 432, 262, 180, 111 , 312, 189, 130, 80 , 235, 143, 98, 60 , 652, 395, 271, 167 , 513, 311, 213, 131 , 364, 221, 151, 93 , 288, 174, 119, 74 , 772, 468, 321, 198 , 604, 366, 251, 155 , 427, 259, 177, 109 , 331, 200, 137, 85 , 883, 535, 367, 226 , 691, 419, 287, 177 , 489, 296, 203, 125 , 374, 227, 155, 96 , 1022, 619, 425, 262 , 796, 483, 331, 204 , 580, 352, 241, 149 , 427, 259, 177, 109 , 1101, 667, 458, 282 , 871, 528, 362, 223 , 621, 376, 258, 159 , 468, 283, 194, 120 , 1250, 758, 520, 320 , 991, 600, 412, 254 , 703, 426, 292, 180 , 530, 321, 220, 136 , 1408, 854, 586, 361 , 1082, 656, 450, 277 , 775, 470, 322, 198 , 602, 365, 250, 154 , 1548, 938, 644, 397 , 1212, 734, 504, 310 , 876, 531, 364, 224 , 674, 408, 280, 173 , 1725, 1046, 718, 442 , 1346, 816, 560, 345 , 948, 574, 394, 243 , 746, 452, 310, 191 , 1903, 1153, 792, 488 , 1500, 909, 624, 384 , 1063, 644, 442, 272 , 813, 493, 338, 208 , 2061, 1249, 858, 528 , 1600, 970, 666, 410 , 1159, 702, 482, 297 , 919, 557, 382, 235 , 2232, 1352, 929, 572 , 1708, 1035, 711, 438 , 1224, 742, 509, 314 , 969, 587, 403, 248 , 2409, 1460, 1003, 618 , 1872, 1134, 779, 480 , 1358, 823, 565, 348 , 1056, 640, 439, 270 , 2620, 1588, 1091, 672 , 2059, 1248, 857, 528 , 1468, 890, 611, 376 , 1108, 672, 461, 284 , 2812, 1704, 1171, 721 , 2188, 1326, 911, 561 , 1588, 963, 661, 407 , 1228, 744, 511, 315 , 3057, 1853, 1273, 784 , 2395, 1451, 997, 614 , 1718, 1041, 715, 440 , 1286, 779, 535, 330 , 3283, 1990, 1367, 842 , 2544, 1542, 1059, 652 , 1804, 1094, 751, 462 , 1425, 864, 593, 365 , 3517, 2132, 1465, 902 , 2701, 1637, 1125, 692 , 1933, 1172, 805, 496 , 1501, 910, 625, 385 , 3669, 2223, 1528, 940 , 2857, 1732, 1190, 732 , 2085, 1263, 868, 534 , 1581, 958, 658, 405 , 3909, 2369, 1628, 1002 , 3035, 1839, 1264, 778 , 2181, 1322, 908, 559 , 1677, 1016, 698, 430 , 4158, 2520, 1732, 1066 , 3289, 1994, 1370, 843 , 2358, 1429, 982, 604 , 1782, 1080, 742, 457 , 4417, 2677, 1840, 1132 , 3486, 2113, 1452, 894 , 2473, 1499, 1030, 634 , 1897, 1150, 790, 486 , 4686, 2840, 1952, 1201 , 3693, 2238, 1538, 947 , 2670, 1618, 1112, 684 , 2022, 1226, 842, 518 , 4965, 3009, 2068, 1273 , 3909, 2369, 1628, 1002 , 2805, 1700, 1168, 719 , 2157, 1307, 898, 553 , 5253, 3183, 2188, 1347 , 4134, 2506, 1722, 1060 , 2949, 1787, 1228, 756 , 2301, 1394, 958, 590 , 5529, 3351, 2303, 1417 , 4343, 2632, 1809, 1113 , 3081, 1867, 1283, 790 , 2361, 1431, 983, 605 , 5836, 3537, 2431, 1496 , 4588, 2780, 1911, 1176 , 3244, 1966, 1351, 832 , 2524, 1530, 1051, 647 , 6153, 3729, 2563, 1577 , 4775, 2894, 1989, 1224 , 3417, 2071, 1423, 876 , 2625, 1591, 1093, 673 , 6479, 3927, 2699, 1661 , 5039, 3054, 2099, 1292 , 3599, 2181, 1499, 923 , 2735, 1658, 1139, 701 , 6743, 4087, 2809, 1729 , 5313, 3220, 2213, 1362 , 3791, 2298, 1579, 972 , 2927, 1774, 1219, 750 , 7089, 4296, 2953, 1817 , 5596, 3391, 2331, 1435 , 3993, 2420, 1663, 1024 , 3057, 1852, 1273, 784 ]