unioffice/internal/convertutils/convertutils.go
2022-04-09 14:27:46 +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 (_ga "bytes";_gab "errors";_de "fmt";_c "github.com/unidoc/unioffice/common/logger";_b "github.com/unidoc/unioffice/measurement";_gac "github.com/unidoc/unioffice/schema/soo/dml";_db "github.com/unidoc/unioffice/schema/soo/dml/chart";_ad "github.com/unidoc/unioffice/spreadsheet/format";_bg "github.com/unidoc/unipdf/v3/creator";_ea "github.com/unidoc/unipdf/v3/model";_df "github.com/unidoc/unipdf/v3/render";_fe "github.com/unidoc/unitype";_ge "image";_f "math";_dce "os";_af "sort";_e "strconv";_dc "strings";_a "sync";_d "unicode";);func GetPageFromCreator (c *_bg .Creator )(*_ea .PdfPage ,error ){_cabf :=_ga .NewBuffer ([]byte {});_cbea :=c .Write (_cabf );if _cbea !=nil {return nil ,_cbea ;};_eaeb :=_ga .NewReader (_cabf .Bytes ());_dagb ,_cbea :=_ea .NewPdfReader (_eaeb );if _cbea !=nil {return nil ,_cbea ;};return _dagb .GetPage (1);};func _egg (_defa ,_befc ,_agae uint8 )(float64 ,float64 ,float64 ){_dega ,_ddg ,_aec :=float64 (_defa )/255,float64 (_befc )/255,float64 (_agae )/255;_gdbb :=_dega ;if _ddg < _gdbb {_gdbb =_ddg ;};if _aec < _gdbb {_gdbb =_aec ;};var _ffa ,_fed bool ;_fggbb :=_dega ;if _ddg > _fggbb {_fggbb =_ddg ;_ffa =true ;};if _aec > _fggbb {_fggbb =_aec ;_ffa =false ;_fed =true ;};_efe :=(_gdbb +_fggbb )/2;var _dbd float64 ;if _gdbb !=_fggbb {if _efe <=0.5{_dbd =(_fggbb -_gdbb )/(_fggbb +_gdbb );}else {_dbd =(_fggbb -_gdbb )/(2.0-_fggbb -_gdbb );};};var _ddd float64 ;if _gdbb !=_fggbb {if _ffa {_ddd =2.0+(_aec -_dega )/(_fggbb -_gdbb );}else if _fed {_ddd =4.0+(_dega -_ddg )/(_fggbb -_gdbb );}else {_ddd =(_ddg -_aec )/(_fggbb -_gdbb );};_ddd *=60;if _ddd < 0{_ddd +=360;};};return _ddd ,_dbd ,_efe ;};type Rectangle struct{Top float64 ;Bottom float64 ;Left float64 ;Right float64 ;};func (_cecd 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 (_cecd )];};const _gdc =6.0;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 FromSTPercentage (st *_gac .ST_Percentage )float64 {if _fad :=st .ST_PercentageDecimal ;_fad !=nil {return float64 (*_fad )/100000;};return 0;};func AdjustColor (colorStr string ,EG_ColorTransform []*_gac .EG_ColorTransform )string {for _ ,_eagf :=range EG_ColorTransform {if _fbc :=_eagf .Tint ;_fbc !=nil {if _dgdc :=_fbc .ValAttr .ST_PositiveFixedPercentageDecimal ;_dgdc !=nil {colorStr =AdjustColorByTint (colorStr ,float64 (*_dgdc )/100000);};};if _fba :=_eagf .Shade ;_fba !=nil {if _aceg :=_fba .ValAttr .ST_PositiveFixedPercentageDecimal ;_aceg !=nil {colorStr =AdjustColorByShade (colorStr ,float64 (*_aceg )/100000);};};if _fgac :=_eagf .LumMod ;_fgac !=nil {if _bag :=_fgac .ValAttr .ST_PercentageDecimal ;_bag !=nil {colorStr =AdjustColorByLumMod (colorStr ,float64 (*_bag )/100000);};};};return colorStr ;};type serCategory struct{_adc string ;_aea []serValue ;};func _caab (_cce *_db .CT_SerAx )(uint32 ,_db .ST_AxPos ,_db .ST_TickMark ,_db .ST_TickLblPos ,*_db .CT_ChartLines ,uint32 ,*_gac .CT_ShapeProperties ,error ){var _gcb ,_defd uint32 ;var _cdg _db .ST_AxPos ;var _geg _db .ST_TickMark ;var _edc *_db .CT_ChartLines ;var _deea _db .ST_TickLblPos ;if _cce .AxId ==nil {return _gcb ,_cdg ,_geg ,_deea ,_edc ,_defd ,_cce .SpPr ,_gab .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_gcb =_cce .AxId .ValAttr ;};if _cce .AxPos ==nil {return _gcb ,_cdg ,_geg ,_deea ,_edc ,_defd ,_cce .SpPr ,_gab .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_cdg =_cce .AxPos .ValAttr ;};if _cce .MajorTickMark !=nil {_geg =_cce .MajorTickMark .ValAttr ;};if _cce .TickLblPos !=nil {_deea =_cce .TickLblPos .ValAttr ;};if _cce .CrossAx ==nil {return _gcb ,_cdg ,_geg ,_deea ,_edc ,_defd ,_cce .SpPr ,_gab .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_defd =_cce .CrossAx .ValAttr ;};_edc =_cce .MajorGridlines ;return _gcb ,_cdg ,_geg ,_deea ,_edc ,_defd ,_cce .SpPr ,nil ;};var _dga =_fefe (1.5);var _ead =_fefe (1);func (_fggd *creatorContext )getPdfColorFromSolidFill (_dadea *_gac .CT_SolidColorFillProperties )_bg .Color {if _dadea ==nil {return nil ;};_efgg :="";if _daee :=_dadea .SrgbClr ;_daee !=nil {_efgg =_daee .ValAttr ;}else if _bfba :=_dadea .SchemeClr ;_bfba !=nil {_efgg =_fea (_bfba .ValAttr ,_fggd ._baef );};if _efgg ==""{return nil ;};return _bg .ColorRGBFromHex ("\u0023"+_efgg );};func RegisterFontsFromDirectory (dirName string )error {_bega ,_ccef :=_dce .Open (dirName );if _ccef !=nil {return _ccef ;};defer _bega .Close ();_gfee ,_ccef :=_bega .Readdirnames (0);if _ccef !=nil {return _ccef ;};for _ ,_ggb :=range _gfee {if _dc .HasSuffix (_ggb ,"\u002e\u0074\u0074\u0066"){_bbbd :=dirName +"\u002f"+_ggb ;_ccbb ,_gfg :=_egge (_bbbd );if _ccbb ==""||_gfg ==""{continue ;};_faed ,_gefg :=_ea .NewCompositePdfFontFromTTFFile (_bbbd );if _gefg !=nil {_c .Log .Debug ("C\u0061\u006e\u006e\u006f\u0074\u0020m\u0061\u006b\u0065\u0020\u0061\u0020f\u006f\u006e\u0074\u0020\u0066\u0072\u006fm\u0020\u0054\u0054\u0046\u0020\u0066\u0069\u006c\u0065\u0020%\u0073",_gefg );continue ;};RegisterFont (_ccbb ,_fdcg [_gfg ],_faed );};};return nil ;};var _aead =_fefe (0.5);func MakeTempCreator (width ,height float64 )*_bg .Creator {_acegg :=_bg .New ();_acegg .SetPageSize (_bg .PageSize {width ,height });_acegg .SetPageMargins (0,0,0,0);return _acegg ;};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"}};const (BorderPositionTop BorderPosition =0;BorderPositionLeft BorderPosition =1;BorderPositionBottom BorderPosition =2;BorderPositionRight BorderPosition =3;);func (_fgb barSerByOrder )Swap (i ,j int ){_fgb [i ],_fgb [j ]=_fgb [j ],_fgb [i ]};func Lighten (clr float64 )float64 {return 0.6+0.4*clr };const (FontStyle_Regular FontStyle =0;FontStyle_Bold FontStyle =1;FontStyle_Italic FontStyle =2;FontStyle_BoldItalic FontStyle =3;);func MakeBlockFromChartSpace (cs *_db .ChartSpace ,width ,height float64 ,theme *_gac .Theme )(*_bg .Block ,error ){_gea ,_dea :=_bgac (cs ,width ,height ,theme ,false );if _dea !=nil {return nil ,_dea ;};_ggd ,_dea :=GetPageFromCreator (_gea );if _dea !=nil {return nil ,_dea ;};_eeg ,_dea :=_bg .NewBlockFromPage (_ggd );if _dea !=nil {return nil ,_dea ;};return _eeg ,nil ;};func DrawLine (c *_bg .Creator ,x0 ,y0 ,x1 ,y1 ,width float64 ,color _bg .Color ){if color ==nil {return ;};_gafe :=c .NewLine (x0 ,y0 ,x1 ,y1 );_gafe .SetLineWidth (width );_gafe .SetColor (color );c .Draw (_gafe );};func TwipsFromPoints (points float64 )float64 {return points /_b .Twips };func _fefe (_fedc float64 )float64 {return _fedc *_b .Millimeter };func AdjustColorByShade (colorStr string ,shade float64 )string {var _aeda ,_edcf ,_gbba uint8 ;_bgg ,_ :=_de .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_aeda ,&_edcf ,&_gbba );if _bgg !=3{return "";};return _dgg (_aeda ,shade )+_dgg (_edcf ,shade )+_dgg (_gbba ,shade );};func _cge (_bcc _gac .ST_SchemeColorVal ,_acb *_gac .Theme )string {if _efc :=_acb .ThemeElements ;_efc !=nil {if _ega :=_efc .ClrScheme ;_ega !=nil {switch _bcc {case _gac .ST_SchemeColorValLt1 :return GetColorStringFromDmlColor (_ega .Lt1 );case _gac .ST_SchemeColorValDk1 ,_gac .ST_SchemeColorValTx1 :return GetColorStringFromDmlColor (_ega .Dk1 );case _gac .ST_SchemeColorValLt2 :return GetColorStringFromDmlColor (_ega .Lt2 );case _gac .ST_SchemeColorValDk2 :return GetColorStringFromDmlColor (_ega .Dk2 );case _gac .ST_SchemeColorValAccent1 :return GetColorStringFromDmlColor (_ega .Accent1 );case _gac .ST_SchemeColorValAccent2 :return GetColorStringFromDmlColor (_ega .Accent2 );case _gac .ST_SchemeColorValAccent3 :return GetColorStringFromDmlColor (_ega .Accent3 );case _gac .ST_SchemeColorValAccent4 :return GetColorStringFromDmlColor (_ega .Accent4 );case _gac .ST_SchemeColorValAccent5 :return GetColorStringFromDmlColor (_ega .Accent5 );case _gac .ST_SchemeColorValAccent6 :return GetColorStringFromDmlColor (_ega .Accent6 );};};};return "";};func AdjustColorByTint (colorStr string ,tint float64 )string {var _gbd ,_fbce ,_adfg uint8 ;_bdad ,_ :=_de .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_gbd ,&_fbce ,&_adfg );if _bdad !=3{return "";};return _dab (_gbd ,tint )+_dab (_fbce ,tint )+_dab (_adfg ,tint );};type barSerByOrder []*_db .CT_BarSer ;type ImgPart byte ;func RegisterFont (name string ,style FontStyle ,font *_ea .PdfFont ){_beg ._bdd .Lock ();if _beg ._cgfe [name ]==nil {_beg ._cgfe [name ]=map[FontStyle ]*_ea .PdfFont {};};_beg ._cgfe [name ][style ]=font ;_beg ._bdd .Unlock ();};func _addc (_afb *_db .CT_CatAx )(uint32 ,_db .ST_AxPos ,_db .ST_TickMark ,_db .ST_TickLblPos ,*_db .CT_ChartLines ,uint32 ,*_gac .CT_ShapeProperties ,error ){var _gfad ,_bda uint32 ;var _dffgf _db .ST_AxPos ;var _dba _db .ST_TickMark ;var _cbf *_db .CT_ChartLines ;var _ffda _db .ST_TickLblPos ;if _afb .AxId ==nil {return _gfad ,_dffgf ,_dba ,_ffda ,_cbf ,_bda ,_afb .SpPr ,_gab .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_gfad =_afb .AxId .ValAttr ;};if _afb .AxPos ==nil {return _gfad ,_dffgf ,_dba ,_ffda ,_cbf ,_bda ,_afb .SpPr ,_gab .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_dffgf =_afb .AxPos .ValAttr ;};if _afb .MajorTickMark !=nil {_dba =_afb .MajorTickMark .ValAttr ;};if _afb .TickLblPos !=nil {_ffda =_afb .TickLblPos .ValAttr ;};if _afb .CrossAx ==nil {return _gfad ,_dffgf ,_dba ,_ffda ,_cbf ,_bda ,_afb .SpPr ,_gab .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_bda =_afb .CrossAx .ValAttr ;};_cbf =_afb .MajorGridlines ;return _gfad ,_dffgf ,_dba ,_ffda ,_cbf ,_bda ,_afb .SpPr ,nil ;};type fontsMap struct{_bdd *_a .Mutex ;_cgfe map[string ]map[FontStyle ]*_ea .PdfFont ;};func (_dae *Rectangle )Translate (x ,y float64 ){_dae .Left +=x ;_dae .Right +=x ;_dae .Top +=y ;_dae .Bottom +=y ;};func (_eada *creatorContext )drawLineWithProps (_abcb *_gac .CT_ShapeProperties ,_bbg ,_gccd ,_abbb ,_befa float64 ,_edf bool ){if _abcb !=nil {if _ccgc :=_abcb .Ln ;_ccgc !=nil {_fbdf :=_eada .getPdfColorFromSolidFill (_ccgc .SolidFill );if _fbdf ==nil &&_edf {_fbdf =_bg .ColorBlack ;};if _fbdf !=nil {var _gbbg float64 ;if _cee :=_ccgc .WAttr ;_cee !=nil {_gbbg =_b .FromEMU (int64 (*_cee ));}else {_gbbg =_fef ;};DrawLine (_eada ._gdg ,_bbg ,_gccd ,_abbb ,_befa ,_gbbg ,_fbdf );};};};};var _fef =_fefe (0.125);func (_cb *creatorContext )drawBarChart (_bf *_db .CT_BarChart ,_ag *Rectangle ,_bd *_db .CT_PlotAreaChoice1 )([]*legendItem ,error ){var _gg bool ;if _bb :=_bf .BarDir ;_bb !=nil {_gg =_bb .ValAttr ==_db .ST_BarDirBar ;};_bc :=_bf .Ser ;_af .Sort (barSerByOrder (_bc ));_fb :=map[string ]serCategory {};_dcc :=[]string {};_gc :=[]*legendItem {};_ab :=_f .Inf (1);_ca :=_f .Inf (-1);for _ ,_adb :=range _bc {var _ec string ;if _cc :=_adb .Tx ;_cc !=nil {if _ccf :=_cc .Choice ;_ccf !=nil {if _ccf .V !=nil {_ec =*_ccf .V ;}else if _cg :=_ccf .StrRef ;_cg !=nil {if _caa :=_cg .StrCache ;_caa !=nil {for _ ,_dfb :=range _caa .Pt {_ec =_dfb .V ;};};};};};if _aga :=_adb .Cat ;_aga !=nil {if _ecc :=_aga .Choice ;_ecc !=nil {if _ef :=_ecc .StrRef ;_ef !=nil {if _ggf :=_ef .StrCache ;_ggf !=nil {for _ ,_def :=range _ggf .Pt {_gd :=_def .V ;if _ ,_dd :=_fb [_gd ];!_dd {_fb [_gd ]=serCategory {_adc :_gd ,_aea :[]serValue {}};_dcc =append (_dcc ,_gd );};};};}else if _cca :=_ecc .NumRef ;_cca !=nil {if _bge :=_cca .NumCache ;_bge !=nil {var _fg string ;if _bge .FormatCode !=nil {_fg =*_bge .FormatCode ;};for _ ,_gcc :=range _bge .Pt {var _fgf string ;if _gcc .FormatCodeAttr ==nil {_fgf =_fg ;}else {_fgf =*_gcc .FormatCodeAttr ;};var _afc string ;_ba ,_dg :=_e .ParseFloat (_gcc .V ,64);if _dg !=nil {_afc =_gcc .V ;}else {_afc =_ad .Number (_ba ,_fgf );};if _ ,_gec :=_fb [_afc ];!_gec {_fb [_afc ]=serCategory {_adc :_afc ,_aea :[]serValue {}};_dcc =append (_dcc ,_afc );};};};};};};if _dee :=_adb .Val ;_dee !=nil {if _gda :=_dee .Choice ;_gda !=nil {if _cbe :=_gda .NumRef ;_cbe !=nil {if _ggg :=_cbe .NumCache ;_ggg !=nil {for _deg ,_afcc :=range _ggg .Pt {_dgc ,_ee :=_e .ParseFloat (_afcc .V ,64);if _ee !=nil {_dgc =0;_c .Log .Debug ("\u0070a\u0072s\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0073",_ee );};if _dgc > _ca {_ca =_dgc ;};if _dgc < _ab {_ab =_dgc ;};_fc :=_fb [_dcc [_deg ]];_fc ._aea =append (_fc ._aea ,serValue {_efge :_ec ,_gabc :_dgc ,_ccc :_adb .SpPr });_fb [_dcc [_deg ]]=_fc ;};};};};};_gc =append (_gc ,&legendItem {_ceg :_ec ,_add :_adb .SpPr });};var _eg float64 ;var _gcg ,_gb float64 ;if _ca ==0&&_ab ==0{_eg =0.2;_gb =0;_gcg =1;}else {var _dff float64 ;if _cfe :=_f .Abs (_ab );_ca < _cfe {_dff =_cfe ;}else {_dff =_ca ;};_baf :=_f .Pow (10,_f .Floor (_f .Log10 (_dff )));_ccae :=_dff /_baf ;if _ccae >=1.715&&_ccae < 4.29{_eg =0.5;}else if _ccae >=4.29&&_ccae < 8.58{_eg =1;}else {_eg =2;};_eg *=_baf ;if _ca <=0{_gcg =0;}else {_gcg =(_f .Ceil (_ca /_eg )+1)*_eg ;};if _ab >=0{_gb =0;}else {_gb =(_f .Floor (_ab /_eg )-1)*_eg ;};};_gde :=_cb .drawAxes (_bd ,_gb ,_gcg ,_eg ,_dcc ,_ag ,_gg );if _gde !=nil {return nil ,_gde ;};_abf :=0.0;if _bf .GapWidth !=nil {if _bbb :=_bf .GapWidth .ValAttr ;_bbb !=nil {if _gbb :=_bbb .ST_GapAmountUShort ;_gbb !=nil {_abf =float64 (*_gbb )/100.0;};};};_cab :=_ag .Right -_ag .Left ;_dca :=_ag .Bottom -_ag .Top ;_ed :=float64 (len (_dcc ));if _gg {_gba :=_gcg /(_gcg -_gb )*_cab ;_deed :=-_gb /(_gcg -_gb )*_cab ;_eab :=_ag .Left +_deed ;_agaf :=_dca /_ed ;for _cbg ,_ac :=range _dcc {_bba :=_fb [_ac ];_ecf :=float64 (len (_bba ._aea ))+_abf ;_dfbd :=_agaf /_ecf ;_faf :=_dfbd *_abf ;_ffd :=_ag .Bottom -float64 (_cbg )*_agaf -_faf /2-_dfbd ;for _ ,_afcd :=range _bba ._aea {if _afcd ._gabc ==0{continue ;};var _abfe ,_gabd float64 ;if _afcd ._gabc > 0{_gabd =_afcd ._gabc /_gcg *_gba ;_cb .drawRectangleWithProps (_afcd ._ccc ,_eab ,_ffd ,_gabd ,_dfbd ,false );}else {_gabd =_afcd ._gabc /_gb *_deed ;_abfe =_eab -_gabd ;_cb .drawRectangleWithProps (_afcd ._ccc ,_abfe ,_ffd ,_gabd ,_dfbd ,false );};_ffd -=_dfbd ;};};}else {_fbd :=_gcg /(_gcg -_gb )*_dca ;_cad :=-_gb /(_gcg -_gb )*_dca ;_fec :=_ag .Top +_fbd ;_fbb :=_cab /_ed ;for _ae ,_bae :=range _dcc {_adbf :=_fb [_bae ];_efg :=float64 (len (_adbf ._aea ))+_abf ;_cag :=_fbb /_efg ;_bbf :=_cag *_abf ;_ce :=_ag .Left +float64 (_ae )*_fbb +_bbf /2;for _ ,_cd :=range _adbf ._aea {var _eb ,_bdf float64 ;if _cd ._gabc > 0{_bdf =_cd ._gabc /_gcg *_fbd ;_eb =_fec -_bdf ;_cb .drawRectangleWithProps (_cd ._ccc ,_ce ,_eb ,_cag ,_bdf ,false );}else {_bdf =_cd ._gabc /_gb *_cad ;_cb .drawRectangleWithProps (_cd ._ccc ,_ce ,_fec ,_cag ,_bdf ,false );};_ce +=_cag ;};};};return _gc ,nil ;};func _dab (_bgab uint8 ,_ddc float64 )string {_bca :=float64 (_bgab );var _eae float64 ;if _ddc < 0{_eae =_bca *(1+_ddc );}else {_eae =_bca +(255-_bca )*_ddc ;};return _de .Sprintf ("\u0025\u0030\u0032\u0078",int (_eae ));};type legendItem struct{_ceg string ;_add *_gac .CT_ShapeProperties ;};func DrawRectangle (c *_bg .Creator ,r *Rectangle ,w float64 ,color _bg .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 RegisterFontsFromFiles (files []string )error {for _ ,_eec :=range files {if _dc .HasSuffix (_eec ,"\u002e\u0074\u0074\u0066"){_aee ,_bfab :=_egge (_eec );if _aee ==""||_bfab ==""{continue ;};_cfa ,_fda :=_ea .NewCompositePdfFontFromTTFFile (_eec );if _fda !=nil {_c .Log .Debug ("C\u0061\u006e\u006e\u006f\u0074\u0020m\u0061\u006b\u0065\u0020\u0061\u0020f\u006f\u006e\u0074\u0020\u0066\u0072\u006fm\u0020\u0054\u0054\u0046\u0020\u0066\u0069\u006c\u0065\u0020%\u0073",_fda );continue ;};RegisterFont (_aee ,_fdcg [_bfab ],_cfa );};};return nil ;};func MakeBlockFromCreator (c *_bg .Creator )(*_bg .Block ,error ){_acba ,_cdae :=GetPageFromCreator (c );if _cdae !=nil {return nil ,_cdae ;};_eeaa ,_cdae :=_bg .NewBlockFromPage (_acba );if _cdae !=nil {return nil ,_cdae ;};return _eeaa ,nil ;};func _gfc (_eagg *_db .CT_DateAx )(uint32 ,_db .ST_AxPos ,_db .ST_TickMark ,_db .ST_TickLblPos ,*_db .CT_ChartLines ,uint32 ,*_gac .CT_ShapeProperties ,error ){var _gfb ,_cdf uint32 ;var _fbfa _db .ST_AxPos ;var _dec _db .ST_TickMark ;var _beef *_db .CT_ChartLines ;var _gff _db .ST_TickLblPos ;if _eagg .AxId ==nil {return _gfb ,_fbfa ,_dec ,_gff ,_beef ,_cdf ,_eagg .SpPr ,_gab .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_gfb =_eagg .AxId .ValAttr ;};if _eagg .AxPos ==nil {return _gfb ,_fbfa ,_dec ,_gff ,_beef ,_cdf ,_eagg .SpPr ,_gab .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_fbfa =_eagg .AxPos .ValAttr ;};if _eagg .MajorTickMark !=nil {_dec =_eagg .MajorTickMark .ValAttr ;};if _eagg .TickLblPos !=nil {_gff =_eagg .TickLblPos .ValAttr ;};if _eagg .CrossAx ==nil {return _gfb ,_fbfa ,_dec ,_gff ,_beef ,_cdf ,_eagg .SpPr ,_gab .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_cdf =_eagg .CrossAx .ValAttr ;};_beef =_eagg .MajorGridlines ;return _gfb ,_fbfa ,_dec ,_gff ,_beef ,_cdf ,_eagg .SpPr ,nil ;};func _bfd (_aaf ,_aaga ,_deaf float64 )float64 {if _aaf *6< 1{return _deaf +(_aaga -_deaf )*6*_aaf ;}else if _aaf *2< 1{return _aaga ;}else if _aaf *3< 2{return _deaf +(_aaga -_deaf )*(2.0/3.0-_aaf )*6;}else {return _deaf ;};};func GetColorStringFromDmlColor (dmlColor *_gac .CT_Color )string {var _gage string ;if _dcb :=dmlColor .SrgbClr ;_dcb !=nil {_gage =_dcb .ValAttr ;}else if _adf :=dmlColor .SysClr ;_adf !=nil {return "\u0030\u0030\u0030\u0030\u0030\u0030";};return _gage ;};func (_cec *creatorContext )drawLegend (_fggb *Rectangle ,_fgeg []*legendItem ,_bee bool ){_ffb :=_cec ._bac ;_fafd :=_fefe (2.5)*_ffb ;_gdd :=_feff *_ffb ;_dge :=(_fafd -_gdd )/2;_egb :=float64 (len (_fgeg ));if _bee {_gaba :=&Rectangle {Top :_fggb .Top +_fefe (1)*_ffb ,Bottom :_fggb .Bottom -_fefe (1)*_ffb ,Left :_fggb .Left +_fefe (2.5)*_ffb ,Right :_fggb .Right -_fefe (2.5)*_ffb };var _ebg float64 ;if _egb > 1{_ebg =(_gaba .Right -_gaba .Left )/_egb ;};_feb :=_gaba .Left ;_dcf :=_gaba .Top ;for _ ,_fab :=range _fgeg {if _fggg :=_fab ._add ;_fggg !=nil {_cec .drawRectangleWithProps (_fggg ,_feb ,_dcf +_dge ,_gdd ,_gdd ,false );_ace :=_feb +_gdd *2;_gaca :=_cec ._gdg .NewStyledParagraph ();_gaca .SetPos (_ace ,_dcf );_cgg :=_gaca .Append (_fab ._ceg );_cbec ,_dfg :=_ea .NewStandard14Font (_ea .HelveticaName );if _dfg ==nil {_cgg .Style =_bg .TextStyle {FontSize :_fafd ,Font :_cbec ,TextRise :0.4};_cec ._gdg .Draw (_gaca );};};_feb +=_ebg ;};}else {_dffa :=&Rectangle {Top :_fggb .Top +_fefe (2.5)*_ffb ,Bottom :_fggb .Bottom -_fefe (2.5)*_ffb ,Left :_fggb .Left +_fefe (2.5)*_ffb ,Right :_fggb .Right -_fefe (2.5)*_ffb };var _cbd float64 ;if _egb > 1{_cbd =(_dffa .Bottom -_dffa .Top -_fafd )/(_egb -1);};_aca :=_dffa .Top ;_eag :=_dffa .Left ;_bdg :=_eag +_gdd *2;for _ ,_bfb :=range _fgeg {if _abd :=_bfb ._add ;_abd !=nil {_cec .drawRectangleWithProps (_abd ,_eag ,_aca +_dge ,_gdd ,_gdd ,false );_baee :=_cec ._gdg .NewStyledParagraph ();_baee .SetPos (_bdg ,_aca );_bef :=_baee .Append (_bfb ._ceg );_dag ,_gf :=_ea .NewStandard14Font (_ea .HelveticaName );if _gf ==nil {_bef .Style =_bg .TextStyle {FontSize :_fafd ,Font :_dag ,TextRise :0.4};_cec ._gdg .Draw (_baee );};};_aca +=_cbd ;};};};type serValue struct{_efge string ;_gabc float64 ;_ccc *_gac .CT_ShapeProperties ;};func (_agafc barSerByOrder )Len ()int {return len (_agafc )};func MakeImageFromChartSpace (cs *_db .ChartSpace ,width ,height float64 ,theme *_gac .Theme )(_ge .Image ,error ){_fcf ,_fge :=_bgac (cs ,width ,height ,theme ,true );if _fge !=nil {return nil ,_fge ;};_gabdc ,_fge :=GetPageFromCreator (_fcf );if _fge !=nil {return nil ,_fge ;};return _df .NewImageDevice ().Render (_gabdc );};func _efgb (_ecb *_db .CT_ValAx )(uint32 ,_db .ST_AxPos ,_db .ST_TickMark ,_db .ST_TickLblPos ,*_db .CT_ChartLines ,uint32 ,*_gac .CT_ShapeProperties ,error ){var _cda ,_aed uint32 ;var _bbe _db .ST_AxPos ;var _ddb _db .ST_TickMark ;var _eaa *_db .CT_ChartLines ;var _abdf _db .ST_TickLblPos ;if _ecb .AxId ==nil {return _cda ,_bbe ,_ddb ,_abdf ,_eaa ,_aed ,_ecb .SpPr ,_gab .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_cda =_ecb .AxId .ValAttr ;};if _ecb .AxPos ==nil {return _cda ,_bbe ,_ddb ,_abdf ,_eaa ,_aed ,_ecb .SpPr ,_gab .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_bbe =_ecb .AxPos .ValAttr ;};if _ecb .MajorTickMark !=nil {_ddb =_ecb .MajorTickMark .ValAttr ;};if _ecb .TickLblPos !=nil {_abdf =_ecb .TickLblPos .ValAttr ;};if _ecb .CrossAx ==nil {return _cda ,_bbe ,_ddb ,_abdf ,_eaa ,_aed ,_ecb .SpPr ,_gab .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_aed =_ecb .CrossAx .ValAttr ;};_eaa =_ecb .MajorGridlines ;return _cda ,_bbe ,_ddb ,_abdf ,_eaa ,_aed ,_ecb .SpPr ,nil ;};func CropImageByRect (sourceImg _ge .Image ,rect _ge .Rectangle )_ge .Image {_bagb ,_agab ,_ebea ,_feca :=rect .Min .X ,rect .Min .Y ,rect .Max .X ,rect .Max .Y ;_aced :=_ge .NewNRGBA (_ge .Rect (0,0,_ebea -_bagb ,_feca -_agab ));for _feg :=_bagb ;_feg < _ebea ;_feg ++{for _gdee :=_agab ;_gdee < _feca ;_gdee ++{_aced .Set (_feg -_bagb ,_gdee -_agab ,sourceImg .At (_feg ,_gdee ));};};return _aced ;};func _cadd (_bece float64 )float64 {if _bece < 0{_bece +=float64 (-int (_bece )+1);}else if _bece > 1{_bece -=float64 (int (_bece ));};return _bece ;};func (_gefa *Rectangle )scale (_cdfe float64 ){_gefa .Top *=_cdfe ;_gefa .Bottom *=_cdfe ;_gefa .Left *=_cdfe ;_gefa .Right *=_cdfe ;};func AdjustColorByLumMod (colorStr string ,lum float64 )string {var _ffdf ,_agac ,_bgdb uint8 ;_fde ,_ :=_de .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_ffdf ,&_agac ,&_bgdb );if _fde !=3{return "";};_cgc ,_bff ,_gfe :=_egg (_ffdf ,_agac ,_bgdb );_gfe =lum *_gfe ;_ffdf ,_agac ,_bgdb =_gaf (_cgc ,_bff ,_gfe );return _de .Sprintf ("\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",_ffdf ,_agac ,_bgdb );};var _fdcg =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 FromSTCoordinate (st _gac .ST_Coordinate )int64 {if _fdfg :=st .ST_CoordinateUnqualified ;_fdfg !=nil {return *_fdfg ;};return 0;};type FontStyle byte ;var _beg =fontsMap {_bdd :&_a .Mutex {},_cgfe :map[string ]map[FontStyle ]*_ea .PdfFont {}};func (_cbgc *creatorContext )drawBorderWithProps (_edcc *_gac .CT_ShapeProperties ,_fcb *Rectangle ,_efd float64 ){if _fcb !=nil &&_edcc !=nil &&_edcc .Ln !=nil &&_edcc .Ln .SolidFill !=nil {_cga :=_cbgc .getPdfColorFromSolidFill (_edcc .Ln .SolidFill );DrawRectangle (_cbgc ._gdg ,_fcb ,_efd ,_cga );};};type creatorContext struct{_gdg *_bg .Creator ;_baef *_gac .Theme ;_bac float64 ;};func GetDataFromXfrm (xfrm *_gac .CT_Transform2D )(float64 ,float64 ,float64 ,float64 ){var _gfcd ,_daf ,_cae ,_ceed float64 ;if _abbcf :=xfrm .Off ;_abbcf !=nil {_gfcd =_b .FromEMU (FromSTCoordinate (_abbcf .XAttr ));_daf =_b .FromEMU (FromSTCoordinate (_abbcf .YAttr ));};if _bdc :=xfrm .Ext ;_bdc !=nil {_cae =_b .FromEMU (_bdc .CxAttr );_ceed =_b .FromEMU (_bdc .CyAttr );};return _gfcd ,_daf ,_cae ,_ceed ;};func _gaf (_ffbd ,_daga ,_fdee float64 )(uint8 ,uint8 ,uint8 ){var _ffbb float64 ;if _fdee < 0.5{_ffbb =_fdee *(1+_daga );}else {_ffbb =_fdee +_daga -_fdee *_daga ;};_bfae :=_fdee *2-_ffbb ;_ffbd /=360.0;_eabe :=_cadd (_ffbd +1.0/3.0);_ded :=_cadd (_ffbd );_ccg :=_cadd (_ffbd -1.0/3.0);_ade :=_bfd (_eabe ,_ffbb ,_bfae );_fbe :=_bfd (_ded ,_ffbb ,_bfae );_befg :=_bfd (_ccg ,_ffbb ,_bfae );return uint8 (255*_ade ),uint8 (255*_fbe ),uint8 (255*_befg );};func _bgac (_egf *_db .ChartSpace ,_cfd ,_da float64 ,_bdb *_gac .Theme ,_bfa bool )(*_bg .Creator ,error ){_gcd :=1.0;if _bfa {_gcd =8.0;};_fga :=&Rectangle {};_fefa :=&Rectangle {Top :_fga .Top ,Bottom :_da -_fga .Bottom ,Left :_fga .Left ,Right :_cfd -_fga .Right };_fcc :=MakeTempCreator (_cfd *_gcd +1,_da *_gcd +1);_be :=&creatorContext {_gdg :_fcc ,_baef :_bdb ,_bac :_gcd };var _fgg bool ;if _age :=_egf .Chart ;_age !=nil {_gcf :=_age .PlotArea ;if _gcf ==nil {return nil ,_gab .New ("\u004e\u006f\u0020p\u006c\u006f\u0074\u0020\u0061\u0072\u0065\u0061");};_cfdb :=&Rectangle {Top :_fefe (10),Bottom :_fefa .Bottom -_fefe (15),Left :_fefe (10),Right :_fefa .Right -_fefe (10)};var _gcca *Rectangle ;_ebc :=_age .Legend ;if _ebc !=nil {_adca :=_ebc .Overlay !=nil &&_ebc .Overlay .ValAttr !=nil &&*_ebc .Overlay .ValAttr ;if _dcg :=_ebc .LegendPos ;_dcg !=nil {switch _dcg .ValAttr {case _db .ST_LegendPosTr :if !_adca {_cfdb =&Rectangle {Top :_fefe (25),Bottom :_fefa .Bottom -_fefe (10),Left :_fefe (10),Right :_fefa .Right -_fefe (25)};};_gcca =&Rectangle {Top :_fefe (2.5),Bottom :_fefe (22.5),Left :_fefa .Right -_fefe (22.5),Right :_fefa .Right -_fefe (2.5)};case _db .ST_LegendPosT :_gcca =&Rectangle {Top :_fefe (2.5),Bottom :_fefe (7.5),Left :(_fefa .Right -_fefa .Left )*0.25,Right :(_fefa .Right -_fefa .Left )*0.75};if !_adca {_cfdb =&Rectangle {Top :_fefe (12.5),Bottom :_fefa .Bottom -_fefe (15),Left :_fefe (10),Right :_fefa .Right -_fefe (5)};};_fgg =true ;case _db .ST_LegendPosB :_gcca =&Rectangle {Top :_fefa .Bottom -_fefe (7.5),Bottom :_fefa .Bottom -_fefe (2.5),Left :(_fefa .Right -_fefa .Left )*0.25,Right :(_fefa .Right -_fefa .Left )*0.75};if !_adca {_cfdb =&Rectangle {Top :_fefe (5),Bottom :_fefa .Bottom -_fefe (15),Left :_fefe (10),Right :_fefa .Right -_fefe (5)};};_fgg =true ;case _db .ST_LegendPosR :_gcca =&Rectangle {Top :(_fefa .Bottom -_fefa .Top )/2-_fefe (10),Bottom :(_fefa .Bottom -_fefa .Top )/2+_fefe (10),Left :_fefa .Right -_fefe (22.5),Right :_fefa .Right -_fefe (2.5)};if !_adca {_cfdb =&Rectangle {Top :_fefe (5),Bottom :_fefa .Bottom -_fefe (12.5),Left :_fefe (10),Right :_fefa .Right -_fefe (25)};};case _db .ST_LegendPosL :_gcca =&Rectangle {Top :(_fefa .Bottom -_fefa .Top )/2-_fefe (10),Bottom :(_fefa .Bottom -_fefa .Top )/2+_fefe (10),Left :_fefe (2.5),Right :_fefe (22.5)};if !_adca {_cfdb =&Rectangle {Top :_fefe (5),Bottom :_fefa .Bottom -_fefe (12.5),Left :_fefe (30),Right :_fefa .Right -_fefe (5)};};default:_gcca =&Rectangle {Top :(_fefa .Bottom -_fefa .Top )/2-_fefe (10),Bottom :(_fefa .Bottom -_fefa .Top )/2+_fefe (10),Left :_fefa .Right -_fefe (25),Right :_fefa .Right -_fefe (5)};if !_adca {_cfdb =&Rectangle {Top :_fefe (5),Bottom :_fefa .Bottom -_fefe (12.5),Left :_fefe (100),Right :_fefa .Right -_fefe (25)};};};};};_cfdb .scale (_gcd );_be .drawBorderWithProps (_gcf .SpPr ,_cfdb ,_fef );_gce :=[]*legendItem {};var _cac error ;_dad :=_gcf .CChoice ;for _ ,_cgf :=range _gcf .Choice {if _dccc :=_cgf .BarChart ;_dccc !=nil {_gce ,_cac =_be .drawBarChart (_dccc ,_cfdb ,_dad );if _cac !=nil {return nil ,_cac ;};};};if _ebc !=nil {_gcca .scale (_gcd );_be .drawBorderWithProps (_ebc .SpPr ,_gcca ,_fef );if len (_gce )!=0{_be .drawLegend (_gcca ,_gce ,_fgg );};};};_fefa .scale (_gcd );_be .drawBorderWithProps (_egf .SpPr ,_fefa ,_fef );return _fcc ,nil ;};const DefaultFontSize =12.0;func (_fabe *creatorContext )drawRectangleWithProps (_aaccd *_gac .CT_ShapeProperties ,_fbff ,_fbg ,_fbec ,_agb float64 ,_ebgb bool ){_cfc :=_fabe ._gdg .NewRectangle (_fbff ,_fbg ,_fbec ,_agb );if _aaccd ==nil {if _ebgb {_cfc .SetBorderWidth (_fef );}else {return ;};}else {_degg :=_fabe .getPdfColorFromSolidFill (_aaccd .SolidFill );if _degg !=nil {_cfc .SetFillColor (_degg );};if _gffa :=_aaccd .Ln ;_gffa !=nil {if _gddd :=_gffa .WAttr ;_gddd !=nil {_gega :=_b .FromEMU (int64 (*_gddd ));_cfc .SetBorderWidth (_gega );if _bffc :=_gffa .SolidFill ;_bffc !=nil {_cbb :=_fabe .getPdfColorFromSolidFill (_bffc );if _cbb !=nil {_cfc .SetBorderColor (_cbb );};};}else {_cfc .SetBorderWidth (0);};};};_fabe ._gdg .Draw (_cfc );};type BorderPosition byte ;func AssignStdFontByName (style _bg .TextStyle ,fontName string )*_ea .PdfFont {_edb :=_ea .StdFontName (fontName );return _ea .NewStandard14FontMustCompile (_edb );};func (_efb *creatorContext )drawAxes (_efa *_db .CT_PlotAreaChoice1 ,_bad ,_bed ,_dac float64 ,_aceb []string ,_ggc *Rectangle ,_acd bool )error {_gbe :=_efb ._gdg ;_ced :=_efb ._bac ;if _efa ==nil {return _gab .New ("\u004e\u006f\u0020\u0061xi\u0073\u0020\u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e");};if len (_efa .ValAx )==0||(len (_efa .CatAx )==0&&len (_efa .DateAx )==0&&len (_efa .SerAx )==0){return _gab .New ("\u004e\u006f\u0020\u0078\u0020\u006f\u0072\u0020\u0079 \u0061\u0078\u0069\u0073");};var _eed ,_eef ,_fae ,_ccd uint32 ;var _abb ,_eedf _db .ST_AxPos ;var _bgd ,_gaa _db .ST_TickMark ;var _fcg ,_aeaf *_db .CT_ChartLines ;var _ecg ,_gef _db .ST_TickLblPos ;var _gefc ,_eefg *_gac .CT_ShapeProperties ;var _gdca error ;_cggb :=_ggc .Right -_ggc .Left ;_gad :=_ggc .Bottom -_ggc .Top ;if len (_efa .ValAx )> 0{_eef ,_eedf ,_gaa ,_gef ,_aeaf ,_ccd ,_eefg ,_gdca =_efgb (_efa .ValAx [0]);};if _eedf !=_db .ST_AxPosL &&_eedf !=_db .ST_AxPosB {return _gab .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");};_fgfd :=_bed -_bad ;_abbc :=int (_fgfd /_dac )+1;var _gdb ,_gcde float64 ;switch _gaa {case _db .ST_TickMarkIn :_gdb ,_gcde =_ead ,0;case _db .ST_TickMarkOut :_gdb ,_gcde =0,_ead ;case _db .ST_TickMarkCross :_gdb ,_gcde =_ead ,_ead ;};_gdb =_gdb *_ced ;_gcde =_gcde *_ced ;var _ccff *_gac .CT_ShapeProperties ;if _aeaf !=nil {_ccff =_aeaf .SpPr ;};_gfa ,_fgea :=_ecg !=_db .ST_TickLblPosNone ,_gef !=_db .ST_TickLblPosNone ;_dffg :=_bad ;if len (_efa .CatAx )> 0{_eed ,_abb ,_bgd ,_ecg ,_fcg ,_fae ,_gefc ,_gdca =_addc (_efa .CatAx [0]);}else if len (_efa .DateAx )> 0{_eed ,_abb ,_bgd ,_ecg ,_fcg ,_fae ,_gefc ,_gdca =_gfc (_efa .DateAx [0]);}else if len (_efa .SerAx )> 0{_eed ,_abb ,_bgd ,_ecg ,_fcg ,_fae ,_gefc ,_gdca =_caab (_efa .SerAx [0]);};if _gdca !=nil {return _gdca ;};if _abb !=_db .ST_AxPosL &&_abb !=_db .ST_AxPosB {return _gab .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 _eed !=_ccd ||_eef !=_fae {return _gab .New ("a\u0078i\u0073\u0020\u0069\u0064\u0073\u0020\u0064\u006fn\u0027\u0074\u0020\u006dat\u0063\u0068");};_gbf :=len (_aceb )+1;var _gae ,_fd float64 ;switch _bgd {case _db .ST_TickMarkIn :_gae ,_fd =_ead ,0;case _db .ST_TickMarkOut :_gae ,_fd =0,_ead ;case _db .ST_TickMarkCross :_gae ,_fd =_ead ,_ead ;};_gae =_gae *_ced ;_fd =_fd *_ced ;var _dcca *_gac .CT_ShapeProperties ;if _fcg !=nil {_dcca =_fcg .SpPr ;};if _acd {_ccb :=_gad /float64 (len (_aceb ));_ccad :=_ggc .Left -_bad *_cggb /_fgfd ;_ccfe :=_ccad -_dbb *_ced ;if _gfa {var _gced float64 ;for _fdc :=0;_fdc < _gbf ;_fdc ++{_eedb :=_ggc .Bottom -float64 (_fdc )*_ccb ;if _fdc < _gbf -1{_fafdd :=_gbe .NewParagraph (_aceb [_fdc ]);_fafdd .SetFontSize (_gdc *_ced );_fafdd .SetPos (_ccfe ,_eedb -_ccb /2-_cfdf *_ced );_gbe .Draw (_fafdd );_gag :=(_fafdd .Width ()/1000-_dbb )*_ced ;if _gag > 0&&_gag > _gced {_gced =_gag ;};};};if _gced > 0{_ggc .Left +=_gced +_ecfa ;_ccad =_ggc .Left -_bad *_cggb /_fgfd ;_cggb =_ggc .Right -_ggc .Left ;};};_fcgg :=_ccad -_fd ;_ebe :=_ccad +_gae ;_fged :=_ggc .Left ;_deff :=_ggc .Right ;for _fdd :=0;_fdd < _gbf ;_fdd ++{_cgd :=_ggc .Bottom -float64 (_fdd )*_ccb ;_efb .drawLineWithProps (_gefc ,_fcgg ,_cgd ,_ebe ,_cgd ,true );_efb .drawLineWithProps (_dcca ,_fged ,_cgd ,_deff ,_cgd ,true );};_eea :=_cggb /_fgfd ;_dgd :=_ggc .Bottom -_gdb ;_gdf :=_ggc .Bottom +_gcde ;_cef :=_ggc .Top ;_ccfb :=_ggc .Bottom ;for _gefd :=0;_gefd < _abbc ;_gefd ++{_cdb :=_ggc .Left +(_dffg -_bad )*_eea ;_efb .drawLineWithProps (_eefg ,_cdb ,_dgd ,_cdb ,_gdf ,true );_efb .drawLineWithProps (_ccff ,_cdb ,_cef ,_cdb ,_ccfb ,true );if _fgea {_bec :=_gbe .NewParagraph (_e .FormatFloat (_dffg ,'g',-1,64));_bec .SetFontSize (_gdc *_ced );_bec .SetPos (_cdb -_aead *_ced ,_ccfb +_dga *_ced );_gbe .Draw (_bec );};_dffg +=_dac ;};}else {_edd :=_gad /_fgfd ;_dbe :=_ggc .Left ;if _fgea {var _aag float64 ;for _eddg :=0;_eddg < _abbc ;_eddg ++{_fdf :=_ggc .Bottom -(_dffg -_bad )*_edd ;_bdff :=_gbe .NewParagraph (_e .FormatFloat (_dffg ,'g',-1,64));_bdff .SetFontSize (_gdc *_ced );_bdff .SetPos (_dbe -_dbb *_ced ,_fdf -_cfdf *_ced );_gbe .Draw (_bdff );_dfd :=(_bdff .Width ()/1000-_dbb )*_ced ;if _dfd > 0&&_dfd > _aag {_aag =_dfd ;};_dffg +=_dac ;};if _aag > 0{_ggc .Left +=_aag +_ecfa ;_cggb =_ggc .Right -_ggc .Left ;};};_dffg =_bad ;_dde :=_ggc .Left -_gcde ;_ebcd :=_ggc .Left +_gdb ;_dbe =_ggc .Left ;_bbba :=_ggc .Right ;for _beff :=0;_beff < _abbc ;_beff ++{_abda :=_ggc .Bottom -(_dffg -_bad )*_edd ;_efb .drawLineWithProps (_eefg ,_dde ,_abda ,_ebcd ,_abda ,true );_efb .drawLineWithProps (_ccff ,_dbe ,_abda ,_bbba ,_abda ,true );_dffg +=_dac ;};_bcb :=_cggb /float64 (len (_aceb ));_afcf :=_ggc .Bottom +_bad *_gad /_fgfd ;_ede :=_afcf -_gae ;_egde :=_afcf +_fd ;_cgfg :=_ggc .Top ;_fcff :=_ggc .Bottom ;_ged :=_afcf +_dga *_ced ;for _dcad :=0;_dcad < _gbf ;_dcad ++{_bada :=_ggc .Left +float64 (_dcad )*_bcb ;_efb .drawLineWithProps (_gefc ,_bada ,_ede ,_bada ,_egde ,true );_efb .drawLineWithProps (_dcca ,_bada ,_cgfg ,_bada ,_fcff ,true );if _gfa &&_dcad < _gbf -1{_befb :=_gbe .NewParagraph (_aceb [_dcad ]);_befb .SetFontSize (_gdc *_ced );_befb .SetPos (_bada +_eccf *_ced ,_ged );_gbe .Draw (_befb );};};};return nil ;};var _dbb =_fefe (7.5);func _egge (_gagf string )(string ,string ){if !_dc .HasSuffix (_gagf ,"\u002e\u0074\u0074\u0066"){_c .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 "","";};_eefb ,_aeea :=_fe .ParseFile (_gagf );if _aeea !=nil {_c .Log .Debug ("\u0043a\u006e\u006e\u006f\u0074\u0020\u0070\u0061\u0072\u0073\u0065\u0020T\u0054\u0046\u0020\u0066\u0069\u006c\u0065\u0020\u0025\u0073",_aeea );return "","";};_gafc :=_eefb .GetNameByID (1);if _gafc ==""{_c .Log .Debug ("\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",_gagf );return "","";};_fddf :=make ([]byte ,0);for _aac :=0;_aac < len (_gafc );_aac ++{if _gafc [_aac ]==39||_gafc [_aac ]==92{continue ;};_aacc :=4;if _aac +_aacc < len (_gafc ){if _gafc [_aac :_aac +_aacc ]=="\u0000"{_aac =_aac +_aacc +1;continue ;};};_fddf =append (_fddf ,_gafc [_aac ]);};_gafc =_dc .Replace (string (_fddf ),"\u0078\u0030\u0030","",-1);_eafd :=_eefb .GetNameByID (2);if _eafd ==""{_c .Log .Debug ("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",_gagf );return "","";};_fddf =make ([]byte ,0);for _aae :=0;_aae < len (_eafd );_aae ++{if _eafd [_aae ]==39||_eafd [_aae ]==92{continue ;};_dbee :=4;if _aae +_dbee < len (_eafd ){if _eafd [_aae :_aae +_dbee ]=="\u0000"{_aae =_aae +_dbee +1;continue ;};};_fddf =append (_fddf ,_eafd [_aae ]);};_eafd =_dc .Replace (string (_fddf ),"\u0078\u0030\u0030","",-1);return _gafc ,_eafd ;};func GetRegisteredFont (name string ,style FontStyle )*_ea .PdfFont {_beg ._bdd .Lock ();defer _beg ._bdd .Unlock ();if _ebgf ,_geab :=_beg ._cgfe [name ];_geab {if _fce ,_eca :=_ebgf [style ];_eca {return _fce ;};};return nil ;};var _feff =_fefe (1.5);var _eccf =_fefe (5);func _fea (_dcaf _gac .ST_SchemeColorVal ,_ada *_gac .Theme )string {if _dcff :=_ada .ThemeElements ;_dcff !=nil {if _afe :=_dcff .ClrScheme ;_afe !=nil {switch _dcaf {case _gac .ST_SchemeColorValLt1 :return GetColorStringFromDmlColor (_afe .Lt1 );case _gac .ST_SchemeColorValDk1 ,_gac .ST_SchemeColorValTx1 :return GetColorStringFromDmlColor (_afe .Dk1 );case _gac .ST_SchemeColorValLt2 :return GetColorStringFromDmlColor (_afe .Lt2 );case _gac .ST_SchemeColorValDk2 :return GetColorStringFromDmlColor (_afe .Dk2 );case _gac .ST_SchemeColorValAccent1 :return GetColorStringFromDmlColor (_afe .Accent1 );case _gac .ST_SchemeColorValAccent2 :return GetColorStringFromDmlColor (_afe .Accent2 );case _gac .ST_SchemeColorValAccent3 :return GetColorStringFromDmlColor (_afe .Accent3 );case _gac .ST_SchemeColorValAccent4 :return GetColorStringFromDmlColor (_afe .Accent4 );case _gac .ST_SchemeColorValAccent5 :return GetColorStringFromDmlColor (_afe .Accent5 );case _gac .ST_SchemeColorValAccent6 :return GetColorStringFromDmlColor (_afe .Accent6 );};};};return "";};var _ecfa =_fefe (2);func GetOpacityFromColorTransform (trs []*_gac .EG_ColorTransform )float64 {for _ ,_dbg :=range trs {if _dbg !=nil {if _ebd :=_dbg .Alpha ;_ebd !=nil {if _eeb :=_ebd .ValAttr .ST_PositiveFixedPercentageDecimal ;_eeb !=nil {return float64 (*_eeb )/100000;};};};};return 1.0;};func GetImage (c *_bg .Creator ,goImg _ge .Image ,imgHeight ,imgWidth ,left ,top ,dividerX ,dividerY float64 ,part ImgPart )(*_bg .Image ,error ){if goImg ==nil {return nil ,nil ;};_aede :=goImg .Bounds ().Size ();_ccadf :=_aede .X ;_ccgg :=_aede .Y ;if dividerX !=0{dividerX =dividerX /imgWidth *float64 (_ccadf );};if dividerY !=0{dividerY =dividerY /imgHeight *float64 (_ccgg );};var _afd _ge .Rectangle ;switch part {case ImgPart_t :_afd =_ge .Rect (0,0,_ccadf ,int (dividerY ));case ImgPart_b :_afd =_ge .Rect (0,int (dividerY ),_ccadf ,_ccgg );case ImgPart_l :_afd =_ge .Rect (0,0,int (dividerX ),_ccgg );case ImgPart_r :_afd =_ge .Rect (int (dividerX ),0,_ccadf ,_ccgg );case ImgPart_lt :_afd =_ge .Rect (0,0,int (dividerX ),int (dividerY ));case ImgPart_rt :_afd =_ge .Rect (int (dividerX ),0,_ccadf ,int (dividerY ));case ImgPart_lb :_afd =_ge .Rect (0,int (dividerY ),int (dividerX ),_ccgg );case ImgPart_rb :_afd =_ge .Rect (int (dividerX ),int (dividerY ),_ccadf ,_ccgg );default:_afd =_ge .Rect (0,0,_ccadf ,_ccgg );};_cdaf :=CropImageByRect (goImg ,_afd );_bbc ,_beefg :=c .NewImageFromGoImage (_cdaf );if _beefg !=nil {return nil ,_beefg ;};_bbc .Scale (imgWidth /float64 (_ccadf ),imgHeight /float64 (_ccgg ));_bbc .SetPos (left ,top );return _bbc ,nil ;};func FromSTCoordinate32 (st _gac .ST_Coordinate32 )int64 {if _cfdd :=st .ST_Coordinate32Unqualified ;_cfdd !=nil {return int64 (*_cfdd );};return 0;};var _cfdf =_fefe (1.5);func (_dfe barSerByOrder )Less (i ,j int )bool {return _dfe [i ].Order .ValAttr < _dfe [j ].Order .ValAttr };func IsNoSpaceLanguage (symbol string )bool {for _ ,_eac :=range symbol {if _d .Is (_d .Han ,_eac ){return true ;};};return false ;};func PointsFromTwips (twips int64 )float64 {return float64 (int64 (float64 (twips )*_b .Twips *10+0.5))/10};func _dgg (_cfec uint8 ,_adcb float64 )string {_abc :=float64 (_cfec );return _de .Sprintf ("\u0025\u0030\u0032\u0078",int (_abc *_adcb ));};