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-05-31 17:17:31 +00:00
|
|
|
package mmr ;import (_bc "errors";_a "fmt";_ac "github.com/unidoc/unipdf/v3/common";_d "github.com/unidoc/unipdf/v3/internal/bitwise";_de "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_b "io";);func _eb (_be [3]int )*code {return &code {_bd :_be [0],_fd :_be [1],_fg :_be [2]}};
|
|
|
|
type Decoder struct{_cea ,_beg int ;_ebf *runData ;_ef []*code ;_ge []*code ;_bdc []*code ;};func (_gceb *runData )uncompressGetCode (_eca []*code )(*code ,error ){return _gceb .uncompressGetCodeLittleEndian (_eca );};type code struct{_bd int ;_fd int ;
|
|
|
|
_fg int ;_fb []*code ;_e bool ;};func (_fec *Decoder )uncompress1d (_cegb *runData ,_bdd []int ,_da int )(int ,error ){var (_dgd =true ;_ad int ;_cd *code ;_gb int ;_fea error ;);_aebg :for _ad < _da {_fbgf :for {if _dgd {_cd ,_fea =_cegb .uncompressGetCode (_fec ._ef );
|
|
|
|
if _fea !=nil {return 0,_fea ;};}else {_cd ,_fea =_cegb .uncompressGetCode (_fec ._ge );if _fea !=nil {return 0,_fea ;};};_cegb ._aga +=_cd ._bd ;if _cd ._fg < 0{break _aebg ;};_ad +=_cd ._fg ;if _cd ._fg < 64{_dgd =!_dgd ;_bdd [_gb ]=_ad ;_gb ++;break _fbgf ;
|
|
|
|
};};};if _bdd [_gb ]!=_da {_bdd [_gb ]=_da ;};_fgc :=EOL ;if _cd !=nil &&_cd ._fg !=EOL {_fgc =_gb ;};return _fgc ,nil ;};func (_ea *code )String ()string {return _a .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_ea ._bd ,_ea ._fd ,_ea ._fg );
|
|
|
|
};const (_gf mmrCode =iota ;_af ;_fbg ;_aeb ;_afd ;_ec ;_df ;_aca ;_fc ;_gfc ;_eg ;);type runData struct{_cfg *_d .SubstreamReader ;_aga int ;_acaa int ;_afg int ;_fbd []byte ;_eedd int ;_cdc int ;};var (_ebe =[][3]int {{4,0x1,int (_gf )},{3,0x1,int (_af )},{1,0x1,int (_fbg )},{3,0x3,int (_aeb )},{6,0x3,int (_afd )},{7,0x3,int (_ec )},{3,0x2,int (_df )},{6,0x2,int (_aca )},{7,0x2,int (_fc )},{10,0xf,int (_gfc )},{12,0xf,int (_eg )},{12,0x1,int (EOL )}};
|
|
|
|
_ce =[][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,_eac },{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,_eac },{11,0x01,_eac },{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}};
|
|
|
|
_bg =[][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,_eac },{9,0x18,15},{10,0x01,_eac },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_eac },{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 (_dcg *Decoder )initTables ()(_fcb error ){if _dcg ._ef ==nil {_dcg ._ef ,_fcb =_dcg .createLittleEndianTable (_ce );if _fcb !=nil {return ;};_dcg ._ge ,_fcb =_dcg .createLittleEndianTable (_bg );if _fcb !=nil {return ;};_dcg ._bdc ,_fcb =_dcg .createLittleEndianTable (_ebe );
|
|
|
|
if _fcb !=nil {return ;};};return nil ;};func (_gfa *runData )fillBuffer (_acaad int )error {_gfa ._eedd =_acaad ;_ ,_gcd :=_gfa ._cfg .Seek (int64 (_acaad ),_b .SeekStart );if _gcd !=nil {if _gcd ==_b .EOF {_ac .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");
|
|
|
|
_gfa ._cdc =-1;}else {return _gcd ;};};if _gcd ==nil {_gfa ._cdc ,_gcd =_gfa ._cfg .Read (_gfa ._fbd );if _gcd !=nil {if _gcd ==_b .EOF {_ac .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_gfa ._cdc =-1;}else {return _gcd ;};};};if _gfa ._cdc > -1&&_gfa ._cdc < 3{for _gfa ._cdc < 3{_efb ,_gde :=_gfa ._cfg .ReadByte ();
|
|
|
|
if _gde !=nil {if _gde ==_b .EOF {_gfa ._fbd [_gfa ._cdc ]=0;}else {return _gde ;};}else {_gfa ._fbd [_gfa ._cdc ]=_efb &0xFF;};_gfa ._cdc ++;};};_gfa ._cdc -=3;if _gfa ._cdc < 0{_gfa ._fbd =make ([]byte ,len (_gfa ._fbd ));_gfa ._cdc =len (_gfa ._fbd )-3;
|
|
|
|
};return nil ;};func New (r _d .StreamReader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_cf :=&Decoder {_cea :width ,_beg :height };_gg ,_cc :=_d .NewSubstreamReader (r ,uint64 (dataOffset ),uint64 (dataLength ));if _cc !=nil {return nil ,_cc ;
|
|
|
|
};_dge ,_cc :=_ca (_gg );if _cc !=nil {return nil ,_cc ;};_cf ._ebf =_dge ;if _cfc :=_cf .initTables ();_cfc !=nil {return nil ,_cfc ;};return _cf ,nil ;};func (_cdb *Decoder )uncompress2d (_bbg *runData ,_eec []int ,_ddg int ,_add []int ,_ccg int )(int ,error ){var (_bea int ;
|
|
|
|
_acabg int ;_adg int ;_aa =true ;_eea error ;_dde *code ;);_eec [_ddg ]=_ccg ;_eec [_ddg +1]=_ccg ;_eec [_ddg +2]=_ccg +1;_eec [_ddg +3]=_ccg +1;_dga :for _adg < _ccg {_dde ,_eea =_bbg .uncompressGetCode (_cdb ._bdc );if _eea !=nil {return EOL ,nil ;};
|
|
|
|
if _dde ==nil {_bbg ._aga ++;break _dga ;};_bbg ._aga +=_dde ._bd ;switch mmrCode (_dde ._fg ){case _fbg :_adg =_eec [_bea ];case _aeb :_adg =_eec [_bea ]+1;case _df :_adg =_eec [_bea ]-1;case _af :for {var _afc []*code ;if _aa {_afc =_cdb ._ef ;}else {_afc =_cdb ._ge ;
|
|
|
|
};_dde ,_eea =_bbg .uncompressGetCode (_afc );if _eea !=nil {return 0,_eea ;};if _dde ==nil {break _dga ;};_bbg ._aga +=_dde ._bd ;if _dde ._fg < 64{if _dde ._fg < 0{_add [_acabg ]=_adg ;_acabg ++;_dde =nil ;break _dga ;};_adg +=_dde ._fg ;_add [_acabg ]=_adg ;
|
|
|
|
_acabg ++;break ;};_adg +=_dde ._fg ;};_cge :=_adg ;_daf :for {var _fdd []*code ;if !_aa {_fdd =_cdb ._ef ;}else {_fdd =_cdb ._ge ;};_dde ,_eea =_bbg .uncompressGetCode (_fdd );if _eea !=nil {return 0,_eea ;};if _dde ==nil {break _dga ;};_bbg ._aga +=_dde ._bd ;
|
|
|
|
if _dde ._fg < 64{if _dde ._fg < 0{_add [_acabg ]=_adg ;_acabg ++;break _dga ;};_adg +=_dde ._fg ;if _adg < _ccg ||_adg !=_cge {_add [_acabg ]=_adg ;_acabg ++;};break _daf ;};_adg +=_dde ._fg ;};for _adg < _ccg &&_eec [_bea ]<=_adg {_bea +=2;};continue _dga ;
|
|
|
|
case _gf :_bea ++;_adg =_eec [_bea ];_bea ++;continue _dga ;case _afd :_adg =_eec [_bea ]+2;case _aca :_adg =_eec [_bea ]-2;case _ec :_adg =_eec [_bea ]+3;case _fc :_adg =_eec [_bea ]-3;default:if _bbg ._aga ==12&&_dde ._fg ==EOL {_bbg ._aga =0;if _ ,_eea =_cdb .uncompress1d (_bbg ,_eec ,_ccg );
|
|
|
|
_eea !=nil {return 0,_eea ;};_bbg ._aga ++;if _ ,_eea =_cdb .uncompress1d (_bbg ,_add ,_ccg );_eea !=nil {return 0,_eea ;};_fga ,_cedc :=_cdb .uncompress1d (_bbg ,_eec ,_ccg );if _cedc !=nil {return EOF ,_cedc ;};_bbg ._aga ++;return _fga ,nil ;};_adg =_ccg ;
|
|
|
|
continue _dga ;};if _adg <=_ccg {_aa =!_aa ;_add [_acabg ]=_adg ;_acabg ++;if _bea > 0{_bea --;}else {_bea ++;};for _adg < _ccg &&_eec [_bea ]<=_adg {_bea +=2;};};};if _add [_acabg ]!=_ccg {_add [_acabg ]=_ccg ;};if _dde ==nil {return EOL ,nil ;};return _acabg ,nil ;
|
|
|
|
};func _c (_ga ,_ae int )int {if _ga > _ae {return _ae ;};return _ga ;};func (_afdb *runData )align (){_afdb ._aga =((_afdb ._aga +7)>>3)<<3};func _g (_bcg ,_ded int )int {if _bcg < _ded {return _ded ;};return _bcg ;};func _ca (_eab *_d .SubstreamReader )(*runData ,error ){_ffd :=&runData {_cfg :_eab ,_aga :0,_acaa :1};
|
|
|
|
_eba :=_c (_g (_cegbc ,int (_eab .Length ())),_gag );_ffd ._fbd =make ([]byte ,_eba );if _caa :=_ffd .fillBuffer (0);_caa !=nil {if _caa ==_b .EOF {_ffd ._fbd =make ([]byte ,10);_ac .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 _ffd ,nil ;};const (EOF =-3;_eac =-2;EOL =-1;_gfd =8;_dg =(1<<_gfd )-1;_bb =5;_ee =(1<<_bb )-1;);type mmrCode int ;const (_gag int =1024<<7;_cegbc int =3;_fed uint =24;);func (_cef *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_fgb :=_cef ._aga -_cef ._acaa ;
|
|
|
|
if _fgb < 0||_fgb > 24{_fad :=(_cef ._aga >>3)-_cef ._eedd ;if _fad >=_cef ._cdc {_fad +=_cef ._eedd ;if _eabc :=_cef .fillBuffer (_fad );_eabc !=nil {return 0,_eabc ;};_fad -=_cef ._eedd ;};_gec :=(uint32 (_cef ._fbd [_fad ]&0xFF)<<16)|(uint32 (_cef ._fbd [_fad +1]&0xFF)<<8)|(uint32 (_cef ._fbd [_fad +2]&0xFF));
|
|
|
|
_faf :=uint32 (_cef ._aga &7);_gec <<=_faf ;_cef ._afg =int (_gec );}else {_fafc :=_cef ._acaa &7;_dgc :=7-_fafc ;if _fgb <=_dgc {_cef ._afg <<=uint (_fgb );}else {_dad :=(_cef ._acaa >>3)+3-_cef ._eedd ;if _dad >=_cef ._cdc {_dad +=_cef ._eedd ;if _bbe :=_cef .fillBuffer (_dad );
|
|
|
|
_bbe !=nil {return 0,_bbe ;};_dad -=_cef ._eedd ;};_fafc =8-_fafc ;for {_cef ._afg <<=uint (_fafc );_cef ._afg |=int (uint (_cef ._fbd [_dad ])&0xFF);_fgb -=_fafc ;_dad ++;_fafc =8;if !(_fgb >=8){break ;};};_cef ._afg <<=uint (_fgb );};};_cef ._acaa =_cef ._aga ;
|
|
|
|
return _cef ._afg ,nil ;};func (_fba *Decoder )createLittleEndianTable (_afdc [][3]int )([]*code ,error ){_db :=make ([]*code ,_dg +1);for _ab :=0;_ab < len (_afdc );_ab ++{_dbg :=_eb (_afdc [_ab ]);if _dbg ._bd <=_gfd {_eae :=_gfd -_dbg ._bd ;_ega :=_dbg ._fd <<uint (_eae );
|
|
|
|
for _cg :=(1<<uint (_eae ))-1;_cg >=0;_cg --{_fa :=_ega |_cg ;_db [_fa ]=_dbg ;};}else {_abe :=_dbg ._fd >>uint (_dbg ._bd -_gfd );if _db [_abe ]==nil {var _egeg =_eb ([3]int {});_egeg ._fb =make ([]*code ,_ee +1);_db [_abe ]=_egeg ;};if _dbg ._bd <=_gfd +_bb {_acab :=_gfd +_bb -_dbg ._bd ;
|
|
|
|
_aee :=(_dbg ._fd <<uint (_acab ))&_ee ;_db [_abe ]._e =true ;for _ag :=(1<<uint (_acab ))-1;_ag >=0;_ag --{_db [_abe ]._fb [_aee |_ag ]=_dbg ;};}else {return nil ,_bc .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 _db ,nil ;};func (_dd *Decoder )UncompressMMR ()(_bde *_de .Bitmap ,_gc error ){_bde =_de .New (_dd ._cea ,_dd ._beg );_fe :=make ([]int ,_bde .Width +5);_ceg :=make ([]int ,_bde .Width +5);_ceg [0]=_bde .Width ;_efe :=1;var _dc int ;for _ege :=0;
|
|
|
|
_ege < _bde .Height ;_ege ++{_dc ,_gc =_dd .uncompress2d (_dd ._ebf ,_ceg ,_efe ,_fe ,_bde .Width );if _gc !=nil {return nil ,_gc ;};if _dc ==EOF {break ;};if _dc > 0{_gc =_dd .fillBitmap (_bde ,_ege ,_fe ,_dc );if _gc !=nil {return nil ,_gc ;};};_ceg ,_fe =_fe ,_ceg ;
|
|
|
|
_efe =_dc ;};if _gc =_dd .detectAndSkipEOL ();_gc !=nil {return nil ,_gc ;};_dd ._ebf .align ();return _bde ,nil ;};func (_abg *Decoder )fillBitmap (_cb *_de .Bitmap ,_dea int ,_fge []int ,_eed int )error {var _bbf byte ;_gd :=0;_abc :=_cb .GetByteIndex (_gd ,_dea );
|
|
|
|
for _ba :=0;_ba < _eed ;_ba ++{_ced :=byte (1);_bca :=_fge [_ba ];if (_ba &1)==0{_ced =0;};for _gd < _bca {_bbf =(_bbf <<1)|_ced ;_gd ++;if (_gd &7)==0{if _ff :=_cb .SetByte (_abc ,_bbf );_ff !=nil {return _ff ;};_abc ++;_bbf =0;};};};if (_gd &7)!=0{_bbf <<=uint (8-(_gd &7));
|
|
|
|
if _ebd :=_cb .SetByte (_abc ,_bbf );_ebd !=nil {return _ebd ;};};return nil ;};func (_baa *runData )uncompressGetCodeLittleEndian (_cbf []*code )(*code ,error ){_cgd ,_ebc :=_baa .uncompressGetNextCodeLittleEndian ();if _ebc !=nil {_ac .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",_ebc );
|
|
|
|
return nil ,_ebc ;};_cgd &=0xffffff;_bf :=_cgd >>(_fed -_gfd );_eeca :=_cbf [_bf ];if _eeca !=nil &&_eeca ._e {_bf =(_cgd >>(_fed -_gfd -_bb ))&_ee ;_eeca =_eeca ._fb [_bf ];};return _eeca ,nil ;};func (_fbe *Decoder )detectAndSkipEOL ()error {for {_gce ,_aba :=_fbe ._ebf .uncompressGetCode (_fbe ._bdc );
|
|
|
|
if _aba !=nil {return _aba ;};if _gce !=nil &&_gce ._fg ==EOL {_fbe ._ebf ._aga +=_gce ._bd ;}else {return nil ;};};};
|