aboutsummaryrefslogtreecommitdiff
path: root/unipdf/internal/jbig2/decoder/mmr/mmr.go
diff options
context:
space:
mode:
authorleshe4ka46 <alex9102naid1@ya.ru>2025-10-19 14:47:59 +0300
committerleshe4ka46 <alex9102naid1@ya.ru>2025-10-19 14:47:59 +0300
commite17a425dfb3382310fb5863f516dacdca9f44956 (patch)
tree7babb3048d0eb20aa1e68e9b29c2acfa794ab96f /unipdf/internal/jbig2/decoder/mmr/mmr.go
parent091963a50c3bb2926f559f01c49e8f5bd03d2bfd (diff)
fuck the unipdf licencing
Diffstat (limited to 'unipdf/internal/jbig2/decoder/mmr/mmr.go')
-rw-r--r--unipdf/internal/jbig2/decoder/mmr/mmr.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/unipdf/internal/jbig2/decoder/mmr/mmr.go b/unipdf/internal/jbig2/decoder/mmr/mmr.go
new file mode 100644
index 0000000..7e003bf
--- /dev/null
+++ b/unipdf/internal/jbig2/decoder/mmr/mmr.go
@@ -0,0 +1,50 @@
+//
+// 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/
+
+package mmr ;import (_df "errors";_g "fmt";_c "github.com/unidoc/unipdf/v4/common";_ad "github.com/unidoc/unipdf/v4/internal/bitwise";_de "github.com/unidoc/unipdf/v4/internal/jbig2/bitmap";_a "io";);func New (r *_ad .Reader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_ce :=&Decoder {_ge :width ,_ebc :height };
+_ec ,_fe :=r .NewPartialReader (int (dataOffset ),int (dataLength ),false );if _fe !=nil {return nil ,_fe ;};_fd ,_fe :=_gdd (_ec );if _fe !=nil {return nil ,_fe ;};_ ,_fe =r .Seek (_ec .RelativePosition (),_a .SeekCurrent );if _fe !=nil {return nil ,_fe ;
+};_ce ._aga =_fd ;if _afb :=_ce .initTables ();_afb !=nil {return nil ,_afb ;};return _ce ,nil ;};var (_gca =[][3]int {{4,0x1,int (_db )},{3,0x1,int (_ed )},{1,0x1,int (_fa )},{3,0x3,int (_dec )},{6,0x3,int (_dd )},{7,0x3,int (_ddd )},{3,0x2,int (_eb )},{6,0x2,int (_ebf )},{7,0x2,int (_gc )},{10,0xf,int (_cf )},{12,0xf,int (_gbc )},{12,0x1,int (EOL )}};
+_agb =[][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,_da },{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,_da },{11,0x01,_da },{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}};
+_fgb =[][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,_da },{9,0x18,15},{10,0x01,_da },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_da },{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 (_gdf *runData )uncompressGetCode (_ddea []*code )(*code ,error ){return _gdf .uncompressGetCodeLittleEndian (_ddea );};func (_dde *Decoder )UncompressMMR ()(_eda *_de .Bitmap ,_cfb error ){_eda =_de .New (_dde ._ge ,_dde ._ebc );_ba :=make ([]int ,_eda .Width +5);
+_fdc :=make ([]int ,_eda .Width +5);_fdc [0]=_eda .Width ;_fga :=1;var _fc int ;for _ggf :=0;_ggf < _eda .Height ;_ggf ++{_fc ,_cfb =_dde .uncompress2d (_dde ._aga ,_fdc ,_fga ,_ba ,_eda .Width );if _cfb !=nil {return nil ,_cfb ;};if _fc ==EOF {break ;
+};if _fc > 0{_cfb =_dde .fillBitmap (_eda ,_ggf ,_ba ,_fc );if _cfb !=nil {return nil ,_cfb ;};};_fdc ,_ba =_ba ,_fdc ;_fga =_fc ;};if _cfb =_dde .detectAndSkipEOL ();_cfb !=nil {return nil ,_cfb ;};_dde ._aga .align ();return _eda ,nil ;};type runData struct{_febd *_ad .Reader ;
+_gcc int ;_ggcc int ;_eed int ;_fbg []byte ;_cef int ;_bcg int ;};func (_dbg *Decoder )fillBitmap (_ga *_de .Bitmap ,_bd int ,_daf []int ,_effg int )error {var _bgc byte ;_baa :=0;_gf :=_ga .GetByteIndex (_baa ,_bd );for _bc :=0;_bc < _effg ;_bc ++{_ff :=byte (1);
+_gd :=_daf [_bc ];if (_bc &1)==0{_ff =0;};for _baa < _gd {_bgc =(_bgc <<1)|_ff ;_baa ++;if (_baa &7)==0{if _gee :=_ga .SetByte (_gf ,_bgc );_gee !=nil {return _gee ;};_gf ++;_bgc =0;};};};if (_baa &7)!=0{_bgc <<=uint (8-(_baa &7));if _fbf :=_ga .SetByte (_gf ,_bgc );
+_fbf !=nil {return _fbf ;};};return nil ;};const (EOF =-3;_da =-2;EOL =-1;_ea =8;_be =(1<<_ea )-1;_cda =5;_fg =(1<<_cda )-1;);func (_bg *Decoder )createLittleEndianTable (_ded [][3]int )([]*code ,error ){_edd :=make ([]*code ,_be +1);for _ebcf :=0;_ebcf < len (_ded );
+_ebcf ++{_fcf :=_gb (_ded [_ebcf ]);if _fcf ._b <=_ea {_fb :=_ea -_fcf ._b ;_ef :=_fcf ._e <<uint (_fb );for _gbd :=(1<<uint (_fb ))-1;_gbd >=0;_gbd --{_abg :=_ef |_gbd ;_edd [_abg ]=_fcf ;};}else {_aea :=_fcf ._e >>uint (_fcf ._b -_ea );if _edd [_aea ]==nil {var _feb =_gb ([3]int {});
+_feb ._ag =make ([]*code ,_fg +1);_edd [_aea ]=_feb ;};if _fcf ._b <=_ea +_cda {_dad :=_ea +_cda -_fcf ._b ;_dee :=(_fcf ._e <<uint (_dad ))&_fg ;_edd [_aea ]._cd =true ;for _eff :=(1<<uint (_dad ))-1;_eff >=0;_eff --{_edd [_aea ]._ag [_dee |_eff ]=_fcf ;
+};}else {return nil ,_df .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 _edd ,nil ;};type mmrCode int ;
+type Decoder struct{_ge ,_ebc int ;_aga *runData ;_cdb []*code ;_cg []*code ;_af []*code ;};type code struct{_b int ;_e int ;_cb int ;_ag []*code ;_cd bool ;};func _adg (_dfe ,_f int )int {if _dfe < _f {return _f ;};return _dfe ;};func _gb (_ac [3]int )*code {return &code {_b :_ac [0],_e :_ac [1],_cb :_ac [2]}};
+const (_fab int =1024<<7;_cbc int =3;_eg uint =24;);func (_afc *Decoder )uncompress2d (_ffa *runData ,_gde []int ,_eae int ,_gge []int ,_fdg int )(int ,error ){var (_dfed int ;_ggaf int ;_gad int ;_feff =true ;_dca error ;_ebfc *code ;);_gde [_eae ]=_fdg ;
+_gde [_eae +1]=_fdg ;_gde [_eae +2]=_fdg +1;_gde [_eae +3]=_fdg +1;_cgb :for _gad < _fdg {_ebfc ,_dca =_ffa .uncompressGetCode (_afc ._af );if _dca !=nil {return EOL ,nil ;};if _ebfc ==nil {_ffa ._gcc ++;break _cgb ;};_ffa ._gcc +=_ebfc ._b ;switch mmrCode (_ebfc ._cb ){case _fa :_gad =_gde [_dfed ];
+case _dec :_gad =_gde [_dfed ]+1;case _eb :_gad =_gde [_dfed ]-1;case _ed :for {var _ddb []*code ;if _feff {_ddb =_afc ._cdb ;}else {_ddb =_afc ._cg ;};_ebfc ,_dca =_ffa .uncompressGetCode (_ddb );if _dca !=nil {return 0,_dca ;};if _ebfc ==nil {break _cgb ;
+};_ffa ._gcc +=_ebfc ._b ;if _ebfc ._cb < 64{if _ebfc ._cb < 0{_gge [_ggaf ]=_gad ;_ggaf ++;_ebfc =nil ;break _cgb ;};_gad +=_ebfc ._cb ;_gge [_ggaf ]=_gad ;_ggaf ++;break ;};_gad +=_ebfc ._cb ;};_ebb :=_gad ;_afa :for {var _aag []*code ;if !_feff {_aag =_afc ._cdb ;
+}else {_aag =_afc ._cg ;};_ebfc ,_dca =_ffa .uncompressGetCode (_aag );if _dca !=nil {return 0,_dca ;};if _ebfc ==nil {break _cgb ;};_ffa ._gcc +=_ebfc ._b ;if _ebfc ._cb < 64{if _ebfc ._cb < 0{_gge [_ggaf ]=_gad ;_ggaf ++;break _cgb ;};_gad +=_ebfc ._cb ;
+if _gad < _fdg ||_gad !=_ebb {_gge [_ggaf ]=_gad ;_ggaf ++;};break _afa ;};_gad +=_ebfc ._cb ;};for _gad < _fdg &&_gde [_dfed ]<=_gad {_dfed +=2;};continue _cgb ;case _db :_dfed ++;_gad =_gde [_dfed ];_dfed ++;continue _cgb ;case _dd :_gad =_gde [_dfed ]+2;
+case _ebf :_gad =_gde [_dfed ]-2;case _ddd :_gad =_gde [_dfed ]+3;case _gc :_gad =_gde [_dfed ]-3;default:if _ffa ._gcc ==12&&_ebfc ._cb ==EOL {_ffa ._gcc =0;if _ ,_dca =_afc .uncompress1d (_ffa ,_gde ,_fdg );_dca !=nil {return 0,_dca ;};_ffa ._gcc ++;
+if _ ,_dca =_afc .uncompress1d (_ffa ,_gge ,_fdg );_dca !=nil {return 0,_dca ;};_cc ,_ede :=_afc .uncompress1d (_ffa ,_gde ,_fdg );if _ede !=nil {return EOF ,_ede ;};_ffa ._gcc ++;return _cc ,nil ;};_gad =_fdg ;continue _cgb ;};if _gad <=_fdg {_feff =!_feff ;
+_gge [_ggaf ]=_gad ;_ggaf ++;if _dfed > 0{_dfed --;}else {_dfed ++;};for _gad < _fdg &&_gde [_dfed ]<=_gad {_dfed +=2;};};};if _gge [_ggaf ]!=_fdg {_gge [_ggaf ]=_fdg ;};if _ebfc ==nil {return EOL ,nil ;};return _ggaf ,nil ;};func (_afbc *Decoder )initTables ()(_dfd error ){if _afbc ._cdb ==nil {_afbc ._cdb ,_dfd =_afbc .createLittleEndianTable (_agb );
+if _dfd !=nil {return ;};_afbc ._cg ,_dfd =_afbc .createLittleEndianTable (_fgb );if _dfd !=nil {return ;};_afbc ._af ,_dfd =_afbc .createLittleEndianTable (_gca );if _dfd !=nil {return ;};};return nil ;};const (_db mmrCode =iota ;_ed ;_fa ;_dec ;_dd ;
+_ddd ;_eb ;_ebf ;_gc ;_cf ;_gbc ;);func (_gae *runData )fillBuffer (_dbgf int )error {_gae ._cef =_dbgf ;_ ,_dgb :=_gae ._febd .Seek (int64 (_dbgf ),_a .SeekStart );if _dgb !=nil {if _dgb ==_a .EOF {_c .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");
+_gae ._bcg =-1;}else {return _dgb ;};};if _dgb ==nil {_gae ._bcg ,_dgb =_gae ._febd .Read (_gae ._fbg );if _dgb !=nil {if _dgb ==_a .EOF {_c .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_gae ._bcg =-1;}else {return _dgb ;};};};if _gae ._bcg > -1&&_gae ._bcg < 3{for _gae ._bcg < 3{_dda ,_cdf :=_gae ._febd .ReadByte ();
+if _cdf !=nil {if _cdf ==_a .EOF {_gae ._fbg [_gae ._bcg ]=0;}else {return _cdf ;};}else {_gae ._fbg [_gae ._bcg ]=_dda &0xFF;};_gae ._bcg ++;};};_gae ._bcg -=3;if _gae ._bcg < 0{_gae ._fbg =make ([]byte ,len (_gae ._fbg ));_gae ._bcg =len (_gae ._fbg )-3;
+};return nil ;};func (_dc *Decoder )detectAndSkipEOL ()error {for {_abgd ,_aa :=_dc ._aga .uncompressGetCode (_dc ._af );if _aa !=nil {return _aa ;};if _abgd !=nil &&_abgd ._cb ==EOL {_dc ._aga ._gcc +=_abgd ._b ;}else {return nil ;};};};func _ae (_ab ,_dg int )int {if _ab > _dg {return _dg ;
+};return _ab ;};func (_cbb *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_dded :=_cbb ._gcc -_cbb ._ggcc ;if _dded < 0||_dded > 24{_afg :=(_cbb ._gcc >>3)-_cbb ._cef ;if _afg >=_cbb ._bcg {_afg +=_cbb ._cef ;if _ffeb :=_cbb .fillBuffer (_afg );
+_ffeb !=nil {return 0,_ffeb ;};_afg -=_cbb ._cef ;};_fafg :=(uint32 (_cbb ._fbg [_afg ]&0xFF)<<16)|(uint32 (_cbb ._fbg [_afg +1]&0xFF)<<8)|(uint32 (_cbb ._fbg [_afg +2]&0xFF));_gda :=uint32 (_cbb ._gcc &7);_fafg <<=_gda ;_cbb ._eed =int (_fafg );}else {_edb :=_cbb ._ggcc &7;
+_bb :=7-_edb ;if _dded <=_bb {_cbb ._eed <<=uint (_dded );}else {_bca :=(_cbb ._ggcc >>3)+3-_cbb ._cef ;if _bca >=_cbb ._bcg {_bca +=_cbb ._cef ;if _eec :=_cbb .fillBuffer (_bca );_eec !=nil {return 0,_eec ;};_bca -=_cbb ._cef ;};_edb =8-_edb ;for {_cbb ._eed <<=uint (_edb );
+_cbb ._eed |=int (uint (_cbb ._fbg [_bca ])&0xFF);_dded -=_edb ;_bca ++;_edb =8;if !(_dded >=8){break ;};};_cbb ._eed <<=uint (_dded );};};_cbb ._ggcc =_cbb ._gcc ;return _cbb ._eed ,nil ;};func (_dag *Decoder )uncompress1d (_bcf *runData ,_abc []int ,_fgd int )(int ,error ){var (_ffe =true ;
+_fef int ;_fbfd *code ;_bec int ;_ggc error ;);_edc :for _fef < _fgd {_gga :for {if _ffe {_fbfd ,_ggc =_bcf .uncompressGetCode (_dag ._cdb );if _ggc !=nil {return 0,_ggc ;};}else {_fbfd ,_ggc =_bcf .uncompressGetCode (_dag ._cg );if _ggc !=nil {return 0,_ggc ;
+};};_bcf ._gcc +=_fbfd ._b ;if _fbfd ._cb < 0{break _edc ;};_fef +=_fbfd ._cb ;if _fbfd ._cb < 64{_ffe =!_ffe ;_abc [_bec ]=_fef ;_bec ++;break _gga ;};};};if _abc [_bec ]!=_fgd {_abc [_bec ]=_fgd ;};_fbe :=EOL ;if _fbfd !=nil &&_fbfd ._cb !=EOL {_fbe =_bec ;
+};return _fbe ,nil ;};func _gdd (_fdd *_ad .Reader )(*runData ,error ){_ffc :=&runData {_febd :_fdd ,_gcc :0,_ggcc :1};_bge :=_ae (_adg (_cbc ,int (_fdd .Length ())),_fab );_ffc ._fbg =make ([]byte ,_bge );if _abcd :=_ffc .fillBuffer (0);_abcd !=nil {if _abcd ==_a .EOF {_ffc ._fbg =make ([]byte ,10);
+_c .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_abcd );}else {return nil ,_abcd ;};};return _ffc ,nil ;};func (_gg *code )String ()string {return _g .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_gg ._b ,_gg ._e ,_gg ._cb );
+};func (_dff *runData )align (){_dff ._gcc =((_dff ._gcc +7)>>3)<<3};func (_ecf *runData )uncompressGetCodeLittleEndian (_edf []*code )(*code ,error ){_edeg ,_faf :=_ecf .uncompressGetNextCodeLittleEndian ();if _faf !=nil {_c .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",_faf );
+return nil ,_faf ;};_edeg &=0xffffff;_abe :=_edeg >>(_eg -_ea );_efc :=_edf [_abe ];if _efc !=nil &&_efc ._cd {_abe =(_edeg >>(_eg -_ea -_cda ))&_fg ;_efc =_efc ._ag [_abe ];};return _efc ,nil ;}; \ No newline at end of file