...

Source file src/golang.org/x/image/ccitt/table.go

Documentation: golang.org/x/image/ccitt

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

View as plain text