mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-05 19:30:30 +08:00
43 lines
11 KiB
Go
43 lines
11 KiB
Go
//
|
|
// 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/
|
|
|
|
package huffman ;import (_bc "errors";_ba "fmt";_e "github.com/unidoc/unipdf/v3/internal/bitwise";_f "github.com/unidoc/unipdf/v3/internal/jbig2/internal";_c "math";_b "strings";);func (_afd *OutOfBandNode )Decode (r _e .StreamReader )(int64 ,error ){return 0,_f .ErrOOB };
|
|
var _ Node =&ValueNode {};func (_ge *InternalNode )String ()string {_ag :=&_b .Builder {};_ag .WriteString ("\u000a");_ge .pad (_ag );_ag .WriteString ("\u0030\u003a\u0020");_ag .WriteString (_ge ._ea .String ()+"\u000a");_ge .pad (_ag );_ag .WriteString ("\u0031\u003a\u0020");
|
|
_ag .WriteString (_ge ._aba .String ()+"\u000a");return _ag .String ();};func NewFixedSizeTable (codeTable []*Code )(*FixedSizeTable ,error ){_gg :=&FixedSizeTable {_fa :&InternalNode {}};if _cc :=_gg .InitTree (codeTable );_cc !=nil {return nil ,_cc ;
|
|
};return _gg ,nil ;};func (_eg *FixedSizeTable )RootNode ()*InternalNode {return _eg ._fa };func (_gea *StandardTable )InitTree (codeTable []*Code )error {_gfe (codeTable );for _ ,_df :=range codeTable {if _ega :=_gea ._fdd .append (_df );_ega !=nil {return _ega ;
|
|
};};return nil ;};func (_ecd *StandardTable )RootNode ()*InternalNode {return _ecd ._fdd };type StandardTable struct{_fdd *InternalNode };type FixedSizeTable struct{_fa *InternalNode };var _ Node =&InternalNode {};var _cgb =[][][]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}}};
|
|
func (_ee *InternalNode )append (_abf *Code )(_aea error ){if _abf ._bgb ==0{return nil ;};_cfc :=_abf ._bgb -1-_ee ._bg ;if _cfc < 0{return _bc .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");
|
|
};_agg :=(_abf ._aac >>uint (_cfc ))&0x1;if _cfc ==0{if _abf ._caff ==-1{if _agg ==1{if _ee ._aba !=nil {return _ba .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_abf );
|
|
};_ee ._aba =_afg (_abf );}else {if _ee ._ea !=nil {return _ba .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_abf );};_ee ._ea =_afg (_abf );};}else {if _agg ==1{if _ee ._aba !=nil {return _ba .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",_abf );
|
|
};_ee ._aba =_aab (_abf );}else {if _ee ._ea !=nil {return _ba .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",_abf );
|
|
};_ee ._ea =_aab (_abf );};};}else {if _agg ==1{if _ee ._aba ==nil {_ee ._aba =_eb (_ee ._bg +1);};if _aea =_ee ._aba .(*InternalNode ).append (_abf );_aea !=nil {return _aea ;};}else {if _ee ._ea ==nil {_ee ._ea =_eb (_ee ._bg +1);};if _aea =_ee ._ea .(*InternalNode ).append (_abf );
|
|
_aea !=nil {return _aea ;};};};return nil ;};type Code struct{_bgb int32 ;_caff int32 ;_afa int32 ;_bde bool ;_aac int32 ;};func GetStandardTable (number int )(Tabler ,error ){if number <=0||number > len (_dbg ){return nil ,_bc .New ("\u0049n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
|
|
};_cca :=_dbg [number -1];if _cca ==nil {var _edd error ;_cca ,_edd =_deef (_cgb [number -1]);if _edd !=nil {return nil ,_edd ;};_dbg [number -1]=_cca ;};return _cca ,nil ;};func _deef (_fg [][]int32 )(*StandardTable ,error ){var _gd []*Code ;for _ffe :=0;
|
|
_ffe < len (_fg );_ffe ++{_bdd :=_fg [_ffe ][0];_ege :=_fg [_ffe ][1];_eeb :=_fg [_ffe ][2];var _bab bool ;if len (_fg [_ffe ])> 3{_bab =true ;};_gd =append (_gd ,NewCode (_bdd ,_ege ,_eeb ,_bab ));};_faa :=&StandardTable {_fdd :_eb (0)};if _bdg :=_faa .InitTree (_gd );
|
|
_bdg !=nil {return nil ,_bdg ;};return _faa ,nil ;};func (_ca *EncodedTable )Decode (r _e .StreamReader )(int64 ,error ){return _ca ._d .Decode (r )};type EncodedTable struct{BasicTabler ;_d *InternalNode ;};func (_ecad *StandardTable )String ()string {return _ecad ._fdd .String ()+"\u000a"};
|
|
type BasicTabler interface{HtHigh ()int32 ;HtLow ()int32 ;StreamReader ()_e .StreamReader ;HtPS ()int32 ;HtRS ()int32 ;HtOOB ()int32 ;};func _afg (_cda *Code )*OutOfBandNode {return &OutOfBandNode {}};func (_eca *StandardTable )Decode (r _e .StreamReader )(int64 ,error ){return _eca ._fdd .Decode (r )};
|
|
var _ Tabler =&EncodedTable {};func (_db *EncodedTable )String ()string {return _db ._d .String ()+"\u000a"};func _eb (_gf int32 )*InternalNode {return &InternalNode {_bg :_gf }};func _fce (_edb ,_eebb int32 )int32 {if _edb > _eebb {return _edb ;};return _eebb ;
|
|
};func NewEncodedTable (table BasicTabler )(*EncodedTable ,error ){_gb :=&EncodedTable {_d :&InternalNode {},BasicTabler :table };if _a :=_gb .parseTable ();_a !=nil {return nil ,_a ;};return _gb ,nil ;};func (_ed *InternalNode )Decode (r _e .StreamReader )(int64 ,error ){_bb ,_dad :=r .ReadBit ();
|
|
if _dad !=nil {return 0,_dad ;};if _bb ==0{return _ed ._ea .Decode (r );};return _ed ._aba .Decode (r );};func (_ae *FixedSizeTable )Decode (r _e .StreamReader )(int64 ,error ){return _ae ._fa .Decode (r )};type InternalNode struct{_bg int32 ;_ea Node ;
|
|
_aba Node ;};var _dbg =make ([]Tabler ,len (_cgb ));type OutOfBandNode struct{};type Tabler interface{Decode (_cdb _e .StreamReader )(int64 ,error );InitTree (_be []*Code )error ;String ()string ;RootNode ()*InternalNode ;};func (_ef *Code )String ()string {var _bce string ;
|
|
if _ef ._aac !=-1{_bce =_bccb (_ef ._aac ,_ef ._bgb );}else {_bce ="\u003f";};return _ba .Sprintf ("%\u0073\u002f\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_bce ,_ef ._bgb ,_ef ._caff ,_ef ._afa );};func (_acc *InternalNode )pad (_bad *_b .Builder ){for _bcg :=int32 (0);
|
|
_bcg < _acc ._bg ;_bcg ++{_bad .WriteString ("\u0020\u0020\u0020");};};func _gfe (_cgf []*Code ){var _dda int32 ;for _ ,_gdd :=range _cgf {_dda =_fce (_dda ,_gdd ._bgb );};_deaa :=make ([]int32 ,_dda +1);for _ ,_cfb :=range _cgf {_deaa [_cfb ._bgb ]++;
|
|
};var _bda int32 ;_fac :=make ([]int32 ,len (_deaa )+1);_deaa [0]=0;for _fb :=int32 (1);_fb <=int32 (len (_deaa ));_fb ++{_fac [_fb ]=(_fac [_fb -1]+(_deaa [_fb -1]))<<1;_bda =_fac [_fb ];for _ ,_agc :=range _cgf {if _agc ._bgb ==_fb {_agc ._aac =_bda ;
|
|
_bda ++;};};};};func _aab (_aaf *Code )*ValueNode {return &ValueNode {_cdf :_aaf ._caff ,_bd :_aaf ._afa ,_gc :_aaf ._bde }};func (_ab *OutOfBandNode )String ()string {return _ba .Sprintf ("\u0025\u0030\u00364\u0062",int64 (_c .MaxInt64 ));};func NewCode (prefixLength ,rangeLength ,rangeLow int32 ,isLowerRange bool )*Code {return &Code {_bgb :prefixLength ,_caff :rangeLength ,_afa :rangeLow ,_bde :isLowerRange ,_aac :-1};
|
|
};type ValueNode struct{_cdf int32 ;_bd int32 ;_gc bool ;};func (_cd *FixedSizeTable )String ()string {return _cd ._fa .String ()+"\u000a"};func _bccb (_eac ,_cged int32 )string {var _cfd int32 ;_cce :=make ([]rune ,_cged );for _gdf :=int32 (1);_gdf <=_cged ;
|
|
_gdf ++{_cfd =_eac >>uint (_cged -_gdf )&1;if _cfd !=0{_cce [_gdf -1]='1';}else {_cce [_gdf -1]='0';};};return string (_cce );};func (_ad *EncodedTable )RootNode ()*InternalNode {return _ad ._d };func (_caf *EncodedTable )parseTable ()error {var (_aa []*Code ;
|
|
_cg ,_aae ,_ac int32 ;_cb uint64 ;_de error ;);_dcc :=_caf .StreamReader ();_dd :=_caf .HtLow ();for _dd < _caf .HtHigh (){_cb ,_de =_dcc .ReadBits (byte (_caf .HtPS ()));if _de !=nil {return _de ;};_cg =int32 (_cb );_cb ,_de =_dcc .ReadBits (byte (_caf .HtRS ()));
|
|
if _de !=nil {return _de ;};_aae =int32 (_cb );_aa =append (_aa ,NewCode (_cg ,_aae ,_ac ,false ));_dd +=1<<uint (_aae );};_cb ,_de =_dcc .ReadBits (byte (_caf .HtPS ()));if _de !=nil {return _de ;};_cg =int32 (_cb );_aae =32;_ac =_caf .HtLow ()-1;_aa =append (_aa ,NewCode (_cg ,_aae ,_ac ,true ));
|
|
_cb ,_de =_dcc .ReadBits (byte (_caf .HtPS ()));if _de !=nil {return _de ;};_cg =int32 (_cb );_aae =32;_ac =_caf .HtHigh ();_aa =append (_aa ,NewCode (_cg ,_aae ,_ac ,false ));if _caf .HtOOB ()==1{_cb ,_de =_dcc .ReadBits (byte (_caf .HtPS ()));if _de !=nil {return _de ;
|
|
};_cg =int32 (_cb );_aa =append (_aa ,NewCode (_cg ,-1,-1,false ));};if _de =_caf .InitTree (_aa );_de !=nil {return _de ;};return nil ;};func (_bfc *ValueNode )String ()string {return _ba .Sprintf ("\u0025\u0064\u002f%\u0064",_bfc ._cdf ,_bfc ._bd );};
|
|
func (_ccb *FixedSizeTable )InitTree (codeTable []*Code )error {_gfe (codeTable );for _ ,_bcc :=range codeTable {_bf :=_ccb ._fa .append (_bcc );if _bf !=nil {return _bf ;};};return nil ;};var _ Node =&OutOfBandNode {};func (_dc *EncodedTable )InitTree (codeTable []*Code )error {_gfe (codeTable );
|
|
for _ ,_cf :=range codeTable {if _ec :=_dc ._d .append (_cf );_ec !=nil {return _ec ;};};return nil ;};func (_fd *ValueNode )Decode (r _e .StreamReader )(int64 ,error ){_da ,_cge :=r .ReadBits (byte (_fd ._cdf ));if _cge !=nil {return 0,_cge ;};if _fd ._gc {_da =-_da ;
|
|
};return int64 (_fd ._bd )+int64 (_da ),nil ;};type Node interface{Decode (_dee _e .StreamReader )(int64 ,error );String ()string ;}; |