50 lines
13 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/
2024-03-27 22:34:33 +00:00
package mmr ;import (_bf "errors";_g "fmt";_c "github.com/unidoc/unipdf/v3/common";_a "github.com/unidoc/unipdf/v3/internal/bitwise";_f "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_b "io";);const (EOF =-3;_fg =-2;EOL =-1;_bbfg =8;_ged =(1<<_bbfg )-1;
_ggf =5;_bab =(1<<_ggf )-1;);const (_eg mmrCode =iota ;_egf ;_fa ;_gb ;_bbf ;_gee ;_ba ;_aae ;_fd ;_aab ;_gc ;);func (_gf *Decoder )createLittleEndianTable (_ggfg [][3]int )([]*code ,error ){_abg :=make ([]*code ,_ged +1);for _cgec :=0;_cgec < len (_ggfg );
_cgec ++{_ec :=_gg (_ggfg [_cgec ]);if _ec ._bb <=_bbfg {_gfd :=_bbfg -_ec ._bb ;_bgf :=_ec ._e <<uint (_gfd );for _cab :=(1<<uint (_gfd ))-1;_cab >=0;_cab --{_cgg :=_bgf |_cab ;_abg [_cgg ]=_ec ;};}else {_ga :=_ec ._e >>uint (_ec ._bb -_bbfg );if _abg [_ga ]==nil {var _bd =_gg ([3]int {});
_bd ._be =make ([]*code ,_bab +1);_abg [_ga ]=_bd ;};if _ec ._bb <=_bbfg +_ggf {_gae :=_bbfg +_ggf -_ec ._bb ;_fgd :=(_ec ._e <<uint (_gae ))&_bab ;_abg [_ga ]._ab =true ;for _ef :=(1<<uint (_gae ))-1;_ef >=0;_ef --{_abg [_ga ]._be [_fgd |_ef ]=_ec ;};
}else {return nil ,_bf .New ("\u0043\u006f\u0064\u0065\u0020\u0074a\u0062\u006c\u0065\u0020\u006f\u0076\u0065\u0072\u0066\u006c\u006f\u0077\u0020i\u006e\u0020\u004d\u004d\u0052\u0044\u0065c\u006f\u0064\u0065\u0072");};};};return _abg ,nil ;};func _cg (_cc ,_gec int )int {if _cc > _gec {return _gec ;
};return _cc ;};func (_ac *Decoder )UncompressMMR ()(_fab *_f .Bitmap ,_ca error ){_fab =_f .New (_ac ._gba ,_ac ._fac );_aabe :=make ([]int ,_fab .Width +5);_cge :=make ([]int ,_fab .Width +5);_cge [0]=_fab .Width ;_eae :=1;var _eb int ;for _bac :=0;_bac < _fab .Height ;
_bac ++{_eb ,_ca =_ac .uncompress2d (_ac ._gd ,_cge ,_eae ,_aabe ,_fab .Width );if _ca !=nil {return nil ,_ca ;};if _eb ==EOF {break ;};if _eb > 0{_ca =_ac .fillBitmap (_fab ,_bac ,_aabe ,_eb );if _ca !=nil {return nil ,_ca ;};};_cge ,_aabe =_aabe ,_cge ;
_eae =_eb ;};if _ca =_ac .detectAndSkipEOL ();_ca !=nil {return nil ,_ca ;};_ac ._gd .align ();return _fab ,nil ;};func _aceb (_ee *_a .Reader )(*runData ,error ){_gdb :=&runData {_cbd :_ee ,_ebda :0,_aafg :1};_cba :=_cg (_df (_abc ,int (_ee .Length ())),_afa );
_gdb ._fdg =make ([]byte ,_cba );if _bed :=_gdb .fillBuffer (0);_bed !=nil {if _bed ==_b .EOF {_gdb ._fdg =make ([]byte ,10);_c .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_bed );
}else {return nil ,_bed ;};};return _gdb ,nil ;};type Decoder struct{_gba ,_fac int ;_gd *runData ;_baa []*code ;_bbe []*code ;_fc []*code ;};func (_eba *Decoder )uncompress1d (_ddb *runData ,_bef []int ,_bacg int )(int ,error ){var (_gfg =true ;_ebd int ;
_ce *code ;_ccd int ;_cde error ;);_gde :for _ebd < _bacg {_gecg :for {if _gfg {_ce ,_cde =_ddb .uncompressGetCode (_eba ._baa );if _cde !=nil {return 0,_cde ;};}else {_ce ,_cde =_ddb .uncompressGetCode (_eba ._bbe );if _cde !=nil {return 0,_cde ;};};_ddb ._ebda +=_ce ._bb ;
if _ce ._ed < 0{break _gde ;};_ebd +=_ce ._ed ;if _ce ._ed < 64{_gfg =!_gfg ;_bef [_ccd ]=_ebd ;_ccd ++;break _gecg ;};};};if _bef [_ccd ]!=_bacg {_bef [_ccd ]=_bacg ;};_aaf :=EOL ;if _ce !=nil &&_ce ._ed !=EOL {_aaf =_ccd ;};return _aaf ,nil ;};var (_ea =[][3]int {{4,0x1,int (_eg )},{3,0x1,int (_egf )},{1,0x1,int (_fa )},{3,0x3,int (_gb )},{6,0x3,int (_bbf )},{7,0x3,int (_gee )},{3,0x2,int (_ba )},{6,0x2,int (_aae )},{7,0x2,int (_fd )},{10,0xf,int (_aab )},{12,0xf,int (_gc )},{12,0x1,int (EOL )}};
_bg =[][3]int {{4,0x07,2},{4,0x08,3},{4,0x0B,4},{4,0x0C,5},{4,0x0E,6},{4,0x0F,7},{5,0x12,128},{5,0x13,8},{5,0x14,9},{5,0x1B,64},{5,0x07,10},{5,0x08,11},{6,0x17,192},{6,0x18,1664},{6,0x2A,16},{6,0x2B,17},{6,0x03,13},{6,0x34,14},{6,0x35,15},{6,0x07,1},{6,0x08,12},{7,0x13,26},{7,0x17,21},{7,0x18,28},{7,0x24,27},{7,0x27,18},{7,0x28,24},{7,0x2B,25},{7,0x03,22},{7,0x37,256},{7,0x04,23},{7,0x08,20},{7,0xC,19},{8,0x12,33},{8,0x13,34},{8,0x14,35},{8,0x15,36},{8,0x16,37},{8,0x17,38},{8,0x1A,31},{8,0x1B,32},{8,0x02,29},{8,0x24,53},{8,0x25,54},{8,0x28,39},{8,0x29,40},{8,0x2A,41},{8,0x2B,42},{8,0x2C,43},{8,0x2D,44},{8,0x03,30},{8,0x32,61},{8,0x33,62},{8,0x34,63},{8,0x35,0},{8,0x36,320},{8,0x37,384},{8,0x04,45},{8,0x4A,59},{8,0x4B,60},{8,0x5,46},{8,0x52,49},{8,0x53,50},{8,0x54,51},{8,0x55,52},{8,0x58,55},{8,0x59,56},{8,0x5A,57},{8,0x5B,58},{8,0x64,448},{8,0x65,512},{8,0x67,640},{8,0x68,576},{8,0x0A,47},{8,0x0B,48},{9,0x01,_fg },{9,0x98,1472},{9,0x99,1536},{9,0x9A,1600},{9,0x9B,1728},{9,0xCC,704},{9,0xCD,768},{9,0xD2,832},{9,0xD3,896},{9,0xD4,960},{9,0xD5,1024},{9,0xD6,1088},{9,0xD7,1152},{9,0xD8,1216},{9,0xD9,1280},{9,0xDA,1344},{9,0xDB,1408},{10,0x01,_fg },{11,0x01,_fg },{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560}};
_aaec =[][3]int {{2,0x02,3},{2,0x03,2},{3,0x02,1},{3,0x03,4},{4,0x02,6},{4,0x03,5},{5,0x03,7},{6,0x04,9},{6,0x05,8},{7,0x04,10},{7,0x05,11},{7,0x07,12},{8,0x04,13},{8,0x07,14},{9,0x01,_fg },{9,0x18,15},{10,0x01,_fg },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_fg },{11,0x17,24},{11,0x18,25},{11,0x28,23},{11,0x37,22},{11,0x67,19},{11,0x68,20},{11,0x6C,21},{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560},{12,0x24,52},{12,0x27,55},{12,0x28,56},{12,0x2B,59},{12,0x2C,60},{12,0x33,320},{12,0x34,384},{12,0x35,448},{12,0x37,53},{12,0x38,54},{12,0x52,50},{12,0x53,51},{12,0x54,44},{12,0x55,45},{12,0x56,46},{12,0x57,47},{12,0x58,57},{12,0x59,58},{12,0x5A,61},{12,0x5B,256},{12,0x64,48},{12,0x65,49},{12,0x66,62},{12,0x67,63},{12,0x68,30},{12,0x69,31},{12,0x6A,32},{12,0x6B,33},{12,0x6C,40},{12,0x6D,41},{12,0xC8,128},{12,0xC9,192},{12,0xCA,26},{12,0xCB,27},{12,0xCC,28},{12,0xCD,29},{12,0xD2,34},{12,0xD3,35},{12,0xD4,36},{12,0xD5,37},{12,0xD6,38},{12,0xD7,39},{12,0xDA,42},{12,0xDB,43},{13,0x4A,640},{13,0x4B,704},{13,0x4C,768},{13,0x4D,832},{13,0x52,1280},{13,0x53,1344},{13,0x54,1408},{13,0x55,1472},{13,0x5A,1536},{13,0x5B,1600},{13,0x64,1664},{13,0x65,1728},{13,0x6C,512},{13,0x6D,576},{13,0x72,896},{13,0x73,960},{13,0x74,1024},{13,0x75,1088},{13,0x76,1152},{13,0x77,1216}};
);func (_cbc *runData )fillBuffer (_aacc int )error {_cbc ._db =_aacc ;_ ,_edb :=_cbc ._cbd .Seek (int64 (_aacc ),_b .SeekStart );if _edb !=nil {if _edb ==_b .EOF {_c .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");_cbc ._bc =-1;}else {return _edb ;
};};if _edb ==nil {_cbc ._bc ,_edb =_cbc ._cbd .Read (_cbc ._fdg );if _edb !=nil {if _edb ==_b .EOF {_c .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_cbc ._bc =-1;}else {return _edb ;};};};if _cbc ._bc > -1&&_cbc ._bc < 3{for _cbc ._bc < 3{_fdf ,_aaa :=_cbc ._cbd .ReadByte ();
if _aaa !=nil {if _aaa ==_b .EOF {_cbc ._fdg [_cbc ._bc ]=0;}else {return _aaa ;};}else {_cbc ._fdg [_cbc ._bc ]=_fdf &0xFF;};_cbc ._bc ++;};};_cbc ._bc -=3;if _cbc ._bc < 0{_cbc ._fdg =make ([]byte ,len (_cbc ._fdg ));_cbc ._bc =len (_cbc ._fdg )-3;};
return nil ;};func (_gcd *Decoder )detectAndSkipEOL ()error {for {_dc ,_eff :=_gcd ._gd .uncompressGetCode (_gcd ._fc );if _eff !=nil {return _eff ;};if _dc !=nil &&_dc ._ed ==EOL {_gcd ._gd ._ebda +=_dc ._bb ;}else {return nil ;};};};type code struct{_bb int ;
_e int ;_ed int ;_be []*code ;_ab bool ;};const (_afa int =1024<<7;_abc int =3;_ace uint =24;);func (_ff *runData )uncompressGetCodeLittleEndian (_aac []*code )(*code ,error ){_ggb ,_eaf :=_ff .uncompressGetNextCodeLittleEndian ();if _eaf !=nil {_c .Log .Debug ("\u0055n\u0063\u006fm\u0070\u0072\u0065\u0073s\u0047\u0065\u0074N\u0065\u0078\u0074\u0043\u006f\u0064\u0065\u004c\u0069tt\u006c\u0065\u0045n\u0064\u0069a\u006e\u0020\u0066\u0061\u0069\u006ce\u0064\u003a \u0025\u0076",_eaf );
return nil ,_eaf ;};_ggb &=0xffffff;_ece :=_ggb >>(_ace -_bbfg );_egc :=_aac [_ece ];if _egc !=nil &&_egc ._ab {_ece =(_ggb >>(_ace -_bbfg -_ggf ))&_bab ;_egc =_egc ._be [_ece ];};return _egc ,nil ;};func _gg (_ge [3]int )*code {return &code {_bb :_ge [0],_e :_ge [1],_ed :_ge [2]}};
type runData struct{_cbd *_a .Reader ;_ebda int ;_aafg int ;_efc int ;_fdg []byte ;_db int ;_bc int ;};func (_cdf *runData )uncompressGetCode (_beg []*code )(*code ,error ){return _cdf .uncompressGetCodeLittleEndian (_beg );};type mmrCode int ;func (_cd *Decoder )initTables ()(_bbd error ){if _cd ._baa ==nil {_cd ._baa ,_bbd =_cd .createLittleEndianTable (_bg );
if _bbd !=nil {return ;};_cd ._bbe ,_bbd =_cd .createLittleEndianTable (_aaec );if _bbd !=nil {return ;};_cd ._fc ,_bbd =_cd .createLittleEndianTable (_ea );if _bbd !=nil {return ;};};return nil ;};func _df (_ad ,_aa int )int {if _ad < _aa {return _aa ;
};return _ad ;};func (_gfdb *runData )align (){_gfdb ._ebda =((_gfdb ._ebda +7)>>3)<<3};func (_de *code )String ()string {return _g .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_de ._bb ,_de ._e ,_de ._ed );};func (_af *Decoder )uncompress2d (_fcf *runData ,_aeg []int ,_gdef int ,_face []int ,_caa int )(int ,error ){var (_bgg int ;
_fgdd int ;_dde int ;_gda =true ;_cda error ;_cdb *code ;);_aeg [_gdef ]=_caa ;_aeg [_gdef +1]=_caa ;_aeg [_gdef +2]=_caa +1;_aeg [_gdef +3]=_caa +1;_egd :for _dde < _caa {_cdb ,_cda =_fcf .uncompressGetCode (_af ._fc );if _cda !=nil {return EOL ,nil ;
};if _cdb ==nil {_fcf ._ebda ++;break _egd ;};_fcf ._ebda +=_cdb ._bb ;switch mmrCode (_cdb ._ed ){case _fa :_dde =_aeg [_bgg ];case _gb :_dde =_aeg [_bgg ]+1;case _ba :_dde =_aeg [_bgg ]-1;case _egf :for {var _cga []*code ;if _gda {_cga =_af ._baa ;}else {_cga =_af ._bbe ;
};_cdb ,_cda =_fcf .uncompressGetCode (_cga );if _cda !=nil {return 0,_cda ;};if _cdb ==nil {break _egd ;};_fcf ._ebda +=_cdb ._bb ;if _cdb ._ed < 64{if _cdb ._ed < 0{_face [_fgdd ]=_dde ;_fgdd ++;_cdb =nil ;break _egd ;};_dde +=_cdb ._ed ;_face [_fgdd ]=_dde ;
_fgdd ++;break ;};_dde +=_cdb ._ed ;};_defe :=_dde ;_gef :for {var _bdg []*code ;if !_gda {_bdg =_af ._baa ;}else {_bdg =_af ._bbe ;};_cdb ,_cda =_fcf .uncompressGetCode (_bdg );if _cda !=nil {return 0,_cda ;};if _cdb ==nil {break _egd ;};_fcf ._ebda +=_cdb ._bb ;
if _cdb ._ed < 64{if _cdb ._ed < 0{_face [_fgdd ]=_dde ;_fgdd ++;break _egd ;};_dde +=_cdb ._ed ;if _dde < _caa ||_dde !=_defe {_face [_fgdd ]=_dde ;_fgdd ++;};break _gef ;};_dde +=_cdb ._ed ;};for _dde < _caa &&_aeg [_bgg ]<=_dde {_bgg +=2;};continue _egd ;
case _eg :_bgg ++;_dde =_aeg [_bgg ];_bgg ++;continue _egd ;case _bbf :_dde =_aeg [_bgg ]+2;case _aae :_dde =_aeg [_bgg ]-2;case _gee :_dde =_aeg [_bgg ]+3;case _fd :_dde =_aeg [_bgg ]-3;default:if _fcf ._ebda ==12&&_cdb ._ed ==EOL {_fcf ._ebda =0;if _ ,_cda =_af .uncompress1d (_fcf ,_aeg ,_caa );
_cda !=nil {return 0,_cda ;};_fcf ._ebda ++;if _ ,_cda =_af .uncompress1d (_fcf ,_face ,_caa );_cda !=nil {return 0,_cda ;};_ada ,_ggg :=_af .uncompress1d (_fcf ,_aeg ,_caa );if _ggg !=nil {return EOF ,_ggg ;};_fcf ._ebda ++;return _ada ,nil ;};_dde =_caa ;
continue _egd ;};if _dde <=_caa {_gda =!_gda ;_face [_fgdd ]=_dde ;_fgdd ++;if _bgg > 0{_bgg --;}else {_bgg ++;};for _dde < _caa &&_aeg [_bgg ]<=_dde {_bgg +=2;};};};if _face [_fgdd ]!=_caa {_face [_fgdd ]=_caa ;};if _cdb ==nil {return EOL ,nil ;};return _fgdd ,nil ;
};func (_fb *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_cag :=_fb ._ebda -_fb ._aafg ;if _cag < 0||_cag > 24{_dg :=(_fb ._ebda >>3)-_fb ._db ;if _dg >=_fb ._bc {_dg +=_fb ._db ;if _gbg :=_fb .fillBuffer (_dg );_gbg !=nil {return 0,_gbg ;
};_dg -=_fb ._db ;};_cad :=(uint32 (_fb ._fdg [_dg ]&0xFF)<<16)|(uint32 (_fb ._fdg [_dg +1]&0xFF)<<8)|(uint32 (_fb ._fdg [_dg +2]&0xFF));_bbb :=uint32 (_fb ._ebda &7);_cad <<=_bbb ;_fb ._efc =int (_cad );}else {_fba :=_fb ._aafg &7;_bbdd :=7-_fba ;if _cag <=_bbdd {_fb ._efc <<=uint (_cag );
}else {_fgb :=(_fb ._aafg >>3)+3-_fb ._db ;if _fgb >=_fb ._bc {_fgb +=_fb ._db ;if _acd :=_fb .fillBuffer (_fgb );_acd !=nil {return 0,_acd ;};_fgb -=_fb ._db ;};_fba =8-_fba ;for {_fb ._efc <<=uint (_fba );_fb ._efc |=int (uint (_fb ._fdg [_fgb ])&0xFF);
_cag -=_fba ;_fgb ++;_fba =8;if !(_cag >=8){break ;};};_fb ._efc <<=uint (_cag );};};_fb ._aafg =_fb ._ebda ;return _fb ._efc ,nil ;};func (_cac *Decoder )fillBitmap (_bfb *_f .Bitmap ,_fe int ,_fed []int ,_ae int )error {var _cbf byte ;_aee :=0;_da :=_bfb .GetByteIndex (_aee ,_fe );
for _geb :=0;_geb < _ae ;_geb ++{_gdg :=byte (1);_aba :=_fed [_geb ];if (_geb &1)==0{_gdg =0;};for _aee < _aba {_cbf =(_cbf <<1)|_gdg ;_aee ++;if (_aee &7)==0{if _aed :=_bfb .SetByte (_da ,_cbf );_aed !=nil {return _aed ;};_da ++;_cbf =0;};};};if (_aee &7)!=0{_cbf <<=uint (8-(_aee &7));
if _def :=_bfb .SetByte (_da ,_cbf );_def !=nil {return _def ;};};return nil ;};func New (r *_a .Reader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_ggc :=&Decoder {_gba :width ,_fac :height };_dd ,_dfb :=r .NewPartialReader (int (dataOffset ),int (dataLength ),false );
if _dfb !=nil {return nil ,_dfb ;};_ggd ,_dfb :=_aceb (_dd );if _dfb !=nil {return nil ,_dfb ;};_ ,_dfb =r .Seek (_dd .RelativePosition (),_b .SeekCurrent );if _dfb !=nil {return nil ,_dfb ;};_ggc ._gd =_ggd ;if _gce :=_ggc .initTables ();_gce !=nil {return nil ,_gce ;
};return _ggc ,nil ;};