aboutsummaryrefslogtreecommitdiff
path: root/unipdf/render/internal/context/imagerender/imagerender.go
diff options
context:
space:
mode:
Diffstat (limited to 'unipdf/render/internal/context/imagerender/imagerender.go')
-rw-r--r--unipdf/render/internal/context/imagerender/imagerender.go107
1 files changed, 107 insertions, 0 deletions
diff --git a/unipdf/render/internal/context/imagerender/imagerender.go b/unipdf/render/internal/context/imagerender/imagerender.go
new file mode 100644
index 0000000..27efcc3
--- /dev/null
+++ b/unipdf/render/internal/context/imagerender/imagerender.go
@@ -0,0 +1,107 @@
+//
+// 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 (_ea "errors";_e "fmt";_be "github.com/unidoc/freetype/raster";_gdb "github.com/unidoc/unipdf/v4/common";_gf "github.com/unidoc/unipdf/v4/internal/precision";_ad "github.com/unidoc/unipdf/v4/internal/transform";_gfg "github.com/unidoc/unipdf/v4/render/internal/context";
+_gde "golang.org/x/image/draw";_b "golang.org/x/image/font";_af "golang.org/x/image/math/f64";_gc "golang.org/x/image/math/fixed";_gd "image";_c "image/color";_cf "image/draw";_g "math";_dd "sort";_a "strings";);func (_gff *Context )SetLineCap (lineCap _gfg .LineCap ){_gff ._da =lineCap };
+func (_fgb *Context )SetStrokeRGBA (r ,g ,b ,a float64 ){_cddd :=_c .NRGBA {uint8 (r *255),uint8 (g *255),uint8 (b *255),uint8 (a *255)};_fgb ._adb =_adag (_cddd );};func (_caf *Context )DrawStringAnchored (s string ,face _b .Face ,x ,y ,ax ,ay float64 ){_aaacb ,_afab :=_caf .MeasureString (s ,face );
+_caf .drawString (s ,face ,x -ax *_aaacb ,y +ay *_afab );};func (_ccd *Context )QuadraticTo (x1 ,y1 ,x2 ,y2 float64 ){if !_ccd ._bfa {_ccd .MoveTo (x1 ,y1 );};x1 ,y1 =_ccd .Transform (x1 ,y1 );x2 ,y2 =_ccd .Transform (x2 ,y2 );_faed :=_ad .NewPoint (x1 ,y1 );
+_fff :=_ad .NewPoint (x2 ,y2 );_faec :=_dfb (_faed );_ag :=_dfb (_fff );_ccd ._bcf .Add2 (_faec ,_ag );_ccd ._geg .Add2 (_faec ,_ag );_ccd ._ged =_fff ;};func (_bcg *Context )DrawImageAnchored (im _gd .Image ,x ,y int ,ax ,ay float64 ){_gfc :=im .Bounds ().Size ();
+x -=int (ax *float64 (_gfc .X ));y -=int (ay *float64 (_gfc .Y ));_gdg :=_gde .BiLinear ;_dba :=_bcg ._aad .Clone ().Translate (float64 (x ),float64 (y ));_dce :=_af .Aff3 {_dba [0],_dba [3],_dba [6],_dba [1],_dba [4],_dba [7]};if _bcg ._aaa ==nil {_gdg .Transform (_bcg ._cfce ,_dce ,im ,im .Bounds (),_gde .Over ,nil );
+}else {_gdg .Transform (_bcg ._cfce ,_dce ,im ,im .Bounds (),_gde .Over ,&_gde .Options {DstMask :_bcg ._aaa ,DstMaskP :_gd .Point {}});};};func (_gfe *Context )ClipPreserve (){_abc :=_gd .NewAlpha (_gd .Rect (0,0,_gfe ._efc ,_gfe ._ca ));_gefa :=_be .NewAlphaOverPainter (_abc );
+_gfe .fill (_gefa );if _gfe ._aaa ==nil {_gfe ._aaa =_abc ;}else {_addf :=_gd .NewAlpha (_gd .Rect (0,0,_gfe ._efc ,_gfe ._ca ));_gde .DrawMask (_addf ,_addf .Bounds (),_abc ,_gd .Point {},_gfe ._aaa ,_gd .Point {},_gde .Over );_gfe ._aaa =_addf ;};};func (_abed *Context )FillPattern ()_gfg .Pattern {return _abed ._efe };
+func (_edg *Context )setFillAndStrokeColor (_cdc _c .Color ){_edg ._baaf =_cdc ;_edg ._efe =_adag (_cdc );_edg ._adb =_adag (_cdc );};func (_fec *Context )fill (_gea _be .Painter ){_baae :=_fec ._geg ;if _fec ._bfa {_baae =make (_be .Path ,len (_fec ._geg ));
+copy (_baae ,_fec ._geg );_baae .Add1 (_dfb (_fec ._gcae ));};_gfdd :=_fec ._dgd ;_gfdd .UseNonZeroWinding =_fec ._gcc ==_gfg .FillRuleWinding ;_gfdd .Clear ();_gfdd .AddPath (_baae );_gfdd .Rasterize (_gea );};func (_ecf *Context )SetFillStyle (pattern _gfg .Pattern ){if _ece ,_bdf :=pattern .(*solidPattern );
+_bdf {_ecf ._baaf =_ece ._egc ;};_ecf ._efe =pattern ;};func (_gaeg *Context )Identity (){_gaeg ._aad =_ad .IdentityMatrix ()};type radialGradient struct{_gdcde ,_bea ,_gfff circle ;_bcb ,_babb float64 ;_abede float64 ;_ecb stops ;};func (_edbd *Context )SetStrokeStyle (pattern _gfg .Pattern ){_edbd ._adb =pattern };
+func (_ccbb *Context )DrawArc (x ,y ,r ,angle1 ,angle2 float64 ){_ccbb .DrawEllipticalArc (x ,y ,r ,r ,angle1 ,angle2 );};func (_gbga *Context )Pop (){_ceb :=*_gbga ;_cec :=_gbga ._aae ;_dbg :=_cec [len (_cec )-1];*_gbga =*_dbg ;_gbga ._bcf =_ceb ._bcf ;
+_gbga ._geg =_ceb ._geg ;_gbga ._gcae =_ceb ._gcae ;_gbga ._ged =_ceb ._ged ;_gbga ._bfa =_ceb ._bfa ;};func NewRadialGradient (x0 ,y0 ,r0 ,x1 ,y1 ,r1 float64 )_gfg .Gradient {_ecba :=circle {x0 ,y0 ,r0 };_dbfb :=circle {x1 ,y1 ,r1 };_gbf :=circle {x1 -x0 ,y1 -y0 ,r1 -r0 };
+_bde :=_egg (_gbf ._bffa ,_gbf ._fbd ,-_gbf ._dag ,_gbf ._bffa ,_gbf ._fbd ,_gbf ._dag );var _eeg float64 ;if _bde !=0{_eeg =1.0/_bde ;};_ddd :=-_ecba ._dag ;_dff :=&radialGradient {_gdcde :_ecba ,_bea :_dbfb ,_gfff :_gbf ,_bcb :_bde ,_babb :_eeg ,_abede :_ddd };
+return _dff ;};func (_cae *Context )Width ()int {return _cae ._efc };func (_eadf *Context )capper ()_be .Capper {switch _eadf ._da {case _gfg .LineCapButt :return _be .ButtCapper ;case _gfg .LineCapRound :return _be .RoundCapper ;case _gfg .LineCapSquare :return _be .SquareCapper ;
+};return nil ;};func (_cbfb *Context )TextState ()*_gfg .TextState {return &_cbfb ._gcg };func (_gbg *Context )DrawImage (im _gd .Image ,x ,y int ){_gbg .DrawImageAnchored (im ,x ,y ,0,0)};func (_bce *Context )SetHexColor (x string ){_aaed ,_gb ,_de ,_cgd :=_deg (x );
+_bce .SetRGBA255 (_aaed ,_gb ,_de ,_cgd );};func _geac (_ddga _gd .Image )*_gd .RGBA {_cab :=_ddga .Bounds ();_bad :=_gd .NewRGBA (_cab );_cf .Draw (_bad ,_cab ,_ddga ,_cab .Min ,_cf .Src );return _bad ;};func (_gcec *Context )DrawEllipticalArc (x ,y ,rx ,ry ,angle1 ,angle2 float64 ){const _cb =16;
+for _gcb :=0;_gcb < _cb ;_gcb ++{_becb :=float64 (_gcb +0)/_cb ;_bff :=float64 (_gcb +1)/_cb ;_aef :=angle1 +(angle2 -angle1 )*_becb ;_dgb :=angle1 +(angle2 -angle1 )*_bff ;_bcad :=x +rx *_g .Cos (_aef );_aba :=y +ry *_g .Sin (_aef );_bab :=x +rx *_g .Cos ((_aef +_dgb )/2);
+_fegd :=y +ry *_g .Sin ((_aef +_dgb )/2);_edc :=x +rx *_g .Cos (_dgb );_begg :=y +ry *_g .Sin (_dgb );_bgca :=2*_bab -_bcad /2-_edc /2;_cbf :=2*_fegd -_aba /2-_begg /2;if _gcb ==0{if _gcec ._bfa {_gcec .LineTo (_bcad ,_aba );}else {_gcec .MoveTo (_bcad ,_aba );
+};};_gcec .QuadraticTo (_bgca ,_cbf ,_edc ,_begg );};};func (_eag *Context )Clear (){_eagc :=_gd .NewUniform (_eag ._baaf );_gde .Draw (_eag ._cfce ,_eag ._cfce .Bounds (),_eagc ,_gd .Point {},_gde .Src );};func (_aagd *Context )SetLineJoin (lineJoin _gfg .LineJoin ){_aagd ._cgg =lineJoin };
+type Context struct{_efc int ;_ca int ;_dgd *_be .Rasterizer ;_cfce *_gd .RGBA ;_aaa *_gd .Alpha ;_baaf _c .Color ;_efe _gfg .Pattern ;_adb _gfg .Pattern ;_bcf _be .Path ;_geg _be .Path ;_gcae _ad .Point ;_ged _ad .Point ;_bfa bool ;_bef []float64 ;_aff float64 ;
+_efec float64 ;_da _gfg .LineCap ;_cgg _gfg .LineJoin ;_gcc _gfg .FillRule ;_aad _ad .Matrix ;_gcg _gfg .TextState ;_aae []*Context ;};func (_eaf *Context )LineWidth ()float64 {return _eaf ._efec };func (_cfa *Context )MoveTo (x ,y float64 ){if _cfa ._bfa {_cfa ._geg .Add1 (_dfb (_cfa ._gcae ));
+};x ,y =_cfa .Transform (x ,y );_ace :=_ad .NewPoint (x ,y );_ggcg :=_dfb (_ace );_cfa ._bcf .Start (_ggcg );_cfa ._geg .Start (_ggcg );_cfa ._gcae =_ace ;_cfa ._ged =_ace ;_cfa ._bfa =true ;};func (_bcac *Context )DrawLine (x1 ,y1 ,x2 ,y2 float64 ){_bcac .MoveTo (x1 ,y1 );
+_bcac .LineTo (x2 ,y2 )};func NewContextForRGBA (im *_gd .RGBA )*Context {_cdd :=im .Bounds ().Size ().X ;_ecc :=im .Bounds ().Size ().Y ;return &Context {_efc :_cdd ,_ca :_ecc ,_dgd :_be .NewRasterizer (_cdd ,_ecc ),_cfce :im ,_baaf :_c .Transparent ,_efe :_aag ,_adb :_edb ,_efec :1,_gcc :_gfg .FillRuleWinding ,_aad :_ad .IdentityMatrix (),_gcg :_gfg .NewTextState ()};
+};func (_dab *Context )StrokePattern ()_gfg .Pattern {return _dab ._adb };func _ddg (_acc ,_fffa _c .Color ,_dfe float64 )_c .Color {_agbd ,_cegd ,_ffdc ,_ebe :=_acc .RGBA ();_dac ,_facb ,_ffa ,_adfdd :=_fffa .RGBA ();return _c .RGBA {_gdecc (_agbd ,_dac ,_dfe ),_gdecc (_cegd ,_facb ,_dfe ),_gdecc (_ffdc ,_ffa ,_dfe ),_gdecc (_ebe ,_adfdd ,_dfe )};
+};func (_bdb *Context )AsMask ()*_gd .Alpha {_fdc :=_gd .NewAlpha (_bdb ._cfce .Bounds ());_gde .Draw (_fdc ,_bdb ._cfce .Bounds (),_bdb ._cfce ,_gd .Point {},_gde .Src );return _fdc ;};func (_abf *Context )MeasureString (s string ,face _b .Face )(_fba ,_ggb float64 ){_gccc :=&_b .Drawer {Face :face };
+_ffd :=_gccc .MeasureString (s );return float64 (_ffd >>6),_abf ._gcg .Tf .Size ;};func _cebb (_ffbd _gc .Int26_6 )float64 {const _adfb ,_baba =6,1<<6-1;if _ffbd >=0{return float64 (_ffbd >>_adfb )+float64 (_ffbd &_baba )/64;};_ffbd =-_ffbd ;if _ffbd >=0{return -(float64 (_ffbd >>_adfb )+float64 (_ffbd &_baba )/64);
+};return 0;};func (_ccg stops )Swap (i ,j int ){_ccg [i ],_ccg [j ]=_ccg [j ],_ccg [i ]};func (_dfg *Context )Image ()_gd .Image {return _dfg ._cfce };func (_fac *radialGradient )AddColorStop (offset float64 ,color _c .Color ){_fac ._ecb =append (_fac ._ecb ,stop {_dcg :offset ,_afg :color });
+_dd .Sort (_fac ._ecb );};func (_afd *Context )SetLineWidth (lineWidth float64 ){_afd ._efec =lineWidth };func _cced (_gcdf [][]_ad .Point ,_dcf []float64 ,_beff float64 )[][]_ad .Point {var _eae [][]_ad .Point ;if len (_dcf )==0{return _gcdf ;};if len (_dcf )==1{_dcf =append (_dcf ,_dcf [0]);
+};for _ ,_gfce :=range _gcdf {if len (_gfce )< 2{continue ;};_bfd :=_gfce [0];_ddge :=1;_adba :=0;_gfa :=0.0;if _beff !=0{var _dfae float64 ;for _ ,_efbc :=range _dcf {_dfae +=_efbc ;};_beff =_g .Mod (_beff ,_dfae );if _beff < 0{_beff +=_dfae ;};for _gfca ,_dacc :=range _dcf {_beff -=_dacc ;
+if _beff < 0{_adba =_gfca ;_gfa =_dacc +_beff ;break ;};};};var _edgdd []_ad .Point ;_edgdd =append (_edgdd ,_bfd );for _ddge < len (_gfce ){_cag :=_dcf [_adba ];_ffff :=_gfce [_ddge ];_ccce :=_bfd .Distance (_ffff );_ddbb :=_cag -_gfa ;if _ccce > _ddbb {_bfc :=_ddbb /_ccce ;
+_cebe :=_bfd .Interpolate (_ffff ,_bfc );_edgdd =append (_edgdd ,_cebe );if _adba %2==0&&len (_edgdd )> 1{_eae =append (_eae ,_edgdd );};_edgdd =nil ;_edgdd =append (_edgdd ,_cebe );_gfa =0;_bfd =_cebe ;_adba =(_adba +1)%len (_dcf );}else {_edgdd =append (_edgdd ,_ffff );
+_bfd =_ffff ;_gfa +=_ccce ;_ddge ++;};};if _adba %2==0&&len (_edgdd )> 1{_eae =append (_eae ,_edgdd );};};return _eae ;};type solidPattern struct{_egc _c .Color };func (_bda *Context )StrokePreserve (){var _bbd _be .Painter ;if _bda ._aaa ==nil {if _ggg ,_dc :=_bda ._adb .(*solidPattern );
+_dc {_gedf :=_be .NewRGBAPainter (_bda ._cfce );_gedf .SetColor (_ggg ._egc );_bbd =_gedf ;};};if _bbd ==nil {_bbd =_gedfc (_bda ._cfce ,_bda ._aaa ,_bda ._adb );};_bda .stroke (_bbd );};func (_aec stops )Len ()int {return len (_aec )};func _bdaf (_cbc float64 ,_bbb stops )_c .Color {if _cbc <=0.0||len (_bbb )==1{return _bbb [0]._afg ;
+};_cgaf :=_bbb [len (_bbb )-1];if _cbc >=_cgaf ._dcg {return _cgaf ._afg ;};for _eab ,_abad :=range _bbb [1:]{if _cbc < _abad ._dcg {_cbc =(_cbc -_bbb [_eab ]._dcg )/(_abad ._dcg -_bbb [_eab ]._dcg );return _ddg (_bbb [_eab ]._afg ,_abad ._afg ,_cbc );
+};};return _cgaf ._afg ;};func (_ffb *Context )DrawEllipse (x ,y ,rx ,ry float64 ){_ffb .NewSubPath ();_ffb .DrawEllipticalArc (x ,y ,rx ,ry ,0,2*_g .Pi );_ffb .ClosePath ();};func _ec (_f ,_eg ,_ddb ,_fe ,_ba ,_cfc ,_fc float64 )(_fa ,_fg float64 ){_ab :=1-_fc ;
+_adg :=_ab *_ab ;_ge :=2*_ab *_fc ;_fae :=_fc *_fc ;_fa =_adg *_f +_ge *_ddb +_fae *_ba ;_fg =_adg *_eg +_ge *_fe +_fae *_cfc ;return ;};func (_gbc *linearGradient )ColorAt (x ,y int )_c .Color {if len (_gbc ._deee )==0{return _c .Transparent ;};_ecee ,_fdac :=float64 (x ),float64 (y );
+_gag ,_gccf ,_bee ,_gfeg :=_gbc ._baed ,_gbc ._fbb ,_gbc ._egf ,_gbc ._dee ;_gad ,_gfb :=_bee -_gag ,_gfeg -_gccf ;if _gfb ==0&&_gad !=0{return _bdaf ((_ecee -_gag )/_gad ,_gbc ._deee );};if _gad ==0&&_gfb !=0{return _bdaf ((_fdac -_gccf )/_gfb ,_gbc ._deee );
+};_ddfa :=_gad *(_ecee -_gag )+_gfb *(_fdac -_gccf );if _ddfa < 0{return _gbc ._deee [0]._afg ;};_fee :=_g .Hypot (_gad ,_gfb );_abd :=((_ecee -_gag )*-_gfb +(_fdac -_gccf )*_gad )/(_fee *_fee );_efca ,_bdgc :=_gag +_abd *-_gfb ,_gccf +_abd *_gad ;_fad :=_g .Hypot (_ecee -_efca ,_fdac -_bdgc )/_fee ;
+return _bdaf (_fad ,_gbc ._deee );};func (_dfa *Context )stroke (_agd _be .Painter ){_cgga :=_dfa ._bcf ;if len (_dfa ._bef )> 0{_cgga =_gedab (_cgga ,_dfa ._bef ,_dfa ._aff );}else {_cgga =_cfd (_eba (_cgga ));};_dgc :=_dfa ._dgd ;_dgc .UseNonZeroWinding =true ;
+_dgc .Clear ();_ceg :=(_dfa ._aad .ScalingFactorX ()+_dfa ._aad .ScalingFactorY ())/2;_dgc .AddStroke (_cgga ,_fdce (_dfa ._efec *_ceg ),_dfa .capper (),_dfa .joiner ());_dgc .Rasterize (_agd );};func NewContext (width ,height int )*Context {return NewContextForRGBA (_gd .NewRGBA (_gd .Rect (0,0,width ,height )));
+};func (_ddf *Context )joiner ()_be .Joiner {switch _ddf ._cgg {case _gfg .LineJoinBevel :return _be .BevelJoiner ;case _gfg .LineJoinRound :return _be .RoundJoiner ;};return nil ;};func _cfd (_bfcd [][]_ad .Point )_be .Path {var _aeaa _be .Path ;for _ ,_agf :=range _bfcd {var _cfda _gc .Point26_6 ;
+for _bgea ,_eadb :=range _agf {_dcee :=_dfb (_eadb );if _bgea ==0{_aeaa .Start (_dcee );}else {_efd :=_dcee .X -_cfda .X ;_bfe :=_dcee .Y -_cfda .Y ;if _efd < 0{_efd =-_efd ;};if _bfe < 0{_bfe =-_bfe ;};if _efd +_bfe > 8{_aeaa .Add1 (_dcee );};};_cfda =_dcee ;
+};};return _aeaa ;};func (_cdgf *Context )Matrix ()_ad .Matrix {return _cdgf ._aad };func (_efb *Context )SetFillRule (fillRule _gfg .FillRule ){_efb ._gcc =fillRule };func NewLinearGradient (x0 ,y0 ,x1 ,y1 float64 )_gfg .Gradient {_fcce :=&linearGradient {_baed :x0 ,_fbb :y0 ,_egf :x1 ,_dee :y1 };
+return _fcce ;};func (_cbg *Context )Shear (x ,y float64 ){_cbg ._aad .Shear (x ,y )};func (_baeg *Context )Clip (){_baeg .ClipPreserve ();_baeg .ClearPath ()};func (_ccdb *Context )RotateAbout (angle ,x ,y float64 ){_ccdb .Translate (x ,y );_ccdb .Rotate (angle );
+_ccdb .Translate (-x ,-y );};func (_ecfa *Context )SetRGB255 (r ,g ,b int ){_ecfa .SetRGBA255 (r ,g ,b ,255)};func (_cad *Context )Push (){_agdg :=*_cad ;_cad ._aae =append (_cad ._aae ,&_agdg )};func (_efea *linearGradient )AddColorStop (offset float64 ,color _c .Color ){_efea ._deee =append (_efea ._deee ,stop {_dcg :offset ,_afg :color });
+_dd .Sort (_efea ._deee );};type linearGradient struct{_baed ,_fbb ,_egf ,_dee float64 ;_deee stops ;};func (_aeba stops )Less (i ,j int )bool {return _aeba [i ]._dcg < _aeba [j ]._dcg };func (_eadef *Context )DrawRoundedRectangle (x ,y ,w ,h ,r float64 ){_cce ,_feg ,_fbf ,_dae :=x ,x +r ,x +w -r ,x +w ;
+_eec ,_fbff ,_eafa ,_cgcc :=y ,y +r ,y +h -r ,y +h ;_eadef .NewSubPath ();_eadef .MoveTo (_feg ,_eec );_eadef .LineTo (_fbf ,_eec );_eadef .DrawArc (_fbf ,_fbff ,r ,_efcd (270),_efcd (360));_eadef .LineTo (_dae ,_eafa );_eadef .DrawArc (_fbf ,_eafa ,r ,_efcd (0),_efcd (90));
+_eadef .LineTo (_feg ,_cgcc );_eadef .DrawArc (_feg ,_eafa ,r ,_efcd (90),_efcd (180));_eadef .LineTo (_cce ,_fbff );_eadef .DrawArc (_feg ,_fbff ,r ,_efcd (180),_efcd (270));_eadef .ClosePath ();};func (_aebf *Context )FillPreserve (){var _aaae _be .Painter ;
+if _aebf ._aaa ==nil {if _faeda ,_gcea :=_aebf ._efe .(*solidPattern );_gcea {_bfb :=_be .NewRGBAPainter (_aebf ._cfce );_bfb .SetColor (_faeda ._egc );_aaae =_bfb ;};};if _aaae ==nil {_aaae =_gedfc (_aebf ._cfce ,_aebf ._aaa ,_aebf ._efe );};_aebf .fill (_aaae );
+};func (_gegg *Context )ClosePath (){if _gegg ._bfa {_bg :=_dfb (_gegg ._gcae );_gegg ._bcf .Add1 (_bg );_gegg ._geg .Add1 (_bg );_gegg ._ged =_gegg ._gcae ;};};func _eba (_bcgd _be .Path )[][]_ad .Point {var _aebfd [][]_ad .Point ;var _bfge []_ad .Point ;
+var _aea ,_dbgg float64 ;for _aadb :=0;_aadb < len (_bcgd );{switch _bcgd [_aadb ]{case 0:if len (_bfge )> 0{_aebfd =append (_aebfd ,_bfge );_bfge =nil ;};_dfaa :=_cebb (_bcgd [_aadb +1]);_debb :=_cebb (_bcgd [_aadb +2]);_bfge =append (_bfge ,_ad .NewPoint (_dfaa ,_debb ));
+_aea ,_dbgg =_dfaa ,_debb ;_aadb +=4;case 1:_fbfe :=_cebb (_bcgd [_aadb +1]);_fgeg :=_cebb (_bcgd [_aadb +2]);_bfge =append (_bfge ,_ad .NewPoint (_fbfe ,_fgeg ));_aea ,_dbgg =_fbfe ,_fgeg ;_aadb +=4;case 2:_edf :=_cebb (_bcgd [_aadb +1]);_gddb :=_cebb (_bcgd [_aadb +2]);
+_edd :=_cebb (_bcgd [_aadb +3]);_geda :=_cebb (_bcgd [_aadb +4]);_cdba :=_faf (_aea ,_dbgg ,_edf ,_gddb ,_edd ,_geda );_bfge =append (_bfge ,_cdba ...);_aea ,_dbgg =_edd ,_geda ;_aadb +=6;case 3:_ebed :=_cebb (_bcgd [_aadb +1]);_ddbd :=_cebb (_bcgd [_aadb +2]);
+_gced :=_cebb (_bcgd [_aadb +3]);_edcd :=_cebb (_bcgd [_aadb +4]);_ebga :=_cebb (_bcgd [_aadb +5]);_ccbd :=_cebb (_bcgd [_aadb +6]);_daf :=_cca (_aea ,_dbgg ,_ebed ,_ddbd ,_gced ,_edcd ,_ebga ,_ccbd );_bfge =append (_bfge ,_daf ...);_aea ,_dbgg =_ebga ,_ccbd ;
+_aadb +=8;default:_gdb .Log .Debug ("\u0057\u0041\u0052\u004e: \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0070\u0061\u0074\u0068\u003a\u0020%\u0076",_bcgd );return _aebfd ;};};if len (_bfge )> 0{_aebfd =append (_aebfd ,_bfge );};return _aebfd ;};
+func (_gfd *Context )SetRGB (r ,g ,b float64 ){_gfd .SetRGBA (r ,g ,b ,1)};type circle struct{_bffa ,_fbd ,_dag float64 };func (_ebg *Context )SetPixel (x ,y int ){_ebg ._cfce .Set (x ,y ,_ebg ._baaf )};func (_bac *Context )SetMatrix (m _ad .Matrix ){_bac ._aad =m };
+func _bace (_bdbc _gd .Image ,_dcfa repeatOp )_gfg .Pattern {return &surfacePattern {_adff :_bdbc ,_ffe :_dcfa };};func (_efcb *Context )SetMask (mask *_gd .Alpha )error {if mask .Bounds ().Size ()!=_efcb ._cfce .Bounds ().Size (){return _ea .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");
+};_efcb ._aaa =mask ;return nil ;};func (_afa *Context )DrawString (s string ,face _b .Face ,x ,y float64 ){_afa .DrawStringAnchored (s ,face ,x ,y ,0,0);};type surfacePattern struct{_adff _gd .Image ;_ffe repeatOp ;};type repeatOp int ;func (_aac *Context )DrawPoint (x ,y ,r float64 ){_aac .Push ();
+_fbe ,_cgc :=_aac .Transform (x ,y );_aac .Identity ();_aac .DrawCircle (_fbe ,_cgc ,r );_aac .Pop ();};func _gdecc (_edbf ,_ebgc uint32 ,_eaa float64 )uint8 {return uint8 (int32 (float64 (_edbf )*(1.0-_eaa )+float64 (_ebgc )*_eaa )>>8);};func (_cbe *Context )drawString (_egb string ,_gcgb _b .Face ,_eccb ,_dda float64 ){_fda :=&_b .Drawer {Src :_gd .NewUniform (_cbe ._baaf ),Face :_gcgb ,Dot :_dfb (_ad .NewPoint (_eccb ,_dda ))};
+_gddg :=rune (-1);for _ ,_bcfg :=range _egb {if _gddg >=0{_fda .Dot .X +=_fda .Face .Kern (_gddg ,_bcfg );};_fgab ,_aagc ,_fcc ,_gdcd ,_dgdf :=_fda .Face .Glyph (_fda .Dot ,_bcfg );if !_dgdf {continue ;};_baf :=_fgab .Sub (_fgab .Min );_edgd :=_gd .NewRGBA (_baf );
+_gde .DrawMask (_edgd ,_baf ,_fda .Src ,_gd .Point {},_aagc ,_fcc ,_gde .Over );var _fdg *_gde .Options ;if _cbe ._aaa !=nil {_fdg =&_gde .Options {DstMask :_cbe ._aaa ,DstMaskP :_gd .Point {}};};_gdf :=_cbe ._aad .Clone ().Translate (float64 (_fgab .Min .X ),float64 (_fgab .Min .Y ));
+_gdef :=_af .Aff3 {_gdf [0],_gdf [3],_gdf [6],_gdf [1],_gdf [4],_gdf [7]};_gde .BiLinear .Transform (_cbe ._cfce ,_gdef ,_edgd ,_baf ,_gde .Over ,_fdg );_fda .Dot .X +=_gdcd ;_gddg =_bcfg ;};};type stops []stop ;func _cca (_adfg ,_fge ,_ef ,_gce ,_ff ,_bb ,_ae ,_ccc float64 )[]_ad .Point {_eade :=(_g .Hypot (_ef -_adfg ,_gce -_fge )+_g .Hypot (_ff -_ef ,_bb -_gce )+_g .Hypot (_ae -_ff ,_ccc -_bb ));
+_cd :=int (_eade +0.5);if _cd < 4{_cd =4;};_baa :=float64 (_cd )-1;_bf :=make ([]_ad .Point ,_cd );for _fgae :=0;_fgae < _cd ;_fgae ++{_bc :=float64 (_fgae )/_baa ;_bec ,_ga :=_gef (_adfg ,_fge ,_ef ,_gce ,_ff ,_bb ,_ae ,_ccc ,_bc );_bf [_fgae ]=_ad .NewPoint (_bec ,_ga );
+};return _bf ;};func (_caa *Context )drawRegularPolygon (_bge int ,_ccae ,_cff ,_ecfac ,_cfca float64 ){_cac :=2*_g .Pi /float64 (_bge );_cfca -=_g .Pi /2;if _bge %2==0{_cfca +=_cac /2;};_caa .NewSubPath ();for _cffg :=0;_cffg < _bge ;_cffg ++{_cdg :=_cfca +_cac *float64 (_cffg );
+_caa .LineTo (_ccae +_ecfac *_g .Cos (_cdg ),_cff +_ecfac *_g .Sin (_cdg ));};_caa .ClosePath ();};func (_ggcf *Context )Stroke (){_ggcf .StrokePreserve ();_ggcf .ClearPath ()};func _gedfc (_cadf *_gd .RGBA ,_bcfb *_gd .Alpha ,_faff _gfg .Pattern )*patternPainter {return &patternPainter {_cadf ,_bcfb ,_faff };
+};func (_aaedg *Context )ShearAbout (sx ,sy ,x ,y float64 ){_aaedg .Translate (x ,y );_aaedg .Shear (sx ,sy );_aaedg .Translate (-x ,-y );};var (_aag =_adag (_c .White );_edb =_adag (_c .Black ););func (_aagdd *Context )ClearPath (){_aagdd ._bcf .Clear ();
+_aagdd ._geg .Clear ();_aagdd ._bfa =false };func (_dbf *Context )SetDash (dashes ...float64 ){_dbf ._bef =dashes };func (_cgac *Context )SetRGBA (r ,g ,b ,a float64 ){_ ,_ ,_ ,_cfb :=_cgac ._baaf .RGBA ();if _cfb > 0&&_cfb !=65535&&a ==1{a =float64 (_cfb )/65535;
+};_cgac ._baaf =_c .NRGBA {uint8 (r *255),uint8 (g *255),uint8 (b *255),uint8 (a *255)};_cgac .setFillAndStrokeColor (_cgac ._baaf );};func (_fddd *Context )InvertMask (){if _fddd ._aaa ==nil {_fddd ._aaa =_gd .NewAlpha (_fddd ._cfce .Bounds ());}else {for _egd ,_bca :=range _fddd ._aaa .Pix {_fddd ._aaa .Pix [_egd ]=255-_bca ;
+};};};func (_bcfd *solidPattern )ColorAt (x ,y int )_c .Color {return _bcfd ._egc };func (_gcgg *Context )Rotate (angle float64 ){_gcgg ._aad =_gcgg ._aad .Rotate (angle )};func (_ddc *Context )SetFillRGBA (r ,g ,b ,a float64 ){_ ,_ ,_ ,_afb :=_ddc ._baaf .RGBA ();
+if _afb > 0&&_afb !=65535&&a ==1{a =float64 (_afb )/65535;};_efce :=_c .NRGBA {uint8 (r *255),uint8 (g *255),uint8 (b *255),uint8 (a *255)};_ddc ._baaf =_efce ;_ddc ._efe =_adag (_efce );};func (_bae *Context )LineTo (x ,y float64 ){if !_bae ._bfa {_bae .MoveTo (x ,y );
+}else {x ,y =_bae .Transform (x ,y );_fdd :=_ad .NewPoint (x ,y );_eff :=_dfb (_fdd );_bae ._bcf .Add1 (_eff );_bae ._geg .Add1 (_eff );_bae ._ged =_fdd ;};};type patternPainter struct{_bdc *_gd .RGBA ;_gcgf *_gd .Alpha ;_cgafg _gfg .Pattern ;};func (_ee *Context )NewSubPath (){if _ee ._bfa {_ee ._geg .Add1 (_dfb (_ee ._gcae ));
+};_ee ._bfa =false ;};func (_eee *Context )DrawRectangle (x ,y ,w ,h float64 ){_eee .NewSubPath ();_eee .MoveTo (x ,y );_eee .LineTo (x +w ,y );_eee .LineTo (x +w ,y +h );_eee .LineTo (x ,y +h );_eee .ClosePath ();};func _egg (_dbfa ,_afdd ,_deb ,_bgf ,_agc ,_ffbf float64 )float64 {return _dbfa *_bgf +_afdd *_agc +_deb *_ffbf ;
+};func _dfb (_bcgec _ad .Point )_gc .Point26_6 {return _gc .Point26_6 {X :_fdce (_bcgec .X ),Y :_fdce (_bcgec .Y )};};func (_adaf *Context )Fill (){_adaf .FillPreserve ();_adaf .ClearPath ()};func (_gegf *Context )DrawCircle (x ,y ,r float64 ){_gegf .NewSubPath ();
+_gegf .DrawEllipticalArc (x ,y ,r ,r ,0,2*_g .Pi );_gegf .ClosePath ();};func (_cde *Context )ScaleAbout (sx ,sy ,x ,y float64 ){_cde .Translate (x ,y );_cde .Scale (sx ,sy );_cde .Translate (-x ,-y );};func _fdce (_bcc float64 )_gc .Int26_6 {_bcc =_gf .RoundDefault (_bcc );
+return _gc .Int26_6 (_bcc *64)};func (_fgd *surfacePattern )ColorAt (x ,y int )_c .Color {_gcdd :=_fgd ._adff .Bounds ();switch _fgd ._ffe {case _febe :if y >=_gcdd .Dy (){return _c .Transparent ;};case _fdf :if x >=_gcdd .Dx (){return _c .Transparent ;
+};case _gfbc :if x >=_gcdd .Dx ()||y >=_gcdd .Dy (){return _c .Transparent ;};};x =x %_gcdd .Dx ()+_gcdd .Min .X ;y =y %_gcdd .Dy ()+_gcdd .Min .Y ;return _fgd ._adff .At (x ,y );};func (_gdge *radialGradient )ColorAt (x ,y int )_c .Color {if len (_gdge ._ecb )==0{return _c .Transparent ;
+};_bfg ,_feb :=float64 (x )+0.5-_gdge ._gdcde ._bffa ,float64 (y )+0.5-_gdge ._gdcde ._fbd ;_dbe :=_egg (_bfg ,_feb ,_gdge ._gdcde ._dag ,_gdge ._gfff ._bffa ,_gdge ._gfff ._fbd ,_gdge ._gfff ._dag );_egda :=_egg (_bfg ,_feb ,-_gdge ._gdcde ._dag ,_bfg ,_feb ,_gdge ._gdcde ._dag );
+if _gdge ._bcb ==0{if _dbe ==0{return _c .Transparent ;};_agb :=0.5*_egda /_dbe ;if _agb *_gdge ._gfff ._dag >=_gdge ._abede {return _bdaf (_agb ,_gdge ._ecb );};return _c .Transparent ;};_dfd :=_egg (_dbe ,_gdge ._bcb ,0,_dbe ,-_egda ,0);if _dfd >=0{_gcd :=_g .Sqrt (_dfd );
+_cfff :=(_dbe +_gcd )*_gdge ._babb ;_gcab :=(_dbe -_gcd )*_gdge ._babb ;if _cfff *_gdge ._gfff ._dag >=_gdge ._abede {return _bdaf (_cfff ,_gdge ._ecb );}else if _gcab *_gdge ._gfff ._dag >=_gdge ._abede {return _bdaf (_gcab ,_gdge ._ecb );};};return _c .Transparent ;
+};func (_gccg *Context )Scale (x ,y float64 ){_gccg ._aad =_gccg ._aad .Scale (x ,y )};func (_bgc *Context )ResetClip (){_bgc ._aaa =nil };func (_acd *Context )SetDashOffset (offset float64 ){_acd ._aff =offset };func _gedab (_bgef _be .Path ,_ebef []float64 ,_afe float64 )_be .Path {return _cfd (_cced (_eba (_bgef ),_ebef ,_afe ));
+};func _adag (_dfga _c .Color )_gfg .Pattern {return &solidPattern {_egc :_dfga }};func NewContextForImage (im _gd .Image )*Context {return NewContextForRGBA (_geac (im ))};func (_cdca *Context )Translate (x ,y float64 ){_cdca ._aad =_cdca ._aad .Translate (x ,y )};
+func (_bdg *Context )SetColor (c _c .Color ){_bdg .setFillAndStrokeColor (c )};func (_fgdf *patternPainter )Paint (ss []_be .Span ,done bool ){_fbg :=_fgdf ._bdc .Bounds ();for _ ,_dcfc :=range ss {if _dcfc .Y < _fbg .Min .Y {continue ;};if _dcfc .Y >=_fbg .Max .Y {return ;
+};if _dcfc .X0 < _fbg .Min .X {_dcfc .X0 =_fbg .Min .X ;};if _dcfc .X1 > _fbg .Max .X {_dcfc .X1 =_fbg .Max .X ;};if _dcfc .X0 >=_dcfc .X1 {continue ;};const _ced =1<<16-1;_fbffg :=_dcfc .Y -_fgdf ._bdc .Rect .Min .Y ;_ebge :=_dcfc .X0 -_fgdf ._bdc .Rect .Min .X ;
+_baec :=(_dcfc .Y -_fgdf ._bdc .Rect .Min .Y )*_fgdf ._bdc .Stride +(_dcfc .X0 -_fgdf ._bdc .Rect .Min .X )*4;_abg :=_baec +(_dcfc .X1 -_dcfc .X0 )*4;for _fef ,_aaag :=_baec ,_ebge ;_fef < _abg ;_fef ,_aaag =_fef +4,_aaag +1{_fefa :=_dcfc .Alpha ;if _fgdf ._gcgf !=nil {_fefa =_fefa *uint32 (_fgdf ._gcgf .AlphaAt (_aaag ,_fbffg ).A )/255;
+if _fefa ==0{continue ;};};_fgg :=_fgdf ._cgafg .ColorAt (_aaag ,_fbffg );_beca ,_gddf ,_edcdb ,_aed :=_fgg .RGBA ();_fbc :=uint32 (_fgdf ._bdc .Pix [_fef +0]);_bgd :=uint32 (_fgdf ._bdc .Pix [_fef +1]);_cgcf :=uint32 (_fgdf ._bdc .Pix [_fef +2]);_gac :=uint32 (_fgdf ._bdc .Pix [_fef +3]);
+_bgb :=(_ced -(_aed *_fefa /_ced ))*0x101;_fgdf ._bdc .Pix [_fef +0]=uint8 ((_fbc *_bgb +_beca *_fefa )/_ced >>8);_fgdf ._bdc .Pix [_fef +1]=uint8 ((_bgd *_bgb +_gddf *_fefa )/_ced >>8);_fgdf ._bdc .Pix [_fef +2]=uint8 ((_cgcf *_bgb +_edcdb *_fefa )/_ced >>8);
+_fgdf ._bdc .Pix [_fef +3]=uint8 ((_gac *_bgb +_aed *_fefa )/_ced >>8);};};};func (_aeb *Context )SetRGBA255 (r ,g ,b ,a int ){_aeb ._baaf =_c .NRGBA {uint8 (r ),uint8 (g ),uint8 (b ),uint8 (a )};_aeb .setFillAndStrokeColor (_aeb ._baaf );};func _efcd (_dage float64 )float64 {return _dage *_g .Pi /180};
+func _gef (_bd ,_beg ,_adad ,_abe ,_gdc ,_gg ,_ade ,_ggc ,_afc float64 )(_ed ,_ccb float64 ){_ce :=1-_afc ;_fab :=_ce *_ce *_ce ;_gee :=3*_ce *_ce *_afc ;_df :=3*_ce *_afc *_afc ;_add :=_afc *_afc *_afc ;_ed =_fab *_bd +_gee *_adad +_df *_gdc +_add *_ade ;
+_ccb =_fab *_beg +_gee *_abe +_df *_gg +_add *_ggc ;return ;};func (_cga *Context )Height ()int {return _cga ._ca };func _faf (_adf ,_aa ,_cg ,_fb ,_dg ,_ead float64 )[]_ad .Point {_cfe :=(_g .Hypot (_cg -_adf ,_fb -_aa )+_g .Hypot (_dg -_cg ,_ead -_fb ));
+_fd :=int (_cfe +0.5);if _fd < 4{_fd =4;};_ac :=float64 (_fd )-1;_ada :=make ([]_ad .Point ,_fd );for _db :=0;_db < _fd ;_db ++{_gca :=float64 (_db )/_ac ;_cc ,_fga :=_ec (_adf ,_aa ,_cg ,_fb ,_dg ,_ead ,_gca );_ada [_db ]=_ad .NewPoint (_cc ,_fga );};
+return _ada ;};type stop struct{_dcg float64 ;_afg _c .Color ;};func _deg (_aced string )(_bfde ,_ebaa ,_bbbe ,_fbeg int ){_aced =_a .TrimPrefix (_aced ,"\u0023");_fbeg =255;if len (_aced )==3{_gfda :="\u00251\u0078\u0025\u0031\u0078\u0025\u0031x";_e .Sscanf (_aced ,_gfda ,&_bfde ,&_ebaa ,&_bbbe );
+_bfde |=_bfde <<4;_ebaa |=_ebaa <<4;_bbbe |=_bbbe <<4;};if len (_aced )==6{_cbfbc :="\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078";_e .Sscanf (_aced ,_cbfbc ,&_bfde ,&_ebaa ,&_bbbe );};if len (_aced )==8{_cgb :="\u0025\u00302\u0078\u0025\u00302\u0078\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078";
+_e .Sscanf (_aced ,_cgb ,&_bfde ,&_ebaa ,&_bbbe ,&_fbeg );};return ;};func (_dea *Context )CubicTo (x1 ,y1 ,x2 ,y2 ,x3 ,y3 float64 ){if !_dea ._bfa {_dea .MoveTo (x1 ,y1 );};_agg ,_aadd :=_dea ._ged .X ,_dea ._ged .Y ;x1 ,y1 =_dea .Transform (x1 ,y1 );
+x2 ,y2 =_dea .Transform (x2 ,y2 );x3 ,y3 =_dea .Transform (x3 ,y3 );_eac :=_cca (_agg ,_aadd ,x1 ,y1 ,x2 ,y2 ,x3 ,y3 );_aaac :=_dfb (_dea ._ged );for _ ,_cdb :=range _eac [1:]{_gdec :=_dfb (_cdb );if _gdec ==_aaac {continue ;};_aaac =_gdec ;_dea ._bcf .Add1 (_gdec );
+_dea ._geg .Add1 (_gdec );_dea ._ged =_cdb ;};};func (_aebfe *Context )Transform (x ,y float64 )(_bcge ,_fffe float64 ){return _aebfe ._aad .Transform (x ,y );};const (_caed repeatOp =iota ;_febe ;_fdf ;_gfbc ;); \ No newline at end of file