qrcode.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  1. !(function () {
  2. var r;
  3. var o;
  4. var f;
  5. var e;
  6. var a;
  7. var t;
  8. var n = [0, 11, 15, 19, 23, 27, 31, 16, 18, 20, 22, 24, 26, 28, 20, 22, 24, 24, 26, 28, 28, 22, 24, 24, 26, 26, 28, 28, 24, 24, 26, 26, 26, 28, 28, 24, 26, 26, 26, 28, 28];
  9. var c = [
  10. 3220, 1468, 2713, 1235, 3062, 1890, 2119, 1549, 2344, 2936, 1117, 2583, 1330, 2470, 1667, 2249, 2028, 3780, 481, 4011, 142, 3098, 831, 3445, 592, 2517, 1776, 2234, 1951,
  11. 2827, 1070, 2660, 1345, 3177
  12. ];
  13. var i = [
  14. 30660, 29427, 32170, 30877, 26159, 25368, 27713, 26998, 21522, 20773, 24188, 23371, 17913, 16590, 20375, 19104, 13663, 12392, 16177, 14854, 9396, 8579, 11994, 11245, 5769,
  15. 5054, 7399, 6608, 1890, 597, 3340, 2107
  16. ];
  17. var s = [
  18. 1, 0, 19, 7, 1, 0, 16, 10, 1, 0, 13, 13, 1, 0, 9, 17, 1, 0, 34, 10, 1, 0, 28, 16, 1, 0, 22, 22, 1, 0, 16, 28, 1, 0, 55, 15, 1, 0, 44, 26, 2, 0, 17, 18, 2, 0, 13, 22, 1, 0,
  19. 80, 20, 2, 0, 32, 18, 2, 0, 24, 26, 4, 0, 9, 16, 1, 0, 108, 26, 2, 0, 43, 24, 2, 2, 15, 18, 2, 2, 11, 22, 2, 0, 68, 18, 4, 0, 27, 16, 4, 0, 19, 24, 4, 0, 15, 28, 2, 0, 78,
  20. 20, 4, 0, 31, 18, 2, 4, 14, 18, 4, 1, 13, 26, 2, 0, 97, 24, 2, 2, 38, 22, 4, 2, 18, 22, 4, 2, 14, 26, 2, 0, 116, 30, 3, 2, 36, 22, 4, 4, 16, 20, 4, 4, 12, 24, 2, 2, 68, 18,
  21. 4, 1, 43, 26, 6, 2, 19, 24, 6, 2, 15, 28, 4, 0, 81, 20, 1, 4, 50, 30, 4, 4, 22, 28, 3, 8, 12, 24, 2, 2, 92, 24, 6, 2, 36, 22, 4, 6, 20, 26, 7, 4, 14, 28, 4, 0, 107, 26, 8,
  22. 1, 37, 22, 8, 4, 20, 24, 12, 4, 11, 22, 3, 1, 115, 30, 4, 5, 40, 24, 11, 5, 16, 20, 11, 5, 12, 24, 5, 1, 87, 22, 5, 5, 41, 24, 5, 7, 24, 30, 11, 7, 12, 24, 5, 1, 98, 24, 7,
  23. 3, 45, 28, 15, 2, 19, 24, 3, 13, 15, 30, 1, 5, 107, 28, 10, 1, 46, 28, 1, 15, 22, 28, 2, 17, 14, 28, 5, 1, 120, 30, 9, 4, 43, 26, 17, 1, 22, 28, 2, 19, 14, 28, 3, 4, 113,
  24. 28, 3, 11, 44, 26, 17, 4, 21, 26, 9, 16, 13, 26, 3, 5, 107, 28, 3, 13, 41, 26, 15, 5, 24, 30, 15, 10, 15, 28, 4, 4, 116, 28, 17, 0, 42, 26, 17, 6, 22, 28, 19, 6, 16, 30, 2,
  25. 7, 111, 28, 17, 0, 46, 28, 7, 16, 24, 30, 34, 0, 13, 24, 4, 5, 121, 30, 4, 14, 47, 28, 11, 14, 24, 30, 16, 14, 15, 30, 6, 4, 117, 30, 6, 14, 45, 28, 11, 16, 24, 30, 30, 2,
  26. 16, 30, 8, 4, 106, 26, 8, 13, 47, 28, 7, 22, 24, 30, 22, 13, 15, 30, 10, 2, 114, 28, 19, 4, 46, 28, 28, 6, 22, 28, 33, 4, 16, 30, 8, 4, 122, 30, 22, 3, 45, 28, 8, 26, 23,
  27. 30, 12, 28, 15, 30, 3, 10, 117, 30, 3, 23, 45, 28, 4, 31, 24, 30, 11, 31, 15, 30, 7, 7, 116, 30, 21, 7, 45, 28, 1, 37, 23, 30, 19, 26, 15, 30, 5, 10, 115, 30, 19, 10, 47,
  28. 28, 15, 25, 24, 30, 23, 25, 15, 30, 13, 3, 115, 30, 2, 29, 46, 28, 42, 1, 24, 30, 23, 28, 15, 30, 17, 0, 115, 30, 10, 23, 46, 28, 10, 35, 24, 30, 19, 35, 15, 30, 17, 1,
  29. 115, 30, 14, 21, 46, 28, 29, 19, 24, 30, 11, 46, 15, 30, 13, 6, 115, 30, 14, 23, 46, 28, 44, 7, 24, 30, 59, 1, 16, 30, 12, 7, 121, 30, 12, 26, 47, 28, 39, 14, 24, 30, 22,
  30. 41, 15, 30, 6, 14, 121, 30, 6, 34, 47, 28, 46, 10, 24, 30, 2, 64, 15, 30, 17, 4, 122, 30, 29, 14, 46, 28, 49, 10, 24, 30, 24, 46, 15, 30, 4, 18, 122, 30, 13, 32, 46, 28,
  31. 48, 14, 24, 30, 42, 32, 15, 30, 20, 4, 117, 30, 40, 7, 47, 28, 43, 22, 24, 30, 10, 67, 15, 30, 19, 6, 118, 30, 18, 31, 47, 28, 34, 34, 24, 30, 20, 61, 15, 30
  32. ];
  33. var l = [
  34. 255, 0, 1, 25, 2, 50, 26, 198, 3, 223, 51, 238, 27, 104, 199, 75, 4, 100, 224, 14, 52, 141, 239, 129, 28, 193, 105, 248, 200, 8, 76, 113, 5, 138, 101, 47, 225, 36, 15, 33,
  35. 53, 147, 142, 218, 240, 18, 130, 69, 29, 181, 194, 125, 106, 39, 249, 185, 201, 154, 9, 120, 77, 228, 114, 166, 6, 191, 139, 98, 102, 221, 48, 253, 226, 152, 37, 179, 16,
  36. 145, 34, 136, 54, 208, 148, 206, 143, 150, 219, 189, 241, 210, 19, 92, 131, 56, 70, 64, 30, 66, 182, 163, 195, 72, 126, 110, 107, 58, 40, 84, 250, 133, 186, 61, 202, 94,
  37. 155, 159, 10, 21, 121, 43, 78, 212, 229, 172, 115, 243, 167, 87, 7, 112, 192, 247, 140, 128, 99, 13, 103, 74, 222, 237, 49, 197, 254, 24, 227, 165, 153, 119, 38, 184, 180,
  38. 124, 17, 68, 146, 217, 35, 32, 137, 46, 55, 63, 209, 91, 149, 188, 207, 205, 144, 135, 151, 178, 220, 252, 190, 97, 242, 86, 211, 171, 20, 42, 93, 158, 132, 60, 57, 83, 71,
  39. 109, 65, 162, 31, 45, 67, 216, 183, 123, 164, 118, 196, 23, 73, 236, 127, 12, 111, 246, 108, 161, 59, 82, 41, 157, 85, 170, 251, 96, 134, 177, 187, 204, 62, 90, 203, 89,
  40. 95, 176, 156, 169, 160, 81, 11, 245, 22, 235, 122, 117, 44, 215, 79, 174, 213, 233, 230, 231, 173, 232, 116, 214, 244, 234, 168, 80, 88, 175
  41. ];
  42. var u = [
  43. 1, 2, 4, 8, 16, 32, 64, 128, 29, 58, 116, 232, 205, 135, 19, 38, 76, 152, 45, 90, 180, 117, 234, 201, 143, 3, 6, 12, 24, 48, 96, 192, 157, 39, 78, 156, 37, 74, 148, 53,
  44. 106, 212, 181, 119, 238, 193, 159, 35, 70, 140, 5, 10, 20, 40, 80, 160, 93, 186, 105, 210, 185, 111, 222, 161, 95, 190, 97, 194, 153, 47, 94, 188, 101, 202, 137, 15, 30,
  45. 60, 120, 240, 253, 231, 211, 187, 107, 214, 177, 127, 254, 225, 223, 163, 91, 182, 113, 226, 217, 175, 67, 134, 17, 34, 68, 136, 13, 26, 52, 104, 208, 189, 103, 206, 129,
  46. 31, 62, 124, 248, 237, 199, 147, 59, 118, 236, 197, 151, 51, 102, 204, 133, 23, 46, 92, 184, 109, 218, 169, 79, 158, 33, 66, 132, 21, 42, 84, 168, 77, 154, 41, 82, 164, 85,
  47. 170, 73, 146, 57, 114, 228, 213, 183, 115, 230, 209, 191, 99, 198, 145, 63, 126, 252, 229, 215, 179, 123, 246, 241, 255, 227, 219, 171, 75, 150, 49, 98, 196, 149, 55, 110,
  48. 220, 165, 87, 174, 65, 130, 25, 50, 100, 200, 141, 7, 14, 28, 56, 112, 224, 221, 167, 83, 166, 81, 162, 89, 178, 121, 242, 249, 239, 195, 155, 43, 86, 172, 69, 138, 9, 18,
  49. 36, 72, 144, 61, 122, 244, 245, 247, 243, 251, 235, 203, 139, 11, 22, 44, 88, 176, 125, 250, 233, 207, 131, 27, 54, 108, 216, 173, 71, 142, 0
  50. ];
  51. var v = [];
  52. var d = [];
  53. var h = [];
  54. var b = [];
  55. var k = [];
  56. var w = 2;
  57. function g(r, o) {
  58. var f;
  59. if (r > o) {
  60. f = r;
  61. r = o;
  62. o = f;
  63. }
  64. f = o;
  65. f *= o;
  66. f += o;
  67. f >>= 1;
  68. b[(f += r)] = 1;
  69. }
  70. function m(r, f) {
  71. var e;
  72. for (h[r + o * f] = 1, e = -2; e < 2; e++) {
  73. h[r + e + o * (f - 2)] = 1;
  74. h[r - 2 + o * (f + e + 1)] = 1;
  75. h[r + 2 + o * (f + e)] = 1;
  76. h[r + e + 1 + o * (f + 2)] = 1;
  77. }
  78. for (e = 0; e < 2; e++) {
  79. g(r - 1, f + e);
  80. g(r + 1, f - e);
  81. g(r - e, f - 1);
  82. g(r + e, f + 1);
  83. }
  84. }
  85. function x(r) {
  86. for (; r >= 255; ) {
  87. r = ((r -= 255) >> 8) + (255 & r);
  88. }
  89. return r;
  90. }
  91. var z = [];
  92. function p(r, o, f, e) {
  93. var a;
  94. var t;
  95. var n;
  96. for (a = 0; a < e; a++) {
  97. v[f + a] = 0;
  98. }
  99. for (a = 0; a < o; a++) {
  100. if (255 != (n = l[v[r + a] ^ v[f]])) {
  101. for (t = 1; t < e; t++) {
  102. v[f + t - 1] = v[f + t] ^ u[x(n + z[e - t])];
  103. }
  104. } else {
  105. for (t = f; t < f + e; t++) {
  106. v[t] = v[t + 1];
  107. }
  108. }
  109. v[f + e - 1] = 255 == n ? 0 : u[x(n + z[0])];
  110. }
  111. }
  112. function A(r, o) {
  113. var f;
  114. if (r > o) {
  115. f = r;
  116. r = o;
  117. o = f;
  118. }
  119. f = o;
  120. f += o * o;
  121. f >>= 1;
  122. return b[(f += r)];
  123. }
  124. function C(r) {
  125. var f;
  126. var e;
  127. var a;
  128. var t;
  129. switch (r) {
  130. case 0:
  131. for (e = 0; e < o; e++) {
  132. for (f = 0; f < o; f++) {
  133. (f + e) & 1 || A(f, e) || (h[f + e * o] ^= 1);
  134. }
  135. }
  136. break;
  137. case 1:
  138. for (e = 0; e < o; e++) {
  139. for (f = 0; f < o; f++) {
  140. 1 & e || A(f, e) || (h[f + e * o] ^= 1);
  141. }
  142. }
  143. break;
  144. case 2:
  145. for (e = 0; e < o; e++) {
  146. for (a = 0, f = 0; f < o; f++, a++) {
  147. if (3 == a) {
  148. a = 0;
  149. }
  150. a || A(f, e) || (h[f + e * o] ^= 1);
  151. }
  152. }
  153. break;
  154. case 3:
  155. for (t = 0, e = 0; e < o; e++, t++) {
  156. for (3 == t && (t = 0), a = t, f = 0; f < o; f++, a++) {
  157. if (3 == a) {
  158. a = 0;
  159. }
  160. a || A(f, e) || (h[f + e * o] ^= 1);
  161. }
  162. }
  163. break;
  164. case 4:
  165. for (e = 0; e < o; e++) {
  166. for (a = 0, t = (e >> 1) & 1, f = 0; f < o; f++, a++) {
  167. if (3 == a) {
  168. a = 0;
  169. t = !t;
  170. }
  171. t || A(f, e) || (h[f + e * o] ^= 1);
  172. }
  173. }
  174. break;
  175. case 5:
  176. for (t = 0, e = 0; e < o; e++, t++) {
  177. for (3 == t && (t = 0), a = 0, f = 0; f < o; f++, a++) {
  178. if (3 == a) {
  179. a = 0;
  180. }
  181. (f & e & 1) + !(!a | !t) || A(f, e) || (h[f + e * o] ^= 1);
  182. }
  183. }
  184. break;
  185. case 6:
  186. for (t = 0, e = 0; e < o; e++, t++) {
  187. for (3 == t && (t = 0), a = 0, f = 0; f < o; f++, a++) {
  188. if (3 == a) {
  189. a = 0;
  190. }
  191. ((f & e & 1) + (a && a == t)) & 1 || A(f, e) || (h[f + e * o] ^= 1);
  192. }
  193. }
  194. break;
  195. case 7:
  196. for (t = 0, e = 0; e < o; e++, t++) {
  197. for (3 == t && (t = 0), a = 0, f = 0; f < o; f++, a++) {
  198. if (3 == a) {
  199. a = 0;
  200. }
  201. ((a && a == t) + ((f + e) & 1)) & 1 || A(f, e) || (h[f + e * o] ^= 1);
  202. }
  203. }
  204. }
  205. }
  206. function F(r) {
  207. var o;
  208. var f = 0;
  209. for (o = 0; o <= r; o++) {
  210. if (k[o] >= 5) {
  211. f += 3 + k[o] - 5;
  212. }
  213. }
  214. for (o = 3; o < r - 1; o += 2) {
  215. if (
  216. k[o - 2] == k[o + 2] &&
  217. k[o + 2] == k[o - 1] &&
  218. k[o - 1] == k[o + 1] &&
  219. 3 * k[o - 1] == k[o] &&
  220. (0 == k[o - 3] || o + 3 > r || 3 * k[o - 3] >= 4 * k[o] || 3 * k[o + 3] >= 4 * k[o])
  221. ) {
  222. f += 40;
  223. }
  224. }
  225. return f;
  226. }
  227. function M() {
  228. var r;
  229. var f;
  230. var e;
  231. var a;
  232. var t;
  233. var n = 0;
  234. var c = 0;
  235. for (f = 0; f < o - 1; f++) {
  236. for (r = 0; r < o - 1; r++) {
  237. if (
  238. (h[r + o * f] && h[r + 1 + o * f] && h[r + o * (f + 1)] && h[r + 1 + o * (f + 1)]) ||
  239. !(h[r + o * f] || h[r + 1 + o * f] || h[r + o * (f + 1)] || h[r + 1 + o * (f + 1)])
  240. ) {
  241. n += 3;
  242. }
  243. }
  244. }
  245. for (f = 0; f < o; f++) {
  246. for (k[0] = 0, e = a = r = 0; r < o; r++) {
  247. (t = h[r + o * f]) == a ? k[e]++ : (k[++e] = 1);
  248. c += (a = t) ? 1 : -1;
  249. }
  250. n += F(e);
  251. }
  252. if (c < 0) {
  253. c = -c;
  254. }
  255. var i = c;
  256. var s = 0;
  257. for (i += i << 2, i <<= 1; i > o * o; ) {
  258. i -= o * o;
  259. s++;
  260. }
  261. for (n += 10 * s, r = 0; r < o; r++) {
  262. for (k[0] = 0, e = a = f = 0; f < o; f++) {
  263. (t = h[r + o * f]) == a ? k[e]++ : (k[++e] = 1);
  264. a = t;
  265. }
  266. n += F(e);
  267. }
  268. return n;
  269. }
  270. var R = null;
  271. var _ = {
  272. get ecclevel() {
  273. return w;
  274. },
  275. set ecclevel(r) {
  276. w = r;
  277. },
  278. get size() {
  279. return _size;
  280. },
  281. set size(r) {
  282. _size = r;
  283. },
  284. get canvas() {
  285. return R;
  286. },
  287. set canvas(r) {
  288. R = r;
  289. },
  290. getFrame: function (k) {
  291. return (function (k) {
  292. var F;
  293. var R;
  294. var _;
  295. var q;
  296. var y;
  297. var I;
  298. var N;
  299. var Q;
  300. q = k.length;
  301. r = 0;
  302. do {
  303. r++;
  304. _ = 4 * (w - 1) + 16 * (r - 1);
  305. f = s[_++];
  306. e = s[_++];
  307. a = s[_++];
  308. t = s[_];
  309. if (q <= (_ = a * (f + e) + e - 3 + (r <= 9))) {
  310. break;
  311. }
  312. } while (r < 40);
  313. for (o = 17 + 4 * r, y = a + (a + t) * (f + e) + e, q = 0; q < y; q++) {
  314. d[q] = 0;
  315. }
  316. for (v = k.slice(0), q = 0; q < o * o; q++) {
  317. h[q] = 0;
  318. }
  319. for (q = 0; q < (o * (o + 1) + 1) / 2; q++) {
  320. b[q] = 0;
  321. }
  322. for (q = 0; q < 3; q++) {
  323. for (_ = 0, R = 0, 1 == q && (_ = o - 7), 2 == q && (R = o - 7), h[R + 3 + o * (_ + 3)] = 1, F = 0; F < 6; F++) {
  324. h[R + F + o * _] = 1;
  325. h[R + o * (_ + F + 1)] = 1;
  326. h[R + 6 + o * (_ + F)] = 1;
  327. h[R + F + 1 + o * (_ + 6)] = 1;
  328. }
  329. for (F = 1; F < 5; F++) {
  330. g(R + F, _ + 1);
  331. g(R + 1, _ + F + 1);
  332. g(R + 5, _ + F);
  333. g(R + F + 1, _ + 5);
  334. }
  335. for (F = 2; F < 4; F++) {
  336. h[R + F + o * (_ + 2)] = 1;
  337. h[R + 2 + o * (_ + F + 1)] = 1;
  338. h[R + 4 + o * (_ + F)] = 1;
  339. h[R + F + 1 + o * (_ + 4)] = 1;
  340. }
  341. }
  342. if (r > 1) {
  343. for (q = n[r], R = o - 7; ; ) {
  344. for (F = o - 7; F > q - 3 && (m(F, R), !(F < q)); ) {
  345. F -= q;
  346. }
  347. if (R <= q + 9) {
  348. break;
  349. }
  350. m(6, (R -= q));
  351. m(R, 6);
  352. }
  353. }
  354. for (h[8 + o * (o - 8)] = 1, R = 0; R < 7; R++) {
  355. g(7, R);
  356. g(o - 8, R);
  357. g(7, R + o - 7);
  358. }
  359. for (F = 0; F < 8; F++) {
  360. g(F, 7);
  361. g(F + o - 8, 7);
  362. g(F, o - 8);
  363. }
  364. for (F = 0; F < 9; F++) {
  365. g(F, 8);
  366. }
  367. for (F = 0; F < 8; F++) {
  368. g(F + o - 8, 8);
  369. g(8, F);
  370. }
  371. for (R = 0; R < 7; R++) {
  372. g(8, R + o - 7);
  373. }
  374. for (F = 0; F < o - 14; F++) {
  375. 1 & F ? (g(8 + F, 6), g(6, 8 + F)) : ((h[8 + F + 6 * o] = 1), (h[6 + o * (8 + F)] = 1));
  376. }
  377. if (r > 6) {
  378. for (q = c[r - 7], _ = 17, F = 0; F < 6; F++) {
  379. for (R = 0; R < 3; R++, _--) {
  380. 1 & (_ > 11 ? r >> (_ - 12) : q >> _)
  381. ? ((h[5 - F + o * (2 - R + o - 11)] = 1), (h[2 - R + o - 11 + o * (5 - F)] = 1))
  382. : (g(5 - F, 2 - R + o - 11), g(2 - R + o - 11, 5 - F));
  383. }
  384. }
  385. }
  386. for (R = 0; R < o; R++) {
  387. for (F = 0; F <= R; F++) {
  388. if (h[F + o * R]) {
  389. g(F, R);
  390. }
  391. }
  392. }
  393. for (y = v.length, I = 0; I < y; I++) {
  394. d[I] = v.charCodeAt(I);
  395. }
  396. v = d.slice(0);
  397. if (y >= (F = a * (f + e) + e) - 2) {
  398. y = F - 2;
  399. if (r > 9) {
  400. y--;
  401. }
  402. }
  403. I = y;
  404. if (r > 9) {
  405. for (v[I + 2] = 0, v[I + 3] = 0; I--; ) {
  406. q = v[I];
  407. v[I + 3] |= 255 & (q << 4);
  408. v[I + 2] = q >> 4;
  409. }
  410. v[2] |= 255 & (y << 4);
  411. v[1] = y >> 4;
  412. v[0] = 64 | (y >> 12);
  413. } else {
  414. for (v[I + 1] = 0, v[I + 2] = 0; I--; ) {
  415. q = v[I];
  416. v[I + 2] |= 255 & (q << 4);
  417. v[I + 1] = q >> 4;
  418. }
  419. v[1] |= 255 & (y << 4);
  420. v[0] = 64 | (y >> 4);
  421. }
  422. for (I = y + 3 - (r < 10); I < F; ) {
  423. v[I++] = 236;
  424. v[I++] = 17;
  425. }
  426. for (z[0] = 1, I = 0; I < t; I++) {
  427. for (z[I + 1] = 1, N = I; N > 0; N--) {
  428. z[N] = z[N] ? z[N - 1] ^ u[x(l[z[N]] + I)] : z[N - 1];
  429. }
  430. z[0] = u[x(l[z[0]] + I)];
  431. }
  432. for (I = 0; I <= t; I++) {
  433. z[I] = l[z[I]];
  434. }
  435. for (_ = F, R = 0, I = 0; I < f; I++) {
  436. p(R, a, _, t);
  437. R += a;
  438. _ += t;
  439. }
  440. for (I = 0; I < e; I++) {
  441. p(R, a + 1, _, t);
  442. R += a + 1;
  443. _ += t;
  444. }
  445. for (R = 0, I = 0; I < a; I++) {
  446. for (N = 0; N < f; N++) {
  447. d[R++] = v[I + N * a];
  448. }
  449. for (N = 0; N < e; N++) {
  450. d[R++] = v[f * a + I + N * (a + 1)];
  451. }
  452. }
  453. for (N = 0; N < e; N++) {
  454. d[R++] = v[f * a + I + N * (a + 1)];
  455. }
  456. for (I = 0; I < t; I++) {
  457. for (N = 0; N < f + e; N++) {
  458. d[R++] = v[F + I + N * t];
  459. }
  460. }
  461. for (v = d, F = R = o - 1, _ = y = 1, Q = (a + t) * (f + e) + e, I = 0; I < Q; I++) {
  462. for (q = v[I], N = 0; N < 8; N++, q <<= 1) {
  463. if (128 & q) {
  464. h[F + o * R] = 1;
  465. }
  466. do {
  467. y ? F-- : (F++, _ ? (0 != R ? R-- : ((_ = !_), 6 == (F -= 2) && (F--, (R = 9)))) : R != o - 1 ? R++ : ((_ = !_), 6 == (F -= 2) && (F--, (R -= 8))));
  468. y = !y;
  469. } while (A(F, R));
  470. }
  471. }
  472. for (v = h.slice(0), q = 0, R = 30000, _ = 0; _ < 8 && (C(_), (F = M()) < R && ((R = F), (q = _)), 7 != q); _++) {
  473. h = v.slice(0);
  474. }
  475. for (q != _ && C(q), R = i[q + ((w - 1) << 3)], _ = 0; _ < 8; _++, R >>= 1) {
  476. if (1 & R) {
  477. h[o - 1 - _ + 8 * o] = 1;
  478. _ < 6 ? (h[8 + o * _] = 1) : (h[8 + o * (_ + 1)] = 1);
  479. }
  480. }
  481. for (_ = 0; _ < 7; _++, R >>= 1) {
  482. if (1 & R) {
  483. h[8 + o * (o - 7 + _)] = 1;
  484. _ ? (h[6 - _ + 8 * o] = 1) : (h[7 + 8 * o] = 1);
  485. }
  486. }
  487. return h;
  488. })(k);
  489. },
  490. draw: function (r, f, e, a, t) {
  491. w = t || w;
  492. if ((f = f || R)) {
  493. var n = Math.min(e, a);
  494. var c = this.getFrame(r);
  495. var i = uni.createContext();
  496. var s = Math.round(n / (o + 8));
  497. var l = s * (o + 8);
  498. var u = Math.floor((n - l) / 2);
  499. n = l;
  500. i.clearRect(0, 0, e, e);
  501. i.setFillStyle('#000000');
  502. for (var v = 0; v < o; v++) {
  503. for (var d = 0; d < o; d++) {
  504. if (c[d * o + v]) {
  505. i.rect(s * (4 + v) + u, s * (4 + d) + u, s, s);
  506. }
  507. }
  508. }
  509. i.fill();
  510. uni.drawCanvas({
  511. canvasId: f,
  512. actions: i.getActions()
  513. });
  514. } else {
  515. console.warn('No canvas provided to draw QR code in!');
  516. }
  517. }
  518. };
  519. module.exports = {
  520. qrApi: _
  521. };
  522. })();