// // 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 imagerender ;import (_d "errors";_bd "fmt";_egb "github.com/golang/freetype/raster";_eg "github.com/unidoc/unipdf/v3/common";_dd "github.com/unidoc/unipdf/v3/internal/transform";_g "github.com/unidoc/unipdf/v3/render/internal/context";_fb "golang.org/x/image/draw";_gbb "golang.org/x/image/font";_gb "golang.org/x/image/math/f64";_cb "golang.org/x/image/math/fixed";_e "image";_a "image/color";_af "image/draw";_bf "math";_c "sort";_f "strings";);func (_dgc *solidPattern )ColorAt (x ,y int )_a .Color {return _dgc ._fgdc };func (_aeg *Context )SetDashOffset (offset float64 ){_aeg ._cab =offset };func (_dfd *Context )stroke (_fec _egb .Painter ){_bed :=_dfd ._bdf ;if len (_dfd ._efe )> 0{_bed =_efeg (_bed ,_dfd ._efe ,_dfd ._cab );}else {_bed =_fffea (_bdcdd (_bed ));};_gdge :=_dfd ._fda ;_gdge .UseNonZeroWinding =true ;_gdge .Clear ();_gdge .AddStroke (_bed ,_adab (_dfd ._cfe ),_dfd .capper (),_dfd .joiner ());_gdge .Rasterize (_fec );};func (_ede *Context )StrokePreserve (){var _cg _egb .Painter ;if _ede ._cca ==nil {if _fgd ,_eaa :=_ede ._aea .(*solidPattern );_eaa {_fbba :=_egb .NewRGBAPainter (_ede ._gcb );_fbba .SetColor (_fgd ._fgdc );_cg =_fbba ;};};if _cg ==nil {_cg =_eebbc (_ede ._gcb ,_ede ._cca ,_ede ._aea );};_ede .stroke (_cg );};func (_afa *Context )Clip (){_afa .ClipPreserve ();_afa .ClearPath ()};func (_ebc *Context )drawRegularPolygon (_dbf int ,_cbf ,_cec ,_aag ,_dfbd float64 ){_aga :=2*_bf .Pi /float64 (_dbf );_dfbd -=_bf .Pi /2;if _dbf %2==0{_dfbd +=_aga /2;};_ebc .NewSubPath ();for _acge :=0;_acge < _dbf ;_acge ++{_egcf :=_dfbd +_aga *float64 (_acge );_ebc .LineTo (_cbf +_aag *_bf .Cos (_egcf ),_cec +_aag *_bf .Sin (_egcf ));};_ebc .ClosePath ();};func (_fdb *Context )Scale (x ,y float64 ){_fdb ._bb .Scale (x ,y )};type linearGradient struct{_ggd ,_eabg ,_eea ,_fgc float64 ;_eeab stops ;};func (_eed *Context )LineWidth ()float64 {return _eed ._cfe };func _efa (_bcg [][]_dd .Point ,_bgcf []float64 ,_aeda float64 )[][]_dd .Point {var _gbee [][]_dd .Point ;if len (_bgcf )==0{return _bcg ;};if len (_bgcf )==1{_bgcf =append (_bgcf ,_bgcf [0]);};for _ ,_fag :=range _bcg {if len (_fag )< 2{continue ;};_gfcf :=_fag [0];_debc :=1;_bafb :=0;_aafc :=0.0;if _aeda !=0{var _dag float64 ;for _ ,_dff :=range _bgcf {_dag +=_dff ;};_aeda =_bf .Mod (_aeda ,_dag );if _aeda < 0{_aeda +=_dag ;};for _afe ,_efdgg :=range _bgcf {_aeda -=_efdgg ;if _aeda < 0{_bafb =_afe ;_aafc =_efdgg +_aeda ;break ;};};};var _bdce []_dd .Point ;_bdce =append (_bdce ,_gfcf );for _debc < len (_fag ){_dgag :=_bgcf [_bafb ];_dcfa :=_fag [_debc ];_cegc :=_gfcf .Distance (_dcfa );_bgfae :=_dgag -_aafc ;if _cegc > _bgfae {_gcfe :=_bgfae /_cegc ;_dfga :=_gfcf .Interpolate (_dcfa ,_gcfe );_bdce =append (_bdce ,_dfga );if _bafb %2==0&&len (_bdce )> 1{_gbee =append (_gbee ,_bdce );};_bdce =nil ;_bdce =append (_bdce ,_dfga );_aafc =0;_gfcf =_dfga ;_bafb =(_bafb +1)%len (_bgcf );}else {_bdce =append (_bdce ,_dcfa );_gfcf =_dcfa ;_aafc +=_cegc ;_debc ++;};};if _bafb %2==0&&len (_bdce )> 1{_gbee =append (_gbee ,_bdce );};};return _gbee ;};type Context struct{_eb int ;_gea int ;_fda *_egb .Rasterizer ;_gcb *_e .RGBA ;_cca *_e .Alpha ;_ad _a .Color ;_eef _g .Pattern ;_aea _g .Pattern ;_bdf _egb .Path ;_efc _egb .Path ;_fe _dd .Point ;_dge _dd .Point ;_cfc bool ;_efe []float64 ;_cab float64 ;_cfe float64 ;_dcf _g .LineCap ;_bgf _g .LineJoin ;_egc _g .FillRule ;_bb _dd .Matrix ;_gca *_g .TextState ;_da []*Context ;};type stops []stop ;func (_edf *Context )Rotate (angle float64 ){_edf ._bb .Rotate (angle )};func (_dba *Context )LineTo (x ,y float64 ){if !_dba ._cfc {_dba .MoveTo (x ,y );}else {x ,y =_dba .Transform (x ,y );_bcd :=_dd .NewPoint (x ,y );_deg :=_dggg (_bcd );_dba ._bdf .Add1 (_deg );_dba ._efc .Add1 (_deg );_dba ._dge =_bcd ;};};func (_bda *Context )SetFillRule (fillRule _g .FillRule ){_bda ._egc =fillRule };func (_eceg stops )Less (i ,j int )bool {return _eceg [i ]._eac < _eceg [j ]._eac };func _ccdc (_bgb ,_dfc ,_bc ,_cbg ,_db ,_dc ,_ecg ,_afb float64 )[]_dd .Point {_gaf :=(_bf .Hypot (_bc -_bgb ,_cbg -_dfc )+_bf .Hypot (_db -_bc ,_dc -_cbg )+_bf .Hypot (_ecg -_db ,_afb -_dc ));_ae :=int (_gaf +0.5);if _ae < 4{_ae =4;};_eeb :=float64 (_ae )-1;_gf :=make ([]_dd .Point ,_ae );for _fga :=0;_fga < _ae ;_fga ++{_ccda :=float64 (_fga )/_eeb ;_ag ,_fgag :=_ba (_bgb ,_dfc ,_bc ,_cbg ,_db ,_dc ,_ecg ,_afb ,_ccda );_gf [_fga ]=_dd .NewPoint (_ag ,_fgag );};return _gf ;};func (_fefc *Context )DrawLine (x1 ,y1 ,x2 ,y2 float64 ){_fefc .MoveTo (x1 ,y1 );_fefc .LineTo (x2 ,y2 )};func (_gec *Context )Shear (x ,y float64 ){_gec ._bb .Shear (x ,y )};func (_dgac *Context )ClipPreserve (){_cgc :=_e .NewAlpha (_e .Rect (0,0,_dgac ._eb ,_dgac ._gea ));_cgd :=_egb .NewAlphaOverPainter (_cgc );_dgac .fill (_cgd );if _dgac ._cca ==nil {_dgac ._cca =_cgc ;}else {_adb :=_e .NewAlpha (_e .Rect (0,0,_dgac ._eb ,_dgac ._gea ));_fb .DrawMask (_adb ,_adb .Bounds (),_cgc ,_e .ZP ,_dgac ._cca ,_e .ZP ,_fb .Over );_dgac ._cca =_adb ;};};type stop struct{_eac float64 ;_bfa _a .Color ;};func _adab (_fgdce float64 )_cb .Int26_6 {return _cb .Int26_6 (_fgdce *64)};func _eebbc (_efg *_e .RGBA ,_bfca *_e .Alpha ,_dcg _g .Pattern )*patternPainter {return &patternPainter {_efg ,_bfca ,_dcg };};type solidPattern struct{_fgdc _a .Color };func (_fac *Context )Image ()_e .Image {return _fac ._gcb };func (_bbd *Context )DrawArc (x ,y ,r ,angle1 ,angle2 float64 ){_bbd .DrawEllipticalArc (x ,y ,r ,r ,angle1 ,angle2 );};func (_dgga *Context )AsMask ()*_e .Alpha {_fgf :=_e .NewAlpha (_dgga ._gcb .Bounds ());_fb .Draw (_fgf ,_dgga ._gcb .Bounds (),_dgga ._gcb ,_e .ZP ,_fb .Src );return _fgf ;};func (_cfbg *Context )DrawString (s string ,x ,y float64 ){_cfbg .DrawStringAnchored (s ,x ,y ,0,0)};func (_bgde *linearGradient )ColorAt (x ,y int )_a .Color {if len (_bgde ._eeab )==0{return _a .Transparent ;};_cad ,_cbgf :=float64 (x ),float64 (y );_ebf ,_fgg ,_fae ,_bdaa :=_bgde ._ggd ,_bgde ._eabg ,_bgde ._eea ,_bgde ._fgc ;_debd ,_bdde :=_fae -_ebf ,_bdaa -_fgg ;if _bdde ==0&&_debd !=0{return _bca ((_cad -_ebf )/_debd ,_bgde ._eeab );};if _debd ==0&&_bdde !=0{return _bca ((_cbgf -_fgg )/_bdde ,_bgde ._eeab );};_aaca :=_debd *(_cad -_ebf )+_bdde *(_cbgf -_fgg );if _aaca < 0{return _bgde ._eeab [0]._bfa ;};_cbaca :=_bf .Hypot (_debd ,_bdde );_fggd :=((_cad -_ebf )*-_bdde +(_cbgf -_fgg )*_debd )/(_cbaca *_cbaca );_bdda ,_agg :=_ebf +_fggd *-_bdde ,_fgg +_fggd *_debd ;_gfc :=_bf .Hypot (_cad -_bdda ,_cbgf -_agg )/_cbaca ;return _bca (_gfc ,_bgde ._eeab );};func (_ed *Context )SetRGB255 (r ,g ,b int ){_ed .SetRGBA255 (r ,g ,b ,255)};func (_ddbe *Context )ScaleAbout (sx ,sy ,x ,y float64 ){_ddbe .Translate (x ,y );_ddbe .Scale (sx ,sy );_ddbe .Translate (-x ,-y );};func NewContextForImage (im _e .Image )*Context {return NewContextForRGBA (_dfac (im ))};func NewContextForRGBA (im *_e .RGBA )*Context {_deb :=im .Bounds ().Size ().X ;_ccdg :=im .Bounds ().Size ().Y ;return &Context {_eb :_deb ,_gea :_ccdg ,_fda :_egb .NewRasterizer (_deb ,_ccdg ),_gcb :im ,_ad :_a .Transparent ,_eef :_ddd ,_aea :_egg ,_cfe :1,_egc :_g .FillRuleWinding ,_bb :_dd .IdentityMatrix (),_gca :_g .NewTextState ()};};var (_ddd =_gbgc (_a .White );_egg =_gbgc (_a .Black ););type patternPainter struct{_gdfd *_e .RGBA ;_ade *_e .Alpha ;_eacc _g .Pattern ;};func _gab (_dce ,_gbfg _a .Color ,_acgc float64 )_a .Color {_dabc ,_daaa ,_gdbe ,_dac :=_dce .RGBA ();_cbed ,_gbc ,_gfga ,_ecd :=_gbfg .RGBA ();return _a .RGBA {_egea (_dabc ,_cbed ,_acgc ),_egea (_daaa ,_gbc ,_acgc ),_egea (_gdbe ,_gfga ,_acgc ),_egea (_dac ,_ecd ,_acgc )};};func _bca (_ebgd float64 ,_eeaa stops )_a .Color {if _ebgd <=0.0||len (_eeaa )==1{return _eeaa [0]._bfa ;};_gag :=_eeaa [len (_eeaa )-1];if _ebgd >=_gag ._eac {return _gag ._bfa ;};for _eedg ,_bcde :=range _eeaa [1:]{if _ebgd < _bcde ._eac {_ebgd =(_ebgd -_eeaa [_eedg ]._eac )/(_bcde ._eac -_eeaa [_eedg ]._eac );return _gab (_eeaa [_eedg ]._bfa ,_bcde ._bfa ,_ebgd );};};return _gag ._bfa ;};func (_aaa *Context )Transform (x ,y float64 )(_ceb ,_gfbc float64 ){return _aaa ._bb .Transform (x ,y )};func _egea (_bdab ,_dea uint32 ,_abd float64 )uint8 {return uint8 (int32 (float64 (_bdab )*(1.0-_abd )+float64 (_dea )*_abd )>>8);};func (_egcb *Context )DrawEllipticalArc (x ,y ,rx ,ry ,angle1 ,angle2 float64 ){const _faa =16;for _cgda :=0;_cgda < _faa ;_cgda ++{_ace :=float64 (_cgda +0)/_faa ;_ded :=float64 (_cgda +1)/_faa ;_abc :=angle1 +(angle2 -angle1 )*_ace ;_bbb :=angle1 +(angle2 -angle1 )*_ded ;_bcdb :=x +rx *_bf .Cos (_abc );_eaff :=y +ry *_bf .Sin (_abc );_efcd :=x +rx *_bf .Cos ((_abc +_bbb )/2);_begg :=y +ry *_bf .Sin ((_abc +_bbb )/2);_ccg :=x +rx *_bf .Cos (_bbb );_egf :=y +ry *_bf .Sin (_bbb );_fead :=2*_efcd -_bcdb /2-_ccg /2;_bgfe :=2*_begg -_eaff /2-_egf /2;if _cgda ==0{if _egcb ._cfc {_egcb .LineTo (_bcdb ,_eaff );}else {_egcb .MoveTo (_bcdb ,_eaff );};};_egcb .QuadraticTo (_fead ,_bgfe ,_ccg ,_egf );};};func NewContext (width ,height int )*Context {return NewContextForRGBA (_e .NewRGBA (_e .Rect (0,0,width ,height )));};func (_cfee *Context )DrawPoint (x ,y ,r float64 ){_cfee .Push ();_afbf ,_dbb :=_cfee .Transform (x ,y );_cfee .Identity ();_cfee .DrawCircle (_afbf ,_dbb ,r );_cfee .Pop ();};func (_dcfd *Context )Identity (){_dcfd ._bb =_dd .IdentityMatrix ()};func (_eaf *Context )Clear (){_bfb :=_e .NewUniform (_eaf ._ad );_fb .Draw (_eaf ._gcb ,_eaf ._gcb .Bounds (),_bfb ,_e .ZP ,_fb .Src );};func (_bag *Context )Width ()int {return _bag ._eb };func (_gcg *Context )FillPreserve (){var _fff _egb .Painter ;if _gcg ._cca ==nil {if _aac ,_bbf :=_gcg ._eef .(*solidPattern );_bbf {_cgb :=_egb .NewRGBAPainter (_gcg ._gcb );_cgb .SetColor (_aac ._fgdc );_fff =_cgb ;};};if _fff ==nil {_fff =_eebbc (_gcg ._gcb ,_gcg ._cca ,_gcg ._eef );};_gcg .fill (_fff );};func _efeg (_abdb _egb .Path ,_afae []float64 ,_bbee float64 )_egb .Path {return _fffea (_efa (_bdcdd (_abdb ),_afae ,_bbee ));};func (_gfb *Context )SetFillStyle (pattern _g .Pattern ){if _bdfc ,_facd :=pattern .(*solidPattern );_facd {_gfb ._ad =_bdfc ._fgdc ;};_gfb ._eef =pattern ;};func _abe (_eee ,_cag ,_bddd ,_bge ,_bede ,_bfcdd float64 )float64 {return _eee *_bge +_cag *_bede +_bddd *_bfcdd ;};func (_cbb stops )Swap (i ,j int ){_cbb [i ],_cbb [j ]=_cbb [j ],_cbb [i ]};func _gg (_de ,_dg ,_gd ,_cc ,_df ,_fc ,_afg float64 )(_ddg ,_ec float64 ){_gge :=1-_afg ;_ca :=_gge *_gge ;_cbe :=2*_gge *_afg ;_ge :=_afg *_afg ;_ddg =_ca *_de +_cbe *_gd +_ge *_df ;_ec =_ca *_dg +_cbe *_cc +_ge *_fc ;return ;};func (_gae *Context )SetMask (mask *_e .Alpha )error {if mask .Bounds ().Size ()!=_gae ._gcb .Bounds ().Size (){return _d .New ("\u006d\u0061\u0073\u006b\u0020\u0073i\u007a\u0065\u0020\u006d\u0075\u0073\u0074\u0020\u006d\u0061\u0074\u0063\u0068 \u0063\u006f\u006e\u0074\u0065\u0078\u0074 \u0073\u0069\u007a\u0065");};_gae ._cca =mask ;return nil ;};func (_aa *Context )fill (_aff _egb .Painter ){_caf :=_aa ._efc ;if _aa ._cfc {_caf =make (_egb .Path ,len (_aa ._efc ));copy (_caf ,_aa ._efc );_caf .Add1 (_dggg (_aa ._fe ));};_cae :=_aa ._fda ;_cae .UseNonZeroWinding =_aa ._egc ==_g .FillRuleWinding ;_cae .Clear ();_cae .AddPath (_caf );_cae .Rasterize (_aff );};func (_ddb *Context )SetFillRGBA (r ,g ,b ,a float64 ){_ddgb :=_a .NRGBA {uint8 (r *255),uint8 (g *255),uint8 (b *255),uint8 (a *255)};_ddb ._ad =_ddgb ;_ddb ._eef =_gbgc (_ddgb );};func _dggg (_ddga _dd .Point )_cb .Point26_6 {return _cb .Point26_6 {X :_adab (_ddga .X ),Y :_adab (_ddga .Y )}};func (_fef *Context )joiner ()_egb .Joiner {switch _fef ._bgf {case _g .LineJoinBevel :return _egb .BevelJoiner ;case _g .LineJoinRound :return _egb .RoundJoiner ;};return nil ;};func (_bce *Context )SetPixel (x ,y int ){_bce ._gcb .Set (x ,y ,_bce ._ad )};func _ba (_bgd ,_gbg ,_fg ,_ea ,_acc ,_baa ,_acg ,_ccd ,_fdg float64 )(_ef ,_gdc float64 ){_gc :=1-_fdg ;_dfbg :=_gc *_gc *_gc ;_gdf :=3*_gc *_gc *_fdg ;_bac :=3*_gc *_fdg *_fdg ;_cfd :=_fdg *_fdg *_fdg ;_ef =_dfbg *_bgd +_gdf *_fg +_bac *_acc +_cfd *_acg ;_gdc =_dfbg *_gbg +_gdf *_ea +_bac *_baa +_cfd *_ccd ;return ;};func (_bgdb *Context )SetMatrix (m _dd .Matrix ){_bgdb ._bb =m };func (_daf *Context )TextState ()*_g .TextState {return _daf ._gca };func (_cga *Context )DrawImage (im _e .Image ,x ,y int ){_cga .DrawImageAnchored (im ,x ,y ,0,0)};func (_adgb *Context )capper ()_egb .Capper {switch _adgb ._dcf {case _g .LineCapButt :return _egb .ButtCapper ;case _g .LineCapRound :return _egb .RoundCapper ;case _g .LineCapSquare :return _egb .SquareCapper ;};return nil ;};func _aab (_fcff float64 )float64 {return _fcff *_bf .Pi /180};func (_adg *Context )CubicTo (x1 ,y1 ,x2 ,y2 ,x3 ,y3 float64 ){if !_adg ._cfc {_adg .MoveTo (x1 ,y1 );};_gbf ,_dfgg :=_adg ._dge .X ,_adg ._dge .Y ;x1 ,y1 =_adg .Transform (x1 ,y1 );x2 ,y2 =_adg .Transform (x2 ,y2 );x3 ,y3 =_adg .Transform (x3 ,y3 );_aef :=_ccdc (_gbf ,_dfgg ,x1 ,y1 ,x2 ,y2 ,x3 ,y3 );_cbd :=_dggg (_adg ._dge );for _ ,_ged :=range _aef [1:]{_cff :=_dggg (_ged );if _cff ==_cbd {continue ;};_cbd =_cff ;_adg ._bdf .Add1 (_cff );_adg ._efc .Add1 (_cff );_adg ._dge =_ged ;};};func (_gbbb *Context )DrawEllipse (x ,y ,rx ,ry float64 ){_gbbb .NewSubPath ();_gbbb .DrawEllipticalArc (x ,y ,rx ,ry ,0,2*_bf .Pi );_gbbb .ClosePath ();};func (_ddef *Context )Pop (){_gdba :=*_ddef ;_abb :=_ddef ._da ;_cfec ,_abb :=_abb [len (_abb )-1],_abb [:len (_abb )-1];*_ddef =*_cfec ;_ddef ._bdf =_gdba ._bdf ;_ddef ._efc =_gdba ._efc ;_ddef ._fe =_gdba ._fe ;_ddef ._dge =_gdba ._dge ;_ddef ._cfc =_gdba ._cfc ;_ddef ._gca =_gdba ._gca ;};func _cgdf (_ccga ,_ebfg ,_gdd ,_gfg float64 )_g .Gradient {_edfd :=&linearGradient {_ggd :_ccga ,_eabg :_ebfg ,_eea :_gdd ,_fgc :_gfg };return _edfd ;};type radialGradient struct{_gcd ,_fabf ,_ebg circle ;_aed ,_egd float64 ;_gdfb float64 ;_dbc stops ;};func (_afd *Context )SetRGB (r ,g ,b float64 ){_afd .SetRGBA (r ,g ,b ,1)};func _cgbb (_faea ,_bcb ,_gfe ,_dbcg ,_cfa ,_fdf float64 )_g .Gradient {_bfccc :=circle {_faea ,_bcb ,_gfe };_fge :=circle {_dbcg ,_cfa ,_fdf };_fgb :=circle {_dbcg -_faea ,_cfa -_bcb ,_fdf -_gfe };_gbe :=_abe (_fgb ._gbfb ,_fgb ._cgbc ,-_fgb ._ffgg ,_fgb ._gbfb ,_fgb ._cgbc ,_fgb ._ffgg );var _gga float64 ;if _gbe !=0{_gga =1.0/_gbe ;};_abbf :=-_bfccc ._ffgg ;_abcg :=&radialGradient {_gcd :_bfccc ,_fabf :_fge ,_ebg :_fgb ,_aed :_gbe ,_egd :_gga ,_gdfb :_abbf };return _abcg ;};func (_efdg *Context )MeasureString (s string )(_dab ,_ceac float64 ){_dafd :=&_gbb .Drawer {Face :_efdg ._gca .Tf .Face };_fab :=_dafd .MeasureString (s );return float64 (_fab >>6),_efdg ._gca .Tf .Size ;};func _bdcdd (_cbaa _egb .Path )[][]_dd .Point {var _fbd [][]_dd .Point ;var _aagg []_dd .Point ;var _cage ,_fbe float64 ;for _eeff :=0;_eeff < len (_cbaa );{switch _cbaa [_eeff ]{case 0:if len (_aagg )> 0{_fbd =append (_fbd ,_aagg );_aagg =nil ;};_gbgb :=_cfg (_cbaa [_eeff +1]);_caba :=_cfg (_cbaa [_eeff +2]);_aagg =append (_aagg ,_dd .NewPoint (_gbgb ,_caba ));_cage ,_fbe =_gbgb ,_caba ;_eeff +=4;case 1:_ceg :=_cfg (_cbaa [_eeff +1]);_edec :=_cfg (_cbaa [_eeff +2]);_aagg =append (_aagg ,_dd .NewPoint (_ceg ,_edec ));_cage ,_fbe =_ceg ,_edec ;_eeff +=4;case 2:_gbfgf :=_cfg (_cbaa [_eeff +1]);_fggb :=_cfg (_cbaa [_eeff +2]);_fggdf :=_cfg (_cbaa [_eeff +3]);_gfcd :=_cfg (_cbaa [_eeff +4]);_cfdg :=_egbg (_cage ,_fbe ,_gbfgf ,_fggb ,_fggdf ,_gfcd );_aagg =append (_aagg ,_cfdg ...);_cage ,_fbe =_fggdf ,_gfcd ;_eeff +=6;case 3:_gda :=_cfg (_cbaa [_eeff +1]);_bec :=_cfg (_cbaa [_eeff +2]);_beb :=_cfg (_cbaa [_eeff +3]);_ccea :=_cfg (_cbaa [_eeff +4]);_cdc :=_cfg (_cbaa [_eeff +5]);_ddgf :=_cfg (_cbaa [_eeff +6]);_dad :=_ccdc (_cage ,_fbe ,_gda ,_bec ,_beb ,_ccea ,_cdc ,_ddgf );_aagg =append (_aagg ,_dad ...);_cage ,_fbe =_cdc ,_ddgf ;_eeff +=8;default:_eg .Log .Debug ("\u0057\u0041\u0052\u004e: \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0070\u0061\u0074\u0068\u003a\u0020%\u0076",_cbaa );return _fbd ;};};if len (_aagg )> 0{_fbd =append (_fbd ,_aagg );};return _fbd ;};type repeatOp int ;func (_fcc *Context )MoveTo (x ,y float64 ){if _fcc ._cfc {_fcc ._efc .Add1 (_dggg (_fcc ._fe ));};x ,y =_fcc .Transform (x ,y );_dgf :=_dd .NewPoint (x ,y );_eab :=_dggg (_dgf );_fcc ._bdf .Start (_eab );_fcc ._efc .Start (_eab );_fcc ._fe =_dgf ;_fcc ._dge =_dgf ;_fcc ._cfc =true ;};func (_cfb *Context )ClosePath (){if _cfb ._cfc {_bgfa :=_dggg (_cfb ._fe );_cfb ._bdf .Add1 (_bgfa );_cfb ._efc .Add1 (_bgfa );_cfb ._dge =_cfb ._fe ;};};func (_fbb *Context )Height ()int {return _fbb ._gea };func (_ccae *radialGradient )AddColorStop (offset float64 ,color _a .Color ){_ccae ._dbc =append (_ccae ._dbc ,stop {_eac :offset ,_bfa :color });_c .Sort (_ccae ._dbc );};func (_ege *Context )DrawImageAnchored (im _e .Image ,x ,y int ,ax ,ay float64 ){_fbc :=im .Bounds ().Size ();x -=int (ax *float64 (_fbc .X ));y -=int (ay *float64 (_fbc .Y ));_fffe :=_fb .BiLinear ;_bbeb :=_ege ._bb .Clone ();_bbeb .Translate (float64 (x ),float64 (y ));_daeg :=_gb .Aff3 {_bbeb [0],_bbeb [3],_bbeb [6],_bbeb [1],_bbeb [4],_bbeb [7]};if _ege ._cca ==nil {_fffe .Transform (_ege ._gcb ,_daeg ,im ,im .Bounds (),_fb .Over ,nil );}else {_fffe .Transform (_ege ._gcb ,_daeg ,im ,im .Bounds (),_fb .Over ,&_fb .Options {DstMask :_ege ._cca ,DstMaskP :_e .ZP });};};func (_gdg *Context )SetLineJoin (lineJoin _g .LineJoin ){_gdg ._bgf =lineJoin };func (_ce *Context )Fill (){_ce .FillPreserve ();_ce .ClearPath ()};func (_ccc *Context )DrawRoundedRectangle (x ,y ,w ,h ,r float64 ){_ffg ,_ece ,_dae ,_dgd :=x ,x +r ,x +w -r ,x +w ;_gfa ,_egba ,_beg ,_dfa :=y ,y +r ,y +h -r ,y +h ;_ccc .NewSubPath ();_ccc .MoveTo (_ece ,_gfa );_ccc .LineTo (_dae ,_gfa );_ccc .DrawArc (_dae ,_egba ,r ,_aab (270),_aab (360));_ccc .LineTo (_dgd ,_beg );_ccc .DrawArc (_dae ,_beg ,r ,_aab (0),_aab (90));_ccc .LineTo (_ece ,_dfa );_ccc .DrawArc (_ece ,_beg ,r ,_aab (90),_aab (180));_ccc .LineTo (_ffg ,_egba );_ccc .DrawArc (_ece ,_egba ,r ,_aab (180),_aab (270));_ccc .ClosePath ();};func (_eedd *Context )ResetClip (){_eedd ._cca =nil };func (_cac *Context )ShearAbout (sx ,sy ,x ,y float64 ){_cac .Translate (x ,y );_cac .Shear (sx ,sy );_cac .Translate (-x ,-y );};func _ggg (_def string )(_aaeg ,_caca ,_efea ,_debe int ){_def =_f .TrimPrefix (_def ,"\u0023");_debe =255;if len (_def )==3{_aee :="\u00251\u0078\u0025\u0031\u0078\u0025\u0031x";_bd .Sscanf (_def ,_aee ,&_aaeg ,&_caca ,&_efea );_aaeg |=_aaeg <<4;_caca |=_caca <<4;_efea |=_efea <<4;};if len (_def )==6{_ggc :="\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078";_bd .Sscanf (_def ,_ggc ,&_aaeg ,&_caca ,&_efea );};if len (_def )==8{_faca :="\u0025\u00302\u0078\u0025\u00302\u0078\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078";_bd .Sscanf (_def ,_faca ,&_aaeg ,&_caca ,&_efea ,&_debe );};return ;};func (_gdb *Context )NewSubPath (){if _gdb ._cfc {_gdb ._efc .Add1 (_dggg (_gdb ._fe ));};_gdb ._cfc =false ;};func (_egga *Context )SetDash (dashes ...float64 ){_egga ._efe =dashes };func (_aec *Context )Push (){_cdb :=*_aec ;_aec ._da =append (_aec ._da ,&_cdb )};func (_gbbe *Context )SetLineCap (lineCap _g .LineCap ){_gbbe ._dcf =lineCap };func (_ega *Context )DrawCircle (x ,y ,r float64 ){_ega .NewSubPath ();_ega .DrawEllipticalArc (x ,y ,r ,r ,0,2*_bf .Pi );_ega .ClosePath ();};func (_dfg *Context )setFillAndStrokeColor (_dgg _a .Color ){_dfg ._ad =_dgg ;_dfg ._eef =_gbgc (_dgg );_dfg ._aea =_gbgc (_dgg );};func (_aegd stops )Len ()int {return len (_aegd )};type surfacePattern struct{_begd _e .Image ;_cgeb repeatOp ;};func (_aaf *Context )RotateAbout (angle ,x ,y float64 ){_aaf .Translate (x ,y );_aaf .Rotate (angle );_aaf .Translate (-x ,-y );};type circle struct{_gbfb ,_cgbc ,_ffgg float64 };func (_ebe *linearGradient )AddColorStop (offset float64 ,color _a .Color ){_ebe ._eeab =append (_ebe ._eeab ,stop {_eac :offset ,_bfa :color });_c .Sort (_ebe ._eeab );};func _fcg (_gdgb _e .Image ,_bacc repeatOp )_g .Pattern {return &surfacePattern {_begd :_gdgb ,_cgeb :_bacc };};func (_age *Context )SetColor (c _a .Color ){_age .setFillAndStrokeColor (c )};func (_fgdf *Context )DrawRectangle (x ,y ,w ,h float64 ){_fgdf .NewSubPath ();_fgdf .MoveTo (x ,y );_fgdf .LineTo (x +w ,y );_fgdf .LineTo (x +w ,y +h );_fgdf .LineTo (x ,y +h );_fgdf .ClosePath ();};func _fffea (_dbd [][]_dd .Point )_egb .Path {var _add _egb .Path ;for _ ,_bedec :=range _dbd {var _gcbf _cb .Point26_6 ;for _fgac ,_gfab :=range _bedec {_gfaf :=_dggg (_gfab );if _fgac ==0{_add .Start (_gfaf );}else {_agd :=_gfaf .X -_gcbf .X ;_ccdae :=_gfaf .Y -_gcbf .Y ;if _agd < 0{_agd =-_agd ;};if _ccdae < 0{_ccdae =-_ccdae ;};if _agd +_ccdae > 8{_add .Add1 (_gfaf );};};_gcbf =_gfaf ;};};return _add ;};func (_dgec *Context )SetStrokeRGBA (r ,g ,b ,a float64 ){_ecge :=_a .NRGBA {uint8 (r *255),uint8 (g *255),uint8 (b *255),uint8 (a *255)};_dgec ._aea =_gbgc (_ecge );};func _egbg (_fd ,_bg ,_ee ,_dgb ,_bdd ,_cf float64 )[]_dd .Point {_cbeb :=(_bf .Hypot (_ee -_fd ,_dgb -_bg )+_bf .Hypot (_bdd -_ee ,_cf -_dgb ));_cd :=int (_cbeb +0.5);if _cd < 4{_cd =4;};_ddc :=float64 (_cd )-1;_bfc :=make ([]_dd .Point ,_cd );for _fa :=0;_fa < _cd ;_fa ++{_dfb :=float64 (_fa )/_ddc ;_ga ,_ac :=_gg (_fd ,_bg ,_ee ,_dgb ,_bdd ,_cf ,_dfb );_bfc [_fa ]=_dd .NewPoint (_ga ,_ac );};return _bfc ;};func (_fcd *Context )Stroke (){_fcd .StrokePreserve ();_fcd .ClearPath ()};func (_dcc *radialGradient )ColorAt (x ,y int )_a .Color {if len (_dcc ._dbc )==0{return _a .Transparent ;};_cbda ,_bgc :=float64 (x )+0.5-_dcc ._gcd ._gbfb ,float64 (y )+0.5-_dcc ._gcd ._cgbc ;_fdae :=_abe (_cbda ,_bgc ,_dcc ._gcd ._ffgg ,_dcc ._ebg ._gbfb ,_dcc ._ebg ._cgbc ,_dcc ._ebg ._ffgg );_ebd :=_abe (_cbda ,_bgc ,-_dcc ._gcd ._ffgg ,_cbda ,_bgc ,_dcc ._gcd ._ffgg );if _dcc ._aed ==0{if _fdae ==0{return _a .Transparent ;};_gdff :=0.5*_ebd /_fdae ;if _gdff *_dcc ._ebg ._ffgg >=_dcc ._gdfb {return _bca (_gdff ,_dcc ._dbc );};return _a .Transparent ;};_ecb :=_abe (_fdae ,_dcc ._aed ,0,_fdae ,-_ebd ,0);if _ecb >=0{_ccbd :=_bf .Sqrt (_ecb );_gcf :=(_fdae +_ccbd )*_dcc ._egd ;_edd :=(_fdae -_ccbd )*_dcc ._egd ;if _gcf *_dcc ._ebg ._ffgg >=_dcc ._gdfb {return _bca (_gcf ,_dcc ._dbc );}else if _edd *_dcc ._ebg ._ffgg >=_dcc ._gdfb {return _bca (_edd ,_dcc ._dbc );};};return _a .Transparent ;};func (_ebdd *patternPainter )Paint (ss []_egb .Span ,done bool ){_egca :=_ebdd ._gdfd .Bounds ();for _ ,_dgdg :=range ss {if _dgdg .Y < _egca .Min .Y {continue ;};if _dgdg .Y >=_egca .Max .Y {return ;};if _dgdg .X0 < _egca .Min .X {_dgdg .X0 =_egca .Min .X ;};if _dgdg .X1 > _egca .Max .X {_dgdg .X1 =_egca .Max .X ;};if _dgdg .X0 >=_dgdg .X1 {continue ;};const _cfcc =1<<16-1;_fcf :=_dgdg .Y -_ebdd ._gdfd .Rect .Min .Y ;_abg :=_dgdg .X0 -_ebdd ._gdfd .Rect .Min .X ;_dcec :=(_dgdg .Y -_ebdd ._gdfd .Rect .Min .Y )*_ebdd ._gdfd .Stride +(_dgdg .X0 -_ebdd ._gdfd .Rect .Min .X )*4;_fbg :=_dcec +(_dgdg .X1 -_dgdg .X0 )*4;for _bdfg ,_gcfg :=_dcec ,_abg ;_bdfg < _fbg ;_bdfg ,_gcfg =_bdfg +4,_gcfg +1{_bcgf :=_dgdg .Alpha ;if _ebdd ._ade !=nil {_bcgf =_bcgf *uint32 (_ebdd ._ade .AlphaAt (_gcfg ,_fcf ).A )/255;if _bcgf ==0{continue ;};};_eec :=_ebdd ._eacc .ColorAt (_gcfg ,_fcf );_eggd ,_aad ,_bgcc ,_fgdg :=_eec .RGBA ();_dddf :=uint32 (_ebdd ._gdfd .Pix [_bdfg +0]);_gbcb :=uint32 (_ebdd ._gdfd .Pix [_bdfg +1]);_ebge :=uint32 (_ebdd ._gdfd .Pix [_bdfg +2]);_eebb :=uint32 (_ebdd ._gdfd .Pix [_bdfg +3]);_feac :=(_cfcc -(_fgdg *_bcgf /_cfcc ))*0x101;_ebdd ._gdfd .Pix [_bdfg +0]=uint8 ((_dddf *_feac +_eggd *_bcgf )/_cfcc >>8);_ebdd ._gdfd .Pix [_bdfg +1]=uint8 ((_gbcb *_feac +_aad *_bcgf )/_cfcc >>8);_ebdd ._gdfd .Pix [_bdfg +2]=uint8 ((_ebge *_feac +_bgcc *_bcgf )/_cfcc >>8);_ebdd ._gdfd .Pix [_bdfg +3]=uint8 ((_eebb *_feac +_fgdg *_bcgf )/_cfcc >>8);};};};func (_egge *Context )InvertMask (){if _egge ._cca ==nil {_egge ._cca =_e .NewAlpha (_egge ._gcb .Bounds ());}else {for _cea ,_ab :=range _egge ._cca .Pix {_egge ._cca .Pix [_cea ]=255-_ab ;};};};func (_aecg *surfacePattern )ColorAt (x ,y int )_a .Color {_aae :=_aecg ._begd .Bounds ();switch _aecg ._cgeb {case _bfd :if y >=_aae .Dy (){return _a .Transparent ;};case _debf :if x >=_aae .Dx (){return _a .Transparent ;};case _bcgg :if x >=_aae .Dx ()||y >=_aae .Dy (){return _a .Transparent ;};};x =x %_aae .Dx ()+_aae .Min .X ;y =y %_aae .Dy ()+_aae .Min .Y ;return _aecg ._begd .At (x ,y );};func _gbgc (_eff _a .Color )_g .Pattern {return &solidPattern {_fgdc :_eff }};func (_daa *Context )SetRGBA255 (r ,g ,b ,a int ){_daa ._ad =_a .NRGBA {uint8 (r ),uint8 (g ),uint8 (b ),uint8 (a )};_daa .setFillAndStrokeColor (_daa ._ad );};func (_ccb *Context )drawString (_ecga *_e .RGBA ,_eafc string ,_ccaa ,_efdf float64 ){_bgg :=&_gbb .Drawer {Dst :_ecga ,Src :_e .NewUniform (_ccb ._ad ),Face :_ccb ._gca .Tf .Face ,Dot :_dggg (_dd .NewPoint (_ccaa ,_efdf ))};_cfeg :=rune (-1);for _ ,_egef :=range _eafc {if _cfeg >=0{_bgg .Dot .X +=_bgg .Face .Kern (_cfeg ,_egef );};_fdc ,_bfcd ,_acd ,_fbbc ,_fed :=_bgg .Face .Glyph (_bgg .Dot ,_egef );if !_fed {continue ;};_ceaf :=_fdc .Sub (_fdc .Min );_ada :=_fb .BiLinear ;_dcdb :=_ccb ._bb .Clone ();_dcdb .Translate (float64 (_fdc .Min .X ),float64 (_fdc .Min .Y ));_eag :=_gb .Aff3 {_dcdb [0],_dcdb [3],_dcdb [6],_dcdb [1],_dcdb [4],_dcdb [7]};_ada .Transform (_bgg .Dst ,_eag ,_bgg .Src ,_ceaf ,_fb .Over ,&_fb .Options {SrcMask :_bfcd ,SrcMaskP :_acd });_bgg .Dot .X +=_fbbc ;_cfeg =_egef ;};};func _cfg (_dcga _cb .Int26_6 )float64 {const _acgeb ,_eabc =6,1<<6-1;if _dcga >=0{return float64 (_dcga >>_acgeb )+float64 (_dcga &_eabc )/64;};_dcga =-_dcga ;if _dcga >=0{return -(float64 (_dcga >>_acgeb )+float64 (_dcga &_eabc )/64);};return 0;};func (_cce *Context )SetLineWidth (lineWidth float64 ){_cce ._cfe =lineWidth };func (_ddbb *Context )SetRGBA (r ,g ,b ,a float64 ){_ddbb ._ad =_a .NRGBA {uint8 (r *255),uint8 (g *255),uint8 (b *255),uint8 (a *255)};_ddbb .setFillAndStrokeColor (_ddbb ._ad );};func (_bgdg *Context )Translate (x ,y float64 ){_bgdg ._bb .Translate (x ,y )};func _dfac (_acdb _e .Image )*_e .RGBA {_fba :=_acdb .Bounds ();_ffgd :=_e .NewRGBA (_fba );_af .Draw (_ffgd ,_fba ,_acdb ,_fba .Min ,_af .Src );return _ffgd ;};const (_cccf repeatOp =iota ;_bfd ;_debf ;_bcgg ;);func (_bfcc *Context )DrawStringAnchored (s string ,x ,y ,ax ,ay float64 ){_gdgeg ,_baf :=_bfcc .MeasureString (s );x -=ax *_gdgeg ;y +=ay *_baf ;if _bfcc ._cca ==nil {_bfcc .drawString (_bfcc ._gcb ,s ,x ,y );}else {_ddbbe :=_e .NewRGBA (_e .Rect (0,0,_bfcc ._eb ,_bfcc ._gea ));_bfcc .drawString (_ddbbe ,s ,x ,y );_fb .DrawMask (_bfcc ._gcb ,_bfcc ._gcb .Bounds (),_ddbbe ,_e .ZP ,_bfcc ._cca ,_e .ZP ,_fb .Over );};};func (_ggf *Context )QuadraticTo (x1 ,y1 ,x2 ,y2 float64 ){if !_ggf ._cfc {_ggf .MoveTo (x1 ,y1 );};x1 ,y1 =_ggf .Transform (x1 ,y1 );x2 ,y2 =_ggf .Transform (x2 ,y2 );_bdc :=_dd .NewPoint (x1 ,y1 );_be :=_dd .NewPoint (x2 ,y2 );_ff :=_dggg (_bdc );_dga :=_dggg (_be );_ggf ._bdf .Add2 (_ff ,_dga );_ggf ._efc .Add2 (_ff ,_dga );_ggf ._dge =_be ;};func (_dcd *Context )SetHexColor (x string ){_cba ,_fea ,_dde ,_ccdb :=_ggg (x );_dcd .SetRGBA255 (_cba ,_fea ,_dde ,_ccdb );};func (_efd *Context )SetStrokeStyle (pattern _g .Pattern ){_efd ._aea =pattern };func (_bdcd *Context )Matrix ()_dd .Matrix {return _bdcd ._bb };func (_bbe *Context )ClearPath (){_bbe ._bdf .Clear ();_bbe ._efc .Clear ();_bbe ._cfc =false };