mirror of
https://github.com/unidoc/unioffice.git
synced 2025-04-27 13:48:54 +08:00
561 lines
80 KiB
Go
561 lines
80 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 presentation ;import (_eb "archive/zip";_fa "bytes";_ed "encoding/xml";_cg "errors";_gg "fmt";_gf "github.com/unidoc/unioffice";_fd "github.com/unidoc/unioffice/common";_ec "github.com/unidoc/unioffice/common/logger";_ae "github.com/unidoc/unioffice/common/tempstorage";
|
|
_ea "github.com/unidoc/unioffice/drawing";_b "github.com/unidoc/unioffice/internal/formatutils";_dd "github.com/unidoc/unioffice/internal/license";_c "github.com/unidoc/unioffice/measurement";_ggb "github.com/unidoc/unioffice/schema/soo/dml";_f "github.com/unidoc/unioffice/schema/soo/dml/chart";
|
|
_ga "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_a "github.com/unidoc/unioffice/schema/soo/pkg/relationships";_db "github.com/unidoc/unioffice/schema/soo/pml";_e "github.com/unidoc/unioffice/zippkg";_ba "image";_dae "image/jpeg";_ee "io";_fb "math";
|
|
_aeb "os";_ff "path";_bc "sort";_da "strconv";_g "strings";);
|
|
|
|
// SetTextAnchor controls the text anchoring
|
|
func (_facc TextBox )SetTextAnchor (a _ggb .ST_TextAnchoringType ){_facc ._agcag .TxBody .BodyPr =_ggb .NewCT_TextBodyProperties ();_facc ._agcag .TxBody .BodyPr .AnchorAttr =a ;};type rectangle struct{_dc int64 ;_ge int64 ;_fad int64 ;_bcf int64 ;};
|
|
|
|
// X returns the inner wrapped XML type.
|
|
func (_ccg PlaceHolder )X ()*_db .CT_Shape {return _ccg ._eff };
|
|
|
|
// AddImage adds an image to the document package, returning a reference that
|
|
// can be used to add the image to a run and place it in the document contents.
|
|
func (_acfc *Presentation )AddImage (i _fd .Image )(_fd .ImageRef ,error ){_gded :=_fd .MakeImageRef (i ,&_acfc .DocBase ,_acfc ._babf );if i .Data ==nil &&i .Path ==""{return _gded ,_cg .New ("\u0069\u006d\u0061\u0067\u0065\u0020\u006d\u0075\u0073\u0074 \u0068\u0061\u0076\u0065\u0020\u0064\u0061t\u0061\u0020\u006f\u0072\u0020\u0061\u0020\u0070\u0061\u0074\u0068");
|
|
};if i .Format ==""{return _gded ,_cg .New ("\u0069\u006d\u0061\u0067\u0065\u0020\u006d\u0075\u0073\u0074 \u0068\u0061\u0076\u0065\u0020\u0061\u0020v\u0061\u006c\u0069\u0064\u0020\u0066\u006f\u0072\u006d\u0061\u0074");};if i .Size .X ==0||i .Size .Y ==0{return _gded ,_cg .New ("\u0069\u006d\u0061\u0067e\u0020\u006d\u0075\u0073\u0074\u0020\u0068\u0061\u0076\u0065 \u0061 \u0076\u0061\u006c\u0069\u0064\u0020\u0073i\u007a\u0065");
|
|
};if i .Path !=""{_fgc :=_ae .Add (i .Path );if _fgc !=nil {return _gded ,_fgc ;};};_acfc .Images =append (_acfc .Images ,_gded );_acfc .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_acfc .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");
|
|
_acfc .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_acfc .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");_acfc .ContentTypes .EnsureDefault (i .Format ,"\u0069\u006d\u0061\u0067\u0065\u002f"+i .Format );
|
|
return _gded ,nil ;};
|
|
|
|
// HtmlPubPr returns the HtmlPubPr property.
|
|
func (_bdd PresentationProperties )HtmlPubPr ()*_db .CT_HtmlPublishProperties {return _bdd ._gge .HtmlPubPr ;};func _cgce (_bfgf []*_db .CT_GroupShapeChoice )[]*_db .CT_GroupShapeChoice {var _cdde []*_db .CT_GroupShapeChoice ;for _ ,_acc :=range _bfgf {if len (_acc .Pic )==0{_cdde =append (_cdde ,_acc );
|
|
};};return _cdde ;};
|
|
|
|
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
|
|
func (_eddd *Slide )GetColorBySchemeColor (schClr _ggb .ST_SchemeColorVal )*_ggb .CT_Color {_eddd .ensureClrMap ();_dbe :=_eddd ._dabe ;if _dbe ==nil {return nil ;};var _febgf _ggb .ST_ColorSchemeIndex ;switch schClr .String (){case "\u0062\u0067\u0031":_febgf =_dbe .Bg1Attr ;
|
|
case "\u0062\u0067\u0032":_febgf =_dbe .Bg2Attr ;case "\u0074\u0078\u0031":_febgf =_dbe .Tx1Attr ;case "\u0074\u0078\u0032":_febgf =_dbe .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_febgf =_dbe .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_febgf =_dbe .Accent2Attr ;
|
|
case "\u0061c\u0063\u0065\u006e\u0074\u0033":_febgf =_dbe .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_febgf =_dbe .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_febgf =_dbe .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_febgf =_dbe .Accent6Attr ;
|
|
case "\u0068\u006c\u0069n\u006b":_febgf =_dbe .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_febgf =_dbe .FolHlinkAttr ;case "\u0064\u006b\u0031":_febgf =_ggb .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_febgf =_ggb .ST_ColorSchemeIndexDk2 ;
|
|
case "\u006c\u0074\u0031":_febgf =_ggb .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_febgf =_ggb .ST_ColorSchemeIndexLt2 ;default:_febgf =_ggb .ST_ColorSchemeIndexUnset ;};_dege :=_eddd ._caab ._dbb [0];_cggb :=_dege .ThemeElements ;if _cggb ==nil {return nil ;
|
|
};var _ebde *_ggb .CT_Color ;_fgea :=_cggb .ClrScheme ;switch _febgf .String (){case "\u0064\u006b\u0031":_ebde =_fgea .Dk1 ;case "\u0064\u006b\u0032":_ebde =_fgea .Dk2 ;case "\u006c\u0074\u0031":_ebde =_fgea .Lt1 ;case "\u006c\u0074\u0032":_ebde =_fgea .Lt2 ;
|
|
case "\u0061c\u0063\u0065\u006e\u0074\u0031":_ebde =_fgea .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_ebde =_fgea .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_ebde =_fgea .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_ebde =_fgea .Accent4 ;
|
|
case "\u0061c\u0063\u0065\u006e\u0074\u0035":_ebde =_fgea .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_ebde =_fgea .Accent6 ;case "\u0068\u006c\u0069n\u006b":_ebde =_fgea .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_ebde =_fgea .FolHlink ;
|
|
default:return nil ;};return _ebde ;};
|
|
|
|
// NewSlideScreenSize returns slide screen size with default MS PowerPoint slide screen size 16x9.
|
|
func NewSlideScreenSize ()SlideScreenSize {return NewSlideScreenSizeWithValue (SlideScreenSize16x9 [0],SlideScreenSize16x9 [1]);};
|
|
|
|
// SlideLayouts returns the slide layouts defined in the presentation.
|
|
func (_cdg *Presentation )SlideLayouts ()[]SlideLayout {_fgbe :=[]SlideLayout {};for _ ,_dfcg :=range _cdg ._gb {_fgbe =append (_fgbe ,SlideLayout {_dfcg });};return _fgbe ;};
|
|
|
|
// ClrMru returns the ClrMru property.
|
|
func (_bgf PresentationProperties )ClrMru ()*_ggb .CT_ColorMRU {return _bgf ._gge .ClrMru };
|
|
|
|
// AddParagraph adds a new paragraph to a placeholder.
|
|
func (_caaf PlaceHolder )AddParagraph ()_ea .Paragraph {_dgg :=_ea .MakeParagraph (_ggb .NewCT_TextParagraph ());_caaf ._eff .TxBody .P =append (_caaf ._eff .TxBody .P ,_dgg .X ());return _dgg ;};
|
|
|
|
// Height returns slide screen size height in EMU units.
|
|
func (_gdg *SlideScreenSize )Height ()int32 {return _gdg [1]};
|
|
|
|
// SetSize sets the slide size, take argument of SlideScreenSize.
|
|
func (_ffgf *SlideSize )SetSize (sz SlideScreenSize ){_ffgf ._cba .CxAttr =sz [0];_ffgf ._cba .CyAttr =sz [1];};
|
|
|
|
// AddParagraph adds a paragraph to the text box
|
|
func (_dccba TextBox )AddParagraph ()_ea .Paragraph {_dfcf :=_ggb .NewCT_TextParagraph ();_dccba ._agcag .TxBody .P =append (_dccba ._agcag .TxBody .P ,_dfcf );return _ea .MakeParagraph (_dfcf );};var (SlideScreenSize16x9 =SlideScreenSize {12192000,6858000};
|
|
SlideScreenSize4x3 =SlideScreenSize {9144000,6858000};SlideScreenSizeA4 =SlideScreenSize {9906000,6858000};);
|
|
|
|
// PlaceHolder is a place holder from a slide.
|
|
type PlaceHolder struct{_eff *_db .CT_Shape ;_bad *_db .Sld ;};
|
|
|
|
// SlideMasters returns the slide masters defined in the presentation.
|
|
func (_fag *Presentation )SlideMasters ()[]SlideMaster {_abgc :=[]SlideMaster {};for _cbed ,_fggf :=range _fag ._add {_abgc =append (_abgc ,SlideMaster {_fag ,_fag ._agd [_cbed ],_fggf });};return _abgc ;};
|
|
|
|
// GetTableStyleById returns *dml.CT_TableStyle by its style id.
|
|
func (_gae *Presentation )GetTableStyleById (id string )*_ggb .CT_TableStyle {_dccc :=_gae ._gdd .TblStyle ();for _ ,_gcga :=range _dccc {if _gcga .StyleIdAttr ==id {return _gcga ;};};return nil ;};const _cca float64 =500000;
|
|
|
|
// Paragraphs returns the paragraphs defined in the placeholder.
|
|
func (_ffba PlaceHolder )Paragraphs ()[]_ea .Paragraph {_ggf :=[]_ea .Paragraph {};for _ ,_eed :=range _ffba ._eff .TxBody .P {_ggf =append (_ggf ,_ea .MakeParagraph (_eed ));};return _ggf ;};func (_af *chart )Target ()string {return _af ._ag };
|
|
|
|
// Type returns the type of the slide layout.
|
|
func (_dca SlideLayout )Type ()_db .ST_SlideLayoutType {return _dca ._gecf .TypeAttr };
|
|
|
|
// ExtractText returns text from a presentation as a PresentationText object.
|
|
func (_ece *Presentation )ExtractText ()*PresentationText {_ged :=[]*SlideText {};for _ ,_fe :=range _ece .Slides (){_be :=_fe .ExtractText ();if _be !=nil {_ged =append (_ged ,_be );};};return &PresentationText {Slides :_ged };};
|
|
|
|
// SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template
|
|
func (_dab *Presentation )SaveAsTemplate (w _ee .Writer )error {return _dab .save (w ,true )};func (_fee *Presentation )nextSlideID ()uint32 {_dde :=uint32 (256);for _ ,_eda :=range _fee ._gea .SldIdLst .SldId {if _eda .IdAttr >=_dde {_dde =_eda .IdAttr +1;
|
|
};};return _dde ;};
|
|
|
|
// NewSlideScreenSizeWithValue returns slide screen size with given width and height.
|
|
// Width and Height value is in EMU units, use our measurement.ToEMU to convert the -
|
|
// width and height value.
|
|
func NewSlideScreenSizeWithValue (width ,height int32 )SlideScreenSize {return SlideScreenSize {width ,height };};func (_egef *Presentation )Validate ()error {if _feg :=_egef ._gea .Validate ();_feg !=nil {return _feg ;};for _caf ,_feec :=range _egef .Slides (){if _gde :=_feec .ValidateWithPath (_gg .Sprintf ("\u0053l\u0069\u0064\u0065\u005b\u0025\u0064]",_caf ));
|
|
_gde !=nil {return _gde ;};};for _effg ,_abd :=range _egef ._add {if _ecbe :=_abd .ValidateWithPath (_gg .Sprintf ("\u0053l\u0069d\u0065\u004d\u0061\u0073\u0074\u0065\u0072\u005b\u0025\u0064\u005d",_effg ));_ecbe !=nil {return _ecbe ;};};for _ccf ,_geb :=range _egef ._gb {if _cgcg :=_geb .ValidateWithPath (_gg .Sprintf ("\u0053l\u0069d\u0065\u004c\u0061\u0079\u006f\u0075\u0074\u005b\u0025\u0064\u005d",_ccf ));
|
|
_cgcg !=nil {return _cgcg ;};};return nil ;};
|
|
|
|
// X returns the inner wrapped XML type.
|
|
func (_ffc *Presentation )X ()*_db .Presentation {return _ffc ._gea };func (_cagf *Presentation )save (_ebd _ee .Writer ,_agad bool )error {const _fffb ="\u0050\u0072\u0065\u0073en\u0074\u0061\u0074\u0069\u006f\u006e\u003a\u0070\u002e\u0053\u0061\u0076\u0065";
|
|
if _ddc :=_cagf ._gea .Validate ();_ddc !=nil {_ec .Log .Debug ("\u0076\u0061\u006c\u0069\u0064\u0061\u0074\u0069\u006f\u006e\u0020\u0065\u0072\u0072\u006fr\u0020i\u006e\u0020\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0073",_ddc );
|
|
};if !_dd .GetLicenseKey ().IsLicensed ()&&!_gaf {_gg .Println ("\u0055\u006e\u006ci\u0063\u0065\u006e\u0073e\u0064\u0020\u0076\u0065\u0072\u0073\u0069o\u006e\u0020\u006f\u0066\u0020\u0055\u006e\u0069\u004f\u0066\u0066\u0069\u0063\u0065");_gg .Println ("\u002d\u0020\u0047e\u0074\u0020\u0061\u0020\u0074\u0072\u0069\u0061\u006c\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0020\u006f\u006e\u0020\u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002fu\u006e\u0069\u0064\u006f\u0063\u002e\u0069\u006f");
|
|
return _cg .New ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065\u0020\u006ci\u0063\u0065\u006e\u0073\u0065\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0064");};if len (_cagf ._bbd )==0{_afa ,_fdb :=_dd .GenRefId ("\u0070\u0077");if _fdb !=nil {_ec .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fdb );
|
|
return _fdb ;};_cagf ._bbd =_afa ;};if _ddcf :=_dd .Track (_cagf ._bbd ,_fffb );_ddcf !=nil {_ec .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_ddcf );return _ddcf ;};if _agad {_cagf .ContentTypes .RemoveOverride ("\u0061\u0070\u0070\u006c\u0069\u0063\u0061t\u0069\u006f\u006e\u002f\u0076\u006e\u0064\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072m\u0061\u0074\u0073\u002d\u006ff\u0066\u0069\u0063\u0065\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u002e\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e\u006d\u006c\u002e\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e\u002e\u006d\u0061\u0069\u006e\u002b\u0078\u006d\u006c");
|
|
_cagf .ContentTypes .EnsureOverride ("/\u0070\u0070\u0074\u002fpr\u0065s\u0065\u006e\u0074\u0061\u0074i\u006f\u006e\u002e\u0078\u006d\u006c","\u0061\u0070pl\u0069\u0063\u0061\u0074\u0069\u006f\u006e\u002f\u0076\u006e\u0064\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066o\u0072\u006d\u0061\u0074s\u002d\u006f\u0066\u0066ic\u0065\u0064o\u0063u\u006d\u0065\u006e\u0074\u002e\u0070r\u0065\u0073\u0065n\u0074\u0061t\u0069\u006f\u006e\u006d\u006c\u002e\u0074\u0065\u006d\u0070\u006c\u0061\u0074\u0065.\u006d\u0061\u0069\u006e\u002b\u0078\u006d\u006c");
|
|
}else {_cagf .ContentTypes .RemoveOverride ("\u0061\u0070pl\u0069\u0063\u0061\u0074\u0069\u006f\u006e\u002f\u0076\u006e\u0064\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066o\u0072\u006d\u0061\u0074s\u002d\u006f\u0066\u0066ic\u0065\u0064o\u0063u\u006d\u0065\u006e\u0074\u002e\u0070r\u0065\u0073\u0065n\u0074\u0061t\u0069\u006f\u006e\u006d\u006c\u002e\u0074\u0065\u006d\u0070\u006c\u0061\u0074\u0065.\u006d\u0061\u0069\u006e\u002b\u0078\u006d\u006c");
|
|
_cagf .ContentTypes .EnsureOverride ("/\u0070\u0070\u0074\u002fpr\u0065s\u0065\u006e\u0074\u0061\u0074i\u006f\u006e\u002e\u0078\u006d\u006c","\u0061\u0070\u0070\u006c\u0069\u0063\u0061t\u0069\u006f\u006e\u002f\u0076\u006e\u0064\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072m\u0061\u0074\u0073\u002d\u006ff\u0066\u0069\u0063\u0065\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u002e\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e\u006d\u006c\u002e\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e\u002e\u006d\u0061\u0069\u006e\u002b\u0078\u006d\u006c");
|
|
};_fcg :=_gf .DocTypePresentation ;_cddc :=_eb .NewWriter (_ebd );defer _cddc .Close ();if _abe :=_e .MarshalXML (_cddc ,_gf .BaseRelsFilename ,_cagf .Rels .X ());_abe !=nil {return _abe ;};if _aeg :=_e .MarshalXMLByType (_cddc ,_fcg ,_gf .ExtendedPropertiesType ,_cagf .AppProperties .X ());
|
|
_aeg !=nil {return _aeg ;};if _ggg :=_e .MarshalXMLByType (_cddc ,_fcg ,_gf .CorePropertiesType ,_cagf .CoreProperties .X ());_ggg !=nil {return _ggg ;};if _cac :=_e .MarshalXMLByType (_cddc ,_fcg ,_gf .PresentationPropertiesType ,_cagf ._edbe .X ());_cac !=nil {return _cac ;
|
|
};if _fdbf :=_e .MarshalXMLByType (_cddc ,_fcg ,_gf .ViewPropertiesType ,_cagf ._gfe .X ());_fdbf !=nil {return _fdbf ;};if _eaa :=_e .MarshalXMLByType (_cddc ,_fcg ,_gf .TableStylesType ,_cagf ._gdd .X ());_eaa !=nil {return _eaa ;};if _cagf .CustomProperties .X ()!=nil {if _eac :=_e .MarshalXMLByType (_cddc ,_fcg ,_gf .CustomPropertiesType ,_cagf .CustomProperties .X ());
|
|
_eac !=nil {return _eac ;};};if _cagf .Thumbnail !=nil {_cadb ,_bce :=_cddc .Create ("\u0064\u006f\u0063Pr\u006f\u0070\u0073\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c\u002e\u006a\u0070\u0065\u0067");if _bce !=nil {return _bce ;};if _fgee :=_dae .Encode (_cadb ,_cagf .Thumbnail ,nil );
|
|
_fgee !=nil {return _fgee ;};};_ddg :=_gf .AbsoluteFilename (_fcg ,_gf .OfficeDocumentType ,0);if _fbf :=_e .MarshalXML (_cddc ,_ddg ,_cagf ._gea );_fbf !=nil {return _fbf ;};if _gag :=_e .MarshalXML (_cddc ,_e .RelationsPathFor (_ddg ),_cagf ._babf .X ());
|
|
_gag !=nil {return _gag ;};for _gbc ,_cee :=range _cagf ._aab {_bbeb :=_gf .AbsoluteFilename (_gf .DocTypePresentation ,_gf .SlideType ,_gbc +1);_e .MarshalXML (_cddc ,_bbeb ,_cee );if !_cagf ._fcd [_gbc ].IsEmpty (){_cegb :=_e .RelationsPathFor (_bbeb );
|
|
_e .MarshalXML (_cddc ,_cegb ,_cagf ._fcd [_gbc ].X ());};};for _edf ,_dfb :=range _cagf ._add {_bedd :=_gf .AbsoluteFilename (_gf .DocTypePresentation ,_gf .SlideMasterType ,_edf +1);_e .MarshalXML (_cddc ,_bedd ,_dfb );if !_cagf ._agd [_edf ].IsEmpty (){_ecf :=_e .RelationsPathFor (_bedd );
|
|
_e .MarshalXML (_cddc ,_ecf ,_cagf ._agd [_edf ].X ());};};for _fce ,_gfd :=range _cagf ._gb {_gdbg :=_gf .AbsoluteFilename (_gf .DocTypePresentation ,_gf .SlideLayoutType ,_fce +1);_e .MarshalXML (_cddc ,_gdbg ,_gfd );if !_cagf ._adda [_fce ].IsEmpty (){_dea :=_e .RelationsPathFor (_gdbg );
|
|
_e .MarshalXML (_cddc ,_dea ,_cagf ._adda [_fce ].X ());};};for _cda ,_fbc :=range _cagf ._dbb {_eeg :=_gf .AbsoluteFilename (_gf .DocTypePresentation ,_gf .ThemeType ,_cda +1);_e .MarshalXML (_cddc ,_eeg ,_fbc );if !_cagf ._gec [_cda ].IsEmpty (){_daa :=_e .RelationsPathFor (_eeg );
|
|
_e .MarshalXML (_cddc ,_daa ,_cagf ._gec [_cda ].X ());};};for _dgad ,_cdb :=range _cagf ._afe {_ccb :=_gf .AbsoluteFilename (_fcg ,_gf .ChartType ,_dgad +1);_e .MarshalXML (_cddc ,_ccb ,_cdb );};for _dff ,_ada :=range _cagf ._ggfd {_fcee :=_gf .AbsoluteFilename (_fcg ,_gf .HandoutMasterType ,_dff +1);
|
|
_e .MarshalXML (_cddc ,_fcee ,_ada );};for _ebgc ,_cbe :=range _cagf ._cbcg {_dbbd :=_gf .AbsoluteFilename (_fcg ,_gf .NotesMasterType ,_ebgc +1);_e .MarshalXML (_cddc ,_dbbd ,_cbe );};for _bcb ,_ecea :=range _cagf ._bca {_bgb :=_gf .AbsoluteFilename (_fcg ,_gf .CustomXMLType ,_bcb +1);
|
|
_e .MarshalXML (_cddc ,_bgb ,_ecea );};for _edag ,_eee :=range _cagf .Images {_dded :=_edag +1;if _bcc ,_bbdg :=_b .StringToNumbers (_eee .Target ());_bbdg &&_dded !=_bcc {_dded =_bcc ;};if _dafc :=_fd .AddImageToZip (_cddc ,_eee ,_dded ,_gf .DocTypePresentation );
|
|
_dafc !=nil {return _dafc ;};};_cagf .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_cagf .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");
|
|
_cagf .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_cagf .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");if _daaf :=_e .MarshalXML (_cddc ,_gf .ContentTypesFilename ,_cagf .ContentTypes .X ());
|
|
_daaf !=nil {return _daaf ;};if _egcg :=_cagf .WriteExtraFiles (_cddc );_egcg !=nil {return _egcg ;};return nil ;};
|
|
|
|
// ClearAll completely clears a placeholder. To be useable, at least one
|
|
// paragraph must be added after ClearAll via AddParagraph.
|
|
func (_bbcc PlaceHolder )ClearAll (){_bbcc ._eff .SpPr =_ggb .NewCT_ShapeProperties ();_bbcc ._eff .TxBody =_ggb .NewCT_TextBody ();_bbcc ._eff .TxBody .LstStyle =_ggb .NewCT_TextListStyle ();};
|
|
|
|
// GetChartSpaceByRelId returns a *crt.ChartSpace with the associated relation ID in the
|
|
// slide.
|
|
func (_bgbf *Slide )GetChartSpaceByRelId (relId string )*_f .ChartSpace {_gece :=_bgbf .getSlideRels ();if (_gece ==_fd .Relationships {}){return nil ;};_egbg :=_gece .GetTargetByRelId (relId );for _ ,_edgg :=range _bgbf ._caab ._afe {if _egbg ==_edgg .Target (){return _edgg ._fc ;
|
|
};};return nil ;};type sort2d []*TextItem ;
|
|
|
|
// PlaceHolders returns all of the content place holders within a given slide.
|
|
func (_fagd Slide )PlaceHolders ()[]PlaceHolder {_eegc :=[]PlaceHolder {};for _ ,_aef :=range _fagd ._bgd .CSld .SpTree .Choice {for _ ,_gcde :=range _aef .Sp {if _gcde .NvSpPr !=nil &&_gcde .NvSpPr .NvPr !=nil &&_gcde .NvSpPr .NvPr .Ph !=nil {_eegc =append (_eegc ,PlaceHolder {_gcde ,_fagd ._bgd });
|
|
};};};return _eegc ;};
|
|
|
|
// Read reads a document from an io.Reader.
|
|
func Read (r _ee .ReaderAt ,size int64 )(*Presentation ,error ){const _fae ="\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e:\u0052\u0065\u0061\u0064";if !_dd .GetLicenseKey ().IsLicensed ()&&!_gaf {_gg .Println ("\u0055\u006e\u006ci\u0063\u0065\u006e\u0073e\u0064\u0020\u0076\u0065\u0072\u0073\u0069o\u006e\u0020\u006f\u0066\u0020\u0055\u006e\u0069\u004f\u0066\u0066\u0069\u0063\u0065");
|
|
_gg .Println ("\u002d\u0020\u0047e\u0074\u0020\u0061\u0020\u0074\u0072\u0069\u0061\u006c\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0020\u006f\u006e\u0020\u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002fu\u006e\u0069\u0064\u006f\u0063\u002e\u0069\u006f");
|
|
return nil ,_cg .New ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065\u0020\u006ci\u0063\u0065\u006e\u0073\u0065\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0064");};_ddac :=_bbaa ();_gddg ,_gfge :=_dd .GenRefId ("\u0070\u0072");if _gfge !=nil {_ec .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_gfge );
|
|
return nil ,_gfge ;};_ddac ._bbd =_gddg ;if _fabg :=_dd .Track (_ddac ._bbd ,_fae );_fabg !=nil {_ec .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fabg );return nil ,_fabg ;};_bee ,_gfge :=_ae .TempDir ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065-\u0070\u0070\u0074\u0078");
|
|
if _gfge !=nil {return nil ,_gfge ;};_ddac .TmpPath =_bee ;_dccb ,_gfge :=_eb .NewReader (r ,size );if _gfge !=nil {return nil ,_gg .Errorf ("\u0070a\u0072s\u0069\u006e\u0067\u0020\u007a\u0069\u0070\u003a\u0020\u0025\u0073",_gfge );};_fgba :=[]*_eb .File {};
|
|
_fgba =append (_fgba ,_dccb .File ...);_daae :=false ;for _ ,_edgd :=range _fgba {if _edgd .FileHeader .Name =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_daae =true ;break ;};};if _daae {_ddac .CreateCustomProperties ();
|
|
};_fbdd :=_e .DecodeMap {};_fbdd .SetOnNewRelationshipFunc (_ddac .onNewRelationship );_fbdd .AddTarget (_gf .ContentTypesFilename ,_ddac .ContentTypes .X (),"",0);_fbdd .AddTarget (_gf .BaseRelsFilename ,_ddac .Rels .X (),"",0);if _efeg :=_fbdd .Decode (_fgba );
|
|
_efeg !=nil {return nil ,_efeg ;};for _ ,_accb :=range _fgba {if _accb ==nil {continue ;};if _abf :=_ddac .AddExtraFileFromZip (_accb );_abf !=nil {return nil ,_abf ;};};if _daae {_cacc :=false ;for _ ,_bea :=range _ddac .Rels .X ().Relationship {if _bea .TargetAttr =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_cacc =true ;
|
|
break ;};};if !_cacc {_ddac .AddCustomRelationships ();};};return _ddac ,nil ;};func _bbaa ()*Presentation {_bdc :=&Presentation {_gea :_db .NewPresentation ()};_bdc ._gea .SldIdLst =_db .NewCT_SlideIdList ();_bdc ._gea .ConformanceAttr =_ga .ST_ConformanceClassTransitional ;
|
|
_bdc .AppProperties =_fd .NewAppProperties ();_bdc .CoreProperties =_fd .NewCoreProperties ();_bdc ._gdd =_fd .NewTableStyles ();_bdc .ContentTypes =_fd .NewContentTypes ();_bdc .Rels =_fd .NewRelationships ();_bdc ._babf =_fd .NewRelationships ();_bdc ._edbe =NewPresentationProperties ();
|
|
_bdc ._gfe =NewViewProperties ();_bdc ._eaf =map[string ]string {};return _bdc ;};func (_ecfc *Presentation )onNewRelationship (_bfdc *_e .DecodeMap ,_ebgf ,_addab string ,_gfbe []*_eb .File ,_bbaf *_a .Relationship ,_fde _e .Target )error {_bag :=_gf .DocTypePresentation ;
|
|
switch _addab {case _gf .OfficeDocumentType :_ecfc ._gea =_db .NewPresentation ();_bfdc .AddTarget (_ebgf ,_ecfc ._gea ,_addab ,0);_bfdc .AddTarget (_e .RelationsPathFor (_ebgf ),_ecfc ._babf .X (),_addab ,0);_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,0);
|
|
case _gf .CorePropertiesType :_bfdc .AddTarget (_ebgf ,_ecfc .CoreProperties .X (),_addab ,0);_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,0);case _gf .CustomPropertiesType :_bfdc .AddTarget (_ebgf ,_ecfc .CustomProperties .X (),_addab ,0);
|
|
_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,0);case _gf .PresentationPropertiesType :_bfdc .AddTarget (_ebgf ,_ecfc ._edbe .X (),_addab ,0);_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,0);case _gf .ViewPropertiesType :_bfdc .AddTarget (_ebgf ,_ecfc ._gfe .X (),_addab ,0);
|
|
_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,0);case _gf .TableStylesType :_bfdc .AddTarget (_ebgf ,_ecfc ._gdd .X (),_addab ,0);_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,0);case _gf .HyperLinkType :_gbcb :=_ggb .NewCT_Hyperlink ();
|
|
_fbcd :=uint32 (len (_ecfc ._ddba ));_bfdc .AddTarget (_ebgf ,_gbcb ,_addab ,_fbcd );_ecfc ._ddba =append (_ecfc ._ddba ,_gbcb );case _gf .CustomXMLType :_fdbe :=&_gf .XSDAny {};_aae :=uint32 (len (_ecfc ._bca ));_bfdc .AddTarget (_ebgf ,_fdbe ,_addab ,_aae );
|
|
_ecfc ._bca =append (_ecfc ._bca ,_fdbe );_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,len (_ecfc ._bca ));case _gf .ChartType :_adb :=chart {_fc :_f .NewChartSpace ()};_fafd :=uint32 (len (_ecfc ._afe ));_bfdc .AddTarget (_ebgf ,_adb ._fc ,_addab ,_fafd );
|
|
_ecfc ._afe =append (_ecfc ._afe ,&_adb );_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,len (_ecfc ._afe ));_adb ._ag =_bbaf .TargetAttr ;case _gf .HandoutMasterType :_befb :=_db .NewHandoutMaster ();_bdf :=uint32 (len (_ecfc ._ggfd ));
|
|
_bfdc .AddTarget (_ebgf ,_befb ,_addab ,_bdf );_ecfc ._ggfd =append (_ecfc ._ggfd ,_befb );_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,len (_ecfc ._ggfd ));case _gf .NotesMasterType :_gafa :=_db .NewNotesMaster ();_dda :=uint32 (len (_ecfc ._cbcg ));
|
|
_bfdc .AddTarget (_ebgf ,_gafa ,_addab ,_dda );_ecfc ._cbcg =append (_ecfc ._cbcg ,_gafa );_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,len (_ecfc ._cbcg ));case _gf .ExtendedPropertiesType :_bfdc .AddTarget (_ebgf ,_ecfc .AppProperties .X (),_addab ,0);
|
|
_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,0);case _gf .SlideType :if _fea ,_ccfb :=_b .StringToNumbers (_ebgf );_ccfb {if len (_ecfc ._aab )< _fea {_ebf :=_db .NewSld ();_ecfc ._aab =append (_ecfc ._aab ,_ebf );_bfdc .AddTarget (_ebgf ,_ebf ,_addab ,uint32 (_fea ));
|
|
_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,_fea );_cfbd :=_fd .NewRelationships ();_bfdc .AddTarget (_e .RelationsPathFor (_ebgf ),_cfbd .X (),_addab ,0);if len (_ecfc ._fcd )>=_fea {_ecfc ._fcd [_fea -1]=_cfbd ;}else {_ecfc ._fcd =append (_ecfc ._fcd ,_cfbd );
|
|
};};};case _gf .SlideMasterType :_fece :=_db .NewSldMaster ();if !_bfdc .AddTarget (_ebgf ,_fece ,_addab ,uint32 (len (_ecfc ._add )+1)){return nil ;};_ecfc ._add =append (_ecfc ._add ,_fece );_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,len (_ecfc ._add ));
|
|
_cbb :=_fd .NewRelationships ();_bfdc .AddTarget (_e .RelationsPathFor (_ebgf ),_cbb .X (),_addab ,0);_ecfc ._agd =append (_ecfc ._agd ,_cbb );case _gf .SlideLayoutType :if _fcc ,_gfg :=_b .StringToNumbers (_ebgf );_gfg {_fbdg :=_db .NewSldLayout ();if !_bfdc .AddTarget (_ebgf ,_fbdg ,_addab ,uint32 (_fcc )){return nil ;
|
|
};for _accd :=len (_ecfc ._gb );_accd < _fcc ;_accd ++{_ecfc ._gb =append (_ecfc ._gb ,_db .NewSldLayout ());};_ecfc ._gb [_fcc -1]=_fbdg ;_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,_fcc );_gabe :=_fd .NewRelationships ();_bfdc .AddTarget (_e .RelationsPathFor (_ebgf ),_gabe .X (),_addab ,0);
|
|
_ecfc ._adda =append (_ecfc ._adda ,_gabe );};case _gf .ThumbnailType :for _accc ,_cdfg :=range _gfbe {if _cdfg ==nil {continue ;};if _cdfg .Name ==_ebgf {_fca ,_edc :=_cdfg .Open ();if _edc !=nil {return _gg .Errorf ("e\u0072\u0072\u006f\u0072\u0020\u0072e\u0061\u0064\u0069\u006e\u0067\u0020\u0074\u0068\u0075m\u0062\u006e\u0061i\u006c:\u0020\u0025\u0073",_edc );
|
|
};_ecfc .Thumbnail ,_ ,_edc =_ba .Decode (_fca );_fca .Close ();if _edc !=nil {return _gg .Errorf ("\u0065\u0072\u0072\u006fr\u0020\u0064\u0065\u0063\u006f\u0064\u0069\u006e\u0067\u0020t\u0068u\u006d\u0062\u006e\u0061\u0069\u006c\u003a \u0025\u0073",_edc );
|
|
};_gfbe [_accc ]=nil ;};};case _gf .ThemeType :_ffd :=_ggb .NewTheme ();if !_bfdc .AddTarget (_ebgf ,_ffd ,_addab ,uint32 (len (_ecfc ._dbb )+1)){return nil ;};_ecfc ._dbb =append (_ecfc ._dbb ,_ffd );_bbaf .TargetAttr =_gf .RelativeFilename (_bag ,_fde .Typ ,_addab ,len (_ecfc ._dbb ));
|
|
_dedg :=_fd .NewRelationships ();_bfdc .AddTarget (_e .RelationsPathFor (_ebgf ),_dedg .X (),_addab ,0);_ecfc ._gec =append (_ecfc ._gec ,_dedg );case _gf .ImageType :_ebgf =_ff .Clean (_ebgf );if _gbe ,_fac :=_ecfc ._eaf [_ebgf ];_fac {_bbaf .TargetAttr =_gbe ;
|
|
return nil ;};_gce :="";for _fab ,_cdfa :=range _gfbe {if _cdfa ==nil {continue ;};if _cdfa .Name ==_ebgf {_aeba ,_febd :=_e .ExtractToDiskTmp (_cdfa ,_ecfc .TmpPath );if _febd !=nil {return _febd ;};_dffd ,_febd :=_fd .ImageFromStorage (_aeba );if _febd !=nil {return _febd ;
|
|
};_gce =_dffd .Format ;_cgga :=_fd .MakeImageRef (_dffd ,&_ecfc .DocBase ,_ecfc ._babf );_cgga .SetTarget ("\u002e\u002e\u002f"+_ebgf [4:]);_ecfc .Images =append (_ecfc .Images ,_cgga );_gfbe [_fab ]=nil ;_ceed :=len (_ecfc .Images );if _cddg ,_fba :=_b .StringToNumbers (_ebgf );
|
|
_fba {_ceed =_cddg ;};_bfdc .RecordIndex (_ebgf ,_ceed );break ;};};_ecee :=_bfdc .IndexFor (_ebgf );_bbaf .TargetAttr =_gf .RelativeImageFilename (_bag ,_fde .Typ ,_addab ,_ecee ,_gce );_ecfc ._eaf [_ebgf ]=_bbaf .TargetAttr ;default:_ec .Log .Debug ("\u0075\u006e\u0073\u0075\u0070p\u006f\u0072\u0074\u0065\u0064\u0020\u0072\u0065\u006c\u0061\u0074\u0069\u006fn\u0073\u0068\u0069\u0070\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0073\u0020\u0074\u0067\u0074\u003a\u0020\u0025\u0073",_addab ,_ebgf );
|
|
};return nil ;};
|
|
|
|
// Properties returns the properties of the TextBox.
|
|
func (_dgcg TextBox )Properties ()_ea .ShapeProperties {if _dgcg ._agcag .SpPr ==nil {_dgcg ._agcag .SpPr =_ggb .NewCT_ShapeProperties ();};return _ea .MakeShapeProperties (_dgcg ._agcag .SpPr );};
|
|
|
|
// GetLayoutByName retrieves a slide layout given a layout name.
|
|
func (_edd *Presentation )GetLayoutByName (name string )(SlideLayout ,error ){for _ ,_ceea :=range _edd ._gb {if _ceea .CSld .NameAttr !=nil &&name ==*_ceea .CSld .NameAttr {return SlideLayout {_ceea },nil ;};};return SlideLayout {},_cg .New ("\u0075\u006eab\u006c\u0065\u0020t\u006f\u0020\u0066\u0069nd \u006cay\u006f\u0075\u0074\u0020\u0077\u0069\u0074h \u0074\u0068\u0061\u0074\u0020\u006e\u0061m\u0065");
|
|
};
|
|
|
|
// SaveToFileAsTemplate writes the Presentation out to a file as a template.
|
|
func (_gfb *Presentation )SaveToFileAsTemplate (path string )error {return _gfb .saveToFile (path ,true )};
|
|
|
|
// LastViewAttr returns the LastViewAttr property.
|
|
func (_cegbd ViewProperties )LastViewAttr ()_db .ST_ViewType {return _cegbd ._gbb .LastViewAttr };
|
|
|
|
// ExtLst returns the ExtLst property.
|
|
func (_ccc ViewProperties )ExtLst ()*_db .CT_ExtensionList {return _ccc ._gbb .ExtLst };
|
|
|
|
// AddDefaultSlideWithLayout tries to replicate what PowerPoint does when
|
|
// inserting a slide with a new style by clearing placeholder content and removing
|
|
// some placeholders. Use AddSlideWithLayout if you need more control.
|
|
func (_fgd *Presentation )AddDefaultSlideWithLayout (l SlideLayout )(Slide ,error ){_cgaf ,_bbca :=_fgd .AddSlideWithLayout (l );for _ ,_fafc :=range _cgaf .PlaceHolders (){_fafc .Clear ();switch _fafc .Type (){case _db .ST_PlaceholderTypeFtr ,_db .ST_PlaceholderTypeDt ,_db .ST_PlaceholderTypeSldNum :_fafc .Remove ();
|
|
};};return _cgaf ,_bbca ;};type chart struct{_fc *_f .ChartSpace ;_cgc string ;_ag string ;};var _gaf =false ;
|
|
|
|
// NormalViewPr returns the NormalViewPr property.
|
|
func (_bfb ViewProperties )NormalViewPr ()*_db .CT_NormalViewProperties {return _bfb ._gbb .NormalViewPr };
|
|
|
|
// Index returns the placeholder index
|
|
func (_ace PlaceHolder )Index ()uint32 {if _ace ._eff .NvSpPr .NvPr .Ph .IdxAttr ==nil {return 0;};return *_ace ._eff .NvSpPr .NvPr .Ph .IdxAttr ;};func _fg (_fge *Presentation ,_cfb *_db .CT_Shape ,_gd *_db .CT_GraphicalObjectFrame ,_ffb *TableInfo ,_bab *_ggb .CT_Transform2D ,_fff int ,_dba []rectangle ,_bfe []*_ggb .CT_TextParagraph )[]*TextItem {_cce :=[]*TextItem {};
|
|
var _cag ,_egc ,_eca ,_gcg ,_gdf ,_dafd int64 ;_fgg :=_bab ==nil ;_ffg :=0;for _ ,_ddb :=range _bfe {for _ ,_dg :=range _ddb .EG_TextRun {if _dfc :=_dg .R ;_dfc !=nil {if !_fgg {if _bab .Off !=nil {if _cdd :=_bab .Ext ;_cdd !=nil {_gdf ,_dafd =_cdd .CxAttr ,_cdd .CyAttr ;
|
|
};if _bbe :=_bab .Off .XAttr .ST_CoordinateUnqualified ;_bbe !=nil {_cag =*_bbe ;_egc =_cag +_gdf ;_fgg =true ;};if _ac :=_bab .Off .YAttr .ST_CoordinateUnqualified ;_ac !=nil {_eca =*_ac ;_gcg =_eca +_dafd ;_fgg =true ;};};};_bbb :=append ([]rectangle {},_dba ...);
|
|
_bbb =append (_bbb ,rectangle {_dc :_cag ,_fad :_egc ,_ge :_eca ,_bcf :_gcg });_cce =append (_cce ,&TextItem {Presentation :_fge ,Shape :_cfb ,GraphicFrame :_gd ,TableInfo :_ffb ,Paragraph :_ddb ,Run :_dfc ,Text :_dfc .T ,_aa :_bbb ,_dbc :_fff ,_eea :_ffg });
|
|
_ffg ++;};};};return _cce ;};
|
|
|
|
// SlideText is an array of extracted text items which has some methods for representing extracted text from a slide.
|
|
type SlideText struct{Items []*TextItem ;};
|
|
|
|
// RemoveSlide removes a slide from a presentation.
|
|
func (_ddf *Presentation )RemoveSlide (s Slide )error {_edga :=false ;_bbfe :=0;for _ggbadb ,_efff :=range _ddf ._aab {if _efff ==s ._bgd {if _ddf ._gea .SldIdLst .SldId [_ggbadb ]!=s ._ggaf {return _cg .New ("i\u006e\u0063\u006f\u006e\u0073\u0069s\u0074\u0065\u006e\u0063\u0079\u0020i\u006e\u0020\u0073\u006c\u0069\u0064\u0065s\u0020\u0061\u006e\u0064\u0020\u0049\u0044\u0020\u006c\u0069s\u0074");
|
|
};copy (_ddf ._aab [_ggbadb :],_ddf ._aab [_ggbadb +1:]);_ddf ._aab =_ddf ._aab [0:len (_ddf ._aab )-1];copy (_ddf ._fcd [_ggbadb :],_ddf ._fcd [_ggbadb +1:]);_ddf ._fcd =_ddf ._fcd [0:len (_ddf ._fcd )-1];copy (_ddf ._gea .SldIdLst .SldId [_ggbadb :],_ddf ._gea .SldIdLst .SldId [_ggbadb +1:]);
|
|
_ddf ._gea .SldIdLst .SldId =_ddf ._gea .SldIdLst .SldId [0:len (_ddf ._gea .SldIdLst .SldId )-1];_edga =true ;_bbfe =_ggbadb ;};};if !_edga {return _cg .New ("u\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0073li\u0064\u0065");
|
|
};_eab :=_gf .AbsoluteFilename (_gf .DocTypePresentation ,_gf .SlideType ,0);return _ddf .ContentTypes .RemoveOverrideByIndex (_eab ,_bbfe );};
|
|
|
|
// TextItem is used for keeping text with references to a paragraph and run, a shape or a table, a row and a cell where it is located.
|
|
type TextItem struct{Text string ;Presentation *Presentation ;Shape *_db .CT_Shape ;GraphicFrame *_db .CT_GraphicalObjectFrame ;Paragraph *_ggb .CT_TextParagraph ;Run *_ggb .CT_RegularTextRun ;TableInfo *TableInfo ;_aa []rectangle ;_dbc int ;_eea int ;
|
|
};
|
|
|
|
// OpenTemplate opens a template file.
|
|
func OpenTemplate (fn string )(*Presentation ,error ){_ead ,_becd :=Open (fn );if _becd !=nil {return nil ,_becd ;};return _ead ,nil ;};
|
|
|
|
// Name returns the name of the slide layout.
|
|
func (_daga SlideLayout )Name ()string {if _daga ._gecf .CSld !=nil &&_daga ._gecf .CSld .NameAttr !=nil {return *_daga ._gecf .CSld .NameAttr ;};return "";};
|
|
|
|
// ViewProperties contains presentation specific properties.
|
|
type ViewProperties struct{_gbb *_db .ViewPr };
|
|
|
|
// SlideLayout is a layout from which slides can be created.
|
|
type SlideLayout struct{_gecf *_db .SldLayout };
|
|
|
|
// NewPresentationProperties constructs a new PresentationProperties.
|
|
func NewPresentationProperties ()PresentationProperties {return PresentationProperties {_gge :_db .NewPresentationPr ()};};
|
|
|
|
// PresentationProperties contains document specific properties.
|
|
type PresentationProperties struct{_gge *_db .PresentationPr };
|
|
|
|
// AddTable adds a new table to a placeholder.
|
|
func (_dgf PlaceHolder )AddTable ()*_fd .Table {_dgf .Clear ();_cfbb :=_db .NewCT_GroupShapeChoice ();_dgf ._bad .CSld .SpTree .Choice =append (_dgf ._bad .CSld .SpTree .Choice ,_cfbb );_def :=_db .NewCT_GraphicalObjectFrame ();_cfbb .GraphicFrame =append (_cfbb .GraphicFrame ,_def );
|
|
_def .Xfrm .Off =_ggb .NewCT_Point2D ();_bde :=int64 (1);_def .Xfrm .Off .XAttr =_ggb .ST_Coordinate {ST_CoordinateUnqualified :&_bde };_def .Xfrm .Off .YAttr =_ggb .ST_Coordinate {ST_CoordinateUnqualified :&_bde };_cae :=_def .Graphic .CT_GraphicalObject .GraphicData ;
|
|
_cae .UriAttr ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002eo\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073.\u006f\u0072\u0067\u002f\u0064\u0072\u0061\u0077\u0069\u006e\u0067\u006dl/\u0032\u0030\u0030\u0036\u002f\u0074\u0061\u0062\u006c\u0065";
|
|
_eeb :=_fd .NewTableWithXfrm (_def .Xfrm );_cae .Any =append (_cae .Any ,_eeb .X ());return _eeb ;};
|
|
|
|
// AddSlideWithLayout adds a new slide with content copied from a layout. Normally you should
|
|
// use AddDefaultSlideWithLayout as it will do some post processing similar to PowerPoint to
|
|
// clear place holder text, etc.
|
|
func (_ggbad *Presentation )AddSlideWithLayout (l SlideLayout )(Slide ,error ){_acf :=_db .NewCT_SlideIdListEntry ();_acf .IdAttr =256;for _ ,_fdf :=range _ggbad ._gea .SldIdLst .SldId {if _fdf .IdAttr >=_acf .IdAttr {_acf .IdAttr =_fdf .IdAttr +1;};};
|
|
_ggbad ._gea .SldIdLst .SldId =append (_ggbad ._gea .SldIdLst .SldId ,_acf );_dgc :=_db .NewSld ();_eba :=_fa .Buffer {};_dgb :=_ed .NewEncoder (&_eba );_dcb :=_ed .StartElement {Name :_ed .Name {Local :"\u0073\u006c\u0069d\u0065"}};_dcb .Attr =append (_dcb .Attr ,_ed .Attr {Name :_ed .Name {Local :"\u0078\u006d\u006cn\u0073"},Value :"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078m\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073\u002eo\u0072\u0067\u002f\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069o\u006e\u006d\u006c\u002f\u0032\u00300\u0036\u002f\u006da\u0069\u006e"});
|
|
_dcb .Attr =append (_dcb .Attr ,_ed .Attr {Name :_ed .Name {Local :"\u0078m\u006c\u006e\u0073\u003a\u0061"},Value :"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065m\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078m\u006cf\u006f\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0064\u0072\u0061\u0077\u0069\u006e\u0067m\u006c\u002f\u0032\u0030\u0030\u0036\u002f\u006d\u0061\u0069\u006e"});
|
|
_dcb .Attr =append (_dcb .Attr ,_ed .Attr {Name :_ed .Name {Local :"\u0078m\u006c\u006e\u0073\u003a\u0070"},Value :"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078m\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073\u002eo\u0072\u0067\u002f\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069o\u006e\u006d\u006c\u002f\u0032\u00300\u0036\u002f\u006da\u0069\u006e"});
|
|
_dcb .Attr =append (_dcb .Attr ,_ed .Attr {Name :_ed .Name {Local :"\u0078m\u006c\u006e\u0073\u003a\u0072"},Value :"\u0068\u0074\u0074\u0070\u003a\u002f/\u0073\u0063\u0068\u0065\u006da\u0073\u002e\u006f\u0070\u0065\u006ex\u006d\u006c\u0066\u006f\u0072m\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u006f\u0066\u0066\u0069c\u0065\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0032\u0030\u0030\u0036\u002fr\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073h\u0069\u0070\u0073"});
|
|
_dcb .Attr =append (_dcb .Attr ,_ed .Attr {Name :_ed .Name {Local :"\u0078\u006d\u006c\u006e\u0073\u003a\u0073\u0068"},Value :"\u0068\u0074\u0074\u0070\u003a/\u002f\u0073\u0063\u0068\u0065m\u0061s\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067/\u006f\u0066\u0066\u0069\u0063\u0065\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0032\u0030\u0030\u0036\u002f\u0073\u0068\u0061\u0072e\u0064\u0054\u0079\u0070\u0065\u0073"});
|
|
_dcb .Attr =append (_dcb .Attr ,_ed .Attr {Name :_ed .Name {Local :"\u0078m\u006c\u006e\u0073\u003a\u0078\u006dl"},Value :"\u0068\u0074tp\u003a\u002f\u002fw\u0077\u0077\u002e\u00773.o\u0072g/\u0058\u004d\u004c\u002f\u0031\u0039\u00398/\u006e\u0061\u006d\u0065\u0073\u0070\u0061c\u0065"});
|
|
if _bbef :=l ._gecf .CSld .MarshalXML (_dgb ,_dcb );_bbef !=nil {return Slide {},_bbef ;};_dgb .Flush ();_gbd :=_ed .NewDecoder (&_eba );_dgc .CSld =_db .NewCT_CommonSlideData ();if _ffbbc :=_gbd .Decode (_dgc .CSld );_ffbbc !=nil {return Slide {},_ffbbc ;
|
|
};_dgc .CSld .NameAttr =nil ;_dgc .CSld .SpTree .Choice =_cgce (_dgc .CSld .SpTree .Choice );_ggbad ._aab =append (_ggbad ._aab ,_dgc );_dgfe :=_ggbad ._babf .AddAutoRelationship (_gf .DocTypePresentation ,_gf .OfficeDocumentType ,len (_ggbad ._aab ),_gf .SlideType );
|
|
_acf .RIdAttr =_dgfe .ID ();_aaad :=_gf .AbsoluteFilename (_gf .DocTypePresentation ,_gf .SlideType ,len (_ggbad ._aab ));_ggbad .ContentTypes .AddOverride (_aaad ,_gf .SlideContentType );_bbcd :=_fd .NewRelationships ();_ggbad ._fcd =append (_ggbad ._fcd ,_bbcd );
|
|
_efe :=len (_ggbad ._fcd )-1;for _ege ,_cdda :=range _ggbad ._gb {if _cdda ==l .X (){_bcge :=_ggbad ._adda [_ege ];for _ ,_dfge :=range _bcge .X ().Relationship {if _dfge .TypeAttr !=_gf .SlideMasterType {_ggbad ._fcd [_efe ].X ().Relationship =append (_ggbad ._fcd [_efe ].X ().Relationship ,_dfge );
|
|
};};_bbcd .AddAutoRelationship (_gf .DocTypePresentation ,_gf .SlideType ,_ege +1,_gf .SlideLayoutType );};};_ebad :=Slide {_acf ,_dgc ,_ggbad ,nil };return _ebad ,nil ;};
|
|
|
|
// SlideLayouts returns a slice of all layouts in SlideMaster.
|
|
func (_bdec SlideMaster )SlideLayouts ()[]SlideLayout {_egfg :=map[string ]int {};_bfgg :=[]SlideLayout {};for _ ,_gdaa :=range _bdec ._aca .Relationships (){_eded :=_g .Replace (_gdaa .Target (),".\u002e\u002f\u0073\u006c\u0069\u0064e\u004c\u0061\u0079\u006f\u0075\u0074\u0073\u002f\u0073l\u0069\u0064\u0065L\u0061y\u006f\u0075\u0074","",-1);
|
|
_eded =_g .Replace (_eded ,"\u002e\u0078\u006d\u006c","",-1);if _efd ,_eae :=_da .ParseInt (_eded ,10,32);_eae ==nil {_egfg [_gdaa .ID ()]=int (_efd );};};for _ ,_dffb :=range _bdec ._bbee .SldLayoutIdLst .SldLayoutId {if _badf ,_bfec :=_egfg [_dffb .RIdAttr ];
|
|
_bfec {_edbea :=_bdec ._eabd ._gb [_badf -1];_bfgg =append (_bfgg ,SlideLayout {_edbea });};};return _bfgg ;};
|
|
|
|
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
|
|
func (_fga *Presentation )GetColorBySchemeColor (schClr _ggb .ST_SchemeColorVal )*_ggb .CT_Color {if len (_fga ._add )==0||len (_fga ._dbb )==0{return nil ;};var _bbba _ggb .ST_ColorSchemeIndex ;_ccae :=_fga ._add [0];_cbccb :=_ccae .ClrMap ;switch schClr .String (){case "\u0062\u0067\u0031":_bbba =_cbccb .Bg1Attr ;
|
|
case "\u0062\u0067\u0032":_bbba =_cbccb .Bg2Attr ;case "\u0074\u0078\u0031":_bbba =_cbccb .Tx1Attr ;case "\u0074\u0078\u0032":_bbba =_cbccb .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_bbba =_cbccb .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_bbba =_cbccb .Accent2Attr ;
|
|
case "\u0061c\u0063\u0065\u006e\u0074\u0033":_bbba =_cbccb .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_bbba =_cbccb .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_bbba =_cbccb .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_bbba =_cbccb .Accent6Attr ;
|
|
case "\u0068\u006c\u0069n\u006b":_bbba =_cbccb .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_bbba =_cbccb .FolHlinkAttr ;case "\u0064\u006b\u0031":_bbba =_ggb .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_bbba =_ggb .ST_ColorSchemeIndexDk2 ;
|
|
case "\u006c\u0074\u0031":_bbba =_ggb .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_bbba =_ggb .ST_ColorSchemeIndexLt2 ;default:_bbba =_ggb .ST_ColorSchemeIndexUnset ;};_ffgg :=_fga ._dbb [0];_fbge :=_ffgg .ThemeElements ;if _fbge ==nil {return nil ;
|
|
};var _dggg *_ggb .CT_Color ;_decc :=_fbge .ClrScheme ;switch _bbba .String (){case "\u0064\u006b\u0031":_dggg =_decc .Dk1 ;case "\u0064\u006b\u0032":_dggg =_decc .Dk2 ;case "\u006c\u0074\u0031":_dggg =_decc .Lt1 ;case "\u006c\u0074\u0032":_dggg =_decc .Lt2 ;
|
|
case "\u0061c\u0063\u0065\u006e\u0074\u0031":_dggg =_decc .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_dggg =_decc .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_dggg =_decc .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_dggg =_decc .Accent4 ;
|
|
case "\u0061c\u0063\u0065\u006e\u0074\u0035":_dggg =_decc .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_dggg =_decc .Accent6 ;case "\u0068\u006c\u0069n\u006b":_dggg =_decc .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_dggg =_decc .FolHlink ;
|
|
default:return nil ;};return _dggg ;};
|
|
|
|
// Slide represents a slide of a presentation.
|
|
type Slide struct{_ggaf *_db .CT_SlideIdListEntry ;_bgd *_db .Sld ;_caab *Presentation ;_dabe *_ggb .CT_ColorMapping ;};
|
|
|
|
// SetOffsetY sets vertical offset of text box in distance units (see measurement package).
|
|
func (_dfdc TextBox )SetOffsetY (offY float64 ){_fdad :=_dfdc .getOff ();_ade :=_c .ToEMU (offY );_fdad .YAttr =_ggb .ST_Coordinate {ST_CoordinateUnqualified :&_ade };};
|
|
|
|
// AddTextBox adds an empty textbox to a slide.
|
|
func (_cdc Slide )AddTextBox ()TextBox {_adbg :=_db .NewCT_GroupShapeChoice ();_cdc ._bgd .CSld .SpTree .Choice =append (_cdc ._bgd .CSld .SpTree .Choice ,_adbg );_bcab :=_db .NewCT_Shape ();_adbg .Sp =append (_adbg .Sp ,_bcab );_bcab .SpPr =_ggb .NewCT_ShapeProperties ();
|
|
_bcab .SpPr .Xfrm =_ggb .NewCT_Transform2D ();_bcab .SpPr .PrstGeom =_ggb .NewCT_PresetGeometry2D ();_bcab .SpPr .PrstGeom .PrstAttr =_ggb .ST_ShapeTypeRect ;_bcab .NvSpPr =_db .NewCT_ShapeNonVisual ();_bcab .NvSpPr .CNvSpPr =_ggb .NewCT_NonVisualDrawingShapeProps ();
|
|
_caeg :=true ;_bcab .NvSpPr .CNvSpPr .TxBoxAttr =&_caeg ;_bcab .TxBody =_ggb .NewCT_TextBody ();_bcab .TxBody .BodyPr =_ggb .NewCT_TextBodyProperties ();_bcab .TxBody .BodyPr .WrapAttr =_ggb .ST_TextWrappingTypeSquare ;_bcab .TxBody .BodyPr .SpAutoFit =_ggb .NewCT_TextShapeAutofit ();
|
|
_efag :=TextBox {_bcab };_efag .Properties ().SetWidth (3*_c .Inch );_efag .Properties ().SetHeight (1*_c .Inch );_efag .Properties ().SetPosition (0,0);return _efag ;};
|
|
|
|
// SetWidth sets width of slide screen size with given value in EMU units.
|
|
func (_gfgd *SlideScreenSize )SetWidth (val int32 ){_gfgd [0]=val };
|
|
|
|
// AddSlide adds a new slide to the presentation.
|
|
func (_dfg *Presentation )AddSlide ()Slide {_ceg :=_db .NewCT_SlideIdListEntry ();_ceg .IdAttr =_dfg .nextSlideID ();_dfg ._gea .SldIdLst .SldId =append (_dfg ._gea .SldIdLst .SldId ,_ceg );_eagc :=_db .NewSld ();_eagc .CSld .SpTree .NvGrpSpPr .CNvPr .IdAttr =1;
|
|
_eagc .CSld .SpTree .GrpSpPr .Xfrm =_ggb .NewCT_GroupTransform2D ();_eagc .CSld .SpTree .GrpSpPr .Xfrm .Off =_ggb .NewCT_Point2D ();_eagc .CSld .SpTree .GrpSpPr .Xfrm .Off .XAttr .ST_CoordinateUnqualified =_gf .Int64 (0);_eagc .CSld .SpTree .GrpSpPr .Xfrm .Off .YAttr .ST_CoordinateUnqualified =_gf .Int64 (0);
|
|
_eagc .CSld .SpTree .GrpSpPr .Xfrm .Ext =_ggb .NewCT_PositiveSize2D ();_eagc .CSld .SpTree .GrpSpPr .Xfrm .Ext .CxAttr =int64 (0*_c .Point );_eagc .CSld .SpTree .GrpSpPr .Xfrm .Ext .CyAttr =int64 (0*_c .Point );_eagc .CSld .SpTree .GrpSpPr .Xfrm .ChOff =_eagc .CSld .SpTree .GrpSpPr .Xfrm .Off ;
|
|
_eagc .CSld .SpTree .GrpSpPr .Xfrm .ChExt =_eagc .CSld .SpTree .GrpSpPr .Xfrm .Ext ;_dfg ._aab =append (_dfg ._aab ,_eagc );_agg :=_dfg ._babf .AddAutoRelationship (_gf .DocTypePresentation ,_gf .OfficeDocumentType ,len (_dfg ._aab ),_gf .SlideType );_ceg .RIdAttr =_agg .ID ();
|
|
_cgf :=_gf .AbsoluteFilename (_gf .DocTypePresentation ,_gf .SlideType ,len (_dfg ._aab ));_dfg .ContentTypes .AddOverride (_cgf ,_gf .SlideContentType );_adde :=_fd .NewRelationships ();_dfg ._fcd =append (_dfg ._fcd ,_adde );_adde .AddAutoRelationship (_gf .DocTypePresentation ,_gf .SlideType ,len (_dfg ._gb ),_gf .SlideLayoutType );
|
|
return Slide {_ceg ,_eagc ,_dfg ,nil };};
|
|
|
|
// Themes returns an array of presentation themes.
|
|
func (_edda *Presentation )Themes ()[]*_ggb .Theme {return _edda ._dbb };
|
|
|
|
// SlideViewPr returns the SlideViewPr property.
|
|
func (_bdg ViewProperties )SlideViewPr ()*_db .CT_SlideViewProperties {return _bdg ._gbb .SlideViewPr };
|
|
|
|
// Less is for implementing sorting of two locations. Symbols share the same location if they are in the same paragraph or table. One location is 'less' than another first by y coordinate, if y coordinates are equal or differ by less than yEpsilon, then x coordinates are compared, then if they are also equal, indexes of locations in the table are compared, then positions of locations in a paragraph.
|
|
func (_cbf sort2d )Less (i ,j int )bool {_bfc ,_cgb :=_cbf [i ],_cbf [j ];_abg ,_ebe :=_bfc ._aa ,_cgb ._aa ;_gcd ,_dga :=len (_abg )-1,len (_ebe )-1;_bbc ,_efb :=0,0;for {_bec ,_ad ,_efa ,_fed ,_gcgg ,_dcf ,_gdb ,_gccf :=_abg [_bbc ]._ge ,_ebe [_efb ]._ge ,_abg [_bbc ]._bcf ,_ebe [_efb ]._bcf ,_abg [_bbc ]._dc ,_ebe [_efb ]._dc ,_abg [_bbc ]._fad ,_ebe [_efb ]._fad ;
|
|
if _bec ==_ad ||((_fb .Abs (float64 (_bec )-float64 (_ad ))< _cca )&&((_bec >=_ad &&_bec <=_fed )||(_ad >=_bec &&_ad <=_efa ))&&(_gdb < _dcf ||_gcgg > _gccf )){if _gcgg ==_dcf {if _bbc < _gcd &&_efb < _dga {_bbc ++;_efb ++;continue ;};if _bbc >=_gcd &&_efb >=_dga {break ;
|
|
};return _bbc >=_gcd ;}else {return _gcgg < _dcf ;};}else {return _bec < _ad ;};};_cga ,_bae ,_egb ,_aaf :=_bfc ._dbc ,_cgb ._dbc ,_bfc ._eea ,_cgb ._eea ;if _cga ==_bae {return _egb <=_aaf ;};return _cga < _bae ;};
|
|
|
|
// New initializes and returns a new presentation
|
|
func New ()*Presentation {_dfd :=_bbaa ();_dfd .ContentTypes .AddOverride ("/\u0070\u0070\u0074\u002fpr\u0065s\u0065\u006e\u0074\u0061\u0074i\u006f\u006e\u002e\u0078\u006d\u006c","\u0061\u0070\u0070\u006c\u0069\u0063\u0061t\u0069\u006f\u006e\u002f\u0076\u006e\u0064\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072m\u0061\u0074\u0073\u002d\u006ff\u0066\u0069\u0063\u0065\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u002e\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e\u006d\u006c\u002e\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e\u002e\u006d\u0061\u0069\u006e\u002b\u0078\u006d\u006c");
|
|
_dfd .Rels .AddRelationship ("\u0064\u006f\u0063\u0050\u0072\u006f\u0070\u0073\u002f\u0063\u006f\u0072e\u002e\u0078\u006d\u006c","\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061s\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066o\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0070\u0061\u0063\u006ba\u0067\u0065\u002f\u0032\u0030\u0030\u0036\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070\u0073\u002f\u006d\u0065\u0074\u0061\u0064\u0061\u0074\u0061/\u0063\u006f\u0072\u0065\u002d\u0070\u0072\u006f\u0070e\u0072\u0074i\u0065\u0073");
|
|
_dfd .Rels .AddRelationship ("\u0064\u006fc\u0050\u0072\u006fp\u0073\u002f\u0061\u0070\u0070\u002e\u0078\u006d\u006c","\u0068t\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002eo\u0070\u0065\u006ex\u006d\u006c\u0066\u006f\u0072\u006da\u0074\u0073.\u006f\u0072\u0067\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0032\u0030\u0030\u0036\u002f\u0072\u0065\u006c\u0061\u0074i\u006f\u006e\u0073\u0068\u0069p\u0073\u002f\u0065x\u0074\u0065\u006e\u0064\u0065d\u002d\u0070\u0072\u006f\u0070\u0065\u0072\u0074\u0069\u0065\u0073");
|
|
_dfd .Rels .AddRelationship ("p\u0070t\u002f\u0070\u0072\u0065\u0073\u0065\u006e\u0074a\u0074\u0069\u006f\u006e.x\u006d\u006c","\u0068\u0074\u0074\u0070\u003a\u002f\u002fs\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072\u006da\u0074\u0073\u002e\u006f\u0072g\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u0044\u006fc\u0075\u006d\u0065\u006e\u0074\u002f\u0032\u0030\u0030\u0036\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070\u0073\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074");
|
|
_dfd .Rels .AddRelationship ("\u0070\u0070\u0074\u002f\u0070\u0072\u0065\u0073\u0050\u0072\u006f\u0070s\u002e\u0078\u006d\u006c","ht\u0074\u0070\u003a\u002f\u002f\u0073\u0063he\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072\u006da\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u0044\u006f\u0063\u0075\u006d\u0065\u006et\u002f\u0032\u0030\u0030\u0036\u002fr\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068i\u0070s\u002f\u0070\u0072\u0065\u0073\u0050\u0072\u006f\u0070\u0073");
|
|
_dfd .Rels .AddRelationship ("\u0070\u0070\u0074\u002f\u0076\u0069\u0065\u0077\u0050\u0072\u006f\u0070s\u002e\u0078\u006d\u006c","ht\u0074\u0070\u003a\u002f\u002f\u0073\u0063he\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072\u006da\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u0044\u006f\u0063\u0075\u006d\u0065\u006et\u002f\u0032\u0030\u0030\u0036\u002fr\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068i\u0070s\u002f\u0076\u0069\u0065\u0077\u0050\u0072\u006f\u0070\u0073");
|
|
_dfd .Rels .AddRelationship ("\u0070\u0070\u0074\u002fta\u0062\u006c\u0065\u0053\u0074\u0079\u006c\u0065\u0073\u002e\u0078\u006d\u006c","\u0068\u0074\u0074\u0070\u003a\u002f\u002fs\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006cf\u006fr\u006d\u0061\u0074\u0073\u002e\u006fr\u0067\u002f\u006f\u0066\u0066\u0069\u0063e\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0032\u0030\u0030\u0036\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073h\u0069\u0070\u0073\u002f\u0074\u0061\u0062\u006c\u0065\u0053\u0074\u0079\u006ce\u0073");
|
|
_dfd ._gea .SldMasterIdLst =_db .NewCT_SlideMasterIdList ();_cbcc :=_db .NewSldMaster ();_cbcc .ClrMap .Bg1Attr =_ggb .ST_ColorSchemeIndexLt1 ;_cbcc .ClrMap .Bg2Attr =_ggb .ST_ColorSchemeIndexLt2 ;_cbcc .ClrMap .Tx1Attr =_ggb .ST_ColorSchemeIndexDk1 ;_cbcc .ClrMap .Tx2Attr =_ggb .ST_ColorSchemeIndexDk2 ;
|
|
_cbcc .ClrMap .Accent1Attr =_ggb .ST_ColorSchemeIndexAccent1 ;_cbcc .ClrMap .Accent2Attr =_ggb .ST_ColorSchemeIndexAccent2 ;_cbcc .ClrMap .Accent3Attr =_ggb .ST_ColorSchemeIndexAccent3 ;_cbcc .ClrMap .Accent4Attr =_ggb .ST_ColorSchemeIndexAccent4 ;_cbcc .ClrMap .Accent5Attr =_ggb .ST_ColorSchemeIndexAccent5 ;
|
|
_cbcc .ClrMap .Accent6Attr =_ggb .ST_ColorSchemeIndexAccent6 ;_cbcc .ClrMap .HlinkAttr =_ggb .ST_ColorSchemeIndexHlink ;_cbcc .ClrMap .FolHlinkAttr =_ggb .ST_ColorSchemeIndexFolHlink ;_dfd ._add =append (_dfd ._add ,_cbcc );_bedc :=_gf .AbsoluteFilename (_gf .DocTypePresentation ,_gf .SlideMasterType ,1);
|
|
_dfd .ContentTypes .AddOverride (_bedc ,_gf .SlideMasterContentType );_baa :=_dfd ._babf .AddAutoRelationship (_gf .DocTypePresentation ,_gf .OfficeDocumentType ,1,_gf .SlideMasterType );_fbg :=_db .NewCT_SlideMasterIdListEntry ();_fbg .IdAttr =_gf .Uint32 (2147483648);
|
|
_fbg .RIdAttr =_baa .ID ();_dfd ._gea .SldMasterIdLst .SldMasterId =append (_dfd ._gea .SldMasterIdLst .SldMasterId ,_fbg );_cef :=_fd .NewRelationships ();_dfd ._agd =append (_dfd ._agd ,_cef );_dfcd :=_db .NewSldLayout ();_bcg :=_cef .AddAutoRelationship (_gf .DocTypePresentation ,_gf .SlideMasterType ,1,_gf .SlideLayoutType );
|
|
_aaae :=_gf .AbsoluteFilename (_gf .DocTypePresentation ,_gf .SlideLayoutType ,1);_dfd .ContentTypes .AddOverride (_aaae ,_gf .SlideLayoutContentType );_cef .AddAutoRelationship (_gf .DocTypePresentation ,_gf .SlideMasterType ,1,_gf .ThemeType );_dfd ._gb =append (_dfd ._gb ,_dfcd );
|
|
_cbcc .SldLayoutIdLst =_db .NewCT_SlideLayoutIdList ();_gbf :=_db .NewCT_SlideLayoutIdListEntry ();_gbf .IdAttr =_gf .Uint32 (2147483649);_gbf .RIdAttr =_bcg .ID ();_cbcc .SldLayoutIdLst .SldLayoutId =append (_cbcc .SldLayoutIdLst .SldLayoutId ,_gbf );
|
|
_agca :=_fd .NewRelationships ();_dfd ._adda =append (_dfd ._adda ,_agca );_agca .AddAutoRelationship (_gf .DocTypePresentation ,_gf .SlideType ,1,_gf .SlideMasterType );_dfd ._gea .NotesSz .CxAttr =6858000;_dfd ._gea .NotesSz .CyAttr =9144000;_ccga :=_ggb .NewTheme ();
|
|
_ccga .NameAttr =_gf .String ("\u0075n\u0069o\u0066\u0066\u0069\u0063\u0065\u0020\u0054\u0068\u0065\u006d\u0065");_ccga .ThemeElements .ClrScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_ccga .ThemeElements .ClrScheme .Dk1 .SysClr =_ggb .NewCT_SystemColor ();
|
|
_ccga .ThemeElements .ClrScheme .Dk1 .SysClr .LastClrAttr =_gf .String ("\u0030\u0030\u0030\u0030\u0030\u0030");_ccga .ThemeElements .ClrScheme .Dk1 .SysClr .ValAttr =_ggb .ST_SystemColorValWindowText ;_ccga .ThemeElements .ClrScheme .Lt1 .SysClr =_ggb .NewCT_SystemColor ();
|
|
_ccga .ThemeElements .ClrScheme .Lt1 .SysClr .LastClrAttr =_gf .String ("\u0066\u0066\u0066\u0066\u0066\u0066");_ccga .ThemeElements .ClrScheme .Lt1 .SysClr .ValAttr =_ggb .ST_SystemColorValWindow ;_ccga .ThemeElements .ClrScheme .Dk2 .SrgbClr =_ggb .NewCT_SRgbColor ();
|
|
_ccga .ThemeElements .ClrScheme .Dk2 .SrgbClr .ValAttr ="\u0034\u0034\u0035\u0034\u0036\u0061";_ccga .ThemeElements .ClrScheme .Lt2 .SrgbClr =_ggb .NewCT_SRgbColor ();_ccga .ThemeElements .ClrScheme .Lt2 .SrgbClr .ValAttr ="\u0065\u0037\u0065\u0037\u0065\u0036";
|
|
_ccga .ThemeElements .ClrScheme .Accent1 .SrgbClr =_ggb .NewCT_SRgbColor ();_ccga .ThemeElements .ClrScheme .Accent1 .SrgbClr .ValAttr ="\u0034\u0034\u0037\u0032\u0063\u0034";_ccga .ThemeElements .ClrScheme .Accent2 .SrgbClr =_ggb .NewCT_SRgbColor ();_ccga .ThemeElements .ClrScheme .Accent2 .SrgbClr .ValAttr ="\u0065\u0064\u0037\u0064\u0033\u0031";
|
|
_ccga .ThemeElements .ClrScheme .Accent3 .SrgbClr =_ggb .NewCT_SRgbColor ();_ccga .ThemeElements .ClrScheme .Accent3 .SrgbClr .ValAttr ="\u0061\u0035\u0061\u0035\u0061\u0035";_ccga .ThemeElements .ClrScheme .Accent4 .SrgbClr =_ggb .NewCT_SRgbColor ();_ccga .ThemeElements .ClrScheme .Accent4 .SrgbClr .ValAttr ="\u0066\u0066\u0063\u0030\u0030\u0030";
|
|
_ccga .ThemeElements .ClrScheme .Accent5 .SrgbClr =_ggb .NewCT_SRgbColor ();_ccga .ThemeElements .ClrScheme .Accent5 .SrgbClr .ValAttr ="\u0035\u0062\u0039\u0062\u0064\u0035";_ccga .ThemeElements .ClrScheme .Accent6 .SrgbClr =_ggb .NewCT_SRgbColor ();_ccga .ThemeElements .ClrScheme .Accent6 .SrgbClr .ValAttr ="\u0037\u0030\u0061\u0064\u0034\u0037";
|
|
_ccga .ThemeElements .ClrScheme .Hlink .SrgbClr =_ggb .NewCT_SRgbColor ();_ccga .ThemeElements .ClrScheme .Hlink .SrgbClr .ValAttr ="\u0030\u0035\u0036\u0033\u0063\u0031";_ccga .ThemeElements .ClrScheme .FolHlink .SrgbClr =_ggb .NewCT_SRgbColor ();_ccga .ThemeElements .ClrScheme .FolHlink .SrgbClr .ValAttr ="\u0039\u0035\u0034\u0066\u0037\u0032";
|
|
_ccga .ThemeElements .FontScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_ccga .ThemeElements .FontScheme .MajorFont .Latin .TypefaceAttr ="\u0043\u0061\u006c\u0069\u0062\u0072\u0069\u0020\u004c\u0069\u0067\u0068\u0074";_ccga .ThemeElements .FontScheme .MinorFont .Latin .TypefaceAttr ="\u0043a\u006c\u0069\u0062\u0072\u0069";
|
|
_ccga .ThemeElements .FmtScheme .NameAttr =_gf .String ("\u004f\u0066\u0066\u0069\u0063\u0065");_beg :=_ggb .NewEG_FillProperties ();_ccga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_ccga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_beg );
|
|
_beg .SolidFill =&_ggb .CT_SolidColorFillProperties {SchemeClr :&_ggb .CT_SchemeColor {ValAttr :_ggb .ST_SchemeColorValPhClr }};_beg =_ggb .NewEG_FillProperties ();_ccga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_ccga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_beg );
|
|
_ccga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_ccga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_beg );_beg .GradFill =&_ggb .CT_GradientFillProperties {RotWithShapeAttr :_gf .Bool (true ),GsLst :&_ggb .CT_GradientStopList {},Lin :&_ggb .CT_LinearShadeProperties {}};
|
|
_beg .GradFill .Lin .AngAttr =_gf .Int32 (5400000);_beg .GradFill .Lin .ScaledAttr =_gf .Bool (false );_cfg :=_ggb .NewCT_GradientStop ();_cfg .PosAttr .ST_PositiveFixedPercentageDecimal =_gf .Int32 (0);_cfg .SchemeClr =&_ggb .CT_SchemeColor {ValAttr :_ggb .ST_SchemeColorValPhClr };
|
|
_beg .GradFill .GsLst .Gs =append (_beg .GradFill .GsLst .Gs ,_cfg );_cfg =_ggb .NewCT_GradientStop ();_cfg .PosAttr .ST_PositiveFixedPercentageDecimal =_gf .Int32 (50000);_cfg .SchemeClr =&_ggb .CT_SchemeColor {ValAttr :_ggb .ST_SchemeColorValPhClr };
|
|
_beg .GradFill .GsLst .Gs =append (_beg .GradFill .GsLst .Gs ,_cfg );_ccga .ThemeElements .FmtScheme .LnStyleLst =_ggb .NewCT_LineStyleList ();for _aea :=0;_aea < 3;_aea ++{_afg :=_ggb .NewCT_LineProperties ();_afg .WAttr =_gf .Int32 (int32 (6350*(_aea +1)));
|
|
_afg .CapAttr =_ggb .ST_LineCapFlat ;_afg .CmpdAttr =_ggb .ST_CompoundLineSng ;_afg .AlgnAttr =_ggb .ST_PenAlignmentCtr ;_ccga .ThemeElements .FmtScheme .LnStyleLst .Ln =append (_ccga .ThemeElements .FmtScheme .LnStyleLst .Ln ,_afg );};_ccga .ThemeElements .FmtScheme .EffectStyleLst =_ggb .NewCT_EffectStyleList ();
|
|
for _fcdd :=0;_fcdd < 3;_fcdd ++{_cfc :=_ggb .NewCT_EffectStyleItem ();_cfc .EffectLst =_ggb .NewCT_EffectList ();_ccga .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle =append (_ccga .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle ,_cfc );
|
|
};_cagc :=_ggb .NewEG_FillProperties ();_cagc .SolidFill =&_ggb .CT_SolidColorFillProperties {SchemeClr :&_ggb .CT_SchemeColor {ValAttr :_ggb .ST_SchemeColorValPhClr }};_ccga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_ccga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_cagc );
|
|
_ccga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_ccga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_cagc );_ccga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_ccga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_beg );
|
|
_dfd ._dbb =append (_dfd ._dbb ,_ccga );_ggfa :=_gf .AbsoluteFilename (_gf .DocTypePresentation ,_gf .ThemeType ,1);_dfd .ContentTypes .AddOverride (_ggfa ,_gf .ThemeContentType );_dfd ._babf .AddAutoRelationship (_gf .DocTypePresentation ,_gf .OfficeDocumentType ,1,_gf .ThemeType );
|
|
_aff :=_fd .NewRelationships ();_dfd ._gec =append (_dfd ._gec ,_aff );return _dfd ;};
|
|
|
|
// PrnPr returns the PrnPr property.
|
|
func (_edb PresentationProperties )PrnPr ()*_db .CT_PrintProperties {return _edb ._gge .PrnPr };
|
|
|
|
// SlideSize returns presentation slide size.
|
|
func (_fbb *Presentation )SlideSize ()SlideSize {if _fbb ._gea .SldSz ==nil {_fbb ._gea .SldSz =_db .NewCT_SlideSize ();};return SlideSize {_fbb ._gea .SldSz ,_fbb };};
|
|
|
|
// NewViewProperties constructs a new ViewProperties.
|
|
func NewViewProperties ()ViewProperties {return ViewProperties {_gbb :_db .NewViewPr ()}};
|
|
|
|
// GetTextBoxes returns a list of all text boxes from a slide.
|
|
func (_caae Slide )GetTextBoxes ()[]*TextBox {_dfdg :=[]*TextBox {};_febdc :=_caae ._bgd .CSld .SpTree .Choice ;for _ ,_ffbae :=range _febdc {for _ ,_fege :=range _ffbae .Sp {if _fege .NvSpPr .CNvSpPr .TxBoxAttr !=nil &&*_fege .NvSpPr .CNvSpPr .TxBoxAttr {_dfdg =append (_dfdg ,&TextBox {_fege });
|
|
};};};return _dfdg ;};
|
|
|
|
// Image is an image within a slide.
|
|
type Image struct{_ded *_db .CT_Picture };
|
|
|
|
// Properties returns the properties of the TextBox.
|
|
func (_ffe Image )Properties ()_ea .ShapeProperties {if _ffe ._ded .SpPr ==nil {_ffe ._ded .SpPr =_ggb .NewCT_ShapeProperties ();};return _ea .MakeShapeProperties (_ffe ._ded .SpPr );};
|
|
|
|
// SlideSize represents a slide size of a presentation.
|
|
type SlideSize struct{_cba *_db .CT_SlideSize ;_ebaf *Presentation ;};
|
|
|
|
// Slides returns the slides in the presentation.
|
|
func (_eec *Presentation )Slides ()[]Slide {_gddb :=[]Slide {};for _dfcgb ,_cbea :=range _eec ._aab {_gddb =append (_gddb ,Slide {_eec ._gea .SldIdLst .SldId [_dfcgb ],_cbea ,_eec ,nil });};return _gddb ;};func (_faf sort2d )Len ()int {return len (_faf )};
|
|
|
|
|
|
// Text returns text from a slide as one string separated with line breaks.
|
|
func (_bbg *SlideText )Text ()string {_gdfc :=_fa .NewBuffer ([]byte {});for _ ,_dcc :=range _bbg .Items {if _dcc .Text !=""{_gdfc .WriteString (_dcc .Text );_gdfc .WriteString ("\u000a");};};return _gdfc .String ();};
|
|
|
|
// X returns the inner wrapped XML type.
|
|
func (_cfba Slide )X ()*_db .Sld {return _cfba ._bgd };
|
|
|
|
// Size returns slide size value as SlideScreenSize.
|
|
func (_beea *SlideSize )Size ()SlideScreenSize {return SlideScreenSize {_beea ._cba .CxAttr ,_beea ._cba .CyAttr };};
|
|
|
|
// GetSlideLayout returns a slide layout related to the slide.
|
|
func (_bdcd *Slide )GetSlideLayout ()*_db .SldLayout {_cgbg :=_bdcd .getSlideRels ();for _ ,_aebd :=range _cgbg .Relationships (){if _aebd .Type ()==_gf .SlideLayoutType {if _gfef ,_cefg :=_b .StringToNumbers (_aebd .Target ());_cefg {return _bdcd ._caab ._gb [_gfef -1];
|
|
};return nil ;};};return nil ;};func (_cgbd TextBox )getOff ()*_ggb .CT_Point2D {if _cgbd ._agcag .SpPr ==nil {_cgbd ._agcag .SpPr =_ggb .NewCT_ShapeProperties ();};if _cgbd ._agcag .SpPr .Xfrm ==nil {_cgbd ._agcag .SpPr .Xfrm =_ggb .NewCT_Transform2D ();
|
|
};if _cgbd ._agcag .SpPr .Xfrm .Off ==nil {_cgbd ._agcag .SpPr .Xfrm .Off =_ggb .NewCT_Point2D ();};return _cgbd ._agcag .SpPr .Xfrm .Off ;};
|
|
|
|
// ValidateWithPath validates the slide passing path informaton for a better
|
|
// error message.
|
|
func (_afdg Slide )ValidateWithPath (path string )error {if _cfbg :=_afdg ._bgd .ValidateWithPath (path );_cfbg !=nil {return _cfbg ;};for _ ,_edcg :=range _afdg ._bgd .CSld .SpTree .Choice {for _ ,_gcb :=range _edcg .Sp {if _gcb .TxBody !=nil {if len (_gcb .TxBody .P )==0{return _cg .New (path +"\u0020\u003a \u0073\u006c\u0069\u0064\u0065 \u0073\u0068\u0061\u0070\u0065 \u0077\u0069\u0074\u0068\u0020\u0061\u0020\u0074\u0078\u0062\u006f\u0064\u0079\u0020\u006d\u0075\u0073\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0020\u0070\u0061\u0072\u0061\u0067\u0072\u0061\u0070\u0068\u0073");
|
|
};};};};return nil ;};func (_bfd *Presentation )saveToFile (_deg string ,_gga bool )error {_egd ,_dgaa :=_aeb .Create (_deg );if _dgaa !=nil {return _dgaa ;};defer _egd .Close ();return _bfd .save (_egd ,_gga );};
|
|
|
|
// AddImageToRels adds an image relationship to a slide without putting image on the slide.
|
|
func (_gbcf Slide )AddImageToRels (img _fd .ImageRef )string {_deae :=0;for _beda ,_beef :=range _gbcf ._caab .Images {if _beef ==img {_deae =_beda +1;break ;};};var _afaa string ;for _dcfc ,_fdgf :=range _gbcf ._caab .Slides (){if _fdgf ._bgd ==_gbcf ._bgd {_gcda :=_gg .Sprintf ("\u002e\u002e\u002f\u006ded\u0069\u0061\u002f\u0069\u006d\u0061\u0067\u0065\u0025\u0064\u002e\u0025\u0073",_deae ,img .Format ());
|
|
_cfbe :=_gbcf ._caab ._fcd [_dcfc ].AddRelationship (_gcda ,_gf .ImageType );_afaa =_cfbe .ID ();};};return _afaa ;};
|
|
|
|
// GetLayoutImageByRelID returns an ImageRef with the associated relation ID in the
|
|
// slide layout.
|
|
func (_badd *Slide )GetLayoutImageByRelID (relID string )(_fd .ImageRef ,bool ){_dcccd :=_badd .getSlideLayoutRels ();if (_dcccd ==_fd .Relationships {}){return _fd .ImageRef {},false ;};_dcg :=_dcccd .GetTargetByRelId (relID );for _ ,_agge :=range _badd ._caab .Images {if _agge .Target ()==_dcg {return _agge ,true ;
|
|
};};return _fd .ImageRef {},false ;};
|
|
|
|
// ExtLst returns the ExtLst property.
|
|
func (_ebg PresentationProperties )ExtLst ()*_db .CT_ExtensionList {return _ebg ._gge .ExtLst };
|
|
|
|
// NotesTextViewPr returns the NotesTextViewPr property.
|
|
func (_dafdb ViewProperties )NotesTextViewPr ()*_db .CT_NotesTextViewProperties {return _dafdb ._gbb .NotesTextViewPr ;};
|
|
|
|
// X returns the inner wrapped XML type.
|
|
func (_bgbfg ViewProperties )X ()*_db .ViewPr {return _bgbfg ._gbb };
|
|
|
|
// SetOffsetX sets horizontal offset of text box in distance units (see measurement package).
|
|
func (_abb TextBox )SetOffsetX (offX float64 ){_gaeg :=_abb .getOff ();_ebc :=_c .ToEMU (offX );_gaeg .XAttr =_ggb .ST_Coordinate {ST_CoordinateUnqualified :&_ebc };};
|
|
|
|
// Type returns the placeholder type
|
|
func (_cbd PlaceHolder )Type ()_db .ST_PlaceholderType {return _cbd ._eff .NvSpPr .NvPr .Ph .TypeAttr };
|
|
|
|
// SorterViewPr returns the SorterViewPr property.
|
|
func (_fdee ViewProperties )SorterViewPr ()*_db .CT_SlideSorterViewProperties {return _fdee ._gbb .SorterViewPr ;};
|
|
|
|
// ShowCommentsAttr returns the WebPr property.
|
|
func (_aag ViewProperties )ShowCommentsAttr ()*bool {return _aag ._gbb .ShowCommentsAttr };
|
|
|
|
// Close closes the presentation, removing any temporary files that might have been
|
|
// created when opening a document.
|
|
func (_dffg *Presentation )Close ()error {if _dffg .TmpPath !=""{return _ae .RemoveAll (_dffg .TmpPath );};return nil ;};
|
|
|
|
// AddTable adds an empty table to a slide.
|
|
func (_abc Slide )AddTable ()*_fd .Table {_dedb :=_db .NewCT_GroupShapeChoice ();_abc ._bgd .CSld .SpTree .Choice =append (_abc ._bgd .CSld .SpTree .Choice ,_dedb );_fda :=_db .NewCT_GraphicalObjectFrame ();_dedb .GraphicFrame =append (_dedb .GraphicFrame ,_fda );
|
|
_fda .Xfrm .Off =_ggb .NewCT_Point2D ();_efg :=int64 (1);_fda .Xfrm .Off .XAttr =_ggb .ST_Coordinate {ST_CoordinateUnqualified :&_efg };_fda .Xfrm .Off .YAttr =_ggb .ST_Coordinate {ST_CoordinateUnqualified :&_efg };_bbda :=_fda .Graphic .CT_GraphicalObject .GraphicData ;
|
|
_bbda .UriAttr ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002eo\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073.\u006f\u0072\u0067\u002f\u0064\u0072\u0061\u0077\u0069\u006e\u0067\u006dl/\u0032\u0030\u0030\u0036\u002f\u0074\u0061\u0062\u006c\u0065";
|
|
_fbcb :=_fd .NewTableWithXfrm (_fda .Xfrm );_bbda .Any =append (_bbda .Any ,_fbcb .X ());return _fbcb ;};
|
|
|
|
// X returns the inner wrapped XML type.
|
|
func (_adcb SlideMaster )X ()*_db .SldMaster {return _adcb ._bbee };func (_ffbb sort2d )Swap (i ,j int ){_ffbb [i ],_ffbb [j ]=_ffbb [j ],_ffbb [i ]};
|
|
|
|
// TableInfo is used for keep information about a table, a row and a cell where the text is located.
|
|
type TableInfo struct{Table *_ggb .CT_Table ;Row *_ggb .CT_TableRow ;Cell *_ggb .CT_TableCell ;RowIndex int ;ColIndex int ;};
|
|
|
|
// Save writes the presentation out to a writer in the Zip package format
|
|
func (_dfe *Presentation )Save (w _ee .Writer )error {return _dfe .save (w ,false )};
|
|
|
|
// Sid returns the sid of slide
|
|
func (_bfga Slide )Sid ()*_db .CT_SlideIdListEntry {return _bfga ._ggaf };
|
|
|
|
// NotesViewPr returns the NotesViewPr property.
|
|
func (_dbd ViewProperties )NotesViewPr ()*_db .CT_NotesViewProperties {return _dbd ._gbb .NotesViewPr };func (_bfg *chart )RelId ()string {return _bfg ._cgc };
|
|
|
|
// PresentationText is an array of extracted text items which has some methods for representing extracted text.
|
|
type PresentationText struct{Slides []*SlideText ;};
|
|
|
|
// Clear clears the placeholder contents and adds a single empty paragraph. The
|
|
// empty paragrah is required by PowerPoint or it will report the file as being
|
|
// invalid.
|
|
func (_baee PlaceHolder )Clear (){_baee .ClearAll ();_baec :=_ggb .NewCT_TextParagraph ();_baee ._eff .TxBody .P =[]*_ggb .CT_TextParagraph {_baec };_baec .EndParaRPr =_ggb .NewCT_TextCharacterProperties ();_baec .EndParaRPr .LangAttr =_gf .String ("\u0065\u006e\u002dU\u0053");
|
|
};
|
|
|
|
// GetImageByRelID returns an ImageRef with the associated relation ID in the
|
|
// document.
|
|
func (_dfgg *Presentation )GetImageByRelID (relID string )(_fd .ImageRef ,bool ){for _ ,_fcac :=range _dfgg .Images {if _fcac .RelID ()==relID {return _fcac ,true ;};};return _fd .ImageRef {},false ;};func (_gaga *Slide )getSlideRels ()_fd .Relationships {_dgaad :=_gaga ._caab ;
|
|
for _egf ,_geg :=range _dgaad .Slides (){if *_gaga ._bgd ==*_geg ._bgd {return _dgaad ._fcd [_egf ];};};return _fd .Relationships {};};
|
|
|
|
// SaveToFile writes the Presentation out to a file.
|
|
func (_deb *Presentation )SaveToFile (path string )error {return _deb .saveToFile (path ,false )};
|
|
|
|
// X returns the inner wrapped XML type.
|
|
func (_dfbf *SlideSize )X ()*_db .CT_SlideSize {return _dfbf ._cba };
|
|
|
|
// Text returns text from a presentation as one string separated with line breaks.
|
|
func (_fef *PresentationText )Text ()string {_edg :=_fa .NewBuffer ([]byte {});for _ ,_dce :=range _fef .Slides {_edg .WriteString (_dce .Text ());};return _edg .String ();};
|
|
|
|
// GetPlaceholder returns a placeholder given its type. If there are multiplace
|
|
// placeholders of the same type, this method returns the first one. You must use the
|
|
// PlaceHolders() method to access the others.
|
|
func (_ebfc Slide )GetPlaceholder (t _db .ST_PlaceholderType )(PlaceHolder ,error ){for _ ,_aabd :=range _ebfc ._bgd .CSld .SpTree .Choice {for _ ,_ggfb :=range _aabd .Sp {if _ggfb .NvSpPr !=nil &&_ggfb .NvSpPr .NvPr !=nil &&_ggfb .NvSpPr .NvPr .Ph !=nil {if _ggfb .NvSpPr .NvPr .Ph .TypeAttr ==t {return PlaceHolder {_ggfb ,_ebfc ._bgd },nil ;
|
|
};};};};return PlaceHolder {},_cg .New ("\u0075\u006e\u0061\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0070\u006c\u0061\u0063\u0065\u0068\u006fl\u0064\u0065\u0072");};
|
|
|
|
// GridSpacing returns the GridSpacing property.
|
|
func (_afge ViewProperties )GridSpacing ()*_ggb .CT_PositiveSize2D {return _afge ._gbb .GridSpacing };
|
|
|
|
// WebPr returns the WebPr property.
|
|
func (_bge PresentationProperties )WebPr ()*_db .CT_WebProperties {return _bge ._gge .WebPr };
|
|
|
|
// ShowPr returns the ShowPr property.
|
|
func (_gab PresentationProperties )ShowPr ()*_db .CT_ShowProperties {return _gab ._gge .ShowPr };
|
|
|
|
// OutlineViewPr returns the OutlineViewPr property.
|
|
func (_ffgd ViewProperties )OutlineViewPr ()*_db .CT_OutlineViewProperties {return _ffgd ._gbb .OutlineViewPr ;};
|
|
|
|
// Presentation returns a slide's presentation.
|
|
func (_agbb Slide )Presentation ()*Presentation {return _agbb ._caab };
|
|
|
|
// X returns the inner wrapped XML type.
|
|
func (_gda SlideLayout )X ()*_db .SldLayout {return _gda ._gecf };
|
|
|
|
// Presentation is the a presentation base document.
|
|
type Presentation struct{_fd .DocBase ;_gea *_db .Presentation ;_babf _fd .Relationships ;_aab []*_db .Sld ;_fcd []_fd .Relationships ;_add []*_db .SldMaster ;_agd []_fd .Relationships ;_gb []*_db .SldLayout ;_adda []_fd .Relationships ;_dbb []*_ggb .Theme ;
|
|
_gec []_fd .Relationships ;_gdd _fd .TableStyles ;_edbe PresentationProperties ;_gfe ViewProperties ;_ddba []*_ggb .CT_Hyperlink ;_afe []*chart ;_ggfd []*_db .HandoutMaster ;_cbcg []*_db .NotesMaster ;_bca []*_gf .XSDAny ;_eaf map[string ]string ;_bbd string ;
|
|
};func (_bbdc *Slide )ensureClrMap (){if len (_bbdc ._caab ._add )==0||len (_bbdc ._caab ._dbb )==0{return ;};_dcgd :=_bbdc ._caab ._add [0];_gca :=_dcgd .ClrMap ;if _egdc :=_bbdc ._bgd .ClrMapOvr ;_egdc !=nil {if _eagb :=_egdc .Choice ;_eagb !=nil {if _eagb .MasterClrMapping ==nil {if _bbfg :=_eagb .OverrideClrMapping ;
|
|
_bbfg !=nil {if _bbfg .Bg1Attr !=_ggb .ST_ColorSchemeIndexUnset {_gca .Bg1Attr =_bbfg .Bg1Attr ;};if _bbfg .Tx1Attr !=_ggb .ST_ColorSchemeIndexUnset {_gca .Tx1Attr =_bbfg .Tx1Attr ;};if _bbfg .Bg2Attr !=_ggb .ST_ColorSchemeIndexUnset {_gca .Bg2Attr =_bbfg .Bg2Attr ;
|
|
};if _bbfg .Tx2Attr !=_ggb .ST_ColorSchemeIndexUnset {_gca .Tx2Attr =_bbfg .Tx2Attr ;};if _bbfg .Accent1Attr !=_ggb .ST_ColorSchemeIndexUnset {_gca .Accent1Attr =_bbfg .Accent1Attr ;};if _bbfg .Accent2Attr !=_ggb .ST_ColorSchemeIndexUnset {_gca .Accent2Attr =_bbfg .Accent2Attr ;
|
|
};if _bbfg .Accent3Attr !=_ggb .ST_ColorSchemeIndexUnset {_gca .Accent3Attr =_bbfg .Accent3Attr ;};if _bbfg .Accent4Attr !=_ggb .ST_ColorSchemeIndexUnset {_gca .Accent4Attr =_bbfg .Accent4Attr ;};if _bbfg .Accent5Attr !=_ggb .ST_ColorSchemeIndexUnset {_gca .Accent5Attr =_bbfg .Accent5Attr ;
|
|
};if _bbfg .Accent6Attr !=_ggb .ST_ColorSchemeIndexUnset {_gca .Accent6Attr =_bbfg .Accent6Attr ;};if _bbfg .HlinkAttr !=_ggb .ST_ColorSchemeIndexUnset {_gca .HlinkAttr =_bbfg .HlinkAttr ;};if _bbfg .FolHlinkAttr !=_ggb .ST_ColorSchemeIndexUnset {_gca .FolHlinkAttr =_bbfg .FolHlinkAttr ;
|
|
};};};};};_bbdc ._dabe =_gca ;};
|
|
|
|
// ExtractText returns text from a slide as a SlideText object.
|
|
func (_aga *Slide )ExtractText ()*SlideText {_gac :=_bac (_aga ._caab ,_aga ._bgd .CSld .SpTree .Choice ,[]rectangle {},[]*TextItem {});_bc .Sort (sort2d (_gac ));return &SlideText {Items :_gac };};
|
|
|
|
// X returns TextBox's underlying *pml.CT_Shape.
|
|
func (_afc TextBox )X ()*_db .CT_Shape {return _afc ._agcag };
|
|
|
|
// Width returns slide screen size width in EMU units.
|
|
func (_bdde *SlideScreenSize )Width ()int32 {return _bdde [0]};
|
|
|
|
// AddImage adds an image textbox to a slide.
|
|
func (_ccbd Slide )AddImage (img _fd .ImageRef )Image {_eaga :=_db .NewCT_GroupShapeChoice ();_ccbd ._bgd .CSld .SpTree .Choice =append (_ccbd ._bgd .CSld .SpTree .Choice ,_eaga );_aaba :=_db .NewCT_Picture ();_eaga .Pic =append (_eaga .Pic ,_aaba );_aaba .NvPicPr .CNvPicPr =_ggb .NewCT_NonVisualPictureProperties ();
|
|
_aaba .NvPicPr .CNvPicPr .PicLocks =_ggb .NewCT_PictureLocking ();_aaba .NvPicPr .CNvPicPr .PicLocks .NoChangeAspectAttr =_gf .Bool (true );_aaba .BlipFill =_ggb .NewCT_BlipFillProperties ();_aaba .BlipFill .Blip =_ggb .NewCT_Blip ();_dgfb :=_ccbd .AddImageToRels (img );
|
|
_aaba .BlipFill .Blip .EmbedAttr =_gf .String (_dgfb );_aaba .BlipFill .Stretch =_ggb .NewCT_StretchInfoProperties ();_aaba .BlipFill .Stretch .FillRect =_ggb .NewCT_RelativeRect ();_aaba .SpPr =_ggb .NewCT_ShapeProperties ();_aaba .SpPr .PrstGeom =_ggb .NewCT_PresetGeometry2D ();
|
|
_aaba .SpPr .PrstGeom .PrstAttr =_ggb .ST_ShapeTypeRect ;_ede :=Image {_aaba };_aabg :=img .Size ();_ede .Properties ().SetWidth (_c .Distance (_aabg .X )*_c .Pixel72 );_ede .Properties ().SetHeight (_c .Distance (_aabg .Y )*_c .Pixel72 );_ede .Properties ().SetPosition (0,0);
|
|
return _ede ;};func _bac (_bg *Presentation ,_ca []*_db .CT_GroupShapeChoice ,_daf []rectangle ,_cd []*TextItem )[]*TextItem {for _ ,_cc :=range _ca {_ab :=append ([]rectangle {},_daf ...);for _ ,_ecb :=range _cc .Sp {_cd =append (_cd ,_fg (_bg ,_ecb ,nil ,nil ,_ecb .SpPr .Xfrm ,0,_daf ,_ecb .TxBody .P )...);
|
|
};for _ ,_eag :=range _cc .GraphicFrame {if _eag !=nil &&_eag .Graphic !=nil &&_eag .Graphic .GraphicData !=nil {_cgg :=_eag .Xfrm ;for _ ,_fadg :=range _eag .Graphic .GraphicData .Any {if _agab ,_bb :=_fadg .(*_ggb .Tbl );_bb {_aed :=&_agab .CT_Table ;
|
|
_bed :=0;for _cbc ,_bd :=range _agab .Tr {for _bba ,_df :=range _bd .Tc {_feb :=&TableInfo {Table :_aed ,Row :_bd ,Cell :_df ,RowIndex :_cbc ,ColIndex :_bba };_cd =append (_cd ,_fg (_bg ,nil ,_eag ,_feb ,_cgg ,_bed ,_daf ,_df .TxBody .P )...);_bed ++;};
|
|
};};};};};for _ ,_cf :=range _cc .GrpSp {if _cf .GrpSpPr !=nil {_ce :=_cf .GrpSpPr .Xfrm ;var _agb ,_gcc int64 ;if _ce .Off !=nil {_bede ,_fbe :=_ce .Off .XAttr .ST_CoordinateUnqualified ,_ce .Off .YAttr .ST_CoordinateUnqualified ;if _bede !=nil &&_fbe !=nil {if _aaa :=_ce .Ext ;
|
|
_aaa !=nil {_agb ,_gcc =_aaa .CxAttr ,_aaa .CyAttr ;};_ab =append (_ab ,rectangle {_dc :*_bede ,_ge :*_fbe ,_fad :*_bede +_agb ,_bcf :*_fbe +_gcc });};};};_cd =_bac (_bg ,_cf .Choice ,_ab ,_cd );};};return _cd ;};func (_cec *Slide )getSlideLayoutRels ()_fd .Relationships {_adc :=_cec ._caab ;
|
|
for _bcfa ,_eeba :=range _adc .SlideLayouts (){if *_cec .GetSlideLayout ().CSld ==*_eeba ._gecf .CSld {return _adc ._adda [_bcfa ];};};return _fd .Relationships {};};
|
|
|
|
// SlideScreenSize represents the slide screen size as a 2 element array
|
|
// representing the width and height in EMU units.
|
|
type SlideScreenSize [2]int32 ;
|
|
|
|
// GetPlaceholderByIndex returns a placeholder given its index. If there are multiplace
|
|
// placeholders of the same index, this method returns the first one. You must use the
|
|
// PlaceHolders() method to access the others.
|
|
func (_cdad Slide )GetPlaceholderByIndex (idx uint32 )(PlaceHolder ,error ){for _ ,_gbee :=range _cdad ._bgd .CSld .SpTree .Choice {for _ ,_cgfg :=range _gbee .Sp {if _cgfg .NvSpPr !=nil &&_cgfg .NvSpPr .NvPr !=nil &&_cgfg .NvSpPr .NvPr .Ph !=nil {if (idx ==0&&_cgfg .NvSpPr .NvPr .Ph .IdxAttr ==nil )||(_cgfg .NvSpPr .NvPr .Ph .IdxAttr !=nil &&*_cgfg .NvSpPr .NvPr .Ph .IdxAttr ==idx ){return PlaceHolder {_cgfg ,_cdad ._bgd },nil ;
|
|
};};};};return PlaceHolder {},_cg .New ("\u0075\u006e\u0061\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0070\u006c\u0061\u0063\u0065\u0068\u006fl\u0064\u0065\u0072");};
|
|
|
|
// Open opens and reads a document from a file (.pptx).
|
|
func Open (filename string )(*Presentation ,error ){_fbd ,_dag :=_aeb .Open (filename );if _dag !=nil {return nil ,_gg .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_dag );};defer _fbd .Close ();
|
|
_caa ,_dag :=_aeb .Stat (filename );if _dag !=nil {return nil ,_gg .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_dag );};_ =_caa ;return Read (_fbd ,_caa .Size ());};func (_bf *chart )X ()*_f .ChartSpace {return _bf ._fc };
|
|
|
|
|
|
// Remove removes a placeholder from a presentation.
|
|
func (_efc PlaceHolder )Remove ()error {for _dgd ,_daee :=range _efc ._bad .CSld .SpTree .Choice {for _ ,_agf :=range _daee .Sp {if _agf ==_efc ._eff {copy (_efc ._bad .CSld .SpTree .Choice [_dgd :],_efc ._bad .CSld .SpTree .Choice [_dgd +1:]);_efc ._bad .CSld .SpTree .Choice =_efc ._bad .CSld .SpTree .Choice [0:len (_efc ._bad .CSld .SpTree .Choice )-1];
|
|
return nil ;};};};return _cg .New ("\u0070\u006c\u0061\u0063\u0065\u0068\u006f\u006c\u0064\u0065r\u0020\u006e\u006f\u0074\u0020\u0066\u006fu\u006e\u0064\u0020\u0069\u006e\u0020\u0073\u006c\u0069\u0064\u0065");};
|
|
|
|
// SetHeight sets height of slide screen size with given value in EMU units.
|
|
func (_accg *SlideScreenSize )SetHeight (val int32 ){_accg [1]=val };
|
|
|
|
// TextBox is a text box within a slide.
|
|
type TextBox struct{_agcag *_db .CT_Shape };
|
|
|
|
// SlideMaster is the slide master for a presentation.
|
|
type SlideMaster struct{_eabd *Presentation ;_aca _fd .Relationships ;_bbee *_db .SldMaster ;};
|
|
|
|
// X returns the inner wrapped XML type.
|
|
func (_agff PresentationProperties )X ()*_db .PresentationPr {return _agff ._gge };
|
|
|
|
// GetImageByRelID returns an ImageRef with the associated relation ID in the
|
|
// slide.
|
|
func (_febg *Slide )GetImageByRelID (relID string )(_fd .ImageRef ,bool ){_gfbed :=_febg .getSlideRels ();if (_gfbed ==_fd .Relationships {}){return _fd .ImageRef {},false ;};_fbbb :=_gfbed .GetTargetByRelId (relID );for _ ,_fgac :=range _febg ._caab .Images {if _fgac .Target ()==_fbbb {return _fgac ,true ;
|
|
};};return _fd .ImageRef {},false ;};
|
|
|
|
// SetText sets the text of a placeholder for the initial paragraph. This is a
|
|
// shortcut method that is useful for things like titles which only contain a
|
|
// single paragraph.
|
|
func (_bfgc PlaceHolder )SetText (text string ){_bfgc .Clear ();_afd :=_ggb .NewEG_TextRun ();_afd .R =_ggb .NewCT_RegularTextRun ();_afd .R .T =text ;if len (_bfgc ._eff .TxBody .P )==0{_bfgc ._eff .TxBody .P =append (_bfgc ._eff .TxBody .P ,_ggb .NewCT_TextParagraph ());
|
|
};_bfgc ._eff .TxBody .P [0].EG_TextRun =nil ;_bfgc ._eff .TxBody .P [0].EG_TextRun =append (_bfgc ._eff .TxBody .P [0].EG_TextRun ,_afd );}; |