1// generated by "go run gen.go". DO NOT EDIT.
2
3package ccitt
4
5// Each decodeTable is represented by an array of [2]int16's: a binary tree.
6// Each array element (other than element 0, which means invalid) is a branch
7// node in that tree. The root node is always element 1 (the second element).
8//
9// To walk the tree, look at the next bit in the bit stream, using it to select
10// the first or second element of the [2]int16. If that int16 is 0, we have an
11// invalid code. If it is positive, go to that branch node. If it is negative,
12// then we have a leaf node, whose value is the bitwise complement (the ^
13// operator) of that int16.
14//
15// Comments above each decodeTable also show the same structure visually. The
16// "b123" lines show the 123'rd branch node. The "=XXXXX" lines show an invalid
17// code. The "=v1234" lines show a leaf node with value 1234. When reading the
18// bit stream, a 0 or 1 bit means to go up or down, as you move left to right.
19//
20// For example, in modeDecodeTable, branch node b005 is three steps up from the
21// root node, meaning that we have already seen "000". If the next bit is "0"
22// then we move to branch node b006. Otherwise, the next bit is "1", and we
23// move to the leaf node v0000 (also known as the modePass constant). Indeed,
24// the bits that encode modePass are "0001".
25//
26// Tables 1, 2 and 3 come from the "ITU-T Recommendation T.6: FACSIMILE CODING
27// SCHEMES AND CODING CONTROL FUNCTIONS FOR GROUP 4 FACSIMILE APPARATUS"
28// specification:
29//
30// https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-T.6-198811-I!!PDF-E&type=items
31
32// modeDecodeTable represents Table 1 and the End-of-Line code.
33//
34// +=XXXXX
35// b015 +-+
36// | +=v0010
37// b014 +-+
38// | +=XXXXX
39// b013 +-+
40// | +=XXXXX
41// b012 +-+
42// | +=XXXXX
43// b011 +-+
44// | +=XXXXX
45// b009 +-+
46// | +=v0009
47// b007 +-+
48// | | +=v0008
49// b010 | +-+
50// | +=v0005
51// b006 +-+
52// | | +=v0007
53// b008 | +-+
54// | +=v0004
55// b005 +-+
56// | +=v0000
57// b003 +-+
58// | +=v0001
59// b002 +-+
60// | | +=v0006
61// b004 | +-+
62// | +=v0003
63// b001 +-+
64// +=v0002
65var modeDecodeTable = [...][2]int16{
66 0: {0, 0},
67 1: {2, ^2},
68 2: {3, 4},
69 3: {5, ^1},
70 4: {^6, ^3},
71 5: {6, ^0},
72 6: {7, 8},
73 7: {9, 10},
74 8: {^7, ^4},
75 9: {11, ^9},
76 10: {^8, ^5},
77 11: {12, 0},
78 12: {13, 0},
79 13: {14, 0},
80 14: {15, 0},
81 15: {0, ^10},
82}
83
84// whiteDecodeTable represents Tables 2 and 3 for a white run.
85//
86// +=XXXXX
87// b059 +-+
88// | | +=v1792
89// b096 | | +-+
90// | | | | +=v1984
91// b100 | | | +-+
92// | | | +=v2048
93// b094 | | +-+
94// | | | | +=v2112
95// b101 | | | | +-+
96// | | | | | +=v2176
97// b097 | | | +-+
98// | | | | +=v2240
99// b102 | | | +-+
100// | | | +=v2304
101// b085 | +-+
102// | | +=v1856
103// b098 | | +-+
104// | | | +=v1920
105// b095 | +-+
106// | | +=v2368
107// b103 | | +-+
108// | | | +=v2432
109// b099 | +-+
110// | | +=v2496
111// b104 | +-+
112// | +=v2560
113// b040 +-+
114// | | +=v0029
115// b060 | +-+
116// | +=v0030
117// b026 +-+
118// | | +=v0045
119// b061 | | +-+
120// | | | +=v0046
121// b041 | +-+
122// | +=v0022
123// b016 +-+
124// | | +=v0023
125// b042 | | +-+
126// | | | | +=v0047
127// b062 | | | +-+
128// | | | +=v0048
129// b027 | +-+
130// | +=v0013
131// b008 +-+
132// | | +=v0020
133// b043 | | +-+
134// | | | | +=v0033
135// b063 | | | +-+
136// | | | +=v0034
137// b028 | | +-+
138// | | | | +=v0035
139// b064 | | | | +-+
140// | | | | | +=v0036
141// b044 | | | +-+
142// | | | | +=v0037
143// b065 | | | +-+
144// | | | +=v0038
145// b017 | +-+
146// | | +=v0019
147// b045 | | +-+
148// | | | | +=v0031
149// b066 | | | +-+
150// | | | +=v0032
151// b029 | +-+
152// | +=v0001
153// b004 +-+
154// | | +=v0012
155// b030 | | +-+
156// | | | | +=v0053
157// b067 | | | | +-+
158// | | | | | +=v0054
159// b046 | | | +-+
160// | | | +=v0026
161// b018 | | +-+
162// | | | | +=v0039
163// b068 | | | | +-+
164// | | | | | +=v0040
165// b047 | | | | +-+
166// | | | | | | +=v0041
167// b069 | | | | | +-+
168// | | | | | +=v0042
169// b031 | | | +-+
170// | | | | +=v0043
171// b070 | | | | +-+
172// | | | | | +=v0044
173// b048 | | | +-+
174// | | | +=v0021
175// b009 | +-+
176// | | +=v0028
177// b049 | | +-+
178// | | | | +=v0061
179// b071 | | | +-+
180// | | | +=v0062
181// b032 | | +-+
182// | | | | +=v0063
183// b072 | | | | +-+
184// | | | | | +=v0000
185// b050 | | | +-+
186// | | | | +=v0320
187// b073 | | | +-+
188// | | | +=v0384
189// b019 | +-+
190// | +=v0010
191// b002 +-+
192// | | +=v0011
193// b020 | | +-+
194// | | | | +=v0027
195// b051 | | | | +-+
196// | | | | | | +=v0059
197// b074 | | | | | +-+
198// | | | | | +=v0060
199// b033 | | | +-+
200// | | | | +=v1472
201// b086 | | | | +-+
202// | | | | | +=v1536
203// b075 | | | | +-+
204// | | | | | | +=v1600
205// b087 | | | | | +-+
206// | | | | | +=v1728
207// b052 | | | +-+
208// | | | +=v0018
209// b010 | | +-+
210// | | | | +=v0024
211// b053 | | | | +-+
212// | | | | | | +=v0049
213// b076 | | | | | +-+
214// | | | | | +=v0050
215// b034 | | | | +-+
216// | | | | | | +=v0051
217// b077 | | | | | | +-+
218// | | | | | | | +=v0052
219// b054 | | | | | +-+
220// | | | | | +=v0025
221// b021 | | | +-+
222// | | | | +=v0055
223// b078 | | | | +-+
224// | | | | | +=v0056
225// b055 | | | | +-+
226// | | | | | | +=v0057
227// b079 | | | | | +-+
228// | | | | | +=v0058
229// b035 | | | +-+
230// | | | +=v0192
231// b005 | +-+
232// | | +=v1664
233// b036 | | +-+
234// | | | | +=v0448
235// b080 | | | | +-+
236// | | | | | +=v0512
237// b056 | | | +-+
238// | | | | +=v0704
239// b088 | | | | +-+
240// | | | | | +=v0768
241// b081 | | | +-+
242// | | | +=v0640
243// b022 | | +-+
244// | | | | +=v0576
245// b082 | | | | +-+
246// | | | | | | +=v0832
247// b089 | | | | | +-+
248// | | | | | +=v0896
249// b057 | | | | +-+
250// | | | | | | +=v0960
251// b090 | | | | | | +-+
252// | | | | | | | +=v1024
253// b083 | | | | | +-+
254// | | | | | | +=v1088
255// b091 | | | | | +-+
256// | | | | | +=v1152
257// b037 | | | +-+
258// | | | | +=v1216
259// b092 | | | | +-+
260// | | | | | +=v1280
261// b084 | | | | +-+
262// | | | | | | +=v1344
263// b093 | | | | | +-+
264// | | | | | +=v1408
265// b058 | | | +-+
266// | | | +=v0256
267// b011 | +-+
268// | +=v0002
269// b001 +-+
270// | +=v0003
271// b012 | +-+
272// | | | +=v0128
273// b023 | | +-+
274// | | +=v0008
275// b006 | +-+
276// | | | +=v0009
277// b024 | | | +-+
278// | | | | | +=v0016
279// b038 | | | | +-+
280// | | | | +=v0017
281// b013 | | +-+
282// | | +=v0004
283// b003 +-+
284// | +=v0005
285// b014 | +-+
286// | | | +=v0014
287// b039 | | | +-+
288// | | | | +=v0015
289// b025 | | +-+
290// | | +=v0064
291// b007 +-+
292// | +=v0006
293// b015 +-+
294// +=v0007
295var whiteDecodeTable = [...][2]int16{
296 0: {0, 0},
297 1: {2, 3},
298 2: {4, 5},
299 3: {6, 7},
300 4: {8, 9},
301 5: {10, 11},
302 6: {12, 13},
303 7: {14, 15},
304 8: {16, 17},
305 9: {18, 19},
306 10: {20, 21},
307 11: {22, ^2},
308 12: {^3, 23},
309 13: {24, ^4},
310 14: {^5, 25},
311 15: {^6, ^7},
312 16: {26, 27},
313 17: {28, 29},
314 18: {30, 31},
315 19: {32, ^10},
316 20: {^11, 33},
317 21: {34, 35},
318 22: {36, 37},
319 23: {^128, ^8},
320 24: {^9, 38},
321 25: {39, ^64},
322 26: {40, 41},
323 27: {42, ^13},
324 28: {43, 44},
325 29: {45, ^1},
326 30: {^12, 46},
327 31: {47, 48},
328 32: {49, 50},
329 33: {51, 52},
330 34: {53, 54},
331 35: {55, ^192},
332 36: {^1664, 56},
333 37: {57, 58},
334 38: {^16, ^17},
335 39: {^14, ^15},
336 40: {59, 60},
337 41: {61, ^22},
338 42: {^23, 62},
339 43: {^20, 63},
340 44: {64, 65},
341 45: {^19, 66},
342 46: {67, ^26},
343 47: {68, 69},
344 48: {70, ^21},
345 49: {^28, 71},
346 50: {72, 73},
347 51: {^27, 74},
348 52: {75, ^18},
349 53: {^24, 76},
350 54: {77, ^25},
351 55: {78, 79},
352 56: {80, 81},
353 57: {82, 83},
354 58: {84, ^256},
355 59: {0, 85},
356 60: {^29, ^30},
357 61: {^45, ^46},
358 62: {^47, ^48},
359 63: {^33, ^34},
360 64: {^35, ^36},
361 65: {^37, ^38},
362 66: {^31, ^32},
363 67: {^53, ^54},
364 68: {^39, ^40},
365 69: {^41, ^42},
366 70: {^43, ^44},
367 71: {^61, ^62},
368 72: {^63, ^0},
369 73: {^320, ^384},
370 74: {^59, ^60},
371 75: {86, 87},
372 76: {^49, ^50},
373 77: {^51, ^52},
374 78: {^55, ^56},
375 79: {^57, ^58},
376 80: {^448, ^512},
377 81: {88, ^640},
378 82: {^576, 89},
379 83: {90, 91},
380 84: {92, 93},
381 85: {94, 95},
382 86: {^1472, ^1536},
383 87: {^1600, ^1728},
384 88: {^704, ^768},
385 89: {^832, ^896},
386 90: {^960, ^1024},
387 91: {^1088, ^1152},
388 92: {^1216, ^1280},
389 93: {^1344, ^1408},
390 94: {96, 97},
391 95: {98, 99},
392 96: {^1792, 100},
393 97: {101, 102},
394 98: {^1856, ^1920},
395 99: {103, 104},
396 100: {^1984, ^2048},
397 101: {^2112, ^2176},
398 102: {^2240, ^2304},
399 103: {^2368, ^2432},
400 104: {^2496, ^2560},
401}
402
403// blackDecodeTable represents Tables 2 and 3 for a black run.
404//
405// +=XXXXX
406// b017 +-+
407// | | +=v1792
408// b042 | | +-+
409// | | | | +=v1984
410// b063 | | | +-+
411// | | | +=v2048
412// b029 | | +-+
413// | | | | +=v2112
414// b064 | | | | +-+
415// | | | | | +=v2176
416// b043 | | | +-+
417// | | | | +=v2240
418// b065 | | | +-+
419// | | | +=v2304
420// b022 | +-+
421// | | +=v1856
422// b044 | | +-+
423// | | | +=v1920
424// b030 | +-+
425// | | +=v2368
426// b066 | | +-+
427// | | | +=v2432
428// b045 | +-+
429// | | +=v2496
430// b067 | +-+
431// | +=v2560
432// b013 +-+
433// | | +=v0018
434// b031 | | +-+
435// | | | | +=v0052
436// b068 | | | | +-+
437// | | | | | | +=v0640
438// b095 | | | | | +-+
439// | | | | | +=v0704
440// b046 | | | +-+
441// | | | | +=v0768
442// b096 | | | | +-+
443// | | | | | +=v0832
444// b069 | | | +-+
445// | | | +=v0055
446// b023 | | +-+
447// | | | | +=v0056
448// b070 | | | | +-+
449// | | | | | | +=v1280
450// b097 | | | | | +-+
451// | | | | | +=v1344
452// b047 | | | | +-+
453// | | | | | | +=v1408
454// b098 | | | | | | +-+
455// | | | | | | | +=v1472
456// b071 | | | | | +-+
457// | | | | | +=v0059
458// b032 | | | +-+
459// | | | | +=v0060
460// b072 | | | | +-+
461// | | | | | | +=v1536
462// b099 | | | | | +-+
463// | | | | | +=v1600
464// b048 | | | +-+
465// | | | +=v0024
466// b018 | +-+
467// | | +=v0025
468// b049 | | +-+
469// | | | | +=v1664
470// b100 | | | | +-+
471// | | | | | +=v1728
472// b073 | | | +-+
473// | | | +=v0320
474// b033 | | +-+
475// | | | | +=v0384
476// b074 | | | | +-+
477// | | | | | +=v0448
478// b050 | | | +-+
479// | | | | +=v0512
480// b101 | | | | +-+
481// | | | | | +=v0576
482// b075 | | | +-+
483// | | | +=v0053
484// b024 | +-+
485// | | +=v0054
486// b076 | | +-+
487// | | | | +=v0896
488// b102 | | | +-+
489// | | | +=v0960
490// b051 | | +-+
491// | | | | +=v1024
492// b103 | | | | +-+
493// | | | | | +=v1088
494// b077 | | | +-+
495// | | | | +=v1152
496// b104 | | | +-+
497// | | | +=v1216
498// b034 | +-+
499// | +=v0064
500// b010 +-+
501// | | +=v0013
502// b019 | | +-+
503// | | | | +=v0023
504// b052 | | | | +-+
505// | | | | | | +=v0050
506// b078 | | | | | +-+
507// | | | | | +=v0051
508// b035 | | | | +-+
509// | | | | | | +=v0044
510// b079 | | | | | | +-+
511// | | | | | | | +=v0045
512// b053 | | | | | +-+
513// | | | | | | +=v0046
514// b080 | | | | | +-+
515// | | | | | +=v0047
516// b025 | | | +-+
517// | | | | +=v0057
518// b081 | | | | +-+
519// | | | | | +=v0058
520// b054 | | | | +-+
521// | | | | | | +=v0061
522// b082 | | | | | +-+
523// | | | | | +=v0256
524// b036 | | | +-+
525// | | | +=v0016
526// b014 | +-+
527// | | +=v0017
528// b037 | | +-+
529// | | | | +=v0048
530// b083 | | | | +-+
531// | | | | | +=v0049
532// b055 | | | +-+
533// | | | | +=v0062
534// b084 | | | +-+
535// | | | +=v0063
536// b026 | | +-+
537// | | | | +=v0030
538// b085 | | | | +-+
539// | | | | | +=v0031
540// b056 | | | | +-+
541// | | | | | | +=v0032
542// b086 | | | | | +-+
543// | | | | | +=v0033
544// b038 | | | +-+
545// | | | | +=v0040
546// b087 | | | | +-+
547// | | | | | +=v0041
548// b057 | | | +-+
549// | | | +=v0022
550// b020 | +-+
551// | +=v0014
552// b008 +-+
553// | | +=v0010
554// b015 | | +-+
555// | | | +=v0011
556// b011 | +-+
557// | | +=v0015
558// b027 | | +-+
559// | | | | +=v0128
560// b088 | | | | +-+
561// | | | | | +=v0192
562// b058 | | | | +-+
563// | | | | | | +=v0026
564// b089 | | | | | +-+
565// | | | | | +=v0027
566// b039 | | | +-+
567// | | | | +=v0028
568// b090 | | | | +-+
569// | | | | | +=v0029
570// b059 | | | +-+
571// | | | +=v0019
572// b021 | | +-+
573// | | | | +=v0020
574// b060 | | | | +-+
575// | | | | | | +=v0034
576// b091 | | | | | +-+
577// | | | | | +=v0035
578// b040 | | | | +-+
579// | | | | | | +=v0036
580// b092 | | | | | | +-+
581// | | | | | | | +=v0037
582// b061 | | | | | +-+
583// | | | | | | +=v0038
584// b093 | | | | | +-+
585// | | | | | +=v0039
586// b028 | | | +-+
587// | | | | +=v0021
588// b062 | | | | +-+
589// | | | | | | +=v0042
590// b094 | | | | | +-+
591// | | | | | +=v0043
592// b041 | | | +-+
593// | | | +=v0000
594// b016 | +-+
595// | +=v0012
596// b006 +-+
597// | | +=v0009
598// b012 | | +-+
599// | | | +=v0008
600// b009 | +-+
601// | +=v0007
602// b004 +-+
603// | | +=v0006
604// b007 | +-+
605// | +=v0005
606// b002 +-+
607// | | +=v0001
608// b005 | +-+
609// | +=v0004
610// b001 +-+
611// | +=v0003
612// b003 +-+
613// +=v0002
614var blackDecodeTable = [...][2]int16{
615 0: {0, 0},
616 1: {2, 3},
617 2: {4, 5},
618 3: {^3, ^2},
619 4: {6, 7},
620 5: {^1, ^4},
621 6: {8, 9},
622 7: {^6, ^5},
623 8: {10, 11},
624 9: {12, ^7},
625 10: {13, 14},
626 11: {15, 16},
627 12: {^9, ^8},
628 13: {17, 18},
629 14: {19, 20},
630 15: {^10, ^11},
631 16: {21, ^12},
632 17: {0, 22},
633 18: {23, 24},
634 19: {^13, 25},
635 20: {26, ^14},
636 21: {27, 28},
637 22: {29, 30},
638 23: {31, 32},
639 24: {33, 34},
640 25: {35, 36},
641 26: {37, 38},
642 27: {^15, 39},
643 28: {40, 41},
644 29: {42, 43},
645 30: {44, 45},
646 31: {^18, 46},
647 32: {47, 48},
648 33: {49, 50},
649 34: {51, ^64},
650 35: {52, 53},
651 36: {54, ^16},
652 37: {^17, 55},
653 38: {56, 57},
654 39: {58, 59},
655 40: {60, 61},
656 41: {62, ^0},
657 42: {^1792, 63},
658 43: {64, 65},
659 44: {^1856, ^1920},
660 45: {66, 67},
661 46: {68, 69},
662 47: {70, 71},
663 48: {72, ^24},
664 49: {^25, 73},
665 50: {74, 75},
666 51: {76, 77},
667 52: {^23, 78},
668 53: {79, 80},
669 54: {81, 82},
670 55: {83, 84},
671 56: {85, 86},
672 57: {87, ^22},
673 58: {88, 89},
674 59: {90, ^19},
675 60: {^20, 91},
676 61: {92, 93},
677 62: {^21, 94},
678 63: {^1984, ^2048},
679 64: {^2112, ^2176},
680 65: {^2240, ^2304},
681 66: {^2368, ^2432},
682 67: {^2496, ^2560},
683 68: {^52, 95},
684 69: {96, ^55},
685 70: {^56, 97},
686 71: {98, ^59},
687 72: {^60, 99},
688 73: {100, ^320},
689 74: {^384, ^448},
690 75: {101, ^53},
691 76: {^54, 102},
692 77: {103, 104},
693 78: {^50, ^51},
694 79: {^44, ^45},
695 80: {^46, ^47},
696 81: {^57, ^58},
697 82: {^61, ^256},
698 83: {^48, ^49},
699 84: {^62, ^63},
700 85: {^30, ^31},
701 86: {^32, ^33},
702 87: {^40, ^41},
703 88: {^128, ^192},
704 89: {^26, ^27},
705 90: {^28, ^29},
706 91: {^34, ^35},
707 92: {^36, ^37},
708 93: {^38, ^39},
709 94: {^42, ^43},
710 95: {^640, ^704},
711 96: {^768, ^832},
712 97: {^1280, ^1344},
713 98: {^1408, ^1472},
714 99: {^1536, ^1600},
715 100: {^1664, ^1728},
716 101: {^512, ^576},
717 102: {^896, ^960},
718 103: {^1024, ^1088},
719 104: {^1152, ^1216},
720}
721
722const maxCodeLength = 13
723
724// Each encodeTable is represented by an array of bitStrings.
725
726// bitString is a pair of uint32 values representing a bit code.
727// The nBits low bits of bits make up the actual bit code.
728// Eg. bitString{0x0004, 8} represents the bitcode "00000100".
729type bitString struct {
730 bits uint32
731 nBits uint32
732}
733
734// modeEncodeTable represents Table 1 and the End-of-Line code.
735var modeEncodeTable = [...]bitString{
736 0: {0x0001, 4}, // "0001"
737 1: {0x0001, 3}, // "001"
738 2: {0x0001, 1}, // "1"
739 3: {0x0003, 3}, // "011"
740 4: {0x0003, 6}, // "000011"
741 5: {0x0003, 7}, // "0000011"
742 6: {0x0002, 3}, // "010"
743 7: {0x0002, 6}, // "000010"
744 8: {0x0002, 7}, // "0000010"
745 9: {0x0001, 7}, // "0000001"
746 10: {0x0001, 12}, // "000000000001"
747}
748
749// whiteEncodeTable2 represents Table 2 for a white run.
750var whiteEncodeTable2 = [...]bitString{
751 0: {0x0035, 8}, // "00110101"
752 1: {0x0007, 6}, // "000111"
753 2: {0x0007, 4}, // "0111"
754 3: {0x0008, 4}, // "1000"
755 4: {0x000b, 4}, // "1011"
756 5: {0x000c, 4}, // "1100"
757 6: {0x000e, 4}, // "1110"
758 7: {0x000f, 4}, // "1111"
759 8: {0x0013, 5}, // "10011"
760 9: {0x0014, 5}, // "10100"
761 10: {0x0007, 5}, // "00111"
762 11: {0x0008, 5}, // "01000"
763 12: {0x0008, 6}, // "001000"
764 13: {0x0003, 6}, // "000011"
765 14: {0x0034, 6}, // "110100"
766 15: {0x0035, 6}, // "110101"
767 16: {0x002a, 6}, // "101010"
768 17: {0x002b, 6}, // "101011"
769 18: {0x0027, 7}, // "0100111"
770 19: {0x000c, 7}, // "0001100"
771 20: {0x0008, 7}, // "0001000"
772 21: {0x0017, 7}, // "0010111"
773 22: {0x0003, 7}, // "0000011"
774 23: {0x0004, 7}, // "0000100"
775 24: {0x0028, 7}, // "0101000"
776 25: {0x002b, 7}, // "0101011"
777 26: {0x0013, 7}, // "0010011"
778 27: {0x0024, 7}, // "0100100"
779 28: {0x0018, 7}, // "0011000"
780 29: {0x0002, 8}, // "00000010"
781 30: {0x0003, 8}, // "00000011"
782 31: {0x001a, 8}, // "00011010"
783 32: {0x001b, 8}, // "00011011"
784 33: {0x0012, 8}, // "00010010"
785 34: {0x0013, 8}, // "00010011"
786 35: {0x0014, 8}, // "00010100"
787 36: {0x0015, 8}, // "00010101"
788 37: {0x0016, 8}, // "00010110"
789 38: {0x0017, 8}, // "00010111"
790 39: {0x0028, 8}, // "00101000"
791 40: {0x0029, 8}, // "00101001"
792 41: {0x002a, 8}, // "00101010"
793 42: {0x002b, 8}, // "00101011"
794 43: {0x002c, 8}, // "00101100"
795 44: {0x002d, 8}, // "00101101"
796 45: {0x0004, 8}, // "00000100"
797 46: {0x0005, 8}, // "00000101"
798 47: {0x000a, 8}, // "00001010"
799 48: {0x000b, 8}, // "00001011"
800 49: {0x0052, 8}, // "01010010"
801 50: {0x0053, 8}, // "01010011"
802 51: {0x0054, 8}, // "01010100"
803 52: {0x0055, 8}, // "01010101"
804 53: {0x0024, 8}, // "00100100"
805 54: {0x0025, 8}, // "00100101"
806 55: {0x0058, 8}, // "01011000"
807 56: {0x0059, 8}, // "01011001"
808 57: {0x005a, 8}, // "01011010"
809 58: {0x005b, 8}, // "01011011"
810 59: {0x004a, 8}, // "01001010"
811 60: {0x004b, 8}, // "01001011"
812 61: {0x0032, 8}, // "00110010"
813 62: {0x0033, 8}, // "00110011"
814 63: {0x0034, 8}, // "00110100"
815}
816
817// whiteEncodeTable3 represents Table 3 for a white run.
818var whiteEncodeTable3 = [...]bitString{
819 0: {0x001b, 5}, // "11011"
820 1: {0x0012, 5}, // "10010"
821 2: {0x0017, 6}, // "010111"
822 3: {0x0037, 7}, // "0110111"
823 4: {0x0036, 8}, // "00110110"
824 5: {0x0037, 8}, // "00110111"
825 6: {0x0064, 8}, // "01100100"
826 7: {0x0065, 8}, // "01100101"
827 8: {0x0068, 8}, // "01101000"
828 9: {0x0067, 8}, // "01100111"
829 10: {0x00cc, 9}, // "011001100"
830 11: {0x00cd, 9}, // "011001101"
831 12: {0x00d2, 9}, // "011010010"
832 13: {0x00d3, 9}, // "011010011"
833 14: {0x00d4, 9}, // "011010100"
834 15: {0x00d5, 9}, // "011010101"
835 16: {0x00d6, 9}, // "011010110"
836 17: {0x00d7, 9}, // "011010111"
837 18: {0x00d8, 9}, // "011011000"
838 19: {0x00d9, 9}, // "011011001"
839 20: {0x00da, 9}, // "011011010"
840 21: {0x00db, 9}, // "011011011"
841 22: {0x0098, 9}, // "010011000"
842 23: {0x0099, 9}, // "010011001"
843 24: {0x009a, 9}, // "010011010"
844 25: {0x0018, 6}, // "011000"
845 26: {0x009b, 9}, // "010011011"
846 27: {0x0008, 11}, // "00000001000"
847 28: {0x000c, 11}, // "00000001100"
848 29: {0x000d, 11}, // "00000001101"
849 30: {0x0012, 12}, // "000000010010"
850 31: {0x0013, 12}, // "000000010011"
851 32: {0x0014, 12}, // "000000010100"
852 33: {0x0015, 12}, // "000000010101"
853 34: {0x0016, 12}, // "000000010110"
854 35: {0x0017, 12}, // "000000010111"
855 36: {0x001c, 12}, // "000000011100"
856 37: {0x001d, 12}, // "000000011101"
857 38: {0x001e, 12}, // "000000011110"
858 39: {0x001f, 12}, // "000000011111"
859}
860
861// blackEncodeTable2 represents Table 2 for a black run.
862var blackEncodeTable2 = [...]bitString{
863 0: {0x0037, 10}, // "0000110111"
864 1: {0x0002, 3}, // "010"
865 2: {0x0003, 2}, // "11"
866 3: {0x0002, 2}, // "10"
867 4: {0x0003, 3}, // "011"
868 5: {0x0003, 4}, // "0011"
869 6: {0x0002, 4}, // "0010"
870 7: {0x0003, 5}, // "00011"
871 8: {0x0005, 6}, // "000101"
872 9: {0x0004, 6}, // "000100"
873 10: {0x0004, 7}, // "0000100"
874 11: {0x0005, 7}, // "0000101"
875 12: {0x0007, 7}, // "0000111"
876 13: {0x0004, 8}, // "00000100"
877 14: {0x0007, 8}, // "00000111"
878 15: {0x0018, 9}, // "000011000"
879 16: {0x0017, 10}, // "0000010111"
880 17: {0x0018, 10}, // "0000011000"
881 18: {0x0008, 10}, // "0000001000"
882 19: {0x0067, 11}, // "00001100111"
883 20: {0x0068, 11}, // "00001101000"
884 21: {0x006c, 11}, // "00001101100"
885 22: {0x0037, 11}, // "00000110111"
886 23: {0x0028, 11}, // "00000101000"
887 24: {0x0017, 11}, // "00000010111"
888 25: {0x0018, 11}, // "00000011000"
889 26: {0x00ca, 12}, // "000011001010"
890 27: {0x00cb, 12}, // "000011001011"
891 28: {0x00cc, 12}, // "000011001100"
892 29: {0x00cd, 12}, // "000011001101"
893 30: {0x0068, 12}, // "000001101000"
894 31: {0x0069, 12}, // "000001101001"
895 32: {0x006a, 12}, // "000001101010"
896 33: {0x006b, 12}, // "000001101011"
897 34: {0x00d2, 12}, // "000011010010"
898 35: {0x00d3, 12}, // "000011010011"
899 36: {0x00d4, 12}, // "000011010100"
900 37: {0x00d5, 12}, // "000011010101"
901 38: {0x00d6, 12}, // "000011010110"
902 39: {0x00d7, 12}, // "000011010111"
903 40: {0x006c, 12}, // "000001101100"
904 41: {0x006d, 12}, // "000001101101"
905 42: {0x00da, 12}, // "000011011010"
906 43: {0x00db, 12}, // "000011011011"
907 44: {0x0054, 12}, // "000001010100"
908 45: {0x0055, 12}, // "000001010101"
909 46: {0x0056, 12}, // "000001010110"
910 47: {0x0057, 12}, // "000001010111"
911 48: {0x0064, 12}, // "000001100100"
912 49: {0x0065, 12}, // "000001100101"
913 50: {0x0052, 12}, // "000001010010"
914 51: {0x0053, 12}, // "000001010011"
915 52: {0x0024, 12}, // "000000100100"
916 53: {0x0037, 12}, // "000000110111"
917 54: {0x0038, 12}, // "000000111000"
918 55: {0x0027, 12}, // "000000100111"
919 56: {0x0028, 12}, // "000000101000"
920 57: {0x0058, 12}, // "000001011000"
921 58: {0x0059, 12}, // "000001011001"
922 59: {0x002b, 12}, // "000000101011"
923 60: {0x002c, 12}, // "000000101100"
924 61: {0x005a, 12}, // "000001011010"
925 62: {0x0066, 12}, // "000001100110"
926 63: {0x0067, 12}, // "000001100111"
927}
928
929// blackEncodeTable3 represents Table 3 for a black run.
930var blackEncodeTable3 = [...]bitString{
931 0: {0x000f, 10}, // "0000001111"
932 1: {0x00c8, 12}, // "000011001000"
933 2: {0x00c9, 12}, // "000011001001"
934 3: {0x005b, 12}, // "000001011011"
935 4: {0x0033, 12}, // "000000110011"
936 5: {0x0034, 12}, // "000000110100"
937 6: {0x0035, 12}, // "000000110101"
938 7: {0x006c, 13}, // "0000001101100"
939 8: {0x006d, 13}, // "0000001101101"
940 9: {0x004a, 13}, // "0000001001010"
941 10: {0x004b, 13}, // "0000001001011"
942 11: {0x004c, 13}, // "0000001001100"
943 12: {0x004d, 13}, // "0000001001101"
944 13: {0x0072, 13}, // "0000001110010"
945 14: {0x0073, 13}, // "0000001110011"
946 15: {0x0074, 13}, // "0000001110100"
947 16: {0x0075, 13}, // "0000001110101"
948 17: {0x0076, 13}, // "0000001110110"
949 18: {0x0077, 13}, // "0000001110111"
950 19: {0x0052, 13}, // "0000001010010"
951 20: {0x0053, 13}, // "0000001010011"
952 21: {0x0054, 13}, // "0000001010100"
953 22: {0x0055, 13}, // "0000001010101"
954 23: {0x005a, 13}, // "0000001011010"
955 24: {0x005b, 13}, // "0000001011011"
956 25: {0x0064, 13}, // "0000001100100"
957 26: {0x0065, 13}, // "0000001100101"
958 27: {0x0008, 11}, // "00000001000"
959 28: {0x000c, 11}, // "00000001100"
960 29: {0x000d, 11}, // "00000001101"
961 30: {0x0012, 12}, // "000000010010"
962 31: {0x0013, 12}, // "000000010011"
963 32: {0x0014, 12}, // "000000010100"
964 33: {0x0015, 12}, // "000000010101"
965 34: {0x0016, 12}, // "000000010110"
966 35: {0x0017, 12}, // "000000010111"
967 36: {0x001c, 12}, // "000000011100"
968 37: {0x001d, 12}, // "000000011101"
969 38: {0x001e, 12}, // "000000011110"
970 39: {0x001f, 12}, // "000000011111"
971}
972
973// COPY PASTE table.go BEGIN
974
975const (
976 modePass = iota // Pass
977 modeH // Horizontal
978 modeV0 // Vertical-0
979 modeVR1 // Vertical-Right-1
980 modeVR2 // Vertical-Right-2
981 modeVR3 // Vertical-Right-3
982 modeVL1 // Vertical-Left-1
983 modeVL2 // Vertical-Left-2
984 modeVL3 // Vertical-Left-3
985 modeExt // Extension
986 modeEOL // End-of-Line
987)
988
989// COPY PASTE table.go END