Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
Huffman.cpp
Package: RWJpegExp.rar [view]
Upload User: hbtiangong
Upload Date: 2009-03-29
Package Size: 255k
Code Size: 8k
Category:
Windows Develop
Development Platform:
Visual C++
- /**************************************************************************
- This file contains T.4 decoding data
- Contents are :
- a) two binary trees for decoding MH fax run-length codes
- b) one binary tree for decoding MR codes.
- c) one lookup table of inverted characters
- MH trees = one tree for white run lengths, one tree for black run lengths.
- All decodes for all trees start from the top.
- For each node the first leaf is the offset from the root to the next
- node if the current bit is 0, and the second leaf is the offset to
- the next node if the bit is 1. A minus value is a terminator, with a
- run-length equal to the negation of the minus value.
- ******************************************************************************/
- #include "stdafx.h"
- #include "TifHeader.h"
- #include "huffman.h"
- const int gWTree [][2] =
- {
- {1, 80}, /* 0 */
- {40, 2}, /* 1 */
- {21, 3}, /* 2 */
- {4, -2}, /* 3 */
- {16, 5}, /* 4 */
- {10, 6}, /* 5 */
- {7, -256}, /* 6 */
- {9, 8}, /* 7 */
- {-1344, -1408}, /* 8 */
- {-1216, -1280}, /* 9 */
- {11, 13}, /* 10 */
- {-576, 12}, /* 11 */
- {-832, -896}, /* 12 */
- {14, 15}, /* 13 */
- {-960, -1024}, /* 14 */
- {-1088, -1152}, /* 15 */
- {-1664, 17}, /* 16 */
- {18, 19}, /* 17 */
- {-448, -512}, /* 18 */
- {20, -640}, /* 19 */
- {-704, -768}, /* 20 */
- {32, 22}, /* 21 */
- {23, 28}, /* 22 */
- {24, 26}, /* 23 */
- {-24, 25}, /* 24 */
- {-49, -50}, /* 25 */
- {27, -25}, /* 26 */
- {-51, -52}, /* 27 */
- {29, -192}, /* 28 */
- {30, 31}, /* 29 */
- {-55, -56}, /* 30 */
- {-57, -58}, /* 31 */
- {-11, 33}, /* 32 */
- {34, 36}, /* 33 */
- {-27, 35}, /* 34 */
- {-59, -60}, /* 35 */
- {37, -18}, /* 36 */
- {38, 39}, /* 37 */
- {-1472, -1536}, /* 38 */
- {-1600, -1728}, /* 39 */
- {59, 41}, /* 40 */
- {49, 42}, /* 41 */
- {43, -10}, /* 42 */
- {47, 44}, /* 43 */
- {46, 45}, /* 44 */
- {-320, -384}, /* 45 */
- {-63, 0}, /* 46 */
- {-28, 48}, /* 47 */
- {-61, -62}, /* 48 */
- {56, 50}, /* 49 */
- {53, 51}, /* 50 */
- {52, -21}, /* 51 */
- {-43, -44}, /* 52 */
- {55, 54}, /* 53 */
- {-41, -42}, /* 54 */
- {-39, -40}, /* 55 */
- {-12, 57}, /* 56 */
- {58, -26}, /* 57 */
- {-53, -54}, /* 58 */
- {70, 60}, /* 59 */
- {64, 61}, /* 60 */
- {62, -1}, /* 61 */
- {-19, 63}, /* 62 */
- {-31, -32}, /* 63 */
- {68, 65}, /* 64 */
- {67, 66}, /* 65 */
- {-37, -38}, /* 66 */
- {-35, -36}, /* 67 */
- {-20, 69}, /* 68 */
- {-33, -34}, /* 69 */
- {74, 71}, /* 70 */
- {72, -13}, /* 71 */
- {-23, 73}, /* 72 */
- {-47, -48}, /* 73 */
- {77, 75}, /* 74 */
- {76, -22}, /* 75 */
- {-45, -46}, /* 76 */
- {79, 78}, /* 77 */
- {-29, -30}, /* 78 */
- {OUREOL, BADRUN}, /* 79 */
- {86, 81}, /* 80 */
- {83, 82}, /* 81 */
- {-6, -7}, /* 82 */
- {-5, 84}, /* 83 */
- {85, -64}, /* 84 */
- {-14, -15}, /* 85 */
- {90, 87}, /* 86 */
- {88, -4}, /* 87 */
- {-9, 89}, /* 88 */
- {-16, -17}, /* 89 */
- {-3, 91}, /* 90 */
- {-128, -8} /* 91 */
- };
- const int gBTree[][2] =
- {
- {2, 1}, /* 0 */
- {-3, -2}, /* 1 */
- {4, 3}, /* 2 */
- {-1, -4}, /* 3 */
- {6, 5}, /* 4 */
- {-6, -5}, /* 5 */
- {9, 7}, /* 6 */
- {8, -7}, /* 7 */
- {-9, -8}, /* 8 */
- {31, 10}, /* 9 */
- {30, 11}, /* 10 */
- {12, -12}, /* 11 */
- {23, 13}, /* 12 */
- {17, 14}, /* 13 */
- {15, 0}, /* 14 */
- {-21, 16}, /* 15 */
- {-42, -43}, /* 16 */
- {21, 18}, /* 17 */
- {20, 19}, /* 18 */
- {-38, -39}, /* 19 */
- {-36, -37}, /* 20 */
- {-20, 22}, /* 21 */
- {-34, -35}, /* 22 */
- {-15, 24}, /* 23 */
- {27, 25}, /* 24 */
- {26, -19}, /* 25 */
- {-28, -29}, /* 26 */
- {29, 28}, /* 27 */
- {-26, -27}, /* 28 */
- {-128, -192}, /* 29 */
- {-10, -11}, /* 30 */
- {57, 32}, /* 31 */
- {45, 33}, /* 32 */
- {34, -14}, /* 33 */
- {41, 35}, /* 34 */
- {38, 36}, /* 35 */
- {37, -22}, /* 36 */
- {-40, -41}, /* 37 */
- {40, 39}, /* 38 */
- {-32, -33}, /* 39 */
- {-30, -31}, /* 40 */
- {-17, 42}, /* 41 */
- {44, 43}, /* 42 */
- {-62, -63}, /* 43 */
- {-48, -49}, /* 44 */
- {-13, 46}, /* 45 */
- {51, 47}, /* 46 */
- {48, -16}, /* 47 */
- {50, 49}, /* 48 */
- {-61, -256}, /* 49 */
- {-57, -58}, /* 50 */
- {55, 52}, /* 51 */
- {54, 53}, /* 52 */
- {-46, -47}, /* 53 */
- {-44, -45}, /* 54 */
- {-23, 56}, /* 55 */
- {-50, -51}, /* 56 */
- {OUREOL, 58}, /* 57 */
- {75, 59}, /* 58 */
- {67, 60}, /* 59 */
- {61, -64}, /* 60 */
- {65, 62}, /* 61 */
- {64, 63}, /* 62 */
- {-1152, -1216}, /* 63 */
- {-1024, -1088}, /* 64 */
- {-54, 66}, /* 65 */
- {-896, -960}, /* 66 */
- {72, 68}, /* 67 */
- {71, 69}, /* 68 */
- {70, -53}, /* 69 */
- {-512, -576}, /* 70 */
- {-384, -448}, /* 71 */
- {-25, 73}, /* 72 */
- {74, -320}, /* 73 */
- {-1664, -1728}, /* 74 */
- {85, 76}, /* 75 */
- {80, 77}, /* 76 */
- {78, -24}, /* 77 */
- {-60, 79}, /* 78 */
- {-1536, -1600}, /* 79 */
- {83, 81}, /* 80 */
- {82, -59}, /* 81 */
- {-1408, -1472}, /* 82 */
- {-56, 84}, /* 83 */
- {-1280, -1344}, /* 84 */
- {-18, 86}, /* 85 */
- {89, 87}, /* 86 */
- {88, -55}, /* 87 */
- {-768, -832}, /* 88 */
- {-52, 90}, /* 89 */
- {-640, -704} /* 90 */
- };
- const int gTwoTree [][2] =
- {
- {1, VTMODE0}, /* 0 */
- {2, 3}, /* 1 */
- {4, HORZMODE}, /* 2 */
- {VTMODE1N, VTMODE1P},/* 3 */
- {5, PASSMODE}, /* 4 */
- {6, 7}, /* 5 */
- {8, 9}, /* 6 */
- {VTMODE2N, VTMODE2P},/* 7 */
- {OUREOL, BADRUN}, /* 8 */
- {VTMODE3N, VTMODE3P} /* 9 */
- };
- const unsigned char gBackward[256] =
- {
- 0x00,0x80,0x40,0xC0,0x20,0xA0,0x60,0xE0,0x10,0x90,0x50,0xD0,0x30,0xB0,0x70,0xF0,
- 0x08,0x88,0x48,0xC8,0x28,0xA8,0x68,0xE8,0x18,0x98,0x58,0xD8,0x38,0xB8,0x78,0xF8,
- 0x04,0x84,0x44,0xC4,0x24,0xA4,0x64,0xE4,0x14,0x94,0x54,0xD4,0x34,0xB4,0x74,0xF4,
- 0x0C,0x8C,0x4C,0xCC,0x2C,0xAC,0x6C,0xEC,0x1C,0x9C,0x5C,0xDC,0x3C,0xBC,0x7C,0xFC,
- 0x02,0x82,0x42,0xC2,0x22,0xA2,0x62,0xE2,0x12,0x92,0x52,0xD2,0x32,0xB2,0x72,0xF2,
- 0x0A,0x8A,0x4A,0xCA,0x2A,0xAA,0x6A,0xEA,0x1A,0x9A,0x5A,0xDA,0x3A,0xBA,0x7A,0xFA,
- 0x06,0x86,0x46,0xC6,0x26,0xA6,0x66,0xE6,0x16,0x96,0x56,0xD6,0x36,0xB6,0x76,0xF6,
- 0x0E,0x8E,0x4E,0xCE,0x2E,0xAE,0x6E,0xEE,0x1E,0x9E,0x5E,0xDE,0x3E,0xBE,0x7E,0xFE,
- 0x01,0x81,0x41,0xC1,0x21,0xA1,0x61,0xE1,0x11,0x91,0x51,0xD1,0x31,0xB1,0x71,0xF1,
- 0x09,0x89,0x49,0xC9,0x29,0xA9,0x69,0xE9,0x19,0x99,0x59,0xD9,0x39,0xB9,0x79,0xF9,
- 0x05,0x85,0x45,0xC5,0x25,0xA5,0x65,0xE5,0x15,0x95,0x55,0xD5,0x35,0xB5,0x75,0xF5,
- 0x0D,0x8D,0x4D,0xCD,0x2D,0xAD,0x6D,0xED,0x1D,0x9D,0x5D,0xDD,0x3D,0xBD,0x7D,0xFD,
- 0x03,0x83,0x43,0xC3,0x23,0xA3,0x63,0xE3,0x13,0x93,0x53,0xD3,0x33,0xB3,0x73,0xF3,
- 0x0B,0x8B,0x4B,0xCB,0x2B,0xAB,0x6B,0xEB,0x1B,0x9B,0x5B,0xDB,0x3B,0xBB,0x7B,0xFB,
- 0x07,0x87,0x47,0xC7,0x27,0xA7,0x67,0xE7,0x17,0x97,0x57,0xD7,0x37,0xB7,0x77,0xF7,
- 0x0F,0x8F,0x4F,0xCF,0x2F,0xAF,0x6F,0xEF,0x1F,0x9F,0x5F,0xDF,0x3F,0xBF,0x7F,0xFF
- };