fax/faxclientandserver/faxio/FAXUHUFF.H
branchRCL_3
changeset 20 07a122eea281
parent 0 3553901f7fa8
equal deleted inserted replaced
19:630d2f34d719 20:07a122eea281
       
     1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Header FAXUHUFF.H	 
       
    15 // 
       
    16 //
       
    17 
       
    18 /**
       
    19  @file
       
    20  @internalComponent
       
    21 */
       
    22 
       
    23 #if !defined(__FAXUHUFF_H__)
       
    24 #define __FAXUHUFF_H__
       
    25 
       
    26 /**
       
    27 @internalComponent
       
    28 */
       
    29 typedef TUint8 TNode[2];
       
    30 typedef TUint TCode;
       
    31 
       
    32 // 1728    = 11011000000
       
    33 // 1728>>6 = 11011       = 27
       
    34 /**
       
    35 @internalComponent
       
    36 */
       
    37 const TInt KEndCode=0x80;			// 0x080 = 128
       
    38 const TInt KMaxRun=(1728>>6)+64;	// 0x05b = 91 = 27+64
       
    39 
       
    40 /**
       
    41 @internalComponent
       
    42 */
       
    43 enum
       
    44 	{
       
    45 	KOurEol=KEndCode+KMaxRun+1,	// 0x0db = 219 = 128+90+1
       
    46 	KBadRun,
       
    47 	KStd1D,
       
    48 	KTag1D=KStd1D,
       
    49 	KTag2D,
       
    50 	KHorzMode,
       
    51 	KPassMode,
       
    52 	KVtMode3n,
       
    53 	KVtMode2n,
       
    54 	KVtMode1n,
       
    55 	KVtMode0, 
       
    56 	KVtMode1p,
       
    57 	KVtMode2p,
       
    58 	KVtMode3p
       
    59 	};
       
    60 
       
    61 /**
       
    62 @internalComponent
       
    63 */
       
    64 #define NODE(left,right) {(left),(right)}
       
    65 #define LEAF(val) (KEndCode|(val<64?val:0x40|(val>>6)))
       
    66 #define CODE(tree,node,bit) (tree[node][bit?1:0])
       
    67 #define ISBRANCH(code) (!(code&KEndCode))
       
    68 #define ISERROR(code) (code>(KEndCode|KMaxRun))
       
    69 #define CODEVALUE(code) (code&0x40 ? (code&0x3f)<<6 : code&0x3f)
       
    70 
       
    71 /**
       
    72 @internalComponent
       
    73 */
       
    74 const TNode KWhiteTree [] =
       
    75 	{
       
    76 	NODE(1, 80),    // 0 
       
    77 	NODE(40, 2),    // 1 
       
    78 	NODE(21, 3),    // 2 
       
    79 	NODE(4, LEAF(2)),    // 3 
       
    80 	NODE(16, 5),    // 4 
       
    81 	NODE(10, 6),    // 5 
       
    82 	NODE(7, LEAF(256)),  // 6 
       
    83 	NODE(9, 8),     // 7 
       
    84 	NODE(LEAF(1344), LEAF(1408)),   // 8 
       
    85 	NODE(LEAF(1216), LEAF(1280)),   // 9 
       
    86 	NODE(11, 13),   // 10 
       
    87 	NODE(LEAF(576), 12), // 11 
       
    88 	NODE(LEAF(832), LEAF(896)),     // 12 
       
    89 	NODE(14, 15),   // 13 
       
    90 	NODE(LEAF(960), LEAF(1024)),    // 14 
       
    91 	NODE(LEAF(1088), LEAF(1152)),   // 15 
       
    92 	NODE(LEAF(1664), 17),// 16 
       
    93 	NODE(18, 19),   // 17 
       
    94 	NODE(LEAF(448), LEAF(512)),     // 18 
       
    95 	NODE(20, LEAF(640)), // 19 
       
    96 	NODE(LEAF(704), LEAF(768)),     // 20 
       
    97 	NODE(32, 22),   // 21 
       
    98 	NODE(23, 28),   // 22 
       
    99 	NODE(24, 26),   // 23 
       
   100 	NODE(LEAF(24), 25),  // 24 
       
   101 	NODE(LEAF(49), LEAF(50)), // 25 
       
   102 	NODE(27, LEAF(25)),  // 26 
       
   103 	NODE(LEAF(51), LEAF(52)), // 27 
       
   104 	NODE(29, LEAF(192)), // 28 
       
   105 	NODE(30, 31),   // 29 
       
   106 	NODE(LEAF(55), LEAF(56)), // 30 
       
   107 	NODE(LEAF(57), LEAF(58)), // 31 
       
   108 	NODE(LEAF(11), 33),  // 32 
       
   109 	NODE(34, 36),   // 33 
       
   110 	NODE(LEAF(27), 35),  // 34 
       
   111 	NODE(LEAF(59), LEAF(60)), // 35 
       
   112 	NODE(37, LEAF(18)),  // 36 
       
   113 	NODE(38, 39),   // 37 
       
   114 	NODE(LEAF(1472), LEAF(1536)),   // 38 
       
   115 	NODE(LEAF(1600), LEAF(1728)),   // 39 
       
   116 	NODE(59, 41),   // 40 
       
   117 	NODE(49, 42),   // 41 
       
   118 	NODE(43, LEAF(10)),  // 42 
       
   119 	NODE(47, 44),   // 43 
       
   120 	NODE(46, 45),   // 44 
       
   121 	NODE(LEAF(320), LEAF(384)),     // 45 
       
   122 	NODE(LEAF(63), LEAF(0)),   // 46 
       
   123 	NODE(LEAF(28), 48),  // 47 
       
   124 	NODE(LEAF(61), LEAF(62)), // 48 
       
   125 	NODE(56, 50),   // 49 
       
   126 	NODE(53, 51),   // 50 
       
   127 	NODE(52, LEAF(21)),  // 51 
       
   128 	NODE(LEAF(43), LEAF(44)), // 52 
       
   129 	NODE(55, 54),   // 53 
       
   130 	NODE(LEAF(41), LEAF(42)), // 54 
       
   131 	NODE(LEAF(39), LEAF(40)), // 55 
       
   132 	NODE(LEAF(12), 57),  // 56 
       
   133 	NODE(58, LEAF(26)),  // 57 
       
   134 	NODE(LEAF(53), LEAF(54)), // 58 
       
   135 	NODE(70, 60),   // 59 
       
   136 	NODE(64, 61),   // 60 
       
   137 	NODE(62, LEAF(1)),   // 61 
       
   138 	NODE(LEAF(19), 63),  // 62 
       
   139 	NODE(LEAF(31), LEAF(32)), // 63 
       
   140 	NODE(68, 65),   // 64 
       
   141 	NODE(67, 66),   // 65 
       
   142 	NODE(LEAF(37), LEAF(38)), // 66 
       
   143 	NODE(LEAF(35), LEAF(36)), // 67 
       
   144 	NODE(LEAF(20), 69),  // 68 
       
   145 	NODE(LEAF(33), LEAF(34)), // 69 
       
   146 	NODE(74, 71),   // 70 
       
   147 	NODE(72, LEAF(13)),  // 71 
       
   148 	NODE(LEAF(23), 73),  // 72 
       
   149 	NODE(LEAF(47), LEAF(48)), // 73 
       
   150 	NODE(77, 75),   // 74 
       
   151 	NODE(76, LEAF(22)),  // 75 
       
   152 	NODE(LEAF(45), LEAF(46)), // 76 
       
   153 	NODE(79, 78),   // 77 
       
   154 	NODE(LEAF(29), LEAF(30)), // 78 
       
   155 	NODE(KOurEol, KBadRun), // 79 
       
   156 	NODE(86, 81),   // 80 
       
   157 	NODE(83, 82),   // 81 
       
   158 	NODE(LEAF(6), LEAF(7)),   // 82 
       
   159 	NODE(LEAF(5), 84),   // 83 
       
   160 	NODE(85, LEAF(64)),  // 84 
       
   161 	NODE(LEAF(14), LEAF(15)), // 85 
       
   162 	NODE(90, 87),   // 86 
       
   163 	NODE(88, LEAF(4)),   // 87 
       
   164 	NODE(LEAF(9), 89),   // 88 
       
   165 	NODE(LEAF(16), LEAF(17)), // 89 
       
   166 	NODE(LEAF(3), 91),   // 90 
       
   167 	NODE(LEAF(128), LEAF(8))  // 91 
       
   168 	} ;
       
   169 
       
   170 /**
       
   171 @internalComponent
       
   172 */
       
   173 const TNode KBlackTree [] =
       
   174 	{
       
   175 	NODE(2, 1),     // 0 
       
   176 	NODE(LEAF(3), LEAF(2)),   // 1 
       
   177 	NODE(4, 3),     // 2 
       
   178 	NODE(LEAF(1), LEAF(4)),   // 3 
       
   179 	NODE(6, 5),     // 4 
       
   180 	NODE(LEAF(6), LEAF(5)),   // 5 
       
   181 	NODE(9, 7),     // 6 
       
   182 	NODE(8, LEAF(7)),    // 7 
       
   183 	NODE(LEAF(9), LEAF(8)),   // 8 
       
   184 	NODE(31, 10),   // 9 
       
   185 	NODE(30, 11),   // 10 
       
   186 	NODE(12, LEAF(12)),  // 11 
       
   187 	NODE(23, 13),   // 12 
       
   188 	NODE(17, 14),   // 13 
       
   189 	NODE(15, LEAF(0)),    // 14 
       
   190 	NODE(LEAF(21), 16),  // 15 
       
   191 	NODE(LEAF(42), LEAF(43)), // 16 
       
   192 	NODE(21, 18),   // 17 
       
   193 	NODE(20, 19),   // 18 
       
   194 	NODE(LEAF(38), LEAF(39)), // 19 
       
   195 	NODE(LEAF(36), LEAF(37)), // 20 
       
   196 	NODE(LEAF(20), 22),  // 21 
       
   197 	NODE(LEAF(34), LEAF(35)), // 22 
       
   198 	NODE(LEAF(15), 24),  // 23 
       
   199 	NODE(27, 25),   // 24 
       
   200 	NODE(26, LEAF(19)),  // 25 
       
   201 	NODE(LEAF(28), LEAF(29)), // 26 
       
   202 	NODE(29, 28),   // 27 
       
   203 	NODE(LEAF(26), LEAF(27)), // 28 
       
   204 	NODE(LEAF(128), LEAF(192)),     // 29 
       
   205 	NODE(LEAF(10), LEAF(11)), // 30 
       
   206 	NODE(57, 32),   // 31 
       
   207 	NODE(45, 33),   // 32 
       
   208 	NODE(34, LEAF(14)),  // 33 
       
   209 	NODE(41, 35),   // 34 
       
   210 	NODE(38, 36),   // 35 
       
   211 	NODE(37, LEAF(22)),  // 36 
       
   212 	NODE(LEAF(40), LEAF(41)), // 37 
       
   213 	NODE(40, 39),   // 38 
       
   214 	NODE(LEAF(32), LEAF(33)), // 39 
       
   215 	NODE(LEAF(30), LEAF(31)), // 40 
       
   216 	NODE(LEAF(17), 42),  // 41 
       
   217 	NODE(44, 43),   // 42 
       
   218 	NODE(LEAF(62), LEAF(63)), // 43 
       
   219 	NODE(LEAF(48), LEAF(49)), // 44 
       
   220 	NODE(LEAF(13), 46),  // 45 
       
   221 	NODE(51, 47),   // 46 
       
   222 	NODE(48, LEAF(16)),  // 47 
       
   223 	NODE(50, 49),   // 48 
       
   224 	NODE(LEAF(61), LEAF(256)),// 49 
       
   225 	NODE(LEAF(57), LEAF(58)), // 50 
       
   226 	NODE(55, 52),   // 51 
       
   227 	NODE(54, 53),   // 52 
       
   228 	NODE(LEAF(46), LEAF(47)), // 53 
       
   229 	NODE(LEAF(44), LEAF(45)), // 54 
       
   230 	NODE(LEAF(23), 56),  // 55 
       
   231 	NODE(LEAF(50), LEAF(51)), // 56 
       
   232 	NODE(KOurEol, 58),     // 57 
       
   233 	NODE(75, 59),   // 58 
       
   234 	NODE(67, 60),   // 59 
       
   235 	NODE(61, LEAF(64)),  // 60 
       
   236 	NODE(65, 62),   // 61 
       
   237 	NODE(64, 63),   // 62 
       
   238 	NODE(LEAF(1152), LEAF(1216)),   // 63 
       
   239 	NODE(LEAF(1024), LEAF(1088)),   // 64 
       
   240 	NODE(LEAF(54), 66),  // 65 
       
   241 	NODE(LEAF(896), LEAF(960)),     // 66 
       
   242 	NODE(72, 68),   // 67 
       
   243 	NODE(71, 69),   // 68 
       
   244 	NODE(70, LEAF(53)),  // 69 
       
   245 	NODE(LEAF(512), LEAF(576)),     // 70 
       
   246 	NODE(LEAF(384), LEAF(448)),     // 71 
       
   247 	NODE(LEAF(25), 73),  // 72 
       
   248 	NODE(74, LEAF(320)), // 73 
       
   249 	NODE(LEAF(1664), LEAF(1728)),   // 74 
       
   250 	NODE(85, 76),   // 75 
       
   251 	NODE(80, 77),   // 76 
       
   252 	NODE(78, LEAF(24)),  // 77 
       
   253 	NODE(LEAF(60), 79),  // 78 
       
   254 	NODE(LEAF(1536), LEAF(1600)),   // 79 
       
   255 	NODE(83, 81),   // 80 
       
   256 	NODE(82, LEAF(59)),  // 81 
       
   257 	NODE(LEAF(1408), LEAF(1472)),   // 82 
       
   258 	NODE(LEAF(56), 84),  // 83 
       
   259 	NODE(LEAF(1280), LEAF(1344)),   // 84 
       
   260 	NODE(LEAF(18), 86),  // 85 
       
   261 	NODE(89, 87),   // 86 
       
   262 	NODE(88, LEAF(55)),  // 87 
       
   263 	NODE(LEAF(768), LEAF(832)),     // 88 
       
   264 	NODE(LEAF(52), 90),  // 89 
       
   265 	NODE(LEAF(640), LEAF(704))// 90 
       
   266 	};
       
   267 
       
   268 /**
       
   269 @internalComponent
       
   270 */
       
   271 const TNode KTwoTree [] =
       
   272     {
       
   273     NODE(1, KVtMode0),         // 0
       
   274     NODE(2, 3),                // 1
       
   275     NODE(4, KHorzMode),        // 2
       
   276     NODE(KVtMode1n, KVtMode1p),// 3
       
   277     NODE(5, KPassMode),        // 4
       
   278     NODE(6, 7),                // 5
       
   279     NODE(8, 9),                // 6
       
   280     NODE(KVtMode2n, KVtMode2p),// 7
       
   281     NODE(KOurEol, KBadRun),    // 8
       
   282     NODE(KVtMode3n, KVtMode3p) // 9
       
   283     };
       
   284 
       
   285 /**
       
   286 @internalComponent
       
   287 */
       
   288 const TNode KSynchTree[]=
       
   289 	{
       
   290 	NODE(0,KStd1D)		// any number of 0's followed by a 1
       
   291 	};
       
   292 
       
   293 /**
       
   294 @internalComponent
       
   295 */
       
   296 const TNode KTagTree[]=
       
   297 	{
       
   298 	NODE(0,1),
       
   299 	NODE(KTag2D,KTag1D)
       
   300 	};
       
   301 
       
   302 #endif // __FAXUHUFF_H__