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/
2022-07-13 21:28:43 +00:00
package mmr ;import (_a "errors";_b "fmt";_bd "github.com/unidoc/unipdf/v3/common";_d "github.com/unidoc/unipdf/v3/internal/bitwise";_e "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_ff "io";);type runData struct{_fee *_d .SubstreamReader ;_daab int ;
_dade int ;_dbc int ;_bbf []byte ;_fbbe int ;_cad int ;};func (_eag *runData )uncompressGetCodeLittleEndian (_bdg []*code )(*code ,error ){_cac ,_ebce :=_eag .uncompressGetNextCodeLittleEndian ();if _ebce !=nil {_bd .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",_ebce );
return nil ,_ebce ;};_cac &=0xffffff;_efc :=_cac >>(_geg -_ffe );_ebcf :=_bdg [_efc ];if _ebcf !=nil &&_ebcf ._abe {_efc =(_cac >>(_geg -_ffe -_fg ))&_ba ;_ebcf =_ebcf ._fb [_efc ];};return _ebcf ,nil ;};func _dgg (_ad ,_ed int )int {if _ad < _ed {return _ed ;
};return _ad ;};func (_fcb *runData )fillBuffer (_fdc int )error {_fcb ._fbbe =_fdc ;_ ,_bff :=_fcb ._fee .Seek (int64 (_fdc ),_ff .SeekStart );if _bff !=nil {if _bff ==_ff .EOF {_bd .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");_fcb ._cad =-1;
}else {return _bff ;};};if _bff ==nil {_fcb ._cad ,_bff =_fcb ._fee .Read (_fcb ._bbf );if _bff !=nil {if _bff ==_ff .EOF {_bd .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_fcb ._cad =-1;}else {return _bff ;};};};if _fcb ._cad > -1&&_fcb ._cad < 3{for _fcb ._cad < 3{_dcf ,_bg :=_fcb ._fee .ReadByte ();
if _bg !=nil {if _bg ==_ff .EOF {_fcb ._bbf [_fcb ._cad ]=0;}else {return _bg ;};}else {_fcb ._bbf [_fcb ._cad ]=_dcf &0xFF;};_fcb ._cad ++;};};_fcb ._cad -=3;if _fcb ._cad < 0{_fcb ._bbf =make ([]byte ,len (_fcb ._bbf ));_fcb ._cad =len (_fcb ._bbf )-3;
};return nil ;};func (_fbfc *runData )align (){_fbfc ._daab =((_fbfc ._daab +7)>>3)<<3};type Decoder struct{_gcf ,_gb int ;_cg *runData ;_abb []*code ;_fcg []*code ;_gbg []*code ;};func _bda (_aa [3]int )*code {return &code {_af :_aa [0],_afd :_aa [1],_ab :_aa [2]}};
func _df (_ae ,_eb int )int {if _ae > _eb {return _eb ;};return _ae ;};func (_dd *Decoder )UncompressMMR ()(_dbb *_e .Bitmap ,_cb error ){_dbb =_e .New (_dd ._gcf ,_dd ._gb );_aeb :=make ([]int ,_dbb .Width +5);_ebc :=make ([]int ,_dbb .Width +5);_ebc [0]=_dbb .Width ;
_da :=1;var _dde int ;for _fbb :=0;_fbb < _dbb .Height ;_fbb ++{_dde ,_cb =_dd .uncompress2d (_dd ._cg ,_ebc ,_da ,_aeb ,_dbb .Width );if _cb !=nil {return nil ,_cb ;};if _dde ==EOF {break ;};if _dde > 0{_cb =_dd .fillBitmap (_dbb ,_fbb ,_aeb ,_dde );if _cb !=nil {return nil ,_cb ;
};};_ebc ,_aeb =_aeb ,_ebc ;_da =_dde ;};if _cb =_dd .detectAndSkipEOL ();_cb !=nil {return nil ,_cb ;};_dd ._cg .align ();return _dbb ,nil ;};func (_dg *code )String ()string {return _b .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_dg ._af ,_dg ._afd ,_dg ._ab );
};func (_ga *Decoder )uncompress1d (_dddd *runData ,_adf []int ,_dfc int )(int ,error ){var (_aff =true ;_ge int ;_ee *code ;_gff int ;_ddc error ;);_aba :for _ge < _dfc {_fd :for {if _aff {_ee ,_ddc =_dddd .uncompressGetCode (_ga ._abb );if _ddc !=nil {return 0,_ddc ;
};}else {_ee ,_ddc =_dddd .uncompressGetCode (_ga ._fcg );if _ddc !=nil {return 0,_ddc ;};};_dddd ._daab +=_ee ._af ;if _ee ._ab < 0{break _aba ;};_ge +=_ee ._ab ;if _ee ._ab < 64{_aff =!_aff ;_adf [_gff ]=_ge ;_gff ++;break _fd ;};};};if _adf [_gff ]!=_dfc {_adf [_gff ]=_dfc ;
};_gfe :=EOL ;if _ee !=nil &&_ee ._ab !=EOL {_gfe =_gff ;};return _gfe ,nil ;};type mmrCode int ;func (_gcfd *Decoder )uncompress2d (_fde *runData ,_bdad []int ,_aadc int ,_bag []int ,_daa int )(int ,error ){var (_fca int ;_eea int ;_ddef int ;_gec =true ;
_fbf error ;_bcd *code ;);_bdad [_aadc ]=_daa ;_bdad [_aadc +1]=_daa ;_bdad [_aadc +2]=_daa +1;_bdad [_aadc +3]=_daa +1;_be :for _ddef < _daa {_bcd ,_fbf =_fde .uncompressGetCode (_gcfd ._gbg );if _fbf !=nil {return EOL ,nil ;};if _bcd ==nil {_fde ._daab ++;
break _be ;};_fde ._daab +=_bcd ._af ;switch mmrCode (_bcd ._ab ){case _bf :_ddef =_bdad [_fca ];case _aac :_ddef =_bdad [_fca ]+1;case _fc :_ddef =_bdad [_fca ]-1;case _c :for {var _ecg []*code ;if _gec {_ecg =_gcfd ._abb ;}else {_ecg =_gcfd ._fcg ;};
_bcd ,_fbf =_fde .uncompressGetCode (_ecg );if _fbf !=nil {return 0,_fbf ;};if _bcd ==nil {break _be ;};_fde ._daab +=_bcd ._af ;if _bcd ._ab < 64{if _bcd ._ab < 0{_bag [_eea ]=_ddef ;_eea ++;_bcd =nil ;break _be ;};_ddef +=_bcd ._ab ;_bag [_eea ]=_ddef ;
_eea ++;break ;};_ddef +=_bcd ._ab ;};_fbc :=_ddef ;_abf :for {var _eab []*code ;if !_gec {_eab =_gcfd ._abb ;}else {_eab =_gcfd ._fcg ;};_bcd ,_fbf =_fde .uncompressGetCode (_eab );if _fbf !=nil {return 0,_fbf ;};if _bcd ==nil {break _be ;};_fde ._daab +=_bcd ._af ;
if _bcd ._ab < 64{if _bcd ._ab < 0{_bag [_eea ]=_ddef ;_eea ++;break _be ;};_ddef +=_bcd ._ab ;if _ddef < _daa ||_ddef !=_fbc {_bag [_eea ]=_ddef ;_eea ++;};break _abf ;};_ddef +=_bcd ._ab ;};for _ddef < _daa &&_bdad [_fca ]<=_ddef {_fca +=2;};continue _be ;
case _g :_fca ++;_ddef =_bdad [_fca ];_fca ++;continue _be ;case _fe :_ddef =_bdad [_fca ]+2;case _ebb :_ddef =_bdad [_fca ]-2;case _bc :_ddef =_bdad [_fca ]+3;case _afg :_ddef =_bdad [_fca ]-3;default:if _fde ._daab ==12&&_bcd ._ab ==EOL {_fde ._daab =0;
if _ ,_fbf =_gcfd .uncompress1d (_fde ,_bdad ,_daa );_fbf !=nil {return 0,_fbf ;};_fde ._daab ++;if _ ,_fbf =_gcfd .uncompress1d (_fde ,_bag ,_daa );_fbf !=nil {return 0,_fbf ;};_dbf ,_ce :=_gcfd .uncompress1d (_fde ,_bdad ,_daa );if _ce !=nil {return EOF ,_ce ;
};_fde ._daab ++;return _dbf ,nil ;};_ddef =_daa ;continue _be ;};if _ddef <=_daa {_gec =!_gec ;_bag [_eea ]=_ddef ;_eea ++;if _fca > 0{_fca --;}else {_fca ++;};for _ddef < _daa &&_bdad [_fca ]<=_ddef {_fca +=2;};};};if _bag [_eea ]!=_daa {_bag [_eea ]=_daa ;
};if _bcd ==nil {return EOL ,nil ;};return _eea ,nil ;};const (_g mmrCode =iota ;_c ;_bf ;_aac ;_fe ;_bc ;_fc ;_ebb ;_afg ;_afdb ;_de ;);func (_dge *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_fcf :=_dge ._daab -_dge ._dade ;if _fcf < 0||_fcf > 24{_cc :=(_dge ._daab >>3)-_dge ._fbbe ;
if _cc >=_dge ._cad {_cc +=_dge ._fbbe ;if _fgf :=_dge .fillBuffer (_cc );_fgf !=nil {return 0,_fgf ;};_cc -=_dge ._fbbe ;};_fgd :=(uint32 (_dge ._bbf [_cc ]&0xFF)<<16)|(uint32 (_dge ._bbf [_cc +1]&0xFF)<<8)|(uint32 (_dge ._bbf [_cc +2]&0xFF));_dca :=uint32 (_dge ._daab &7);
_fgd <<=_dca ;_dge ._dbc =int (_fgd );}else {_bcc :=_dge ._dade &7;_cdf :=7-_bcc ;if _fcf <=_cdf {_dge ._dbc <<=uint (_fcf );}else {_dbae :=(_dge ._dade >>3)+3-_dge ._fbbe ;if _dbae >=_dge ._cad {_dbae +=_dge ._fbbe ;if _ddf :=_dge .fillBuffer (_dbae );
_ddf !=nil {return 0,_ddf ;};_dbae -=_dge ._fbbe ;};_bcc =8-_bcc ;for {_dge ._dbc <<=uint (_bcc );_dge ._dbc |=int (uint (_dge ._bbf [_dbae ])&0xFF);_fcf -=_bcc ;_dbae ++;_bcc =8;if !(_fcf >=8){break ;};};_dge ._dbc <<=uint (_fcf );};};_dge ._dade =_dge ._daab ;
return _dge ._dbc ,nil ;};func (_cgf *runData )uncompressGetCode (_dcb []*code )(*code ,error ){return _cgf .uncompressGetCodeLittleEndian (_dcb );};const (_eg int =1024<<7;_cdb int =3;_geg uint =24;);func (_aaf *Decoder )fillBitmap (_dfa *_e .Bitmap ,_fba int ,_ede []int ,_ea int )error {var _fbad byte ;
_cd :=0;_cbc :=_dfa .GetByteIndex (_cd ,_fba );for _dee :=0;_dee < _ea ;_dee ++{_dded :=byte (1);_gf :=_ede [_dee ];if (_dee &1)==0{_dded =0;};for _cd < _gf {_fbad =(_fbad <<1)|_dded ;_cd ++;if (_cd &7)==0{if _adb :=_dfa .SetByte (_cbc ,_fbad );_adb !=nil {return _adb ;
};_cbc ++;_fbad =0;};};};if (_cd &7)!=0{_fbad <<=uint (8-(_cd &7));if _bb :=_dfa .SetByte (_cbc ,_fbad );_bb !=nil {return _bb ;};};return nil ;};const (EOF =-3;_ffa =-2;EOL =-1;_ffe =8;_abg =(1<<_ffe )-1;_fg =5;_ba =(1<<_fg )-1;);func (_deb *Decoder )detectAndSkipEOL ()error {for {_ecda ,_dc :=_deb ._cg .uncompressGetCode (_deb ._gbg );
if _dc !=nil {return _dc ;};if _ecda !=nil &&_ecda ._ab ==EOL {_deb ._cg ._daab +=_ecda ._af ;}else {return nil ;};};};func (_bce *Decoder )initTables ()(_ead error ){if _bce ._abb ==nil {_bce ._abb ,_ead =_bce .createLittleEndianTable (_ef );if _ead !=nil {return ;
};_bce ._fcg ,_ead =_bce .createLittleEndianTable (_db );if _ead !=nil {return ;};_bce ._gbg ,_ead =_bce .createLittleEndianTable (_gc );if _ead !=nil {return ;};};return nil ;};type code struct{_af int ;_afd int ;_ab int ;_fb []*code ;_abe bool ;};var (_gc =[][3]int {{4,0x1,int (_g )},{3,0x1,int (_c )},{1,0x1,int (_bf )},{3,0x3,int (_aac )},{6,0x3,int (_fe )},{7,0x3,int (_bc )},{3,0x2,int (_fc )},{6,0x2,int (_ebb )},{7,0x2,int (_afg )},{10,0xf,int (_afdb )},{12,0xf,int (_de )},{12,0x1,int (EOL )}};
_ef =[][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,_ffa },{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,_ffa },{11,0x01,_ffa },{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}};
_db =[][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,_ffa },{9,0x18,15},{10,0x01,_ffa },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_ffa },{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 New (r _d .StreamReader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_ec :=&Decoder {_gcf :width ,_gb :height };_aad ,_dba :=_d .NewSubstreamReader (r ,uint64 (dataOffset ),uint64 (dataLength ));if _dba !=nil {return nil ,_dba ;
};_aeg ,_dba :=_gfb (_aad );if _dba !=nil {return nil ,_dba ;};_ec ._cg =_aeg ;if _cgg :=_ec .initTables ();_cgg !=nil {return nil ,_cgg ;};return _ec ,nil ;};func _gfb (_ffac *_d .SubstreamReader )(*runData ,error ){_eabe :=&runData {_fee :_ffac ,_daab :0,_dade :1};
_dac :=_df (_dgg (_cdb ,int (_ffac .Length ())),_eg );_eabe ._bbf =make ([]byte ,_dac );if _caa :=_eabe .fillBuffer (0);_caa !=nil {if _caa ==_ff .EOF {_eabe ._bbf =make ([]byte ,10);_bd .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_caa );
}else {return nil ,_caa ;};};return _eabe ,nil ;};func (_ac *Decoder )createLittleEndianTable (_ecd [][3]int )([]*code ,error ){_cbb :=make ([]*code ,_abg +1);for _eba :=0;_eba < len (_ecd );_eba ++{_gd :=_bda (_ecd [_eba ]);if _gd ._af <=_ffe {_gbb :=_ffe -_gd ._af ;
_cgb :=_gd ._afd <<uint (_gbb );for _dec :=(1<<uint (_gbb ))-1;_dec >=0;_dec --{_dad :=_cgb |_dec ;_cbb [_dad ]=_gd ;};}else {_ddd :=_gd ._afd >>uint (_gd ._af -_ffe );if _cbb [_ddd ]==nil {var _ca =_bda ([3]int {});_ca ._fb =make ([]*code ,_ba +1);_cbb [_ddd ]=_ca ;
};if _gd ._af <=_ffe +_fg {_ade :=_ffe +_fg -_gd ._af ;_ecf :=(_gd ._afd <<uint (_ade ))&_ba ;_cbb [_ddd ]._abe =true ;for _fcge :=(1<<uint (_ade ))-1;_fcge >=0;_fcge --{_cbb [_ddd ]._fb [_ecf |_fcge ]=_gd ;};}else {return nil ,_a .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 _cbb ,nil ;};