2020-10-19 10:58:10 +00:00
|
|
|
package bitmap ;import (_dbg "encoding/binary";_d "github.com/stretchr/testify/require";_bf "github.com/unidoc/unipdf/v3/common";_gd "github.com/unidoc/unipdf/v3/internal/bitwise";_g "github.com/unidoc/unipdf/v3/internal/imageutil";_db "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_e "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_f "image";_b "math";_dg "sort";_ec "strings";_ea "testing";);func TstWriteSymbols (t *_ea .T ,bms *Bitmaps ,src *Bitmap ){for _gabfe :=0;_gabfe < bms .Size ();_gabfe ++{_beed :=bms .Values [_gabfe ];_cacde :=bms .Boxes [_gabfe ];_agge :=src .RasterOperation (_cacde .Min .X ,_cacde .Min .Y ,_beed .Width ,_beed .Height ,PixSrc ,_beed ,0,0);_d .NoError (t ,_agge );};};func (_cabc Points )GetIntY (i int )(int ,error ){if i >=len (_cabc ){return 0,_e .Errorf ("\u0050\u006f\u0069\u006e\u0074\u0073\u002e\u0047\u0065t\u0049\u006e\u0074\u0059","\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );};return int (_cabc [i ].Y ),nil ;};func (_fcgc *ClassedPoints )Less (i ,j int )bool {return _fcgc ._ccea (i ,j )};func (_gcfc *Bitmap )String ()string {var _acge ="\u000a";for _ege :=0;_ege < _gcfc .Height ;_ege ++{var _fcea string ;for _egad :=0;_egad < _gcfc .Width ;_egad ++{_fae :=_gcfc .GetPixel (_egad ,_ege );if _fae {_fcea +="\u0031";}else {_fcea +="\u0030";};};_acge +=_fcea +"\u000a";};return _acge ;};func (_cef *Bitmap )addBorderGeneral (_gfaf ,_bbf ,_ffd ,_abe int ,_dfadf int )(*Bitmap ,error ){const _bbeb ="\u0061\u0064d\u0042\u006f\u0072d\u0065\u0072\u0047\u0065\u006e\u0065\u0072\u0061\u006c";if _gfaf < 0||_bbf < 0||_ffd < 0||_abe < 0{return nil ,_e .Error (_bbeb ,"n\u0065\u0067\u0061\u0074iv\u0065 \u0062\u006f\u0072\u0064\u0065r\u0020\u0061\u0064\u0064\u0065\u0064");};_acf ,_cfa :=_cef .Width ,_cef .Height ;_dec :=_acf +_gfaf +_bbf ;_degb :=_cfa +_ffd +_abe ;_ffa :=New (_dec ,_degb );_ffa .Color =_cef .Color ;_dag :=PixClr ;if _dfadf > 0{_dag =PixSet ;};_deca :=_ffa .RasterOperation (0,0,_gfaf ,_degb ,_dag ,nil ,0,0);if _deca !=nil {return nil ,_e .Wrap (_deca ,_bbeb ,"\u006c\u0065\u0066\u0074");};_deca =_ffa .RasterOperation (_dec -_bbf ,0,_bbf ,_degb ,_dag ,nil ,0,0);if _deca !=nil {return nil ,_e .Wrap (_deca ,_bbeb ,"\u0072\u0069\u0067h\u0074");};_deca =_ffa .RasterOperation (0,0,_dec ,_ffd ,_dag ,nil ,0,0);if _deca !=nil {return nil ,_e .Wrap (_deca ,_bbeb ,"\u0074\u006f\u0070");};_deca =_ffa .RasterOperation (0,_degb -_abe ,_dec ,_abe ,_dag ,nil ,0,0);if _deca !=nil {return nil ,_e .Wrap (_deca ,_bbeb ,"\u0062\u006f\u0074\u0074\u006f\u006d");};_deca =_ffa .RasterOperation (_gfaf ,_ffd ,_acf ,_cfa ,PixSrc ,_cef ,0,0);if _deca !=nil {return nil ,_e .Wrap (_deca ,_bbeb ,"\u0063\u006f\u0070\u0079");};return _ffa ,nil ;};type Boxes []*_f .Rectangle ;func (_afa *Bitmap )GetBitOffset (x int )int {return x &0x07};func _efce (_fbdae *Bitmap ,_gggc ...MorphProcess )(_efdb *Bitmap ,_bbdbe error ){const _fgag ="\u006d\u006f\u0072\u0070\u0068\u0053\u0065\u0071\u0075\u0065\u006e\u0063\u0065";if _fbdae ==nil {return nil ,_e .Error (_fgag ,"\u006d\u006f\u0072\u0070\u0068\u0053\u0065\u0071\u0075\u0065\u006e\u0063\u0065 \u0073\u006f\u0075\u0072\u0063\u0065 \u0062\u0069\u0074\u006d\u0061\u0070\u0020\u006e\u006f\u0074\u0020\u0064\u0065f\u0069\u006e\u0065\u0064");};if len (_gggc )==0{return nil ,_e .Error (_fgag ,"m\u006f\u0072\u0070\u0068\u0053\u0065q\u0075\u0065\u006e\u0063\u0065\u002c \u0073\u0065\u0071\u0075\u0065\u006e\u0063e\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006ee\u0064");};if _bbdbe =_bee (_gggc ...);_bbdbe !=nil {return nil ,_e .Wrap (_bbdbe ,_fgag ,"");};var _aaba ,_dcbf ,_eagb int ;_efdb =_fbdae .Copy ();for _ ,_ecdbe :=range _gggc {switch _ecdbe .Operation {case MopDilation :_aaba ,_dcbf =_ecdbe .getWidthHeight ();_efdb ,_bbdbe =DilateBrick (nil ,_efdb ,_aaba ,_dcbf );if _bbdbe !=nil {return nil ,_e .Wrap (_bbdbe ,_fgag ,"");};case MopErosion :_aaba ,_dcbf =_ecdbe .getWidthHeight ();_efdb ,_bbdbe =_feacg (nil ,_efdb ,_aaba ,_dcbf );if _bbdbe !=nil {return nil ,_e .Wrap (_bbdbe ,_fgag ,
|