51 lines
14 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/
2023-02-07 17:17:49 +00:00
package mmr ;import (_f "errors";_da "fmt";_ea "github.com/unidoc/unipdf/v3/common";_e "github.com/unidoc/unipdf/v3/internal/bitwise";_fd "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_de "io";);func (_ff *Decoder )createLittleEndianTable (_fb [][3]int )([]*code ,error ){_cce :=make ([]*code ,_df +1);
for _faf :=0;_faf < len (_fb );_faf ++{_cdc :=_gb (_fb [_faf ]);if _cdc ._b <=_ead {_gbf :=_ead -_cdc ._b ;_fcb :=_cdc ._g <<uint (_gbf );for _fbg :=(1<<uint (_gbf ))-1;_fbg >=0;_fbg --{_ca :=_fcb |_fbg ;_cce [_ca ]=_cdc ;};}else {_ceb :=_cdc ._g >>uint (_cdc ._b -_ead );
if _cce [_ceb ]==nil {var _cebb =_gb ([3]int {});_cebb ._a =make ([]*code ,_gg +1);_cce [_ceb ]=_cebb ;};if _cdc ._b <=_ead +_ce {_ada :=_ead +_ce -_cdc ._b ;_dg :=(_cdc ._g <<uint (_ada ))&_gg ;_cce [_ceb ]._ee =true ;for _gfe :=(1<<uint (_ada ))-1;_gfe >=0;
_gfe --{_cce [_ceb ]._a [_dg |_gfe ]=_cdc ;};}else {return nil ,_f .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 _cce ,nil ;};func _aaa (_ge ,_ded int )int {if _ge < _ded {return _ded ;};return _ge ;};type code struct{_b int ;_g int ;_fg int ;_a []*code ;_ee bool ;};func (_cd *Decoder )UncompressMMR ()(_eag *_fd .Bitmap ,_adec error ){_eag =_fd .New (_cd ._cc ,_cd ._ab );
_gf :=make ([]int ,_eag .Width +5);_efc :=make ([]int ,_eag .Width +5);_efc [0]=_eag .Width ;_dfd :=1;var _cdb int ;for _gea :=0;_gea < _eag .Height ;_gea ++{_cdb ,_adec =_cd .uncompress2d (_cd ._bg ,_efc ,_dfd ,_gf ,_eag .Width );if _adec !=nil {return nil ,_adec ;
};if _cdb ==EOF {break ;};if _cdb > 0{_adec =_cd .fillBitmap (_eag ,_gea ,_gf ,_cdb );if _adec !=nil {return nil ,_adec ;};};_efc ,_gf =_gf ,_efc ;_dfd =_cdb ;};if _adec =_cd .detectAndSkipEOL ();_adec !=nil {return nil ,_adec ;};_cd ._bg .align ();return _eag ,nil ;
};func (_aa *code )String ()string {return _da .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_aa ._b ,_aa ._g ,_aa ._fg );};func (_fec *Decoder )initTables ()(_ec error ){if _fec ._gaf ==nil {_fec ._gaf ,_ec =_fec .createLittleEndianTable (_fc );
if _ec !=nil {return ;};_fec ._eae ,_ec =_fec .createLittleEndianTable (_dd );if _ec !=nil {return ;};_fec ._bb ,_ec =_fec .createLittleEndianTable (_feb );if _ec !=nil {return ;};};return nil ;};var (_feb =[][3]int {{4,0x1,int (_fdg )},{3,0x1,int (_ae )},{1,0x1,int (_ef )},{3,0x3,int (_ag )},{6,0x3,int (_ebc )},{7,0x3,int (_fa )},{3,0x2,int (_efb )},{6,0x2,int (_cg )},{7,0x2,int (_eeb )},{10,0xf,int (_ga )},{12,0xf,int (_aeb )},{12,0x1,int (EOL )}};
_fc =[][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,_bd },{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,_bd },{11,0x01,_bd },{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}};
_dd =[][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,_bd },{9,0x18,15},{10,0x01,_bd },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_bd },{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}};
);const (EOF =-3;_bd =-2;EOL =-1;_ead =8;_df =(1<<_ead )-1;_ce =5;_gg =(1<<_ce )-1;);func _gb (_c [3]int )*code {return &code {_b :_c [0],_g :_c [1],_fg :_c [2]}};type Decoder struct{_cc ,_ab int ;_bg *runData ;_gaf []*code ;_eae []*code ;_bb []*code ;
};func (_bea *runData )uncompressGetCode (_cca []*code )(*code ,error ){return _bea .uncompressGetCodeLittleEndian (_cca );};type runData struct{_af *_e .Reader ;_fdfe int ;_bae int ;_ggc int ;_eacg []byte ;_bge int ;_cga int ;};const (_fdg mmrCode =iota ;
_ae ;_ef ;_ag ;_ebc ;_fa ;_efb ;_cg ;_eeb ;_ga ;_aeb ;);func (_eaa *Decoder )detectAndSkipEOL ()error {for {_ddg ,_cbe :=_eaa ._bg .uncompressGetCode (_eaa ._bb );if _cbe !=nil {return _cbe ;};if _ddg !=nil &&_ddg ._fg ==EOL {_eaa ._bg ._fdfe +=_ddg ._b ;
}else {return nil ;};};};func New (r *_e .Reader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_aba :=&Decoder {_cc :width ,_ab :height };_ba ,_cb :=r .NewPartialReader (int (dataOffset ),int (dataLength ),false );if _cb !=nil {return nil ,_cb ;
};_ade ,_cb :=_bc (_ba );if _cb !=nil {return nil ,_cb ;};_ ,_cb =r .Seek (_ba .RelativePosition (),_de .SeekCurrent );if _cb !=nil {return nil ,_cb ;};_aba ._bg =_ade ;if _bad :=_aba .initTables ();_bad !=nil {return nil ,_bad ;};return _aba ,nil ;};func (_cdf *runData )align (){_cdf ._fdfe =((_cdf ._fdfe +7)>>3)<<3};
func (_ffa *Decoder )fillBitmap (_bba *_fd .Bitmap ,_ed int ,_gbfc []int ,_dc int )error {var _bf byte ;_bbab :=0;_fba :=_bba .GetByteIndex (_bbab ,_ed );for _gba :=0;_gba < _dc ;_gba ++{_cf :=byte (1);_eadf :=_gbfc [_gba ];if (_gba &1)==0{_cf =0;};for _bbab < _eadf {_bf =(_bf <<1)|_cf ;
_bbab ++;if (_bbab &7)==0{if _bgb :=_bba .SetByte (_fba ,_bf );_bgb !=nil {return _bgb ;};_fba ++;_bf =0;};};};if (_bbab &7)!=0{_bf <<=uint (8-(_bbab &7));if _be :=_bba .SetByte (_fba ,_bf );_be !=nil {return _be ;};};return nil ;};func (_bag *runData )uncompressGetCodeLittleEndian (_eg []*code )(*code ,error ){_cgae ,_cge :=_bag .uncompressGetNextCodeLittleEndian ();
if _cge !=nil {_ea .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",_cge );
return nil ,_cge ;};_cgae &=0xffffff;_gcf :=_cgae >>(_cfd -_ead );_bga :=_eg [_gcf ];if _bga !=nil &&_bga ._ee {_gcf =(_cgae >>(_cfd -_ead -_ce ))&_gg ;_bga =_bga ._a [_gcf ];};return _bga ,nil ;};func (_dag *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_cebg :=_dag ._fdfe -_dag ._bae ;
if _cebg < 0||_cebg > 24{_fdc :=(_dag ._fdfe >>3)-_dag ._bge ;if _fdc >=_dag ._cga {_fdc +=_dag ._bge ;if _gcc :=_dag .fillBuffer (_fdc );_gcc !=nil {return 0,_gcc ;};_fdc -=_dag ._bge ;};_gdab :=(uint32 (_dag ._eacg [_fdc ]&0xFF)<<16)|(uint32 (_dag ._eacg [_fdc +1]&0xFF)<<8)|(uint32 (_dag ._eacg [_fdc +2]&0xFF));
_ggb :=uint32 (_dag ._fdfe &7);_gdab <<=_ggb ;_dag ._ggc =int (_gdab );}else {_aff :=_dag ._bae &7;_db :=7-_aff ;if _cebg <=_db {_dag ._ggc <<=uint (_cebg );}else {_adg :=(_dag ._bae >>3)+3-_dag ._bge ;if _adg >=_dag ._cga {_adg +=_dag ._bge ;if _bda :=_dag .fillBuffer (_adg );
_bda !=nil {return 0,_bda ;};_adg -=_dag ._bge ;};_aff =8-_aff ;for {_dag ._ggc <<=uint (_aff );_dag ._ggc |=int (uint (_dag ._eacg [_adg ])&0xFF);_cebg -=_aff ;_adg ++;_aff =8;if !(_cebg >=8){break ;};};_dag ._ggc <<=uint (_cebg );};};_dag ._bae =_dag ._fdfe ;
return _dag ._ggc ,nil ;};func (_cbcf *runData )fillBuffer (_ecd int )error {_cbcf ._bge =_ecd ;_ ,_baa :=_cbcf ._af .Seek (int64 (_ecd ),_de .SeekStart );if _baa !=nil {if _baa ==_de .EOF {_ea .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");
_cbcf ._cga =-1;}else {return _baa ;};};if _baa ==nil {_cbcf ._cga ,_baa =_cbcf ._af .Read (_cbcf ._eacg );if _baa !=nil {if _baa ==_de .EOF {_ea .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_cbcf ._cga =-1;}else {return _baa ;};};};
if _cbcf ._cga > -1&&_cbcf ._cga < 3{for _cbcf ._cga < 3{_ac ,_cgg :=_cbcf ._af .ReadByte ();if _cgg !=nil {if _cgg ==_de .EOF {_cbcf ._eacg [_cbcf ._cga ]=0;}else {return _cgg ;};}else {_cbcf ._eacg [_cbcf ._cga ]=_ac &0xFF;};_cbcf ._cga ++;};};_cbcf ._cga -=3;
if _cbcf ._cga < 0{_cbcf ._eacg =make ([]byte ,len (_cbcf ._eacg ));_cbcf ._cga =len (_cbcf ._eacg )-3;};return nil ;};const (_aad int =1024<<7;_ffcg int =3;_cfd uint =24;);func _bc (_ebg *_e .Reader )(*runData ,error ){_fgcd :=&runData {_af :_ebg ,_fdfe :0,_bae :1};
_aac :=_ad (_aaa (_ffcg ,int (_ebg .Length ())),_aad );_fgcd ._eacg =make ([]byte ,_aac );if _cbb :=_fgcd .fillBuffer (0);_cbb !=nil {if _cbb ==_de .EOF {_fgcd ._eacg =make ([]byte ,10);_ea .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_cbb );
}else {return nil ,_cbb ;};};return _fgcd ,nil ;};type mmrCode int ;func _ad (_eb ,_fe int )int {if _eb > _fe {return _fe ;};return _eb ;};func (_fdf *Decoder )uncompress2d (_bgd *runData ,_daa []int ,_ecbe int ,_dga []int ,_ecbf int )(int ,error ){var (_agf int ;
_ddgc int ;_bade int ;_cbc =true ;_fee error ;_ceg *code ;);_daa [_ecbe ]=_ecbf ;_daa [_ecbe +1]=_ecbf ;_daa [_ecbe +2]=_ecbf +1;_daa [_ecbe +3]=_ecbf +1;_gc :for _bade < _ecbf {_ceg ,_fee =_bgd .uncompressGetCode (_fdf ._bb );if _fee !=nil {return EOL ,nil ;
};if _ceg ==nil {_bgd ._fdfe ++;break _gc ;};_bgd ._fdfe +=_ceg ._b ;switch mmrCode (_ceg ._fg ){case _ef :_bade =_daa [_agf ];case _ag :_bade =_daa [_agf ]+1;case _efb :_bade =_daa [_agf ]-1;case _ae :for {var _caf []*code ;if _cbc {_caf =_fdf ._gaf ;
}else {_caf =_fdf ._eae ;};_ceg ,_fee =_bgd .uncompressGetCode (_caf );if _fee !=nil {return 0,_fee ;};if _ceg ==nil {break _gc ;};_bgd ._fdfe +=_ceg ._b ;if _ceg ._fg < 64{if _ceg ._fg < 0{_dga [_ddgc ]=_bade ;_ddgc ++;_ceg =nil ;break _gc ;};_bade +=_ceg ._fg ;
_dga [_ddgc ]=_bade ;_ddgc ++;break ;};_bade +=_ceg ._fg ;};_abad :=_bade ;_dgc :for {var _cdcd []*code ;if !_cbc {_cdcd =_fdf ._gaf ;}else {_cdcd =_fdf ._eae ;};_ceg ,_fee =_bgd .uncompressGetCode (_cdcd );if _fee !=nil {return 0,_fee ;};if _ceg ==nil {break _gc ;
};_bgd ._fdfe +=_ceg ._b ;if _ceg ._fg < 64{if _ceg ._fg < 0{_dga [_ddgc ]=_bade ;_ddgc ++;break _gc ;};_bade +=_ceg ._fg ;if _bade < _ecbf ||_bade !=_abad {_dga [_ddgc ]=_bade ;_ddgc ++;};break _dgc ;};_bade +=_ceg ._fg ;};for _bade < _ecbf &&_daa [_agf ]<=_bade {_agf +=2;
};continue _gc ;case _fdg :_agf ++;_bade =_daa [_agf ];_agf ++;continue _gc ;case _ebc :_bade =_daa [_agf ]+2;case _cg :_bade =_daa [_agf ]-2;case _fa :_bade =_daa [_agf ]+3;case _eeb :_bade =_daa [_agf ]-3;default:if _bgd ._fdfe ==12&&_ceg ._fg ==EOL {_bgd ._fdfe =0;
if _ ,_fee =_fdf .uncompress1d (_bgd ,_daa ,_ecbf );_fee !=nil {return 0,_fee ;};_bgd ._fdfe ++;if _ ,_fee =_fdf .uncompress1d (_bgd ,_dga ,_ecbf );_fee !=nil {return 0,_fee ;};_ffc ,_cee :=_fdf .uncompress1d (_bgd ,_daa ,_ecbf );if _cee !=nil {return EOF ,_cee ;
};_bgd ._fdfe ++;return _ffc ,nil ;};_bade =_ecbf ;continue _gc ;};if _bade <=_ecbf {_cbc =!_cbc ;_dga [_ddgc ]=_bade ;_ddgc ++;if _agf > 0{_agf --;}else {_agf ++;};for _bade < _ecbf &&_daa [_agf ]<=_bade {_agf +=2;};};};if _dga [_ddgc ]!=_ecbf {_dga [_ddgc ]=_ecbf ;
};if _ceg ==nil {return EOL ,nil ;};return _ddgc ,nil ;};func (_adf *Decoder )uncompress1d (_fca *runData ,_cgc []int ,_cae int )(int ,error ){var (_aae =true ;_fgc int ;_ecb *code ;_gd int ;_eac error ;);_fcab :for _fgc < _cae {_faa :for {if _aae {_ecb ,_eac =_fca .uncompressGetCode (_adf ._gaf );
if _eac !=nil {return 0,_eac ;};}else {_ecb ,_eac =_fca .uncompressGetCode (_adf ._eae );if _eac !=nil {return 0,_eac ;};};_fca ._fdfe +=_ecb ._b ;if _ecb ._fg < 0{break _fcab ;};_fgc +=_ecb ._fg ;if _ecb ._fg < 64{_aae =!_aae ;_cgc [_gd ]=_fgc ;_gd ++;
break _faa ;};};};if _cgc [_gd ]!=_cae {_cgc [_gd ]=_cae ;};_gda :=EOL ;if _ecb !=nil &&_ecb ._fg !=EOL {_gda =_gd ;};return _gda ,nil ;};