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/
|
|
|
|
|
2021-06-21 14:01:56 +00:00
|
|
|
package mmr ;import (_ac "errors";_a "fmt";_bc "github.com/unidoc/unipdf/v3/common";_b "github.com/unidoc/unipdf/v3/internal/bitwise";_d "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_c "io";);func (_dfgf *Decoder )uncompress1d (_bb *runData ,_cfa []int ,_bcag int )(int ,error ){var (_aac =true ;
|
|
|
|
_fg int ;_gbe *code ;_adfa int ;_cef error ;);_bag :for _fg < _bcag {_adfc :for {if _aac {_gbe ,_cef =_bb .uncompressGetCode (_dfgf ._bgd );if _cef !=nil {return 0,_cef ;};}else {_gbe ,_cef =_bb .uncompressGetCode (_dfgf ._deg );if _cef !=nil {return 0,_cef ;
|
|
|
|
};};_bb ._aea +=_gbe ._be ;if _gbe ._bf < 0{break _bag ;};_fg +=_gbe ._bf ;if _gbe ._bf < 64{_aac =!_aac ;_cfa [_adfa ]=_fg ;_adfa ++;break _adfc ;};};};if _cfa [_adfa ]!=_bcag {_cfa [_adfa ]=_bcag ;};_cbac :=EOL ;if _gbe !=nil &&_gbe ._bf !=EOL {_cbac =_adfa ;
|
|
|
|
};return _cbac ,nil ;};func _ef (_ee ,_ad int )int {if _ee < _ad {return _ad ;};return _ee ;};func New (r _b .StreamReader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_cdc :=&Decoder {_deb :width ,_fb :height };_bgg ,_ge :=_b .NewSubstreamReader (r ,uint64 (dataOffset ),uint64 (dataLength ));
|
|
|
|
if _ge !=nil {return nil ,_ge ;};_dc ,_ge :=_eef (_bgg );if _ge !=nil {return nil ,_ge ;};_cdc ._ead =_dc ;if _cca :=_cdc .initTables ();_cca !=nil {return nil ,_cca ;};return _cdc ,nil ;};func (_adb *Decoder )UncompressMMR ()(_cde *_d .Bitmap ,_bge error ){_cde =_d .New (_adb ._deb ,_adb ._fb );
|
|
|
|
_gee :=make ([]int ,_cde .Width +5);_ded :=make ([]int ,_cde .Width +5);_ded [0]=_cde .Width ;_bd :=1;var _fc int ;for _fe :=0;_fe < _cde .Height ;_fe ++{_fc ,_bge =_adb .uncompress2d (_adb ._ead ,_ded ,_bd ,_gee ,_cde .Width );if _bge !=nil {return nil ,_bge ;
|
|
|
|
};if _fc ==EOF {break ;};if _fc > 0{_bge =_adb .fillBitmap (_cde ,_fe ,_gee ,_fc );if _bge !=nil {return nil ,_bge ;};};_ded ,_gee =_gee ,_ded ;_bd =_fc ;};if _bge =_adb .detectAndSkipEOL ();_bge !=nil {return nil ,_bge ;};_adb ._ead .align ();return _cde ,nil ;
|
|
|
|
};func _g (_dd ,_abac int )int {if _dd > _abac {return _abac ;};return _dd ;};func (_adfcg *runData )uncompressGetCodeLittleEndian (_bgea []*code )(*code ,error ){_dbe ,_eefc :=_adfcg .uncompressGetNextCodeLittleEndian ();if _eefc !=nil {_bc .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",_eefc );
|
|
|
|
return nil ,_eefc ;};_dbe &=0xffffff;_fa :=_dbe >>(_fcb -_f );_fdgf :=_bgea [_fa ];if _fdgf !=nil &&_fdgf ._eg {_fa =(_dbe >>(_fcb -_f -_ce ))&_ea ;_fdgf =_fdgf ._ab [_fa ];};return _fdgf ,nil ;};func (_ba *code )String ()string {return _a .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_ba ._be ,_ba ._bg ,_ba ._bf );
|
|
|
|
};func (_cbf *Decoder )detectAndSkipEOL ()error {for {_ec ,_eea :=_cbf ._ead .uncompressGetCode (_cbf ._ed );if _eea !=nil {return _eea ;};if _ec !=nil &&_ec ._bf ==EOL {_cbf ._ead ._aea +=_ec ._be ;}else {return nil ;};};};func (_eac *Decoder )uncompress2d (_bbb *runData ,_bec []int ,_aae int ,_eeb []int ,_bae int )(int ,error ){var (_cag int ;
|
|
|
|
_gdd int ;_cg int ;_gf =true ;_agf error ;_fdg *code ;);_bec [_aae ]=_bae ;_bec [_aae +1]=_bae ;_bec [_aae +2]=_bae +1;_bec [_aae +3]=_bae +1;_eaa :for _cg < _bae {_fdg ,_agf =_bbb .uncompressGetCode (_eac ._ed );if _agf !=nil {return EOL ,nil ;};if _fdg ==nil {_bbb ._aea ++;
|
|
|
|
break _eaa ;};_bbb ._aea +=_fdg ._be ;switch mmrCode (_fdg ._bf ){case _eb :_cg =_bec [_cag ];case _gd :_cg =_bec [_cag ]+1;case _de :_cg =_bec [_cag ]-1;case _cc :for {var _abc []*code ;if _gf {_abc =_eac ._bgd ;}else {_abc =_eac ._deg ;};_fdg ,_agf =_bbb .uncompressGetCode (_abc );
|
|
|
|
if _agf !=nil {return 0,_agf ;};if _fdg ==nil {break _eaa ;};_bbb ._aea +=_fdg ._be ;if _fdg ._bf < 64{if _fdg ._bf < 0{_eeb [_gdd ]=_cg ;_gdd ++;_fdg =nil ;break _eaa ;};_cg +=_fdg ._bf ;_eeb [_gdd ]=_cg ;_gdd ++;break ;};_cg +=_fdg ._bf ;};_gdf :=_cg ;
|
|
|
|
_baeb :for {var _gff []*code ;if !_gf {_gff =_eac ._bgd ;}else {_gff =_eac ._deg ;};_fdg ,_agf =_bbb .uncompressGetCode (_gff );if _agf !=nil {return 0,_agf ;};if _fdg ==nil {break _eaa ;};_bbb ._aea +=_fdg ._be ;if _fdg ._bf < 64{if _fdg ._bf < 0{_eeb [_gdd ]=_cg ;
|
|
|
|
_gdd ++;break _eaa ;};_cg +=_fdg ._bf ;if _cg < _bae ||_cg !=_gdf {_eeb [_gdd ]=_cg ;_gdd ++;};break _baeb ;};_cg +=_fdg ._bf ;};for _cg < _bae &&_bec [_cag ]<=_cg {_cag +=2;};continue _eaa ;case _ag :_cag ++;_cg =_bec [_cag ];_cag ++;continue _eaa ;case _cba :_cg =_bec [_cag ]+2;
|
|
|
|
case _ca :_cg =_bec [_cag ]-2;case _ae :_cg =_bec [_cag ]+3;case _ga :_cg =_bec [_cag ]-3;default:if _bbb ._aea ==12&&_fdg ._bf ==EOL {_bbb ._aea =0;if _ ,_agf =_eac .uncompress1d (_bbb ,_bec ,_bae );_agf !=nil {return 0,_agf ;};_bbb ._aea ++;if _ ,_agf =_eac .uncompress1d (_bbb ,_eeb ,_bae );
|
|
|
|
_agf !=nil {return 0,_agf ;};_dcfe ,_fbd :=_eac .uncompress1d (_bbb ,_bec ,_bae );if _fbd !=nil {return EOF ,_fbd ;};_bbb ._aea ++;return _dcfe ,nil ;};_cg =_bae ;continue _eaa ;};if _cg <=_bae {_gf =!_gf ;_eeb [_gdd ]=_cg ;_gdd ++;if _cag > 0{_cag --;
|
|
|
|
}else {_cag ++;};for _cg < _bae &&_bec [_cag ]<=_cg {_cag +=2;};};};if _eeb [_gdd ]!=_bae {_eeb [_gdd ]=_bae ;};if _fdg ==nil {return EOL ,nil ;};return _gdd ,nil ;};type runData struct{_da *_b .SubstreamReader ;_aea int ;_fbb int ;_gfb int ;_dbf []byte ;
|
|
|
|
_adg int ;_dg int ;};func (_aeg *Decoder )initTables ()(_fef error ){if _aeg ._bgd ==nil {_aeg ._bgd ,_fef =_aeg .createLittleEndianTable (_gb );if _fef !=nil {return ;};_aeg ._deg ,_fef =_aeg .createLittleEndianTable (_adf );if _fef !=nil {return ;};_aeg ._ed ,_fef =_aeg .createLittleEndianTable (_df );
|
|
|
|
if _fef !=nil {return ;};};return nil ;};func _eef (_edc *_b .SubstreamReader )(*runData ,error ){_efd :=&runData {_da :_edc ,_aea :0,_fbb :1};_eebf :=_g (_ef (_gaf ,int (_edc .Length ())),_egb );_efd ._dbf =make ([]byte ,_eebf );if _cbe :=_efd .fillBuffer (0);
|
|
|
|
_cbe !=nil {if _cbe ==_c .EOF {_efd ._dbf =make ([]byte ,10);_bc .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_cbe );}else {return nil ,_cbe ;};};return _efd ,nil ;};const (_ag mmrCode =iota ;
|
|
|
|
_cc ;_eb ;_gd ;_cba ;_ae ;_de ;_ca ;_ga ;_cf ;_cd ;);func (_dda *runData )fillBuffer (_eab int )error {_dda ._adg =_eab ;_ ,_eba :=_dda ._da .Seek (int64 (_eab ),_c .SeekStart );if _eba !=nil {if _eba ==_c .EOF {_bc .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");
|
|
|
|
_dda ._dg =-1;}else {return _eba ;};};if _eba ==nil {_dda ._dg ,_eba =_dda ._da .Read (_dda ._dbf );if _eba !=nil {if _eba ==_c .EOF {_bc .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_dda ._dg =-1;}else {return _eba ;};};};if _dda ._dg > -1&&_dda ._dg < 3{for _dda ._dg < 3{_eec ,_ebef :=_dda ._da .ReadByte ();
|
|
|
|
if _ebef !=nil {if _ebef ==_c .EOF {_dda ._dbf [_dda ._dg ]=0;}else {return _ebef ;};}else {_dda ._dbf [_dda ._dg ]=_eec &0xFF;};_dda ._dg ++;};};_dda ._dg -=3;if _dda ._dg < 0{_dda ._dbf =make ([]byte ,len (_dda ._dbf ));_dda ._dg =len (_dda ._dbf )-3;
|
|
|
|
};return nil ;};type mmrCode int ;const (_egb int =1024<<7;_gaf int =3;_fcb uint =24;);func (_bff *Decoder )fillBitmap (_dcf *_d .Bitmap ,_fca int ,_gc []int ,_ff int )error {var _cfg byte ;_cdg :=0;_geee :=_dcf .GetByteIndex (_cdg ,_fca );for _fdf :=0;
|
|
|
|
_fdf < _ff ;_fdf ++{_ebb :=byte (1);_bca :=_gc [_fdf ];if (_fdf &1)==0{_ebb =0;};for _cdg < _bca {_cfg =(_cfg <<1)|_ebb ;_cdg ++;if (_cdg &7)==0{if _beb :=_dcf .SetByte (_geee ,_cfg );_beb !=nil {return _beb ;};_geee ++;_cfg =0;};};};if (_cdg &7)!=0{_cfg <<=uint (8-(_cdg &7));
|
|
|
|
if _dea :=_dcf .SetByte (_geee ,_cfg );_dea !=nil {return _dea ;};};return nil ;};type Decoder struct{_deb ,_fb int ;_ead *runData ;_bgd []*code ;_deg []*code ;_ed []*code ;};func (_cff *runData )align (){_cff ._aea =((_cff ._aea +7)>>3)<<3};func (_gfa *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_caf :=_gfa ._aea -_gfa ._fbb ;
|
|
|
|
if _caf < 0||_caf > 24{_dga :=(_gfa ._aea >>3)-_gfa ._adg ;if _dga >=_gfa ._dg {_dga +=_gfa ._adg ;if _gfad :=_gfa .fillBuffer (_dga );_gfad !=nil {return 0,_gfad ;};_dga -=_gfa ._adg ;};_baf :=(uint32 (_gfa ._dbf [_dga ]&0xFF)<<16)|(uint32 (_gfa ._dbf [_dga +1]&0xFF)<<8)|(uint32 (_gfa ._dbf [_dga +2]&0xFF));
|
|
|
|
_aef :=uint32 (_gfa ._aea &7);_baf <<=_aef ;_gfa ._gfb =int (_baf );}else {_egbb :=_gfa ._fbb &7;_eff :=7-_egbb ;if _caf <=_eff {_gfa ._gfb <<=uint (_caf );}else {_eeg :=(_gfa ._fbb >>3)+3-_gfa ._adg ;if _eeg >=_gfa ._dg {_eeg +=_gfa ._adg ;if _egd :=_gfa .fillBuffer (_eeg );
|
|
|
|
_egd !=nil {return 0,_egd ;};_eeg -=_gfa ._adg ;};_egbb =8-_egbb ;for {_gfa ._gfb <<=uint (_egbb );_gfa ._gfb |=int (uint (_gfa ._dbf [_eeg ])&0xFF);_caf -=_egbb ;_eeg ++;_egbb =8;if !(_caf >=8){break ;};};_gfa ._gfb <<=uint (_caf );};};_gfa ._fbb =_gfa ._aea ;
|
|
|
|
return _gfa ._gfb ,nil ;};const (EOF =-3;_beg =-2;EOL =-1;_f =8;_bcb =(1<<_f )-1;_ce =5;_ea =(1<<_ce )-1;);var (_df =[][3]int {{4,0x1,int (_ag )},{3,0x1,int (_cc )},{1,0x1,int (_eb )},{3,0x3,int (_gd )},{6,0x3,int (_cba )},{7,0x3,int (_ae )},{3,0x2,int (_de )},{6,0x2,int (_ca )},{7,0x2,int (_ga )},{10,0xf,int (_cf )},{12,0xf,int (_cd )},{12,0x1,int (EOL )}};
|
|
|
|
_gb =[][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,_beg },{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,_beg },{11,0x01,_beg },{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}};
|
|
|
|
_adf =[][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,_beg },{9,0x18,15},{10,0x01,_beg },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_beg },{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 (_fd *Decoder )createLittleEndianTable (_aa [][3]int )([]*code ,error ){_gef :=make ([]*code ,_bcb +1);for _bdc :=0;_bdc < len (_aa );_bdc ++{_cda :=_cb (_aa [_bdc ]);if _cda ._be <=_f {_acc :=_f -_cda ._be ;_ddc :=_cda ._bg <<uint (_acc );for _bfa :=(1<<uint (_acc ))-1;
|
|
|
|
_bfa >=0;_bfa --{_bcg :=_ddc |_bfa ;_gef [_bcg ]=_cda ;};}else {_cce :=_cda ._bg >>uint (_cda ._be -_f );if _gef [_cce ]==nil {var _gad =_cb ([3]int {});_gad ._ab =make ([]*code ,_ea +1);_gef [_cce ]=_gad ;};if _cda ._be <=_f +_ce {_db :=_f +_ce -_cda ._be ;
|
|
|
|
_dfg :=(_cda ._bg <<uint (_db ))&_ea ;_gef [_cce ]._eg =true ;for _efb :=(1<<uint (_db ))-1;_efb >=0;_efb --{_gef [_cce ]._ab [_dfg |_efb ]=_cda ;};}else {return nil ,_ac .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 _gef ,nil ;};func _cb (_aba [3]int )*code {return &code {_be :_aba [0],_bg :_aba [1],_bf :_aba [2]}};func (_dcc *runData )uncompressGetCode (_bed []*code )(*code ,error ){return _dcc .uncompressGetCodeLittleEndian (_bed );};type code struct{_be int ;
|
|
|
|
_bg int ;_bf int ;_ab []*code ;_eg bool ;};
|