2020-09-07 00:23:12 +00:00
|
|
|
package huffman ;import (_c "errors";_a "fmt";_d "github.com/unidoc/unipdf/v3/internal/bitwise";_dg "math";_bc "strings";);func _fbd (_baf [][]int32 )(*StandardTable ,error ){var _gbf []*Code ;for _gdc :=0;_gdc < len (_baf );_gdc ++{_eabc :=_baf [_gdc ][0];_agg :=_baf [_gdc ][1];_eb :=_baf [_gdc ][2];var _fgdd bool ;if len (_baf [_gdc ])> 3{_fgdd =true ;};_gbf =append (_gbf ,NewCode (_eabc ,_agg ,_eb ,_fgdd ));};_ecg :=&StandardTable {_bba :_acc (0)};if _dd :=_ecg .InitTree (_gbf );_dd !=nil {return nil ,_dd ;};return _ecg ,nil ;};func (_fa *EncodedTable )String ()string {return _fa ._bg .String ()+"\u000a"};func NewFixedSizeTable (codeTable []*Code )(*FixedSizeTable ,error ){_cc :=&FixedSizeTable {_agf :&InternalNode {}};if _ed :=_cc .InitTree (codeTable );_ed !=nil {return nil ,_ed ;};return _cc ,nil ;};type Tabler interface{Decode (_gbdd _d .StreamReader )(int64 ,error );InitTree (_bf []*Code )error ;String ()string ;RootNode ()*InternalNode ;};func _fe (_dbd ,_fge int32 )int32 {if _dbd > _fge {return _dbd ;};return _fge ;};func (_fc *EncodedTable )Decode (r _d .StreamReader )(int64 ,error ){return _fc ._bg .Decode (r )};func _bb (_df *Code )*OutOfBandNode {return &OutOfBandNode {}};func (_cdb *FixedSizeTable )String ()string {return _cdb ._agf .String ()+"\u000a"};var _ Node =&OutOfBandNode {};type Node interface{Decode (_ge _d .StreamReader )(int64 ,error );String ()string ;};func _gd (_bde *Code )*ValueNode {return &ValueNode {_gga :_bde ._gae ,_eab :_bde ._bef ,_bd :_bde ._ef }};func (_gg *OutOfBandNode )Decode (r _d .StreamReader )(int64 ,error ){return int64 (_dg .MaxInt64 ),nil };func (_dc *FixedSizeTable )InitTree (codeTable []*Code )error {_ae (codeTable );for _ ,_af :=range codeTable {_acf :=_dc ._agf .append (_af );if _acf !=nil {return _acf ;};};return nil ;};func (_geb *InternalNode )Decode (r _d .StreamReader )(int64 ,error ){_beeg ,_ccf :=r .ReadBit ();if _ccf !=nil {return 0,_ccf ;};if _beeg ==0{return _geb ._bee .Decode (r );};return _geb ._fag .Decode (r );};func (_cd *EncodedTable )RootNode ()*InternalNode {return _cd ._bg };func (_ccd *FixedSizeTable )RootNode ()*InternalNode {return _ccd ._agf };type Code struct{_gefe int32 ;_gae int32 ;_bef int32 ;_ef bool ;_bcf int32 ;};func GetStandardTable (number int )(Tabler ,error ){if number <=0||number > len (_ab ){return nil ,_c .New ("\u0049n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};_eag :=_ab [number -1];if _eag ==nil {var _dfc error ;_eag ,_dfc =_fbd (_gbg [number -1]);if _dfc !=nil {return nil ,_dfc ;};_ab [number -1]=_eag ;};return _eag ,nil ;};func (_fg *ValueNode )Decode (r _d .StreamReader )(int64 ,error ){_edc ,_bgc :=r .ReadBits (byte (_fg ._gga ));if _bgc !=nil {return 0,_bgc ;};if _fg ._bd {_edc =-_edc ;};return int64 (_fg ._eab )+int64 (_edc ),nil ;};func (_fce *OutOfBandNode )String ()string {return _a .Sprintf ("\u0025\u0030\u00364\u0062",int64 (_dg .MaxInt64 ));};var _ Tabler =&EncodedTable {};func (_fgd *InternalNode )pad (_ad *_bc .Builder ){for _eac :=int32 (0);_eac < _fgd ._gef ;_eac ++{_ad .WriteString ("\u0020\u0020\u0020");};};func (_ea *FixedSizeTable )Decode (r _d .StreamReader )(int64 ,error ){return _ea ._agf .Decode (r )};var _ Node =&InternalNode {};func (_def *StandardTable )RootNode ()*InternalNode {return _def ._bba };var _ Node =&ValueNode {};type StandardTable struct{_bba *InternalNode };func (_dbg *StandardTable )Decode (r _d .StreamReader )(int64 ,error ){return _dbg ._bba .Decode (r )};func (_ffa *ValueNode )String ()string {return _a .Sprintf ("\u0025\u0064\u002f%\u0064",_ffa ._gga ,_ffa ._eab );};type FixedSizeTable struct{_agf *InternalNode };var _gbg =[][][]int32 {{{1,4,0},{2,8,16},{3,16,272},{3,32,65808}},{{1,0,0},{2,0,1},{3,0,2},{4,3,3},{5,6,11},{6,32,75},{6,-1,0}},{{8,8,-256},{1,0,0},{2,0,1},{3,0,2},{4,3,3},{5,6,11},{8,32,-257,999},{7,32,75},{6,-1,0}},{{1,0,1},{2,0,2},{3,0,3},{4,3,4},{5,6,12},{5,32,76}},{{7,8,-255},{1,0,1},{2,0,2},{3,0,3},{4,3,4},{5,6,12},{7,32,-256,999},{6,32,76}},{{5,10,-2048},{4,9,-1024},{4,8,-512},{4,7,-256},{5,6,-128},{5,5,-64},{4,5,-32},{2,7,0}
|