12 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/
2020-08-31 21:12:07 +00:00
package mmr ;import (_b "errors";_c "fmt";_ac "github.com/unidoc/unipdf/v3/common";_a "github.com/unidoc/unipdf/v3/internal/bitwise";_g "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_eg "io";);func (_fd *Decoder )UncompressMMR ()(_ce *_g .Bitmap ,_gfd error ){_ce =_g .New (_fd ._dc ,_fd ._fba );_dcd :=make ([]int ,_ce .Width +5);_cb :=make ([]int ,_ce .Width +5);_cb [0]=_ce .Width ;_eb :=1;var _ede int ;for _ga :=0;_ga < _ce .Height ;_ga ++{_ede ,_gfd =_fd .uncompress2d (_fd ._da ,_cb ,_eb ,_dcd ,_ce .Width );if _gfd !=nil {return nil ,_gfd ;};if _ede ==EOF {break ;};if _ede > 0{_gfd =_fd .fillBitmap (_ce ,_ga ,_dcd ,_ede );if _gfd !=nil {return nil ,_gfd ;};};_cb ,_dcd =_dcd ,_cb ;_eb =_ede ;};if _gfd =_fd .detectAndSkipEOL ();_gfd !=nil {return nil ,_gfd ;};_fd ._da .align ();return _ce ,nil ;};const (_aef mmrCode =iota ;_fa ;_fb ;_ed ;_ag ;_eea ;_ba ;_ab ;_bf ;_ea ;_gd ;);func (_bca *Decoder )fillBitmap (_ef *_g .Bitmap ,_ffb int ,_ebe []int ,_faf int )error {var _bad byte ;_gfbb :=0;_ccd :=_ef .GetByteIndex (_gfbb ,_ffb );for _adb :=0;_adb < _faf ;_adb ++{_be :=byte (1);_acc :=_ebe [_adb ];if (_adb &1)==0{_be =0;};for _gfbb < _acc {_bad =(_bad <<1)|_be ;_gfbb ++;if (_gfbb &7)==0{if _ceg :=_ef .SetByte (_ccd ,_bad );_ceg !=nil {return _ceg ;};_ccd ++;_bad =0;};};};if (_gfbb &7)!=0{_bad <<=uint (8-(_gfbb &7));if _gba :=_ef .SetByte (_ccd ,_bad );_gba !=nil {return _gba ;};};return nil ;};func _ge (_ae [3]int )*code {return &code {_gb :_ae [0],_gf :_ae [1],_ee :_ae [2]}};func (_ecc *Decoder )detectAndSkipEOL ()error {for {_ff ,_fcef :=_ecc ._da .uncompressGetCode (_ecc ._bb );if _fcef !=nil {return _fcef ;};if _ff !=nil &&_ff ._ee ==EOL {_ecc ._da ._eccb +=_ff ._gb ;}else {return nil ;};};};func (_ddad *runData )uncompressGetCode (_aeg []*code )(*code ,error ){return _ddad .uncompressGetCodeLittleEndian (_aeg );};type Decoder struct{_dc ,_fba int ;_da *runData ;_de []*code ;_gc []*code ;_bb []*code ;};func (_ded *Decoder )uncompress2d (_dec *runData ,_ced []int ,_gea int ,_aedd []int ,_ged int )(int ,error ){var (_dda int ;_aba int ;_afc int ;_bba =true ;_ada error ;_abb *code ;);_ced [_gea ]=_ged ;_ced [_gea +1]=_ged ;_ced [_gea +2]=_ged +1;_ced [_gea +3]=_ged +1;_ddf :for _afc < _ged {_abb ,_ada =_dec .uncompressGetCode (_ded ._bb );if _ada !=nil {return EOL ,nil ;};if _abb ==nil {_dec ._eccb ++;break _ddf ;};_dec ._eccb +=_abb ._gb ;switch mmrCode (_abb ._ee ){case _fb :_afc =_ced [_dda ];case _ed :_afc =_ced [_dda ]+1;case _ba :_afc =_ced [_dda ]-1;case _fa :_cbd :=1;for _cbd > 0{var _efg []*code ;if _bba {_efg =_ded ._de ;}else {_efg =_ded ._gc ;};_abb ,_ada =_dec .uncompressGetCode (_efg );if _ada !=nil {return 0,_ada ;};if _abb ==nil {break _ddf ;};_dec ._eccb +=_abb ._gb ;if _abb ._ee < 64{if _abb ._ee < 0{_aedd [_aba ]=_afc ;_aba ++;_abb =nil ;break _ddf ;};_afc +=_abb ._ee ;_aedd [_aba ]=_afc ;_aba ++;break ;};_afc +=_abb ._ee ;};_efc :=_afc ;_cag :=1;_adab :for _cag > 0{var _agd []*code ;if !_bba {_agd =_ded ._de ;}else {_agd =_ded ._gc ;};_abb ,_ada =_dec .uncompressGetCode (_agd );if _ada !=nil {return 0,_ada ;};if _abb ==nil {break _ddf ;};_dec ._eccb +=_abb ._gb ;if _abb ._ee < 64{if _abb ._ee < 0{_aedd [_aba ]=_afc ;_aba ++;break _ddf ;};_afc +=_abb ._ee ;if _afc < _ged ||_afc !=_efc {_aedd [_aba ]=_afc ;_aba ++;};break _adab ;};_afc +=_abb ._ee ;};for _afc < _ged &&_ced [_dda ]<=_afc {_dda +=2;};continue _ddf ;case _aef :_dda ++;_afc =_ced [_dda ];_dda ++;continue _ddf ;case _ag :_afc =_ced [_dda ]+2;case _ab :_afc =_ced [_dda ]-2;case _eea :_afc =_ced [_dda ]+3;case _bf :_afc =_ced [_dda ]-3;default:if _dec ._eccb ==12&&_abb ._ee ==EOL {_dec ._eccb =0;if _ ,_ada =_ded .uncompress1d (_dec ,_ced ,_ged );_ada !=nil {return 0,_ada ;};_dec ._eccb ++;if _ ,_ada =_ded .uncompress1d (_dec ,_aedd ,_ged );_ada !=nil {return 0,_ada ;};_ead ,_eda :=_ded .uncompress1d (_dec ,_ced ,_ged );if _eda !=nil {return EOF ,_eda ;};_dec ._eccb ++;return _ead ,nil ;};_afc =_ged ;continue _ddf ;};if _afc <=_ged {_bba =!_bba ;_aedd [_aba ]=_afc ;_aba ++;if _dda > 0{_dda --;}else {_dda ++;};for _afc < _ged &&_ced [_dda ]<