44 lines
11 KiB
Go
Raw Normal View History

2020-08-27 21:45:09 +00:00
//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
2021-05-31 17:17:31 +00:00
package huffman ;import (_e "errors";_a "fmt";_be "github.com/unidoc/unipdf/v3/internal/bitwise";_c "github.com/unidoc/unipdf/v3/internal/jbig2/internal";_beg "math";_bd "strings";);func (_cc *FixedSizeTable )String ()string {return _cc ._ge .String ()+"\u000a"};
func NewEncodedTable (table BasicTabler )(*EncodedTable ,error ){_ea :=&EncodedTable {_g :&InternalNode {},BasicTabler :table };if _d :=_ea .parseTable ();_d !=nil {return nil ,_d ;};return _ea ,nil ;};func (_bdf *FixedSizeTable )RootNode ()*InternalNode {return _bdf ._ge };
func (_ag *EncodedTable )parseTable ()error {var (_de []*Code ;_gfb ,_af ,_cdf int32 ;_ed uint64 ;_da error ;);_bf :=_ag .StreamReader ();_gc :=_ag .HtLow ();for _gc < _ag .HtHigh (){_ed ,_da =_bf .ReadBits (byte (_ag .HtPS ()));if _da !=nil {return _da ;
};_gfb =int32 (_ed );_ed ,_da =_bf .ReadBits (byte (_ag .HtRS ()));if _da !=nil {return _da ;};_af =int32 (_ed );_de =append (_de ,NewCode (_gfb ,_af ,_cdf ,false ));_gc +=1<<uint (_af );};_ed ,_da =_bf .ReadBits (byte (_ag .HtPS ()));if _da !=nil {return _da ;
};_gfb =int32 (_ed );_af =32;_cdf =_ag .HtLow ()-1;_de =append (_de ,NewCode (_gfb ,_af ,_cdf ,true ));_ed ,_da =_bf .ReadBits (byte (_ag .HtPS ()));if _da !=nil {return _da ;};_gfb =int32 (_ed );_af =32;_cdf =_ag .HtHigh ();_de =append (_de ,NewCode (_gfb ,_af ,_cdf ,false ));
if _ag .HtOOB ()==1{_ed ,_da =_bf .ReadBits (byte (_ag .HtPS ()));if _da !=nil {return _da ;};_gfb =int32 (_ed );_de =append (_de ,NewCode (_gfb ,-1,-1,false ));};if _da =_ag .InitTree (_de );_da !=nil {return _da ;};return nil ;};var _cfd =make ([]Tabler ,len (_ggg ));
func (_dag *FixedSizeTable )Decode (r _be .StreamReader )(int64 ,error ){return _dag ._ge .Decode (r )};func (_fef *StandardTable )String ()string {return _fef ._dec .String ()+"\u000a"};type BasicTabler interface{HtHigh ()int32 ;HtLow ()int32 ;StreamReader ()_be .StreamReader ;
HtPS ()int32 ;HtRS ()int32 ;HtOOB ()int32 ;};func (_bc *ValueNode )Decode (r _be .StreamReader )(int64 ,error ){_dff ,_dage :=r .ReadBits (byte (_bc ._fb ));if _dage !=nil {return 0,_dage ;};if _bc ._eg {_dff =-_dff ;};return int64 (_bc ._geb )+int64 (_dff ),nil ;
};func (_ecd *Code )String ()string {var _adc string ;if _ecd ._ddc !=-1{_adc =_dgc (_ecd ._ddc ,_ecd ._dba );}else {_adc ="\u003f";};return _a .Sprintf ("%\u0073\u002f\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_adc ,_ecd ._dba ,_ecd ._ddf ,_ecd ._feg );
};var _ Node =&ValueNode {};func (_cgf *EncodedTable )String ()string {return _cgf ._g .String ()+"\u000a"};type Code struct{_dba int32 ;_ddf int32 ;_feg int32 ;_ddge bool ;_ddc int32 ;};func (_gcd *InternalNode )pad (_ebg *_bd .Builder ){for _fe :=int32 (0);
_fe < _gcd ._deb ;_fe ++{_ebg .WriteString ("\u0020\u0020\u0020");};};func _ff (_cf *Code )*OutOfBandNode {return &OutOfBandNode {}};var _ggg =[][][]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},{3,7,128},{3,8,256},{4,9,512},{4,10,1024},{6,32,-2049,999},{6,32,2048}},{{4,9,-1024},{3,8,-512},{4,7,-256},{5,6,-128},{5,5,-64},{4,5,-32},{4,5,0},{5,5,32},{5,6,64},{4,7,128},{3,8,256},{3,9,512},{3,10,1024},{5,32,-1025,999},{5,32,2048}},{{8,3,-15},{9,1,-7},{8,1,-5},{9,0,-3},{7,0,-2},{4,0,-1},{2,1,0},{5,0,2},{6,0,3},{3,4,4},{6,1,20},{4,4,22},{4,5,38},{5,6,70},{5,7,134},{6,7,262},{7,8,390},{6,10,646},{9,32,-16,999},{9,32,1670},{2,-1,0}},{{8,4,-31},{9,2,-15},{8,2,-11},{9,1,-7},{7,1,-5},{4,1,-3},{3,1,-1},{3,1,1},{5,1,3},{6,1,5},{3,5,7},{6,2,39},{4,5,43},{4,6,75},{5,7,139},{5,8,267},{6,8,523},{7,9,779},{6,11,1291},{9,32,-32,999},{9,32,3339},{2,-1,0}},{{7,4,-21},{8,0,-5},{7,0,-4},{5,0,-3},{2,2,-2},{5,0,2},{6,0,3},{7,0,4},{8,0,5},{2,6,6},{5,5,70},{6,5,102},{6,6,134},{6,7,198},{6,8,326},{6,9,582},{6,10,1094},{7,11,2118},{8,32,-22,999},{8,32,4166},{2,-1,0}},{{1,0,1},{2,1,2},{4,0,4},{4,1,5},{5,1,7},{5,2,9},{6,2,13},{7,2,17},{7,3,21},{7,4,29},{7,5,45},{7,6,77},{7,32,141}},{{1,0,1},{2,0,2},{3,1,3},{5,0,5},{5,1,6},{6,1,8},{7,0,10},{7,1,11},{7,2,13},{7,3,17},{7,4,25},{8,5,41},{8,32,73}},{{1,0,1},{3,0,2},{4,0,3},{5,0,4},{4,1,5},{3,3,7},{6,1,15},{6,2,17},{6,3,21},{6,4,29},{6,5,45},{7,6,77},{7,32,141}},{{3,0,-2},{3,0,-1},{1,0,0},{3,0,1},{3,0,2}},{{7,4,-24},{6,2,-8},{5,1,-4},{4,0,-2},{3,0,-1},{1,0,0},{3,0,1},{4,0,2},{5,1,3},{6,2,5},{7,4,9},{7,32,-25,999},{7,32,25}}};
type FixedSizeTable struct{_ge *InternalNode };type Tabler interface{Decode (_adg _be .StreamReader )(int64 ,error );InitTree (_ac []*Code )error ;String ()string ;RootNode ()*InternalNode ;};func NewFixedSizeTable (codeTable []*Code )(*FixedSizeTable ,error ){_dg :=&FixedSizeTable {_ge :&InternalNode {}};
if _edb :=_dg .InitTree (codeTable );_edb !=nil {return nil ,_edb ;};return _dg ,nil ;};var _ Node =&InternalNode {};func NewCode (prefixLength ,rangeLength ,rangeLow int32 ,isLowerRange bool )*Code {return &Code {_dba :prefixLength ,_ddf :rangeLength ,_feg :rangeLow ,_ddge :isLowerRange ,_ddc :-1};
};func (_ad *StandardTable )InitTree (codeTable []*Code )error {_fg (codeTable );for _ ,_bg :=range codeTable {if _fbg :=_ad ._dec .append (_bg );_fbg !=nil {return _fbg ;};};return nil ;};func (_fec *StandardTable )Decode (r _be .StreamReader )(int64 ,error ){return _fec ._dec .Decode (r )};
var _ Node =&OutOfBandNode {};type Node interface{Decode (_bdc _be .StreamReader )(int64 ,error );String ()string ;};func _ec (_ddg int32 )*InternalNode {return &InternalNode {_deb :_ddg }};func (_dd *OutOfBandNode )String ()string {return _a .Sprintf ("\u0025\u0030\u00364\u0062",int64 (_beg .MaxInt64 ));
};func _fg (_faadf []*Code ){var _bede int32 ;for _ ,_ab :=range _faadf {_bede =_dge (_bede ,_ab ._dba );};_cfa :=make ([]int32 ,_bede +1);for _ ,_gad :=range _faadf {_cfa [_gad ._dba ]++;};var _dad int32 ;_gdg :=make ([]int32 ,len (_cfa )+1);_cfa [0]=0;
for _afg :=int32 (1);_afg <=int32 (len (_cfa ));_afg ++{_gdg [_afg ]=(_gdg [_afg -1]+(_cfa [_afg -1]))<<1;_dad =_gdg [_afg ];for _ ,_gaa :=range _faadf {if _gaa ._dba ==_afg {_gaa ._ddc =_dad ;_dad ++;};};};};func (_cg *EncodedTable )RootNode ()*InternalNode {return _cg ._g };
func _dgc (_faad ,_bda int32 )string {var _edd int32 ;_dbac :=make ([]rune ,_bda );for _gcg :=int32 (1);_gcg <=_bda ;_gcg ++{_edd =_faad >>uint (_bda -_gcg )&1;if _edd !=0{_dbac [_gcg -1]='1';}else {_dbac [_gcg -1]='0';};};return string (_dbac );};func (_fff *InternalNode )Decode (r _be .StreamReader )(int64 ,error ){_fffd ,_aeg :=r .ReadBit ();
if _aeg !=nil {return 0,_aeg ;};if _fffd ==0{return _fff ._eef .Decode (r );};return _fff ._dagef .Decode (r );};func (_bed *StandardTable )RootNode ()*InternalNode {return _bed ._dec };type InternalNode struct{_deb int32 ;_eef Node ;_dagef Node ;};func _dge (_dgf ,_ecb int32 )int32 {if _dgf > _ecb {return _dgf ;
};return _ecb ;};func (_f *EncodedTable )Decode (r _be .StreamReader )(int64 ,error ){return _f ._g .Decode (r )};func _ded (_cgg *Code )*ValueNode {return &ValueNode {_fb :_cgg ._ddf ,_geb :_cgg ._feg ,_eg :_cgg ._ddge }};type EncodedTable struct{BasicTabler ;
_g *InternalNode ;};func GetStandardTable (number int )(Tabler ,error ){if number <=0||number > len (_cfd ){return nil ,_e .New ("\u0049n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};_ca :=_cfd [number -1];if _ca ==nil {var _gd error ;
_ca ,_gd =_gda (_ggg [number -1]);if _gd !=nil {return nil ,_gd ;};_cfd [number -1]=_ca ;};return _ca ,nil ;};type OutOfBandNode struct{};func (_db *ValueNode )String ()string {return _a .Sprintf ("\u0025\u0064\u002f%\u0064",_db ._fb ,_db ._geb );};type ValueNode struct{_fb int32 ;
_geb int32 ;_eg bool ;};func (_ga *InternalNode )String ()string {_bbg :=&_bd .Builder {};_bbg .WriteString ("\u000a");_ga .pad (_bbg );_bbg .WriteString ("\u0030\u003a\u0020");_bbg .WriteString (_ga ._eef .String ()+"\u000a");_ga .pad (_bbg );_bbg .WriteString ("\u0031\u003a\u0020");
_bbg .WriteString (_ga ._dagef .String ()+"\u000a");return _bbg .String ();};type StandardTable struct{_dec *InternalNode };func (_eb *OutOfBandNode )Decode (r _be .StreamReader )(int64 ,error ){return 0,_c .ErrOOB };func (_ee *FixedSizeTable )InitTree (codeTable []*Code )error {_fg (codeTable );
for _ ,_aa :=range codeTable {_gea :=_ee ._ge .append (_aa );if _gea !=nil {return _gea ;};};return nil ;};func (_gf *EncodedTable )InitTree (codeTable []*Code )error {_fg (codeTable );for _ ,_fa :=range codeTable {if _cd :=_gf ._g .append (_fa );_cd !=nil {return _cd ;
};};return nil ;};var _ Tabler =&EncodedTable {};func _gda (_afb [][]int32 )(*StandardTable ,error ){var _gg []*Code ;for _gac :=0;_gac < len (_afb );_gac ++{_ecg :=_afb [_gac ][0];_ceee :=_afb [_gac ][1];_ccd :=_afb [_gac ][2];var _bgg bool ;if len (_afb [_gac ])> 3{_bgg =true ;
};_gg =append (_gg ,NewCode (_ecg ,_ceee ,_ccd ,_bgg ));};_dde :=&StandardTable {_dec :_ec (0)};if _bbf :=_dde .InitTree (_gg );_bbf !=nil {return nil ,_bbf ;};return _dde ,nil ;};func (_gb *InternalNode )append (_cee *Code )(_fab error ){if _cee ._dba ==0{return nil ;
};_bcb :=_cee ._dba -1-_gb ._deb ;if _bcb < 0{return _e .New ("\u004e\u0065\u0067\u0061\u0074\u0069\u0076\u0065\u0020\u0073\u0068\u0069\u0066\u0074\u0069n\u0067 \u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u006c\u006c\u006f\u0077\u0065\u0064");};_fabf :=(_cee ._ddc >>uint (_bcb ))&0x1;
if _bcb ==0{if _cee ._ddf ==-1{if _fabf ==1{if _gb ._dagef !=nil {return _a .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_cee );};_gb ._dagef =_ff (_cee );
}else {if _gb ._eef !=nil {return _a .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_cee );};_gb ._eef =_ff (_cee );};}else {if _fabf ==1{if _gb ._dagef !=nil {return _a .Errorf ("\u0056\u0061\u006cue\u0020\u004e\u006f\u0064\u0065\u0020\u0061\u006c\u0072e\u0061d\u0079 \u0073e\u0074\u0020\u0066\u006f\u0072\u0020\u0063\u006f\u0064\u0065\u0020\u0025\u0073",_cee );
};_gb ._dagef =_ded (_cee );}else {if _gb ._eef !=nil {return _a .Errorf ("\u0056\u0061\u006cue\u0020\u004e\u006f\u0064\u0065\u0020\u0061\u006c\u0072e\u0061d\u0079 \u0073e\u0074\u0020\u0066\u006f\u0072\u0020\u0063\u006f\u0064\u0065\u0020\u0025\u0073",_cee );
};_gb ._eef =_ded (_cee );};};}else {if _fabf ==1{if _gb ._dagef ==nil {_gb ._dagef =_ec (_gb ._deb +1);};if _fab =_gb ._dagef .(*InternalNode ).append (_cee );_fab !=nil {return _fab ;};}else {if _gb ._eef ==nil {_gb ._eef =_ec (_gb ._deb +1);};if _fab =_gb ._eef .(*InternalNode ).append (_cee );
_fab !=nil {return _fab ;};};};return nil ;};