51 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-04-30 12:24:05 +00:00
package mmr ;import (_ab "errors";_f "fmt";_ca "github.com/unidoc/unipdf/v3/common";_ff "github.com/unidoc/unipdf/v3/internal/bitwise";_e "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_c "io";);func (_bf *code )String ()string {return _f .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_bf ._g ,_bf ._b ,_bf ._ce );
};func (_ad *Decoder )fillBitmap (_fgb *_e .Bitmap ,_bba int ,_eeg []int ,_ef int )error {var _gdc byte ;_dc :=0;_ea :=_fgb .GetByteIndex (_dc ,_bba );for _fb :=0;_fb < _ef ;_fb ++{_af :=byte (1);_acg :=_eeg [_fb ];if (_fb &1)==0{_af =0;};for _dc < _acg {_gdc =(_gdc <<1)|_af ;
_dc ++;if (_dc &7)==0{if _add :=_fgb .SetByte (_ea ,_gdc );_add !=nil {return _add ;};_ea ++;_gdc =0;};};};if (_dc &7)!=0{_gdc <<=uint (8-(_dc &7));if _ceac :=_fgb .SetByte (_ea ,_gdc );_ceac !=nil {return _ceac ;};};return nil ;};func (_bbb *Decoder )UncompressMMR ()(_ec *_e .Bitmap ,_dad error ){_ec =_e .New (_bbb ._dda ,_bbb ._gda );
_ccf :=make ([]int ,_ec .Width +5);_geb :=make ([]int ,_ec .Width +5);_geb [0]=_ec .Width ;_daa :=1;var _ecf int ;for _fg :=0;_fg < _ec .Height ;_fg ++{_ecf ,_dad =_bbb .uncompress2d (_bbb ._bda ,_geb ,_daa ,_ccf ,_ec .Width );if _dad !=nil {return nil ,_dad ;
};if _ecf ==EOF {break ;};if _ecf > 0{_dad =_bbb .fillBitmap (_ec ,_fg ,_ccf ,_ecf );if _dad !=nil {return nil ,_dad ;};};_geb ,_ccf =_ccf ,_geb ;_daa =_ecf ;};if _dad =_bbb .detectAndSkipEOL ();_dad !=nil {return nil ,_dad ;};_bbb ._bda .align ();return _ec ,nil ;
};var (_cb =[][3]int {{4,0x1,int (_dd )},{3,0x1,int (_ffd )},{1,0x1,int (_abg )},{3,0x3,int (_ge )},{6,0x3,int (_df )},{7,0x3,int (_de )},{3,0x2,int (_bb )},{6,0x2,int (_cec )},{7,0x2,int (_bbg )},{10,0xf,int (_gd )},{12,0xf,int (_fd )},{12,0x1,int (EOL )}};
_bac =[][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,_da },{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,_da },{11,0x01,_da },{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}};
_daf =[][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,_da },{9,0x18,15},{10,0x01,_da },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_da },{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 (_gbe *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_gbef :=_gbe ._gf -_gbe ._cef ;if _gbef < 0||_gbef > 24{_dgc :=(_gbe ._gf >>3)-_gbe ._gfd ;if _dgc >=_gbe ._agb {_dgc +=_gbe ._gfd ;if _ffeb :=_gbe .fillBuffer (_dgc );_ffeb !=nil {return 0,_ffeb ;
};_dgc -=_gbe ._gfd ;};_ggbg :=(uint32 (_gbe ._edc [_dgc ]&0xFF)<<16)|(uint32 (_gbe ._edc [_dgc +1]&0xFF)<<8)|(uint32 (_gbe ._edc [_dgc +2]&0xFF));_ddab :=uint32 (_gbe ._gf &7);_ggbg <<=_ddab ;_gbe ._fca =int (_ggbg );}else {_eaa :=_gbe ._cef &7;_ceb :=7-_eaa ;
if _gbef <=_ceb {_gbe ._fca <<=uint (_gbef );}else {_dcff :=(_gbe ._cef >>3)+3-_gbe ._gfd ;if _dcff >=_gbe ._agb {_dcff +=_gbe ._gfd ;if _cd :=_gbe .fillBuffer (_dcff );_cd !=nil {return 0,_cd ;};_dcff -=_gbe ._gfd ;};_eaa =8-_eaa ;for {_gbe ._fca <<=uint (_eaa );
_gbe ._fca |=int (uint (_gbe ._edc [_dcff ])&0xFF);_gbef -=_eaa ;_dcff ++;_eaa =8;if !(_gbef >=8){break ;};};_gbe ._fca <<=uint (_gbef );};};_gbe ._cef =_gbe ._gf ;return _gbe ._fca ,nil ;};func (_caf *runData )align (){_caf ._gf =((_caf ._gf +7)>>3)<<3};
func (_cad *Decoder )detectAndSkipEOL ()error {for {_bagd ,_ege :=_cad ._bda .uncompressGetCode (_cad ._fe );if _ege !=nil {return _ege ;};if _bagd !=nil &&_bagd ._ce ==EOL {_cad ._bda ._gf +=_bagd ._g ;}else {return nil ;};};};func _cee (_gb ,_cc int )int {if _gb < _cc {return _cc ;
};return _gb ;};func (_eff *Decoder )uncompress2d (_fbd *runData ,_eac []int ,_gae int ,_ffe []int ,_ffa int )(int ,error ){var (_fgf int ;_gage int ;_aab int ;_dae =true ;_gbd error ;_gdd *code ;);_eac [_gae ]=_ffa ;_eac [_gae +1]=_ffa ;_eac [_gae +2]=_ffa +1;
_eac [_gae +3]=_ffa +1;_dcf :for _aab < _ffa {_gdd ,_gbd =_fbd .uncompressGetCode (_eff ._fe );if _gbd !=nil {return EOL ,nil ;};if _gdd ==nil {_fbd ._gf ++;break _dcf ;};_fbd ._gf +=_gdd ._g ;switch mmrCode (_gdd ._ce ){case _abg :_aab =_eac [_fgf ];case _ge :_aab =_eac [_fgf ]+1;
case _bb :_aab =_eac [_fgf ]-1;case _ffd :for {var _dgf []*code ;if _dae {_dgf =_eff ._gg ;}else {_dgf =_eff ._ee ;};_gdd ,_gbd =_fbd .uncompressGetCode (_dgf );if _gbd !=nil {return 0,_gbd ;};if _gdd ==nil {break _dcf ;};_fbd ._gf +=_gdd ._g ;if _gdd ._ce < 64{if _gdd ._ce < 0{_ffe [_gage ]=_aab ;
_gage ++;_gdd =nil ;break _dcf ;};_aab +=_gdd ._ce ;_ffe [_gage ]=_aab ;_gage ++;break ;};_aab +=_gdd ._ce ;};_fga :=_aab ;_ddc :for {var _eb []*code ;if !_dae {_eb =_eff ._gg ;}else {_eb =_eff ._ee ;};_gdd ,_gbd =_fbd .uncompressGetCode (_eb );if _gbd !=nil {return 0,_gbd ;
};if _gdd ==nil {break _dcf ;};_fbd ._gf +=_gdd ._g ;if _gdd ._ce < 64{if _gdd ._ce < 0{_ffe [_gage ]=_aab ;_gage ++;break _dcf ;};_aab +=_gdd ._ce ;if _aab < _ffa ||_aab !=_fga {_ffe [_gage ]=_aab ;_gage ++;};break _ddc ;};_aab +=_gdd ._ce ;};for _aab < _ffa &&_eac [_fgf ]<=_aab {_fgf +=2;
};continue _dcf ;case _dd :_fgf ++;_aab =_eac [_fgf ];_fgf ++;continue _dcf ;case _df :_aab =_eac [_fgf ]+2;case _cec :_aab =_eac [_fgf ]-2;case _de :_aab =_eac [_fgf ]+3;case _bbg :_aab =_eac [_fgf ]-3;default:if _fbd ._gf ==12&&_gdd ._ce ==EOL {_fbd ._gf =0;
if _ ,_gbd =_eff .uncompress1d (_fbd ,_eac ,_ffa );_gbd !=nil {return 0,_gbd ;};_fbd ._gf ++;if _ ,_gbd =_eff .uncompress1d (_fbd ,_ffe ,_ffa );_gbd !=nil {return 0,_gbd ;};_gdcd ,_dec :=_eff .uncompress1d (_fbd ,_eac ,_ffa );if _dec !=nil {return EOF ,_dec ;
};_fbd ._gf ++;return _gdcd ,nil ;};_aab =_ffa ;continue _dcf ;};if _aab <=_ffa {_dae =!_dae ;_ffe [_gage ]=_aab ;_gage ++;if _fgf > 0{_fgf --;}else {_fgf ++;};for _aab < _ffa &&_eac [_fgf ]<=_aab {_fgf +=2;};};};if _ffe [_gage ]!=_ffa {_ffe [_gage ]=_ffa ;
};if _gdd ==nil {return EOL ,nil ;};return _gage ,nil ;};func New (r *_ff .Reader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_eg :=&Decoder {_dda :width ,_gda :height };_ffc ,_bbc :=r .NewPartialReader (int (dataOffset ),int (dataLength ),false );
if _bbc !=nil {return nil ,_bbc ;};_aaf ,_bbc :=_ced (_ffc );if _bbc !=nil {return nil ,_bbc ;};_ ,_bbc =r .Seek (_ffc .RelativePosition (),_c .SeekCurrent );if _bbc !=nil {return nil ,_bbc ;};_eg ._bda =_aaf ;if _cca :=_eg .initTables ();_cca !=nil {return nil ,_cca ;
};return _eg ,nil ;};type runData struct{_aed *_ff .Reader ;_gf int ;_cef int ;_fca int ;_edc []byte ;_gfd int ;_agb int ;};func (_ggb *runData )uncompressGetCodeLittleEndian (_dcd []*code )(*code ,error ){_bff ,_dadb :=_ggb .uncompressGetNextCodeLittleEndian ();
if _dadb !=nil {_ca .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",_dadb );
return nil ,_dadb ;};_bff &=0xffffff;_bc :=_bff >>(_dac -_dfa );_gbf :=_dcd [_bc ];if _gbf !=nil &&_gbf ._ac {_bc =(_bff >>(_dac -_dfa -_bg ))&_aa ;_gbf =_gbf ._fa [_bc ];};return _gbf ,nil ;};const (_dd mmrCode =iota ;_ffd ;_abg ;_ge ;_df ;_de ;_bb ;_cec ;
_bbg ;_gd ;_fd ;);func (_ga *Decoder )createLittleEndianTable (_bbbf [][3]int )([]*code ,error ){_bde :=make ([]*code ,_cea +1);for _bdc :=0;_bdc < len (_bbbf );_bdc ++{_dfaf :=_d (_bbbf [_bdc ]);if _dfaf ._g <=_dfa {_cce :=_dfa -_dfaf ._g ;_aaa :=_dfaf ._b <<uint (_cce );
for _ccac :=(1<<uint (_cce ))-1;_ccac >=0;_ccac --{_bag :=_aaa |_ccac ;_bde [_bag ]=_dfaf ;};}else {_fag :=_dfaf ._b >>uint (_dfaf ._g -_dfa );if _bde [_fag ]==nil {var _abe =_d ([3]int {});_abe ._fa =make ([]*code ,_aa +1);_bde [_fag ]=_abe ;};if _dfaf ._g <=_dfa +_bg {_ag :=_dfa +_bg -_dfaf ._g ;
_db :=(_dfaf ._b <<uint (_ag ))&_aa ;_bde [_fag ]._ac =true ;for _dg :=(1<<uint (_ag ))-1;_dg >=0;_dg --{_bde [_fag ]._fa [_db |_dg ]=_dfaf ;};}else {return nil ,_ab .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 _bde ,nil ;};func _d (_ae [3]int )*code {return &code {_g :_ae [0],_b :_ae [1],_ce :_ae [2]}};type Decoder struct{_dda ,_gda int ;_bda *runData ;_gg []*code ;_ee []*code ;_fe []*code ;};const (_fc int =1024<<7;_ed int =3;_dac uint =24;);const (EOF =-3;
_da =-2;EOL =-1;_dfa =8;_cea =(1<<_dfa )-1;_bg =5;_aa =(1<<_bg )-1;);func _bd (_ba ,_aca int )int {if _ba > _aca {return _aca ;};return _ba ;};func _ced (_bdg *_ff .Reader )(*runData ,error ){_dbg :=&runData {_aed :_bdg ,_gf :0,_cef :1};_cbb :=_bd (_cee (_ed ,int (_bdg .Length ())),_fc );
_dbg ._edc =make ([]byte ,_cbb );if _bbca :=_dbg .fillBuffer (0);_bbca !=nil {if _bbca ==_c .EOF {_dbg ._edc =make ([]byte ,10);_ca .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_bbca );
}else {return nil ,_bbca ;};};return _dbg ,nil ;};func (_gaea *runData )uncompressGetCode (_dadg []*code )(*code ,error ){return _gaea .uncompressGetCodeLittleEndian (_dadg );};type code struct{_g int ;_b int ;_ce int ;_fa []*code ;_ac bool ;};func (_cf *Decoder )uncompress1d (_cfd *runData ,_cab []int ,_ffg int )(int ,error ){var (_bgf =true ;
_gdf int ;_fdg *code ;_bgc int ;_agd error ;);_ggf :for _gdf < _ffg {_ace :for {if _bgf {_fdg ,_agd =_cfd .uncompressGetCode (_cf ._gg );if _agd !=nil {return 0,_agd ;};}else {_fdg ,_agd =_cfd .uncompressGetCode (_cf ._ee );if _agd !=nil {return 0,_agd ;
};};_cfd ._gf +=_fdg ._g ;if _fdg ._ce < 0{break _ggf ;};_gdf +=_fdg ._ce ;if _fdg ._ce < 64{_bgf =!_bgf ;_cab [_bgc ]=_gdf ;_bgc ++;break _ace ;};};};if _cab [_bgc ]!=_ffg {_cab [_bgc ]=_ffg ;};_gag :=EOL ;if _fdg !=nil &&_fdg ._ce !=EOL {_gag =_bgc ;
};return _gag ,nil ;};func (_ged *Decoder )initTables ()(_fbg error ){if _ged ._gg ==nil {_ged ._gg ,_fbg =_ged .createLittleEndianTable (_bac );if _fbg !=nil {return ;};_ged ._ee ,_fbg =_ged .createLittleEndianTable (_daf );if _fbg !=nil {return ;};_ged ._fe ,_fbg =_ged .createLittleEndianTable (_cb );
if _fbg !=nil {return ;};};return nil ;};func (_cdg *runData )fillBuffer (_ecd int )error {_cdg ._gfd =_ecd ;_ ,_ggbe :=_cdg ._aed .Seek (int64 (_ecd ),_c .SeekStart );if _ggbe !=nil {if _ggbe ==_c .EOF {_ca .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");
_cdg ._agb =-1;}else {return _ggbe ;};};if _ggbe ==nil {_cdg ._agb ,_ggbe =_cdg ._aed .Read (_cdg ._edc );if _ggbe !=nil {if _ggbe ==_c .EOF {_ca .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_cdg ._agb =-1;}else {return _ggbe ;};};};
if _cdg ._agb > -1&&_cdg ._agb < 3{for _cdg ._agb < 3{_ebd ,_ffgd :=_cdg ._aed .ReadByte ();if _ffgd !=nil {if _ffgd ==_c .EOF {_cdg ._edc [_cdg ._agb ]=0;}else {return _ffgd ;};}else {_cdg ._edc [_cdg ._agb ]=_ebd &0xFF;};_cdg ._agb ++;};};_cdg ._agb -=3;
if _cdg ._agb < 0{_cdg ._edc =make ([]byte ,len (_cdg ._edc ));_cdg ._agb =len (_cdg ._edc )-3;};return nil ;};type mmrCode int ;