unioffice/internal/convertutils/convertutils.go
2023-12-12 23:20:29 +00:00

148 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 (_fd "bytes";_bf "errors";_d "fmt";_ac "github.com/unidoc/unioffice/common/logger";_cf "github.com/unidoc/unioffice/measurement";_fba "github.com/unidoc/unioffice/schema/soo/dml";_cg "github.com/unidoc/unioffice/schema/soo/dml/chart";
_da "github.com/unidoc/unioffice/spreadsheet/format";_fg "github.com/unidoc/unipdf/v3/creator";_e "github.com/unidoc/unipdf/v3/model";_fbc "github.com/unidoc/unipdf/v3/render";_dc "github.com/unidoc/unitype";_ba "image";_f "math";_c "os";_ga "sort";_a "strconv";
_be "strings";_fb "sync";_b "unicode";);var _bebg =_dba (1.5);func GetPageFromCreator (c *_fg .Creator )(*_e .PdfPage ,error ){_eefb :=_fd .NewBuffer ([]byte {});_fcdgc :=c .Write (_eefb );if _fcdgc !=nil {return nil ,_fcdgc ;};_gcaa :=_fd .NewReader (_eefb .Bytes ());
_bgdc ,_fcdgc :=_e .NewPdfReader (_gcaa );if _fcdgc !=nil {return nil ,_fcdgc ;};return _bgdc .GetPage (1);};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 FromSTCoordinate (st _fba .ST_Coordinate )int64 {if _eff :=st .ST_CoordinateUnqualified ;_eff !=nil {return *_eff ;};return 0;};type ImgPart byte ;func MakeBlockFromCreator (c *_fg .Creator )(*_fg .Block ,error ){_bcgc ,_aacg :=GetPageFromCreator (c );
if _aacg !=nil {return nil ,_aacg ;};_dfeb ,_aacg :=_fg .NewBlockFromPage (_bcgc );if _aacg !=nil {return nil ,_aacg ;};return _dfeb ,nil ;};func GetImage (c *_fg .Creator ,goImg _ba .Image ,imgHeight ,imgWidth ,left ,top ,dividerX ,dividerY float64 ,part ImgPart )(*_fg .Image ,error ){if goImg ==nil {return nil ,nil ;
};_gdb :=goImg .Bounds ().Size ();_cad :=_gdb .X ;_becd :=_gdb .Y ;if dividerX !=0{dividerX =dividerX /imgWidth *float64 (_cad );};if dividerY !=0{dividerY =dividerY /imgHeight *float64 (_becd );};var _dafc _ba .Rectangle ;switch part {case ImgPart_t :_dafc =_ba .Rect (0,0,_cad ,int (dividerY ));
case ImgPart_b :_dafc =_ba .Rect (0,int (dividerY ),_cad ,_becd );case ImgPart_l :_dafc =_ba .Rect (0,0,int (dividerX ),_becd );case ImgPart_r :_dafc =_ba .Rect (int (dividerX ),0,_cad ,_becd );case ImgPart_lt :_dafc =_ba .Rect (0,0,int (dividerX ),int (dividerY ));
case ImgPart_rt :_dafc =_ba .Rect (int (dividerX ),0,_cad ,int (dividerY ));case ImgPart_lb :_dafc =_ba .Rect (0,int (dividerY ),int (dividerX ),_becd );case ImgPart_rb :_dafc =_ba .Rect (int (dividerX ),int (dividerY ),_cad ,_becd );default:_dafc =_ba .Rect (0,0,_cad ,_becd );
};_gcf :=CropImageByRect (goImg ,_dafc );_abda ,_dcgd :=c .NewImageFromGoImage (_gcf );if _dcgd !=nil {return nil ,_dcgd ;};_abda .Scale (imgWidth /float64 (_cad ),imgHeight /float64 (_becd ));_abda .SetPos (left ,top );return _abda ,nil ;};var _bb =_dba (1.5);
func (_cbce *creatorContext )drawLineWithProps (_fgeb *_fba .CT_ShapeProperties ,_bcbf ,_dgb ,_beda ,_gafd float64 ,_edfa bool ){if _fgeb !=nil {if _bgde :=_fgeb .Ln ;_bgde !=nil {_dea :=_cbce .getPdfColorFromSolidFill (_bgde .SolidFill );if _dea ==nil &&_edfa {_dea =_fg .ColorBlack ;
};if _dea !=nil {var _bgb float64 ;if _gga :=_bgde .WAttr ;_gga !=nil {_bgb =_cf .FromEMU (int64 (*_gga ));}else {_bgb =_cfa ;};DrawLine (_cbce ._fcgd ,_bcbf ,_dgb ,_beda ,_gafd ,_bgb ,_dea );};};};};func GetColorStringFromDmlColor (dmlColor *_fba .CT_Color )string {var _cgg string ;
if _dcab :=dmlColor .SrgbClr ;_dcab !=nil {_cgg =_dcab .ValAttr ;}else if _gece :=dmlColor .SysClr ;_gece !=nil {return "\u0030\u0030\u0030\u0030\u0030\u0030";};return _cgg ;};func GetDataFromXfrm (xfrm *_fba .CT_Transform2D )(float64 ,float64 ,float64 ,float64 ){var _gaaa ,_bad ,_bceb ,_aecc float64 ;
if _gdgbg :=xfrm .Off ;_gdgbg !=nil {_gaaa =_cf .FromEMU (FromSTCoordinate (_gdgbg .XAttr ));_bad =_cf .FromEMU (FromSTCoordinate (_gdgbg .YAttr ));};if _ebaf :=xfrm .Ext ;_ebaf !=nil {_bceb =_cf .FromEMU (_ebaf .CxAttr );_aecc =_cf .FromEMU (_ebaf .CyAttr );
};return _gaaa ,_bad ,_bceb ,_aecc ;};func _dba (_aeggg float64 )float64 {return _aeggg *_cf .Millimeter };var _eaca =_dba (2);func _dfba (_bee *_cg .CT_DateAx )(uint32 ,_cg .ST_AxPos ,_cg .ST_TickMark ,_cg .ST_TickLblPos ,*_cg .CT_ChartLines ,uint32 ,*_fba .CT_ShapeProperties ,error ){var _cgb ,_dgg uint32 ;
var _gec _cg .ST_AxPos ;var _egf _cg .ST_TickMark ;var _bgf *_cg .CT_ChartLines ;var _gcdg _cg .ST_TickLblPos ;if _bee .AxId ==nil {return _cgb ,_gec ,_egf ,_gcdg ,_bgf ,_dgg ,_bee .SpPr ,_bf .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
}else {_cgb =_bee .AxId .ValAttr ;};if _bee .AxPos ==nil {return _cgb ,_gec ,_egf ,_gcdg ,_bgf ,_dgg ,_bee .SpPr ,_bf .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_gec =_bee .AxPos .ValAttr ;};
if _bee .MajorTickMark !=nil {_egf =_bee .MajorTickMark .ValAttr ;};if _bee .TickLblPos !=nil {_gcdg =_bee .TickLblPos .ValAttr ;};if _bee .CrossAx ==nil {return _cgb ,_gec ,_egf ,_gcdg ,_bgf ,_dgg ,_bee .SpPr ,_bf .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
}else {_dgg =_bee .CrossAx .ValAttr ;};_bgf =_bee .MajorGridlines ;return _cgb ,_gec ,_egf ,_gcdg ,_bgf ,_dgg ,_bee .SpPr ,nil ;};func _afdc (_fee *_cg .CT_CatAx )(uint32 ,_cg .ST_AxPos ,_cg .ST_TickMark ,_cg .ST_TickLblPos ,*_cg .CT_ChartLines ,uint32 ,*_fba .CT_ShapeProperties ,error ){var _ecgb ,_faa uint32 ;
var _aebc _cg .ST_AxPos ;var _geff _cg .ST_TickMark ;var _aed *_cg .CT_ChartLines ;var _faad _cg .ST_TickLblPos ;if _fee .AxId ==nil {return _ecgb ,_aebc ,_geff ,_faad ,_aed ,_faa ,_fee .SpPr ,_bf .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
}else {_ecgb =_fee .AxId .ValAttr ;};if _fee .AxPos ==nil {return _ecgb ,_aebc ,_geff ,_faad ,_aed ,_faa ,_fee .SpPr ,_bf .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_aebc =_fee .AxPos .ValAttr ;
};if _fee .MajorTickMark !=nil {_geff =_fee .MajorTickMark .ValAttr ;};if _fee .TickLblPos !=nil {_faad =_fee .TickLblPos .ValAttr ;};if _fee .CrossAx ==nil {return _ecgb ,_aebc ,_geff ,_faad ,_aed ,_faa ,_fee .SpPr ,_bf .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
}else {_faa =_fee .CrossAx .ValAttr ;};_aed =_fee .MajorGridlines ;return _ecgb ,_aebc ,_geff ,_faad ,_aed ,_faa ,_fee .SpPr ,nil ;};func IsNoSpaceLanguage (symbol string )bool {for _ ,_edd :=range symbol {if _b .Is (_b .Han ,_edd ){return true ;};};return false ;
};const _fec =6.0;var _gbee =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 _cdgc (_cdaa ,_adbd ,_fgbb uint8 )(float64 ,float64 ,float64 ){_bgfd ,_gdcc ,_aaaf :=float64 (_cdaa )/255,float64 (_adbd )/255,float64 (_fgbb )/255;_dcgb :=_bgfd ;if _gdcc < _dcgb {_dcgb =_gdcc ;};if _aaaf < _dcgb {_dcgb =_aaaf ;};var _cbaf ,_eaag bool ;
_fdcd :=_bgfd ;if _gdcc > _fdcd {_fdcd =_gdcc ;_cbaf =true ;};if _aaaf > _fdcd {_fdcd =_aaaf ;_cbaf =false ;_eaag =true ;};_abe :=(_dcgb +_fdcd )/2;var _fce float64 ;if _dcgb !=_fdcd {if _abe <=0.5{_fce =(_fdcd -_dcgb )/(_fdcd +_dcgb );}else {_fce =(_fdcd -_dcgb )/(2.0-_fdcd -_dcgb );
};};var _ebec float64 ;if _dcgb !=_fdcd {if _cbaf {_ebec =2.0+(_aaaf -_bgfd )/(_fdcd -_dcgb );}else if _eaag {_ebec =4.0+(_bgfd -_gdcc )/(_fdcd -_dcgb );}else {_ebec =(_gdcc -_aaaf )/(_fdcd -_dcgb );};_ebec *=60;if _ebec < 0{_ebec +=360;};};return _ebec ,_fce ,_abe ;
};func _dade (_gdf *_cg .ChartSpace ,_gcg ,_bcfb float64 ,_aacc *_fba .Theme ,_cca bool )(*_fg .Creator ,error ){_cgfe :=1.0;if _cca {_cgfe =8.0;};_ceg :=&Rectangle {};_aee :=&Rectangle {Top :_ceg .Top ,Bottom :_bcfb -_ceg .Bottom ,Left :_ceg .Left ,Right :_gcg -_ceg .Right };
_dfd :=MakeTempCreator (_gcg *_cgfe +1,_bcfb *_cgfe +1);_afgg :=&creatorContext {_fcgd :_dfd ,_bgd :_aacc ,_dbg :_cgfe };var _efa bool ;if _bcb :=_gdf .Chart ;_bcb !=nil {_dfb :=_bcb .PlotArea ;if _dfb ==nil {return nil ,_bf .New ("\u004e\u006f\u0020p\u006c\u006f\u0074\u0020\u0061\u0072\u0065\u0061");
};_ed :=&Rectangle {Top :_dba (10),Bottom :_aee .Bottom -_dba (15),Left :_dba (10),Right :_aee .Right -_dba (10)};var _bfg *Rectangle ;_aca :=_bcb .Legend ;if _aca !=nil {_beb :=_aca .Overlay !=nil &&_aca .Overlay .ValAttr !=nil &&*_aca .Overlay .ValAttr ;
if _cdg :=_aca .LegendPos ;_cdg !=nil {switch _cdg .ValAttr {case _cg .ST_LegendPosTr :if !_beb {_ed =&Rectangle {Top :_dba (25),Bottom :_aee .Bottom -_dba (10),Left :_dba (10),Right :_aee .Right -_dba (25)};};_bfg =&Rectangle {Top :_dba (2.5),Bottom :_dba (22.5),Left :_aee .Right -_dba (22.5),Right :_aee .Right -_dba (2.5)};
case _cg .ST_LegendPosT :_bfg =&Rectangle {Top :_dba (2.5),Bottom :_dba (7.5),Left :(_aee .Right -_aee .Left )*0.25,Right :(_aee .Right -_aee .Left )*0.75};if !_beb {_ed =&Rectangle {Top :_dba (12.5),Bottom :_aee .Bottom -_dba (15),Left :_dba (10),Right :_aee .Right -_dba (5)};
};_efa =true ;case _cg .ST_LegendPosB :_bfg =&Rectangle {Top :_aee .Bottom -_dba (7.5),Bottom :_aee .Bottom -_dba (2.5),Left :(_aee .Right -_aee .Left )*0.25,Right :(_aee .Right -_aee .Left )*0.75};if !_beb {_ed =&Rectangle {Top :_dba (5),Bottom :_aee .Bottom -_dba (15),Left :_dba (10),Right :_aee .Right -_dba (5)};
};_efa =true ;case _cg .ST_LegendPosR :_bfg =&Rectangle {Top :(_aee .Bottom -_aee .Top )/2-_dba (10),Bottom :(_aee .Bottom -_aee .Top )/2+_dba (10),Left :_aee .Right -_dba (22.5),Right :_aee .Right -_dba (2.5)};if !_beb {_ed =&Rectangle {Top :_dba (5),Bottom :_aee .Bottom -_dba (12.5),Left :_dba (10),Right :_aee .Right -_dba (25)};
};case _cg .ST_LegendPosL :_bfg =&Rectangle {Top :(_aee .Bottom -_aee .Top )/2-_dba (10),Bottom :(_aee .Bottom -_aee .Top )/2+_dba (10),Left :_dba (2.5),Right :_dba (22.5)};if !_beb {_ed =&Rectangle {Top :_dba (5),Bottom :_aee .Bottom -_dba (12.5),Left :_dba (30),Right :_aee .Right -_dba (5)};
};default:_bfg =&Rectangle {Top :(_aee .Bottom -_aee .Top )/2-_dba (10),Bottom :(_aee .Bottom -_aee .Top )/2+_dba (10),Left :_aee .Right -_dba (25),Right :_aee .Right -_dba (5)};if !_beb {_ed =&Rectangle {Top :_dba (5),Bottom :_aee .Bottom -_dba (12.5),Left :_dba (100),Right :_aee .Right -_dba (25)};
};};};};_ed .scale (_cgfe );_afgg .drawBorderWithProps (_dfb .SpPr ,_ed ,_cfa );_bcg :=[]*legendItem {};var _facd error ;_acag :=_dfb .CChoice ;for _ ,_cdcf :=range _dfb .Choice {if _bce :=_cdcf .BarChart ;_bce !=nil {_bcg ,_facd =_afgg .drawBarChart (_bce ,_ed ,_acag );
if _facd !=nil {return nil ,_facd ;};};};if _aca !=nil {_bfg .scale (_cgfe );_afgg .drawBorderWithProps (_aca .SpPr ,_bfg ,_cfa );if len (_bcg )!=0{_afgg .drawLegend (_bfg ,_bcg ,_efa );};};};_aee .scale (_cgfe );_afgg .drawBorderWithProps (_gdf .SpPr ,_aee ,_cfa );
return _dfd ,nil ;};func (_eba *creatorContext )drawAxes (_caef *_cg .CT_PlotAreaChoice1 ,_deec ,_gaa ,_fagd float64 ,_adeg []string ,_bbg *Rectangle ,_caa bool )error {_ffgd :=_eba ._fcgd ;_ffc :=_eba ._dbg ;if _caef ==nil {return _bf .New ("\u004e\u006f\u0020\u0061xi\u0073\u0020\u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e");
};if len (_caef .ValAx )==0||(len (_caef .CatAx )==0&&len (_caef .DateAx )==0&&len (_caef .SerAx )==0){return _bf .New ("\u004e\u006f\u0020\u0078\u0020\u006f\u0072\u0020\u0079 \u0061\u0078\u0069\u0073");};var _abf ,_ege ,_cfae ,_cbc uint32 ;var _dg ,_ggcc _cg .ST_AxPos ;
var _adea ,_aagd _cg .ST_TickMark ;var _acb ,_gac *_cg .CT_ChartLines ;var _cbgf ,_dfgg _cg .ST_TickLblPos ;var _gca ,_bda *_fba .CT_ShapeProperties ;var _bfa error ;_bedb :=_bbg .Right -_bbg .Left ;_aec :=_bbg .Bottom -_bbg .Top ;if len (_caef .ValAx )> 0{_ege ,_ggcc ,_aagd ,_dfgg ,_gac ,_cbc ,_bda ,_bfa =_bcd (_caef .ValAx [0]);
};if _ggcc !=_cg .ST_AxPosL &&_ggcc !=_cg .ST_AxPosB {return _bf .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");
};_aea :=_gaa -_deec ;_gae :=int (_aea /_fagd )+1;var _egbf ,_gdec float64 ;switch _aagd {case _cg .ST_TickMarkIn :_egbf ,_gdec =_gbc ,0;case _cg .ST_TickMarkOut :_egbf ,_gdec =0,_gbc ;case _cg .ST_TickMarkCross :_egbf ,_gdec =_gbc ,_gbc ;};_egbf =_egbf *_ffc ;
_gdec =_gdec *_ffc ;var _fcf *_fba .CT_ShapeProperties ;if _gac !=nil {_fcf =_gac .SpPr ;};_gge ,_dac :=_cbgf !=_cg .ST_TickLblPosNone ,_dfgg !=_cg .ST_TickLblPosNone ;_eea :=_deec ;if len (_caef .CatAx )> 0{_abf ,_dg ,_adea ,_cbgf ,_acb ,_cfae ,_gca ,_bfa =_afdc (_caef .CatAx [0]);
}else if len (_caef .DateAx )> 0{_abf ,_dg ,_adea ,_cbgf ,_acb ,_cfae ,_gca ,_bfa =_dfba (_caef .DateAx [0]);}else if len (_caef .SerAx )> 0{_abf ,_dg ,_adea ,_cbgf ,_acb ,_cfae ,_gca ,_bfa =_fabg (_caef .SerAx [0]);};if _bfa !=nil {return _bfa ;};if _dg !=_cg .ST_AxPosL &&_dg !=_cg .ST_AxPosB {return _bf .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 _abf !=_cbc ||_ege !=_cfae {return _bf .New ("a\u0078i\u0073\u0020\u0069\u0064\u0073\u0020\u0064\u006fn\u0027\u0074\u0020\u006dat\u0063\u0068");};_adbf :=len (_adeg )+1;var _eab ,_dbe float64 ;switch _adea {case _cg .ST_TickMarkIn :_eab ,_dbe =_gbc ,0;
case _cg .ST_TickMarkOut :_eab ,_dbe =0,_gbc ;case _cg .ST_TickMarkCross :_eab ,_dbe =_gbc ,_gbc ;};_eab =_eab *_ffc ;_dbe =_dbe *_ffc ;var _dfe *_fba .CT_ShapeProperties ;if _acb !=nil {_dfe =_acb .SpPr ;};if _caa {_dcc :=_aec /float64 (len (_adeg ));
_cce :=_bbg .Left -_deec *_bedb /_aea ;_ffea :=_cce -_egb *_ffc ;if _gge {var _ggd float64 ;for _aeg :=0;_aeg < _adbf ;_aeg ++{_bebb :=_bbg .Bottom -float64 (_aeg )*_dcc ;if _aeg < _adbf -1{_fcde :=_ffgd .NewParagraph (_adeg [_aeg ]);_fcde .SetFontSize (_fec *_ffc );
_fcde .SetPos (_ffea ,_bebb -_dcc /2-_bb *_ffc );_ffgd .Draw (_fcde );_efc :=(_fcde .Width ()/1000-_egb )*_ffc ;if _efc > 0&&_efc > _ggd {_ggd =_efc ;};};};if _ggd > 0{_bbg .Left +=_ggd +_eaca ;_cce =_bbg .Left -_deec *_bedb /_aea ;_bedb =_bbg .Right -_bbg .Left ;
};};_bec :=_cce -_dbe ;_efd :=_cce +_eab ;_bgec :=_bbg .Left ;_cccd :=_bbg .Right ;for _ebd :=0;_ebd < _adbf ;_ebd ++{_efcc :=_bbg .Bottom -float64 (_ebd )*_dcc ;_eba .drawLineWithProps (_gca ,_bec ,_efcc ,_efd ,_efcc ,true );_eba .drawLineWithProps (_dfe ,_bgec ,_efcc ,_cccd ,_efcc ,true );
};_bbb :=_bedb /_aea ;_dge :=_bbg .Bottom -_egbf ;_bfdd :=_bbg .Bottom +_gdec ;_ddd :=_bbg .Top ;_afd :=_bbg .Bottom ;for _bbbf :=0;_bbbf < _gae ;_bbbf ++{_bdd :=_bbg .Left +(_eea -_deec )*_bbb ;_eba .drawLineWithProps (_bda ,_bdd ,_dge ,_bdd ,_bfdd ,true );
_eba .drawLineWithProps (_fcf ,_bdd ,_ddd ,_bdd ,_afd ,true );if _dac {_dbc :=_ffgd .NewParagraph (_a .FormatFloat (_eea ,'g',-1,64));_dbc .SetFontSize (_fec *_ffc );_dbc .SetPos (_bdd -_dee *_ffc ,_afd +_bebg *_ffc );_ffgd .Draw (_dbc );};_eea +=_fagd ;
};}else {_fdc :=_aec /_aea ;_fed :=_bbg .Left ;if _dac {var _efb float64 ;for _faf :=0;_faf < _gae ;_faf ++{_bfgd :=_bbg .Bottom -(_eea -_deec )*_fdc ;_aaf :=_ffgd .NewParagraph (_a .FormatFloat (_eea ,'g',-1,64));_aaf .SetFontSize (_fec *_ffc );_aaf .SetPos (_fed -_egb *_ffc ,_bfgd -_bb *_ffc );
_ffgd .Draw (_aaf );_efac :=(_aaf .Width ()/1000-_egb )*_ffc ;if _efac > 0&&_efac > _efb {_efb =_efac ;};_eea +=_fagd ;};if _efb > 0{_bbg .Left +=_efb +_eaca ;_bedb =_bbg .Right -_bbg .Left ;};};_eea =_deec ;_fedd :=_bbg .Left -_gdec ;_fbcf :=_bbg .Left +_egbf ;
_fed =_bbg .Left ;_beg :=_bbg .Right ;for _cdgg :=0;_cdgg < _gae ;_cdgg ++{_bbe :=_bbg .Bottom -(_eea -_deec )*_fdc ;_eba .drawLineWithProps (_bda ,_fedd ,_bbe ,_fbcf ,_bbe ,true );_eba .drawLineWithProps (_fcf ,_fed ,_bbe ,_beg ,_bbe ,true );_eea +=_fagd ;
};_fda :=_bedb /float64 (len (_adeg ));_daa :=_bbg .Bottom +_deec *_aec /_aea ;_cbcf :=_daa -_eab ;_aad :=_daa +_dbe ;_agg :=_bbg .Top ;_fcdg :=_bbg .Bottom ;_dcae :=_daa +_bebg *_ffc ;for _cbd :=0;_cbd < _adbf ;_cbd ++{_cag :=_bbg .Left +float64 (_cbd )*_fda ;
_eba .drawLineWithProps (_gca ,_cag ,_cbcf ,_cag ,_aad ,true );_eba .drawLineWithProps (_dfe ,_cag ,_agg ,_cag ,_fcdg ,true );if _gge &&_cbd < _adbf -1{_ebcc :=_ffgd .NewParagraph (_adeg [_cbd ]);_ebcc .SetFontSize (_fec *_ffc );_ebcc .SetPos (_cag +_fdb *_ffc ,_dcae );
_ffgd .Draw (_ebcc );};};};return nil ;};func DrawRectangle (c *_fg .Creator ,r *Rectangle ,w float64 ,color _fg .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 RegisterFont (name string ,style FontStyle ,font *_e .PdfFont ){_gdff ._bgc .Lock ();if _gdff ._ccfb [name ]==nil {_gdff ._ccfb [name ]=map[FontStyle ]*_e .PdfFont {};
};_gdff ._ccfb [name ][style ]=font ;_gdff ._bgc .Unlock ();};func (_bfe *Rectangle )scale (_eced float64 ){_bfe .Top *=_eced ;_bfe .Bottom *=_eced ;_bfe .Left *=_eced ;_bfe .Right *=_eced ;};type FontStyle byte ;var _gdff =fontsMap {_bgc :&_fb .Mutex {},_ccfb :map[string ]map[FontStyle ]*_e .PdfFont {}};
func (_ccgb barSerByOrder )Swap (i ,j int ){_ccgb [i ],_ccgb [j ]=_ccgb [j ],_ccgb [i ]};func PointsFromTwips (twips int64 )float64 {return float64 (int64 (float64 (twips )*_cf .Twips *10+0.5))/10;};var _cfa =_dba (0.125);func AssignStdFontByName (style _fg .TextStyle ,fontName string )*_e .PdfFont {_aegg :=_e .StdFontName (fontName );
return _e .NewStandard14FontMustCompile (_aegg );};func RegisterFontsFromDirectory (dirName string )error {_afb ,_baaa :=_c .Open (dirName );if _baaa !=nil {return _baaa ;};defer _afb .Close ();_babb ,_baaa :=_afb .Readdirnames (0);if _baaa !=nil {return _baaa ;
};for _ ,_fgddf :=range _babb {if _be .HasSuffix (_fgddf ,"\u002e\u0074\u0074\u0066"){_dce :=dirName +"\u002f"+_fgddf ;_bdda :=_gcde (_dce );if _bdda !=nil {_ac .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",_bdda );
continue ;};};};return nil ;};func (_fcc *creatorContext )drawRectangleWithProps (_ageb *_fba .CT_ShapeProperties ,_bff ,_fad ,_cea ,_feda float64 ,_afee bool ){_ggfe :=_fcc ._fcgd .NewRectangle (_bff ,_fad ,_cea ,_feda );if _ageb ==nil {if _afee {_ggfe .SetBorderWidth (_cfa );
}else {return ;};}else {_daaa :=_fcc .getPdfColorFromSolidFill (_ageb .SolidFill );if _daaa !=nil {_ggfe .SetFillColor (_daaa );};if _bgab :=_ageb .Ln ;_bgab !=nil {if _aff :=_bgab .WAttr ;_aff !=nil {_abcg :=_cf .FromEMU (int64 (*_aff ));_ggfe .SetBorderWidth (_abcg );
if _geaf :=_bgab .SolidFill ;_geaf !=nil {_ebcf :=_fcc .getPdfColorFromSolidFill (_geaf );if _ebcf !=nil {_ggfe .SetBorderColor (_ebcf );};};}else {_ggfe .SetBorderWidth (0);};};};_fcc ._fcgd .Draw (_ggfe );};func AdjustColorByShade (colorStr string ,shade float64 )string {var _fgeg ,_efde ,_cgd uint8 ;
_fcg ,_ :=_d .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_fgeg ,&_efde ,&_cgd );if _fcg !=3{return "";};return _caff (_fgeg ,shade )+_caff (_efde ,shade )+_caff (_cgd ,shade );};func AdjustColor (colorStr string ,EG_ColorTransform []*_fba .EG_ColorTransform )string {for _ ,_agb :=range EG_ColorTransform {if _ebee :=_agb .Tint ;
_ebee !=nil {if _dfa :=_ebee .ValAttr .ST_PositiveFixedPercentageDecimal ;_dfa !=nil {colorStr =AdjustColorByTint (colorStr ,float64 (*_dfa )/100000);};};if _ffgf :=_agb .Shade ;_ffgf !=nil {if _dae :=_ffgf .ValAttr .ST_PositiveFixedPercentageDecimal ;
_dae !=nil {colorStr =AdjustColorByShade (colorStr ,float64 (*_dae )/100000);};};if _cff :=_agb .LumMod ;_cff !=nil {if _ddc :=_cff .ValAttr .ST_PercentageDecimal ;_ddc !=nil {colorStr =AdjustColorByLumMod (colorStr ,float64 (*_ddc )/100000);};};};return colorStr ;
};func _dcad (_edf _fba .ST_SchemeColorVal ,_fdbg *_fba .Theme )string {if _eabe :=_fdbg .ThemeElements ;_eabe !=nil {if _eca :=_eabe .ClrScheme ;_eca !=nil {switch _edf {case _fba .ST_SchemeColorValLt1 :return GetColorStringFromDmlColor (_eca .Lt1 );case _fba .ST_SchemeColorValDk1 ,_fba .ST_SchemeColorValTx1 :return GetColorStringFromDmlColor (_eca .Dk1 );
case _fba .ST_SchemeColorValLt2 :return GetColorStringFromDmlColor (_eca .Lt2 );case _fba .ST_SchemeColorValDk2 :return GetColorStringFromDmlColor (_eca .Dk2 );case _fba .ST_SchemeColorValAccent1 :return GetColorStringFromDmlColor (_eca .Accent1 );case _fba .ST_SchemeColorValAccent2 :return GetColorStringFromDmlColor (_eca .Accent2 );
case _fba .ST_SchemeColorValAccent3 :return GetColorStringFromDmlColor (_eca .Accent3 );case _fba .ST_SchemeColorValAccent4 :return GetColorStringFromDmlColor (_eca .Accent4 );case _fba .ST_SchemeColorValAccent5 :return GetColorStringFromDmlColor (_eca .Accent5 );
case _fba .ST_SchemeColorValAccent6 :return GetColorStringFromDmlColor (_eca .Accent6 );};};};return "";};const (FontStyle_Regular FontStyle =0;FontStyle_Bold FontStyle =1;FontStyle_Italic FontStyle =2;FontStyle_BoldItalic FontStyle =3;);func MakeTempCreator (width ,height float64 )*_fg .Creator {_cdf :=_fg .New ();
_cdf .SetPageSize (_fg .PageSize {width ,height });_cdf .SetPageMargins (0,0,0,0);return _cdf ;};func _cbb (_acg uint8 ,_aagg float64 )string {_daf :=float64 (_acg );var _bfae float64 ;if _aagg < 0{_bfae =_daf *(1+_aagg );}else {_bfae =_daf +(255-_daf )*_aagg ;
};return _d .Sprintf ("\u0025\u0030\u0032\u0078",int (_bfae ));};func DrawLine (c *_fg .Creator ,x0 ,y0 ,x1 ,y1 ,width float64 ,color _fg .Color ){if color ==nil {return ;};_egee :=c .NewLine (x0 ,y0 ,x1 ,y1 );_egee .SetLineWidth (width );_egee .SetColor (color );
c .Draw (_egee );};func TwipsFromPoints (points float64 )float64 {return points /_cf .Twips };func GetRegisteredFont (name string ,style FontStyle )*_e .PdfFont {_gdff ._bgc .Lock ();defer _gdff ._bgc .Unlock ();if _dcfd ,_cace :=_gdff ._ccfb [name ];_cace {if _egge ,_fef :=_dcfd [style ];
_fef {return _egge ;};};return nil ;};func (_afgf 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 (_afgf )];
};func MakeBlockFromChartSpace (cs *_cg .ChartSpace ,width ,height float64 ,theme *_fba .Theme )(*_fg .Block ,error ){_babc ,_gdg :=_dade (cs ,width ,height ,theme ,false );if _gdg !=nil {return nil ,_gdg ;};_gbdb ,_gdg :=GetPageFromCreator (_babc );if _gdg !=nil {return nil ,_gdg ;
};_fcd ,_gdg :=_fg .NewBlockFromPage (_gbdb );if _gdg !=nil {return nil ,_gdg ;};return _fcd ,nil ;};type Rectangle struct{Top float64 ;Bottom float64 ;Left float64 ;Right float64 ;};type fontsMap struct{_bgc *_fb .Mutex ;_ccfb map[string ]map[FontStyle ]*_e .PdfFont ;
};var _aded =_dba (1.5);func RegisterFontsFromFiles (files []string )error {for _ ,_adec :=range files {if _be .HasSuffix (_adec ,"\u002e\u0074\u0074\u0066"){_acc :=_gcde (_adec );if _acc !=nil {_ac .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",_acc );
continue ;};};};return nil ;};type serValue struct{_aag string ;_fge float64 ;_fe *_fba .CT_ShapeProperties ;};var _dee =_dba (0.5);func (_bfd *creatorContext )drawLegend (_eec *Rectangle ,_adfg []*legendItem ,_dfgf bool ){_ffg :=_bfd ._dbg ;_bgee :=_dba (2.5)*_ffg ;
_fcb :=_aded *_ffg ;_dcf :=(_bgee -_fcb )/2;_dbb :=float64 (len (_adfg ));if _dfgf {_ebc :=&Rectangle {Top :_eec .Top +_dba (1)*_ffg ,Bottom :_eec .Bottom -_dba (1)*_ffg ,Left :_eec .Left +_dba (2.5)*_ffg ,Right :_eec .Right -_dba (2.5)*_ffg };var _cb float64 ;
if _dbb > 1{_cb =(_ebc .Right -_ebc .Left )/_dbb ;};_ebg :=_ebc .Left ;_afe :=_ebc .Top ;for _ ,_ccc :=range _adfg {if _ecec :=_ccc ._adb ;_ecec !=nil {_bfd .drawRectangleWithProps (_ecec ,_ebg ,_afe +_dcf ,_fcb ,_fcb ,false );_ffb :=_ebg +_fcb *2;_fbab :=_bfd ._fcgd .NewStyledParagraph ();
_fbab .SetPos (_ffb ,_afe );_ebgc :=_fbab .Append (_ccc ._fac );_agd ,_ab :=_e .NewStandard14Font (_e .HelveticaName );if _ab ==nil {_ebgc .Style =_fg .TextStyle {FontSize :_bgee ,Font :_agd ,TextRise :0.4};_bfd ._fcgd .Draw (_fbab );};};_ebg +=_cb ;};
}else {_acf :=&Rectangle {Top :_eec .Top +_dba (2.5)*_ffg ,Bottom :_eec .Bottom -_dba (2.5)*_ffg ,Left :_eec .Left +_dba (2.5)*_ffg ,Right :_eec .Right -_dba (2.5)*_ffg };var _ggca float64 ;if _dbb > 1{_ggca =(_acf .Bottom -_acf .Top -_bgee )/(_dbb -1);
};_aeb :=_acf .Top ;_gef :=_acf .Left ;_gcd :=_gef +_fcb *2;for _ ,_ada :=range _adfg {if _eef :=_ada ._adb ;_eef !=nil {_bfd .drawRectangleWithProps (_eef ,_gef ,_aeb +_dcf ,_fcb ,_fcb ,false );_cbg :=_bfd ._fcgd .NewStyledParagraph ();_cbg .SetPos (_gcd ,_aeb );
_cefe :=_cbg .Append (_ada ._fac );_cbe ,_fag :=_e .NewStandard14Font (_e .HelveticaName );if _fag ==nil {_cefe .Style =_fg .TextStyle {FontSize :_bgee ,Font :_cbe ,TextRise :0.4};_bfd ._fcgd .Draw (_cbg );};};_aeb +=_ggca ;};};};func _fabg (_dddb *_cg .CT_SerAx )(uint32 ,_cg .ST_AxPos ,_cg .ST_TickMark ,_cg .ST_TickLblPos ,*_cg .CT_ChartLines ,uint32 ,*_fba .CT_ShapeProperties ,error ){var _fdbc ,_ebdg uint32 ;
var _cdag _cg .ST_AxPos ;var _ddb _cg .ST_TickMark ;var _abd *_cg .CT_ChartLines ;var _eaa _cg .ST_TickLblPos ;if _dddb .AxId ==nil {return _fdbc ,_cdag ,_ddb ,_eaa ,_abd ,_ebdg ,_dddb .SpPr ,_bf .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
}else {_fdbc =_dddb .AxId .ValAttr ;};if _dddb .AxPos ==nil {return _fdbc ,_cdag ,_ddb ,_eaa ,_abd ,_ebdg ,_dddb .SpPr ,_bf .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_cdag =_dddb .AxPos .ValAttr ;
};if _dddb .MajorTickMark !=nil {_ddb =_dddb .MajorTickMark .ValAttr ;};if _dddb .TickLblPos !=nil {_eaa =_dddb .TickLblPos .ValAttr ;};if _dddb .CrossAx ==nil {return _fdbc ,_cdag ,_ddb ,_eaa ,_abd ,_ebdg ,_dddb .SpPr ,_bf .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
}else {_ebdg =_dddb .CrossAx .ValAttr ;};_abd =_dddb .MajorGridlines ;return _fdbc ,_cdag ,_ddb ,_eaa ,_abd ,_ebdg ,_dddb .SpPr ,nil ;};type legendItem struct{_fac string ;_adb *_fba .CT_ShapeProperties ;};const DefaultFontSize =12.0;type BorderPosition byte ;
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 Lighten (clr float64 )float64 {return 0.6+0.4*clr };
func (_adbfd *Rectangle )Translate (x ,y float64 ){_adbfd .Left +=x ;_adbfd .Right +=x ;_adbfd .Top +=y ;_adbfd .Bottom +=y ;};func (_aafa *creatorContext )drawBorderWithProps (_fcge *_fba .CT_ShapeProperties ,_bbga *Rectangle ,_cded float64 ){if _bbga !=nil &&_fcge !=nil &&_fcge .Ln !=nil &&_fcge .Ln .SolidFill !=nil {_dgc :=_aafa .getPdfColorFromSolidFill (_fcge .Ln .SolidFill );
DrawRectangle (_aafa ._fcgd ,_bbga ,_cded ,_dgc );};};const (BorderPositionTop BorderPosition =0;BorderPositionLeft BorderPosition =1;BorderPositionBottom BorderPosition =2;BorderPositionRight BorderPosition =3;);func MakeImageFromChartSpace (cs *_cg .ChartSpace ,width ,height float64 ,theme *_fba .Theme )(_ba .Image ,error ){_aac ,_bac :=_dade (cs ,width ,height ,theme ,true );
if _bac !=nil {return nil ,_bac ;};_cgf ,_bac :=GetPageFromCreator (_aac );if _bac !=nil {return nil ,_bac ;};return _fbc .NewImageDevice ().Render (_cgf );};func _bcd (_ffbc *_cg .CT_ValAx )(uint32 ,_cg .ST_AxPos ,_cg .ST_TickMark ,_cg .ST_TickLblPos ,*_cg .CT_ChartLines ,uint32 ,*_fba .CT_ShapeProperties ,error ){var _abb ,_abc uint32 ;
var _gbe _cg .ST_AxPos ;var _ecf _cg .ST_TickMark ;var _egg *_cg .CT_ChartLines ;var _bba _cg .ST_TickLblPos ;if _ffbc .AxId ==nil {return _abb ,_gbe ,_ecf ,_bba ,_egg ,_abc ,_ffbc .SpPr ,_bf .New ("\u004e\u006f\u0020x\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
}else {_abb =_ffbc .AxId .ValAttr ;};if _ffbc .AxPos ==nil {return _abb ,_gbe ,_ecf ,_bba ,_egg ,_abc ,_ffbc .SpPr ,_bf .New ("\u004eo\u0020x\u0020\u0061\u0078\u0069\u0073 \u0070\u006fs\u0069\u0074\u0069\u006f\u006e");}else {_gbe =_ffbc .AxPos .ValAttr ;
};if _ffbc .MajorTickMark !=nil {_ecf =_ffbc .MajorTickMark .ValAttr ;};if _ffbc .TickLblPos !=nil {_bba =_ffbc .TickLblPos .ValAttr ;};if _ffbc .CrossAx ==nil {return _abb ,_gbe ,_ecf ,_bba ,_egg ,_abc ,_ffbc .SpPr ,_bf .New ("\u004e\u006f \u0063\u0072\u006fs\u0073\u0020\u0061\u0078\u0069\u0073\u0020\u0049\u0044");
}else {_abc =_ffbc .CrossAx .ValAttr ;};_egg =_ffbc .MajorGridlines ;return _abb ,_gbe ,_ecf ,_bba ,_egg ,_abc ,_ffbc .SpPr ,nil ;};func (_bge barSerByOrder )Len ()int {return len (_bge )};func _gcde (_ecd string )error {if !_be .HasSuffix (_ecd ,"\u002e\u0074\u0074\u0066"){_ac .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 _d .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");
};_ccb ,_fcgf :=_dc .ParseFile (_ecd );if _fcgf !=nil {_ac .Log .Debug ("\u0043a\u006e\u006e\u006f\u0074\u0020\u0070\u0061\u0072\u0073\u0065\u0020T\u0054\u0046\u0020\u0066\u0069\u006c\u0065\u0020\u0025\u0073",_fcgf );return _fcgf ;};_cbee ,_fcgf :=_e .NewCompositePdfFontFromTTFFile (_ecd );
if _fcgf !=nil {return _fcgf ;};_ggb :=_ccb .GetNameRecords ();for _ ,_ebeg :=range _ggb {_fgc :=_ebeg [1];if _fgc ==""{return _d .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",_ecd );
};_gfab :=make ([]byte ,0);for _dace :=0;_dace < len (_fgc );_dace ++{if _fgc [_dace ]==39||_fgc [_dace ]==92{continue ;};_bgcf :=4;if _dace +_bgcf < len (_fgc ){if _fgc [_dace :_dace +_bgcf ]=="\u0000"{_dace =_dace +_bgcf +1;continue ;};};_gfab =append (_gfab ,_fgc [_dace ]);
};_fgc =_be .Replace (string (_gfab ),"\u0078\u0030\u0030","",-1);_dcfg :=_ebeg [2];if _dcfg ==""{return _d .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",_ecd );
};_gfab =make ([]byte ,0);for _dbeg :=0;_dbeg < len (_dcfg );_dbeg ++{if _dcfg [_dbeg ]==39||_dcfg [_dbeg ]==92{continue ;};_cfbc :=4;if _dbeg +_cfbc < len (_dcfg ){if _dcfg [_dbeg :_dbeg +_cfbc ]=="\u0000"{_dbeg =_dbeg +_cfbc +1;continue ;};};_gfab =append (_gfab ,_dcfg [_dbeg ]);
};_dcfg =_be .Replace (string (_gfab ),"\u0078\u0030\u0030","",-1);RegisterFont (_fgc ,_gbee [_dcfg ],_cbee );};return nil ;};func GetOpacityFromColorTransform (trs []*_fba .EG_ColorTransform )float64 {for _ ,_gdfg :=range trs {if _gdfg !=nil {if _fggf :=_gdfg .Alpha ;
_fggf !=nil {if _gdgb :=_fggf .ValAttr .ST_PositiveFixedPercentageDecimal ;_gdgb !=nil {return float64 (*_gdgb )/100000;};};};};return 1.0;};func _caff (_aeac uint8 ,_cccc float64 )string {_cbdb :=float64 (_aeac );return _d .Sprintf ("\u0025\u0030\u0032\u0078",int (_cbdb *_cccc ));
};func AdjustColorByLumMod (colorStr string ,lum float64 )string {var _gea ,_caeg ,_cba uint8 ;_dfbe ,_ :=_d .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_gea ,&_caeg ,&_cba );if _dfbe !=3{return "";};_caec ,_cde ,_fgb :=_cdgc (_gea ,_caeg ,_cba );
_fgb =lum *_fgb ;_gea ,_caeg ,_cba =_cfaee (_caec ,_cde ,_fgb );return _d .Sprintf ("\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",_gea ,_caeg ,_cba );};var _egb =_dba (7.5);func AdjustColorByTint (colorStr string ,tint float64 )string {var _gfaf ,_cfd ,_bbd uint8 ;
_cab ,_ :=_d .Sscanf (colorStr ,"\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078",&_gfaf ,&_cfd ,&_bbd );if _cab !=3{return "";};return _cbb (_gfaf ,tint )+_cbb (_cfd ,tint )+_cbb (_bbd ,tint );};var _fdb =_dba (5);func (_debc *creatorContext )getPdfColorFromSolidFill (_dacd *_fba .CT_SolidColorFillProperties )_fg .Color {if _dacd ==nil {return nil ;
};_dgd :="";if _afba :=_dacd .SrgbClr ;_afba !=nil {_dgd =_afba .ValAttr ;}else if _ddbe :=_dacd .SchemeClr ;_ddbe !=nil {_dgd =_dcad (_ddbe .ValAttr ,_debc ._bgd );};if _dgd ==""{return nil ;};return _fg .ColorRGBFromHex ("\u0023"+_dgd );};type creatorContext struct{_fcgd *_fg .Creator ;
_bgd *_fba .Theme ;_dbg float64 ;};func CropImageByRect (sourceImg _ba .Image ,rect _ba .Rectangle )_ba .Image {_ddda ,_cfgf ,_bbbff ,_effd :=rect .Min .X ,rect .Min .Y ,rect .Max .X ,rect .Max .Y ;_ecdb :=_ba .NewNRGBA (_ba .Rect (0,0,_bbbff -_ddda ,_effd -_cfgf ));
for _fdfb :=_ddda ;_fdfb < _bbbff ;_fdfb ++{for _cagd :=_cfgf ;_cagd < _effd ;_cagd ++{_ecdb .Set (_fdfb -_ddda ,_cagd -_cfgf ,sourceImg .At (_fdfb ,_cagd ));};};return _ecdb ;};func _cfaee (_ccd ,_gaeb ,_cacc float64 )(uint8 ,uint8 ,uint8 ){var _eeg float64 ;
if _cacc < 0.5{_eeg =_cacc *(1+_gaeb );}else {_eeg =_cacc +_gaeb -_cacc *_gaeb ;};_cefed :=_cacc *2-_eeg ;_ccd /=360.0;_ffca :=_cgga (_ccd +1.0/3.0);_cefeb :=_cgga (_ccd );_facb :=_cgga (_ccd -1.0/3.0);_fga :=_becb (_ffca ,_eeg ,_cefed );_bga :=_becb (_cefeb ,_eeg ,_cefed );
_fdf :=_becb (_facb ,_eeg ,_cefed );return uint8 (255*_fga ),uint8 (255*_bga ),uint8 (255*_fdf );};func (_fbaa *creatorContext )drawBarChart (_fbd *_cg .CT_BarChart ,_bae *Rectangle ,_gb *_cg .CT_PlotAreaChoice1 )([]*legendItem ,error ){var _ff bool ;if _bd :=_fbd .BarDir ;
_bd !=nil {_ff =_bd .ValAttr ==_cg .ST_BarDirBar ;};_gd :=_fbd .Ser ;_ga .Sort (barSerByOrder (_gd ));_fa :=map[string ]serCategory {};_cd :=[]string {};_ag :=[]*legendItem {};_dca :=_f .Inf (1);_cc :=_f .Inf (-1);for _ ,_gg :=range _gd {var _ec string ;
if _ad :=_gg .Tx ;_ad !=nil {if _ce :=_ad .Choice ;_ce !=nil {if _ce .V !=nil {_ec =*_ce .V ;}else if _ade :=_ce .StrRef ;_ade !=nil {if _gc :=_ade .StrCache ;_gc !=nil {for _ ,_bdc :=range _gc .Pt {_ec =_bdc .V ;};};};};};if _fc :=_gg .Cat ;_fc !=nil {if _de :=_fc .Choice ;
_de !=nil {if _adf :=_de .StrRef ;_adf !=nil {if _dd :=_adf .StrCache ;_dd !=nil {for _ ,_bg :=range _dd .Pt {_ece :=_bg .V ;if _ ,_dcg :=_fa [_ece ];!_dcg {_fa [_ece ]=serCategory {_cge :_ece ,_caf :[]serValue {}};_cd =append (_cd ,_ece );};};};}else if _gda :=_de .NumRef ;
_gda !=nil {if _aa :=_gda .NumCache ;_aa !=nil {var _gf string ;if _aa .FormatCode !=nil {_gf =*_aa .FormatCode ;};for _ ,_aab :=range _aa .Pt {var _gfd string ;if _aab .FormatCodeAttr ==nil {_gfd =_gf ;}else {_gfd =*_aab .FormatCodeAttr ;};var _ca string ;
_cfg ,_bcf :=_a .ParseFloat (_aab .V ,64);if _bcf !=nil {_ca =_aab .V ;}else {_ca =_da .Number (_cfg ,_gfd );};if _ ,_ae :=_fa [_ca ];!_ae {_fa [_ca ]=serCategory {_cge :_ca ,_caf :[]serValue {}};_cd =append (_cd ,_ca );};};};};};};if _gbd :=_gg .Val ;
_gbd !=nil {if _gde :=_gbd .Choice ;_gde !=nil {if _ee :=_gde .NumRef ;_ee !=nil {if _baa :=_ee .NumCache ;_baa !=nil {for _fbe ,_eg :=range _baa .Pt {_fbcd ,_deb :=_a .ParseFloat (_eg .V ,64);if _deb !=nil {_fbcd =0;_ac .Log .Debug ("\u0070a\u0072s\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0073",_deb );
};if _fbcd > _cc {_cc =_fbcd ;};if _fbcd < _dca {_dca =_fbcd ;};_ecg :=_fa [_cd [_fbe ]];_ecg ._caf =append (_ecg ._caf ,serValue {_aag :_ec ,_fge :_fbcd ,_fe :_gg .SpPr });_fa [_cd [_fbe ]]=_ecg ;};};};};};_ag =append (_ag ,&legendItem {_fac :_ec ,_adb :_gg .SpPr });
};var _af float64 ;var _fgd ,_deg float64 ;if _cc ==0&&_dca ==0{_af =0.2;_deg =0;_fgd =1;}else {var _cae float64 ;if _gdc :=_f .Abs (_dca );_cc < _gdc {_cae =_gdc ;}else {_cae =_cc ;};_ggc :=_f .Pow (10,_f .Floor (_f .Log10 (_cae )));_cfb :=_cae /_ggc ;
if _cfb >=1.715&&_cfb < 4.29{_af =0.5;}else if _cfb >=4.29&&_cfb < 8.58{_af =1;}else {_af =2;};_af *=_ggc ;if _cc <=0{_fgd =0;}else {_fgd =(_f .Ceil (_cc /_af )+1)*_af ;};if _dca >=0{_deg =0;}else {_deg =(_f .Floor (_dca /_af )-1)*_af ;};};_dad :=_fbaa .drawAxes (_gb ,_deg ,_fgd ,_af ,_cd ,_bae ,_ff );
if _dad !=nil {return nil ,_dad ;};_ggg :=0.0;if _fbd .GapWidth !=nil {if _eb :=_fbd .GapWidth .ValAttr ;_eb !=nil {if _eed :=_eb .ST_GapAmountUShort ;_eed !=nil {_ggg =float64 (*_eed )/100.0;};};};_gfde :=_bae .Right -_bae .Left ;_ge :=_bae .Bottom -_bae .Top ;
_ebe :=float64 (len (_cd ));if _ff {_bef :=_fgd /(_fgd -_deg )*_gfde ;_db :=-_deg /(_fgd -_deg )*_gfde ;_gfc :=_bae .Left +_db ;_afg :=_ge /_ebe ;for _fab ,_cac :=range _cd {_fca :=_fa [_cac ];_fgg :=float64 (len (_fca ._caf ))+_ggg ;_ead :=_afg /_fgg ;
_ccg :=_ead *_ggg ;_fgdd :=_bae .Bottom -float64 (_fab )*_afg -_ccg /2-_ead ;for _ ,_bab :=range _fca ._caf {if _bab ._fge ==0{continue ;};var _ggf ,_adg float64 ;if _bab ._fge > 0{_adg =_bab ._fge /_fgd *_bef ;_fbaa .drawRectangleWithProps (_bab ._fe ,_gfc ,_fgdd ,_adg ,_ead ,false );
}else {_adg =_bab ._fge /_deg *_db ;_ggf =_gfc -_adg ;_fbaa .drawRectangleWithProps (_bab ._fe ,_ggf ,_fgdd ,_adg ,_ead ,false );};_fgdd -=_ead ;};};}else {_gaf :=_fgd /(_fgd -_deg )*_ge ;_eae :=-_deg /(_fgd -_deg )*_ge ;_gfg :=_bae .Top +_gaf ;_gfa :=_gfde /_ebe ;
for _dfg ,_cda :=range _cd {_cdc :=_fa [_cda ];_dbd :=float64 (len (_cdc ._caf ))+_ggg ;_cfc :=_gfa /_dbd ;_eac :=_cfc *_ggg ;_ef :=_bae .Left +float64 (_dfg )*_gfa +_eac /2;for _ ,_cef :=range _cdc ._caf {var _ace ,_gce float64 ;if _cef ._fge > 0{_gce =_cef ._fge /_fgd *_gaf ;
_ace =_gfg -_gce ;_fbaa .drawRectangleWithProps (_cef ._fe ,_ef ,_ace ,_cfc ,_gce ,false );}else {_gce =_cef ._fge /_deg *_eae ;_fbaa .drawRectangleWithProps (_cef ._fe ,_ef ,_gfg ,_cfc ,_gce ,false );};_ef +=_cfc ;};};};return _ag ,nil ;};func _cgga (_age float64 )float64 {if _age < 0{_age +=float64 (-int (_age )+1);
}else if _age > 1{_age -=float64 (int (_age ));};return _age ;};var _gbc =_dba (1);func FromSTPercentage (st *_fba .ST_Percentage )float64 {if _eecg :=st .ST_PercentageDecimal ;_eecg !=nil {return float64 (*_eecg )/100000;};return 0;};type serCategory struct{_cge string ;
_caf []serValue ;};type barSerByOrder []*_cg .CT_BarSer ;func _bcef (_abdg _fba .ST_SchemeColorVal ,_bdg *_fba .Theme )string {if _ced :=_bdg .ThemeElements ;_ced !=nil {if _bfga :=_ced .ClrScheme ;_bfga !=nil {switch _abdg {case _fba .ST_SchemeColorValLt1 :return GetColorStringFromDmlColor (_bfga .Lt1 );
case _fba .ST_SchemeColorValDk1 ,_fba .ST_SchemeColorValTx1 :return GetColorStringFromDmlColor (_bfga .Dk1 );case _fba .ST_SchemeColorValLt2 :return GetColorStringFromDmlColor (_bfga .Lt2 );case _fba .ST_SchemeColorValDk2 :return GetColorStringFromDmlColor (_bfga .Dk2 );
case _fba .ST_SchemeColorValAccent1 :return GetColorStringFromDmlColor (_bfga .Accent1 );case _fba .ST_SchemeColorValAccent2 :return GetColorStringFromDmlColor (_bfga .Accent2 );case _fba .ST_SchemeColorValAccent3 :return GetColorStringFromDmlColor (_bfga .Accent3 );
case _fba .ST_SchemeColorValAccent4 :return GetColorStringFromDmlColor (_bfga .Accent4 );case _fba .ST_SchemeColorValAccent5 :return GetColorStringFromDmlColor (_bfga .Accent5 );case _fba .ST_SchemeColorValAccent6 :return GetColorStringFromDmlColor (_bfga .Accent6 );
};};};return "";};func (_baaf barSerByOrder )Less (i ,j int )bool {return _baaf [i ].Order .ValAttr < _baaf [j ].Order .ValAttr ;};func FromSTCoordinate32 (st _fba .ST_Coordinate32 )int64 {if _gff :=st .ST_Coordinate32Unqualified ;_gff !=nil {return int64 (*_gff );
};return 0;};func _becb (_fedf ,_fdbd ,_gfgc float64 )float64 {if _fedf *6< 1{return _gfgc +(_fdbd -_gfgc )*6*_fedf ;}else if _fedf *2< 1{return _fdbd ;}else if _fedf *3< 2{return _gfgc +(_fdbd -_gfgc )*(2.0/3.0-_fedf )*6;}else {return _gfgc ;};};