unioffice/internal/convertutils/convertutils.go
2023-05-26 09:49:04 +00:00

12 lines
41 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 (_a "bytes";_c "errors";_b "fmt";_cg "github.com/unidoc/unioffice/common/logger";_g "github.com/unidoc/unioffice/measurement";_ga "github.com/unidoc/unioffice/schema/soo/dml";_db "github.com/unidoc/unioffice/schema/soo/dml/chart";_eg "github.com/unidoc/unioffice/spreadsheet/format";_fcg "github.com/unidoc/unipdf/v3/creator";_gf "github.com/unidoc/unipdf/v3/model";_ea "github.com/unidoc/unipdf/v3/render";_adf "github.com/unidoc/unitype";_ff "image";_fd "math";_fc "os";_af "sort";_ad "strconv";_fdb "strings";_d "sync";_e "unicode";);type barSerByOrder []*_db .CT_BarSer ;type serCategory struct{_ebc string ;_aaa []serValue ;};func MakeBlockFromChartSpace (cs *_db .ChartSpace ,width ,height float64 ,theme *_ga .Theme )(*_fcg .Block ,error ){_edd ,_ggb :=_feaa (cs ,width ,height ,theme ,false );if _ggb !=nil {return nil ,_ggb ;};_bgfa ,_ggb :=GetPageFromCreator (_edd );if _ggb !=nil {return nil ,_ggb ;};_fgf ,_ggb :=_fcg .NewBlockFromPage (_bgfa );if _ggb !=nil {return nil ,_ggb ;};return _fgf ,nil ;};func CropImageByRect (sourceImg _ff .Image ,rect _ff .Rectangle )_ff .Image {_ecbg ,_dee ,_cdae ,_efdd :=rect .Min .X ,rect .Min .Y ,rect .Max .X ,rect .Max .Y ;_eafgb :=_ff .NewNRGBA (_ff .Rect (0,0,_cdae -_ecbg ,_efdd -_dee ));for _ffef :=_ecbg ;_ffef < _cdae ;_ffef ++{for _dcgb :=_dee ;_dcgb < _efdd ;_dcgb ++{_eafgb .Set (_ffef -_ecbg ,_dcgb -_dee ,sourceImg .At (_ffef ,_dcgb ));};};return _eafgb ;};func FromSTCoordinate (st _ga .ST_Coordinate )int64 {if _cgfc :=st .ST_CoordinateUnqualified ;_cgfc !=nil {return *_cgfc ;};return 0;};func _agee (_bdb _ga .ST_SchemeColorVal ,_egc *_ga .Theme )string {if _feafe :=_egc .ThemeElements ;_feafe !=nil {if _fdgb :=_feafe .ClrScheme ;_fdgb !=nil {switch _bdb {case _ga .ST_SchemeColorValLt1 :return GetColorStringFromDmlColor (_fdgb .Lt1 );case _ga .ST_SchemeColorValDk1 ,_ga .ST_SchemeColorValTx1 :return GetColorStringFromDmlColor (_fdgb .Dk1 );case _ga .ST_SchemeColorValLt2 :return GetColorStringFromDmlColor (_fdgb .Lt2 );case _ga .ST_SchemeColorValDk2 :return GetColorStringFromDmlColor (_fdgb .Dk2 );case _ga .ST_SchemeColorValAccent1 :return GetColorStringFromDmlColor (_fdgb .Accent1 );case _ga .ST_SchemeColorValAccent2 :return GetColorStringFromDmlColor (_fdgb .Accent2 );case _ga .ST_SchemeColorValAccent3 :return GetColorStringFromDmlColor (_fdgb .Accent3 );case _ga .ST_SchemeColorValAccent4 :return GetColorStringFromDmlColor (_fdgb .Accent4 );case _ga .ST_SchemeColorValAccent5 :return GetColorStringFromDmlColor (_fdgb .Accent5 );case _ga .ST_SchemeColorValAccent6 :return GetColorStringFromDmlColor (_fdgb .Accent6 );};};};return "";};func MakeImageFromChartSpace (cs *_db .ChartSpace ,width ,height float64 ,theme *_ga .Theme )(_ff .Image ,error ){_fdf ,_fdee :=_feaa (cs ,width ,height ,theme ,true );if _fdee !=nil {return nil ,_fdee ;};_gfc ,_fdee :=GetPageFromCreator (_fdf );if _fdee !=nil {return nil ,_fdee ;};return _ea .NewImageDevice ().Render (_gfc );};func RegisterFont (name string ,style FontStyle ,font *_gf .PdfFont ){_gcef ._ccb .Lock ();if _gcef ._cca [name ]==nil {_gcef ._cca [name ]=map[FontStyle ]*_gf .PdfFont {};};_gcef ._cca [name ][style ]=font ;_gcef ._ccb .Unlock ();};func (_gd *creatorContext )drawBarChart (_ca *_db .CT_BarChart ,_fcb *Rectangle ,_cga *_db .CT_PlotAreaChoice1 )([]*legendItem ,error ){var _ae bool ;if _ag :=_ca .BarDir ;_ag !=nil {_ae =_ag .ValAttr ==_db .ST_BarDirBar ;};_da :=_ca .Ser ;_af .Sort (barSerByOrder (_da ));_cd :=map[string ]serCategory {};_ee :=[]string {};_ba :=[]*legendItem {};_cde :=_fd .Inf (1);_cc :=_fd .Inf (-1);for _ ,_eaaa :=range _da {var _ac string ;if _df :=_eaaa .Tx ;_df !=nil {if _cb :=_df .Choice ;_cb !=nil {if _cb .V !=nil {_ac =*_cb .V ;}else if _eb :=_cb .StrRef ;_eb !=nil {if _dg :=_eb .StrCache ;_dg !=nil {for _ ,_fce :=range _dg .Pt {_ac =_fce .V ;};};};};};if _bfb :=_eaaa .Cat ;_bfb !=nil {if _ebd :=_bfb .Choice ;_ebd !=nil {if _dge :=_ebd .StrRef ;_dge !=nil {if _cad :=_dge .StrCache ;_cad !=nil {for _ ,_ef :=range _cad .Pt {_gfb :=_ef .V ;if _ ,_dgf :=_cd [_gfb ];!_dgf {_cd [_gfb ]=serCategory {_ebc :_gfb ,_aaa :[]serValue {}};_ee =append (_ee ,_gfb );};};};}else if _gae :=_ebd .NumRef ;_gae !=nil {if _bb :=_gae .NumCache ;_bb !=nil {var _dfg string ;if _bb .FormatCode !=nil {_dfg =*_bb .FormatCode ;};for _ ,_dac :=range _bb .Pt {var _adg string ;if _dac .FormatCodeAttr ==nil {_adg =_dfg ;}else {_adg =*_dac .FormatCodeAttr ;};var _gg string ;_aa ,_ggd :=_ad .ParseFloat (_dac .V ,64);if _ggd !=nil {_gg =_dac .V ;}else {_gg =_eg .Number (_aa ,_adg );};if _ ,_be :=_cd [_gg ];!_be {_cd [_gg ]=serCategory {_ebc :_gg ,_aaa :[]serValue {}};_ee =append (_ee ,_gg );};};};};};};if _fg :=_eaaa .Val ;_fg !=nil {if _cbf :=_fg .Choice ;_cbf !=nil {if _ab :=_cbf .NumRef ;_ab !=nil {if _cbc :=_ab .NumCache ;_cbc !=nil {for _ggc ,_aee :=range _cbc .Pt {_cgad ,_fe :=_ad .ParseFloat (_aee .V ,64);if _fe !=nil {_cgad =0;_cg .Log .Debug ("\u0070a\u0072s\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0073",_fe );};if _cgad > _cc {_cc =_cgad ;};if _cgad < _cde {_cde =_cgad ;};_ebb :=_cd [_ee [_ggc ]];_ebb ._aaa =append (_ebb ._aaa ,serValue {_cgg :_ac ,_dged :_cgad ,_faa :_eaaa .SpPr });_cd [_ee [_ggc ]]=_ebb ;};};};};};_ba =append (_ba ,&legendItem {_bgae :_ac ,_ge :_eaaa .SpPr });};var _dd float64 ;var _ege ,_dc float64 ;if _cc ==0&&_cde ==0{_dd =0.2;_dc =0;_ege =1;}else {var _dgd float64 ;if _ddb :=_fd .Abs (_cde );_cc < _ddb {_dgd =_ddb ;}else {_dgd =_cc ;};_bd :=_fd .Pow (10,_fd .Floor (_fd .Log10 (_dgd )));_aae :=_dgd /_bd ;if _aae >=1.715&&_aae < 4.29{_dd =0.5;}else if _aae >=4.29&&_aae < 8.58{_dd =1;}else {_dd =2;};_dd *=_bd ;if _cc <=0{_ege =0;}else {_ege =(_fd .Ceil (_cc /_dd )+1)*_dd ;};if _cde >=0{_dc =0;}else {_dc =(_fd .Floor (_cde /_dd )-1)*_dd ;};};_dcd :=_gd .drawAxes (_cga ,_dc ,_ege ,_dd ,_ee ,_fcb ,_ae );if _dcd !=nil {return nil ,_dcd ;};_aaeb :=0.0;if _ca .GapWidth !=nil {if _adc :=_ca .GapWidth .ValAttr ;_adc !=nil {if _cac :=_adc .ST_GapAmountUShort ;_cac !=nil {_aaeb =float64 (*_cac )/100.0;};};};_aab :=_fcb .Right -_fcb .Left ;_fa :=_fcb .Bottom -_fcb .Top ;_eea :=float64 (len (_ee ));if _ae {_eeb :=_ege /(_ege -_dc )*_aab ;_fdd :=-_dc /(_ege -_dc )*_aab ;_acg :=_fcb .Left +_fdd ;_eac :=_fa /_eea ;for _bdf ,_aac :=range _ee {_cdf :=_cd [_aac ];_ed :=float64 (len (_cdf ._aaa ))+_aaeb ;_bg :=_eac /_ed ;_abb :=_bg *_aaeb ;_ce :=_fcb .Bottom -float64 (_bdf )*_eac -_abb /2-_bg ;for _ ,_bga :=range _cdf ._aaa {if _bga ._dged ==0{continue ;};var _fcef ,_ccf float64 ;if _bga ._dged > 0{_ccf =_bga ._dged /_ege *_eeb ;_gd .drawRectangleWithProps (_bga ._faa ,_acg ,_ce ,_ccf ,_bg ,false );}else {_ccf =_bga ._dged /_dc *_fdd ;_fcef =_acg -_ccf ;_gd .drawRectangleWithProps (_bga ._faa ,_fcef ,_ce ,_ccf ,_bg ,false );};_ce -=_bg ;};};}else {_gfd :=_ege /(_ege -_dc )*_fa ;_cbb :=-_dc /(_ege -_dc )*_fa ;_ffa :=_fcb .Top +_gfd ;_gb :=_aab /_eea ;for _ace ,_agf :=range _ee {_dcdf :=_cd [_agf ];_aeg :=float64 (len (_dcdf ._aaa ))+_aaeb ;_cgaa :=_gb /_aeg ;_fb :=_cgaa *_aaeb ;_afd :=_fcb .Left +float64 (_ace )*_gb +_fb /2;for _ ,_fbb :=range _dcdf ._aaa {var _eag ,_fde float64 ;if _fbb ._dged > 0{_fde =_fbb ._dged /_ege *_gfd ;_eag =_ffa -_fde ;_gd .drawRectangleWithProps (_fbb ._faa ,_afd ,_eag ,_cgaa ,_fde ,false );}else {_fde =_fbb ._dged /_dc *_cbb ;_gd .drawRectangleWithProps (_fbb ._faa ,_afd ,_ffa ,_cgaa ,_fde ,false );};_afd +=_cgaa ;};};};return _ba ,nil ;};var _agce =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 IsNoSpaceLanguage (symbol string )bool {for _ ,_acb :=range symbol {if _e .Is (_e .Han ,_acb ){return true ;};};return false ;};type fontsMap struct{_ccb *_d .Mutex ;_cca map[string ]map[FontStyle ]*_gf .PdfFont ;};type BorderPosition byte ;const (FontStyle_Regular FontStyle =0;FontStyle_Bold FontStyle =1;FontStyle_Italic FontStyle =2;FontStyle_BoldItalic FontStyle =3;);func GetRegisteredFont (name string ,style FontStyle )*_gf .PdfFont {_gcef ._ccb .Lock ();defer _gcef ._ccb .Unlock ();if _egff ,_badbd :=_gcef ._cca [name ];_badbd {if _fcdf ,_bdbf :=_egff [style ];_bdbf {return _fcdf ;};};return nil ;};func AdjustColor (colorStr string ,EG_ColorTransform []*_ga .EG_ColorTransform )string {for _ ,_cge :=range EG_ColorTransform {if _cdba :=_cge .Tint ;_cdba !=nil {if _bbc :=_cdba .ValAttr .ST_PositiveFixedPercentageDecimal ;_bbc !=nil {colorStr =AdjustColorByTint (colorStr ,float64 (*_bbc )/100000);};};if _eef :=_cge .Shade ;_eef !=nil {if _fec :=_eef .ValAttr .ST_PositiveFixedPercentageDecimal ;_fec !=nil {colorStr =AdjustColorByShade (colorStr ,float64 (*_fec )/100000);};};if _eedb :=_cge .LumMod ;_eedb !=nil {if _fbc :=_eedb .ValAttr .ST_PercentageDecimal ;_fbc !=nil {colorStr =AdjustColorByLumMod (colorStr ,float64 (*_fbc )/100000);};};};return colorStr ;};var _eead =_fgag (7.5);func (_gdd *creatorContext )drawRectangleWithProps (_gbba *_ga .CT_ShapeProperties ,_abff ,_cbac ,_beaf ,_ddga float64 ,_agfc bool ){_fggd :=_gdd ._edf .NewRectangle (_abff ,_cbac ,_beaf ,_ddga );if _gbba ==nil {if _agfc {_fggd .SetBorderWidth (_gfbd );}else {return ;};}else {_cadg :=_gdd .getPdfColorFromSolidFill (_gbba .SolidFill );if _cadg !=nil {_fggd .SetFillColor (_cadg );};if _cbbe :=_gbba .Ln ;_cbbe !=nil {if _dec :=_cbbe .WAttr ;_dec !=nil {_fecb :=_g .FromEMU (int64 (*_dec ));_fggd .SetBorderWidth (_fecb );if _ecfb :=_cbbe .SolidFill ;_ecfb !=nil {_cbace :=_gdd .getPdfColorFromSolidFill (_ecfb );if _cbace !=nil {_fggd .SetBorderColor (_cbace );};};}else {_fggd .SetBorderWidth (0);};};};_gdd ._edf .Draw (_fggd );};func GetOpacityFromColorTransform (trs []*_ga .EG_ColorTransform )float64 {for _ ,_fad :=range trs {if _fad !=nil {if _cfdbd :=_fad .Alpha ;_cfdbd !=nil {if _gbd :=_cfdbd .ValAttr .ST_PositiveFixedPercentageDecimal ;_gbd !=nil {return float64 (*_gbd )/100000;};};};};return 1.0;};func MakeTempCreator (width ,height float64 )*_fcg .Creator {_baa :=_fcg .New ();_baa .SetPageSize (_fcg .PageSize {width ,height });_baa .SetPageMargins (0,0,0,0);return _baa ;};func (_bfaa *creatorContext )drawBorderWithProps (_ecbe *_ga .CT_ShapeProperties ,_eagc *Rectangle ,_aed float64 ){if _eagc !=nil &&_ecbe !=nil &&_ecbe .Ln !=nil &&_ecbe .Ln .SolidFill !=nil {_cgd :=_bfaa .getPdfColorFromSolidFill (_ecbe .Ln .SolidFill );DrawRectangle (_bfaa ._edf ,_eagc ,_aed ,_cgd );};};func _cfc (_cfcb *_db .CT_DateAx )(uint32 ,_db .ST_AxPos ,_db .ST_TickMark ,_db .ST_TickLblPos ,*_db .CT_ChartLines ,uint32 ,*_ga .CT_ShapeProperties ,error ){var _aaad ,_dcb uint32 ;var _aad _db .ST_AxPos ;var _dce _db .ST_TickMark ;var _ecf *_db .CT_ChartLines ;var _aeb _db .ST_TickLblPos ;if _cfcb .AxId ==nil {return _aaad ,_aad ,_dce ,_aeb ,_ecf ,_dcb ,_cfcb .SpPr ,_c .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_aaad =_cfcb .AxId .ValAttr ;};if _cfcb .AxPos ==nil {return _aaad ,_aad ,_dce ,_aeb ,_ecf ,_dcb ,_cfcb .SpPr ,_c .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_aad =_cfcb .AxPos .ValAttr ;};if _cfcb .MajorTickMark !=nil {_dce =_cfcb .MajorTickMark .ValAttr ;};if _cfcb .TickLblPos !=nil {_aeb =_cfcb .TickLblPos .ValAttr ;};if _cfcb .CrossAx ==nil {return _aaad ,_aad ,_dce ,_aeb ,_ecf ,_dcb ,_cfcb .SpPr ,_c .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_dcb =_cfcb .CrossAx .ValAttr ;};_ecf =_cfcb .MajorGridlines ;return _aaad ,_aad ,_dce ,_aeb ,_ecf ,_dcb ,_cfcb .SpPr ,nil ;};var _agc =_fgag (1.5);func (_gbb 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 (_gbb )];};func _fgag (_fead float64 )float64 {return _fead *_g .Millimeter };func _bfec (_ggcf *_db .CT_SerAx )(uint32 ,_db .ST_AxPos ,_db .ST_TickMark ,_db .ST_TickLblPos ,*_db .CT_ChartLines ,uint32 ,*_ga .CT_ShapeProperties ,error ){var _afc ,_cfdb uint32 ;var _fed _db .ST_AxPos ;var _bdffb _db .ST_TickMark ;var _gcbd *_db .CT_ChartLines ;var _agcba _db .ST_TickLblPos ;if _ggcf .AxId ==nil {return _afc ,_fed ,_bdffb ,_agcba ,_gcbd ,_cfdb ,_ggcf .SpPr ,_c .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_afc =_ggcf .AxId .ValAttr ;};if _ggcf .AxPos ==nil {return _afc ,_fed ,_bdffb ,_agcba ,_gcbd ,_cfdb ,_ggcf .SpPr ,_c .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_fed =_ggcf .AxPos .ValAttr ;};if _ggcf .MajorTickMark !=nil {_bdffb =_ggcf .MajorTickMark .ValAttr ;};if _ggcf .TickLblPos !=nil {_agcba =_ggcf .TickLblPos .ValAttr ;};if _ggcf .CrossAx ==nil {return _afc ,_fed ,_bdffb ,_agcba ,_gcbd ,_cfdb ,_ggcf .SpPr ,_c .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_cfdb =_ggcf .CrossAx .ValAttr ;};_gcbd =_ggcf .MajorGridlines ;return _afc ,_fed ,_bdffb ,_agcba ,_gcbd ,_cfdb ,_ggcf .SpPr ,nil ;};func (_bed *creatorContext )drawLegend (_gbf *Rectangle ,_ddc []*legendItem ,_acd bool ){_cgf :=_bed ._dca ;_cce :=_fgag (2.5)*_cgf ;_caa :=_fcc *_cgf ;_ffe :=(_cce -_caa )/2;_ega :=float64 (len (_ddc ));if _acd {_dcg :=&Rectangle {Top :_gbf .Top +_fgag (1)*_cgf ,Bottom :_gbf .Bottom -_fgag (1)*_cgf ,Left :_gbf .Left +_fgag (2.5)*_cgf ,Right :_gbf .Right -_fgag (2.5)*_cgf };var _dcf float64 ;if _ega > 1{_dcf =(_dcg .Right -_dcg .Left )/_ega ;};_daa :=_dcg .Left ;_fcd :=_dcg .Top ;for _ ,_bff :=range _ddc {if _gge :=_bff ._ge ;_gge !=nil {_bed .drawRectangleWithProps (_gge ,_daa ,_fcd +_ffe ,_caa ,_caa ,false );_dcda :=_daa +_caa *2;_bef :=_bed ._edf .NewStyledParagraph ();_bef .SetPos (_dcda ,_fcd );_bfa :=_bef .Append (_bff ._bgae );_cef ,_fbf :=_gf .NewStandard14Font (_gf .HelveticaName );if _fbf ==nil {_bfa .Style =_fcg .TextStyle {FontSize :_cce ,Font :_cef ,TextRise :0.4};_bed ._edf .Draw (_bef );};};_daa +=_dcf ;};}else {_bc :=&Rectangle {Top :_gbf .Top +_fgag (2.5)*_cgf ,Bottom :_gbf .Bottom -_fgag (2.5)*_cgf ,Left :_gbf .Left +_fgag (2.5)*_cgf ,Right :_gbf .Right -_fgag (2.5)*_cgf };var _bde float64 ;if _ega > 1{_bde =(_bc .Bottom -_bc .Top -_cce )/(_ega -1);};_aag :=_bc .Top ;_fdbb :=_bc .Left ;_dfgb :=_fdbb +_caa *2;for _ ,_fcea :=range _ddc {if _dfc :=_fcea ._ge ;_dfc !=nil {_bed .drawRectangleWithProps (_dfc ,_fdbb ,_aag +_ffe ,_caa ,_caa ,false );_efb :=_bed ._edf .NewStyledParagraph ();_efb .SetPos (_dfgb ,_aag );_dgg :=_efb .Append (_fcea ._bgae );_fda ,_afe :=_gf .NewStandard14Font (_gf .HelveticaName );if _afe ==nil {_dgg .Style =_fcg .TextStyle {FontSize :_cce ,Font :_fda ,TextRise :0.4};_bed ._edf .Draw (_efb );};};_aag +=_bde ;};};};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 (_fea barSerByOrder )Swap (i ,j int ){_fea [i ],_fea [j ]=_fea [j ],_fea [i ]};func (_bgf barSerByOrder )Len ()int {return len (_bgf )};type legendItem struct{_bgae string ;_ge *_ga .CT_ShapeProperties ;};var _fdbbf =_fgag (1);func MakeBlockFromCreator (c *_fcg .Creator )(*_fcg .Block ,error ){_deb ,_egac :=GetPageFromCreator (c );if _egac !=nil {return nil ,_egac ;};_bdeb ,_egac :=_fcg .NewBlockFromPage (_deb );if _egac !=nil {return nil ,_egac ;};return _bdeb ,nil ;};func AdjustColorByLumMod (colorStr string ,lum float64 )string {var _gad ,_badb ,_efd uint8 ;_gac ,_ :=_b .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_gad ,&_badb ,&_efd );if _gac !=3{return "";};_daef ,_add ,_fgc :=_cdab (_gad ,_badb ,_efd );_fgc =lum *_fgc ;_gad ,_badb ,_efd =_cbff (_daef ,_add ,_fgc );return _b .Sprintf ("\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",_gad ,_badb ,_efd );};func GetImage (c *_fcg .Creator ,goImg _ff .Image ,imgHeight ,imgWidth ,left ,top ,dividerX ,dividerY float64 ,part ImgPart )(*_fcg .Image ,error ){if goImg ==nil {return nil ,nil ;};_eaad :=goImg .Bounds ().Size ();_dcbb :=_eaad .X ;_ddec :=_eaad .Y ;if dividerX !=0{dividerX =dividerX /imgWidth *float64 (_dcbb );};if dividerY !=0{dividerY =dividerY /imgHeight *float64 (_ddec );};var _ccbc _ff .Rectangle ;switch part {case ImgPart_t :_ccbc =_ff .Rect (0,0,_dcbb ,int (dividerY ));case ImgPart_b :_ccbc =_ff .Rect (0,int (dividerY ),_dcbb ,_ddec );case ImgPart_l :_ccbc =_ff .Rect (0,0,int (dividerX ),_ddec );case ImgPart_r :_ccbc =_ff .Rect (int (dividerX ),0,_dcbb ,_ddec );case ImgPart_lt :_ccbc =_ff .Rect (0,0,int (dividerX ),int (dividerY ));case ImgPart_rt :_ccbc =_ff .Rect (int (dividerX ),0,_dcbb ,int (dividerY ));case ImgPart_lb :_ccbc =_ff .Rect (0,int (dividerY ),int (dividerX ),_ddec );case ImgPart_rb :_ccbc =_ff .Rect (int (dividerX ),int (dividerY ),_dcbb ,_ddec );default:_ccbc =_ff .Rect (0,0,_dcbb ,_ddec );};_egcf :=CropImageByRect (goImg ,_ccbc );_dcgg ,_dbc :=c .NewImageFromGoImage (_egcf );if _dbc !=nil {return nil ,_dbc ;};_dcgg .Scale (imgWidth /float64 (_dcbb ),imgHeight /float64 (_ddec ));_dcgg .SetPos (left ,top );return _dcgg ,nil ;};var _bca =_fgag (5);type FontStyle byte ;func (_ec barSerByOrder )Less (i ,j int )bool {return _ec [i ].Order .ValAttr < _ec [j ].Order .ValAttr };func TwipsFromPoints (points float64 )float64 {return points /_g .Twips };func _cgb (_gfba ,_fgcb ,_fab float64 )float64 {if _gfba *6< 1{return _fab +(_fgcb -_fab )*6*_gfba ;}else if _gfba *2< 1{return _fgcb ;}else if _gfba *3< 2{return _fab +(_fgcb -_fab )*(2.0/3.0-_gfba )*6;}else {return _fab ;};};func _bgc (_gcec *_db .CT_ValAx )(uint32 ,_db .ST_AxPos ,_db .ST_TickMark ,_db .ST_TickLblPos ,*_db .CT_ChartLines ,uint32 ,*_ga .CT_ShapeProperties ,error ){var _bgcf ,_beg uint32 ;var _eddf _db .ST_AxPos ;var _aadc _db .ST_TickMark ;var _bgcc *_db .CT_ChartLines ;var _aba _db .ST_TickLblPos ;if _gcec .AxId ==nil {return _bgcf ,_eddf ,_aadc ,_aba ,_bgcc ,_beg ,_gcec .SpPr ,_c .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_bgcf =_gcec .AxId .ValAttr ;};if _gcec .AxPos ==nil {return _bgcf ,_eddf ,_aadc ,_aba ,_bgcc ,_beg ,_gcec .SpPr ,_c .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_eddf =_gcec .AxPos .ValAttr ;};if _gcec .MajorTickMark !=nil {_aadc =_gcec .MajorTickMark .ValAttr ;};if _gcec .TickLblPos !=nil {_aba =_gcec .TickLblPos .ValAttr ;};if _gcec .CrossAx ==nil {return _bgcf ,_eddf ,_aadc ,_aba ,_bgcc ,_beg ,_gcec .SpPr ,_c .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_beg =_gcec .CrossAx .ValAttr ;};_bgcc =_gcec .MajorGridlines ;return _bgcf ,_eddf ,_aadc ,_aba ,_bgcc ,_beg ,_gcec .SpPr ,nil ;};func DrawLine (c *_fcg .Creator ,x0 ,y0 ,x1 ,y1 ,width float64 ,color _fcg .Color ){if color ==nil {return ;};_gage :=c .NewLine (x0 ,y0 ,x1 ,y1 );_gage .SetLineWidth (width );_gage .SetColor (color );c .Draw (_gage );};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 (_eaga *creatorContext )drawLineWithProps (_fga *_ga .CT_ShapeProperties ,_eeda ,_babb ,_ebcd ,_acf float64 ,_bfba bool ){if _fga !=nil {if _ded :=_fga .Ln ;_ded !=nil {_dgee :=_eaga .getPdfColorFromSolidFill (_ded .SolidFill );if _dgee ==nil &&_bfba {_dgee =_fcg .ColorBlack ;};if _dgee !=nil {var _aaeg float64 ;if _gff :=_ded .WAttr ;_gff !=nil {_aaeg =_g .FromEMU (int64 (*_gff ));}else {_aaeg =_gfbd ;};DrawLine (_eaga ._edf ,_eeda ,_babb ,_ebcd ,_acf ,_aaeg ,_dgee );};};};};func _cdab (_gbe ,_ffd ,_aaf uint8 )(float64 ,float64 ,float64 ){_ecb ,_gefb ,_daae :=float64 (_gbe )/255,float64 (_ffd )/255,float64 (_aaf )/255;_cegb :=_ecb ;if _gefb < _cegb {_cegb =_gefb ;};if _daae < _cegb {_cegb =_daae ;};var _edc ,_egcc bool ;_fgce :=_ecb ;if _gefb > _fgce {_fgce =_gefb ;_edc =true ;};if _daae > _fgce {_fgce =_daae ;_edc =false ;_egcc =true ;};_aaee :=(_cegb +_fgce )/2;var _dbeg float64 ;if _cegb !=_fgce {if _aaee <=0.5{_dbeg =(_fgce -_cegb )/(_fgce +_cegb );}else {_dbeg =(_fgce -_cegb )/(2.0-_fgce -_cegb );};};var _agdd float64 ;if _cegb !=_fgce {if _edc {_agdd =2.0+(_daae -_ecb )/(_fgce -_cegb );}else if _egcc {_agdd =4.0+(_ecb -_gefb )/(_fgce -_cegb );}else {_agdd =(_gefb -_daae )/(_fgce -_cegb );};_agdd *=60;if _agdd < 0{_agdd +=360;};};return _agdd ,_dbeg ,_aaee ;};func AdjustColorByShade (colorStr string ,shade float64 )string {var _abg ,_bae ,_cfg uint8 ;_def ,_ :=_b .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_abg ,&_bae ,&_cfg );if _def !=3{return "";};return _cgec (_abg ,shade )+_cgec (_bae ,shade )+_cgec (_cfg ,shade );};var _gfbd =_fgag (0.125);func _cbff (_fdfe ,_eedbc ,_eaaaa float64 )(uint8 ,uint8 ,uint8 ){var _ebf float64 ;if _eaaaa < 0.5{_ebf =_eaaaa *(1+_eedbc );}else {_ebf =_eaaaa +_eedbc -_eaaaa *_eedbc ;};_bfd :=_eaaaa *2-_ebf ;_fdfe /=360.0;_ffc :=_cab (_fdfe +1.0/3.0);_eebf :=_cab (_fdfe );_gab :=_cab (_fdfe -1.0/3.0);_cged :=_cgb (_ffc ,_ebf ,_bfd );_bffe :=_cgb (_eebf ,_ebf ,_bfd );_ebg :=_cgb (_gab ,_ebf ,_bfd );return uint8 (255*_cged ),uint8 (255*_bffe ),uint8 (255*_ebg );};func (_dfb *Rectangle )scale (_eebc float64 ){_dfb .Top *=_eebc ;_dfb .Bottom *=_eebc ;_dfb .Left *=_eebc ;_dfb .Right *=_eebc ;};func AssignStdFontByName (style _fcg .TextStyle ,fontName string )*_gf .PdfFont {_cag :=_gf .StdFontName (fontName );return _gf .NewStandard14FontMustCompile (_cag );};func _fcgf (_bda _ga .ST_SchemeColorVal ,_bfaf *_ga .Theme )string {if _bag :=_bfaf .ThemeElements ;_bag !=nil {if _ddea :=_bag .ClrScheme ;_ddea !=nil {switch _bda {case _ga .ST_SchemeColorValLt1 :return GetColorStringFromDmlColor (_ddea .Lt1 );case _ga .ST_SchemeColorValDk1 ,_ga .ST_SchemeColorValTx1 :return GetColorStringFromDmlColor (_ddea .Dk1 );case _ga .ST_SchemeColorValLt2 :return GetColorStringFromDmlColor (_ddea .Lt2 );case _ga .ST_SchemeColorValDk2 :return GetColorStringFromDmlColor (_ddea .Dk2 );case _ga .ST_SchemeColorValAccent1 :return GetColorStringFromDmlColor (_ddea .Accent1 );case _ga .ST_SchemeColorValAccent2 :return GetColorStringFromDmlColor (_ddea .Accent2 );case _ga .ST_SchemeColorValAccent3 :return GetColorStringFromDmlColor (_ddea .Accent3 );case _ga .ST_SchemeColorValAccent4 :return GetColorStringFromDmlColor (_ddea .Accent4 );case _ga .ST_SchemeColorValAccent5 :return GetColorStringFromDmlColor (_ddea .Accent5 );case _ga .ST_SchemeColorValAccent6 :return GetColorStringFromDmlColor (_ddea .Accent6 );};};};return "";};func _ggca (_dfe string )error {if !_fdb .HasSuffix (_dfe ,"\u002e\u0074\u0074\u0066"){_cg .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 _b .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");};_acge ,_agb :=_adf .ParseFile (_dfe );if _agb !=nil {_cg .Log .Debug ("\u0043a\u006e\u006e\u006f\u0074\u0020\u0070\u0061\u0072\u0073\u0065\u0020T\u0054\u0046\u0020\u0066\u0069\u006c\u0065\u0020\u0025\u0073",_agb );return _agb ;};_afa ,_agb :=_gf .NewCompositePdfFontFromTTFFile (_dfe );if _agb !=nil {return _agb ;};_aga :=_acge .GetNameRecords ();for _ ,_dacg :=range _aga {_bdfe :=_dacg [1];if _bdfe ==""{return _b .Errorf ("\u004e\u006f\u0020\u0066\u006fn\u0074\u0020\u0066\u0061\u006d\u0069\u006c\u0079\u0020\u0069\u006e\u0066\u006fr\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0066\u0069\u006c\u0065\u0020\u0025\u0073",_dfe );};_eacg :=make ([]byte ,0);for _ccfa :=0;_ccfa < len (_bdfe );_ccfa ++{if _bdfe [_ccfa ]==39||_bdfe [_ccfa ]==92{continue ;};_bdd :=4;if _ccfa +_bdd < len (_bdfe ){if _bdfe [_ccfa :_ccfa +_bdd ]=="\u0000"{_ccfa =_ccfa +_bdd +1;continue ;};};_eacg =append (_eacg ,_bdfe [_ccfa ]);};_bdfe =_fdb .Replace (string (_eacg ),"\u0078\u0030\u0030","",-1);_acabb :=_dacg [2];if _acabb ==""{return _b .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",_dfe );};_eacg =make ([]byte ,0);for _eegf :=0;_eegf < len (_acabb );_eegf ++{if _acabb [_eegf ]==39||_acabb [_eegf ]==92{continue ;};_gfbbf :=4;if _eegf +_gfbbf < len (_acabb ){if _acabb [_eegf :_eegf +_gfbbf ]=="\u0000"{_eegf =_eegf +_gfbbf +1;continue ;};};_eacg =append (_eacg ,_acabb [_eegf ]);};_acabb =_fdb .Replace (string (_eacg ),"\u0078\u0030\u0030","",-1);RegisterFont (_bdfe ,_agce [_acabb ],_afa );};return nil ;};type ImgPart byte ;func (_cf *creatorContext )drawAxes (_cgfd *_db .CT_PlotAreaChoice1 ,_ebdf ,_gee ,_gfcf float64 ,_aef []string ,_bgg *Rectangle ,_dfgc bool )error {_eee :=_cf ._edf ;_fdg :=_cf ._dca ;if _cgfd ==nil {return _c .New ("\u004e\u006f\u0020\u0061xi\u0073\u0020\u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e");};if len (_cgfd .ValAx )==0||(len (_cgfd .CatAx )==0&&len (_cgfd .DateAx )==0&&len (_cgfd .SerAx )==0){return _c .New ("\u004e\u006f\u0020\u0078\u0020\u006f\u0072\u0020\u0079 \u0061\u0078\u0069\u0073");};var _fba ,_eaag ,_dcfc ,_ggbc uint32 ;var _egf ,_ggbb _db .ST_AxPos ;var _aca ,_eff _db .ST_TickMark ;var _gcf ,_dfd *_db .CT_ChartLines ;var _feb ,_bab _db .ST_TickLblPos ;var _bdcd ,_bfe *_ga .CT_ShapeProperties ;var _eab error ;_aaae :=_bgg .Right -_bgg .Left ;_feaf :=_bgg .Bottom -_bgg .Top ;if len (_cgfd .ValAx )> 0{_eaag ,_ggbb ,_eff ,_bab ,_dfd ,_ggbc ,_bfe ,_eab =_bgc (_cgfd .ValAx [0]);};if _ggbb !=_db .ST_AxPosL &&_ggbb !=_db .ST_AxPosB {return _c .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");};_bgab :=_gee -_ebdf ;_bad :=int (_bgab /_gfcf )+1;var _bfg ,_cff float64 ;switch _eff {case _db .ST_TickMarkIn :_bfg ,_cff =_fdbbf ,0;case _db .ST_TickMarkOut :_bfg ,_cff =0,_fdbbf ;case _db .ST_TickMarkCross :_bfg ,_cff =_fdbbf ,_fdbbf ;};_bfg =_bfg *_fdg ;_cff =_cff *_fdg ;var _dbg *_ga .CT_ShapeProperties ;if _dfd !=nil {_dbg =_dfd .SpPr ;};_ebbb ,_cae :=_feb !=_db .ST_TickLblPosNone ,_bab !=_db .ST_TickLblPosNone ;_cbd :=_ebdf ;if len (_cgfd .CatAx )> 0{_fba ,_egf ,_aca ,_feb ,_gcf ,_dcfc ,_bdcd ,_eab =_agcb (_cgfd .CatAx [0]);}else if len (_cgfd .DateAx )> 0{_fba ,_egf ,_aca ,_feb ,_gcf ,_dcfc ,_bdcd ,_eab =_cfc (_cgfd .DateAx [0]);}else if len (_cgfd .SerAx )> 0{_fba ,_egf ,_aca ,_feb ,_gcf ,_dcfc ,_bdcd ,_eab =_bfec (_cgfd .SerAx [0]);};if _eab !=nil {return _eab ;};if _egf !=_db .ST_AxPosL &&_egf !=_db .ST_AxPosB {return _c .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 _fba !=_ggbc ||_eaag !=_dcfc {return _c .New ("a\u0078i\u0073\u0020\u0069\u0064\u0073\u0020\u0064\u006fn\u0027\u0074\u0020\u006dat\u0063\u0068");};_eaab :=len (_aef )+1;var _bcg ,_dba float64 ;switch _aca {case _db .ST_TickMarkIn :_bcg ,_dba =_fdbbf ,0;case _db .ST_TickMarkOut :_bcg ,_dba =0,_fdbbf ;case _db .ST_TickMarkCross :_bcg ,_dba =_fdbbf ,_fdbbf ;};_bcg =_bcg *_fdg ;_dba =_dba *_fdg ;var _cfb *_ga .CT_ShapeProperties ;if _gcf !=nil {_cfb =_gcf .SpPr ;};if _dfgc {_cgc :=_feaf /float64 (len (_aef ));_bgga :=_bgg .Left -_ebdf *_aaae /_bgab ;_afb :=_bgga -_eead *_fdg ;if _ebbb {var _aefg float64 ;for _ddf :=0;_ddf < _eaab ;_ddf ++{_acab :=_bgg .Bottom -float64 (_ddf )*_cgc ;if _ddf < _eaab -1{_efg :=_eee .NewParagraph (_aef [_ddf ]);_efg .SetFontSize (_gga *_fdg );_efg .SetPos (_afb ,_acab -_cgc /2-_bdee *_fdg );_eee .Draw (_efg );_cbea :=(_efg .Width ()/1000-_eead )*_fdg ;if _cbea > 0&&_cbea > _aefg {_aefg =_cbea ;};};};if _aefg > 0{_bgg .Left +=_aefg +_cec ;_bgga =_bgg .Left -_ebdf *_aaae /_bgab ;_aaae =_bgg .Right -_bgg .Left ;};};_cdc :=_bgga -_dba ;_gef :=_bgga +_bcg ;_eafg :=_bgg .Left ;_aea :=_bgg .Right ;for _gfe :=0;_gfe < _eaab ;_gfe ++{_cdb :=_bgg .Bottom -float64 (_gfe )*_cgc ;_cf .drawLineWithProps (_bdcd ,_cdc ,_cdb ,_gef ,_cdb ,true );_cf .drawLineWithProps (_cfb ,_eafg ,_cdb ,_aea ,_cdb ,true );};_cgaad :=_aaae /_bgab ;_eaff :=_bgg .Bottom -_bfg ;_aeaf :=_bgg .Bottom +_cff ;_edg :=_bgg .Top ;_fbaf :=_bgg .Bottom ;for _gcb :=0;_gcb < _bad ;_gcb ++{_cda :=_bgg .Left +(_cbd -_ebdf )*_cgaad ;_cf .drawLineWithProps (_bfe ,_cda ,_eaff ,_cda ,_aeaf ,true );_cf .drawLineWithProps (_dbg ,_cda ,_edg ,_cda ,_fbaf ,true );if _cae {_eda :=_eee .NewParagraph (_ad .FormatFloat (_cbd ,'g',-1,64));_eda .SetFontSize (_gga *_fdg );_eda .SetPos (_cda -_cbbc *_fdg ,_fbaf +_agc *_fdg );_eee .Draw (_eda );};_cbd +=_gfcf ;};}else {_bdff :=_feaf /_bgab ;_cfd :=_bgg .Left ;if _cae {var _dga float64 ;for _fff :=0;_fff < _bad ;_fff ++{_caag :=_bgg .Bottom -(_cbd -_ebdf )*_bdff ;_beb :=_eee .NewParagraph (_ad .FormatFloat (_cbd ,'g',-1,64));_beb .SetFontSize (_gga *_fdg );_beb .SetPos (_cfd -_eead *_fdg ,_caag -_bdee *_fdg );_eee .Draw (_beb );_gfbb :=(_beb .Width ()/1000-_eead )*_fdg ;if _gfbb > 0&&_gfbb > _dga {_dga =_gfbb ;};_cbd +=_gfcf ;};if _dga > 0{_bgg .Left +=_dga +_cec ;_aaae =_bgg .Right -_bgg .Left ;};};_cbd =_ebdf ;_eed :=_bgg .Left -_cff ;_eegg :=_bgg .Left +_bfg ;_cfd =_bgg .Left ;_ggeb :=_bgg .Right ;for _bdce :=0;_bdce < _bad ;_bdce ++{_dbba :=_bgg .Bottom -(_cbd -_ebdf )*_bdff ;_cf .drawLineWithProps (_bfe ,_eed ,_dbba ,_eegg ,_dbba ,true );_cf .drawLineWithProps (_dbg ,_cfd ,_dbba ,_ggeb ,_dbba ,true );_cbd +=_gfcf ;};_cggb :=_aaae /float64 (len (_aef ));_ddg :=_bgg .Bottom +_ebdf *_feaf /_bgab ;_aeec :=_ddg -_bcg ;_ecc :=_ddg +_dba ;_geef :=_bgg .Top ;_acdd :=_bgg .Bottom ;_ccc :=_ddg +_agc *_fdg ;for _gce :=0;_gce < _eaab ;_gce ++{_bgdb :=_bgg .Left +float64 (_gce )*_cggb ;_cf .drawLineWithProps (_bdcd ,_bgdb ,_aeec ,_bgdb ,_ecc ,true );_cf .drawLineWithProps (_cfb ,_bgdb ,_geef ,_bgdb ,_acdd ,true );if _ebbb &&_gce < _eaab -1{_ddd :=_eee .NewParagraph (_aef [_gce ]);_ddd .SetFontSize (_gga *_fdg );_ddd .SetPos (_bgdb +_bca *_fdg ,_ccc );_eee .Draw (_ddd );};};};return nil ;};const DefaultFontSize =12.0;func _feaa (_eege *_db .ChartSpace ,_cadf ,_dde float64 ,_age *_ga .Theme ,_bea bool )(*_fcg .Creator ,error ){_eaf :=1.0;if _bea {_eaf =8.0;};_bbf :=&Rectangle {};_abd :=&Rectangle {Top :_bbf .Top ,Bottom :_dde -_bbf .Bottom ,Left :_bbf .Left ,Right :_cadf -_bbf .Right };_bdc :=MakeTempCreator (_cadf *_eaf +1,_dde *_eaf +1);_ada :=&creatorContext {_edf :_bdc ,_cacg :_age ,_dca :_eaf };var _fef bool ;if _geb :=_eege .Chart ;_geb !=nil {_dbb :=_geb .PlotArea ;if _dbb ==nil {return nil ,_c .New ("\u004e\u006f\u0020p\u006c\u006f\u0074\u0020\u0061\u0072\u0065\u0061");};_dbf :=&Rectangle {Top :_fgag (10),Bottom :_abd .Bottom -_fgag (15),Left :_fgag (10),Right :_abd .Right -_fgag (10)};var _cba *Rectangle ;_egef :=_geb .Legend ;if _egef !=nil {_bgd :=_egef .Overlay !=nil &&_egef .Overlay .ValAttr !=nil &&*_egef .Overlay .ValAttr ;if _agd :=_egef .LegendPos ;_agd !=nil {switch _agd .ValAttr {case _db .ST_LegendPosTr :if !_bgd {_dbf =&Rectangle {Top :_fgag (25),Bottom :_abd .Bottom -_fgag (10),Left :_fgag (10),Right :_abd .Right -_fgag (25)};};_cba =&Rectangle {Top :_fgag (2.5),Bottom :_fgag (22.5),Left :_abd .Right -_fgag (22.5),Right :_abd .Right -_fgag (2.5)};case _db .ST_LegendPosT :_cba =&Rectangle {Top :_fgag (2.5),Bottom :_fgag (7.5),Left :(_abd .Right -_abd .Left )*0.25,Right :(_abd .Right -_abd .Left )*0.75};if !_bgd {_dbf =&Rectangle {Top :_fgag (12.5),Bottom :_abd .Bottom -_fgag (15),Left :_fgag (10),Right :_abd .Right -_fgag (5)};};_fef =true ;case _db .ST_LegendPosB :_cba =&Rectangle {Top :_abd .Bottom -_fgag (7.5),Bottom :_abd .Bottom -_fgag (2.5),Left :(_abd .Right -_abd .Left )*0.25,Right :(_abd .Right -_abd .Left )*0.75};if !_bgd {_dbf =&Rectangle {Top :_fgag (5),Bottom :_abd .Bottom -_fgag (15),Left :_fgag (10),Right :_abd .Right -_fgag (5)};};_fef =true ;case _db .ST_LegendPosR :_cba =&Rectangle {Top :(_abd .Bottom -_abd .Top )/2-_fgag (10),Bottom :(_abd .Bottom -_abd .Top )/2+_fgag (10),Left :_abd .Right -_fgag (22.5),Right :_abd .Right -_fgag (2.5)};if !_bgd {_dbf =&Rectangle {Top :_fgag (5),Bottom :_abd .Bottom -_fgag (12.5),Left :_fgag (10),Right :_abd .Right -_fgag (25)};};case _db .ST_LegendPosL :_cba =&Rectangle {Top :(_abd .Bottom -_abd .Top )/2-_fgag (10),Bottom :(_abd .Bottom -_abd .Top )/2+_fgag (10),Left :_fgag (2.5),Right :_fgag (22.5)};if !_bgd {_dbf =&Rectangle {Top :_fgag (5),Bottom :_abd .Bottom -_fgag (12.5),Left :_fgag (30),Right :_abd .Right -_fgag (5)};};default:_cba =&Rectangle {Top :(_abd .Bottom -_abd .Top )/2-_fgag (10),Bottom :(_abd .Bottom -_abd .Top )/2+_fgag (10),Left :_abd .Right -_fgag (25),Right :_abd .Right -_fgag (5)};if !_bgd {_dbf =&Rectangle {Top :_fgag (5),Bottom :_abd .Bottom -_fgag (12.5),Left :_fgag (100),Right :_abd .Right -_fgag (25)};};};};};_dbf .scale (_eaf );_ada .drawBorderWithProps (_dbb .SpPr ,_dbf ,_gfbd );_fge :=[]*legendItem {};var _fgg error ;_cbed :=_dbb .CChoice ;for _ ,_ceg :=range _dbb .Choice {if _agec :=_ceg .BarChart ;_agec !=nil {_fge ,_fgg =_ada .drawBarChart (_agec ,_dbf ,_cbed );if _fgg !=nil {return nil ,_fgg ;};};};if _egef !=nil {_cba .scale (_eaf );_ada .drawBorderWithProps (_egef .SpPr ,_cba ,_gfbd );if len (_fge )!=0{_ada .drawLegend (_cba ,_fge ,_fef );};};};_abd .scale (_eaf );_ada .drawBorderWithProps (_eege .SpPr ,_abd ,_gfbd );return _bdc ,nil ;};func _cgec (_gebc uint8 ,_fgb float64 )string {_daf :=float64 (_gebc );return _b .Sprintf ("\u0025\u0030\u0032\u0078",int (_daf *_fgb ));};func Lighten (clr float64 )float64 {return 0.6+0.4*clr };func FromSTCoordinate32 (st _ga .ST_Coordinate32 )int64 {if _aebf :=st .ST_Coordinate32Unqualified ;_aebf !=nil {return int64 (*_aebf );};return 0;};var _cbbc =_fgag (0.5);func _geeb (_bede uint8 ,_cfce float64 )string {_agde :=float64 (_bede );var _aebc float64 ;if _cfce < 0{_aebc =_agde *(1+_cfce );}else {_aebc =_agde +(255-_agde )*_cfce ;};return _b .Sprintf ("\u0025\u0030\u0032\u0078",int (_aebc ));};func DrawRectangle (c *_fcg .Creator ,r *Rectangle ,w float64 ,color _fcg .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 RegisterFontsFromDirectory (dirName string )error {_bbfc ,_agg :=_fc .Open (dirName );if _agg !=nil {return _agg ;};defer _bbfc .Close ();_ebcg ,_agg :=_bbfc .Readdirnames (0);if _agg !=nil {return _agg ;};for _ ,_fdab :=range _ebcg {if _fdb .HasSuffix (_fdab ,"\u002e\u0074\u0074\u0066"){_ccg :=dirName +"\u002f"+_fdab ;_gaeg :=_ggca (_ccg );if _gaeg !=nil {_cg .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",_gaeg );continue ;};};};return nil ;};func FromSTPercentage (st *_ga .ST_Percentage )float64 {if _eagcg :=st .ST_PercentageDecimal ;_eagcg !=nil {return float64 (*_eagcg )/100000;};return 0;};func (_aec *creatorContext )getPdfColorFromSolidFill (_cecd *_ga .CT_SolidColorFillProperties )_fcg .Color {if _cecd ==nil {return nil ;};_egce :="";if _cded :=_cecd .SrgbClr ;_cded !=nil {_egce =_cded .ValAttr ;}else if _adac :=_cecd .SchemeClr ;_adac !=nil {_egce =_fcgf (_adac .ValAttr ,_aec ._cacg );};if _egce ==""{return nil ;};return _fcg .ColorRGBFromHex ("\u0023"+_egce );};func GetDataFromXfrm (xfrm *_ga .CT_Transform2D )(float64 ,float64 ,float64 ,float64 ){var _afbg ,_bdba ,_gdf ,_gfcg float64 ;if _feeb :=xfrm .Off ;_feeb !=nil {_afbg =_g .FromEMU (FromSTCoordinate (_feeb .XAttr ));_bdba =_g .FromEMU (FromSTCoordinate (_feeb .YAttr ));};if _dbef :=xfrm .Ext ;_dbef !=nil {_gdf =_g .FromEMU (_dbef .CxAttr );_gfcg =_g .FromEMU (_dbef .CyAttr );};return _afbg ,_bdba ,_gdf ,_gfcg ;};func _cab (_ccee float64 )float64 {if _ccee < 0{_ccee +=float64 (-int (_ccee )+1);}else if _ccee > 1{_ccee -=float64 (int (_ccee ));};return _ccee ;};func (_aagc *Rectangle )Translate (x ,y float64 ){_aagc .Left +=x ;_aagc .Right +=x ;_aagc .Top +=y ;_aagc .Bottom +=y ;};var _bdee =_fgag (1.5);func PointsFromTwips (twips int64 )float64 {return float64 (int64 (float64 (twips )*_g .Twips *10+0.5))/10};const (BorderPositionTop BorderPosition =0;BorderPositionLeft BorderPosition =1;BorderPositionBottom BorderPosition =2;BorderPositionRight BorderPosition =3;);var _gcef =fontsMap {_ccb :&_d .Mutex {},_cca :map[string ]map[FontStyle ]*_gf .PdfFont {}};type serValue struct{_cgg string ;_dged float64 ;_faa *_ga .CT_ShapeProperties ;};const _gga =6.0;func GetPageFromCreator (c *_fcg .Creator )(*_gf .PdfPage ,error ){_fdeb :=_a .NewBuffer ([]byte {});_gag :=c .Write (_fdeb );if _gag !=nil {return nil ,_gag ;};_dacc :=_a .NewReader (_fdeb .Bytes ());_faf ,_gag :=_gf .NewPdfReader (_dacc );if _gag !=nil {return nil ,_gag ;};return _faf .GetPage (1);};func _agcb (_dcfd *_db .CT_CatAx )(uint32 ,_db .ST_AxPos ,_db .ST_TickMark ,_db .ST_TickLblPos ,*_db .CT_ChartLines ,uint32 ,*_ga .CT_ShapeProperties ,error ){var _beaa ,_gbfb uint32 ;var _de _db .ST_AxPos ;var _fae _db .ST_TickMark ;var _fccd *_db .CT_ChartLines ;var _fgge _db .ST_TickLblPos ;if _dcfd .AxId ==nil {return _beaa ,_de ,_fae ,_fgge ,_fccd ,_gbfb ,_dcfd .SpPr ,_c .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_beaa =_dcfd .AxId .ValAttr ;};if _dcfd .AxPos ==nil {return _beaa ,_de ,_fae ,_fgge ,_fccd ,_gbfb ,_dcfd .SpPr ,_c .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_de =_dcfd .AxPos .ValAttr ;};if _dcfd .MajorTickMark !=nil {_fae =_dcfd .MajorTickMark .ValAttr ;};if _dcfd .TickLblPos !=nil {_fgge =_dcfd .TickLblPos .ValAttr ;};if _dcfd .CrossAx ==nil {return _beaa ,_de ,_fae ,_fgge ,_fccd ,_gbfb ,_dcfd .SpPr ,_c .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_gbfb =_dcfd .CrossAx .ValAttr ;};_fccd =_dcfd .MajorGridlines ;return _beaa ,_de ,_fae ,_fgge ,_fccd ,_gbfb ,_dcfd .SpPr ,nil ;};func RegisterFontsFromFiles (files []string )error {for _ ,_bgcg :=range files {if _fdb .HasSuffix (_bgcg ,"\u002e\u0074\u0074\u0066"){_feef :=_ggca (_bgcg );if _feef !=nil {_cg .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",_feef );continue ;};};};return nil ;};type creatorContext struct{_edf *_fcg .Creator ;_cacg *_ga .Theme ;_dca float64 ;};type Rectangle struct{Top float64 ;Bottom float64 ;Left float64 ;Right float64 ;};func AdjustColorByTint (colorStr string ,tint float64 )string {var _dbe ,_eca ,_egb uint8 ;_fee ,_ :=_b .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_dbe ,&_eca ,&_egb );if _fee !=3{return "";};return _geeb (_dbe ,tint )+_geeb (_eca ,tint )+_geeb (_egb ,tint );};func GetColorStringFromDmlColor (dmlColor *_ga .CT_Color )string {var _gebd string ;if _ceb :=dmlColor .SrgbClr ;_ceb !=nil {_gebd =_ceb .ValAttr ;}else if _fede :=dmlColor .SysClr ;_fede !=nil {return "\u0030\u0030\u0030\u0030\u0030\u0030";};return _gebd ;};var _cec =_fgag (2);var _fcc =_fgag (1.5);