49 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/
2021-08-13 01:33:42 +00:00
package mmr ;import (_c "errors";_b "fmt";_e "github.com/unidoc/unipdf/v3/common";_g "github.com/unidoc/unipdf/v3/internal/bitwise";_be "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_f "io";);const (_ge mmrCode =iota ;_bc ;_cgd ;_dd ;_fg ;_aa ;_bf ;
_ef ;_ce ;_ee ;_ba ;);func (_efae *Decoder )detectAndSkipEOL ()error {for {_ff ,_dg :=_efae ._ddg .uncompressGetCode (_efae ._bcd );if _dg !=nil {return _dg ;};if _ff !=nil &&_ff ._ad ==EOL {_efae ._ddg ._cdc +=_ff ._d ;}else {return nil ;};};};func (_cg *code )String ()string {return _b .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_cg ._d ,_cg ._ae ,_cg ._ad );
};type Decoder struct{_ca ,_bg int ;_ddg *runData ;_baf []*code ;_gf []*code ;_bcd []*code ;};func (_ggcf *Decoder )initTables ()(_dbd error ){if _ggcf ._baf ==nil {_ggcf ._baf ,_dbd =_ggcf .createLittleEndianTable (_ea );if _dbd !=nil {return ;};_ggcf ._gf ,_dbd =_ggcf .createLittleEndianTable (_ggc );
if _dbd !=nil {return ;};_ggcf ._bcd ,_dbd =_ggcf .createLittleEndianTable (_dc );if _dbd !=nil {return ;};};return nil ;};func _eg (_bb ,_cgb int )int {if _bb < _cgb {return _cgb ;};return _bb ;};func (_fdd *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_daa :=_fdd ._cdc -_fdd ._baeg ;
if _daa < 0||_daa > 24{_gdc :=(_fdd ._cdc >>3)-_fdd ._fc ;if _gdc >=_fdd ._gca {_gdc +=_fdd ._fc ;if _geeb :=_fdd .fillBuffer (_gdc );_geeb !=nil {return 0,_geeb ;};_gdc -=_fdd ._fc ;};_ggcd :=(uint32 (_fdd ._gfc [_gdc ]&0xFF)<<16)|(uint32 (_fdd ._gfc [_gdc +1]&0xFF)<<8)|(uint32 (_fdd ._gfc [_gdc +2]&0xFF));
_fff :=uint32 (_fdd ._cdc &7);_ggcd <<=_fff ;_fdd ._fecd =int (_ggcd );}else {_gfb :=_fdd ._baeg &7;_bad :=7-_gfb ;if _daa <=_bad {_fdd ._fecd <<=uint (_daa );}else {_bea :=(_fdd ._baeg >>3)+3-_fdd ._fc ;if _bea >=_fdd ._gca {_bea +=_fdd ._fc ;if _cfge :=_fdd .fillBuffer (_bea );
_cfge !=nil {return 0,_cfge ;};_bea -=_fdd ._fc ;};_gfb =8-_gfb ;for {_fdd ._fecd <<=uint (_gfb );_fdd ._fecd |=int (uint (_fdd ._gfc [_bea ])&0xFF);_daa -=_gfb ;_bea ++;_gfb =8;if !(_daa >=8){break ;};};_fdd ._fecd <<=uint (_daa );};};_fdd ._baeg =_fdd ._cdc ;
return _fdd ._fecd ,nil ;};func (_efg *Decoder )createLittleEndianTable (_fe [][3]int )([]*code ,error ){_fec :=make ([]*code ,_ed +1);for _cga :=0;_cga < len (_fe );_cga ++{_eca :=_ac (_fe [_cga ]);if _eca ._d <=_bff {_db :=_bff -_eca ._d ;_ag :=_eca ._ae <<uint (_db );
for _fga :=(1<<uint (_db ))-1;_fga >=0;_fga --{_fa :=_ag |_fga ;_fec [_fa ]=_eca ;};}else {_efb :=_eca ._ae >>uint (_eca ._d -_bff );if _fec [_efb ]==nil {var _fea =_ac ([3]int {});_fea ._af =make ([]*code ,_cge +1);_fec [_efb ]=_fea ;};if _eca ._d <=_bff +_gee {_adf :=_bff +_gee -_eca ._d ;
_ecf :=(_eca ._ae <<uint (_adf ))&_cge ;_fec [_efb ]._cb =true ;for _aca :=(1<<uint (_adf ))-1;_aca >=0;_aca --{_fec [_efb ]._af [_ecf |_aca ]=_eca ;};}else {return nil ,_c .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 _fec ,nil ;};func (_cf *Decoder )uncompress1d (_ecc *runData ,_eea []int ,_cc int )(int ,error ){var (_cfg =true ;_bee int ;_eef *code ;_ffc int ;_bbf error ;);_da :for _bee < _cc {_fbe :for {if _cfg {_eef ,_bbf =_ecc .uncompressGetCode (_cf ._baf );
if _bbf !=nil {return 0,_bbf ;};}else {_eef ,_bbf =_ecc .uncompressGetCode (_cf ._gf );if _bbf !=nil {return 0,_bbf ;};};_ecc ._cdc +=_eef ._d ;if _eef ._ad < 0{break _da ;};_bee +=_eef ._ad ;if _eef ._ad < 64{_cfg =!_cfg ;_eea [_ffc ]=_bee ;_ffc ++;break _fbe ;
};};};if _eea [_ffc ]!=_cc {_eea [_ffc ]=_cc ;};_gbd :=EOL ;if _eef !=nil &&_eef ._ad !=EOL {_gbd =_ffc ;};return _gbd ,nil ;};type runData struct{_df *_g .SubstreamReader ;_cdc int ;_baeg int ;_fecd int ;_gfc []byte ;_fc int ;_gca int ;};func New (r _g .StreamReader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_gfe :=&Decoder {_ca :width ,_bg :height };
_ec ,_add :=_g .NewSubstreamReader (r ,uint64 (dataOffset ),uint64 (dataLength ));if _add !=nil {return nil ,_add ;};_ege ,_add :=_gag (_ec );if _add !=nil {return nil ,_add ;};_gfe ._ddg =_ege ;if _eff :=_gfe .initTables ();_eff !=nil {return nil ,_eff ;
};return _gfe ,nil ;};func (_ceg *Decoder )uncompress2d (_gbb *runData ,_bafe []int ,_cee int ,_ade []int ,_ab int )(int ,error ){var (_bbe int ;_abe int ;_cde int ;_bd =true ;_acf error ;_eb *code ;);_bafe [_cee ]=_ab ;_bafe [_cee +1]=_ab ;_bafe [_cee +2]=_ab +1;
_bafe [_cee +3]=_ab +1;_dgb :for _cde < _ab {_eb ,_acf =_gbb .uncompressGetCode (_ceg ._bcd );if _acf !=nil {return EOL ,nil ;};if _eb ==nil {_gbb ._cdc ++;break _dgb ;};_gbb ._cdc +=_eb ._d ;switch mmrCode (_eb ._ad ){case _cgd :_cde =_bafe [_bbe ];case _dd :_cde =_bafe [_bbe ]+1;
case _bf :_cde =_bafe [_bbe ]-1;case _bc :for {var _fdg []*code ;if _bd {_fdg =_ceg ._baf ;}else {_fdg =_ceg ._gf ;};_eb ,_acf =_gbb .uncompressGetCode (_fdg );if _acf !=nil {return 0,_acf ;};if _eb ==nil {break _dgb ;};_gbb ._cdc +=_eb ._d ;if _eb ._ad < 64{if _eb ._ad < 0{_ade [_abe ]=_cde ;
_abe ++;_eb =nil ;break _dgb ;};_cde +=_eb ._ad ;_ade [_abe ]=_cde ;_abe ++;break ;};_cde +=_eb ._ad ;};_dgf :=_cde ;_bae :for {var _adff []*code ;if !_bd {_adff =_ceg ._baf ;}else {_adff =_ceg ._gf ;};_eb ,_acf =_gbb .uncompressGetCode (_adff );if _acf !=nil {return 0,_acf ;
};if _eb ==nil {break _dgb ;};_gbb ._cdc +=_eb ._d ;if _eb ._ad < 64{if _eb ._ad < 0{_ade [_abe ]=_cde ;_abe ++;break _dgb ;};_cde +=_eb ._ad ;if _cde < _ab ||_cde !=_dgf {_ade [_abe ]=_cde ;_abe ++;};break _bae ;};_cde +=_eb ._ad ;};for _cde < _ab &&_bafe [_bbe ]<=_cde {_bbe +=2;
};continue _dgb ;case _ge :_bbe ++;_cde =_bafe [_bbe ];_bbe ++;continue _dgb ;case _fg :_cde =_bafe [_bbe ]+2;case _ef :_cde =_bafe [_bbe ]-2;case _aa :_cde =_bafe [_bbe ]+3;case _ce :_cde =_bafe [_bbe ]-3;default:if _gbb ._cdc ==12&&_eb ._ad ==EOL {_gbb ._cdc =0;
if _ ,_acf =_ceg .uncompress1d (_gbb ,_bafe ,_ab );_acf !=nil {return 0,_acf ;};_gbb ._cdc ++;if _ ,_acf =_ceg .uncompress1d (_gbb ,_ade ,_ab );_acf !=nil {return 0,_acf ;};_fed ,_egc :=_ceg .uncompress1d (_gbb ,_bafe ,_ab );if _egc !=nil {return EOF ,_egc ;
};_gbb ._cdc ++;return _fed ,nil ;};_cde =_ab ;continue _dgb ;};if _cde <=_ab {_bd =!_bd ;_ade [_abe ]=_cde ;_abe ++;if _bbe > 0{_bbe --;}else {_bbe ++;};for _cde < _ab &&_bafe [_bbe ]<=_cde {_bbe +=2;};};};if _ade [_abe ]!=_ab {_ade [_abe ]=_ab ;};if _eb ==nil {return EOL ,nil ;
};return _abe ,nil ;};func (_dcd *Decoder )fillBitmap (_cag *_be .Bitmap ,_ddb int ,_gc []int ,_dcdf int )error {var _caa byte ;_bef :=0;_dde :=_cag .GetByteIndex (_bef ,_ddb );for _gaa :=0;_gaa < _dcdf ;_gaa ++{_bffd :=byte (1);_eee :=_gc [_gaa ];if (_gaa &1)==0{_bffd =0;
};for _bef < _eee {_caa =(_caa <<1)|_bffd ;_bef ++;if (_bef &7)==0{if _gb :=_cag .SetByte (_dde ,_caa );_gb !=nil {return _gb ;};_dde ++;_caa =0;};};};if (_bef &7)!=0{_caa <<=uint (8-(_bef &7));if _bba :=_cag .SetByte (_dde ,_caa );_bba !=nil {return _bba ;
};};return nil ;};type code struct{_d int ;_ae int ;_ad int ;_af []*code ;_cb bool ;};func _ac (_fb [3]int )*code {return &code {_d :_fb [0],_ae :_fb [1],_ad :_fb [2]}};func _fd (_gg ,_bed int )int {if _gg > _bed {return _bed ;};return _gg ;};const (_geea int =1024<<7;
_gbbd int =3;_eae uint =24;);func (_cda *runData )fillBuffer (_gdd int )error {_cda ._fc =_gdd ;_ ,_ccgg :=_cda ._df .Seek (int64 (_gdd ),_f .SeekStart );if _ccgg !=nil {if _ccgg ==_f .EOF {_e .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");
_cda ._gca =-1;}else {return _ccgg ;};};if _ccgg ==nil {_cda ._gca ,_ccgg =_cda ._df .Read (_cda ._gfc );if _ccgg !=nil {if _ccgg ==_f .EOF {_e .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_cda ._gca =-1;}else {return _ccgg ;};};};if _cda ._gca > -1&&_cda ._gca < 3{for _cda ._gca < 3{_ddeg ,_ece :=_cda ._df .ReadByte ();
if _ece !=nil {if _ece ==_f .EOF {_cda ._gfc [_cda ._gca ]=0;}else {return _ece ;};}else {_cda ._gfc [_cda ._gca ]=_ddeg &0xFF;};_cda ._gca ++;};};_cda ._gca -=3;if _cda ._gca < 0{_cda ._gfc =make ([]byte ,len (_cda ._gfc ));_cda ._gca =len (_cda ._gfc )-3;
};return nil ;};type mmrCode int ;func _gag (_bbfb *_g .SubstreamReader )(*runData ,error ){_edef :=&runData {_df :_bbfb ,_cdc :0,_baeg :1};_caf :=_fd (_eg (_gbbd ,int (_bbfb .Length ())),_geea );_edef ._gfc =make ([]byte ,_caf );if _fcg :=_edef .fillBuffer (0);
_fcg !=nil {if _fcg ==_f .EOF {_edef ._gfc =make ([]byte ,10);_e .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_fcg );}else {return nil ,_fcg ;};};return _edef ,nil ;};func (_bcc *runData )align (){_bcc ._cdc =((_bcc ._cdc +7)>>3)<<3};
func (_efe *runData )uncompressGetCode (_gdb []*code )(*code ,error ){return _efe .uncompressGetCodeLittleEndian (_gdb );};func (_ede *Decoder )UncompressMMR ()(_efa *_be .Bitmap ,_bbg error ){_efa =_be .New (_ede ._ca ,_ede ._bg );_gd :=make ([]int ,_efa .Width +5);
_dcc :=make ([]int ,_efa .Width +5);_dcc [0]=_efa .Width ;_ga :=1;var _de int ;for _cd :=0;_cd < _efa .Height ;_cd ++{_de ,_bbg =_ede .uncompress2d (_ede ._ddg ,_dcc ,_ga ,_gd ,_efa .Width );if _bbg !=nil {return nil ,_bbg ;};if _de ==EOF {break ;};if _de > 0{_bbg =_ede .fillBitmap (_efa ,_cd ,_gd ,_de );
if _bbg !=nil {return nil ,_bbg ;};};_dcc ,_gd =_gd ,_dcc ;_ga =_de ;};if _bbg =_ede .detectAndSkipEOL ();_bbg !=nil {return nil ,_bbg ;};_ede ._ddg .align ();return _efa ,nil ;};func (_aad *runData )uncompressGetCodeLittleEndian (_ccg []*code )(*code ,error ){_egf ,_cba :=_aad .uncompressGetNextCodeLittleEndian ();
if _cba !=nil {_e .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",_cba );
return nil ,_cba ;};_egf &=0xffffff;_ecg :=_egf >>(_eae -_bff );_dgc :=_ccg [_ecg ];if _dgc !=nil &&_dgc ._cb {_ecg =(_egf >>(_eae -_bff -_gee ))&_cge ;_dgc =_dgc ._af [_ecg ];};return _dgc ,nil ;};var (_dc =[][3]int {{4,0x1,int (_ge )},{3,0x1,int (_bc )},{1,0x1,int (_cgd )},{3,0x3,int (_dd )},{6,0x3,int (_fg )},{7,0x3,int (_aa )},{3,0x2,int (_bf )},{6,0x2,int (_ef )},{7,0x2,int (_ce )},{10,0xf,int (_ee )},{12,0xf,int (_ba )},{12,0x1,int (EOL )}};
_ea =[][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,_ada },{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,_ada },{11,0x01,_ada },{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}};
_ggc =[][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,_ada },{9,0x18,15},{10,0x01,_ada },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_ada },{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}};
);const (EOF =-3;_ada =-2;EOL =-1;_bff =8;_ed =(1<<_bff )-1;_gee =5;_cge =(1<<_gee )-1;);