mirror of
https://github.com/unidoc/unioffice.git
synced 2025-04-25 13:48:53 +08:00
12 lines
39 KiB
Go
12 lines
39 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 (_f "bytes";_cf "errors";_bb "fmt";_ae "github.com/unidoc/unioffice/common/logger";_g "github.com/unidoc/unioffice/measurement";_fb "github.com/unidoc/unioffice/schema/soo/dml";_fdc "github.com/unidoc/unioffice/schema/soo/dml/chart";_fc "github.com/unidoc/unioffice/spreadsheet/format";_cgd "github.com/unidoc/unipdf/v3/creator";_dc "github.com/unidoc/unipdf/v3/model";_dd "github.com/unidoc/unipdf/v3/render";_gg "github.com/unidoc/unitype";_fd "image";_ce "math";_e "os";_d "sort";_a "strconv";_ba "strings";_b "sync";_cg "unicode";);type barSerByOrder []*_fdc .CT_BarSer ;const (BorderPositionTop BorderPosition =0;BorderPositionLeft BorderPosition =1;BorderPositionBottom BorderPosition =2;BorderPositionRight BorderPosition =3;);func Lighten (clr float64 )float64 {return 0.6+0.4*clr };func GetOpacityFromColorTransform (trs []*_fb .EG_ColorTransform )float64 {for _ ,_ecb :=range trs {if _ecb !=nil {if _cgc :=_ecb .Alpha ;_cgc !=nil {if _dfcf :=_cgc .ValAttr .ST_PositiveFixedPercentageDecimal ;_dfcf !=nil {return float64 (*_dfcf )/100000;};};};};return 1.0;};var _gbf =_fbbg (0.125);var _ddb =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 RegisterFont (name string ,style FontStyle ,font *_dc .PdfFont ){_bfgg ._fcgg .Lock ();if _bfgg ._efa [name ]==nil {_bfgg ._efa [name ]=map[FontStyle ]*_dc .PdfFont {};};_bfgg ._efa [name ][style ]=font ;_bfgg ._fcgg .Unlock ();};func _ecfe (_fgbc uint8 ,_fcc float64 )string {_cbc :=float64 (_fgbc );return _bb .Sprintf ("\u0025\u0030\u0032\u0078",int (_cbc *_fcc ));};type FontStyle byte ;func RegisterFontsFromDirectory (dirName string )error {_edee ,_gegf :=_e .Open (dirName );if _gegf !=nil {return _gegf ;};defer _edee .Close ();_agg ,_gegf :=_edee .Readdirnames (0);if _gegf !=nil {return _gegf ;};for _ ,_ebd :=range _agg {if _ba .HasSuffix (_ebd ,"\u002e\u0074\u0074\u0066"){_cdc :=dirName +"\u002f"+_ebd ;_dcde ,_ffac :=_gg .ParseFile (_cdc );if _ffac !=nil {_ae .Log .Debug ("\u0043a\u006e\u006e\u006f\u0074\u0020\u0070\u0061\u0072\u0073\u0065\u0020T\u0054\u0046\u0020\u0066\u0069\u006c\u0065\u0020\u0025\u0073",_ffac );continue ;};_dcff :=_dcde .GetNameByID (1);if _dcff ==""{_ae .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",_cdc );continue ;};_bcb :=_dcde .GetNameByID (2);if _bcb ==""{_ae .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",_cdc );continue ;};_cfd ,_ffac :=_dc .NewCompositePdfFontFromTTFFile (_cdc );if _ffac !=nil {_ae .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",_ffac );continue ;};RegisterFont (_dcff ,_ddb [_bcb ],_cfd );};};return nil ;};type fontsMap struct{_fcgg *_b .Mutex ;_efa map[string ]map[FontStyle ]*_dc .PdfFont ;};func _afdf (_bbed ,_gceg ,_caf float64 )float64 {if _bbed *6< 1{return _caf +(_gceg -_caf )*6*_bbed ;}else if _bbed *2< 1{return _gceg ;}else if _bbed *3< 2{return _caf +(_gceg -_caf )*(2.0/3.0-_bbed )*6;}else {return _caf ;};};func _babf (_fcea *_fdc .CT_SerAx )(uint32 ,_fdc .ST_AxPos ,_fdc .ST_TickMark ,_fdc .ST_TickLblPos ,*_fdc .CT_ChartLines ,uint32 ,*_fb .CT_ShapeProperties ,error ){var _ebc ,_cfad uint32 ;var _adfc _fdc .ST_AxPos ;var _dcbg _fdc .ST_TickMark ;var _bda *_fdc .CT_ChartLines ;var _cbf _fdc .ST_TickLblPos ;if _fcea .AxId ==nil {return _ebc ,_adfc ,_dcbg ,_cbf ,_bda ,_cfad ,_fcea .SpPr ,_cf .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_ebc =_fcea .AxId .ValAttr ;};if _fcea .AxPos ==nil {return _ebc ,_adfc ,_dcbg ,_cbf ,_bda ,_cfad ,_fcea .SpPr ,_cf .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_adfc =_fcea .AxPos .ValAttr ;};if _fcea .MajorTickMark !=nil {_dcbg =_fcea .MajorTickMark .ValAttr ;};if _fcea .TickLblPos !=nil {_cbf =_fcea .TickLblPos .ValAttr ;};if _fcea .CrossAx ==nil {return _ebc ,_adfc ,_dcbg ,_cbf ,_bda ,_cfad ,_fcea .SpPr ,_cf .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_cfad =_fcea .CrossAx .ValAttr ;};_bda =_fcea .MajorGridlines ;return _ebc ,_adfc ,_dcbg ,_cbf ,_bda ,_cfad ,_fcea .SpPr ,nil ;};func AdjustColorByTint (colorStr string ,tint float64 )string {var _fag ,_bdf ,_ffd uint8 ;_ffe ,_ :=_bb .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_fag ,&_bdf ,&_ffd );if _ffe !=3{return "";};return _fdge (_fag ,tint )+_fdge (_bdf ,tint )+_fdge (_ffd ,tint );};func _fbbg (_agcg float64 )float64 {return _agcg *_g .Millimeter };func _aae (_dfcg _fb .ST_SchemeColorVal ,_baab *_fb .Theme )string {if _egef :=_baab .ThemeElements ;_egef !=nil {if _gfb :=_egef .ClrScheme ;_gfb !=nil {switch _dfcg {case _fb .ST_SchemeColorValLt1 :return GetColorStringFromDmlColor (_gfb .Lt1 );case _fb .ST_SchemeColorValDk1 ,_fb .ST_SchemeColorValTx1 :return GetColorStringFromDmlColor (_gfb .Dk1 );case _fb .ST_SchemeColorValLt2 :return GetColorStringFromDmlColor (_gfb .Lt2 );case _fb .ST_SchemeColorValDk2 :return GetColorStringFromDmlColor (_gfb .Dk2 );case _fb .ST_SchemeColorValAccent1 :return GetColorStringFromDmlColor (_gfb .Accent1 );case _fb .ST_SchemeColorValAccent2 :return GetColorStringFromDmlColor (_gfb .Accent2 );case _fb .ST_SchemeColorValAccent3 :return GetColorStringFromDmlColor (_gfb .Accent3 );case _fb .ST_SchemeColorValAccent4 :return GetColorStringFromDmlColor (_gfb .Accent4 );case _fb .ST_SchemeColorValAccent5 :return GetColorStringFromDmlColor (_gfb .Accent5 );case _fb .ST_SchemeColorValAccent6 :return GetColorStringFromDmlColor (_gfb .Accent6 );};};};return "";};func IsNoSpaceLanguage (symbol string )bool {for _ ,_efaf :=range symbol {if _cg .Is (_cg .Han ,_efaf ){return true ;};};return false ;};var _bfgg =fontsMap {_fcgg :&_b .Mutex {},_efa :map[string ]map[FontStyle ]*_dc .PdfFont {}};func _add (_baee *_fdc .CT_CatAx )(uint32 ,_fdc .ST_AxPos ,_fdc .ST_TickMark ,_fdc .ST_TickLblPos ,*_fdc .CT_ChartLines ,uint32 ,*_fb .CT_ShapeProperties ,error ){var _cee ,_bbea uint32 ;var _fbf _fdc .ST_AxPos ;var _fcdg _fdc .ST_TickMark ;var _ddg *_fdc .CT_ChartLines ;var _bea _fdc .ST_TickLblPos ;if _baee .AxId ==nil {return _cee ,_fbf ,_fcdg ,_bea ,_ddg ,_bbea ,_baee .SpPr ,_cf .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_cee =_baee .AxId .ValAttr ;};if _baee .AxPos ==nil {return _cee ,_fbf ,_fcdg ,_bea ,_ddg ,_bbea ,_baee .SpPr ,_cf .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_fbf =_baee .AxPos .ValAttr ;};if _baee .MajorTickMark !=nil {_fcdg =_baee .MajorTickMark .ValAttr ;};if _baee .TickLblPos !=nil {_bea =_baee .TickLblPos .ValAttr ;};if _baee .CrossAx ==nil {return _cee ,_fbf ,_fcdg ,_bea ,_ddg ,_bbea ,_baee .SpPr ,_cf .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_bbea =_baee .CrossAx .ValAttr ;};_ddg =_baee .MajorGridlines ;return _cee ,_fbf ,_fcdg ,_bea ,_ddg ,_bbea ,_baee .SpPr ,nil ;};var _ffa =_fbbg (0.5);func _gga (_dgfc *_fdc .CT_ValAx )(uint32 ,_fdc .ST_AxPos ,_fdc .ST_TickMark ,_fdc .ST_TickLblPos ,*_fdc .CT_ChartLines ,uint32 ,*_fb .CT_ShapeProperties ,error ){var _deee ,_baef uint32 ;var _ffg _fdc .ST_AxPos ;var _abe _fdc .ST_TickMark ;var _ecf *_fdc .CT_ChartLines ;var _adbb _fdc .ST_TickLblPos ;if _dgfc .AxId ==nil {return _deee ,_ffg ,_abe ,_adbb ,_ecf ,_baef ,_dgfc .SpPr ,_cf .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_deee =_dgfc .AxId .ValAttr ;};if _dgfc .AxPos ==nil {return _deee ,_ffg ,_abe ,_adbb ,_ecf ,_baef ,_dgfc .SpPr ,_cf .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_ffg =_dgfc .AxPos .ValAttr ;};if _dgfc .MajorTickMark !=nil {_abe =_dgfc .MajorTickMark .ValAttr ;};if _dgfc .TickLblPos !=nil {_adbb =_dgfc .TickLblPos .ValAttr ;};if _dgfc .CrossAx ==nil {return _deee ,_ffg ,_abe ,_adbb ,_ecf ,_baef ,_dgfc .SpPr ,_cf .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_baef =_dgfc .CrossAx .ValAttr ;};_ecf =_dgfc .MajorGridlines ;return _deee ,_ffg ,_abe ,_adbb ,_ecf ,_baef ,_dgfc .SpPr ,nil ;};func (_daba barSerByOrder )Len ()int {return len (_daba )};func GetDataFromXfrm (xfrm *_fb .CT_Transform2D )(float64 ,float64 ,float64 ,float64 ){var _dcffg ,_cecg ,_dcda ,_ecd float64 ;if _gebb :=xfrm .Off ;_gebb !=nil {_dcffg =_g .FromEMU (FromSTCoordinate (_gebb .XAttr ));_cecg =_g .FromEMU (FromSTCoordinate (_gebb .YAttr ));};if _fcde :=xfrm .Ext ;_fcde !=nil {_dcda =_g .FromEMU (_fcde .CxAttr );_ecd =_g .FromEMU (_fcde .CyAttr );};return _dcffg ,_cecg ,_dcda ,_ecd ;};var _gea =_fbbg (7.5);func (_fffg 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 (_fffg )];};type creatorContext struct{_fbagc *_cgd .Creator ;_baba *_fb .Theme ;_dgda float64 ;};func CropImageByRect (sourceImg _fd .Image ,rect _fd .Rectangle )_fd .Image {_gcca ,_afbc ,_abf ,_bee :=rect .Min .X ,rect .Min .Y ,rect .Max .X ,rect .Max .Y ;_ccdb :=_fd .NewNRGBA (_fd .Rect (0,0,_abf -_gcca ,_bee -_afbc ));for _efgfb :=_gcca ;_efgfb < _abf ;_efgfb ++{for _fgea :=_afbc ;_fgea < _bee ;_fgea ++{_ccdb .Set (_efgfb -_gcca ,_fgea -_afbc ,sourceImg .At (_efgfb ,_fgea ));};};return _ccdb ;};type legendItem struct{_dcdb string ;_ege *_fb .CT_ShapeProperties ;};func FromSTCoordinate (st _fb .ST_Coordinate )int64 {if _fde :=st .ST_CoordinateUnqualified ;_fde !=nil {return *_fde ;};return 0;};var _ddd =_fbbg (1.5);func _fdge (_fbceb uint8 ,_cbae float64 )string {_cae :=float64 (_fbceb );var _eaefd float64 ;if _cbae < 0{_eaefd =_cae *(1+_cbae );}else {_eaefd =_cae +(255-_cae )*_cbae ;};return _bb .Sprintf ("\u0025\u0030\u0032\u0078",int (_eaefd ));};func (_egbb *creatorContext )drawAxes (_bca *_fdc .CT_PlotAreaChoice1 ,_bacb ,_aadb ,_eaef float64 ,_dggd []string ,_aage *Rectangle ,_ac bool )error {_gage :=_egbb ._fbagc ;_gdb :=_egbb ._dgda ;if _bca ==nil {return _cf .New ("\u004e\u006f\u0020\u0061xi\u0073\u0020\u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e");};if len (_bca .ValAx )==0||(len (_bca .CatAx )==0&&len (_bca .DateAx )==0&&len (_bca .SerAx )==0){return _cf .New ("\u004e\u006f\u0020\u0078\u0020\u006f\u0072\u0020\u0079 \u0061\u0078\u0069\u0073");};var _deg ,_gecb ,_geb ,_dbe uint32 ;var _dbgb ,_cefd _fdc .ST_AxPos ;var _cdff ,_abcd _fdc .ST_TickMark ;var _acb ,_bdd *_fdc .CT_ChartLines ;var _affb ,_ged _fdc .ST_TickLblPos ;var _bbg ,_dfe *_fb .CT_ShapeProperties ;var _ccc error ;_adf :=_aage .Right -_aage .Left ;_ccg :=_aage .Bottom -_aage .Top ;if len (_bca .ValAx )> 0{_gecb ,_cefd ,_abcd ,_ged ,_bdd ,_dbe ,_dfe ,_ccc =_gga (_bca .ValAx [0]);};if _cefd !=_fdc .ST_AxPosL &&_cefd !=_fdc .ST_AxPosB {return _cf .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");};_cfa :=_aadb -_bacb ;_bae :=int (_cfa /_eaef )+1;var _ffc ,_afd float64 ;switch _abcd {case _fdc .ST_TickMarkIn :_ffc ,_afd =_babb ,0;case _fdc .ST_TickMarkOut :_ffc ,_afd =0,_babb ;case _fdc .ST_TickMarkCross :_ffc ,_afd =_babb ,_babb ;};_ffc =_ffc *_gdb ;_afd =_afd *_gdb ;var _bbgg *_fb .CT_ShapeProperties ;if _bdd !=nil {_bbgg =_bdd .SpPr ;};_bbggd ,_dcc :=_affb !=_fdc .ST_TickLblPosNone ,_ged !=_fdc .ST_TickLblPosNone ;_fgca :=_bacb ;if len (_bca .CatAx )> 0{_deg ,_dbgb ,_cdff ,_affb ,_acb ,_geb ,_bbg ,_ccc =_add (_bca .CatAx [0]);}else if len (_bca .DateAx )> 0{_deg ,_dbgb ,_cdff ,_affb ,_acb ,_geb ,_bbg ,_ccc =_ccff (_bca .DateAx [0]);}else if len (_bca .SerAx )> 0{_deg ,_dbgb ,_cdff ,_affb ,_acb ,_geb ,_bbg ,_ccc =_babf (_bca .SerAx [0]);};if _ccc !=nil {return _ccc ;};if _dbgb !=_fdc .ST_AxPosL &&_dbgb !=_fdc .ST_AxPosB {return _cf .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 _deg !=_dbe ||_gecb !=_geb {return _cf .New ("a\u0078i\u0073\u0020\u0069\u0064\u0073\u0020\u0064\u006fn\u0027\u0074\u0020\u006dat\u0063\u0068");};_fbag :=len (_dggd )+1;var _bec ,_bfg float64 ;switch _cdff {case _fdc .ST_TickMarkIn :_bec ,_bfg =_babb ,0;case _fdc .ST_TickMarkOut :_bec ,_bfg =0,_babb ;case _fdc .ST_TickMarkCross :_bec ,_bfg =_babb ,_babb ;};_bec =_bec *_gdb ;_bfg =_bfg *_gdb ;var _gdd *_fb .CT_ShapeProperties ;if _acb !=nil {_gdd =_acb .SpPr ;};if _ac {_aef :=_ccg /float64 (len (_dggd ));_fcb :=_aage .Left -_bacb *_adf /_cfa ;_bggg :=_fcb -_gea *_gdb ;if _bbggd {var _aba float64 ;for _bgd :=0;_bgd < _fbag ;_bgd ++{_fdfc :=_aage .Bottom -float64 (_bgd )*_aef ;if _bgd < _fbag -1{_cede :=_gage .NewParagraph (_dggd [_bgd ]);_cede .SetFontSize (_gcg *_gdb );_cede .SetPos (_bggg ,_fdfc -_aef /2-_ddd *_gdb );_gage .Draw (_cede );_geg :=(_cede .Width ()/1000-_gea )*_gdb ;if _geg > 0&&_geg > _aba {_aba =_geg ;};};};if _aba > 0{_aage .Left +=_aba +_dff ;_fcb =_aage .Left -_bacb *_adf /_cfa ;_adf =_aage .Right -_aage .Left ;};};_geab :=_fcb -_bfg ;_fcd :=_fcb +_bec ;_cfaa :=_aage .Left ;_feb :=_aage .Right ;for _cbd :=0;_cbd < _fbag ;_cbd ++{_cbdc :=_aage .Bottom -float64 (_cbd )*_aef ;_egbb .drawLineWithProps (_bbg ,_geab ,_cbdc ,_fcd ,_cbdc ,true );_egbb .drawLineWithProps (_gdd ,_cfaa ,_cbdc ,_feb ,_cbdc ,true );};_ccfg :=_adf /_cfa ;_bba :=_aage .Bottom -_ffc ;_ceae :=_aage .Bottom +_afd ;_cca :=_aage .Top ;_adb :=_aage .Bottom ;for _gf :=0;_gf < _bae ;_gf ++{_dfc :=_aage .Left +(_fgca -_bacb )*_ccfg ;_egbb .drawLineWithProps (_dfe ,_dfc ,_bba ,_dfc ,_ceae ,true );_egbb .drawLineWithProps (_bbgg ,_dfc ,_cca ,_dfc ,_adb ,true );if _dcc {_ffff :=_gage .NewParagraph (_a .FormatFloat (_fgca ,'g',-1,64));_ffff .SetFontSize (_gcg *_gdb );_ffff .SetPos (_dfc -_ffa *_gdb ,_adb +_agdf *_gdb );_gage .Draw (_ffff );};_fgca +=_eaef ;};}else {_dfd :=_ccg /_cfa ;_edf :=_aage .Left ;if _dcc {var _abaa float64 ;for _ebf :=0;_ebf < _bae ;_ebf ++{_ffcf :=_aage .Bottom -(_fgca -_bacb )*_dfd ;_afdg :=_gage .NewParagraph (_a .FormatFloat (_fgca ,'g',-1,64));_afdg .SetFontSize (_gcg *_gdb );_afdg .SetPos (_edf -_gea *_gdb ,_ffcf -_ddd *_gdb );_gage .Draw (_afdg );_gdc :=(_afdg .Width ()/1000-_gea )*_gdb ;if _gdc > 0&&_gdc > _abaa {_abaa =_gdc ;};_fgca +=_eaef ;};if _abaa > 0{_aage .Left +=_abaa +_dff ;_adf =_aage .Right -_aage .Left ;};};_fgca =_bacb ;_cefb :=_aage .Left -_afd ;_egff :=_aage .Left +_ffc ;_edf =_aage .Left ;_ddcb :=_aage .Right ;for _fgec :=0;_fgec < _bae ;_fgec ++{_aed :=_aage .Bottom -(_fgca -_bacb )*_dfd ;_egbb .drawLineWithProps (_dfe ,_cefb ,_aed ,_egff ,_aed ,true );_egbb .drawLineWithProps (_bbgg ,_edf ,_aed ,_ddcb ,_aed ,true );_fgca +=_eaef ;};_dgf :=_adf /float64 (len (_dggd ));_dffd :=_aage .Bottom +_bacb *_ccg /_cfa ;_dcdc :=_dffd -_bec ;_gede :=_dffd +_bfg ;_cbb :=_aage .Top ;_aaa :=_aage .Bottom ;_cgdd :=_dffd +_agdf *_gdb ;for _bfb :=0;_bfb < _fbag ;_bfb ++{_gcc :=_aage .Left +float64 (_bfb )*_dgf ;_egbb .drawLineWithProps (_bbg ,_gcc ,_dcdc ,_gcc ,_gede ,true );_egbb .drawLineWithProps (_gdd ,_gcc ,_cbb ,_gcc ,_aaa ,true );if _bbggd &&_bfb < _fbag -1{_edgc :=_gage .NewParagraph (_dggd [_bfb ]);_edgc .SetFontSize (_gcg *_gdb );_edgc .SetPos (_gcc +_deed *_gdb ,_cgdd );_gage .Draw (_edgc );};};};return nil ;};func _efb (_becf ,_gdbf ,_bdg float64 )(uint8 ,uint8 ,uint8 ){var _ebb float64 ;if _bdg < 0.5{_ebb =_bdg *(1+_gdbf );}else {_ebb =_bdg +_gdbf -_bdg *_gdbf ;};_gad :=_bdg *2-_ebb ;_becf /=360.0;_cga :=_afg (_becf +1.0/3.0);_cgg :=_afg (_becf );_cage :=_afg (_becf -1.0/3.0);_deeec :=_afdf (_cga ,_ebb ,_gad );_cbdf :=_afdf (_cgg ,_ebb ,_gad );_eccg :=_afdf (_cage ,_ebb ,_gad );return uint8 (255*_deeec ),uint8 (255*_cbdf ),uint8 (255*_eccg );};type Rectangle struct{Top float64 ;Bottom float64 ;Left float64 ;Right float64 ;};func _abdf (_dcgb _fb .ST_SchemeColorVal ,_dgd *_fb .Theme )string {if _bdc :=_dgd .ThemeElements ;_bdc !=nil {if _eff :=_bdc .ClrScheme ;_eff !=nil {switch _dcgb {case _fb .ST_SchemeColorValLt1 :return GetColorStringFromDmlColor (_eff .Lt1 );case _fb .ST_SchemeColorValDk1 ,_fb .ST_SchemeColorValTx1 :return GetColorStringFromDmlColor (_eff .Dk1 );case _fb .ST_SchemeColorValLt2 :return GetColorStringFromDmlColor (_eff .Lt2 );case _fb .ST_SchemeColorValDk2 :return GetColorStringFromDmlColor (_eff .Dk2 );case _fb .ST_SchemeColorValAccent1 :return GetColorStringFromDmlColor (_eff .Accent1 );case _fb .ST_SchemeColorValAccent2 :return GetColorStringFromDmlColor (_eff .Accent2 );case _fb .ST_SchemeColorValAccent3 :return GetColorStringFromDmlColor (_eff .Accent3 );case _fb .ST_SchemeColorValAccent4 :return GetColorStringFromDmlColor (_eff .Accent4 );case _fb .ST_SchemeColorValAccent5 :return GetColorStringFromDmlColor (_eff .Accent5 );case _fb .ST_SchemeColorValAccent6 :return GetColorStringFromDmlColor (_eff .Accent6 );};};};return "";};func (_fe barSerByOrder )Less (i ,j int )bool {return _fe [i ].Order .ValAttr < _fe [j ].Order .ValAttr };func _ccff (_agf *_fdc .CT_DateAx )(uint32 ,_fdc .ST_AxPos ,_fdc .ST_TickMark ,_fdc .ST_TickLblPos ,*_fdc .CT_ChartLines ,uint32 ,*_fb .CT_ShapeProperties ,error ){var _dddb ,_dcab uint32 ;var _fdb _fdc .ST_AxPos ;var _cac _fdc .ST_TickMark ;var _becb *_fdc .CT_ChartLines ;var _cag _fdc .ST_TickLblPos ;if _agf .AxId ==nil {return _dddb ,_fdb ,_cac ,_cag ,_becb ,_dcab ,_agf .SpPr ,_cf .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_dddb =_agf .AxId .ValAttr ;};if _agf .AxPos ==nil {return _dddb ,_fdb ,_cac ,_cag ,_becb ,_dcab ,_agf .SpPr ,_cf .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_fdb =_agf .AxPos .ValAttr ;};if _agf .MajorTickMark !=nil {_cac =_agf .MajorTickMark .ValAttr ;};if _agf .TickLblPos !=nil {_cag =_agf .TickLblPos .ValAttr ;};if _agf .CrossAx ==nil {return _dddb ,_fdb ,_cac ,_cag ,_becb ,_dcab ,_agf .SpPr ,_cf .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");}else {_dcab =_agf .CrossAx .ValAttr ;};_becb =_agf .MajorGridlines ;return _dddb ,_fdb ,_cac ,_cag ,_becb ,_dcab ,_agf .SpPr ,nil ;};func (_aeg *creatorContext )drawBarChart (_ca *_fdc .CT_BarChart ,_ef *Rectangle ,_dg *_fdc .CT_PlotAreaChoice1 )([]*legendItem ,error ){var _gc bool ;if _ga :=_ca .BarDir ;_ga !=nil {_gc =_ga .ValAttr ==_fdc .ST_BarDirBar ;};_fda :=_ca .Ser ;_d .Sort (barSerByOrder (_fda ));_ed :=map[string ]serCategory {};_ea :=[]string {};_dcd :=[]*legendItem {};_gb :=_ce .Inf (1);_da :=_ce .Inf (-1);for _ ,_bf :=range _fda {var _ff string ;if _fce :=_bf .Tx ;_fce !=nil {if _ee :=_fce .Choice ;_ee !=nil {if _ee .V !=nil {_ff =*_ee .V ;}else if _cad :=_ee .StrRef ;_cad !=nil {if _db :=_cad .StrCache ;_db !=nil {for _ ,_fg :=range _db .Pt {_ff =_fg .V ;};};};};};if _aec :=_bf .Cat ;_aec !=nil {if _cb :=_aec .Choice ;_cb !=nil {if _gd :=_cb .StrRef ;_gd !=nil {if _eg :=_gd .StrCache ;_eg !=nil {for _ ,_ag :=range _eg .Pt {_cea :=_ag .V ;if _ ,_dbf :=_ed [_cea ];!_dbf {_ed [_cea ]=serCategory {_agbd :_cea ,_ddc :[]serValue {}};_ea =append (_ea ,_cea );};};};}else if _fbb :=_cb .NumRef ;_fbb !=nil {if _gag :=_fbb .NumCache ;_gag !=nil {var _egf string ;if _gag .FormatCode !=nil {_egf =*_gag .FormatCode ;};for _ ,_ec :=range _gag .Pt {var _eea string ;if _ec .FormatCodeAttr ==nil {_eea =_egf ;}else {_eea =*_ec .FormatCodeAttr ;};var _bac string ;_dbg ,_bfe :=_a .ParseFloat (_ec .V ,64);if _bfe !=nil {_bac =_ec .V ;}else {_bac =_fc .Number (_dbg ,_eea );};if _ ,_gdf :=_ed [_bac ];!_gdf {_ed [_bac ]=serCategory {_agbd :_bac ,_ddc :[]serValue {}};_ea =append (_ea ,_bac );};};};};};};if _eb :=_bf .Val ;_eb !=nil {if _ad :=_eb .Choice ;_ad !=nil {if _aa :=_ad .NumRef ;_aa !=nil {if _agc :=_aa .NumCache ;_agc !=nil {for _ge ,_fa :=range _agc .Pt {_fgc ,_bbe :=_a .ParseFloat (_fa .V ,64);if _bbe !=nil {_fgc =0;_ae .Log .Debug ("\u0070a\u0072s\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0073",_bbe );};if _fgc > _da {_da =_fgc ;};if _fgc < _gb {_gb =_fgc ;};_fffb :=_ed [_ea [_ge ]];_fffb ._ddc =append (_fffb ._ddc ,serValue {_eeaa :_ff ,_aff :_fgc ,_ebg :_bf .SpPr });_ed [_ea [_ge ]]=_fffb ;};};};};};_dcd =append (_dcd ,&legendItem {_dcdb :_ff ,_ege :_bf .SpPr });};var _dca float64 ;var _bc ,_fga float64 ;if _da ==0&&_gb ==0{_dca =0.2;_fga =0;_bc =1;}else {var _efe float64 ;if _eed :=_ce .Abs (_gb );_da < _eed {_efe =_eed ;}else {_efe =_da ;};_dbb :=_ce .Pow (10,_ce .Floor (_ce .Log10 (_efe )));_cdd :=_efe /_dbb ;if _cdd >=1.715&&_cdd < 4.29{_dca =0.5;}else if _cdd >=4.29&&_cdd < 8.58{_dca =1;}else {_dca =2;};_dca *=_dbb ;if _da <=0{_bc =0;}else {_bc =(_ce .Ceil (_da /_dca )+1)*_dca ;};if _gb >=0{_fga =0;}else {_fga =(_ce .Floor (_gb /_dca )-1)*_dca ;};};_af :=_aeg .drawAxes (_dg ,_fga ,_bc ,_dca ,_ea ,_ef ,_gc );if _af !=nil {return nil ,_af ;};_cba :=0.0;if _ca .GapWidth !=nil {if _gdfg :=_ca .GapWidth .ValAttr ;_gdfg !=nil {if _be :=_gdfg .ST_GapAmountUShort ;_be !=nil {_cba =float64 (*_be )/100.0;};};};_gbg :=_ef .Right -_ef .Left ;_fba :=_ef .Bottom -_ef .Top ;_ega :=float64 (len (_ea ));if _gc {_agb :=_bc /(_bc -_fga )*_gbg ;_bbc :=-_fga /(_bc -_fga )*_gbg ;_cadd :=_ef .Left +_bbc ;_dgg :=_fba /_ega ;for _aag ,_cc :=range _ea {_age :=_ed [_cc ];_gcf :=float64 (len (_age ._ddc ))+_cba ;_bd :=_dgg /_gcf ;_bgg :=_bd *_cba ;_aege :=_ef .Bottom -float64 (_aag )*_dgg -_bgg /2-_bd ;for _ ,_dab :=range _age ._ddc {if _dab ._aff ==0{continue ;};var _fbc ,_gbgc float64 ;if _dab ._aff > 0{_gbgc =_dab ._aff /_bc *_agb ;_aeg .drawRectangleWithProps (_dab ._ebg ,_cadd ,_aege ,_gbgc ,_bd ,false );}else {_gbgc =_dab ._aff /_fga *_bbc ;_fbc =_cadd -_gbgc ;_aeg .drawRectangleWithProps (_dab ._ebg ,_fbc ,_aege ,_gbgc ,_bd ,false );};_aege -=_bd ;};};}else {_eec :=_bc /(_bc -_fga )*_fba ;_fcec :=-_fga /(_bc -_fga )*_fba ;_ade :=_ef .Top +_eec ;_faf :=_gbg /_ega ;for _ab ,_baa :=range _ea {_def :=_ed [_baa ];_gef :=float64 (len (_def ._ddc ))+_cba ;_ggg :=_faf /_gef ;_edg :=_ggg *_cba ;_edgg :=_ef .Left +float64 (_ab )*_faf +_edg /2;for _ ,_cbg :=range _def ._ddc {var _gagb ,_agbc float64 ;if _cbg ._aff > 0{_agbc =_cbg ._aff /_bc *_eec ;_gagb =_ade -_agbc ;_aeg .drawRectangleWithProps (_cbg ._ebg ,_edgg ,_gagb ,_ggg ,_agbc ,false );}else {_agbc =_cbg ._aff /_fga *_fcec ;_aeg .drawRectangleWithProps (_cbg ._ebg ,_edgg ,_ade ,_ggg ,_agbc ,false );};_edgg +=_ggg ;};};};return _dcd ,nil ;};func MakeImageFromChartSpace (cs *_fdc .ChartSpace ,width ,height float64 ,theme *_fb .Theme )(_fd .Image ,error ){_ada ,_fdca :=_gec (cs ,width ,height ,theme ,true );if _fdca !=nil {return nil ,_fdca ;};_fbe ,_fdca :=GetPageFromCreator (_ada );if _fdca !=nil {return nil ,_fdca ;};return _dd .NewImageDevice ().Render (_fbe );};func AdjustColor (colorStr string ,EG_ColorTransform []*_fb .EG_ColorTransform )string {for _ ,_abed :=range EG_ColorTransform {if _acbf :=_abed .Tint ;_acbf !=nil {if _fbef :=_acbf .ValAttr .ST_PositiveFixedPercentageDecimal ;_fbef !=nil {colorStr =AdjustColorByTint (colorStr ,float64 (*_fbef )/100000);};};if _fbce :=_abed .Shade ;_fbce !=nil {if _edec :=_fbce .ValAttr .ST_PositiveFixedPercentageDecimal ;_edec !=nil {colorStr =AdjustColorByShade (colorStr ,float64 (*_edec )/100000);};};if _bed :=_abed .LumMod ;_bed !=nil {if _bgcb :=_bed .ValAttr .ST_PercentageDecimal ;_bgcb !=nil {colorStr =AdjustColorByLumMod (colorStr ,float64 (*_bgcb )/100000);};};};return colorStr ;};func GetColorStringFromDmlColor (dmlColor *_fb .CT_Color )string {var _ccfc string ;if _bcc :=dmlColor .SrgbClr ;_bcc !=nil {_ccfc =_bcc .ValAttr ;}else if _bff :=dmlColor .SysClr ;_bff !=nil {return "\u0030\u0030\u0030\u0030\u0030\u0030";};return _ccfc ;};func DrawRectangle (c *_cgd .Creator ,r *Rectangle ,w float64 ,color _cgd .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 MakeTempCreator (width ,height float64 )*_cgd .Creator {_cccg :=_cgd .New ();_cccg .SetPageSize (_cgd .PageSize {width ,height });_cccg .SetPageMargins (0,0,0,0);return _cccg ;};const _gcg =6.0;func (_dac *Rectangle )Translate (x ,y float64 ){_dac .Left +=x ;_dac .Right +=x ;_dac .Top +=y ;_dac .Bottom +=y ;};func _afg (_gace float64 )float64 {if _gace < 0{_gace +=float64 (-int (_gace )+1);}else if _gace > 1{_gace -=float64 (int (_gace ));};return _gace ;};func (_adg barSerByOrder )Swap (i ,j int ){_adg [i ],_adg [j ]=_adg [j ],_adg [i ]};func (_cfaac *creatorContext )drawBorderWithProps (_fdd *_fb .CT_ShapeProperties ,_gcfe *Rectangle ,_ffag float64 ){if _gcfe !=nil &&_fdd !=nil &&_fdd .Ln !=nil &&_fdd .Ln .SolidFill !=nil {_gddb :=_cfaac .getPdfColorFromSolidFill (_fdd .Ln .SolidFill );DrawRectangle (_cfaac ._fbagc ,_gcfe ,_ffag ,_gddb );};};func AdjustColorByShade (colorStr string ,shade float64 )string {var _ddae ,_abcdg ,_caed uint8 ;_dae ,_ :=_bb .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_ddae ,&_abcdg ,&_caed );if _dae !=3{return "";};return _ecfe (_ddae ,shade )+_ecfe (_abcdg ,shade )+_ecfe (_caed ,shade );};var _agd =_fbbg (1.5);type BorderPosition byte ;func FromSTPercentage (st *_fb .ST_Percentage )float64 {if _begf :=st .ST_PercentageDecimal ;_begf !=nil {return float64 (*_begf )/100000;};return 0;};func (_edfd *creatorContext )drawRectangleWithProps (_fgba *_fb .CT_ShapeProperties ,_eedb ,_fad ,_fadd ,_bef float64 ,_egg bool ){_adgc :=_edfd ._fbagc .NewRectangle (_eedb ,_fad ,_fadd ,_bef );if _fgba ==nil {if _egg {_adgc .SetBorderWidth (_gbf );}else {return ;};}else {_gcd :=_edfd .getPdfColorFromSolidFill (_fgba .SolidFill );if _gcd !=nil {_adgc .SetFillColor (_gcd );};if _cfdg :=_fgba .Ln ;_cfdg !=nil {if _aadad :=_cfdg .WAttr ;_aadad !=nil {_cadb :=_g .FromEMU (int64 (*_aadad ));_adgc .SetBorderWidth (_cadb );if _agce :=_cfdg .SolidFill ;_agce !=nil {_defa :=_edfd .getPdfColorFromSolidFill (_agce );if _defa !=nil {_adgc .SetBorderColor (_defa );};};}else {_adgc .SetBorderWidth (0);};};};_edfd ._fbagc .Draw (_adgc );};func GetPageFromCreator (c *_cgd .Creator )(*_dc .PdfPage ,error ){_dcdg :=_f .NewBuffer ([]byte {});_ebfg :=c .Write (_dcdg );if _ebfg !=nil {return nil ,_ebfg ;};_bdafb :=_f .NewReader (_dcdg .Bytes ());_dec ,_ebfg :=_dc .NewPdfReader (_bdafb );if _ebfg !=nil {return nil ,_ebfg ;};return _dec .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 (_ccfe *Rectangle )scale (_afba float64 ){_ccfe .Top *=_afba ;_ccfe .Bottom *=_afba ;_ccfe .Left *=_afba ;_ccfe .Right *=_afba ;};type serCategory struct{_agbd string ;_ddc []serValue ;};func AssignStdFontByName (style _cgd .TextStyle ,fontName string )*_dc .PdfFont {_fgda :=_dc .StdFontName (fontName );return _dc .NewStandard14FontMustCompile (_fgda );};func _adga (_bbf ,_bcd ,_bgb uint8 )(float64 ,float64 ,float64 ){_ccb ,_ceed ,_geca :=float64 (_bbf )/255,float64 (_bcd )/255,float64 (_bgb )/255;_edgb :=_ccb ;if _ceed < _edgb {_edgb =_ceed ;};if _geca < _edgb {_edgb =_geca ;};var _fcg ,_gcbg bool ;_gae :=_ccb ;if _ceed > _gae {_gae =_ceed ;_fcg =true ;};if _geca > _gae {_gae =_geca ;_fcg =false ;_gcbg =true ;};_bcg :=(_edgb +_gae )/2;var _ccd float64 ;if _edgb !=_gae {if _bcg <=0.5{_ccd =(_gae -_edgb )/(_gae +_edgb );}else {_ccd =(_gae -_edgb )/(2.0-_gae -_edgb );};};var _ggad float64 ;if _edgb !=_gae {if _fcg {_ggad =2.0+(_geca -_ccb )/(_gae -_edgb );}else if _gcbg {_ggad =4.0+(_ccb -_ceed )/(_gae -_edgb );}else {_ggad =(_ceed -_geca )/(_gae -_edgb );};_ggad *=60;if _ggad < 0{_ggad +=360;};};return _ggad ,_ccd ,_bcg ;};func DrawLine (c *_cgd .Creator ,x0 ,y0 ,x1 ,y1 ,width float64 ,color _cgd .Color ){if color ==nil {return ;};_gca :=c .NewLine (x0 ,y0 ,x1 ,y1 );_gca .SetLineWidth (width );_gca .SetColor (color );c .Draw (_gca );};const (FontStyle_Regular FontStyle =0;FontStyle_Bold FontStyle =1;FontStyle_Italic FontStyle =2;FontStyle_BoldItalic FontStyle =3;);func PointsFromTwips (twips int64 )float64 {return float64 (int64 (float64 (twips )*_g .Twips *10+0.5))/10};func (_ggd *creatorContext )drawLineWithProps (_acg *_fb .CT_ShapeProperties ,_feaa ,_daa ,_aedd ,_acf float64 ,_eef bool ){if _acg !=nil {if _fcf :=_acg .Ln ;_fcf !=nil {_deb :=_ggd .getPdfColorFromSolidFill (_fcf .SolidFill );if _deb ==nil &&_eef {_deb =_cgd .ColorBlack ;};if _deb !=nil {var _ecg float64 ;if _febc :=_fcf .WAttr ;_febc !=nil {_ecg =_g .FromEMU (int64 (*_febc ));}else {_ecg =_gbf ;};DrawLine (_ggd ._fbagc ,_feaa ,_daa ,_aedd ,_acf ,_ecg ,_deb );};};};};func FromSTCoordinate32 (st _fb .ST_Coordinate32 )int64 {if _ccgg :=st .ST_Coordinate32Unqualified ;_ccgg !=nil {return int64 (*_ccgg );};return 0;};func AdjustColorByLumMod (colorStr string ,lum float64 )string {var _gac ,_aada ,_ggae uint8 ;_beg ,_ :=_bb .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_gac ,&_aada ,&_ggae );if _beg !=3{return "";};_bdaf ,_fcdgg ,_gbgd :=_adga (_gac ,_aada ,_ggae );_gbgd =lum *_gbgd ;_gac ,_aada ,_ggae =_efb (_bdaf ,_fcdgg ,_gbgd );return _bb .Sprintf ("\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",_gac ,_aada ,_ggae );};var _dff =_fbbg (2);func GetRegisteredFont (name string ,style FontStyle )*_dc .PdfFont {_bfgg ._fcgg .Lock ();defer _bfgg ._fcgg .Unlock ();if _gbd ,_ace :=_bfgg ._efa [name ];_ace {if _fcbg ,_eaeb :=_gbd [style ];_eaeb {return _fcbg ;};};return nil ;};func MakeBlockFromChartSpace (cs *_fdc .ChartSpace ,width ,height float64 ,theme *_fb .Theme )(*_cgd .Block ,error ){_egb ,_cef :=_gec (cs ,width ,height ,theme ,false );if _cef !=nil {return nil ,_cef ;};_eeaf ,_cef :=GetPageFromCreator (_egb );if _cef !=nil {return nil ,_cef ;};_fgb ,_cef :=_cgd .NewBlockFromPage (_eeaf );if _cef !=nil {return nil ,_cef ;};return _fgb ,nil ;};func (_dcfa *creatorContext )getPdfColorFromSolidFill (_geaf *_fb .CT_SolidColorFillProperties )_cgd .Color {if _geaf ==nil {return nil ;};_ccfa :="";if _acba :=_geaf .SrgbClr ;_acba !=nil {_ccfa =_acba .ValAttr ;}else if _fgf :=_geaf .SchemeClr ;_fgf !=nil {_ccfa =_abdf (_fgf .ValAttr ,_dcfa ._baba );};if _ccfa ==""{return nil ;};return _cgd .ColorRGBFromHex ("\u0023"+_ccfa );};type serValue struct{_eeaa string ;_aff float64 ;_ebg *_fb .CT_ShapeProperties ;};func (_gab *creatorContext )drawLegend (_gaf *Rectangle ,_dcaf []*legendItem ,_cadg bool ){_afb :=_gab ._dgda ;_fgbg :=_fbbg (2.5)*_afb ;_afbd :=_agd *_afb ;_ecc :=(_fgbg -_afbd )/2;_bbd :=float64 (len (_dcaf ));if _cadg {_ccf :=&Rectangle {Top :_gaf .Top +_fbbg (1)*_afb ,Bottom :_gaf .Bottom -_fbbg (1)*_afb ,Left :_gaf .Left +_fbbg (2.5)*_afb ,Right :_gaf .Right -_fbbg (2.5)*_afb };var _dabd float64 ;if _bbd > 1{_dabd =(_ccf .Right -_ccf .Left )/_bbd ;};_ceb :=_ccf .Left ;_cfg :=_ccf .Top ;for _ ,_agbcd :=range _dcaf {if _fgd :=_agbcd ._ege ;_fgd !=nil {_gab .drawRectangleWithProps (_fgd ,_ceb ,_cfg +_ecc ,_afbd ,_afbd ,false );_fge :=_ceb +_afbd *2;_bfc :=_gab ._fbagc .NewStyledParagraph ();_bfc .SetPos (_fge ,_cfg );_eag :=_bfc .Append (_agbcd ._dcdb );_bbb ,_aad :=_dc .NewStandard14Font (_dc .HelveticaName );if _aad ==nil {_eag .Style =_cgd .TextStyle {FontSize :_fgbg ,Font :_bbb ,TextRise :0.4};_gab ._fbagc .Draw (_bfc );};};_ceb +=_dabd ;};}else {_dda :=&Rectangle {Top :_gaf .Top +_fbbg (2.5)*_afb ,Bottom :_gaf .Bottom -_fbbg (2.5)*_afb ,Left :_gaf .Left +_fbbg (2.5)*_afb ,Right :_gaf .Right -_fbbg (2.5)*_afb };var _edc float64 ;if _bbd > 1{_edc =(_dda .Bottom -_dda .Top -_fgbg )/(_bbd -1);};_dee :=_dda .Top ;_abd :=_dda .Left ;_gce :=_abd +_afbd *2;for _ ,_dcae :=range _dcaf {if _bga :=_dcae ._ege ;_bga !=nil {_gab .drawRectangleWithProps (_bga ,_abd ,_dee +_ecc ,_afbd ,_afbd ,false );_fdg :=_gab ._fbagc .NewStyledParagraph ();_fdg .SetPos (_gce ,_dee );_afe :=_fdg .Append (_dcae ._dcdb );_cab ,_fdf :=_dc .NewStandard14Font (_dc .HelveticaName );if _fdf ==nil {_afe .Style =_cgd .TextStyle {FontSize :_fgbg ,Font :_cab ,TextRise :0.4};_gab ._fbagc .Draw (_fdg );};};_dee +=_edc ;};};};type ImgPart byte ;var _deed =_fbbg (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"}};var _agdf =_fbbg (1.5);var _babb =_fbbg (1);func _gec (_eae *_fdc .ChartSpace ,_dbc ,_cgb float64 ,_dcf *_fb .Theme ,_ede bool )(*_cgd .Creator ,error ){_bgc :=1.0;if _ede {_bgc =8.0;};_efgf :=&Rectangle {};_abc :=&Rectangle {Top :_efgf .Top ,Bottom :_cgb -_efgf .Bottom ,Left :_efgf .Left ,Right :_dbc -_efgf .Right };_fgae :=MakeTempCreator (_dbc *_bgc +1,_cgb *_bgc +1);_fbec :=&creatorContext {_fbagc :_fgae ,_baba :_dcf ,_dgda :_bgc };var _fec bool ;if _dcfb :=_eae .Chart ;_dcfb !=nil {_dcb :=_dcfb .PlotArea ;if _dcb ==nil {return nil ,_cf .New ("\u004e\u006f\u0020p\u006c\u006f\u0074\u0020\u0061\u0072\u0065\u0061");};_cdf :=&Rectangle {Top :_fbbg (10),Bottom :_abc .Bottom -_fbbg (15),Left :_fbbg (10),Right :_abc .Right -_fbbg (10)};var _cgbg *Rectangle ;_dgc :=_dcfb .Legend ;if _dgc !=nil {_dcg :=_dgc .Overlay !=nil &&_dgc .Overlay .ValAttr !=nil &&*_dgc .Overlay .ValAttr ;if _gbe :=_dgc .LegendPos ;_gbe !=nil {switch _gbe .ValAttr {case _fdc .ST_LegendPosTr :if !_dcg {_cdf =&Rectangle {Top :_fbbg (25),Bottom :_abc .Bottom -_fbbg (10),Left :_fbbg (10),Right :_abc .Right -_fbbg (25)};};_cgbg =&Rectangle {Top :_fbbg (2.5),Bottom :_fbbg (22.5),Left :_abc .Right -_fbbg (22.5),Right :_abc .Right -_fbbg (2.5)};case _fdc .ST_LegendPosT :_cgbg =&Rectangle {Top :_fbbg (2.5),Bottom :_fbbg (7.5),Left :(_abc .Right -_abc .Left )*0.25,Right :(_abc .Right -_abc .Left )*0.75};if !_dcg {_cdf =&Rectangle {Top :_fbbg (12.5),Bottom :_abc .Bottom -_fbbg (15),Left :_fbbg (10),Right :_abc .Right -_fbbg (5)};};_fec =true ;case _fdc .ST_LegendPosB :_cgbg =&Rectangle {Top :_abc .Bottom -_fbbg (7.5),Bottom :_abc .Bottom -_fbbg (2.5),Left :(_abc .Right -_abc .Left )*0.25,Right :(_abc .Right -_abc .Left )*0.75};if !_dcg {_cdf =&Rectangle {Top :_fbbg (5),Bottom :_abc .Bottom -_fbbg (15),Left :_fbbg (10),Right :_abc .Right -_fbbg (5)};};_fec =true ;case _fdc .ST_LegendPosR :_cgbg =&Rectangle {Top :(_abc .Bottom -_abc .Top )/2-_fbbg (10),Bottom :(_abc .Bottom -_abc .Top )/2+_fbbg (10),Left :_abc .Right -_fbbg (22.5),Right :_abc .Right -_fbbg (2.5)};if !_dcg {_cdf =&Rectangle {Top :_fbbg (5),Bottom :_abc .Bottom -_fbbg (12.5),Left :_fbbg (10),Right :_abc .Right -_fbbg (25)};};case _fdc .ST_LegendPosL :_cgbg =&Rectangle {Top :(_abc .Bottom -_abc .Top )/2-_fbbg (10),Bottom :(_abc .Bottom -_abc .Top )/2+_fbbg (10),Left :_fbbg (2.5),Right :_fbbg (22.5)};if !_dcg {_cdf =&Rectangle {Top :_fbbg (5),Bottom :_abc .Bottom -_fbbg (12.5),Left :_fbbg (30),Right :_abc .Right -_fbbg (5)};};default:_cgbg =&Rectangle {Top :(_abc .Bottom -_abc .Top )/2-_fbbg (10),Bottom :(_abc .Bottom -_abc .Top )/2+_fbbg (10),Left :_abc .Right -_fbbg (25),Right :_abc .Right -_fbbg (5)};if !_dcg {_cdf =&Rectangle {Top :_fbbg (5),Bottom :_abc .Bottom -_fbbg (12.5),Left :_fbbg (100),Right :_abc .Right -_fbbg (25)};};};};};_cdf .scale (_bgc );_fbec .drawBorderWithProps (_dcb .SpPr ,_cdf ,_gbf );_fea :=[]*legendItem {};var _ced error ;_gcb :=_dcb .CChoice ;for _ ,_dad :=range _dcb .Choice {if _bggc :=_dad .BarChart ;_bggc !=nil {_fea ,_ced =_fbec .drawBarChart (_bggc ,_cdf ,_gcb );if _ced !=nil {return nil ,_ced ;};};};if _dgc !=nil {_cgbg .scale (_bgc );_fbec .drawBorderWithProps (_dgc .SpPr ,_cgbg ,_gbf );if len (_fea )!=0{_fbec .drawLegend (_cgbg ,_fea ,_fec );};};};_abc .scale (_bgc );_fbec .drawBorderWithProps (_eae .SpPr ,_abc ,_gbf );return _fgae ,nil ;};func MakeBlockFromCreator (c *_cgd .Creator )(*_cgd .Block ,error ){_egc ,_afc :=GetPageFromCreator (c );if _afc !=nil {return nil ,_afc ;};_fef ,_afc :=_cgd .NewBlockFromPage (_egc );if _afc !=nil {return nil ,_afc ;};return _fef ,nil ;};func TwipsFromPoints (points float64 )float64 {return points /_g .Twips };func GetImage (c *_cgd .Creator ,goImg _fd .Image ,imgHeight ,imgWidth ,left ,top ,dividerX ,dividerY float64 ,part ImgPart )(*_cgd .Image ,error ){if goImg ==nil {return nil ,nil ;};_gcef :=goImg .Bounds ().Size ();_ggc :=_gcef .X ;_debe :=_gcef .Y ;if dividerX !=0{dividerX =dividerX /imgWidth *float64 (_ggc );};if dividerY !=0{dividerY =dividerY /imgHeight *float64 (_debe );};var _agbe _fd .Rectangle ;switch part {case ImgPart_t :_agbe =_fd .Rect (0,0,_ggc ,int (dividerY ));case ImgPart_b :_agbe =_fd .Rect (0,int (dividerY ),_ggc ,_debe );case ImgPart_l :_agbe =_fd .Rect (0,0,int (dividerX ),_debe );case ImgPart_r :_agbe =_fd .Rect (int (dividerX ),0,_ggc ,_debe );case ImgPart_lt :_agbe =_fd .Rect (0,0,int (dividerX ),int (dividerY ));case ImgPart_rt :_agbe =_fd .Rect (int (dividerX ),0,_ggc ,int (dividerY ));case ImgPart_lb :_agbe =_fd .Rect (0,int (dividerY ),int (dividerX ),_debe );case ImgPart_rb :_agbe =_fd .Rect (int (dividerX ),int (dividerY ),_ggc ,_debe );default:_agbe =_fd .Rect (0,0,_ggc ,_debe );};_dcfe :=CropImageByRect (goImg ,_agbe );_edga ,_aac :=c .NewImageFromGoImage (_dcfe );if _aac !=nil {return nil ,_aac ;};_edga .Scale (imgWidth /float64 (_ggc ),imgHeight /float64 (_debe ));_edga .SetPos (left ,top );return _edga ,nil ;};const DefaultFontSize =12.0; |