2022-01-15 21:17:38 +00:00
|
|
|
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
|