fax/faxclientandserver/faxio/FAXUHUFF.H
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fax/faxclientandserver/faxio/FAXUHUFF.H	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,302 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Header FAXUHUFF.H	 
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#if !defined(__FAXUHUFF_H__)
+#define __FAXUHUFF_H__
+
+/**
+@internalComponent
+*/
+typedef TUint8 TNode[2];
+typedef TUint TCode;
+
+// 1728    = 11011000000
+// 1728>>6 = 11011       = 27
+/**
+@internalComponent
+*/
+const TInt KEndCode=0x80;			// 0x080 = 128
+const TInt KMaxRun=(1728>>6)+64;	// 0x05b = 91 = 27+64
+
+/**
+@internalComponent
+*/
+enum
+	{
+	KOurEol=KEndCode+KMaxRun+1,	// 0x0db = 219 = 128+90+1
+	KBadRun,
+	KStd1D,
+	KTag1D=KStd1D,
+	KTag2D,
+	KHorzMode,
+	KPassMode,
+	KVtMode3n,
+	KVtMode2n,
+	KVtMode1n,
+	KVtMode0, 
+	KVtMode1p,
+	KVtMode2p,
+	KVtMode3p
+	};
+
+/**
+@internalComponent
+*/
+#define NODE(left,right) {(left),(right)}
+#define LEAF(val) (KEndCode|(val<64?val:0x40|(val>>6)))
+#define CODE(tree,node,bit) (tree[node][bit?1:0])
+#define ISBRANCH(code) (!(code&KEndCode))
+#define ISERROR(code) (code>(KEndCode|KMaxRun))
+#define CODEVALUE(code) (code&0x40 ? (code&0x3f)<<6 : code&0x3f)
+
+/**
+@internalComponent
+*/
+const TNode KWhiteTree [] =
+	{
+	NODE(1, 80),    // 0 
+	NODE(40, 2),    // 1 
+	NODE(21, 3),    // 2 
+	NODE(4, LEAF(2)),    // 3 
+	NODE(16, 5),    // 4 
+	NODE(10, 6),    // 5 
+	NODE(7, LEAF(256)),  // 6 
+	NODE(9, 8),     // 7 
+	NODE(LEAF(1344), LEAF(1408)),   // 8 
+	NODE(LEAF(1216), LEAF(1280)),   // 9 
+	NODE(11, 13),   // 10 
+	NODE(LEAF(576), 12), // 11 
+	NODE(LEAF(832), LEAF(896)),     // 12 
+	NODE(14, 15),   // 13 
+	NODE(LEAF(960), LEAF(1024)),    // 14 
+	NODE(LEAF(1088), LEAF(1152)),   // 15 
+	NODE(LEAF(1664), 17),// 16 
+	NODE(18, 19),   // 17 
+	NODE(LEAF(448), LEAF(512)),     // 18 
+	NODE(20, LEAF(640)), // 19 
+	NODE(LEAF(704), LEAF(768)),     // 20 
+	NODE(32, 22),   // 21 
+	NODE(23, 28),   // 22 
+	NODE(24, 26),   // 23 
+	NODE(LEAF(24), 25),  // 24 
+	NODE(LEAF(49), LEAF(50)), // 25 
+	NODE(27, LEAF(25)),  // 26 
+	NODE(LEAF(51), LEAF(52)), // 27 
+	NODE(29, LEAF(192)), // 28 
+	NODE(30, 31),   // 29 
+	NODE(LEAF(55), LEAF(56)), // 30 
+	NODE(LEAF(57), LEAF(58)), // 31 
+	NODE(LEAF(11), 33),  // 32 
+	NODE(34, 36),   // 33 
+	NODE(LEAF(27), 35),  // 34 
+	NODE(LEAF(59), LEAF(60)), // 35 
+	NODE(37, LEAF(18)),  // 36 
+	NODE(38, 39),   // 37 
+	NODE(LEAF(1472), LEAF(1536)),   // 38 
+	NODE(LEAF(1600), LEAF(1728)),   // 39 
+	NODE(59, 41),   // 40 
+	NODE(49, 42),   // 41 
+	NODE(43, LEAF(10)),  // 42 
+	NODE(47, 44),   // 43 
+	NODE(46, 45),   // 44 
+	NODE(LEAF(320), LEAF(384)),     // 45 
+	NODE(LEAF(63), LEAF(0)),   // 46 
+	NODE(LEAF(28), 48),  // 47 
+	NODE(LEAF(61), LEAF(62)), // 48 
+	NODE(56, 50),   // 49 
+	NODE(53, 51),   // 50 
+	NODE(52, LEAF(21)),  // 51 
+	NODE(LEAF(43), LEAF(44)), // 52 
+	NODE(55, 54),   // 53 
+	NODE(LEAF(41), LEAF(42)), // 54 
+	NODE(LEAF(39), LEAF(40)), // 55 
+	NODE(LEAF(12), 57),  // 56 
+	NODE(58, LEAF(26)),  // 57 
+	NODE(LEAF(53), LEAF(54)), // 58 
+	NODE(70, 60),   // 59 
+	NODE(64, 61),   // 60 
+	NODE(62, LEAF(1)),   // 61 
+	NODE(LEAF(19), 63),  // 62 
+	NODE(LEAF(31), LEAF(32)), // 63 
+	NODE(68, 65),   // 64 
+	NODE(67, 66),   // 65 
+	NODE(LEAF(37), LEAF(38)), // 66 
+	NODE(LEAF(35), LEAF(36)), // 67 
+	NODE(LEAF(20), 69),  // 68 
+	NODE(LEAF(33), LEAF(34)), // 69 
+	NODE(74, 71),   // 70 
+	NODE(72, LEAF(13)),  // 71 
+	NODE(LEAF(23), 73),  // 72 
+	NODE(LEAF(47), LEAF(48)), // 73 
+	NODE(77, 75),   // 74 
+	NODE(76, LEAF(22)),  // 75 
+	NODE(LEAF(45), LEAF(46)), // 76 
+	NODE(79, 78),   // 77 
+	NODE(LEAF(29), LEAF(30)), // 78 
+	NODE(KOurEol, KBadRun), // 79 
+	NODE(86, 81),   // 80 
+	NODE(83, 82),   // 81 
+	NODE(LEAF(6), LEAF(7)),   // 82 
+	NODE(LEAF(5), 84),   // 83 
+	NODE(85, LEAF(64)),  // 84 
+	NODE(LEAF(14), LEAF(15)), // 85 
+	NODE(90, 87),   // 86 
+	NODE(88, LEAF(4)),   // 87 
+	NODE(LEAF(9), 89),   // 88 
+	NODE(LEAF(16), LEAF(17)), // 89 
+	NODE(LEAF(3), 91),   // 90 
+	NODE(LEAF(128), LEAF(8))  // 91 
+	} ;
+
+/**
+@internalComponent
+*/
+const TNode KBlackTree [] =
+	{
+	NODE(2, 1),     // 0 
+	NODE(LEAF(3), LEAF(2)),   // 1 
+	NODE(4, 3),     // 2 
+	NODE(LEAF(1), LEAF(4)),   // 3 
+	NODE(6, 5),     // 4 
+	NODE(LEAF(6), LEAF(5)),   // 5 
+	NODE(9, 7),     // 6 
+	NODE(8, LEAF(7)),    // 7 
+	NODE(LEAF(9), LEAF(8)),   // 8 
+	NODE(31, 10),   // 9 
+	NODE(30, 11),   // 10 
+	NODE(12, LEAF(12)),  // 11 
+	NODE(23, 13),   // 12 
+	NODE(17, 14),   // 13 
+	NODE(15, LEAF(0)),    // 14 
+	NODE(LEAF(21), 16),  // 15 
+	NODE(LEAF(42), LEAF(43)), // 16 
+	NODE(21, 18),   // 17 
+	NODE(20, 19),   // 18 
+	NODE(LEAF(38), LEAF(39)), // 19 
+	NODE(LEAF(36), LEAF(37)), // 20 
+	NODE(LEAF(20), 22),  // 21 
+	NODE(LEAF(34), LEAF(35)), // 22 
+	NODE(LEAF(15), 24),  // 23 
+	NODE(27, 25),   // 24 
+	NODE(26, LEAF(19)),  // 25 
+	NODE(LEAF(28), LEAF(29)), // 26 
+	NODE(29, 28),   // 27 
+	NODE(LEAF(26), LEAF(27)), // 28 
+	NODE(LEAF(128), LEAF(192)),     // 29 
+	NODE(LEAF(10), LEAF(11)), // 30 
+	NODE(57, 32),   // 31 
+	NODE(45, 33),   // 32 
+	NODE(34, LEAF(14)),  // 33 
+	NODE(41, 35),   // 34 
+	NODE(38, 36),   // 35 
+	NODE(37, LEAF(22)),  // 36 
+	NODE(LEAF(40), LEAF(41)), // 37 
+	NODE(40, 39),   // 38 
+	NODE(LEAF(32), LEAF(33)), // 39 
+	NODE(LEAF(30), LEAF(31)), // 40 
+	NODE(LEAF(17), 42),  // 41 
+	NODE(44, 43),   // 42 
+	NODE(LEAF(62), LEAF(63)), // 43 
+	NODE(LEAF(48), LEAF(49)), // 44 
+	NODE(LEAF(13), 46),  // 45 
+	NODE(51, 47),   // 46 
+	NODE(48, LEAF(16)),  // 47 
+	NODE(50, 49),   // 48 
+	NODE(LEAF(61), LEAF(256)),// 49 
+	NODE(LEAF(57), LEAF(58)), // 50 
+	NODE(55, 52),   // 51 
+	NODE(54, 53),   // 52 
+	NODE(LEAF(46), LEAF(47)), // 53 
+	NODE(LEAF(44), LEAF(45)), // 54 
+	NODE(LEAF(23), 56),  // 55 
+	NODE(LEAF(50), LEAF(51)), // 56 
+	NODE(KOurEol, 58),     // 57 
+	NODE(75, 59),   // 58 
+	NODE(67, 60),   // 59 
+	NODE(61, LEAF(64)),  // 60 
+	NODE(65, 62),   // 61 
+	NODE(64, 63),   // 62 
+	NODE(LEAF(1152), LEAF(1216)),   // 63 
+	NODE(LEAF(1024), LEAF(1088)),   // 64 
+	NODE(LEAF(54), 66),  // 65 
+	NODE(LEAF(896), LEAF(960)),     // 66 
+	NODE(72, 68),   // 67 
+	NODE(71, 69),   // 68 
+	NODE(70, LEAF(53)),  // 69 
+	NODE(LEAF(512), LEAF(576)),     // 70 
+	NODE(LEAF(384), LEAF(448)),     // 71 
+	NODE(LEAF(25), 73),  // 72 
+	NODE(74, LEAF(320)), // 73 
+	NODE(LEAF(1664), LEAF(1728)),   // 74 
+	NODE(85, 76),   // 75 
+	NODE(80, 77),   // 76 
+	NODE(78, LEAF(24)),  // 77 
+	NODE(LEAF(60), 79),  // 78 
+	NODE(LEAF(1536), LEAF(1600)),   // 79 
+	NODE(83, 81),   // 80 
+	NODE(82, LEAF(59)),  // 81 
+	NODE(LEAF(1408), LEAF(1472)),   // 82 
+	NODE(LEAF(56), 84),  // 83 
+	NODE(LEAF(1280), LEAF(1344)),   // 84 
+	NODE(LEAF(18), 86),  // 85 
+	NODE(89, 87),   // 86 
+	NODE(88, LEAF(55)),  // 87 
+	NODE(LEAF(768), LEAF(832)),     // 88 
+	NODE(LEAF(52), 90),  // 89 
+	NODE(LEAF(640), LEAF(704))// 90 
+	};
+
+/**
+@internalComponent
+*/
+const TNode KTwoTree [] =
+    {
+    NODE(1, KVtMode0),         // 0
+    NODE(2, 3),                // 1
+    NODE(4, KHorzMode),        // 2
+    NODE(KVtMode1n, KVtMode1p),// 3
+    NODE(5, KPassMode),        // 4
+    NODE(6, 7),                // 5
+    NODE(8, 9),                // 6
+    NODE(KVtMode2n, KVtMode2p),// 7
+    NODE(KOurEol, KBadRun),    // 8
+    NODE(KVtMode3n, KVtMode3p) // 9
+    };
+
+/**
+@internalComponent
+*/
+const TNode KSynchTree[]=
+	{
+	NODE(0,KStd1D)		// any number of 0's followed by a 1
+	};
+
+/**
+@internalComponent
+*/
+const TNode KTagTree[]=
+	{
+	NODE(0,1),
+	NODE(KTag2D,KTag1D)
+	};
+
+#endif // __FAXUHUFF_H__