mirror of
https://github.com/unidoc/unipdf.git
synced 2025-05-04 22:17:22 +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 (_b "errors";_ec "fmt";_c "github.com/unidoc/unipdf/v3/internal/bitwise";_cb "github.com/unidoc/unipdf/v3/internal/jbig2/internal";_f "math";_e "strings";);func _fbc (_bacd ,_fbd int32 )string {var _bcgf int32 ;_cca :=make ([]rune ,_fbd );
|
|
for _gca :=int32 (1);_gca <=_fbd ;_gca ++{_bcgf =_bacd >>uint (_fbd -_gca )&1;if _bcgf !=0{_cca [_gca -1]='1';}else {_cca [_gca -1]='0';};};return string (_cca );};type Tabler interface{Decode (_ebe *_c .Reader )(int64 ,error );InitTree (_da []*Code )error ;
|
|
String ()string ;RootNode ()*InternalNode ;};type InternalNode struct{_bfe int32 ;_fa Node ;_bb Node ;};func (_cad *FixedSizeTable )String ()string {return _cad ._ecb .String ()+"\u000a"};func (_cee *ValueNode )String ()string {return _ec .Sprintf ("\u0025\u0064\u002f%\u0064",_cee ._gbb ,_cee ._fgb );
|
|
};func (_eg *Code )String ()string {var _cbc string ;if _eg ._dc !=-1{_cbc =_fbc (_eg ._dc ,_eg ._aed );}else {_cbc ="\u003f";};return _ec .Sprintf ("%\u0073\u002f\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_cbc ,_eg ._aed ,_eg ._aff ,_eg ._gdb );
|
|
};func (_bcg *ValueNode )Decode (r *_c .Reader )(int64 ,error ){_bgb ,_gc :=r .ReadBits (byte (_bcg ._gbb ));if _gc !=nil {return 0,_gc ;};if _bcg ._cc {_bgb =-_bgb ;};return int64 (_bcg ._fgb )+int64 (_bgb ),nil ;};type Code struct{_aed int32 ;_aff int32 ;
|
|
_gdb int32 ;_ddd bool ;_dc int32 ;};func (_fgg *InternalNode )pad (_fdc *_e .Builder ){for _ac :=int32 (0);_ac < _fgg ._bfe ;_ac ++{_fdc .WriteString ("\u0020\u0020\u0020");};};func (_bc *OutOfBandNode )String ()string {return _ec .Sprintf ("\u0025\u0030\u00364\u0062",int64 (_f .MaxInt64 ));
|
|
};func (_dbe *InternalNode )Decode (r *_c .Reader )(int64 ,error ){_gg ,_efa :=r .ReadBit ();if _efa !=nil {return 0,_efa ;};if _gg ==0{return _dbe ._fa .Decode (r );};return _dbe ._bb .Decode (r );};func (_ag *EncodedTable )parseTable ()error {var (_aa []*Code ;
|
|
_ef ,_ae ,_gf int32 ;_dec uint64 ;_dg error ;);_ed :=_ag .StreamReader ();_ba :=_ag .HtLow ();for _ba < _ag .HtHigh (){_dec ,_dg =_ed .ReadBits (byte (_ag .HtPS ()));if _dg !=nil {return _dg ;};_ef =int32 (_dec );_dec ,_dg =_ed .ReadBits (byte (_ag .HtRS ()));
|
|
if _dg !=nil {return _dg ;};_ae =int32 (_dec );_aa =append (_aa ,NewCode (_ef ,_ae ,_gf ,false ));_ba +=1<<uint (_ae );};_dec ,_dg =_ed .ReadBits (byte (_ag .HtPS ()));if _dg !=nil {return _dg ;};_ef =int32 (_dec );_ae =32;_gf =_ag .HtLow ()-1;_aa =append (_aa ,NewCode (_ef ,_ae ,_gf ,true ));
|
|
_dec ,_dg =_ed .ReadBits (byte (_ag .HtPS ()));if _dg !=nil {return _dg ;};_ef =int32 (_dec );_ae =32;_gf =_ag .HtHigh ();_aa =append (_aa ,NewCode (_ef ,_ae ,_gf ,false ));if _ag .HtOOB ()==1{_dec ,_dg =_ed .ReadBits (byte (_ag .HtPS ()));if _dg !=nil {return _dg ;
|
|
};_ef =int32 (_dec );_aa =append (_aa ,NewCode (_ef ,-1,-1,false ));};if _dg =_ag .InitTree (_aa );_dg !=nil {return _dg ;};return nil ;};func (_ea *InternalNode )String ()string {_gda :=&_e .Builder {};_gda .WriteString ("\u000a");_ea .pad (_gda );_gda .WriteString ("\u0030\u003a\u0020");
|
|
_gda .WriteString (_ea ._fa .String ()+"\u000a");_ea .pad (_gda );_gda .WriteString ("\u0031\u003a\u0020");_gda .WriteString (_ea ._bb .String ()+"\u000a");return _gda .String ();};func _aaf (_bed ,_aag int32 )int32 {if _bed > _aag {return _bed ;};return _aag ;
|
|
};func (_bac *FixedSizeTable )Decode (r *_c .Reader )(int64 ,error ){return _bac ._ecb .Decode (r )};var _ Tabler =&EncodedTable {};func (_cf *EncodedTable )Decode (r *_c .Reader )(int64 ,error ){return _cf ._g .Decode (r )};func (_gcb *StandardTable )Decode (r *_c .Reader )(int64 ,error ){return _gcb ._ceed .Decode (r )};
|
|
var _bba =[][][]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 (_ge *EncodedTable )RootNode ()*InternalNode {return _ge ._g };var _ Node =&OutOfBandNode {};func GetStandardTable (number int )(Tabler ,error ){if number <=0||number > len (_ccc ){return nil ,_b .New ("\u0049n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
|
|
};_ebd :=_ccc [number -1];if _ebd ==nil {var _cdfb error ;_ebd ,_cdfb =_eef (_bba [number -1]);if _cdfb !=nil {return nil ,_cdfb ;};_ccc [number -1]=_ebd ;};return _ebd ,nil ;};func _edd (_bag *Code )*ValueNode {return &ValueNode {_gbb :_bag ._aff ,_fgb :_bag ._gdb ,_cc :_bag ._ddd }};
|
|
func (_gba *StandardTable )InitTree (codeTable []*Code )error {_aee (codeTable );for _ ,_fad :=range codeTable {if _fag :=_gba ._ceed .append (_fad );_fag !=nil {return _fag ;};};return nil ;};func (_dd *StandardTable )String ()string {return _dd ._ceed .String ()+"\u000a"};
|
|
type StandardTable struct{_ceed *InternalNode };func (_be *FixedSizeTable )InitTree (codeTable []*Code )error {_aee (codeTable );for _ ,_cea :=range codeTable {_aeb :=_be ._ecb .append (_cea );if _aeb !=nil {return _aeb ;};};return nil ;};func (_fc *EncodedTable )String ()string {return _fc ._g .String ()+"\u000a"};
|
|
type ValueNode struct{_gbb int32 ;_fgb int32 ;_cc bool ;};func (_af *StandardTable )RootNode ()*InternalNode {return _af ._ceed };func (_gec *InternalNode )append (_ee *Code )(_cbg error ){if _ee ._aed ==0{return nil ;};_eb :=_ee ._aed -1-_gec ._bfe ;if _eb < 0{return _b .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");
|
|
};_aec :=(_ee ._dc >>uint (_eb ))&0x1;if _eb ==0{if _ee ._aff ==-1{if _aec ==1{if _gec ._bb !=nil {return _ec .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_ee );
|
|
};_gec ._bb =_fb (_ee );}else {if _gec ._fa !=nil {return _ec .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_ee );};_gec ._fa =_fb (_ee );};}else {if _aec ==1{if _gec ._bb !=nil {return _ec .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",_ee );
|
|
};_gec ._bb =_edd (_ee );}else {if _gec ._fa !=nil {return _ec .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",_ee );
|
|
};_gec ._fa =_edd (_ee );};};}else {if _aec ==1{if _gec ._bb ==nil {_gec ._bb =_ab (_gec ._bfe +1);};if _cbg =_gec ._bb .(*InternalNode ).append (_ee );_cbg !=nil {return _cbg ;};}else {if _gec ._fa ==nil {_gec ._fa =_ab (_gec ._bfe +1);};if _cbg =_gec ._fa .(*InternalNode ).append (_ee );
|
|
_cbg !=nil {return _cbg ;};};};return nil ;};func (_gb *FixedSizeTable )RootNode ()*InternalNode {return _gb ._ecb };type Node interface{Decode (_ad *_c .Reader )(int64 ,error );String ()string ;};type FixedSizeTable struct{_ecb *InternalNode };var _ccc =make ([]Tabler ,len (_bba ));
|
|
type BasicTabler interface{HtHigh ()int32 ;HtLow ()int32 ;StreamReader ()*_c .Reader ;HtPS ()int32 ;HtRS ()int32 ;HtOOB ()int32 ;};func NewCode (prefixLength ,rangeLength ,rangeLow int32 ,isLowerRange bool )*Code {return &Code {_aed :prefixLength ,_aff :rangeLength ,_gdb :rangeLow ,_ddd :isLowerRange ,_dc :-1};
|
|
};var _ Node =&ValueNode {};func _fb (_fg *Code )*OutOfBandNode {return &OutOfBandNode {}};func (_bf *OutOfBandNode )Decode (r *_c .Reader )(int64 ,error ){return 0,_cb .ErrOOB };func _aee (_bgba []*Code ){var _beg int32 ;for _ ,_cfd :=range _bgba {_beg =_aaf (_beg ,_cfd ._aed );
|
|
};_dcd :=make ([]int32 ,_beg +1);for _ ,_adf :=range _bgba {_dcd [_adf ._aed ]++;};var _fcg int32 ;_bgc :=make ([]int32 ,len (_dcd )+1);_dcd [0]=0;for _fcd :=int32 (1);_fcd <=int32 (len (_dcd ));_fcd ++{_bgc [_fcd ]=(_bgc [_fcd -1]+(_dcd [_fcd -1]))<<1;
|
|
_fcg =_bgc [_fcd ];for _ ,_aedb :=range _bgba {if _aedb ._aed ==_fcd {_aedb ._dc =_fcg ;_fcg ++;};};};};func (_bg *EncodedTable )InitTree (codeTable []*Code )error {_aee (codeTable );for _ ,_a :=range codeTable {if _db :=_bg ._g .append (_a );_db !=nil {return _db ;
|
|
};};return nil ;};type EncodedTable struct{BasicTabler ;_g *InternalNode ;};func NewFixedSizeTable (codeTable []*Code )(*FixedSizeTable ,error ){_bga :=&FixedSizeTable {_ecb :&InternalNode {}};if _ca :=_bga .InitTree (codeTable );_ca !=nil {return nil ,_ca ;
|
|
};return _bga ,nil ;};type OutOfBandNode struct{};func _ab (_cdf int32 )*InternalNode {return &InternalNode {_bfe :_cdf }};var _ Node =&InternalNode {};func NewEncodedTable (table BasicTabler )(*EncodedTable ,error ){_gd :=&EncodedTable {_g :&InternalNode {},BasicTabler :table };
|
|
if _fd :=_gd .parseTable ();_fd !=nil {return nil ,_fd ;};return _gd ,nil ;};func _eef (_cfa [][]int32 )(*StandardTable ,error ){var _ff []*Code ;for _abd :=0;_abd < len (_cfa );_abd ++{_cba :=_cfa [_abd ][0];_ccb :=_cfa [_abd ][1];_ga :=_cfa [_abd ][2];
|
|
var _ecg bool ;if len (_cfa [_abd ])> 3{_ecg =true ;};_ff =append (_ff ,NewCode (_cba ,_ccb ,_ga ,_ecg ));};_deb :=&StandardTable {_ceed :_ab (0)};if _ggf :=_deb .InitTree (_ff );_ggf !=nil {return nil ,_ggf ;};return _deb ,nil ;}; |