mirror of
https://github.com/unidoc/unioffice.git
synced 2025-04-25 13:48:53 +08:00
213 lines
60 KiB
Go
213 lines
60 KiB
Go
//
|
|
// 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 convertutils ;import (_eg "bytes";_cb "errors";_cf "fmt";_dfc "github.com/unidoc/unichart";_be "github.com/unidoc/unichart/dataset";_efg "github.com/unidoc/unichart/render";_ff "github.com/unidoc/unioffice/common/logger";_cba "github.com/unidoc/unioffice/document";
|
|
_cg "github.com/unidoc/unioffice/measurement";_ca "github.com/unidoc/unioffice/schema/soo/dml";_cc "github.com/unidoc/unioffice/schema/soo/dml/chart";_ec "github.com/unidoc/unioffice/spreadsheet";_baa "github.com/unidoc/unioffice/spreadsheet/format";_bd "github.com/unidoc/unioffice/spreadsheet/formula";
|
|
_gg "github.com/unidoc/unioffice/spreadsheet/reference";_f "github.com/unidoc/unipdf/v3/core";_a "github.com/unidoc/unipdf/v3/creator";_cd "github.com/unidoc/unipdf/v3/model";_ba "github.com/unidoc/unipdf/v3/render";_ee "github.com/unidoc/unitype";_c "image";
|
|
_b "image/color";_dd "math";_g "os";_bb "regexp";_ef "sort";_df "strconv";_ded "strings";_de "sync";_d "unicode";);var _bgd =map[string ]FontStyle {"\u0052e\u0067\u0075\u006c\u0061\u0072":FontStyle_Regular ,"\u0042\u006f\u006c\u0064":FontStyle_Bold ,"\u0049\u0074\u0061\u006c\u0069\u0063":FontStyle_Italic ,"B\u006f\u006c\u0064\u0020\u0049\u0074\u0061\u006c\u0069\u0063":FontStyle_BoldItalic };
|
|
func LoadFontFromFile (filename string )(*_cd .PdfFont ,error ){if !_ded .HasSuffix (filename ,"\u002e\u0074\u0074\u0066"){_ff .Log .Debug ("\u0055\u006es\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0066\u006f\u006e\u0074\u0020\u0066\u0069\u006c\u0065\u0020\u0066\u006f\u0072ma\u0074\u002e");
|
|
return nil ,_cf .Errorf ("\u0055\u006e\u0073\u0075\u0070\u0070o\u0072\u0074\u0065\u0064\u0020f\u006f\u006e\u0074\u0020\u0066\u0069l\u0065\u0020\u0066\u006f\u0072m\u0061\u0074\u002c\u0020\u0063\u0075\u0072\u0072\u0065\u006e\u0074\u006cy\u0020\u006f\u006e\u006c\u0079\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0020\u0054T\u0046\u0020\u0066\u006f\u006e\u0074\u0020\u0066i\u006c\u0065\u002e");
|
|
};_aaf ,_bfde :=_cd .NewCompositePdfFontFromTTFFile (filename );if _bfde !=nil {return nil ,_bfde ;};return _aaf ,nil ;};func (_gag barSerByOrder )Less (i ,j int )bool {return _gag [i ].Order .ValAttr < _gag [j ].Order .ValAttr };var _bgg =_adb (2);func (_cff *creatorContext )drawBorderWithProps (_bffc *_ca .CT_ShapeProperties ,_ecee *Rectangle ,_dbbd float64 ){if _ecee !=nil &&_bffc !=nil &&_bffc .Ln !=nil &&_bffc .Ln .SolidFill !=nil {_bcdc :=_cff .getPdfColorFromSolidFill (_bffc .Ln .SolidFill );
|
|
DrawRectangle (_cff ._efbfa ,_ecee ,_dbbd ,_bcdc );};};func (_ae *creatorContext )drawAreaChart (_ggb *_cc .CT_AreaChart ,_aa *Rectangle ,_ea *_cc .CT_PlotAreaChoice1 ,_cge float64 )([]*legendItem ,error ){_af :=[]*legendItem {};_bc :=_ggb .Ser ;_afc :=make (map[int ][]float64 );
|
|
_aac :=make (map[int ][]float64 );_ce :=make (map[int ]_a .Color );for _afa ,_gb :=range _bc {_ce [_afa ]=_a .ColorWhite ;if _eee :=_gb .SpPr ;_eee !=nil {_ggd :=_ae .getPdfColorFromSolidFill (_eee .SolidFill );if _ggd !=nil {_ce [_afa ]=_ggd ;};};if _gbf :=_gb .Val ;
|
|
_gbf !=nil {if _aeg :=_gbf .Choice ;_aeg !=nil {if _ab :=_aeg .NumRef ;_ab !=nil {if _ccf :=_ab .NumCache ;_ccf !=nil {for _ ,_ccd :=range _ccf .Pt {_afc [_afa ]=append (_afc [_afa ],float64 (_ccd .IdxAttr ));_bbg ,_ :=_df .ParseFloat (_ded .TrimSpace (_ccd .V ),64);
|
|
_aac [_afa ]=append (_aac [_afa ],_bbg );};};};};};};_ge :=true ;_cbf :="";_fe :="";if len (_ea .ValAx )> 1{if _ea .ValAx [0].Delete !=nil &&_ea .ValAx [1].Delete !=nil {if !*(*_ea .ValAx [0].Delete ).ValAttr &&!*(*_ea .ValAx [1].Delete ).ValAttr {_ge =false ;
|
|
};};_cbf =_ae .getTitle (_ea .ValAx [0].Title );_fe =_ae .getTitle (_ea .ValAx [1].Title );};_bdd :=_efg .Style {Hidden :_ge ,FontSize :8*_cge };_fb :=&_dfc .Chart {Series :[]_be .Series {},YAxisSecondary :_dfc .YAxis {Style :_bdd ,Name :_fe ,NameStyle :_bdd },XAxis :_dfc .XAxis {Style :_bdd ,Name :_cbf ,NameStyle :_bdd },YAxis :_dfc .YAxis {Style :_efg .Style {Hidden :true }}};
|
|
for _gc :=0;_gc < len (_ce );_gc ++{_agg ,_ed ,_geb :=_ce [_gc ].ToRGB ();_fa :=_be .ContinuousSeries {XValues :_afc [_gc ],YValues :_aac [_gc ],Style :_efg .Style {StrokeWidth :1,FillColor :_b .RGBA {uint8 (_agg *255),uint8 (_ed *255),uint8 (_geb *255),255}}};
|
|
_fb .Series =append (_fb .Series ,_fa );};_fb .SetHeight (int (_dd .Abs (_aa .Top -_aa .Bottom )));_fb .SetWidth (int (_dd .Abs (_aa .Right -_aa .Left )));_bed :=_ae ._efbfa ;_dfd :=_a .NewChart (_fb );_dfd .SetPos (_aa .Left ,_aa .Top );_ga :=_bed .Draw (_dfd );
|
|
if _ga !=nil {return nil ,_ga ;};return _af ,nil ;};type serCategory struct{_cab string ;_bgbe []serValue ;};func GetRegisteredFont (name string ,style FontStyle )*_cd .PdfFont {_agab ._aagb .Lock ();defer _agab ._aagb .Unlock ();if _fgea ,_aebc :=_agab ._dega [name ];
|
|
_aebc {if _efd ,_cdd :=_fgea [style ];_cdd {return _efd ;};};return nil ;};func (_aage *creatorContext )getTitle (_bec *_cc .CT_Title )string {_bgbb :="";if _bec !=nil &&_bec .Tx !=nil &&_bec .Tx .Choice !=nil &&_bec .Tx .Choice .Rich !=nil {if len (_bec .Tx .Choice .Rich .P )> 0{for _ ,_ffbg :=range _bec .Tx .Choice .Rich .P {if len (_ffbg .EG_TextRun )> 0{_bgbb +="\u000a"+_ffbg .EG_TextRun [0].R .T ;
|
|
};};};};return _bgbb ;};func AssignStdFontByName (style _a .TextStyle ,fontName string )*_cd .PdfFont {_bbdf :=_cd .StdFontName (fontName );return _cd .NewStandard14FontMustCompile (_bbdf );};var _agab =fontsMap {_aagb :&_de .Mutex {},_dega :map[string ]map[FontStyle ]*_cd .PdfFont {}};
|
|
func (_aedcf *creatorContext )getPdfColorFromSolidFill (_cgag *_ca .CT_SolidColorFillProperties )_a .Color {if _cgag ==nil {return nil ;};_fabg :="";if _bebf :=_cgag .SrgbClr ;_bebf !=nil {_fabg =_bebf .ValAttr ;}else if _ddcc :=_cgag .SchemeClr ;_ddcc !=nil {_fabg =_cced (_ddcc .ValAttr ,_aedcf ._fcbc );
|
|
_fabg =AdjustColor (_fabg ,_ddcc .EG_ColorTransform );};if _fabg ==""{return nil ;};return _a .ColorRGBFromHex ("\u0023"+_fabg );};func DrawLine (c *_a .Creator ,x0 ,y0 ,x1 ,y1 ,width float64 ,color _a .Color ){if color ==nil {return ;};_dcga :=c .NewLine (x0 ,y0 ,x1 ,y1 );
|
|
_dcga .SetLineWidth (width );_dcga .SetColor (color );c .Draw (_dcga );};func FromSTCoordinate (st _ca .ST_Coordinate )int64 {if _bfgd :=st .ST_CoordinateUnqualified ;_bfgd !=nil {return *_bfgd ;};return 0;};func RegisterFontsFromDirectory (dirName string )error {_dab ,_cgfg :=_g .Open (dirName );
|
|
if _cgfg !=nil {return _cgfg ;};defer _dab .Close ();_beeg ,_cgfg :=_dab .Readdirnames (0);if _cgfg !=nil {return _cgfg ;};for _ ,_ddf :=range _beeg {if _ded .HasSuffix (_ddf ,"\u002e\u0074\u0074\u0066"){_becb :=dirName +"\u002f"+_ddf ;_gcfc :=_bcgd (_becb );
|
|
if _gcfc !=nil {_ff .Log .Debug ("\u0075\u006ea\u0062\u006c\u0065\u0020\u0074o\u0020\u0070\u0072\u006f\u0063e\u0073\u0073\u0020\u0061\u006e\u0064\u0020\u0072\u0065\u0067\u0069\u0073\u0074\u0065\u0072\u0020\u0066\u006f\u006e\u0074\u0020\u0066\u0072\u006f\u006d\u0020\u0054\u0054\u0046\u0020\u0066\u0069\u006c\u0065\u0020\u0025\u0073",_gcfc );
|
|
continue ;};};};return nil ;};type BorderPosition byte ;func (_gfa *creatorContext )drawBarChart (_dee *_cc .CT_BarChart ,_gcc *Rectangle ,_ffb *_cc .CT_PlotAreaChoice1 ,_dc *_ec .Workbook )([]*legendItem ,error ){var _gbc bool ;if _gee :=_dee .BarDir ;
|
|
_gee !=nil {_gbc =_gee .ValAttr ==_cc .ST_BarDirBar ;};_cdf :=_dee .Ser ;_ef .Sort (barSerByOrder (_cdf ));_dcg :=map[string ]serCategory {};_edb :=[]string {};_afg :=[]*legendItem {};_fd :=_dd .Inf (1);_bdc :=_dd .Inf (-1);for _ ,_gcg :=range _cdf {var _fgg string ;
|
|
if _cfe :=_gcg .Tx ;_cfe !=nil {if _gac :=_cfe .Choice ;_gac !=nil {if _gac .V !=nil {_fgg =*_gac .V ;}else if _ggg :=_gac .StrRef ;_ggg !=nil {if _ddg :=_ggg .StrCache ;_ddg !=nil {for _ ,_agb :=range _ddg .Pt {_fgg =_agb .V ;};};};};};if _gbff :=_gcg .Cat ;
|
|
_gbff !=nil {if _gd :=_gbff .Choice ;_gd !=nil {if _eed :=_gd .StrRef ;_eed !=nil {if _aga :=_eed .F ;_aga !=""&&_dc !=nil {_fbe ,_gfc ,_fgd ,_aab :=ParseExcelRange (_aga );if _aab ==nil {for _ ,_da :=range _dc .Sheets (){if _da .Name ()==_ded .Trim (_fbe ,"\u0027"){_cga :=_gfc .String ();
|
|
for _cee :=_gfc .RowIdx ;_cee <=_fgd .RowIdx ;_cee +=1{_aee :=_ded .ReplaceAll (_cga ,_cf .Sprint (_gfc .RowIdx ),_cf .Sprint (_cee ));_gfa .addCatName (_da .Cell (_aee ).GetString (),_dcg ,&_edb );};break ;};};};};if _cgg :=_eed .StrCache ;_cgg !=nil {for _ ,_ddc :=range _cgg .Pt {_gfa .addCatName (_ddc .V ,_dcg ,&_edb );
|
|
};};}else if _fggb :=_gd .NumRef ;_fggb !=nil {if _bcc :=_fggb .NumCache ;_bcc !=nil {var _dbc string ;if _bcc .FormatCode !=nil {_dbc =*_bcc .FormatCode ;};for _ ,_fda :=range _bcc .Pt {var _fde string ;if _fda .FormatCodeAttr ==nil {_fde =_dbc ;}else {_fde =*_fda .FormatCodeAttr ;
|
|
};var _bf string ;_ad ,_beg :=_df .ParseFloat (_fda .V ,64);if _beg !=nil {_bf =_fda .V ;}else {_bf =_baa .Number (_ad ,_fde );};_gfa .addCatName (_bf ,_dcg ,&_edb );};};};};};if _dcb :=_gcg .Val ;_dcb !=nil {if _cgd :=_dcb .Choice ;_cgd !=nil {if _aacd :=_cgd .NumRef ;
|
|
_aacd !=nil {if _bgb :=_aacd .F ;_bgb !=""&&_dc !=nil {_eda ,_aec ,_eb ,_bcf :=ParseExcelRange (_bgb );if _bcf ==nil {for _ ,_afaa :=range _dc .Sheets (){if _afaa .Name ()==_ded .Trim (_eda ,"\u0027"){_cbd :=_aec .String ();for _cec :=_aec .RowIdx ;_cec <=_eb .RowIdx ;
|
|
_cec +=1{_ebe :=_ded .ReplaceAll (_cbd ,_cf .Sprint (_aec .RowIdx ),_cf .Sprint (_cec ));if _afaa .FormulaContext ().HasFormula (_ebe ){_dbf :=_bd .NewEvaluator ();_ebd :=_afaa .FormulaContext ().Cell (_ebe ,_dbf );_cdc :=_ebd .Value ();_gfa .addCatValue (_cdc ,_dcg ,_edb ,(int )(_cec -_aec .RowIdx ),&_fd ,&_bdc ,_fgg ,_gcg .SpPr );
|
|
}else {_eea :=_afaa .Cell (_ebe ).GetString ();_gfa .addCatValue (_eea ,_dcg ,_edb ,(int )(_cec -_aec .RowIdx ),&_fd ,&_bdc ,_fgg ,_gcg .SpPr );};};break ;};};};};if _efa :=_aacd .NumCache ;_efa !=nil {for _fdf ,_faa :=range _efa .Pt {_gfa .addCatValue (_faa .V ,_dcg ,_edb ,_fdf ,&_fd ,&_bdc ,_fgg ,_gcg .SpPr );
|
|
};};};};};_afg =append (_afg ,&legendItem {_gae :_fgg ,_bcg :_gcg .SpPr });};var _agba float64 ;var _eba ,_bag float64 ;if _bdc ==0&&_fd ==0{_agba =0.2;_bag =0;_eba =1;}else {var _fdd float64 ;if _cac :=_dd .Abs (_fd );_bdc < _cac {_fdd =_cac ;}else {_fdd =_bdc ;
|
|
};_ade :=_dd .Pow (10,_dd .Floor (_dd .Log10 (_fdd )));_bbe :=_fdd /_ade ;if _bbe < 4.29{_agba =0.5;}else if _bbe >=4.29&&_bbe < 8.58{_agba =1;}else {_agba =2;};_agba *=_ade ;if _bdc <=0{_eba =0;}else {_eba =(_dd .Ceil (_bdc /_agba )+1)*_agba ;};if _fd >=0{_bag =0;
|
|
}else {_bag =(_dd .Floor (_fd /_agba )-1)*_agba ;};};_gde :=_gfa .drawAxes (_ffb ,_bag ,_eba ,_agba ,_edb ,_gcc ,_gbc );if _gde !=nil {return nil ,_gde ;};_ccc :=0.0;if _dee .GapWidth !=nil {if _baf :=_dee .GapWidth .ValAttr ;_baf !=nil {if _gdf :=_baf .ST_GapAmountUShort ;
|
|
_gdf !=nil {_ccc =float64 (*_gdf )/100.0;};};};_fec :=_gcc .Right -_gcc .Left ;_ece :=_gcc .Bottom -_gcc .Top ;_gfd :=float64 (len (_edb ));if _gbc {_gbce :=_eba /(_eba -_bag )*_fec ;_ecg :=-_bag /(_eba -_bag )*_fec ;_dfdc :=_gcc .Left +_ecg ;_cecg :=_ece /_gfd ;
|
|
for _dg ,_eeg :=range _edb {_abg :=_dcg [_eeg ];_dfdf :=float64 (len (_abg ._bgbe ))+_ccc ;_egc :=_cecg /_dfdf ;_dcgg :=_egc *_ccc ;_dcd :=_gcc .Bottom -float64 (_dg )*_cecg -_dcgg /2-_egc ;for _ ,_dac :=range _abg ._bgbe {if _dac ._ffe ==0{continue ;};
|
|
var _ecb ,_fed float64 ;if _dac ._ffe > 0{_fed =_dac ._ffe /_eba *_gbce ;_gfa .drawRectangleWithProps (_dac ._ceeb ,_dfdc ,_dcd ,_fed ,_egc ,false );}else {_fed =_dac ._ffe /_bag *_ecg ;_ecb =_dfdc -_fed ;_gfa .drawRectangleWithProps (_dac ._ceeb ,_ecb ,_dcd ,_fed ,_egc ,false );
|
|
};_dcd -=_egc ;};};}else {_ggbd :=_eba /(_eba -_bag )*_ece ;_fgf :=-_bag /(_eba -_bag )*_ece ;_acd :=_gcc .Top +_ggbd ;_bfa :=_fec /_gfd ;for _dfce ,_gaca :=range _edb {_afe :=_dcg [_gaca ];_bee :=float64 (len (_afe ._bgbe ))+_ccc ;_ebde :=_bfa /_bee ;
|
|
_bfb :=_ebde *_ccc ;_ddd :=_gcc .Left +float64 (_dfce )*_bfa +_bfb /2;for _ ,_adf :=range _afe ._bgbe {var _dec ,_deg float64 ;if _adf ._ffe > 0{_deg =_adf ._ffe /_eba *_ggbd ;_dec =_acd -_deg ;_gfa .drawRectangleWithProps (_adf ._ceeb ,_ddd ,_dec ,_ebde ,_deg ,false );
|
|
}else {_deg =_adf ._ffe /_bag *_fgf ;_gfa .drawRectangleWithProps (_adf ._ceeb ,_ddd ,_acd ,_ebde ,_deg ,false );};_ddd +=_ebde ;};};};return _afg ,nil ;};func _bcgd (_deed string )error {if !_ded .HasSuffix (_deed ,"\u002e\u0074\u0074\u0066"){_ff .Log .Debug ("\u0055\u006es\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0066\u006f\u006e\u0074\u0020\u0066\u0069\u006c\u0065\u0020\u0066\u006f\u0072ma\u0074\u002e");
|
|
return _cf .Errorf ("\u0055\u006e\u0073\u0075\u0070\u0070o\u0072\u0074\u0065\u0064\u0020f\u006f\u006e\u0074\u0020\u0066\u0069l\u0065\u0020\u0066\u006f\u0072m\u0061\u0074\u002c\u0020\u0063\u0075\u0072\u0072\u0065\u006e\u0074\u006cy\u0020\u006f\u006e\u006c\u0079\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0020\u0054T\u0046\u0020\u0066\u006f\u006e\u0074\u0020\u0066i\u006c\u0065\u002e");
|
|
};_eage ,_cad :=_ee .ParseFile (_deed );if _cad !=nil {_ff .Log .Debug ("\u0043a\u006e\u006e\u006f\u0074\u0020\u0070\u0061\u0072\u0073\u0065\u0020T\u0054\u0046\u0020\u0066\u0069\u006c\u0065\u0020\u0025\u0073",_cad );return _cad ;};_efga ,_cad :=_cd .NewCompositePdfFontFromTTFFile (_deed );
|
|
if _cad !=nil {return _cad ;};_dcea :=_eage .GetNameRecords ();for _ ,_dggf :=range _dcea {_ebgc :=_dggf [1];if _ebgc ==""{continue ;};_cbe :=make ([]byte ,0);for _faff :=0;_faff < len (_ebgc );_faff ++{if _ebgc [_faff ]==39||_ebgc [_faff ]==92{continue ;
|
|
};_eaga :=4;if _faff +_eaga < len (_ebgc ){if _ebgc [_faff :_faff +_eaga ]=="\u0000"{_faff =_faff +_eaga +1;continue ;};};_cbe =append (_cbe ,_ebgc [_faff ]);};_ebgc =_ded .Replace (string (_cbe ),"\u0078\u0030\u0030","",-1);_cgba :=_dggf [2];if _cgba ==""{return _cf .Errorf ("N\u006f\u0020\u0073\u0074\u0079\u006ce\u0020\u0069\u006e\u0066\u006f\u0072m\u0061\u0074\u0069\u006f\u006e\u0020\u0069n\u0020\u0074\u0068\u0065\u0020\u0066\u0069\u006c\u0065\u0020%\u0073",_deed );
|
|
};_cbe =make ([]byte ,0);for _eeabf :=0;_eeabf < len (_cgba );_eeabf ++{if _cgba [_eeabf ]==39||_cgba [_eeabf ]==92{continue ;};_dgce :=4;if _eeabf +_dgce < len (_cgba ){if _cgba [_eeabf :_eeabf +_dgce ]=="\u0000"{_eeabf =_eeabf +_dgce +1;continue ;};};
|
|
_cbe =append (_cbe ,_cgba [_eeabf ]);};_cgba =_ded .Replace (string (_cbe ),"\u0078\u0030\u0030","",-1);RegisterFont (_ebgc ,_bgd [_cgba ],_efga );};return nil ;};func _bda (_gcad *_cba .Document ,_fgbe ,_ggdg ,_fdg string )error {_afacd ,_fdbe :=_gcad .GetFontBytesByRelId (_ggdg );
|
|
if _fdbe !=nil {return _fdbe ;};_geegb ,_fdbe :=_faaa (_fdg );if _fdbe !=nil {return _fdbe ;};for _gad :=0;_gad < 32;_gad ++{_ggdbc :=_gad %len (_geegb );_afacd [_gad ]=_afacd [_gad ]^_geegb [_ggdbc ];};_fcc :=_gcad .TmpPath +"\u002f"+_fgbe +"\u002e\u0074\u0074\u0066";
|
|
_fdbe =_g .WriteFile (_fcc ,_afacd ,0644);if _fdbe !=nil {return _fdbe ;};_bcgd (_fcc );return nil ;};var RtlFontFile *_cd .PdfFont ;var _deb =_adb (1.5);func RegisterEmbeddedFonts (d *_cba .Document )error {_efca :=d .FontTable ();if _efca ==nil {return nil ;
|
|
};for _ ,_eaab :=range _efca .Font {if _eaab .EmbedRegular !=nil {return _bda (d ,_eaab .NameAttr ,_eaab .EmbedRegular .IdAttr ,_eaab .EmbedRegular .FontKeyAttr );};if _eaab .EmbedBold !=nil {return _bda (d ,_eaab .NameAttr ,_eaab .EmbedBold .IdAttr ,_eaab .EmbedBold .FontKeyAttr );
|
|
};if _eaab .EmbedItalic !=nil {return _bda (d ,_eaab .NameAttr ,_eaab .EmbedItalic .IdAttr ,_eaab .EmbedItalic .FontKeyAttr );};if _eaab .EmbedBoldItalic !=nil {return _bda (d ,_eaab .NameAttr ,_eaab .EmbedBoldItalic .IdAttr ,_eaab .EmbedBoldItalic .FontKeyAttr );
|
|
};};return nil ;};func AdjustColorByLumMod (colorStr string ,lum float64 )string {var _cfg ,_cca ,_fge uint8 ;_egf ,_ :=_cf .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_cfg ,&_cca ,&_fge );if _egf !=3{return "";
|
|
};_eac ,_deee ,_dgda :=_eede (_cfg ,_cca ,_fge );_dgda =lum *_dgda ;_cfg ,_cca ,_fge =_add (_eac ,_deee ,_dgda );return _cf .Sprintf ("\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",_cfg ,_cca ,_fge );};func _cfb (_ebeb *_cc .ChartSpace ,_eca ,_dcc float64 ,_eef *_ca .Theme ,_edc bool ,_ceee *_ec .Workbook )(*_a .Creator ,error ){_acb :=1.0;
|
|
if _edc {_acb =8.0;};_gba :=&Rectangle {};_dfg :=&Rectangle {Top :_gba .Top ,Bottom :_dcc -_gba .Bottom ,Left :_gba .Left ,Right :_eca -_gba .Right };_fee :=MakeTempCreator (_eca *_acb +1,_dcc *_acb +1);_cfc :=&creatorContext {_efbfa :_fee ,_fcbc :_eef ,_fbce :_acb };
|
|
var _geeg bool ;if _fba :=_ebeb .Chart ;_fba !=nil {_eeaa :=_fba .PlotArea ;if _eeaa ==nil {return nil ,_cb .New ("\u004e\u006f\u0020p\u006c\u006f\u0074\u0020\u0061\u0072\u0065\u0061");};_gbcf :=0.0;if _fba .AutoTitleDeleted !=nil &&_fba .AutoTitleDeleted .ValAttr !=nil &&!*_fba .AutoTitleDeleted .ValAttr {if _fba .Title !=nil &&_fba .Title .Overlay !=nil &&_fba .Title .Overlay .ValAttr !=nil &&!*_fba .Title .Overlay .ValAttr {_gbcf =_adb (10);
|
|
};_egb :=_cfc .getTitle (_fba .Title );if _egb ==""{_egb ="C\u0068\u0061\u0072\u0074\u0020\u0054\u0069\u0074\u006c\u0065";};_cfc .drawTitle (_egb ,_dfg .Left +_dfg .Right /2,_adb (5));};_fedc :=&Rectangle {Top :_adb (10)+_gbcf ,Bottom :_dfg .Bottom -_adb (15),Left :_adb (10),Right :_dfg .Right -_adb (10)};
|
|
var _aacc *Rectangle ;_aeb :=_fba .Legend ;if _aeb !=nil {_cdb :=_aeb .Overlay !=nil &&_aeb .Overlay .ValAttr !=nil &&*_aeb .Overlay .ValAttr ;if _egcg :=_aeb .LegendPos ;_egcg !=nil {switch _egcg .ValAttr {case _cc .ST_LegendPosTr :if !_cdb {_fedc =&Rectangle {Top :_adb (25)+_gbcf ,Bottom :_dfg .Bottom -_adb (10),Left :_adb (10),Right :_dfg .Right -_adb (25)};
|
|
};_aacc =&Rectangle {Top :_adb (2.5)+_gbcf ,Bottom :_adb (22.5),Left :_dfg .Right -_adb (22.5),Right :_dfg .Right -_adb (2.5)};case _cc .ST_LegendPosT :_aacc =&Rectangle {Top :_adb (2.5)+_gbcf ,Bottom :_adb (7.5),Left :(_dfg .Right -_dfg .Left )*0.25,Right :(_dfg .Right -_dfg .Left )*0.75};
|
|
if !_cdb {_fedc =&Rectangle {Top :_adb (12.5)+_gbcf ,Bottom :_dfg .Bottom -_adb (15),Left :_adb (10),Right :_dfg .Right -_adb (5)};};_geeg =true ;case _cc .ST_LegendPosB :_aacc =&Rectangle {Top :_dfg .Bottom -_adb (7.5)+_gbcf ,Bottom :_dfg .Bottom -_adb (2.5),Left :(_dfg .Right -_dfg .Left )*0.25,Right :(_dfg .Right -_dfg .Left )*0.75};
|
|
if !_cdb {_fedc =&Rectangle {Top :_adb (5)+_gbcf ,Bottom :_dfg .Bottom -_adb (15),Left :_adb (10),Right :_dfg .Right -_adb (5)};};_geeg =true ;case _cc .ST_LegendPosR :_aacc =&Rectangle {Top :(_dfg .Bottom -_dfg .Top )/2-_adb (10)+_gbcf ,Bottom :(_dfg .Bottom -_dfg .Top )/2+_adb (10),Left :_dfg .Right -_adb (22.5),Right :_dfg .Right -_adb (2.5)};
|
|
if !_cdb {_fedc =&Rectangle {Top :_adb (5)+_gbcf ,Bottom :_dfg .Bottom -_adb (12.5),Left :_adb (10),Right :_dfg .Right -_adb (25)};};case _cc .ST_LegendPosL :_aacc =&Rectangle {Top :(_dfg .Bottom -_dfg .Top )/2-_adb (10)+_gbcf ,Bottom :(_dfg .Bottom -_dfg .Top )/2+_adb (10),Left :_adb (2.5),Right :_adb (22.5)};
|
|
if !_cdb {_fedc =&Rectangle {Top :_adb (5)+_gbcf ,Bottom :_dfg .Bottom -_adb (12.5),Left :_adb (30),Right :_dfg .Right -_adb (5)};};default:_aacc =&Rectangle {Top :(_dfg .Bottom -_dfg .Top )/2-_adb (10)+_gbcf ,Bottom :(_dfg .Bottom -_dfg .Top )/2+_adb (10),Left :_dfg .Right -_adb (25),Right :_dfg .Right -_adb (5)};
|
|
if !_cdb {_fedc =&Rectangle {Top :_adb (5)+_gbcf ,Bottom :_dfg .Bottom -_adb (12.5),Left :_adb (100),Right :_dfg .Right -_adb (25)};};};};};_fedc .scale (_acb );_cfc .drawBorderWithProps (_eeaa .SpPr ,_fedc ,_ecga );_bce :=[]*legendItem {};var _feg error ;
|
|
_cgbe :=_eeaa .CChoice ;for _ ,_ced :=range _eeaa .Choice {if _agd :=_ced .BarChart ;_agd !=nil {_bce ,_feg =_cfc .drawBarChart (_agd ,_fedc ,_cgbe ,_ceee );if _feg !=nil {return nil ,_feg ;};break ;};if _eag :=_ced .PieChart ;_eag !=nil {_bce ,_feg =_cfc .drawPieChart (_eag ,_fedc ,_ceee ,_acb );
|
|
if _feg !=nil {return nil ,_feg ;};break ;};if _bbga :=_ced .ScatterChart ;_bbga !=nil {_bce ,_feg =_cfc .drawScatterChart (_bbga ,_fedc ,_cgbe ,_acb );if _feg !=nil {return nil ,_feg ;};break ;};if _dgd :=_ced .LineChart ;_dgd !=nil {_bce ,_feg =_cfc .drawLineChart (_dgd ,_fedc ,_cgbe ,_acb );
|
|
if _feg !=nil {return nil ,_feg ;};break ;};if _fece :=_ced .AreaChart ;_fece !=nil {_bce ,_feg =_cfc .drawAreaChart (_fece ,_fedc ,_cgbe ,_acb );if _feg !=nil {return nil ,_feg ;};break ;};};if _aeb !=nil {_aacc .scale (_acb );_cfc .drawBorderWithProps (_aeb .SpPr ,_aacc ,_ecga );
|
|
if len (_bce )!=0{_cfc .drawLegend (_aacc ,_bce ,_geeg );};};};_dfg .scale (_acb );_cfc .drawBorderWithProps (_ebeb .SpPr ,_dfg ,_ecga );return _fee ,nil ;};func RegisterFontsFromFiles (files []string )error {for _ ,_dgag :=range files {if _ded .HasSuffix (_dgag ,"\u002e\u0074\u0074\u0066"){_efed :=_bcgd (_dgag );
|
|
if _efed !=nil {_ff .Log .Debug ("\u0075\u006ea\u0062\u006c\u0065\u0020\u0074o\u0020\u0070\u0072\u006f\u0063e\u0073\u0073\u0020\u0061\u006e\u0064\u0020\u0072\u0065\u0067\u0069\u0073\u0074\u0065\u0072\u0020\u0066\u006f\u006e\u0074\u0020\u0066\u0072\u006f\u006d\u0020\u0054\u0054\u0046\u0020\u0066\u0069\u006c\u0065\u0020\u0025\u0073",_efed );
|
|
continue ;};};};return nil ;};func _begf (_caff *_cc .CT_ValAx )(uint32 ,_cc .ST_AxPos ,_cc .ST_TickMark ,_cc .ST_TickLblPos ,*_cc .CT_ChartLines ,uint32 ,*_ca .CT_ShapeProperties ,error ){var _edf ,_abdb uint32 ;var _cfce _cc .ST_AxPos ;var _eab _cc .ST_TickMark ;
|
|
var _bbb *_cc .CT_ChartLines ;var _dcab _cc .ST_TickLblPos ;if _caff .AxId ==nil {return _edf ,_cfce ,_eab ,_dcab ,_bbb ,_abdb ,_caff .SpPr ,_cb .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_edf =_caff .AxId .ValAttr ;
|
|
};if _caff .AxPos ==nil {return _edf ,_cfce ,_eab ,_dcab ,_bbb ,_abdb ,_caff .SpPr ,_cb .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_cfce =_caff .AxPos .ValAttr ;};if _caff .MajorTickMark !=nil {_eab =_caff .MajorTickMark .ValAttr ;
|
|
};if _caff .TickLblPos !=nil {_dcab =_caff .TickLblPos .ValAttr ;};if _caff .CrossAx ==nil {return _edf ,_cfce ,_eab ,_dcab ,_bbb ,_abdb ,_caff .SpPr ,_cb .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_abdb =_caff .CrossAx .ValAttr ;
|
|
};_bbb =_caff .MajorGridlines ;return _edf ,_cfce ,_eab ,_dcab ,_bbb ,_abdb ,_caff .SpPr ,nil ;};func (_fdbb *creatorContext )drawRectangleWithProps (_cggf *_ca .CT_ShapeProperties ,_acadg ,_bef ,_dgb ,_afff float64 ,_cgcgb bool ){_gebdf :=_fdbb ._efbfa .NewRectangle (_acadg ,_bef ,_dgb ,_afff );
|
|
if _cggf ==nil {if _cgcgb {_gebdf .SetBorderWidth (_ecga );}else {return ;};}else {_fdgb :=_fdbb .getPdfColorFromSolidFill (_cggf .SolidFill );if _fdgb !=nil {_gebdf .SetFillColor (_fdgb );};if _egae :=_cggf .Ln ;_egae !=nil {if _debb :=_egae .WAttr ;_debb !=nil {_cfeab :=_cg .FromEMU (int64 (*_debb ));
|
|
_gebdf .SetBorderWidth (_cfeab );if _eged :=_egae .SolidFill ;_eged !=nil {_cecd :=_fdbb .getPdfColorFromSolidFill (_eged );if _cecd !=nil {_gebdf .SetBorderColor (_cecd );};};}else {_gebdf .SetBorderWidth (0);};};};_fdbb ._efbfa .Draw (_gebdf );};func TwipsFromPoints (points float64 )float64 {return points /_cg .Twips };
|
|
var _fac =_adb (0.5);func IsNoSpaceLanguage (symbol string )bool {for _ ,_cbea :=range symbol {if _d .Is (_d .Han ,_cbea ){return true ;};};return false ;};type Rectangle struct{Top float64 ;Bottom float64 ;Left float64 ;Right float64 ;};func AdjustColor (colorStr string ,EG_ColorTransform []*_ca .EG_ColorTransform )string {for _ ,_gagf :=range EG_ColorTransform {if _dfcef :=_gagf .Tint ;
|
|
_dfcef !=nil {if _abbc :=_dfcef .ValAttr .ST_PositiveFixedPercentageDecimal ;_abbc !=nil {colorStr =AdjustColorByTint (colorStr ,float64 (*_abbc )/100000);};};if _dfa :=_gagf .Shade ;_dfa !=nil {if _fddba :=_dfa .ValAttr .ST_PositiveFixedPercentageDecimal ;
|
|
_fddba !=nil {colorStr =AdjustColorByShade (colorStr ,float64 (*_fddba )/100000);};};if _cea :=_gagf .LumMod ;_cea !=nil {if _abbcg :=_cea .ValAttr .ST_PercentageDecimal ;_abbcg !=nil {colorStr =AdjustColorByLumMod (colorStr ,float64 (*_abbcg )/100000);
|
|
};};};return colorStr ;};func AdjustColorByShade (colorStr string ,shade float64 )string {var _acag ,_eega ,_cedb uint8 ;_acc ,_ :=_cf .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_acag ,&_eega ,&_cedb );if _acc !=3{return "";
|
|
};return _accc (_acag ,shade )+_accc (_eega ,shade )+_accc (_cedb ,shade );};func _dgcd (_agc *_cc .CT_DateAx )(uint32 ,_cc .ST_AxPos ,_cc .ST_TickMark ,_cc .ST_TickLblPos ,*_cc .CT_ChartLines ,uint32 ,*_ca .CT_ShapeProperties ,error ){var _dcee ,_cbbc uint32 ;
|
|
var _fcfd _cc .ST_AxPos ;var _ccfa _cc .ST_TickMark ;var _abde *_cc .CT_ChartLines ;var _gdacg _cc .ST_TickLblPos ;if _agc .AxId ==nil {return _dcee ,_fcfd ,_ccfa ,_gdacg ,_abde ,_cbbc ,_agc .SpPr ,_cb .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
|
|
}else {_dcee =_agc .AxId .ValAttr ;};if _agc .AxPos ==nil {return _dcee ,_fcfd ,_ccfa ,_gdacg ,_abde ,_cbbc ,_agc .SpPr ,_cb .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_fcfd =_agc .AxPos .ValAttr ;
|
|
};if _agc .MajorTickMark !=nil {_ccfa =_agc .MajorTickMark .ValAttr ;};if _agc .TickLblPos !=nil {_gdacg =_agc .TickLblPos .ValAttr ;};if _agc .CrossAx ==nil {return _dcee ,_fcfd ,_ccfa ,_gdacg ,_abde ,_cbbc ,_agc .SpPr ,_cb .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
|
|
}else {_cbbc =_agc .CrossAx .ValAttr ;};_abde =_agc .MajorGridlines ;return _dcee ,_fcfd ,_ccfa ,_gdacg ,_abde ,_cbbc ,_agc .SpPr ,nil ;};func _add (_gbfg ,_edfb ,_egg float64 )(uint8 ,uint8 ,uint8 ){var _bddg float64 ;if _egg < 0.5{_bddg =_egg *(1+_edfb );
|
|
}else {_bddg =_egg +_edfb -_egg *_edfb ;};_dfe :=_egg *2-_bddg ;_gbfg /=360.0;_faae :=_efbf (_gbfg +1.0/3.0);_gced :=_efbf (_gbfg );_agf :=_efbf (_gbfg -1.0/3.0);_bgbc :=_bgcbg (_faae ,_bddg ,_dfe );_dfcc :=_bgcbg (_gced ,_bddg ,_dfe );_dfgf :=_bgcbg (_agf ,_bddg ,_dfe );
|
|
return uint8 (255*_bgbc ),uint8 (255*_dfcc ),uint8 (255*_dfgf );};var _ecga =_adb (0.125);const (BorderPositionTop BorderPosition =0;BorderPositionLeft BorderPosition =1;BorderPositionBottom BorderPosition =2;BorderPositionRight BorderPosition =3;);func GetPageFromCreator (c *_a .Creator )(*_cd .PdfPage ,error ){_bacd :=_eg .NewBuffer ([]byte {});
|
|
_eabb :=c .Write (_bacd );if _eabb !=nil {return nil ,_eabb ;};_aacge :=_eg .NewReader (_bacd .Bytes ());_aff ,_eabb :=_cd .NewPdfReader (_aacge );if _eabb !=nil {return nil ,_eabb ;};return _aff .GetPage (1);};const (ImgPart_whole ImgPart =0;ImgPart_t ImgPart =1;
|
|
ImgPart_b ImgPart =2;ImgPart_l ImgPart =3;ImgPart_r ImgPart =4;ImgPart_lt ImgPart =5;ImgPart_rt ImgPart =6;ImgPart_lb ImgPart =7;ImgPart_rb ImgPart =8;);func FromSTCoordinate32 (st _ca .ST_Coordinate32 )int64 {if _aface :=st .ST_Coordinate32Unqualified ;
|
|
_aface !=nil {return int64 (*_aface );};return 0;};type creatorContext struct{_efbfa *_a .Creator ;_fcbc *_ca .Theme ;_fbce float64 ;};func FromSTPercentage (st *_ca .ST_Percentage )float64 {if _geaf :=st .ST_PercentageDecimal ;_geaf !=nil {return float64 (*_geaf )/100000;
|
|
};return 0;};func _fegf (_gaeg _ca .ST_SchemeColorVal ,_abb *_ca .Theme )string {if _gddc :=_abb .ThemeElements ;_gddc !=nil {if _ebc :=_gddc .ClrScheme ;_ebc !=nil {switch _gaeg {case _ca .ST_SchemeColorValLt1 :return GetColorStringFromDmlColor (_ebc .Lt1 );
|
|
case _ca .ST_SchemeColorValDk1 ,_ca .ST_SchemeColorValTx1 :return GetColorStringFromDmlColor (_ebc .Dk1 );case _ca .ST_SchemeColorValLt2 :return GetColorStringFromDmlColor (_ebc .Lt2 );case _ca .ST_SchemeColorValDk2 :return GetColorStringFromDmlColor (_ebc .Dk2 );
|
|
case _ca .ST_SchemeColorValAccent1 :return GetColorStringFromDmlColor (_ebc .Accent1 );case _ca .ST_SchemeColorValAccent2 :return GetColorStringFromDmlColor (_ebc .Accent2 );case _ca .ST_SchemeColorValAccent3 :return GetColorStringFromDmlColor (_ebc .Accent3 );
|
|
case _ca .ST_SchemeColorValAccent4 :return GetColorStringFromDmlColor (_ebc .Accent4 );case _ca .ST_SchemeColorValAccent5 :return GetColorStringFromDmlColor (_ebc .Accent5 );case _ca .ST_SchemeColorValAccent6 :return GetColorStringFromDmlColor (_ebc .Accent6 );
|
|
};};};return "";};func RegisterFont (name string ,style FontStyle ,font *_cd .PdfFont ){_agab ._aagb .Lock ();if _agab ._dega [name ]==nil {_agab ._dega [name ]=map[FontStyle ]*_cd .PdfFont {};};_agab ._dega [name ][style ]=font ;_agab ._aagb .Unlock ();
|
|
};func MakeImageFromChartSpace (cs *_cc .ChartSpace ,width ,height float64 ,theme *_ca .Theme ,workbook *_ec .Workbook )(_c .Image ,error ){_gbe ,_bfd :=_cfb (cs ,width ,height ,theme ,true ,workbook );if _bfd !=nil {return nil ,_bfd ;};_dce ,_bfd :=GetPageFromCreator (_gbe );
|
|
if _bfd !=nil {return nil ,_bfd ;};return _ba .NewImageDevice ().Render (_dce );};func GetGroupOffsetFromXfrm (xfrm *_ca .CT_GroupTransform2D )(float64 ,float64 ){var _def ,_gcfa float64 ;if xfrm .Off !=nil &&xfrm .ChOff !=nil {_def =_cg .FromEMU (FromSTCoordinate (xfrm .Off .XAttr ))-_cg .FromEMU (FromSTCoordinate (xfrm .ChOff .XAttr ));
|
|
_gcfa =_cg .FromEMU (FromSTCoordinate (xfrm .Off .YAttr ))-_cg .FromEMU (FromSTCoordinate (xfrm .ChOff .YAttr ));};return _def ,_gcfa ;};func _faaa (_bbf string )([]byte ,error ){_ecgec :=_bb .MustCompile ("\u005b\u005e\u0061\u002d\u007a\u0041\u002d\u005a\u0030\u002d\u0039\u005d\u002b");
|
|
_bbf =_ecgec .ReplaceAllString (_bbf ,"");_fca :=[]rune (_bbf );_egff :=[]byte {};for _gfcg :=len (_fca )-2;_gfcg >=0;_gfcg -=2{_gfce ,_bfbb :=_df .ParseUint (string (_fca [_gfcg ])+string (_fca [_gfcg +1]),16,8);if _bfbb !=nil {return nil ,_bfbb ;};_egff =append (_egff ,byte (_gfce ));
|
|
};return _egff ,nil ;};var (DefaultFontSize =12.0;DefaultImageEncoder _f .StreamEncoder ;);func ClearRegisteredFonts (){_agab ._aagb .Lock ();_agab ._dega =map[string ]map[FontStyle ]*_cd .PdfFont {};_agab ._aagb .Unlock ();};func CropImageByRect (sourceImg _c .Image ,rect _c .Rectangle )_c .Image {_baeb ,_fead ,_cebb ,_bdce :=rect .Min .X ,rect .Min .Y ,rect .Max .X ,rect .Max .Y ;
|
|
_abge :=_c .NewNRGBA (_c .Rect (0,0,_cebb -_baeb ,_bdce -_fead ));for _bfec :=_baeb ;_bfec < _cebb ;_bfec ++{for _deef :=_fead ;_deef < _bdce ;_deef ++{_abge .Set (_bfec -_baeb ,_deef -_fead ,sourceImg .At (_bfec ,_deef ));};};return _abge ;};func _fgb (_cde uint8 ,_ace float64 )string {_cbdba :=float64 (_cde );
|
|
var _fdb float64 ;if _ace < 0{_fdb =_cbdba *(1+_ace );}else {_fdb =_cbdba +(255-_cbdba )*_ace ;};return _cf .Sprintf ("\u0025\u0030\u0032\u0078",int (_fdb ));};func _aebg (_gcac *_cc .CT_CatAx )(uint32 ,_cc .ST_AxPos ,_cc .ST_TickMark ,_cc .ST_TickLblPos ,*_cc .CT_ChartLines ,uint32 ,*_ca .CT_ShapeProperties ,error ){var _ccbb ,_dbd uint32 ;
|
|
var _cgee _cc .ST_AxPos ;var _gdd _cc .ST_TickMark ;var _gaga *_cc .CT_ChartLines ;var _gdaa _cc .ST_TickLblPos ;if _gcac .AxId ==nil {return _ccbb ,_cgee ,_gdd ,_gdaa ,_gaga ,_dbd ,_gcac .SpPr ,_cb .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
|
|
}else {_ccbb =_gcac .AxId .ValAttr ;};if _gcac .AxPos ==nil {return _ccbb ,_cgee ,_gdd ,_gdaa ,_gaga ,_dbd ,_gcac .SpPr ,_cb .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_cgee =_gcac .AxPos .ValAttr ;
|
|
};if _gcac .MajorTickMark !=nil {_gdd =_gcac .MajorTickMark .ValAttr ;};if _gcac .TickLblPos !=nil {_gdaa =_gcac .TickLblPos .ValAttr ;};if _gcac .CrossAx ==nil {return _ccbb ,_cgee ,_gdd ,_gdaa ,_gaga ,_dbd ,_gcac .SpPr ,_cb .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
|
|
}else {_dbd =_gcac .CrossAx .ValAttr ;};_gaga =_gcac .MajorGridlines ;return _ccbb ,_cgee ,_gdd ,_gdaa ,_gaga ,_dbd ,_gcac .SpPr ,nil ;};func (_dccf *Rectangle )scale (_afadb float64 ){_dccf .Top *=_afadb ;_dccf .Bottom *=_afadb ;_dccf .Left *=_afadb ;
|
|
_dccf .Right *=_afadb ;};func MakeTempCreatorMaxHeight (width float64 )*_a .Creator {return MakeTempCreator (width ,_dd .MaxFloat64 );};type ImgPart byte ;func _efbf (_eeaac float64 )float64 {if _eeaac < 0{_eeaac +=float64 (-int (_eeaac )+1);}else if _eeaac > 1{_eeaac -=float64 (int (_eeaac ));
|
|
};return _eeaac ;};func (_bbee *creatorContext )drawTitle (_bbed string ,_gfe ,_gebe float64 ){_ebg :=_bbee ._fbce ;_bac :=_bbee ._efbfa .NewStyledParagraph ();_afcb :=_bac .SetText (_bbed );_fad ,_bdf :=_cd .NewStandard14Font (_cd .HelveticaName );if _bdf ==nil {_caa :=_bbee ._efbfa .NewTextStyle ();
|
|
_caa .Font =_fad ;_caa .FontSize =14;_caa .TextRise =0.4;_afcb .Style =_caa ;_bac .SetPos (_gfe -_bac .Width ()*_ebg /2,_gebe );_bbee ._efbfa .Draw (_bac );};};func _eede (_ggf ,_gfaf ,_ggc uint8 )(float64 ,float64 ,float64 ){_dgg ,_gcfd ,_faca :=float64 (_ggf )/255,float64 (_gfaf )/255,float64 (_ggc )/255;
|
|
_dddfa :=_dgg ;if _gcfd < _dddfa {_dddfa =_gcfd ;};if _faca < _dddfa {_dddfa =_faca ;};var _efc ,_dcdd bool ;_abeb :=_dgg ;if _gcfd > _abeb {_abeb =_gcfd ;_efc =true ;};if _faca > _abeb {_abeb =_faca ;_efc =false ;_dcdd =true ;};_ecc :=(_dddfa +_abeb )/2;
|
|
var _bdg float64 ;if _dddfa !=_abeb {if _ecc <=0.5{_bdg =(_abeb -_dddfa )/(_abeb +_dddfa );}else {_bdg =(_abeb -_dddfa )/(2.0-_abeb -_dddfa );};};var _dff float64 ;if _dddfa !=_abeb {if _efc {_dff =2.0+(_faca -_dgg )/(_abeb -_dddfa );}else if _dcdd {_dff =4.0+(_dgg -_gcfd )/(_abeb -_dddfa );
|
|
}else {_dff =(_gcfd -_faca )/(_abeb -_dddfa );};_dff *=60;if _dff < 0{_dff +=360;};};return _dff ,_bdg ,_ecc ;};func MakeTempCreator (width ,height float64 )*_a .Creator {_ged :=_a .New ();_ged .SetPageSize (_a .PageSize {width ,height });_ged .SetPageMargins (0,0,0,0);
|
|
return _ged ;};const _cfca =6.0;type legendItem struct{_gae string ;_bcg *_ca .CT_ShapeProperties ;};func AdjustColorByTint (colorStr string ,tint float64 )string {var _cgfe ,_gdfg ,_bff uint8 ;_cceg ,_ :=_cf .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_cgfe ,&_gdfg ,&_bff );
|
|
if _cceg !=3{return "";};return _fgb (_cgfe ,tint )+_fgb (_gdfg ,tint )+_fgb (_bff ,tint );};func (_aea *creatorContext )addCatValue (_dcf string ,_acf map[string ]serCategory ,_dddf []string ,_cdfd int ,_begc ,_eaa *float64 ,_gaf string ,_bbd *_ca .CT_ShapeProperties ){_gcgg ,_fbf :=_df .ParseFloat (_dcf ,64);
|
|
if _fbf !=nil {_gcgg =0;_ff .Log .Debug ("\u0070a\u0072s\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0073",_fbf );};if _gcgg > *_eaa {*_eaa =_gcgg ;};if _gcgg < *_begc {*_begc =_gcgg ;};_edad :=_acf [_dddf [_cdfd ]];_edad ._bgbe =append (_edad ._bgbe ,serValue {_cbdb :_gaf ,_ffe :_gcgg ,_ceeb :_bbd });
|
|
_acf [_dddf [_cdfd ]]=_edad ;};func (_gbbf *creatorContext )drawLineWithProps (_beb *_ca .CT_ShapeProperties ,_gcb ,_bdaa ,_deeb ,_bbaf float64 ,_cfde bool ){if _beb !=nil {if _ceb :=_beb .Ln ;_ceb !=nil {_adfc :=_gbbf .getPdfColorFromSolidFill (_ceb .SolidFill );
|
|
if _adfc ==nil &&_cfde {_adfc =_a .ColorBlack ;};if _adfc !=nil {var _afb float64 ;if _acbb :=_ceb .WAttr ;_acbb !=nil {_afb =_cg .FromEMU (int64 (*_acbb ));}else {_afb =_ecga ;};DrawLine (_gbbf ._efbfa ,_gcb ,_bdaa ,_deeb ,_bbaf ,_afb ,_adfc );};};};};
|
|
func (_cgcb *creatorContext )drawScatterChart (_aagf *_cc .CT_ScatterChart ,_gdacf *Rectangle ,_bbgb *_cc .CT_PlotAreaChoice1 ,_bdfg float64 )([]*legendItem ,error ){_ebgf :=[]*legendItem {};_gbceb :=_aagf .Ser ;_dgef :=make (map[string ]float64 );_bbda :=make (map[string ][]float64 );
|
|
_fcca :=make (map[string ][]float64 );_eeabc :=[]string {};for _ ,_gddd :=range _gbceb {var _cgcg string ;if _fgdc :=_gddd .Tx ;_fgdc !=nil {if _effd :=_fgdc .Choice ;_effd !=nil {if _effd .V !=nil {_cgcg =*_effd .V ;}else if _aeea :=_effd .StrRef ;_aeea !=nil {if _gagc :=_aeea .StrCache ;
|
|
_gagc !=nil {for _ ,_dedg :=range _gagc .Pt {_cgcg =_dedg .V ;};};};_eeabc =append (_eeabc ,_cgcg );};};if _gddd .Marker !=nil &&_gddd .Marker .Size !=nil {_dgef [_cgcg ]=float64 (*_gddd .Marker .Size .ValAttr );}else {_dgef [_cgcg ]=-1.0;};if _acddb :=_gddd .XVal ;
|
|
_acddb !=nil {if _ffg :=_acddb .Choice ;_ffg !=nil {if _dbfdd :=_ffg .NumRef ;_dbfdd !=nil {if _acad :=_dbfdd .NumCache ;_acad !=nil {for _ ,_acgf :=range _acad .Pt {_eeb ,_ :=_df .ParseFloat (_ded .TrimSpace (_acgf .V ),64);_bbda [_cgcg ]=append (_bbda [_cgcg ],_eeb );
|
|
};};};};};if _bcdf :=_gddd .YVal ;_bcdf !=nil {if _accb :=_bcdf .Choice ;_accb !=nil {if _agad :=_accb .NumRef ;_agad !=nil {if _egad :=_agad .NumCache ;_egad !=nil {for _ ,_fffg :=range _egad .Pt {_effbf ,_ :=_df .ParseFloat (_ded .TrimSpace (_fffg .V ),64);
|
|
_fcca [_cgcg ]=append (_fcca [_cgcg ],_effbf );};};};};};};_bacba :=true ;_acbg :="";_afacf :="";if len (_bbgb .ValAx )> 1{if _bbgb .ValAx [0].Delete !=nil &&_bbgb .ValAx [1].Delete !=nil {if !*(*_bbgb .ValAx [0].Delete ).ValAttr &&!*(*_bbgb .ValAx [1].Delete ).ValAttr {_bacba =false ;
|
|
};};_acbg =_cgcb .getTitle (_bbgb .ValAx [0].Title );_afacf =_cgcb .getTitle (_bbgb .ValAx [1].Title );};_aecc :=_efg .Style {Hidden :_bacba ,FontSize :8*_bdfg };_bcebe :=&_dfc .Chart {Series :[]_be .Series {},YAxisSecondary :_dfc .YAxis {Style :_aecc ,Name :_afacf ,NameStyle :_aecc },XAxis :_dfc .XAxis {Style :_aecc ,Name :_acbg ,NameStyle :_aecc },YAxis :_dfc .YAxis {Style :_efg .Style {Hidden :true }}};
|
|
for _ ,_caffd :=range _eeabc {_caaf :=_be .ContinuousSeries {XValues :_bbda [_caffd ],YValues :_fcca [_caffd ],Style :_efg .Style {StrokeWidth :-1,DotWidth :_dgef [_caffd ]}};_bcebe .Series =append (_bcebe .Series ,_caaf );};_bcebe .SetHeight (int (_dd .Abs (_gdacf .Top -_gdacf .Bottom )));
|
|
_bcebe .SetWidth (int (_dd .Abs (_gdacf .Right -_gdacf .Left )));_bccb :=_cgcb ._efbfa ;_afgb :=_a .NewChart (_bcebe );_afgb .SetPos (_gdacf .Left ,_gdacf .Top );_cdbb :=_bccb .Draw (_afgb );if _cdbb !=nil {return nil ,_cdbb ;};return _ebgf ,nil ;};var _gagg =_adb (1);
|
|
func DrawRectangle (c *_a .Creator ,r *Rectangle ,w float64 ,color _a .Color ){if color ==nil {return ;};DrawLine (c ,r .Left ,r .Top ,r .Right ,r .Top ,w ,color );DrawLine (c ,r .Left ,r .Top ,r .Left ,r .Bottom ,w ,color );DrawLine (c ,r .Left ,r .Bottom ,r .Right ,r .Bottom ,w ,color );
|
|
DrawLine (c ,r .Right ,r .Top ,r .Right ,r .Bottom ,w ,color );};func ParseExcelRange (s string )(string ,_gg .CellReference ,_gg .CellReference ,error ){_facf :=_ded .FieldsFunc (s ,func (_eacb rune )bool {return _eacb ==':'||_eacb =='!'});if len (_facf )==3{_ddba ,_agff :=_gg .ParseCellReference (_facf [1]);
|
|
if _agff !=nil {return "",_gg .CellReference {},_gg .CellReference {},_agff ;};_ggff ,_agff :=_gg .ParseCellReference (_facf [2]);if _agff !=nil {return "",_gg .CellReference {},_gg .CellReference {},_agff ;};return _facf [0],_ddba ,_ggff ,nil ;};return "",_gg .CellReference {},_gg .CellReference {},_cb .New ("\u0065r\u0072\u006f\u0072\u0020p\u0061\u0072\u0073\u0069\u006eg\u0020e\u0078c\u0065\u006c\u0020\u0072\u0061\u006e\u0067e");
|
|
};func (_dcba FontStyle )String ()string {return []string {"\u0052e\u0067\u0075\u006c\u0061\u0072","\u0042\u006f\u006c\u0064","\u0049\u0074\u0061\u006c\u0069\u0063","\u0042\u006f\u006c\u0064\u0049\u0074\u0061\u006c\u0069\u0063"}[int (_dcba )];};func PointsFromTwips (twips int64 )float64 {return float64 (int64 (float64 (twips )*_cg .Twips *10+0.5))/10;
|
|
};var _gfgc =_adb (1.5);func (_fea *creatorContext )addCatName (_ccg string ,_gcd map[string ]serCategory ,_fedb *[]string ){if _ ,_cbb :=_gcd [_ccg ];!_cbb {_gcd [_ccg ]=serCategory {_cab :_ccg ,_bgbe :[]serValue {}};*_fedb =append (*_fedb ,_ccg );};};
|
|
func _accc (_gfff uint8 ,_bge float64 )string {_fadc :=float64 (_gfff );return _cf .Sprintf ("\u0025\u0030\u0032\u0078",int (_fadc *_bge ));};const (FontStyle_Regular FontStyle =0;FontStyle_Bold FontStyle =1;FontStyle_Italic FontStyle =2;FontStyle_BoldItalic FontStyle =3;
|
|
);func GetOpacityFromColorTransform (trs []*_ca .EG_ColorTransform )float64 {for _ ,_gcf :=range trs {if _gcf !=nil {if _effb :=_gcf .Alpha ;_effb !=nil {if _ddb :=_effb .ValAttr .ST_PositiveFixedPercentageDecimal ;_ddb !=nil {return float64 (*_ddb )/100000;
|
|
};};};};return 1.0;};func FillRectangle (c *_a .Creator ,x ,y ,width ,height float64 ,color _a .Color ){if color ==nil {return ;};_bffg :=c .NewRectangle (x ,y ,width ,height );_bffg .SetFillColor (color );_bffg .SetBorderWidth (0);c .Draw (_bffg );};func MakeBlockFromChartSpace (cs *_cc .ChartSpace ,width ,height float64 ,theme *_ca .Theme )(*_a .Block ,error ){_bde ,_aag :=_cfb (cs ,width ,height ,theme ,false ,nil );
|
|
if _aag !=nil {return nil ,_aag ;};_ggdb ,_aag :=GetPageFromCreator (_bde );if _aag !=nil {return nil ,_aag ;};_ega ,_aag :=_a .NewBlockFromPage (_ggdb );if _aag !=nil {return nil ,_aag ;};return _ega ,nil ;};func MakeBlockFromCreator (c *_a .Creator )(*_a .Block ,error ){_begca ,_gdab :=GetPageFromCreator (c );
|
|
if _gdab !=nil {return nil ,_gdab ;};_fdc ,_gdab :=_a .NewBlockFromPage (_begca );if _gdab !=nil {return nil ,_gdab ;};return _fdc ,nil ;};func _cced (_ebf _ca .ST_SchemeColorVal ,_cfea *_ca .Theme )string {if _acdd :=_cfea .ThemeElements ;_acdd !=nil {if _abgc :=_acdd .ClrScheme ;
|
|
_abgc !=nil {switch _ebf {case _ca .ST_SchemeColorValLt1 :return GetColorStringFromDmlColor (_abgc .Lt1 );case _ca .ST_SchemeColorValDk1 ,_ca .ST_SchemeColorValTx1 :return GetColorStringFromDmlColor (_abgc .Dk1 );case _ca .ST_SchemeColorValLt2 :return GetColorStringFromDmlColor (_abgc .Lt2 );
|
|
case _ca .ST_SchemeColorValDk2 :return GetColorStringFromDmlColor (_abgc .Dk2 );case _ca .ST_SchemeColorValAccent1 :return GetColorStringFromDmlColor (_abgc .Accent1 );case _ca .ST_SchemeColorValAccent2 :return GetColorStringFromDmlColor (_abgc .Accent2 );
|
|
case _ca .ST_SchemeColorValAccent3 :return GetColorStringFromDmlColor (_abgc .Accent3 );case _ca .ST_SchemeColorValAccent4 :return GetColorStringFromDmlColor (_abgc .Accent4 );case _ca .ST_SchemeColorValAccent5 :return GetColorStringFromDmlColor (_abgc .Accent5 );
|
|
case _ca .ST_SchemeColorValAccent6 :return GetColorStringFromDmlColor (_abgc .Accent6 );};};};return "";};func GetImage (c *_a .Creator ,goImg _c .Image ,imgHeight ,imgWidth ,left ,top ,dividerX ,dividerY float64 ,part ImgPart )(*_a .Image ,error ){if goImg ==nil {return nil ,nil ;
|
|
};_bcb :=goImg .Bounds ().Size ();_bddf :=_bcb .X ;_bdb :=_bcb .Y ;if dividerX !=0{dividerX =dividerX /imgWidth *float64 (_bddf );};if dividerY !=0{dividerY =dividerY /imgHeight *float64 (_bdb );};var _gcdb _c .Rectangle ;switch part {case ImgPart_t :_gcdb =_c .Rect (0,0,_bddf ,int (dividerY ));
|
|
case ImgPart_b :_gcdb =_c .Rect (0,int (dividerY ),_bddf ,_bdb );case ImgPart_l :_gcdb =_c .Rect (0,0,int (dividerX ),_bdb );case ImgPart_r :_gcdb =_c .Rect (int (dividerX ),0,_bddf ,_bdb );case ImgPart_lt :_gcdb =_c .Rect (0,0,int (dividerX ),int (dividerY ));
|
|
case ImgPart_rt :_gcdb =_c .Rect (int (dividerX ),0,_bddf ,int (dividerY ));case ImgPart_lb :_gcdb =_c .Rect (0,int (dividerY ),int (dividerX ),_bdb );case ImgPart_rb :_gcdb =_c .Rect (int (dividerX ),int (dividerY ),_bddf ,_bdb );default:_gcdb =_c .Rect (0,0,_bddf ,_bdb );
|
|
};_cfcd :=CropImageByRect (goImg ,_gcdb );_aef ,_cae :=c .NewImageFromGoImage (_cfcd );if _cae !=nil {return nil ,_cae ;};_aef .Scale (imgWidth /float64 (_bddf ),imgHeight /float64 (_bdb ));_aef .SetPos (left ,top );return _aef ,nil ;};func _adb (_fbef float64 )float64 {return _fbef *_cg .Millimeter };
|
|
func (_fcfb *creatorContext )drawPieChart (_ffee *_cc .CT_PieChart ,_bffb *Rectangle ,_bdgf *_ec .Workbook ,_eace float64 )([]*legendItem ,error ){_fdagb :=[]*legendItem {};_fbd :=map[string ]serCategory {};_fecb :=[]string {};_afaag :=_dd .Inf (1);_bfba :=_dd .Inf (-1);
|
|
_bbfeg :=_ffee .Ser ;for _ ,_acfg :=range _bbfeg {var _dbcfb string ;if _bceb :=_acfg .Tx ;_bceb !=nil {if _feaa :=_bceb .Choice ;_feaa !=nil {if _feaa .V !=nil {_dbcfb =*_feaa .V ;}else if _gfcgb :=_feaa .StrRef ;_gfcgb !=nil {if _ccfb :=_gfcgb .StrCache ;
|
|
_ccfb !=nil {for _ ,_cbeab :=range _ccfb .Pt {_dbcfb =_cbeab .V ;};};};};};if _eafe :=_acfg .Cat ;_eafe !=nil {if _adec :=_eafe .Choice ;_adec !=nil {if _gdc :=_adec .StrRef ;_gdc !=nil {if _aedc :=_gdc .F ;_aedc !=""&&_bdgf !=nil {_dfga ,_gfffe ,_dbdf ,_eeae :=ParseExcelRange (_aedc );
|
|
if _eeae ==nil {for _ ,_aegf :=range _bdgf .Sheets (){if _aegf .Name ()==_ded .Trim (_dfga ,"\u0027"){_geec :=_gfffe .String ();for _cfcf :=_gfffe .RowIdx ;_cfcf <=_dbdf .RowIdx ;_cfcf +=1{_ggcc :=_ded .ReplaceAll (_geec ,_cf .Sprint (_gfffe .RowIdx ),_cf .Sprint (_cfcf ));
|
|
_fcfb .addCatName (_aegf .Cell (_ggcc ).GetString (),_fbd ,&_fecb );};break ;};};};};if _dcfa :=_gdc .StrCache ;_dcfa !=nil {for _ ,_gdcf :=range _dcfa .Pt {_fcfb .addCatName (_gdcf .V ,_fbd ,&_fecb );};};}else if _cfgf :=_adec .NumRef ;_cfgf !=nil {if _gafb :=_cfgf .NumCache ;
|
|
_gafb !=nil {var _fbbf string ;if _gafb .FormatCode !=nil {_fbbf =*_gafb .FormatCode ;};for _ ,_bfg :=range _gafb .Pt {var _eafa string ;if _bfg .FormatCodeAttr ==nil {_eafa =_fbbf ;}else {_eafa =*_bfg .FormatCodeAttr ;};var _gfeg string ;_fcd ,_cef :=_df .ParseFloat (_bfg .V ,64);
|
|
if _cef !=nil {_gfeg =_bfg .V ;}else {_gfeg =_baa .Number (_fcd ,_eafa );};_fcfb .addCatName (_gfeg ,_fbd ,&_fecb );};};};};};if _ecd :=_acfg .Val ;_ecd !=nil {if _egbe :=_ecd .Choice ;_egbe !=nil {if _edd :=_egbe .NumRef ;_edd !=nil {if _ceg :=_edd .F ;
|
|
_ceg !=""&&_bdgf !=nil {_eeeg ,_aedg ,_baeg ,_abeg :=ParseExcelRange (_ceg );if _abeg ==nil {for _ ,_dbdg :=range _bdgf .Sheets (){if _dbdg .Name ()==_ded .Trim (_eeeg ,"\u0027"){_fegg :=_aedg .String ();for _ccge :=_aedg .RowIdx ;_ccge <=_baeg .RowIdx ;
|
|
_ccge +=1{_eccf :=_ded .ReplaceAll (_fegg ,_cf .Sprint (_aedg .RowIdx ),_cf .Sprint (_ccge ));if _dbdg .FormulaContext ().HasFormula (_eccf ){_cadc :=_bd .NewEvaluator ();_gbea :=_dbdg .FormulaContext ().Cell (_eccf ,_cadc );_abebg :=_gbea .Value ();_fcfb .addCatValue (_abebg ,_fbd ,_fecb ,(int )(_ccge -_aedg .RowIdx ),&_afaag ,&_bfba ,_dbcfb ,_acfg .SpPr );
|
|
}else {_gdb :=_dbdg .Cell (_eccf ).GetString ();_fcfb .addCatValue (_gdb ,_fbd ,_fecb ,(int )(_ccge -_aedg .RowIdx ),&_afaag ,&_bfba ,_dbcfb ,_acfg .SpPr );};};break ;};};};};if _bbfa :=_edd .NumCache ;_bbfa !=nil {for _ccea ,_dfde :=range _bbfa .Pt {_fcfb .addCatValue (_dfde .V ,_fbd ,_fecb ,_ccea ,&_afaag ,&_bfba ,_dbcfb ,_acfg .SpPr );
|
|
};};};};};};_agae :=&_dfc .PieChart {Values :[]_be .Value {}};for _ ,_bbeee :=range _fecb {_fbdg :=_fbd [_bbeee ];if len (_fbdg ._bgbe )> 0{_agae .Values =append (_agae .Values ,_be .Value {Value :_fbdg ._bgbe [0]._ffe ,Label :_bbeee ,Style :_efg .Style {FontSize :12*_eace }});
|
|
};};_agae .SetHeight (int (_bffb .Top -_bffb .Bottom ));_agae .SetWidth (int (_bffb .Right -_bffb .Left ));_fbda :=_fcfb ._efbfa ;_fegec :=_a .NewChart (_agae );_fegec .SetPos (_bffb .Left ,_bffb .Top );_edcf :=_fbda .Draw (_fegec );if _edcf !=nil {return nil ,_edcf ;
|
|
};return _fdagb ,nil ;};func (_dfb barSerByOrder )Len ()int {return len (_dfb )};var _egee =_adb (7.5);func GetDataFromXfrm (xfrm *_ca .CT_Transform2D )(float64 ,float64 ,float64 ,float64 ){var _adg ,_cbae ,_eeec ,_cdfe float64 ;if _bdae :=xfrm .Off ;_bdae !=nil {_adg =_cg .FromEMU (FromSTCoordinate (_bdae .XAttr ));
|
|
_cbae =_cg .FromEMU (FromSTCoordinate (_bdae .YAttr ));};if _edda :=xfrm .Ext ;_edda !=nil {_eeec =_cg .FromEMU (_edda .CxAttr );_cdfe =_cg .FromEMU (_edda .CyAttr );};return _adg ,_cbae ,_eeec ,_cdfe ;};func GetColorStringFromDmlColor (dmlColor *_ca .CT_Color )string {var _acfe string ;
|
|
if _fege :=dmlColor .SrgbClr ;_fege !=nil {_acfe =_fege .ValAttr ;}else if _fegee :=dmlColor .SysClr ;_fegee !=nil {if _fegee .LastClrAttr !=nil {return *_fegee .LastClrAttr ;};return "\u0030\u0030\u0030\u0030\u0030\u0030";};return _acfe ;};type fontsMap struct{_aagb *_de .Mutex ;
|
|
_dega map[string ]map[FontStyle ]*_cd .PdfFont ;};func (_bba *creatorContext )drawLegend (_cgff *Rectangle ,_cgc []*legendItem ,_gfg bool ){_faaf :=_bba ._fbce ;_fbg :=_adb (2.5)*_faaf ;_ege :=_cgb *_faaf ;_gea :=(_fbg -_ege )/2;_bcea :=float64 (len (_cgc ));
|
|
if _gfg {_ccdd :=&Rectangle {Top :_cgff .Top +_adb (1)*_faaf ,Bottom :_cgff .Bottom -_adb (1)*_faaf ,Left :_cgff .Left +_adb (2.5)*_faaf ,Right :_cgff .Right -_adb (2.5)*_faaf };var _gfef float64 ;if _bcea > 1{_gfef =(_ccdd .Right -_ccdd .Left )/_bcea ;
|
|
};_degd :=_ccdd .Left ;_dca :=_ccdd .Top ;for _ ,_dae :=range _cgc {if _bdee :=_dae ._bcg ;_bdee !=nil {_bba .drawRectangleWithProps (_bdee ,_degd ,_dca +_gea ,_ege ,_ege ,false );_faf :=_degd +_ege *2;_cgfa :=_bba ._efbfa .NewStyledParagraph ();_cgfa .SetPos (_faf ,_dca );
|
|
_bfe :=_cgfa .Append (_dae ._gae );_bfaf ,_ggbe :=_cd .NewStandard14Font (_cd .HelveticaName );if _ggbe ==nil {_ada :=_bba ._efbfa .NewTextStyle ();_ada .Font =_bfaf ;_ada .FontSize =_fbg ;_ada .TextRise =0.4;_bfe .Style =_ada ;_bba ._efbfa .Draw (_cgfa );
|
|
};};_degd +=_gfef ;};}else {_afaf :=&Rectangle {Top :_cgff .Top +_adb (2.5)*_faaf ,Bottom :_cgff .Bottom -_adb (2.5)*_faaf ,Left :_cgff .Left +_adb (2.5)*_faaf ,Right :_cgff .Right -_adb (2.5)*_faaf };var _eaaa float64 ;if _bcea > 1{_eaaa =(_afaf .Bottom -_afaf .Top -_fbg )/(_bcea -1);
|
|
if _eaaa < _fbg {_eaaa =_fbg ;};};_gaa :=_afaf .Top ;_ceef :=_afaf .Left ;_dbb :=_ceef +_ege *2;for _ ,_caf :=range _cgc {if _geg :=_caf ._bcg ;_geg !=nil {_bba .drawRectangleWithProps (_geg ,_ceef ,_gaa +_gea ,_ege ,_ege ,false );_eeab :=_bba ._efbfa .NewStyledParagraph ();
|
|
_eeab .SetPos (_dbb ,_gaa );_eeab .SetWidth (_afaf .Right -_afaf .Left );_aca :=_eeab .Append (_caf ._gae );_aeaf ,_fff :=_cd .NewStandard14Font (_cd .HelveticaName );if _fff ==nil {_eeed :=_bba ._efbfa .NewTextStyle ();_eeed .Font =_aeaf ;_eeed .FontSize =_fbg ;
|
|
_eeed .TextRise =0.4;_aca .Style =_eeed ;_bba ._efbfa .Draw (_eeab );};};_gaa +=_eaaa ;};};};var _cgb =_adb (1.5);func (_aacg barSerByOrder )Swap (i ,j int ){_aacg [i ],_aacg [j ]=_aacg [j ],_aacg [i ]};func _cce (_bga *_cc .CT_SerAx )(uint32 ,_cc .ST_AxPos ,_cc .ST_TickMark ,_cc .ST_TickLblPos ,*_cc .CT_ChartLines ,uint32 ,*_ca .CT_ShapeProperties ,error ){var _efe ,_fddc uint32 ;
|
|
var _cabd _cc .ST_AxPos ;var _becg _cc .ST_TickMark ;var _acgd *_cc .CT_ChartLines ;var _ceeeb _cc .ST_TickLblPos ;if _bga .AxId ==nil {return _efe ,_cabd ,_becg ,_ceeeb ,_acgd ,_fddc ,_bga .SpPr ,_cb .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
|
|
}else {_efe =_bga .AxId .ValAttr ;};if _bga .AxPos ==nil {return _efe ,_cabd ,_becg ,_ceeeb ,_acgd ,_fddc ,_bga .SpPr ,_cb .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_cabd =_bga .AxPos .ValAttr ;
|
|
};if _bga .MajorTickMark !=nil {_becg =_bga .MajorTickMark .ValAttr ;};if _bga .TickLblPos !=nil {_ceeeb =_bga .TickLblPos .ValAttr ;};if _bga .CrossAx ==nil {return _efe ,_cabd ,_becg ,_ceeeb ,_acgd ,_fddc ,_bga .SpPr ,_cb .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
|
|
}else {_fddc =_bga .CrossAx .ValAttr ;};_acgd =_bga .MajorGridlines ;return _efe ,_cabd ,_becg ,_ceeeb ,_acgd ,_fddc ,_bga .SpPr ,nil ;};func Lighten (clr float64 )float64 {return 0.6+0.4*clr };func (_cbdbc *creatorContext )drawLineChart (_bggg *_cc .CT_LineChart ,_aaa *Rectangle ,_agcg *_cc .CT_PlotAreaChoice1 ,_dbcf float64 )([]*legendItem ,error ){_cdffe :=[]*legendItem {};
|
|
_ebda :=_bggg .Ser ;_gbb :=make (map[int ][]float64 );_cdee :=make (map[int ][]float64 );_bgdf :=make (map[int ]_a .Color );_gbg :=make (map[int ]float64 );for _addc ,_abec :=range _ebda {var _bagd string ;if _aad :=_abec .Tx ;_aad !=nil {if _gebb :=_aad .Choice ;
|
|
_gebb !=nil {if _gebb .V !=nil {_bagd =*_gebb .V ;}else if _cgca :=_gebb .StrRef ;_cgca !=nil {if _bbdfc :=_cgca .StrCache ;_bbdfc !=nil {for _ ,_degaa :=range _bbdfc .Pt {_bagd =_degaa .V ;};};};};};_bgdf [_addc ]=_a .ColorWhite ;if _bbfe :=_abec .SpPr ;
|
|
_bbfe !=nil {if _dfeg :=_bbfe .Ln ;_dfeg !=nil {if _aeda :=_dfeg .WAttr ;_aeda !=nil {_gbg [_addc ]=_cg .FromEMU (int64 (*_aeda ));if _ccdg :=_dfeg .SolidFill ;_ccdg !=nil {_egcf :=_cbdbc .getPdfColorFromSolidFill (_ccdg );if _egcf !=nil {_bgdf [_addc ]=_egcf ;
|
|
};};};};};if _eaf :=_abec .Val ;_eaf !=nil {if _bfag :=_eaf .Choice ;_bfag !=nil {if _eafd :=_bfag .NumRef ;_eafd !=nil {if _egfff :=_eafd .NumCache ;_egfff !=nil {for _ ,_fgdb :=range _egfff .Pt {_gbb [_addc ]=append (_gbb [_addc ],float64 (_fgdb .IdxAttr ));
|
|
_bedg ,_ :=_df .ParseFloat (_ded .TrimSpace (_fgdb .V ),64);_cdee [_addc ]=append (_cdee [_addc ],_bedg );};};};};};_cdffe =append (_cdffe ,&legendItem {_gae :_bagd ,_bcg :_abec .SpPr });};_dacb :=true ;_egfb :=true ;_ebb :="";_ggad :="";if len (_agcg .CatAx )> 0{if _agcg .CatAx [0].Delete !=nil {if !*(*_agcg .CatAx [0].Delete ).ValAttr {_dacb =false ;
|
|
};};_ebb =_cbdbc .getTitle (_agcg .CatAx [0].Title );};if len (_agcg .ValAx )> 0{if _agcg .ValAx [0].Delete !=nil {if !*(*_agcg .ValAx [0].Delete ).ValAttr {_egfb =false ;};};_ggad =_cbdbc .getTitle (_agcg .ValAx [0].Title );};_afcd :=_efg .Style {Hidden :_dacb ,FontSize :8*_dbcf };
|
|
_cbbca :=_efg .Style {Hidden :_egfb ,FontSize :8*_dbcf };_ffc :=&_dfc .Chart {Series :[]_be .Series {},YAxisSecondary :_dfc .YAxis {Style :_cbbca ,Name :_ggad ,NameStyle :_cbbca },XAxis :_dfc .XAxis {Style :_afcd ,Name :_ebb ,NameStyle :_afcd },YAxis :_dfc .YAxis {Style :_efg .Style {Hidden :true }}};
|
|
for _gafd :=0;_gafd < len (_bgdf );_gafd ++{_gcdg ,_cdga ,_eeac :=_bgdf [_gafd ].ToRGB ();_bbgf :=_be .ContinuousSeries {XValues :_gbb [_gafd ],YValues :_cdee [_gafd ],Style :_efg .Style {StrokeColor :_b .RGBA {uint8 (_gcdg *255),uint8 (_cdga *255),uint8 (_eeac *255),255},StrokeWidth :_gbg [_gafd ]}};
|
|
_ffc .Series =append (_ffc .Series ,_bbgf );};_ffc .SetHeight (int (_dd .Abs (_aaa .Top -_aaa .Bottom )));_ffc .SetWidth (int (_dd .Abs (_aaa .Right -_aaa .Left )));_ccfab :=_cbdbc ._efbfa ;_afd :=_a .NewChart (_ffc );_afd .SetPos (_aaa .Left ,_aaa .Top );
|
|
_fgdf :=_ccfab .Draw (_afd );if _fgdf !=nil {return nil ,_fgdf ;};return _cdffe ,nil ;};type FontStyle byte ;var _feb =_adb (5);var StdFontsMap =map[string ][]string {"\u0048e\u006c\u0076\u0065\u0074\u0069\u0063a":[]string {"\u0048e\u006c\u0076\u0065\u0074\u0069\u0063a","\u0048\u0065\u006c\u0076\u0065\u0074\u0069\u0063\u0061-\u0042\u006f\u006c\u0064","\u0048\u0065\u006c\u0076\u0065\u0074\u0069\u0063\u0061\u002d\u004f\u0062l\u0069\u0071\u0075\u0065","H\u0065\u006c\u0076\u0065ti\u0063a\u002d\u0042\u006f\u006c\u0064O\u0062\u006c\u0069\u0071\u0075\u0065"},"\u0043o\u0075\u0072\u0069\u0065\u0072":[]string {"\u0043o\u0075\u0072\u0069\u0065\u0072","\u0043\u006f\u0075r\u0069\u0065\u0072\u002d\u0042\u006f\u006c\u0064","\u0043o\u0075r\u0069\u0065\u0072\u002d\u004f\u0062\u006c\u0069\u0071\u0075\u0065","\u0043\u006f\u0075\u0072ie\u0072\u002d\u0042\u006f\u006c\u0064\u004f\u0062\u006c\u0069\u0071\u0075\u0065"},"\u0054i\u006de\u0073\u0020\u004e\u0065\u0077\u0020\u0052\u006f\u006d\u0061\u006e":[]string {"T\u0069\u006d\u0065\u0073\u002d\u0052\u006f\u006d\u0061\u006e","\u0054\u0069\u006d\u0065\u0073\u002d\u0042\u006f\u006c\u0064","\u0054\u0069\u006de\u0073\u002d\u0049\u0074\u0061\u006c\u0069\u0063","\u0054\u0069m\u0065\u0073\u002dB\u006f\u006c\u0064\u0049\u0074\u0061\u006c\u0069\u0063"},"\u0064e\u0066\u0061\u0075\u006c\u0074":[]string {"\u0048e\u006c\u0076\u0065\u0074\u0069\u0063a","\u0048\u0065\u006c\u0076\u0065\u0074\u0069\u0063\u0061-\u0042\u006f\u006c\u0064","\u0048\u0065\u006c\u0076\u0065\u0074\u0069\u0063\u0061\u002d\u004f\u0062l\u0069\u0071\u0075\u0065","H\u0065\u006c\u0076\u0065ti\u0063a\u002d\u0042\u006f\u006c\u0064O\u0062\u006c\u0069\u0071\u0075\u0065"}};
|
|
func (_gef *creatorContext )drawAxes (_cfd *_cc .CT_PlotAreaChoice1 ,_dbfd ,_eff ,_ffa float64 ,_cdfg []string ,_fbed *Rectangle ,_bacb bool )error {_gce :=_gef ._efbfa ;_aeaa :=_gef ._fbce ;if _cfd ==nil {return _cb .New ("\u004e\u006f\u0020\u0061xi\u0073\u0020\u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e");
|
|
};if len (_cfd .ValAx )==0||(len (_cfd .CatAx )==0&&len (_cfd .DateAx )==0&&len (_cfd .SerAx )==0){return _cb .New ("\u004e\u006f\u0020\u0078\u0020\u006f\u0072\u0020\u0079 \u0061\u0078\u0069\u0073");};var _bca ,_gec ,_dgc ,_cfa uint32 ;var _bgc ,_dga _cc .ST_AxPos ;
|
|
var _fdag ,_agbb _cc .ST_TickMark ;var _fef ,_cbag *_cc .CT_ChartLines ;var _ffd ,_gdff _cc .ST_TickLblPos ;var _ecge ,_bfdb *_ca .CT_ShapeProperties ;var _bggf error ;_gbec :=_fbed .Right -_fbed .Left ;_bdff :=_fbed .Bottom -_fbed .Top ;if len (_cfd .ValAx )> 0{_gec ,_dga ,_agbb ,_gdff ,_cbag ,_cfa ,_bfdb ,_bggf =_begf (_cfd .ValAx [0]);
|
|
};if _dga !=_cc .ST_AxPosL &&_dga !=_cc .ST_AxPosB {return _cb .New ("\u004f\u006e\u006c\u0079\u0020l\u0065\u0066\u0074\u0020\u006f\u0072\u0020\u0062\u006f\u0074\u0074\u006f\u006d \u0079\u0020\u0061\u0078\u0069\u0073\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0020\u0073\u006f\u0020\u0066\u0061\u0072");
|
|
};_cdg :=_eff -_dbfd ;_dda :=int (_cdg /_ffa )+1;var _gcgd ,_abe float64 ;switch _agbb {case _cc .ST_TickMarkIn :_gcgd ,_abe =_gagg ,0;case _cc .ST_TickMarkOut :_gcgd ,_abe =0,_gagg ;case _cc .ST_TickMarkCross :_gcgd ,_abe =_gagg ,_gagg ;};_gcgd =_gcgd *_aeaa ;
|
|
_abe =_abe *_aeaa ;var _fc *_ca .CT_ShapeProperties ;if _cbag !=nil {_fc =_cbag .SpPr ;};_bae ,_bbgg :=_ffd !=_cc .ST_TickLblPosNone ,_gdff !=_cc .ST_TickLblPosNone ;_fab :=_dbfd ;if len (_cfd .CatAx )> 0{_bca ,_bgc ,_fdag ,_ffd ,_fef ,_dgc ,_ecge ,_bggf =_aebg (_cfd .CatAx [0]);
|
|
}else if len (_cfd .DateAx )> 0{_bca ,_bgc ,_fdag ,_ffd ,_fef ,_dgc ,_ecge ,_bggf =_dgcd (_cfd .DateAx [0]);}else if len (_cfd .SerAx )> 0{_bca ,_bgc ,_fdag ,_ffd ,_fef ,_dgc ,_ecge ,_bggf =_cce (_cfd .SerAx [0]);};if _bggf !=nil {return _bggf ;};if _bgc !=_cc .ST_AxPosL &&_bgc !=_cc .ST_AxPosB {return _cb .New ("\u004f\u006e\u006c\u0079\u0020l\u0065\u0066\u0074\u0020\u006f\u0072\u0020\u0062\u006f\u0074\u0074\u006f\u006d \u0078\u0020\u0061\u0078\u0069\u0073\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0020\u0073\u006f\u0020\u0066\u0061\u0072");
|
|
};if _bca !=_cfa ||_gec !=_dgc {return _cb .New ("a\u0078i\u0073\u0020\u0069\u0064\u0073\u0020\u0064\u006fn\u0027\u0074\u0020\u006dat\u0063\u0068");};_ebaa :=len (_cdfg )+1;var _gge ,_fbc float64 ;switch _fdag {case _cc .ST_TickMarkIn :_gge ,_fbc =_gagg ,0;
|
|
case _cc .ST_TickMarkOut :_gge ,_fbc =0,_gagg ;case _cc .ST_TickMarkCross :_gge ,_fbc =_gagg ,_gagg ;};_gge =_gge *_aeaa ;_fbc =_fbc *_aeaa ;var _afgd *_ca .CT_ShapeProperties ;if _fef !=nil {_afgd =_fef .SpPr ;};if _bacb {_ead :=_bdff /float64 (len (_cdfg ));
|
|
_dccc :=_fbed .Left -_dbfd *_gbec /_cdg ;_afad :=_dccc -_egee *_aeaa ;if _bae {var _dge float64 ;for _gefe :=0;_gefe < _ebaa ;_gefe ++{_gca :=_fbed .Bottom -float64 (_gefe )*_ead ;if _gefe < _ebaa -1{_ebga :=_gce .NewParagraph (_cdfg [_gefe ]);_ebga .SetFontSize (_cfca *_aeaa );
|
|
_ebga .SetPos (_afad ,_gca -_ead /2-_deb *_aeaa );_gce .Draw (_ebga );_acbd :=(_ebga .Width ()/1000-_egee )*_aeaa ;if _acbd > 0&&_acbd > _dge {_dge =_acbd ;};};};if _dge > 0{_fbed .Left +=_dge +_bgg ;_dccc =_fbed .Left -_dbfd *_gbec /_cdg ;_gbec =_fbed .Right -_fbed .Left ;
|
|
};};_cafd :=_dccc -_fbc ;_bea :=_dccc +_gge ;_acg :=_fbed .Left ;_bcd :=_fbed .Right ;for _fddb :=0;_fddb < _ebaa ;_fddb ++{_bgcg :=_fbed .Bottom -float64 (_fddb )*_ead ;_gef .drawLineWithProps (_ecge ,_cafd ,_bgcg ,_bea ,_bgcg ,true );_gef .drawLineWithProps (_afgd ,_acg ,_bgcg ,_bcd ,_bgcg ,true );
|
|
};_cgbg :=_gbec /_cdg ;_fbgf :=_fbed .Bottom -_gcgd ;_aeafc :=_fbed .Bottom +_abe ;_gga :=_fbed .Top ;_ccb :=_fbed .Bottom ;for _bgcb :=0;_bgcb < _dda ;_bgcb ++{_cdgf :=_fbed .Left +(_fab -_dbfd )*_cgbg ;_gef .drawLineWithProps (_bfdb ,_cdgf ,_fbgf ,_cdgf ,_aeafc ,true );
|
|
_gef .drawLineWithProps (_fc ,_cdgf ,_gga ,_cdgf ,_ccb ,true );if _bbgg {_efb :=_gce .NewParagraph (_df .FormatFloat (_fab ,'g',-1,64));_efb .SetFontSize (_cfca *_aeaa );_efb .SetPos (_cdgf -_fac *_aeaa ,_ccb +_gfgc *_aeaa );_gce .Draw (_efb );};_fab +=_ffa ;
|
|
};}else {_egaa :=_bdff /_cdg ;_bgf :=_fbed .Left ;if _bbgg {var _gfb float64 ;for _fbcd :=0;_fbcd < _dda ;_fbcd ++{_cdff :=_fbed .Bottom -(_fab -_dbfd )*_egaa ;_dbg :=_gce .NewParagraph (_df .FormatFloat (_fab ,'g',-1,64));_dbg .SetFontSize (_cfca *_aeaa );
|
|
_dbg .SetPos (_bgf -_egee *_aeaa ,_cdff -_deb *_aeaa );_gce .Draw (_dbg );_gbef :=(_dbg .Width ()/1000-_egee )*_aeaa ;if _gbef > 0&&_gbef > _gfb {_gfb =_gbef ;};_fab +=_ffa ;};if _gfb > 0{_fbed .Left +=_gfb +_bgg ;_gbec =_fbed .Right -_fbed .Left ;};};
|
|
_fab =_dbfd ;_cgfff :=_fbed .Left -_abe ;_afac :=_fbed .Left +_gcgd ;_bgf =_fbed .Left ;_cafg :=_fbed .Right ;for _cag :=0;_cag < _dda ;_cag ++{_fcf :=_fbed .Bottom -(_fab -_dbfd )*_egaa ;_gef .drawLineWithProps (_bfdb ,_cgfff ,_fcf ,_afac ,_fcf ,true );
|
|
_gef .drawLineWithProps (_fc ,_bgf ,_fcf ,_cafg ,_fcf ,true );_fab +=_ffa ;};_fce :=_gbec /float64 (len (_cdfg ));_gecg :=_fbed .Bottom +_dbfd *_bdff /_cdg ;_dcbe :=_gecg -_gge ;_bcfa :=_gecg +_fbc ;_gda :=_fbed .Top ;_aed :=_fbed .Bottom ;_abd :=_gecg +_gfgc *_aeaa ;
|
|
for _gdac :=0;_gdac < _ebaa ;_gdac ++{_fdaf :=_fbed .Left +float64 (_gdac )*_fce ;_gef .drawLineWithProps (_ecge ,_fdaf ,_dcbe ,_fdaf ,_bcfa ,true );_gef .drawLineWithProps (_afgd ,_fdaf ,_gda ,_fdaf ,_aed ,true );if _bae &&_gdac < _ebaa -1{_eec :=_gce .NewParagraph (_cdfg [_gdac ]);
|
|
_eec .SetFontSize (_cfca *_aeaa );_eec .SetPos (_fdaf +_feb *_aeaa ,_abd );_gce .Draw (_eec );};};};return nil ;};type serValue struct{_cbdb string ;_ffe float64 ;_ceeb *_ca .CT_ShapeProperties ;};func (_age *Rectangle )Translate (x ,y float64 ){_age .Left +=x ;
|
|
_age .Right +=x ;_age .Top +=y ;_age .Bottom +=y ;};type barSerByOrder []*_cc .CT_BarSer ;func _bgcbg (_daf ,_ffdg ,_cda float64 )float64 {if _daf *6< 1{return _cda +(_ffdg -_cda )*6*_daf ;}else if _daf *2< 1{return _ffdg ;}else if _daf *3< 2{return _cda +(_ffdg -_cda )*(2.0/3.0-_daf )*6;
|
|
}else {return _cda ;};}; |