aboutsummaryrefslogtreecommitdiff
path: root/unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go
diff options
context:
space:
mode:
Diffstat (limited to 'unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go')
-rw-r--r--unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go b/unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go
new file mode 100644
index 0000000..d96d7a5
--- /dev/null
+++ b/unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go
@@ -0,0 +1,36 @@
+//
+// 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 arithmetic ;import (_a "fmt";_b "github.com/unidoc/unipdf/v4/common";_fe "github.com/unidoc/unipdf/v4/internal/bitwise";_fc "github.com/unidoc/unipdf/v4/internal/jbig2/internal";_f "io";_e "strings";);var (_fb =[][4]uint32 {{0x5601,1,1,1},{0x3401,2,6,0},{0x1801,3,9,0},{0x0AC1,4,12,0},{0x0521,5,29,0},{0x0221,38,33,0},{0x5601,7,6,1},{0x5401,8,14,0},{0x4801,9,14,0},{0x3801,10,14,0},{0x3001,11,17,0},{0x2401,12,18,0},{0x1C01,13,20,0},{0x1601,29,21,0},{0x5601,15,14,1},{0x5401,16,14,0},{0x5101,17,15,0},{0x4801,18,16,0},{0x3801,19,17,0},{0x3401,20,18,0},{0x3001,21,19,0},{0x2801,22,19,0},{0x2401,23,20,0},{0x2201,24,21,0},{0x1C01,25,22,0},{0x1801,26,23,0},{0x1601,27,24,0},{0x1401,28,25,0},{0x1201,29,26,0},{0x1101,30,27,0},{0x0AC1,31,28,0},{0x09C1,32,29,0},{0x08A1,33,30,0},{0x0521,34,31,0},{0x0441,35,32,0},{0x02A1,36,33,0},{0x0221,37,34,0},{0x0141,38,35,0},{0x0111,39,36,0},{0x0085,40,37,0},{0x0049,41,38,0},{0x0025,42,39,0},{0x0015,43,40,0},{0x0009,44,41,0},{0x0005,45,42,0},{0x0001,45,43,0},{0x5601,46,46,0}};
+);func (_ade *Decoder )DecodeBit (stats *DecoderStats )(int ,error ){var (_fac int ;_dd =_fb [stats .cx ()][0];_df =int32 (stats .cx ()););defer func (){_ade ._fcg ++}();_ade ._cb -=_dd ;if (_ade ._d >>16)< uint64 (_dd ){_fac =_ade .lpsExchange (stats ,_df ,_dd );
+if _cd :=_ade .renormalize ();_cd !=nil {return 0,_cd ;};}else {_ade ._d -=uint64 (_dd )<<16;if (_ade ._cb &0x8000)==0{_fac =_ade .mpsExchange (stats ,_df );if _ab :=_ade .renormalize ();_ab !=nil {return 0,_ab ;};}else {_fac =int (stats .getMps ());};
+};return _fac ,nil ;};func (_de *Decoder )DecodeInt (stats *DecoderStats )(int32 ,error ){var (_dee ,_dg int32 ;_cde ,_edf ,_ge int ;_abc error ;);if stats ==nil {stats =NewStats (512,1);};_de ._bb =1;_edf ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;
+};_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );
+if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_ge =32;_dg =4436;}else {_ge =12;_dg =340;};}else {_ge =8;_dg =84;};}else {_ge =6;_dg =20;};}else {_ge =4;_dg =4;};}else {_ge =2;
+_dg =0;};for _dga :=0;_dga < _ge ;_dga ++{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};_dee =(_dee <<1)|int32 (_cde );};_dee +=_dg ;if _edf ==0{return _dee ,nil ;}else if _edf ==1&&_dee > 0{return -_dee ,nil ;};return 0,_fc .ErrOOB ;
+};func (_ggg *DecoderStats )Reset (){for _ca :=0;_ca < len (_ggg ._dfg );_ca ++{_ggg ._dfg [_ca ]=0;_ggg ._bad [_ca ]=0;};};func (_cc *Decoder )mpsExchange (_dde *DecoderStats ,_ccf int32 )int {_gb :=_dde ._bad [_dde ._ba ];if _cc ._cb < _fb [_ccf ][0]{if _fb [_ccf ][3]==1{_dde .toggleMps ();
+};_dde .setEntry (int (_fb [_ccf ][2]));return int (1-_gb );};_dde .setEntry (int (_fb [_ccf ][1]));return int (_gb );};type DecoderStats struct{_ba int32 ;_fba int32 ;_dfg []byte ;_bad []byte ;};func (_ef *Decoder )init ()error {_ef ._eg =_ef ._aa .AbsolutePosition ();
+_cbf ,_ff :=_ef ._aa .ReadByte ();if _ff !=nil {_b .Log .Debug ("B\u0075\u0066\u0066\u0065\u0072\u0030 \u0072\u0065\u0061\u0064\u0042\u0079\u0074\u0065\u0020f\u0061\u0069\u006ce\u0064.\u0020\u0025\u0076",_ff );return _ff ;};_ef ._ad =_cbf ;_ef ._d =uint64 (_cbf )<<16;
+if _ff =_ef .readByte ();_ff !=nil {return _ff ;};_ef ._d <<=7;_ef ._fa -=7;_ef ._cb =0x8000;_ef ._fcg ++;return nil ;};type Decoder struct{ContextSize []uint32 ;ReferedToContextSize []uint32 ;_aa *_fe .Reader ;_ad uint8 ;_d uint64 ;_cb uint32 ;_bb int64 ;
+_fa int32 ;_fcg int32 ;_eg int64 ;};func (_cg *Decoder )DecodeIAID (codeLen uint64 ,stats *DecoderStats )(int64 ,error ){_cg ._bb =1;var _ee uint64 ;for _ee =0;_ee < codeLen ;_ee ++{stats .SetIndex (int32 (_cg ._bb ));_feg ,_adc :=_cg .DecodeBit (stats );
+if _adc !=nil {return 0,_adc ;};_cg ._bb =(_cg ._bb <<1)|int64 (_feg );};_ac :=_cg ._bb -(1<<codeLen );return _ac ,nil ;};func (_eff *Decoder )decodeIntBit (_abd *DecoderStats )(int ,error ){_abd .SetIndex (int32 (_eff ._bb ));_ag ,_bd :=_eff .DecodeBit (_abd );
+if _bd !=nil {_b .Log .Debug ("\u0041\u0072\u0069\u0074\u0068\u006d\u0065t\u0069\u0063\u0044e\u0063\u006f\u0064e\u0072\u0020'\u0064\u0065\u0063\u006f\u0064\u0065I\u006etB\u0069\u0074\u0027\u002d\u003e\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0042\u0069\u0074\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_bd );
+return _ag ,_bd ;};if _eff ._bb < 256{_eff ._bb =((_eff ._bb <<uint64 (1))|int64 (_ag ))&0x1ff;}else {_eff ._bb =(((_eff ._bb <<uint64 (1)|int64 (_ag ))&511)|256)&0x1ff;};return _ag ,nil ;};func (_ea *DecoderStats )Overwrite (dNew *DecoderStats ){for _cgb :=0;
+_cgb < len (_ea ._dfg );_cgb ++{_ea ._dfg [_cgb ]=dNew ._dfg [_cgb ];_ea ._bad [_cgb ]=dNew ._bad [_cgb ];};};func (_cgg *Decoder )lpsExchange (_gbb *DecoderStats ,_ddf int32 ,_bbf uint32 )int {_bf :=_gbb .getMps ();if _cgg ._cb < _bbf {_gbb .setEntry (int (_fb [_ddf ][1]));
+_cgg ._cb =_bbf ;return int (_bf );};if _fb [_ddf ][3]==1{_gbb .toggleMps ();};_gbb .setEntry (int (_fb [_ddf ][2]));_cgg ._cb =_bbf ;return int (1-_bf );};func (_eec *Decoder )readByte ()error {if _eec ._aa .AbsolutePosition ()> _eec ._eg {if _ ,_eda :=_eec ._aa .Seek (-1,_f .SeekCurrent );
+_eda !=nil {return _eda ;};};_dfb ,_db :=_eec ._aa .ReadByte ();if _db !=nil {return _db ;};_eec ._ad =_dfb ;if _eec ._ad ==0xFF{_abe ,_bc :=_eec ._aa .ReadByte ();if _bc !=nil {return _bc ;};if _abe > 0x8F{_eec ._d +=0xFF00;_eec ._fa =8;if _ ,_gd :=_eec ._aa .Seek (-2,_f .SeekCurrent );
+_gd !=nil {return _gd ;};}else {_eec ._d +=uint64 (_abe )<<9;_eec ._fa =7;};}else {_dfb ,_db =_eec ._aa .ReadByte ();if _db !=nil {return _db ;};_eec ._ad =_dfb ;_eec ._d +=uint64 (_eec ._ad )<<8;_eec ._fa =8;};_eec ._d &=0xFFFFFFFFFF;return nil ;};func (_efg *DecoderStats )getMps ()byte {return _efg ._bad [_efg ._ba ]};
+func (_dba *DecoderStats )cx ()byte {return _dba ._dfg [_dba ._ba ]};func (_cdb *DecoderStats )Copy ()*DecoderStats {_bg :=&DecoderStats {_fba :_cdb ._fba ,_dfg :make ([]byte ,_cdb ._fba )};copy (_bg ._dfg ,_cdb ._dfg );return _bg ;};func (_cbc *DecoderStats )toggleMps (){_cbc ._bad [_cbc ._ba ]^=1};
+func (_eea *DecoderStats )SetIndex (index int32 ){_eea ._ba =index };func New (r *_fe .Reader )(*Decoder ,error ){_ed :=&Decoder {_aa :r ,ContextSize :[]uint32 {16,13,10,10},ReferedToContextSize :[]uint32 {13,10}};if _g :=_ed .init ();_g !=nil {return nil ,_g ;
+};return _ed ,nil ;};func (_cbe *Decoder )renormalize ()error {for {if _cbe ._fa ==0{if _egg :=_cbe .readByte ();_egg !=nil {return _egg ;};};_cbe ._cb <<=1;_cbe ._d <<=1;_cbe ._fa --;if (_cbe ._cb &0x8000)!=0{break ;};};_cbe ._d &=0xffffffff;return nil ;
+};func (_dbg *DecoderStats )String ()string {_deb :=&_e .Builder {};_a .Fprintf (_deb ,"S\u0074\u0061\u0074\u0073\u003a\u0020\u0020\u0025\u0064\u000a",len (_dbg ._dfg ));for _ce ,_ged :=range _dbg ._dfg {if _ged !=0{_a .Fprintf (_deb ,"N\u006f\u0074\u0020\u007aer\u006f \u0061\u0074\u003a\u0020\u0025d\u0020\u002d\u0020\u0025\u0064\u000a",_ce ,_ged );
+};};return _deb .String ();};func NewStats (contextSize int32 ,index int32 )*DecoderStats {return &DecoderStats {_ba :index ,_fba :contextSize ,_dfg :make ([]byte ,contextSize ),_bad :make ([]byte ,contextSize )};};func (_eaa *DecoderStats )setEntry (_faf int ){_ga :=byte (_faf &0x7f);
+_eaa ._dfg [_eaa ._ba ]=_ga }; \ No newline at end of file