40 lines
8.8 KiB
Go
Raw Normal View History

2022-04-27 00:10:33 +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/
2022-07-13 21:28:43 +00:00
package unichart ;import (_b "bytes";_d "fmt";_dd "github.com/unidoc/unichart/render";_ce "github.com/unidoc/unipdf/v3/common";_eg "github.com/unidoc/unipdf/v3/contentstream";_bg "github.com/unidoc/unipdf/v3/contentstream/draw";_de "github.com/unidoc/unipdf/v3/core";
_e "github.com/unidoc/unipdf/v3/model";_c "image/color";_bc "io";_a "math";);type Renderer struct{_bcg int ;_ec int ;_ge float64 ;_bf *_eg .ContentCreator ;_ga *_e .PdfPageResources ;_cd _c .Color ;_ba _c .Color ;_bae float64 ;_bd *_e .PdfFont ;_gg float64 ;
_cf _c .Color ;_bce float64 ;_bcd map[*_e .PdfFont ]_de .PdfObjectName ;};func (_gd *Renderer )SetStrokeWidth (width float64 ){_gd ._bae =width ;_gd ._bf .Add_w (width )};func (_cad *Renderer )SetFillColor (color _c .Color ){_cad ._cd =color ;_ee ,_ea ,_bag ,_ :=_bgf (color );
_cad ._bf .Add_rg (_ee ,_ea ,_bag );};func (_ebf *Renderer )LineTo (x ,y int ){_ebf ._bf .Add_l (float64 (x ),float64 (y ))};func (_bb *Renderer )ArcTo (cx ,cy int ,rx ,ry ,startAngle ,deltaAngle float64 ){startAngle =_efc (2.0*_a .Pi -startAngle );deltaAngle =_efc (-deltaAngle );
_ebd ,_fg :=deltaAngle ,1;if _a .Abs (deltaAngle )> 90.0{_fg =int (_a .Ceil (_a .Abs (deltaAngle )/90.0));_ebd =deltaAngle /float64 (_fg );};var (_ebg =_bgbb (_ebd /2);_fc =_a .Abs (4.0/3.0*(1.0-_a .Cos (_ebg ))/_a .Sin (_ebg ));_fa =float64 (cx );_cc =float64 (cy );
);for _ddd :=0;_ddd < _fg ;_ddd ++{_efg :=_bgbb (startAngle +float64 (_ddd )*_ebd );_fab :=_bgbb (startAngle +float64 (_ddd +1)*_ebd );_ead :=_a .Cos (_efg );_gae :=_a .Cos (_fab );_gce :=_a .Sin (_efg );_cff :=_a .Sin (_fab );var _af []float64 ;if _ebd > 0{_af =[]float64 {_fa +rx *_ead ,_cc -ry *_gce ,_fa +rx *(_ead -_fc *_gce ),_cc -ry *(_gce +_fc *_ead ),_fa +rx *(_gae +_fc *_cff ),_cc -ry *(_cff -_fc *_gae ),_fa +rx *_gae ,_cc -ry *_cff };
}else {_af =[]float64 {_fa +rx *_ead ,_cc -ry *_gce ,_fa +rx *(_ead +_fc *_gce ),_cc -ry *(_gce -_fc *_ead ),_fa +rx *(_gae -_fc *_cff ),_cc -ry *(_cff +_fc *_gae ),_fa +rx *_gae ,_cc -ry *_cff };};if _ddd ==0{_bb ._bf .Add_l (_af [0],_af [1]);};_bb ._bf .Add_c (_af [2],_af [3],_af [4],_af [5],_af [6],_af [7]);
};};func NewRenderer (cc *_eg .ContentCreator ,res *_e .PdfPageResources )func (int ,int )(_dd .Renderer ,error ){return func (_bfe ,_cdg int )(_dd .Renderer ,error ){_ef :=&Renderer {_bcg :_bfe ,_ec :_cdg ,_ge :72,_bf :cc ,_ga :res ,_bcd :map[*_e .PdfFont ]_de .PdfObjectName {}};
_ef .ResetStyle ();return _ef ,nil ;};};func (_ddg *Renderer )wrapText (_cdb string )[]string {var (_egff []string ;_bgb []rune ;);for _ ,_aba :=range _cdb {if _aba =='\n'{_egff =append (_egff ,string (_bgb ));_bgb =[]rune {};continue ;};_bgb =append (_bgb ,_aba );
};if len (_bgb )> 0{_egff =append (_egff ,string (_bgb ));};return _egff ;};func (_fe *Renderer )SetStrokeDashArray (dashArray []float64 ){_fb :=make ([]int64 ,len (dashArray ));for _edd ,_gb :=range dashArray {_fb [_edd ]=int64 (_gb );};_fe ._bf .Add_d (_fb ,0);
};func (_eda *Renderer )SetFontColor (color _c .Color ){_eda ._cf =color };func (_dg *Renderer )Fill (){_dg ._bf .Add_f ()};func (_gef *Renderer )Circle (radius float64 ,x ,y int ){_ebb :=radius ;if _aff :=_gef ._bae ;_aff !=0{_ebb -=_aff /2;};_cec :=_ebb *0.551784;
_ddf :=_bg .CubicBezierPath {Curves :[]_bg .CubicBezierCurve {_bg .NewCubicBezierCurve (-_ebb ,0,-_ebb ,_cec ,-_cec ,_ebb ,0,_ebb ),_bg .NewCubicBezierCurve (0,_ebb ,_cec ,_ebb ,_ebb ,_cec ,_ebb ,0),_bg .NewCubicBezierCurve (_ebb ,0,_ebb ,-_cec ,_cec ,-_ebb ,0,-_ebb ),_bg .NewCubicBezierCurve (0,-_ebb ,-_cec ,-_ebb ,-_ebb ,-_cec ,-_ebb ,0)}};
if _abc :=_gef ._bae ;_abc !=0{_ddf =_ddf .Offset (_abc /2,_abc /2);};_ddf =_ddf .Offset (float64 (x ),float64 (y ));_bg .DrawBezierPathWithCreator (_ddf ,_gef ._bf );};func (_bgg *Renderer )MoveTo (x ,y int ){_bgg ._bf .Add_m (float64 (x ),float64 (y ))};
func (_ecc *Renderer )Close (){_ecc ._bf .Add_h ()};func (_bad *Renderer )FillStroke (){_bad ._bf .Add_B ()};func (_gc *Renderer )SetDPI (dpi float64 ){_gc ._ge =dpi };func _dge (_da string ,_egc int ,_ffe func (_de .PdfObjectName )bool )_de .PdfObjectName {_fd :=_de .PdfObjectName (_d .Sprintf ("\u0025\u0073\u0025\u0064",_da ,_egc ));
for _ceb :=_egc ;_ffe (_fd );{_ceb ++;_fd =_de .PdfObjectName (_d .Sprintf ("\u0025\u0073\u0025\u0064",_da ,_ceb ));};return _fd ;};func (_agd *Renderer )SetFontSize (size float64 ){_agd ._gg =size };func (_ff *Renderer )SetTextRotation (radians float64 ){_ff ._bce =_efc (-radians )};
func (_f *Renderer )GetDPI ()float64 {return _f ._ge };func (_ab *Renderer )ResetStyle (){_ab .SetFillColor (_c .Black );_ab .SetStrokeColor (_c .Transparent );_ab .SetStrokeWidth (0);_ab .SetFont (_e .DefaultFont ());_ab .SetFontColor (_c .Black );_ab .SetFontSize (12);
_ab .SetTextRotation (0);};func (_ag *Renderer )SetClassName (name string ){};func (_eff *Renderer )ClearTextRotation (){_eff ._bce =0};func (_ca *Renderer )SetStrokeColor (color _c .Color ){_ca ._ba =color ;_eb ,_gca ,_bac ,_ :=_bgf (color );_ca ._bf .Add_RG (_eb ,_gca ,_bac );
};func (_df *Renderer )QuadCurveTo (cx ,cy ,x ,y int ){_df ._bf .Add_v (float64 (x ),float64 (y ),float64 (cx ),float64 (cy ));};func (_abe *Renderer )Stroke (){_abe ._bf .Add_S ()};func _efc (_cdgb float64 )float64 {return _cdgb *180/_a .Pi };func (_cg *Renderer )getTextWidth (_ccf string )float64 {var _fbg float64 ;
for _ ,_faab :=range _ccf {_deg ,_gbcf :=_cg ._bd .GetRuneMetrics (_faab );if !_gbcf {_ce .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0075\u006e\u0073\u0075\u0070\u0070\u006fr\u0074e\u0064 \u0072u\u006e\u0065\u0020\u0025\u0076\u0020\u0069\u006e\u0020\u0066\u006f\u006e\u0074",_faab );
};_fbg +=_deg .Wx ;};return _cg ._gg *_fbg /1000.0;};func _bgbb (_ega float64 )float64 {return _ega *_a .Pi /180.0};func _bgf (_fac _c .Color )(float64 ,float64 ,float64 ,float64 ){_fba ,_ac ,_ffb ,_ddb :=_ffa (_fac );return float64 (_fba )/255,float64 (_ac )/255,float64 (_ffb )/255,float64 (_ddb )/255;
};func (_aab *Renderer )Save (w _bc .Writer )error {if w ==nil {return nil ;};_ ,_bade :=_bc .Copy (w ,_b .NewBuffer (_aab ._bf .Bytes ()));return _bade ;};func (_ccg *Renderer )SetFont (font _dd .Font ){_efgc ,_gf :=font .(*_e .PdfFont );if !_gf {_ce .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0069\u006e\u0076\u0061\u006c\u0069d\u0020\u0066\u006f\u006e\u0074\u0020\u0074\u0079\u0070\u0065");
return ;};_bdd ,_gf :=_ccg ._bcd [_efgc ];if !_gf {_bdd =_dge ("\u0046\u006f\u006e\u0074",1,_ccg ._ga .HasFontByName );if _feg :=_ccg ._ga .SetFontByName (_bdd ,_efgc .ToPdfObject ());_feg !=nil {_ce .Log .Debug ("\u0045\u0052\u0052\u004f\u0052:\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0061\u0064d\u0020\u0066\u006f\u006e\u0074\u0020\u0025\u0076\u0020\u0074\u006f\u0020\u0072\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u0073",_efgc );
};_ccg ._bcd [_efgc ]=_bdd ;};_ccg ._bf .Add_Tf (_bdd ,_ccg ._gg );_ccg ._bd =_efgc ;};func _ffa (_ggg _c .Color )(uint8 ,uint8 ,uint8 ,uint8 ){_efd ,_fgeb ,_cffc ,_ccda :=_ggg .RGBA ();return uint8 (_efd >>8),uint8 (_fgeb >>8),uint8 (_cffc >>8),uint8 (_ccda >>8);
};func (_gec *Renderer )Text (text string ,x ,y int ){_gec ._bf .Add_q ();_gec .SetFont (_gec ._bd );_ecb ,_ccd ,_feb ,_ :=_bgf (_gec ._cf );_gec ._bf .Add_rg (_ecb ,_ccd ,_feb );_gec ._bf .Translate (float64 (x ),float64 (y )).Scale (1,-1);if _ecg :=_gec ._bce ;
_ecg !=0{_gec ._bf .RotateDeg (_ecg );};_gec ._bf .Add_BT ().Add_TL (_gec ._gg );var (_cee =_gec ._bd .Encoder ();_eec =_gec .wrapText (text );_db =len (_eec ););for _gfa ,_fege :=range _eec {_gec ._bf .Add_TJ (_de .MakeStringFromBytes (_cee .Encode (_fege )));
if _gfa !=_db -1{_gec ._bf .Add_Tstar ();};};_gec ._bf .Add_ET ();_gec ._bf .Add_Q ();};func (_abf *Renderer )MeasureText (text string )_dd .Box {_gad :=_abf ._gg ;_dfd ,_aa :=_abf ._bd .GetFontDescriptor ();if _aa !=nil {_ce .Log .Debug ("W\u0041\u0052\u004e\u003a\u0020\u0055n\u0061\u0062\u006c\u0065\u0020\u0074o\u0020\u0067\u0065\u0074\u0020\u0066\u006fn\u0074\u0020\u0064\u0065\u0073\u0063\u0072\u0069\u0070\u0074o\u0072");
}else {_faa ,_gea :=_dfd .GetCapHeight ();if _gea !=nil {_ce .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0055\u006e\u0061\u0062\u006c\u0065\u0020t\u006f\u0020\u0067\u0065\u0074\u0020f\u006f\u006e\u0074\u0020\u0063\u0061\u0070\u0020\u0068\u0065\u0069\u0067\u0068t\u003a\u0020\u0025\u0076",_gea );
}else {_gad =_faa /1000.0*_abf ._gg ;};};var (_geca =0.0;_egf =_abf .wrapText (text ););for _ ,_ged :=range _egf {if _gab :=_abf .getTextWidth (_ged );_gab > _geca {_geca =_gab ;};};_fcf :=_dd .NewBox (0,0,int (_geca ),int (_gad ));if _dcc :=_abf ._bce ;
_dcc !=0{_fcf =_fcf .Corners ().Rotate (_dcc ).Box ();};return _fcf ;};