// // 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 (_bda "archive/zip";_ga "bytes";_cbf "encoding/xml";_ag "errors";_g "fmt";_df "github.com/unidoc/unioffice";_ed "github.com/unidoc/unioffice/common";_ad "github.com/unidoc/unioffice/common/logger";_bd "github.com/unidoc/unioffice/common/tempstorage"; _agf "github.com/unidoc/unioffice/drawing";_dc "github.com/unidoc/unioffice/internal/formatutils";_ea "github.com/unidoc/unioffice/internal/license";_cb "github.com/unidoc/unioffice/measurement";_gb "github.com/unidoc/unioffice/schema/soo/dml";_b "github.com/unidoc/unioffice/schema/soo/dml/chart"; _d "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_c "github.com/unidoc/unioffice/schema/soo/pkg/relationships";_ef "github.com/unidoc/unioffice/schema/soo/pml";_f "github.com/unidoc/unioffice/zippkg";_bff "image";_be "image/jpeg";_fe "io";_agff "math"; _ca "os";_de "path";_ac "sort";_bf "strconv";_e "strings";);func (_eg *chart )RelId ()string {return _eg ._ce }; // PlaceHolders returns all of the content place holders within a given slide. func (_acca Slide )PlaceHolders ()[]PlaceHolder {_deag :=[]PlaceHolder {};for _ ,_bfg :=range _acca ._adcg .CSld .SpTree .Choice {for _ ,_dbcf :=range _bfg .Sp {if _dbcf .NvSpPr !=nil &&_dbcf .NvSpPr .NvPr !=nil &&_dbcf .NvSpPr .NvPr .Ph !=nil {_deag =append (_deag ,PlaceHolder {_dbcf ,_acca ._adcg }); };};};return _deag ;}; // SaveToFileAsTemplate writes the Presentation out to a file as a template. func (_ecac *Presentation )SaveToFileAsTemplate (path string )error {return _ecac .saveToFile (path ,true );};func _ccag (_fag []*_ef .CT_GroupShapeChoice )[]*_ef .CT_GroupShapeChoice {var _cfd []*_ef .CT_GroupShapeChoice ;for _ ,_bfad :=range _fag {if len (_bfad .Pic )==0{_cfd =append (_cfd ,_bfad ); };};return _cfd ;};func _ae (_eaa *Presentation ,_fc []*_ef .CT_GroupShapeChoice ,_fb []rectangle ,_eec []*TextItem )[]*TextItem {for _ ,_gea :=range _fc {_eb :=append ([]rectangle {},_fb ...);for _ ,_bca :=range _gea .Sp {_eec =append (_eec ,_gda (_eaa ,_bca ,nil ,nil ,_bca .SpPr .Xfrm ,0,_fb ,_bca .TxBody .P )...); };for _ ,_cbg :=range _gea .GraphicFrame {if _cbg !=nil &&_cbg .Graphic !=nil &&_cbg .Graphic .GraphicData !=nil {_bb :=_cbg .Xfrm ;for _ ,_age :=range _cbg .Graphic .GraphicData .Any {if _cd ,_cae :=_age .(*_gb .Tbl );_cae {_cdb :=&_cd .CT_Table ;_fac :=0; for _eag ,_aee :=range _cd .Tr {for _fcb ,_efb :=range _aee .Tc {_aa :=&TableInfo {Table :_cdb ,Row :_aee ,Cell :_efb ,RowIndex :_eag ,ColIndex :_fcb };_eec =append (_eec ,_gda (_eaa ,nil ,_cbg ,_aa ,_bb ,_fac ,_fb ,_efb .TxBody .P )...);_fac ++;};};}; };};};for _ ,_ffe :=range _gea .GrpSp {if _ffe .GrpSpPr !=nil {_cdd :=_ffe .GrpSpPr .Xfrm ;var _eff ,_cec int64 ;if _cdd .Off !=nil {_fea ,_cg :=_cdd .Off .XAttr .ST_CoordinateUnqualified ,_cdd .Off .YAttr .ST_CoordinateUnqualified ;if _fea !=nil &&_cg !=nil {if _cfa :=_cdd .Ext ; _cfa !=nil {_eff ,_cec =_cfa .CxAttr ,_cfa .CyAttr ;};_eb =append (_eb ,rectangle {_ff :*_fea ,_egf :*_cg ,_ba :*_fea +_eff ,_eee :*_cg +_cec });};};};_eec =_ae (_eaa ,_ffe .Choice ,_eb ,_eec );};};return _eec ;}; // ExtractText returns text from a presentation as a PresentationText object. func (_dg *Presentation )ExtractText ()*PresentationText {_db :=[]*SlideText {};for _ ,_abc :=range _dg .Slides (){_fgc :=_abc .ExtractText ();if _fgc !=nil {_db =append (_db ,_fgc );};};return &PresentationText {Slides :_db };}; // AddParagraph adds a paragraph to the text box func (_adga TextBox )AddParagraph ()_agf .Paragraph {_ebea :=_gb .NewCT_TextParagraph ();_adga ._cggc .TxBody .P =append (_adga ._cggc .TxBody .P ,_ebea );return _agf .MakeParagraph (_ebea );}; // Text returns text from a presentation as one string separated with line breaks. func (_eef *PresentationText )Text ()string {_cdda :=_ga .NewBuffer ([]byte {});for _ ,_ffed :=range _eef .Slides {_cdda .WriteString (_ffed .Text ());};return _cdda .String ();}; // PresentationProperties contains document specific properties. type PresentationProperties struct{_fgbc *_ef .PresentationPr }; // GetImageByRelID returns an ImageRef with the associated relation ID in the // document. func (_gfe *Presentation )GetImageByRelID (relID string )(_ed .ImageRef ,bool ){for _ ,_fcd :=range _gfe .Images {if _fcd .RelID ()==relID {return _fcd ,true ;};};return _ed .ImageRef {},false ;}; // SaveToFile writes the Presentation out to a file. func (_gag *Presentation )SaveToFile (path string )error {return _gag .saveToFile (path ,false )}; // 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 (_bcba *Presentation )AddSlideWithLayout (l SlideLayout )(Slide ,error ){_eaf :=_ef .NewCT_SlideIdListEntry ();_eaf .IdAttr =256;for _ ,_fec :=range _bcba ._bge .SldIdLst .SldId {if _fec .IdAttr >=_eaf .IdAttr {_eaf .IdAttr =_fec .IdAttr +1;};};_bcba ._bge .SldIdLst .SldId =append (_bcba ._bge .SldIdLst .SldId ,_eaf ); _dceff :=_ef .NewSld ();_efbb :=_ga .Buffer {};_bfca :=_cbf .NewEncoder (&_efbb );_cgb :=_cbf .StartElement {Name :_cbf .Name {Local :"\u0073\u006c\u0069d\u0065"}};_cgb .Attr =append (_cgb .Attr ,_cbf .Attr {Name :_cbf .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"}); _cgb .Attr =append (_cgb .Attr ,_cbf .Attr {Name :_cbf .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"}); _cgb .Attr =append (_cgb .Attr ,_cbf .Attr {Name :_cbf .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"}); _cgb .Attr =append (_cgb .Attr ,_cbf .Attr {Name :_cbf .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"}); _cgb .Attr =append (_cgb .Attr ,_cbf .Attr {Name :_cbf .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"}); _cgb .Attr =append (_cgb .Attr ,_cbf .Attr {Name :_cbf .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 _cdbg :=l ._baba .CSld .MarshalXML (_bfca ,_cgb );_cdbg !=nil {return Slide {},_cdbg ;};_bfca .Flush ();_gab :=_cbf .NewDecoder (&_efbb );_dceff .CSld =_ef .NewCT_CommonSlideData ();if _dad :=_gab .Decode (_dceff .CSld );_dad !=nil {return Slide {},_dad ; };_dceff .CSld .NameAttr =nil ;_dceff .CSld .SpTree .Choice =_ccag (_dceff .CSld .SpTree .Choice );_bcba ._egb =append (_bcba ._egb ,_dceff );_cbgd :=_bcba ._acba .AddAutoRelationship (_df .DocTypePresentation ,_df .OfficeDocumentType ,len (_bcba ._egb ),_df .SlideType ); _eaf .RIdAttr =_cbgd .ID ();_ege :=_df .AbsoluteFilename (_df .DocTypePresentation ,_df .SlideType ,len (_bcba ._egb ));_bcba .ContentTypes .AddOverride (_ege ,_df .SlideContentType );_bgac :=_ed .NewRelationships ();_bcba ._aed =append (_bcba ._aed ,_bgac ); _gac :=len (_bcba ._aed )-1;for _eaac ,_dcb :=range _bcba ._dda {if _dcb ==l .X (){_dfd :=_bcba ._dge [_eaac ];for _ ,_ddf :=range _dfd .X ().Relationship {if _ddf .TypeAttr !=_df .SlideMasterType {_bcba ._aed [_gac ].X ().Relationship =append (_bcba ._aed [_gac ].X ().Relationship ,_ddf ); };};_bgac .AddAutoRelationship (_df .DocTypePresentation ,_df .SlideType ,_eaac +1,_df .SlideLayoutType );};};_acde :=Slide {_eaf ,_dceff ,_bcba ,nil };return _acde ,nil ;};func (_efcd *Slide )ensureClrMap (){if len (_efcd ._gfa ._eab )==0||len (_efcd ._gfa ._fbef )==0{return ; };_adce :=_efcd ._gfa ._eab [0];_dafe :=_adce .ClrMap ;if _babb :=_efcd ._adcg .ClrMapOvr ;_babb !=nil {if _dcefd :=_babb .Choice ;_dcefd !=nil {if _dcefd .MasterClrMapping ==nil {if _bgb :=_dcefd .OverrideClrMapping ;_bgb !=nil {if _bgb .Bg1Attr !=_gb .ST_ColorSchemeIndexUnset {_dafe .Bg1Attr =_bgb .Bg1Attr ; };if _bgb .Tx1Attr !=_gb .ST_ColorSchemeIndexUnset {_dafe .Tx1Attr =_bgb .Tx1Attr ;};if _bgb .Bg2Attr !=_gb .ST_ColorSchemeIndexUnset {_dafe .Bg2Attr =_bgb .Bg2Attr ;};if _bgb .Tx2Attr !=_gb .ST_ColorSchemeIndexUnset {_dafe .Tx2Attr =_bgb .Tx2Attr ;};if _bgb .Accent1Attr !=_gb .ST_ColorSchemeIndexUnset {_dafe .Accent1Attr =_bgb .Accent1Attr ; };if _bgb .Accent2Attr !=_gb .ST_ColorSchemeIndexUnset {_dafe .Accent2Attr =_bgb .Accent2Attr ;};if _bgb .Accent3Attr !=_gb .ST_ColorSchemeIndexUnset {_dafe .Accent3Attr =_bgb .Accent3Attr ;};if _bgb .Accent4Attr !=_gb .ST_ColorSchemeIndexUnset {_dafe .Accent4Attr =_bgb .Accent4Attr ; };if _bgb .Accent5Attr !=_gb .ST_ColorSchemeIndexUnset {_dafe .Accent5Attr =_bgb .Accent5Attr ;};if _bgb .Accent6Attr !=_gb .ST_ColorSchemeIndexUnset {_dafe .Accent6Attr =_bgb .Accent6Attr ;};if _bgb .HlinkAttr !=_gb .ST_ColorSchemeIndexUnset {_dafe .HlinkAttr =_bgb .HlinkAttr ; };if _bgb .FolHlinkAttr !=_gb .ST_ColorSchemeIndexUnset {_dafe .FolHlinkAttr =_bgb .FolHlinkAttr ;};};};};};_efcd ._ecc =_dafe ;}; // 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 (_dce PlaceHolder )Clear (){_dce .ClearAll ();_feae :=_gb .NewCT_TextParagraph ();_dce ._gf .TxBody .P =[]*_gb .CT_TextParagraph {_feae };_feae .EndParaRPr =_gb .NewCT_TextCharacterProperties ();_feae .EndParaRPr .LangAttr =_df .String ("\u0065\u006e\u002dU\u0053"); }; // AddImageToRels adds an image relationship to a slide without putting image on the slide. func (_ffg Slide )AddImageToRels (img _ed .ImageRef )string {_bdb :=0;for _ebaf ,_gfd :=range _ffg ._gfa .Images {if _gfd ==img {_bdb =_ebaf +1;break ;};};var _ccac string ;for _cagg ,_bacb :=range _ffg ._gfa .Slides (){if _bacb ._adcg ==_ffg ._adcg {_cddag :=_g .Sprintf ("\u002e\u002e\u002f\u006ded\u0069\u0061\u002f\u0069\u006d\u0061\u0067\u0065\u0025\u0064\u002e\u0025\u0073",_bdb ,img .Format ()); _cffa :=_ffg ._gfa ._aed [_cagg ].AddRelationship (_cddag ,_df .ImageType );_ccac =_cffa .ID ();};};return _ccac ;}; // SlideLayouts returns the slide layouts defined in the presentation. func (_fab *Presentation )SlideLayouts ()[]SlideLayout {_fbec :=[]SlideLayout {};for _ ,_cee :=range _fab ._dda {_fbec =append (_fbec ,SlideLayout {_cee });};return _fbec ;};func (_afeg *Presentation )Validate ()error {if _baff :=_afeg ._bge .Validate (); _baff !=nil {return _baff ;};for _feeb ,_cbb :=range _afeg .Slides (){if _dcda :=_cbb .ValidateWithPath (_g .Sprintf ("\u0053l\u0069\u0064\u0065\u005b\u0025\u0064]",_feeb ));_dcda !=nil {return _dcda ;};};for _dcc ,_eea :=range _afeg ._eab {if _edcae :=_eea .ValidateWithPath (_g .Sprintf ("\u0053l\u0069d\u0065\u004d\u0061\u0073\u0074\u0065\u0072\u005b\u0025\u0064\u005d",_dcc )); _edcae !=nil {return _edcae ;};};for _bebd ,_bfcg :=range _afeg ._dda {if _gddc :=_bfcg .ValidateWithPath (_g .Sprintf ("\u0053l\u0069d\u0065\u004c\u0061\u0079\u006f\u0075\u0074\u005b\u0025\u0064\u005d",_bebd ));_gddc !=nil {return _gddc ;};};return nil ; }; // AddTable adds a new table to a placeholder. func (_ggf PlaceHolder )AddTable ()*_ed .Table {_ggf .Clear ();_fgce :=_ef .NewCT_GroupShapeChoice ();_ggf ._eaae .CSld .SpTree .Choice =append (_ggf ._eaae .CSld .SpTree .Choice ,_fgce );_abcc :=_ef .NewCT_GraphicalObjectFrame ();_fgce .GraphicFrame =append (_fgce .GraphicFrame ,_abcc ); _abcc .Xfrm .Off =_gb .NewCT_Point2D ();_ccg :=int64 (1);_abcc .Xfrm .Off .XAttr =_gb .ST_Coordinate {ST_CoordinateUnqualified :&_ccg };_abcc .Xfrm .Off .YAttr =_gb .ST_Coordinate {ST_CoordinateUnqualified :&_ccg };_cdf :=_abcc .Graphic .CT_GraphicalObject .GraphicData ; _cdf .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"; _cadd :=_ed .NewTableWithXfrm (_abcc .Xfrm );_cdf .Any =append (_cdf .Any ,_cadd .X ());return _cadd ;}; // Type returns the placeholder type func (_bcfb PlaceHolder )Type ()_ef .ST_PlaceholderType {return _bcfb ._gf .NvSpPr .NvPr .Ph .TypeAttr }; // AddTextBox adds an empty textbox to a slide. func (_cfdf Slide )AddTextBox ()TextBox {_abbe :=_ef .NewCT_GroupShapeChoice ();_cfdf ._adcg .CSld .SpTree .Choice =append (_cfdf ._adcg .CSld .SpTree .Choice ,_abbe );_fdc :=_ef .NewCT_Shape ();_abbe .Sp =append (_abbe .Sp ,_fdc );_fdc .SpPr =_gb .NewCT_ShapeProperties (); _fdc .SpPr .Xfrm =_gb .NewCT_Transform2D ();_fdc .SpPr .PrstGeom =_gb .NewCT_PresetGeometry2D ();_fdc .SpPr .PrstGeom .PrstAttr =_gb .ST_ShapeTypeRect ;_fdc .NvSpPr =_ef .NewCT_ShapeNonVisual ();_fdc .NvSpPr .CNvSpPr =_gb .NewCT_NonVisualDrawingShapeProps (); _adf :=true ;_fdc .NvSpPr .CNvSpPr .TxBoxAttr =&_adf ;_fdc .TxBody =_gb .NewCT_TextBody ();_fdc .TxBody .BodyPr =_gb .NewCT_TextBodyProperties ();_fdc .TxBody .BodyPr .WrapAttr =_gb .ST_TextWrappingTypeSquare ;_fdc .TxBody .BodyPr .SpAutoFit =_gb .NewCT_TextShapeAutofit (); _bdab :=TextBox {_fdc };_bdab .Properties ().SetWidth (3*_cb .Inch );_bdab .Properties ().SetHeight (1*_cb .Inch );_bdab .Properties ().SetPosition (0,0);return _bdab ;}; // ViewProperties contains presentation specific properties. type ViewProperties struct{_gffa *_ef .ViewPr }; // X returns the inner wrapped XML type. func (_cbdf ViewProperties )X ()*_ef .ViewPr {return _cbdf ._gffa }; // NewViewProperties constructs a new ViewProperties. func NewViewProperties ()ViewProperties {return ViewProperties {_gffa :_ef .NewViewPr ()}}; // ExtLst returns the ExtLst property. func (_abf ViewProperties )ExtLst ()*_ef .CT_ExtensionList {return _abf ._gffa .ExtLst };func (_eeb *Presentation )nextSlideID ()uint32 {_bee :=uint32 (256);for _ ,_deg :=range _eeb ._bge .SldIdLst .SldId {if _deg .IdAttr >=_bee {_bee =_deg .IdAttr +1; };};return _bee ;}; // ShowPr returns the ShowPr property. func (_dcad PresentationProperties )ShowPr ()*_ef .CT_ShowProperties {return _dcad ._fgbc .ShowPr }; // SlideViewPr returns the SlideViewPr property. func (_gdef ViewProperties )SlideViewPr ()*_ef .CT_SlideViewProperties {return _gdef ._gffa .SlideViewPr }; // SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template func (_ebdg *Presentation )SaveAsTemplate (w _fe .Writer )error {return _ebdg .save (w ,true )}; // SetOffsetX sets horizontal offset of text box in distance units (see measurement package). func (_eeec TextBox )SetOffsetX (offX float64 ){_aafe :=_eeec .getOff ();_ceac :=_cb .ToEMU (offX );_aafe .XAttr =_gb .ST_Coordinate {ST_CoordinateUnqualified :&_ceac };}; // LastViewAttr returns the LastViewAttr property. func (_dbdc ViewProperties )LastViewAttr ()_ef .ST_ViewType {return _dbdc ._gffa .LastViewAttr }; // SlideScreenSize represents the slide screen size as a 2 element array // representing the width and height in EMU units. type SlideScreenSize [2]int32 ; // Height returns slide screen size height in EMU units. func (_fbab *SlideScreenSize )Height ()int32 {return _fbab [1]}; // GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation. func (_egff *Slide )GetColorBySchemeColor (schClr _gb .ST_SchemeColorVal )*_gb .CT_Color {_egff .ensureClrMap ();_cagd :=_egff ._ecc ;if _cagd ==nil {return nil ;};var _dfcf _gb .ST_ColorSchemeIndex ;switch schClr .String (){case "\u0062\u0067\u0031":_dfcf =_cagd .Bg1Attr ; case "\u0062\u0067\u0032":_dfcf =_cagd .Bg2Attr ;case "\u0074\u0078\u0031":_dfcf =_cagd .Tx1Attr ;case "\u0074\u0078\u0032":_dfcf =_cagd .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_dfcf =_cagd .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_dfcf =_cagd .Accent2Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0033":_dfcf =_cagd .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_dfcf =_cagd .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_dfcf =_cagd .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_dfcf =_cagd .Accent6Attr ; case "\u0068\u006c\u0069n\u006b":_dfcf =_cagd .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_dfcf =_cagd .FolHlinkAttr ;case "\u0064\u006b\u0031":_dfcf =_gb .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_dfcf =_gb .ST_ColorSchemeIndexDk2 ; case "\u006c\u0074\u0031":_dfcf =_gb .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_dfcf =_gb .ST_ColorSchemeIndexLt2 ;default:_dfcf =_gb .ST_ColorSchemeIndexUnset ;};_cbaa :=_egff ._gfa ._fbef [0];_gbbg :=_cbaa .ThemeElements ;if _gbbg ==nil {return nil ; };var _cafd *_gb .CT_Color ;_bcg :=_gbbg .ClrScheme ;switch _dfcf .String (){case "\u0064\u006b\u0031":_cafd =_bcg .Dk1 ;case "\u0064\u006b\u0032":_cafd =_bcg .Dk2 ;case "\u006c\u0074\u0031":_cafd =_bcg .Lt1 ;case "\u006c\u0074\u0032":_cafd =_bcg .Lt2 ; case "\u0061c\u0063\u0065\u006e\u0074\u0031":_cafd =_bcg .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_cafd =_bcg .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_cafd =_bcg .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_cafd =_bcg .Accent4 ; case "\u0061c\u0063\u0065\u006e\u0074\u0035":_cafd =_bcg .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_cafd =_bcg .Accent6 ;case "\u0068\u006c\u0069n\u006b":_cafd =_bcg .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_cafd =_bcg .FolHlink ; default:return nil ;};return _cafd ;}; // Index returns the placeholder index func (_cad PlaceHolder )Index ()uint32 {if _cad ._gf .NvSpPr .NvPr .Ph .IdxAttr ==nil {return 0;};return *_cad ._gf .NvSpPr .NvPr .Ph .IdxAttr ;}; // 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 *_ef .CT_Shape ;GraphicFrame *_ef .CT_GraphicalObjectFrame ;Paragraph *_gb .CT_TextParagraph ;Run *_gb .CT_RegularTextRun ;TableInfo *TableInfo ;_af []rectangle ;_bc int ;_fa int ;}; // AddTable adds an empty table to a slide. func (_ggae Slide )AddTable ()*_ed .Table {_fbcg :=_ef .NewCT_GroupShapeChoice ();_ggae ._adcg .CSld .SpTree .Choice =append (_ggae ._adcg .CSld .SpTree .Choice ,_fbcg );_fcbc :=_ef .NewCT_GraphicalObjectFrame ();_fbcg .GraphicFrame =append (_fbcg .GraphicFrame ,_fcbc ); _fcbc .Xfrm .Off =_gb .NewCT_Point2D ();_dfa :=int64 (1);_fcbc .Xfrm .Off .XAttr =_gb .ST_Coordinate {ST_CoordinateUnqualified :&_dfa };_fcbc .Xfrm .Off .YAttr =_gb .ST_Coordinate {ST_CoordinateUnqualified :&_dfa };_ccfd :=_fcbc .Graphic .CT_GraphicalObject .GraphicData ; _ccfd .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"; _efdc :=_ed .NewTableWithXfrm (_fcbc .Xfrm );_ccfd .Any =append (_ccfd .Any ,_efdc .X ());return _efdc ;}; // Paragraphs returns the paragraphs defined in the placeholder. func (_caa PlaceHolder )Paragraphs ()[]_agf .Paragraph {_ageb :=[]_agf .Paragraph {};for _ ,_cbff :=range _caa ._gf .TxBody .P {_ageb =append (_ageb ,_agf .MakeParagraph (_cbff ));};return _ageb ;}; // 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 };}; // Sid returns the sid of slide func (_eae Slide )Sid ()*_ef .CT_SlideIdListEntry {return _eae ._bdfc }; // 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 (_ceg PlaceHolder )SetText (text string ){_ceg .Clear ();_gdg :=_gb .NewEG_TextRun ();_gdg .R =_gb .NewCT_RegularTextRun ();_gdg .R .T =text ;if len (_ceg ._gf .TxBody .P )==0{_ceg ._gf .TxBody .P =append (_ceg ._gf .TxBody .P ,_gb .NewCT_TextParagraph ()); };_ceg ._gf .TxBody .P [0].EG_TextRun =nil ;_ceg ._gf .TxBody .P [0].EG_TextRun =append (_ceg ._gf .TxBody .P [0].EG_TextRun ,_gdg );}; // New initializes and returns a new presentation func New ()*Presentation {_gfc :=_dfg ();_gfc .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"); _gfc .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"); _gfc .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"); _gfc .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"); _gfc .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"); _gfc .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"); _gfc .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"); _gfc ._bge .SldMasterIdLst =_ef .NewCT_SlideMasterIdList ();_caac :=_ef .NewSldMaster ();_caac .ClrMap .Bg1Attr =_gb .ST_ColorSchemeIndexLt1 ;_caac .ClrMap .Bg2Attr =_gb .ST_ColorSchemeIndexLt2 ;_caac .ClrMap .Tx1Attr =_gb .ST_ColorSchemeIndexDk1 ;_caac .ClrMap .Tx2Attr =_gb .ST_ColorSchemeIndexDk2 ; _caac .ClrMap .Accent1Attr =_gb .ST_ColorSchemeIndexAccent1 ;_caac .ClrMap .Accent2Attr =_gb .ST_ColorSchemeIndexAccent2 ;_caac .ClrMap .Accent3Attr =_gb .ST_ColorSchemeIndexAccent3 ;_caac .ClrMap .Accent4Attr =_gb .ST_ColorSchemeIndexAccent4 ;_caac .ClrMap .Accent5Attr =_gb .ST_ColorSchemeIndexAccent5 ; _caac .ClrMap .Accent6Attr =_gb .ST_ColorSchemeIndexAccent6 ;_caac .ClrMap .HlinkAttr =_gb .ST_ColorSchemeIndexHlink ;_caac .ClrMap .FolHlinkAttr =_gb .ST_ColorSchemeIndexFolHlink ;_gfc ._eab =append (_gfc ._eab ,_caac );_ggd :=_df .AbsoluteFilename (_df .DocTypePresentation ,_df .SlideMasterType ,1); _gfc .ContentTypes .AddOverride (_ggd ,_df .SlideMasterContentType );_bdd :=_gfc ._acba .AddAutoRelationship (_df .DocTypePresentation ,_df .OfficeDocumentType ,1,_df .SlideMasterType );_ggff :=_ef .NewCT_SlideMasterIdListEntry ();_ggff .IdAttr =_df .Uint32 (2147483648); _ggff .RIdAttr =_bdd .ID ();_gfc ._bge .SldMasterIdLst .SldMasterId =append (_gfc ._bge .SldMasterIdLst .SldMasterId ,_ggff );_dbb :=_ed .NewRelationships ();_gfc ._bbe =append (_gfc ._bbe ,_dbb );_fgaf :=_ef .NewSldLayout ();_ded :=_dbb .AddAutoRelationship (_df .DocTypePresentation ,_df .SlideMasterType ,1,_df .SlideLayoutType ); _fggb :=_df .AbsoluteFilename (_df .DocTypePresentation ,_df .SlideLayoutType ,1);_gfc .ContentTypes .AddOverride (_fggb ,_df .SlideLayoutContentType );_dbb .AddAutoRelationship (_df .DocTypePresentation ,_df .SlideMasterType ,1,_df .ThemeType );_gfc ._dda =append (_gfc ._dda ,_fgaf ); _caac .SldLayoutIdLst =_ef .NewCT_SlideLayoutIdList ();_gbae :=_ef .NewCT_SlideLayoutIdListEntry ();_gbae .IdAttr =_df .Uint32 (2147483649);_gbae .RIdAttr =_ded .ID ();_caac .SldLayoutIdLst .SldLayoutId =append (_caac .SldLayoutIdLst .SldLayoutId ,_gbae ); _dec :=_ed .NewRelationships ();_gfc ._dge =append (_gfc ._dge ,_dec );_dec .AddAutoRelationship (_df .DocTypePresentation ,_df .SlideType ,1,_df .SlideMasterType );_gfc ._bge .NotesSz .CxAttr =6858000;_gfc ._bge .NotesSz .CyAttr =9144000;_cca :=_gb .NewTheme (); _cca .NameAttr =_df .String ("\u0075n\u0069o\u0066\u0066\u0069\u0063\u0065\u0020\u0054\u0068\u0065\u006d\u0065");_cca .ThemeElements .ClrScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_cca .ThemeElements .ClrScheme .Dk1 .SysClr =_gb .NewCT_SystemColor (); _cca .ThemeElements .ClrScheme .Dk1 .SysClr .LastClrAttr =_df .String ("\u0030\u0030\u0030\u0030\u0030\u0030");_cca .ThemeElements .ClrScheme .Dk1 .SysClr .ValAttr =_gb .ST_SystemColorValWindowText ;_cca .ThemeElements .ClrScheme .Lt1 .SysClr =_gb .NewCT_SystemColor (); _cca .ThemeElements .ClrScheme .Lt1 .SysClr .LastClrAttr =_df .String ("\u0066\u0066\u0066\u0066\u0066\u0066");_cca .ThemeElements .ClrScheme .Lt1 .SysClr .ValAttr =_gb .ST_SystemColorValWindow ;_cca .ThemeElements .ClrScheme .Dk2 .SrgbClr =_gb .NewCT_SRgbColor (); _cca .ThemeElements .ClrScheme .Dk2 .SrgbClr .ValAttr ="\u0034\u0034\u0035\u0034\u0036\u0061";_cca .ThemeElements .ClrScheme .Lt2 .SrgbClr =_gb .NewCT_SRgbColor ();_cca .ThemeElements .ClrScheme .Lt2 .SrgbClr .ValAttr ="\u0065\u0037\u0065\u0037\u0065\u0036"; _cca .ThemeElements .ClrScheme .Accent1 .SrgbClr =_gb .NewCT_SRgbColor ();_cca .ThemeElements .ClrScheme .Accent1 .SrgbClr .ValAttr ="\u0034\u0034\u0037\u0032\u0063\u0034";_cca .ThemeElements .ClrScheme .Accent2 .SrgbClr =_gb .NewCT_SRgbColor ();_cca .ThemeElements .ClrScheme .Accent2 .SrgbClr .ValAttr ="\u0065\u0064\u0037\u0064\u0033\u0031"; _cca .ThemeElements .ClrScheme .Accent3 .SrgbClr =_gb .NewCT_SRgbColor ();_cca .ThemeElements .ClrScheme .Accent3 .SrgbClr .ValAttr ="\u0061\u0035\u0061\u0035\u0061\u0035";_cca .ThemeElements .ClrScheme .Accent4 .SrgbClr =_gb .NewCT_SRgbColor ();_cca .ThemeElements .ClrScheme .Accent4 .SrgbClr .ValAttr ="\u0066\u0066\u0063\u0030\u0030\u0030"; _cca .ThemeElements .ClrScheme .Accent5 .SrgbClr =_gb .NewCT_SRgbColor ();_cca .ThemeElements .ClrScheme .Accent5 .SrgbClr .ValAttr ="\u0035\u0062\u0039\u0062\u0064\u0035";_cca .ThemeElements .ClrScheme .Accent6 .SrgbClr =_gb .NewCT_SRgbColor ();_cca .ThemeElements .ClrScheme .Accent6 .SrgbClr .ValAttr ="\u0037\u0030\u0061\u0064\u0034\u0037"; _cca .ThemeElements .ClrScheme .Hlink .SrgbClr =_gb .NewCT_SRgbColor ();_cca .ThemeElements .ClrScheme .Hlink .SrgbClr .ValAttr ="\u0030\u0035\u0036\u0033\u0063\u0031";_cca .ThemeElements .ClrScheme .FolHlink .SrgbClr =_gb .NewCT_SRgbColor ();_cca .ThemeElements .ClrScheme .FolHlink .SrgbClr .ValAttr ="\u0039\u0035\u0034\u0066\u0037\u0032"; _cca .ThemeElements .FontScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_cca .ThemeElements .FontScheme .MajorFont .Latin .TypefaceAttr ="\u0043\u0061\u006c\u0069\u0062\u0072\u0069\u0020\u004c\u0069\u0067\u0068\u0074";_cca .ThemeElements .FontScheme .MinorFont .Latin .TypefaceAttr ="\u0043a\u006c\u0069\u0062\u0072\u0069"; _cca .ThemeElements .FmtScheme .NameAttr =_df .String ("\u004f\u0066\u0066\u0069\u0063\u0065");_bga :=_gb .NewEG_FillProperties ();_cca .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_cca .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_bga ); _bga .SolidFill =&_gb .CT_SolidColorFillProperties {SchemeClr :&_gb .CT_SchemeColor {ValAttr :_gb .ST_SchemeColorValPhClr }};_bga =_gb .NewEG_FillProperties ();_cca .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_cca .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_bga ); _cca .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_cca .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_bga );_bga .GradFill =&_gb .CT_GradientFillProperties {RotWithShapeAttr :_df .Bool (true ),GsLst :&_gb .CT_GradientStopList {},Lin :&_gb .CT_LinearShadeProperties {}}; _bga .GradFill .Lin .AngAttr =_df .Int32 (5400000);_bga .GradFill .Lin .ScaledAttr =_df .Bool (false );_bfe :=_gb .NewCT_GradientStop ();_bfe .PosAttr .ST_PositiveFixedPercentageDecimal =_df .Int32 (0);_bfe .SchemeClr =&_gb .CT_SchemeColor {ValAttr :_gb .ST_SchemeColorValPhClr }; _bga .GradFill .GsLst .Gs =append (_bga .GradFill .GsLst .Gs ,_bfe );_bfe =_gb .NewCT_GradientStop ();_bfe .PosAttr .ST_PositiveFixedPercentageDecimal =_df .Int32 (50000);_bfe .SchemeClr =&_gb .CT_SchemeColor {ValAttr :_gb .ST_SchemeColorValPhClr };_bga .GradFill .GsLst .Gs =append (_bga .GradFill .GsLst .Gs ,_bfe ); _cca .ThemeElements .FmtScheme .LnStyleLst =_gb .NewCT_LineStyleList ();for _cgf :=0;_cgf < 3;_cgf ++{_bfac :=_gb .NewCT_LineProperties ();_bfac .WAttr =_df .Int32 (int32 (6350*(_cgf +1)));_bfac .CapAttr =_gb .ST_LineCapFlat ;_bfac .CmpdAttr =_gb .ST_CompoundLineSng ; _bfac .AlgnAttr =_gb .ST_PenAlignmentCtr ;_cca .ThemeElements .FmtScheme .LnStyleLst .Ln =append (_cca .ThemeElements .FmtScheme .LnStyleLst .Ln ,_bfac );};_cca .ThemeElements .FmtScheme .EffectStyleLst =_gb .NewCT_EffectStyleList ();for _agcf :=0;_agcf < 3; _agcf ++{_fbd :=_gb .NewCT_EffectStyleItem ();_fbd .EffectLst =_gb .NewCT_EffectList ();_cca .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle =append (_cca .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle ,_fbd );};_aag :=_gb .NewEG_FillProperties (); _aag .SolidFill =&_gb .CT_SolidColorFillProperties {SchemeClr :&_gb .CT_SchemeColor {ValAttr :_gb .ST_SchemeColorValPhClr }};_cca .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_cca .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_aag ); _cca .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_cca .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_aag );_cca .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_cca .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_bga ); _gfc ._fbef =append (_gfc ._fbef ,_cca );_dcef :=_df .AbsoluteFilename (_df .DocTypePresentation ,_df .ThemeType ,1);_gfc .ContentTypes .AddOverride (_dcef ,_df .ThemeContentType );_gfc ._acba .AddAutoRelationship (_df .DocTypePresentation ,_df .OfficeDocumentType ,1,_df .ThemeType ); _edc :=_ed .NewRelationships ();_gfc ._aba =append (_gfc ._aba ,_edc );return _gfc ;}; // SlideLayouts returns a slice of all layouts in SlideMaster. func (_dccd SlideMaster )SlideLayouts ()[]SlideLayout {_gee :=map[string ]int {};_dgfd :=[]SlideLayout {};for _ ,_bffg :=range _dccd ._cbgf .Relationships (){_ebgd :=_e .Replace (_bffg .Target (),".\u002e\u002f\u0073\u006c\u0069\u0064e\u004c\u0061\u0079\u006f\u0075\u0074\u0073\u002f\u0073l\u0069\u0064\u0065L\u0061y\u006f\u0075\u0074","",-1); _ebgd =_e .Replace (_ebgd ,"\u002e\u0078\u006d\u006c","",-1);if _ddda ,_bacc :=_bf .ParseInt (_ebgd ,10,32);_bacc ==nil {_gee [_bffg .ID ()]=int (_ddda );};};for _ ,_fcbe :=range _dccd ._ffbe .SldLayoutIdLst .SldLayoutId {if _bbda ,_egg :=_gee [_fcbe .RIdAttr ]; _egg {_fbbb :=_dccd ._ebe ._dda [_bbda -1];_dgfd =append (_dgfd ,SlideLayout {_fbbb });};};return _dgfd ;}; // Open opens and reads a document from a file (.pptx). func Open (filename string )(*Presentation ,error ){_bbd ,_fgb :=_ca .Open (filename );if _fgb !=nil {return nil ,_g .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_fgb );};defer _bbd .Close (); _fgg ,_fgb :=_ca .Stat (filename );if _fgb !=nil {return nil ,_g .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_fgb );};_ =_fgg ;return Read (_bbd ,_fgg .Size ());}; // OutlineViewPr returns the OutlineViewPr property. func (_ccad ViewProperties )OutlineViewPr ()*_ef .CT_OutlineViewProperties {return _ccad ._gffa .OutlineViewPr ;}; // 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 (_feg sort2d )Less (i ,j int )bool {_afg ,_ddd :=_feg [i ],_feg [j ];_aac ,_cdc :=_afg ._af ,_ddd ._af ;_fcaa ,_gec :=len (_aac )-1,len (_cdc )-1;_cc ,_fga :=0,0;for {_edg ,_aeea ,_acc ,_efd ,_facd ,_eaag ,_fef ,_fgcf :=_aac [_cc ]._egf ,_cdc [_fga ]._egf ,_aac [_cc ]._eee ,_cdc [_fga ]._eee ,_aac [_cc ]._ff ,_cdc [_fga ]._ff ,_aac [_cc ]._ba ,_cdc [_fga ]._ba ; if _edg ==_aeea ||((_agff .Abs (float64 (_edg )-float64 (_aeea ))< _fca )&&((_edg >=_aeea &&_edg <=_efd )||(_aeea >=_edg &&_aeea <=_acc ))&&(_fef < _eaag ||_facd > _fgcf )){if _facd ==_eaag {if _cc < _fcaa &&_fga < _gec {_cc ++;_fga ++;continue ;};if _cc >=_fcaa &&_fga >=_gec {break ; };return _cc >=_fcaa ;}else {return _facd < _eaag ;};}else {return _edg < _aeea ;};};_cdga ,_bad ,_fge ,_aeee :=_afg ._bc ,_ddd ._bc ,_afg ._fa ,_ddd ._fa ;if _cdga ==_bad {return _fge <=_aeee ;};return _cdga < _bad ;}; // Properties returns the properties of the TextBox. func (_bde Image )Properties ()_agf .ShapeProperties {if _bde ._dca .SpPr ==nil {_bde ._dca .SpPr =_gb .NewCT_ShapeProperties ();};return _agf .MakeShapeProperties (_bde ._dca .SpPr );};func (_dadb *Presentation )save (_edca _fe .Writer ,_afbg bool )error {const _agb ="\u0050\u0072\u0065\u0073en\u0074\u0061\u0074\u0069\u006f\u006e\u003a\u0070\u002e\u0053\u0061\u0076\u0065"; if _bdef :=_dadb ._bge .Validate ();_bdef !=nil {_ad .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",_bdef ); };if !_ea .GetLicenseKey ().IsLicensed ()&&!_fcg {_g .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");_g .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 _ag .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 (_dadb ._cga )==0{_gaa ,_abge :=_ea .GenRefId ("\u0070\u0077");if _abge !=nil {_ad .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_abge ); return _abge ;};_dadb ._cga =_gaa ;};if _fee :=_ea .Track (_dadb ._cga ,_agb );_fee !=nil {_ad .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fee );return _fee ;};if _afbg {_dadb .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"); _dadb .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 {_dadb .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"); _dadb .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"); };_ggc :=_df .DocTypePresentation ;_dag :=_bda .NewWriter (_edca );defer _dag .Close ();if _dcd :=_f .MarshalXML (_dag ,_df .BaseRelsFilename ,_dadb .Rels .X ());_dcd !=nil {return _dcd ;};if _dadbf :=_f .MarshalXMLByType (_dag ,_ggc ,_df .ExtendedPropertiesType ,_dadb .AppProperties .X ()); _dadbf !=nil {return _dadbf ;};if _efbe :=_f .MarshalXMLByType (_dag ,_ggc ,_df .CorePropertiesType ,_dadb .CoreProperties .X ());_efbe !=nil {return _efbe ;};if _efgb :=_f .MarshalXMLByType (_dag ,_ggc ,_df .PresentationPropertiesType ,_dadb ._fed .X ()); _efgb !=nil {return _efgb ;};if _caaca :=_f .MarshalXMLByType (_dag ,_ggc ,_df .ViewPropertiesType ,_dadb ._ec .X ());_caaca !=nil {return _caaca ;};if _abad :=_f .MarshalXMLByType (_dag ,_ggc ,_df .TableStylesType ,_dadb ._dfe .X ());_abad !=nil {return _abad ; };if _dadb .CustomProperties .X ()!=nil {if _ebcb :=_f .MarshalXMLByType (_dag ,_ggc ,_df .CustomPropertiesType ,_dadb .CustomProperties .X ());_ebcb !=nil {return _ebcb ;};};if _dadb .Thumbnail !=nil {_geg ,_cbd :=_dag .Create ("\u0064\u006f\u0063Pr\u006f\u0070\u0073\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c\u002e\u006a\u0070\u0065\u0067"); if _cbd !=nil {return _cbd ;};if _gc :=_be .Encode (_geg ,_dadb .Thumbnail ,nil );_gc !=nil {return _gc ;};};_aec :=_df .AbsoluteFilename (_ggc ,_df .OfficeDocumentType ,0);if _ebcg :=_f .MarshalXML (_dag ,_aec ,_dadb ._bge );_ebcg !=nil {return _ebcg ; };if _ddc :=_f .MarshalXML (_dag ,_f .RelationsPathFor (_aec ),_dadb ._acba .X ());_ddc !=nil {return _ddc ;};for _fae ,_dcbf :=range _dadb ._egb {_gcc :=_df .AbsoluteFilename (_df .DocTypePresentation ,_df .SlideType ,_fae +1);_f .MarshalXML (_dag ,_gcc ,_dcbf ); if !_dadb ._aed [_fae ].IsEmpty (){_cffc :=_f .RelationsPathFor (_gcc );_f .MarshalXML (_dag ,_cffc ,_dadb ._aed [_fae ].X ());};};for _eca ,_beb :=range _dadb ._eab {_cbc :=_df .AbsoluteFilename (_df .DocTypePresentation ,_df .SlideMasterType ,_eca +1); _f .MarshalXML (_dag ,_cbc ,_beb );if !_dadb ._bbe [_eca ].IsEmpty (){_bgc :=_f .RelationsPathFor (_cbc );_f .MarshalXML (_dag ,_bgc ,_dadb ._bbe [_eca ].X ());};};for _baf ,_dfc :=range _dadb ._dda {_cbca :=_df .AbsoluteFilename (_df .DocTypePresentation ,_df .SlideLayoutType ,_baf +1); _f .MarshalXML (_dag ,_cbca ,_dfc );if !_dadb ._dge [_baf ].IsEmpty (){_dgb :=_f .RelationsPathFor (_cbca );_f .MarshalXML (_dag ,_dgb ,_dadb ._dge [_baf ].X ());};};for _dgg ,_accd :=range _dadb ._fbef {_fedc :=_df .AbsoluteFilename (_df .DocTypePresentation ,_df .ThemeType ,_dgg +1); _f .MarshalXML (_dag ,_fedc ,_accd );if !_dadb ._aba [_dgg ].IsEmpty (){_bffd :=_f .RelationsPathFor (_fedc );_f .MarshalXML (_dag ,_bffd ,_dadb ._aba [_dgg ].X ());};};for _dae ,_cbga :=range _dadb ._abbb {_fgbfe :=_df .AbsoluteFilename (_ggc ,_df .ChartType ,_dae +1); _f .MarshalXML (_dag ,_fgbfe ,_cbga );};for _gdd ,_def :=range _dadb ._ebc {_ccf :=_df .AbsoluteFilename (_ggc ,_df .HandoutMasterType ,_gdd +1);_f .MarshalXML (_dag ,_ccf ,_def );};for _gdfb ,_cfda :=range _dadb ._dgfb {_egd :=_df .AbsoluteFilename (_ggc ,_df .NotesMasterType ,_gdfb +1); _f .MarshalXML (_dag ,_egd ,_cfda );};for _dcdd ,_fdd :=range _dadb ._caff {_abbbd :=_df .AbsoluteFilename (_ggc ,_df .CustomXMLType ,_dcdd +1);_f .MarshalXML (_dag ,_abbbd ,_fdd );};for _ebdgg ,_ead :=range _dadb .Images {_cbgb :=_ebdgg +1;if _cgbd ,_cba :=_dc .StringToNumbers (_ead .Target ()); _cba &&_cbgb !=_cgbd {_cbgb =_cgbd ;};if _gaac :=_ed .AddImageToZip (_dag ,_ead ,_cbgb ,_df .DocTypePresentation );_gaac !=nil {return _gaac ;};};_dadb .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_dadb .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067"); _dadb .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_dadb .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");if _cdgg :=_f .MarshalXML (_dag ,_df .ContentTypesFilename ,_dadb .ContentTypes .X ()); _cdgg !=nil {return _cdgg ;};if _ecaa :=_dadb .WriteExtraFiles (_dag );_ecaa !=nil {return _ecaa ;};return nil ;}; // NotesViewPr returns the NotesViewPr property. func (_gddg ViewProperties )NotesViewPr ()*_ef .CT_NotesViewProperties {return _gddg ._gffa .NotesViewPr }; // SetSize sets the slide size, take argument of SlideScreenSize. func (_ebbe *SlideSize )SetSize (sz SlideScreenSize ){_ebbe ._fagd .CxAttr =sz [0];_ebbe ._fagd .CyAttr =sz [1];}; // AddParagraph adds a new paragraph to a placeholder. func (_bfc PlaceHolder )AddParagraph ()_agf .Paragraph {_ffec :=_agf .MakeParagraph (_gb .NewCT_TextParagraph ());_bfc ._gf .TxBody .P =append (_bfc ._gf .TxBody .P ,_ffec .X ());return _ffec ;};func (_fgbcc *Slide )getSlideLayoutRels ()_ed .Relationships {_dfdee :=_fgbcc ._gfa ; for _gcd ,_egfc :=range _dfdee .SlideLayouts (){if *_fgbcc .GetSlideLayout ().CSld ==*_egfc ._baba .CSld {return _dfdee ._dge [_gcd ];};};return _ed .Relationships {};}; // 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 (_fegc *Presentation )AddDefaultSlideWithLayout (l SlideLayout )(Slide ,error ){_ccaa ,_efe :=_fegc .AddSlideWithLayout (l );for _ ,_cgfc :=range _ccaa .PlaceHolders (){_cgfc .Clear ();switch _cgfc .Type (){case _ef .ST_PlaceholderTypeFtr ,_ef .ST_PlaceholderTypeDt ,_ef .ST_PlaceholderTypeSldNum :_cgfc .Remove (); };};return _ccaa ,_efe ;};type rectangle struct{_ff int64 ;_egf int64 ;_ba int64 ;_eee int64 ;}; // Text returns text from a slide as one string separated with line breaks. func (_cfg *SlideText )Text ()string {_eac :=_ga .NewBuffer ([]byte {});for _ ,_gdf :=range _cfg .Items {if _gdf .Text !=""{_eac .WriteString (_gdf .Text );_eac .WriteString ("\u000a");};};return _eac .String ();}; // HtmlPubPr returns the HtmlPubPr property. func (_fbb PresentationProperties )HtmlPubPr ()*_ef .CT_HtmlPublishProperties {return _fbb ._fgbc .HtmlPubPr ;}; // GetLayoutImageByRelID returns an ImageRef with the associated relation ID in the // slide layout. func (_dedg *Slide )GetLayoutImageByRelID (relID string )(_ed .ImageRef ,bool ){_dddc :=_dedg .getSlideLayoutRels ();if (_dddc ==_ed .Relationships {}){return _ed .ImageRef {},false ;};_gfcd :=_dddc .GetTargetByRelId (relID );for _ ,_bafb :=range _dedg ._gfa .Images {if _bafb .Target ()==_gfcd {return _bafb ,true ; };};return _ed .ImageRef {},false ;}; // Name returns the name of the slide layout. func (_ceec SlideLayout )Name ()string {if _ceec ._baba .CSld !=nil &&_ceec ._baba .CSld .NameAttr !=nil {return *_ceec ._baba .CSld .NameAttr ;};return "";}; // GetSlideLayout returns a slide layout related to the slide. func (_ebdb *Slide )GetSlideLayout ()*_ef .SldLayout {_cbed :=_ebdb .getSlideRels ();for _ ,_geb :=range _cbed .Relationships (){if _geb .Type ()==_df .SlideLayoutType {if _edf ,_dbdg :=_dc .StringToNumbers (_geb .Target ());_dbdg {return _ebdb ._gfa ._dda [_edf -1]; };return nil ;};};return nil ;}; // SlideMaster is the slide master for a presentation. type SlideMaster struct{_ebe *Presentation ;_cbgf _ed .Relationships ;_ffbe *_ef .SldMaster ;}; // SlideSize returns presentation slide size. func (_eba *Presentation )SlideSize ()SlideSize {if _eba ._bge .SldSz ==nil {_eba ._bge .SldSz =_ef .NewCT_SlideSize ();};return SlideSize {_eba ._bge .SldSz ,_eba };}; // SorterViewPr returns the SorterViewPr property. func (_fcde ViewProperties )SorterViewPr ()*_ef .CT_SlideSorterViewProperties {return _fcde ._gffa .SorterViewPr ;}; // ValidateWithPath validates the slide passing path informaton for a better // error message. func (_faea Slide )ValidateWithPath (path string )error {if _bac :=_faea ._adcg .ValidateWithPath (path );_bac !=nil {return _bac ;};for _ ,_gbgb :=range _faea ._adcg .CSld .SpTree .Choice {for _ ,_cbbb :=range _gbgb .Sp {if _cbbb .TxBody !=nil {if len (_cbbb .TxBody .P )==0{return _ag .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 ;}; // GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation. func (_degg *Presentation )GetColorBySchemeColor (schClr _gb .ST_SchemeColorVal )*_gb .CT_Color {if len (_degg ._eab )==0||len (_degg ._fbef )==0{return nil ;};var _eadc _gb .ST_ColorSchemeIndex ;_babg :=_degg ._eab [0];_ggfg :=_babg .ClrMap ;switch schClr .String (){case "\u0062\u0067\u0031":_eadc =_ggfg .Bg1Attr ; case "\u0062\u0067\u0032":_eadc =_ggfg .Bg2Attr ;case "\u0074\u0078\u0031":_eadc =_ggfg .Tx1Attr ;case "\u0074\u0078\u0032":_eadc =_ggfg .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_eadc =_ggfg .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_eadc =_ggfg .Accent2Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0033":_eadc =_ggfg .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_eadc =_ggfg .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_eadc =_ggfg .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_eadc =_ggfg .Accent6Attr ; case "\u0068\u006c\u0069n\u006b":_eadc =_ggfg .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_eadc =_ggfg .FolHlinkAttr ;case "\u0064\u006b\u0031":_eadc =_gb .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_eadc =_gb .ST_ColorSchemeIndexDk2 ; case "\u006c\u0074\u0031":_eadc =_gb .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_eadc =_gb .ST_ColorSchemeIndexLt2 ;default:_eadc =_gb .ST_ColorSchemeIndexUnset ;};_gef :=_degg ._fbef [0];_dcbd :=_gef .ThemeElements ;if _dcbd ==nil {return nil ; };var _gbba *_gb .CT_Color ;_dged :=_dcbd .ClrScheme ;switch _eadc .String (){case "\u0064\u006b\u0031":_gbba =_dged .Dk1 ;case "\u0064\u006b\u0032":_gbba =_dged .Dk2 ;case "\u006c\u0074\u0031":_gbba =_dged .Lt1 ;case "\u006c\u0074\u0032":_gbba =_dged .Lt2 ; case "\u0061c\u0063\u0065\u006e\u0074\u0031":_gbba =_dged .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_gbba =_dged .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_gbba =_dged .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_gbba =_dged .Accent4 ; case "\u0061c\u0063\u0065\u006e\u0074\u0035":_gbba =_dged .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_gbba =_dged .Accent6 ;case "\u0068\u006c\u0069n\u006b":_gbba =_dged .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_gbba =_dged .FolHlink ; default:return nil ;};return _gbba ;};var _fcg =false ; // GetTextBoxes returns a list of all text boxes from a slide. func (_ggfa Slide )GetTextBoxes ()[]*TextBox {_agde :=[]*TextBox {};_cfc :=_ggfa ._adcg .CSld .SpTree .Choice ;for _ ,_gcce :=range _cfc {for _ ,_fagf :=range _gcce .Sp {if _fagf .NvSpPr .CNvSpPr .TxBoxAttr !=nil &&*_fagf .NvSpPr .CNvSpPr .TxBoxAttr {_agde =append (_agde ,&TextBox {_fagf }); };};};return _agde ;};func (_afe *Presentation )saveToFile (_cagc string ,_ffb bool )error {_adc ,_bccc :=_ca .Create (_cagc );if _bccc !=nil {return _bccc ;};defer _adc .Close ();return _afe .save (_adc ,_ffb );}; // 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 (_gadf *Presentation )AddImage (i _ed .Image )(_ed .ImageRef ,error ){_fda :=_ed .MakeImageRef (i ,&_gadf .DocBase ,_gadf ._acba );if i .Data ==nil &&i .Path ==""{return _fda ,_ag .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 _fda ,_ag .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 _fda ,_ag .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 !=""{_ddb :=_bd .Add (i .Path );if _ddb !=nil {return _fda ,_ddb ;};};_gadf .Images =append (_gadf .Images ,_fda );_gadf .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_gadf .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067"); _gadf .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_gadf .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");_gadf .ContentTypes .EnsureDefault (i .Format ,"\u0069\u006d\u0061\u0067\u0065\u002f"+i .Format ); return _fda ,nil ;}; // Slide represents a slide of a presentation. type Slide struct{_bdfc *_ef .CT_SlideIdListEntry ;_adcg *_ef .Sld ;_gfa *Presentation ;_ecc *_gb .CT_ColorMapping ;};type chart struct{_ee *_b .ChartSpace ;_ce string ;_gd string ;}; // Type returns the type of the slide layout. func (_daaa SlideLayout )Type ()_ef .ST_SlideLayoutType {return _daaa ._baba .TypeAttr }; // Presentation is the a presentation base document. type Presentation struct{_ed .DocBase ;_bge *_ef .Presentation ;_acba _ed .Relationships ;_egb []*_ef .Sld ;_aed []_ed .Relationships ;_eab []*_ef .SldMaster ;_bbe []_ed .Relationships ;_dda []*_ef .SldLayout ;_dge []_ed .Relationships ;_fbef []*_gb .Theme ; _aba []_ed .Relationships ;_dfe _ed .TableStyles ;_fed PresentationProperties ;_ec ViewProperties ;_abgb []*_gb .CT_Hyperlink ;_abbb []*chart ;_ebc []*_ef .HandoutMaster ;_dgfb []*_ef .NotesMaster ;_caff []*_df .XSDAny ;_cgc map[string ]string ;_cga string ; };func (_cgce TextBox )getOff ()*_gb .CT_Point2D {if _cgce ._cggc .SpPr ==nil {_cgce ._cggc .SpPr =_gb .NewCT_ShapeProperties ();};if _cgce ._cggc .SpPr .Xfrm ==nil {_cgce ._cggc .SpPr .Xfrm =_gb .NewCT_Transform2D ();};if _cgce ._cggc .SpPr .Xfrm .Off ==nil {_cgce ._cggc .SpPr .Xfrm .Off =_gb .NewCT_Point2D (); };return _cgce ._cggc .SpPr .Xfrm .Off ;}; // OpenTemplate opens a template file. func OpenTemplate (fn string )(*Presentation ,error ){_fce ,_cff :=Open (fn );if _cff !=nil {return nil ,_cff ;};return _fce ,nil ;}; // SlideSize represents a slide size of a presentation. type SlideSize struct{_fagd *_ef .CT_SlideSize ;_febf *Presentation ;}; // Properties returns the properties of the TextBox. func (_bbb TextBox )Properties ()_agf .ShapeProperties {if _bbb ._cggc .SpPr ==nil {_bbb ._cggc .SpPr =_gb .NewCT_ShapeProperties ();};return _agf .MakeShapeProperties (_bbb ._cggc .SpPr );}; // Themes returns an array of presentation themes. func (_bffb *Presentation )Themes ()[]*_gb .Theme {return _bffb ._fbef }; // NewSlideScreenSize returns slide screen size with default MS PowerPoint slide screen size 16x9. func NewSlideScreenSize ()SlideScreenSize {return NewSlideScreenSizeWithValue (SlideScreenSize16x9 [0],SlideScreenSize16x9 [1]);}; // GetLayoutByName retrieves a slide layout given a layout name. func (_dbcg *Presentation )GetLayoutByName (name string )(SlideLayout ,error ){for _ ,_gbdg :=range _dbcg ._dda {if _gbdg .CSld .NameAttr !=nil &&name ==*_gbdg .CSld .NameAttr {return SlideLayout {_gbdg },nil ;};};return SlideLayout {},_ag .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"); };func (_gga sort2d )Swap (i ,j int ){_gga [i ],_gga [j ]=_gga [j ],_gga [i ]}; // X returns the inner wrapped XML type. func (_aede *SlideSize )X ()*_ef .CT_SlideSize {return _aede ._fagd };func (_gad *Presentation )onNewRelationship (_gdda *_f .DecodeMap ,_bgd ,_fgf string ,_ggg []*_bda .File ,_gde *_c .Relationship ,_fcgb _f .Target )error {_dbd :=_df .DocTypePresentation ; switch _fgf {case _df .OfficeDocumentType :_gad ._bge =_ef .NewPresentation ();_gdda .AddTarget (_bgd ,_gad ._bge ,_fgf ,0);_gdda .AddTarget (_f .RelationsPathFor (_bgd ),_gad ._acba .X (),_fgf ,0);_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,0); case _df .CorePropertiesType :_gdda .AddTarget (_bgd ,_gad .CoreProperties .X (),_fgf ,0);_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,0);case _df .CustomPropertiesType :_gdda .AddTarget (_bgd ,_gad .CustomProperties .X (),_fgf ,0); _gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,0);case _df .PresentationPropertiesType :_gdda .AddTarget (_bgd ,_gad ._fed .X (),_fgf ,0);_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,0);case _df .ViewPropertiesType :_gdda .AddTarget (_bgd ,_gad ._ec .X (),_fgf ,0); _gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,0);case _df .TableStylesType :_gdda .AddTarget (_bgd ,_gad ._dfe .X (),_fgf ,0);_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,0);case _df .HyperLinkType :_cdgf :=_gb .NewCT_Hyperlink (); _bfcd :=uint32 (len (_gad ._abgb ));_gdda .AddTarget (_bgd ,_cdgf ,_fgf ,_bfcd );_gad ._abgb =append (_gad ._abgb ,_cdgf );case _df .CustomXMLType :_aegd :=&_df .XSDAny {};_dea :=uint32 (len (_gad ._caff ));_gdda .AddTarget (_bgd ,_aegd ,_fgf ,_dea );_gad ._caff =append (_gad ._caff ,_aegd ); _gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,len (_gad ._caff ));case _df .ChartType :_cfae :=chart {_ee :_b .NewChartSpace ()};_gce :=uint32 (len (_gad ._abbb ));_gdda .AddTarget (_bgd ,_cfae ._ee ,_fgf ,_gce );_gad ._abbb =append (_gad ._abbb ,&_cfae ); _gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,len (_gad ._abbb ));_cfae ._gd =_gde .TargetAttr ;case _df .HandoutMasterType :_dbc :=_ef .NewHandoutMaster ();_fage :=uint32 (len (_gad ._ebc ));_gdda .AddTarget (_bgd ,_dbc ,_fgf ,_fage ); _gad ._ebc =append (_gad ._ebc ,_dbc );_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,len (_gad ._ebc ));case _df .NotesMasterType :_ecaf :=_ef .NewNotesMaster ();_gaf :=uint32 (len (_gad ._dgfb ));_gdda .AddTarget (_bgd ,_ecaf ,_fgf ,_gaf ); _gad ._dgfb =append (_gad ._dgfb ,_ecaf );_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,len (_gad ._dgfb ));case _df .ExtendedPropertiesType :_gdda .AddTarget (_bgd ,_gad .AppProperties .X (),_fgf ,0);_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,0); case _df .SlideType :if _cgbb ,_eagc :=_dc .StringToNumbers (_bgd );_eagc {if len (_gad ._egb )< _cgbb {_febd :=_ef .NewSld ();_gad ._egb =append (_gad ._egb ,_febd );_gdda .AddTarget (_bgd ,_febd ,_fgf ,uint32 (_cgbb ));_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,_cgbb ); _gca :=_ed .NewRelationships ();_gdda .AddTarget (_f .RelationsPathFor (_bgd ),_gca .X (),_fgf ,0);if len (_gad ._aed )>=_cgbb {_gad ._aed [_cgbb -1]=_gca ;}else {_gad ._aed =append (_gad ._aed ,_gca );};};};case _df .SlideMasterType :_ebf :=_ef .NewSldMaster (); if !_gdda .AddTarget (_bgd ,_ebf ,_fgf ,uint32 (len (_gad ._eab )+1)){return nil ;};_gad ._eab =append (_gad ._eab ,_ebf );_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,len (_gad ._eab ));_cbdc :=_ed .NewRelationships ();_gdda .AddTarget (_f .RelationsPathFor (_bgd ),_cbdc .X (),_fgf ,0); _gad ._bbe =append (_gad ._bbe ,_cbdc );case _df .SlideLayoutType :if _dff ,_aaf :=_dc .StringToNumbers (_bgd );_aaf {_ccb :=_ef .NewSldLayout ();if !_gdda .AddTarget (_bgd ,_ccb ,_fgf ,uint32 (_dff )){return nil ;};for _fceb :=len (_gad ._dda );_fceb < _dff ; _fceb ++{_gad ._dda =append (_gad ._dda ,_ef .NewSldLayout ());};_gad ._dda [_dff -1]=_ccb ;_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,_dff );_aedb :=_ed .NewRelationships ();_gdda .AddTarget (_f .RelationsPathFor (_bgd ),_aedb .X (),_fgf ,0); _gad ._dge =append (_gad ._dge ,_aedb );};case _df .ThumbnailType :for _ccfa ,_daf :=range _ggg {if _daf ==nil {continue ;};if _daf .Name ==_bgd {_bcfc ,_beg :=_daf .Open ();if _beg !=nil {return _g .Errorf ("e\u0072\u0072\u006f\u0072\u0020\u0072e\u0061\u0064\u0069\u006e\u0067\u0020\u0074\u0068\u0075m\u0062\u006e\u0061i\u006c:\u0020\u0025\u0073",_beg ); };_gad .Thumbnail ,_ ,_beg =_bff .Decode (_bcfc );_bcfc .Close ();if _beg !=nil {return _g .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",_beg ); };_ggg [_ccfa ]=nil ;};};case _df .ThemeType :_cbcg :=_gb .NewTheme ();if !_gdda .AddTarget (_bgd ,_cbcg ,_fgf ,uint32 (len (_gad ._fbef )+1)){return nil ;};_gad ._fbef =append (_gad ._fbef ,_cbcg );_gde .TargetAttr =_df .RelativeFilename (_dbd ,_fcgb .Typ ,_fgf ,len (_gad ._fbef )); _ecd :=_ed .NewRelationships ();_gdda .AddTarget (_f .RelationsPathFor (_bgd ),_ecd .X (),_fgf ,0);_gad ._aba =append (_gad ._aba ,_ecd );case _df .ImageType :_bgd =_de .Clean (_bgd );if _fgba ,_bddc :=_gad ._cgc [_bgd ];_bddc {_gde .TargetAttr =_fgba ; return nil ;};_dbbf :="";for _ebg ,_gbe :=range _ggg {if _gbe ==nil {continue ;};if _gbe .Name ==_bgd {_agd ,_bef :=_f .ExtractToDiskTmp (_gbe ,_gad .TmpPath );if _bef !=nil {return _bef ;};_fbcd ,_bef :=_ed .ImageFromStorage (_agd );if _bef !=nil {return _bef ; };_dbbf =_fbcd .Format ;_aacb :=_ed .MakeImageRef (_fbcd ,&_gad .DocBase ,_gad ._acba );_aacb .SetTarget ("\u002e\u002e\u002f"+_bgd [4:]);_gad .Images =append (_gad .Images ,_aacb );_ggg [_ebg ]=nil ;_daa :=len (_gad .Images );if _dfde ,_abggg :=_dc .StringToNumbers (_bgd ); _abggg {_daa =_dfde ;};_gdda .RecordIndex (_bgd ,_daa );break ;};};_ccab :=_gdda .IndexFor (_bgd );_gde .TargetAttr =_df .RelativeImageFilename (_dbd ,_fcgb .Typ ,_fgf ,_ccab ,_dbbf );_gad ._cgc [_bgd ]=_gde .TargetAttr ;default:_ad .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",_fgf ,_bgd ); };return nil ;}; // Remove removes a placeholder from a presentation. func (_fbc PlaceHolder )Remove ()error {for _acbb ,_dbe :=range _fbc ._eaae .CSld .SpTree .Choice {for _ ,_aeg :=range _dbe .Sp {if _aeg ==_fbc ._gf {copy (_fbc ._eaae .CSld .SpTree .Choice [_acbb :],_fbc ._eaae .CSld .SpTree .Choice [_acbb +1:]);_fbc ._eaae .CSld .SpTree .Choice =_fbc ._eaae .CSld .SpTree .Choice [0:len (_fbc ._eaae .CSld .SpTree .Choice )-1]; return nil ;};};};return _ag .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");}; // X returns the inner wrapped XML type. func (_fgbf *Presentation )X ()*_ef .Presentation {return _fgbf ._bge }; // ShowCommentsAttr returns the WebPr property. func (_bcbg ViewProperties )ShowCommentsAttr ()*bool {return _bcbg ._gffa .ShowCommentsAttr };type sort2d []*TextItem ; // PresentationText is an array of extracted text items which has some methods for representing extracted text. type PresentationText struct{Slides []*SlideText ;}; // Image is an image within a slide. type Image struct{_dca *_ef .CT_Picture }; // GridSpacing returns the GridSpacing property. func (_dcee ViewProperties )GridSpacing ()*_gb .CT_PositiveSize2D {return _dcee ._gffa .GridSpacing }; // WebPr returns the WebPr property. func (_aegb PresentationProperties )WebPr ()*_ef .CT_WebProperties {return _aegb ._fgbc .WebPr };func (_fg *chart )X ()*_b .ChartSpace {return _fg ._ee }; // SetHeight sets height of slide screen size with given value in EMU units. func (_fad *SlideScreenSize )SetHeight (val int32 ){_fad [1]=val }; // GetImageByRelID returns an ImageRef with the associated relation ID in the // slide. func (_egec *Slide )GetImageByRelID (relID string )(_ed .ImageRef ,bool ){_cece :=_egec .getSlideRels ();if (_cece ==_ed .Relationships {}){return _ed .ImageRef {},false ;};_gggf :=_cece .GetTargetByRelId (relID );for _ ,_dga :=range _egec ._gfa .Images {if _dga .Target ()==_gggf {return _dga ,true ; };};return _ed .ImageRef {},false ;}; // SetOffsetY sets vertical offset of text box in distance units (see measurement package). func (_abe TextBox )SetOffsetY (offY float64 ){_eda :=_abe .getOff ();_edea :=_cb .ToEMU (offY );_eda .YAttr =_gb .ST_Coordinate {ST_CoordinateUnqualified :&_edea };}; // X returns the inner wrapped XML type. func (_dfec SlideLayout )X ()*_ef .SldLayout {return _dfec ._baba }; // Presentation returns a slide's presentation. func (_ffbc Slide )Presentation ()*Presentation {return _ffbc ._gfa }; // SetWidth sets width of slide screen size with given value in EMU units. func (_fead *SlideScreenSize )SetWidth (val int32 ){_fead [0]=val }; // X returns TextBox's underlying *pml.CT_Shape. func (_cef TextBox )X ()*_ef .CT_Shape {return _cef ._cggc }; // Slides returns the slides in the presentation. func (_cdgb *Presentation )Slides ()[]Slide {_edce :=[]Slide {};for _fba ,_cdbgb :=range _cdgb ._egb {_edce =append (_edce ,Slide {_cdgb ._bge .SldIdLst .SldId [_fba ],_cdbgb ,_cdgb ,nil });};return _edce ;}; // PrnPr returns the PrnPr property. func (_bfa PresentationProperties )PrnPr ()*_ef .CT_PrintProperties {return _bfa ._fgbc .PrnPr }; // TableInfo is used for keep information about a table, a row and a cell where the text is located. type TableInfo struct{Table *_gb .CT_Table ;Row *_gb .CT_TableRow ;Cell *_gb .CT_TableCell ;RowIndex int ;ColIndex int ;}; // AddImage adds an image textbox to a slide. func (_afcc Slide )AddImage (img _ed .ImageRef )Image {_gacc :=_ef .NewCT_GroupShapeChoice ();_afcc ._adcg .CSld .SpTree .Choice =append (_afcc ._adcg .CSld .SpTree .Choice ,_gacc );_dde :=_ef .NewCT_Picture ();_gacc .Pic =append (_gacc .Pic ,_dde );_dde .NvPicPr .CNvPicPr =_gb .NewCT_NonVisualPictureProperties (); _dde .NvPicPr .CNvPicPr .PicLocks =_gb .NewCT_PictureLocking ();_dde .NvPicPr .CNvPicPr .PicLocks .NoChangeAspectAttr =_df .Bool (true );_dde .BlipFill =_gb .NewCT_BlipFillProperties ();_dde .BlipFill .Blip =_gb .NewCT_Blip ();_bdefe :=_afcc .AddImageToRels (img ); _dde .BlipFill .Blip .EmbedAttr =_df .String (_bdefe );_dde .BlipFill .Stretch =_gb .NewCT_StretchInfoProperties ();_dde .BlipFill .Stretch .FillRect =_gb .NewCT_RelativeRect ();_dde .SpPr =_gb .NewCT_ShapeProperties ();_dde .SpPr .PrstGeom =_gb .NewCT_PresetGeometry2D (); _dde .SpPr .PrstGeom .PrstAttr =_gb .ST_ShapeTypeRect ;_daee :=Image {_dde };_ega :=img .Size ();_daee .Properties ().SetWidth (_cb .Distance (_ega .X )*_cb .Pixel72 );_daee .Properties ().SetHeight (_cb .Distance (_ega .Y )*_cb .Pixel72 );_daee .Properties ().SetPosition (0,0); return _daee ;}; // GetTableStyleById returns *dml.CT_TableStyle by its style id. func (_afcb *Presentation )GetTableStyleById (id string )*_gb .CT_TableStyle {_bege :=_afcb ._dfe .TblStyle ();for _ ,_cfdb :=range _bege {if _cfdb .StyleIdAttr ==id {return _cfdb ;};};return nil ;}; // ClearAll completely clears a placeholder. To be useable, at least one // paragraph must be added after ClearAll via AddParagraph. func (_feb PlaceHolder )ClearAll (){_feb ._gf .SpPr =_gb .NewCT_ShapeProperties ();_feb ._gf .TxBody =_gb .NewCT_TextBody ();_feb ._gf .TxBody .LstStyle =_gb .NewCT_TextListStyle ();}; // TextBox is a text box within a slide. type TextBox struct{_cggc *_ef .CT_Shape }; // X returns the inner wrapped XML type. func (_cab SlideMaster )X ()*_ef .SldMaster {return _cab ._ffbe }; // ExtLst returns the ExtLst property. func (_bab PresentationProperties )ExtLst ()*_ef .CT_ExtensionList {return _bab ._fgbc .ExtLst };var (SlideScreenSize16x9 =SlideScreenSize {12192000,6858000};SlideScreenSize4x3 =SlideScreenSize {9144000,6858000};SlideScreenSizeA4 =SlideScreenSize {9906000,6858000}; ); // Read reads a document from an io.Reader. func Read (r _fe .ReaderAt ,size int64 )(*Presentation ,error ){const _ecafa ="\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e:\u0052\u0065\u0061\u0064";if !_ea .GetLicenseKey ().IsLicensed ()&&!_fcg {_g .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"); _g .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 ,_ag .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");};_ceeg :=_dfg ();_fcf ,_aea :=_ea .GenRefId ("\u0070\u0072");if _aea !=nil {_ad .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_aea ); return nil ,_aea ;};_ceeg ._cga =_fcf ;if _adg :=_ea .Track (_ceeg ._cga ,_ecafa );_adg !=nil {_ad .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_adg );return nil ,_adg ;};_eebb ,_aea :=_bd .TempDir ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065-\u0070\u0070\u0074\u0078"); if _aea !=nil {return nil ,_aea ;};_ceeg .TmpPath =_eebb ;_gfcb ,_aea :=_bda .NewReader (r ,size );if _aea !=nil {return nil ,_g .Errorf ("\u0070a\u0072s\u0069\u006e\u0067\u0020\u007a\u0069\u0070\u003a\u0020\u0025\u0073",_aea );};_ceae :=[]*_bda .File {}; _ceae =append (_ceae ,_gfcb .File ...);_ccd :=false ;for _ ,_cgg :=range _ceae {if _cgg .FileHeader .Name =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_ccd =true ;break ;};};if _ccd {_ceeg .CreateCustomProperties (); };_cdcc :=_f .DecodeMap {};_cdcc .SetOnNewRelationshipFunc (_ceeg .onNewRelationship );_cdcc .AddTarget (_df .ContentTypesFilename ,_ceeg .ContentTypes .X (),"",0);_cdcc .AddTarget (_df .BaseRelsFilename ,_ceeg .Rels .X (),"",0);if _efc :=_cdcc .Decode (_ceae ); _efc !=nil {return nil ,_efc ;};for _ ,_dbda :=range _ceae {if _dbda ==nil {continue ;};if _gdeg :=_ceeg .AddExtraFileFromZip (_dbda );_gdeg !=nil {return nil ,_gdeg ;};};if _ccd {_gcea :=false ;for _ ,_ccfb :=range _ceeg .Rels .X ().Relationship {if _ccfb .TargetAttr =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_gcea =true ; break ;};};if !_gcea {_ceeg .AddCustomRelationships ();};};return _ceeg ,nil ;}; // ExtractText returns text from a slide as a SlideText object. func (_cf *Slide )ExtractText ()*SlideText {_ge :=_ae (_cf ._gfa ,_cf ._adcg .CSld .SpTree .Choice ,[]rectangle {},[]*TextItem {});_ac .Sort (sort2d (_ge ));return &SlideText {Items :_ge };};func (_fdae *Slide )getSlideRels ()_ed .Relationships {_aab :=_fdae ._gfa ; for _ece ,_cgba :=range _aab .Slides (){if *_fdae ._adcg ==*_cgba ._adcg {return _aab ._aed [_ece ];};};return _ed .Relationships {};};func (_abgg sort2d )Len ()int {return len (_abgg )}; // SetTextAnchor controls the text anchoring func (_gfdd TextBox )SetTextAnchor (a _gb .ST_TextAnchoringType ){_gfdd ._cggc .TxBody .BodyPr =_gb .NewCT_TextBodyProperties ();_gfdd ._cggc .TxBody .BodyPr .AnchorAttr =a ;};const _fca float64 =500000; // NotesTextViewPr returns the NotesTextViewPr property. func (_dfb ViewProperties )NotesTextViewPr ()*_ef .CT_NotesTextViewProperties {return _dfb ._gffa .NotesTextViewPr ;}; // PlaceHolder is a place holder from a slide. type PlaceHolder struct{_gf *_ef .CT_Shape ;_eaae *_ef .Sld ;};func _dfg ()*Presentation {_cgca :=&Presentation {_bge :_ef .NewPresentation ()};_cgca ._bge .SldIdLst =_ef .NewCT_SlideIdList ();_cgca ._bge .ConformanceAttr =_d .ST_ConformanceClassTransitional ; _cgca .AppProperties =_ed .NewAppProperties ();_cgca .CoreProperties =_ed .NewCoreProperties ();_cgca ._dfe =_ed .NewTableStyles ();_cgca .ContentTypes =_ed .NewContentTypes ();_cgca .Rels =_ed .NewRelationships ();_cgca ._acba =_ed .NewRelationships (); _cgca ._fed =NewPresentationProperties ();_cgca ._ec =NewViewProperties ();_cgca ._cgc =map[string ]string {};return _cgca ;}; // Width returns slide screen size width in EMU units. func (_ccbc *SlideScreenSize )Width ()int32 {return _ccbc [0]}; // SlideText is an array of extracted text items which has some methods for representing extracted text from a slide. type SlideText struct{Items []*TextItem ;}; // NormalViewPr returns the NormalViewPr property. func (_ffbcc ViewProperties )NormalViewPr ()*_ef .CT_NormalViewProperties {return _ffbcc ._gffa .NormalViewPr ;}; // GetChartSpaceByRelId returns a *crt.ChartSpace with the associated relation ID in the // slide. func (_bae *Slide )GetChartSpaceByRelId (relId string )*_b .ChartSpace {_bdba :=_bae .getSlideRels ();if (_bdba ==_ed .Relationships {}){return nil ;};_edff :=_bdba .GetTargetByRelId (relId );for _ ,_fece :=range _bae ._gfa ._abbb {if _edff ==_fece .Target (){return _fece ._ee ; };};return nil ;}; // RemoveSlide removes a slide from a presentation. func (_afa *Presentation )RemoveSlide (s Slide )error {_bfbf :=false ;_bgg :=0;for _fbba ,_agbd :=range _afa ._egb {if _agbd ==s ._adcg {if _afa ._bge .SldIdLst .SldId [_fbba ]!=s ._bdfc {return _ag .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 (_afa ._egb [_fbba :],_afa ._egb [_fbba +1:]);_afa ._egb =_afa ._egb [0:len (_afa ._egb )-1];copy (_afa ._aed [_fbba :],_afa ._aed [_fbba +1:]);_afa ._aed =_afa ._aed [0:len (_afa ._aed )-1];copy (_afa ._bge .SldIdLst .SldId [_fbba :],_afa ._bge .SldIdLst .SldId [_fbba +1:]); _afa ._bge .SldIdLst .SldId =_afa ._bge .SldIdLst .SldId [0:len (_afa ._bge .SldIdLst .SldId )-1];_bfbf =true ;_bgg =_fbba ;};};if !_bfbf {return _ag .New ("u\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0073li\u0064\u0065"); };_ceaa :=_df .AbsoluteFilename (_df .DocTypePresentation ,_df .SlideType ,0);return _afa .ContentTypes .RemoveOverrideByIndex (_ceaa ,_bgg );}; // SlideMasters returns the slide masters defined in the presentation. func (_baa *Presentation )SlideMasters ()[]SlideMaster {_gbg :=[]SlideMaster {};for _ggdd ,_cadb :=range _baa ._eab {_gbg =append (_gbg ,SlideMaster {_baa ,_baa ._bbe [_ggdd ],_cadb });};return _gbg ;};func _gda (_cag *Presentation ,_caf *_ef .CT_Shape ,_fbe *_ef .CT_GraphicalObjectFrame ,_ebb *TableInfo ,_acb *_gb .CT_Transform2D ,_agea int ,_cda []rectangle ,_ebd []*_gb .CT_TextParagraph )[]*TextItem {_edd :=[]*TextItem {}; var _eeeg ,_gbb ,_dgf ,_bcb ,_bdf ,_afb int64 ;_bcf :=_acb ==nil ;_da :=0;for _ ,_dcg :=range _ebd {for _ ,_gba :=range _dcg .EG_TextRun {if _dgde :=_gba .R ;_dgde !=nil {if !_bcf {if _acb .Off !=nil {if _fcc :=_acb .Ext ;_fcc !=nil {_bdf ,_afb =_fcc .CxAttr ,_fcc .CyAttr ; };if _dbg :=_acb .Off .XAttr .ST_CoordinateUnqualified ;_dbg !=nil {_eeeg =*_dbg ;_gbb =_eeeg +_bdf ;_bcf =true ;};if _bdg :=_acb .Off .YAttr .ST_CoordinateUnqualified ;_bdg !=nil {_dgf =*_bdg ;_bcb =_dgf +_afb ;_bcf =true ;};};};_aef :=append ([]rectangle {},_cda ...); _aef =append (_aef ,rectangle {_ff :_eeeg ,_ba :_gbb ,_egf :_dgf ,_eee :_bcb });_edd =append (_edd ,&TextItem {Presentation :_cag ,Shape :_caf ,GraphicFrame :_fbe ,TableInfo :_ebb ,Paragraph :_dcg ,Run :_dgde ,Text :_dgde .T ,_af :_aef ,_bc :_agea ,_fa :_da }); _da ++;};};};return _edd ;}; // Close closes the presentation, removing any temporary files that might have been // created when opening a document. func (_dddb *Presentation )Close ()error {if _dddb .TmpPath !=""{return _bd .RemoveAll (_dddb .TmpPath );};return nil ;}; // Size returns slide size value as SlideScreenSize. func (_egdc *SlideSize )Size ()SlideScreenSize {return SlideScreenSize {_egdc ._fagd .CxAttr ,_egdc ._fagd .CyAttr };};func (_ab *chart )Target ()string {return _ab ._gd }; // ClrMru returns the ClrMru property. func (_effd PresentationProperties )ClrMru ()*_gb .CT_ColorMRU {return _effd ._fgbc .ClrMru }; // 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 (_agg Slide )GetPlaceholderByIndex (idx uint32 )(PlaceHolder ,error ){for _ ,_gae :=range _agg ._adcg .CSld .SpTree .Choice {for _ ,_fff :=range _gae .Sp {if _fff .NvSpPr !=nil &&_fff .NvSpPr .NvPr !=nil &&_fff .NvSpPr .NvPr .Ph !=nil {if (idx ==0&&_fff .NvSpPr .NvPr .Ph .IdxAttr ==nil )||(_fff .NvSpPr .NvPr .Ph .IdxAttr !=nil &&*_fff .NvSpPr .NvPr .Ph .IdxAttr ==idx ){return PlaceHolder {_fff ,_agg ._adcg },nil ; };};};};return PlaceHolder {},_ag .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");}; // NewPresentationProperties constructs a new PresentationProperties. func NewPresentationProperties ()PresentationProperties {return PresentationProperties {_fgbc :_ef .NewPresentationPr ()};}; // X returns the inner wrapped XML type. func (_bg PlaceHolder )X ()*_ef .CT_Shape {return _bg ._gf }; // Save writes the presentation out to a writer in the Zip package format func (_gbc *Presentation )Save (w _fe .Writer )error {return _gbc .save (w ,false )}; // SlideLayout is a layout from which slides can be created. type SlideLayout struct{_baba *_ef .SldLayout }; // 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 (_cde Slide )GetPlaceholder (t _ef .ST_PlaceholderType )(PlaceHolder ,error ){for _ ,_daff :=range _cde ._adcg .CSld .SpTree .Choice {for _ ,_dada :=range _daff .Sp {if _dada .NvSpPr !=nil &&_dada .NvSpPr .NvPr !=nil &&_dada .NvSpPr .NvPr .Ph !=nil {if _dada .NvSpPr .NvPr .Ph .TypeAttr ==t {return PlaceHolder {_dada ,_cde ._adcg },nil ; };};};};return PlaceHolder {},_ag .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");}; // AddSlide adds a new slide to the presentation. func (_abcb *Presentation )AddSlide ()Slide {_fcef :=_ef .NewCT_SlideIdListEntry ();_fcef .IdAttr =_abcb .nextSlideID ();_abcb ._bge .SldIdLst .SldId =append (_abcb ._bge .SldIdLst .SldId ,_fcef );_fggf :=_ef .NewSld ();_fggf .CSld .SpTree .NvGrpSpPr .CNvPr .IdAttr =1; _fggf .CSld .SpTree .GrpSpPr .Xfrm =_gb .NewCT_GroupTransform2D ();_fggf .CSld .SpTree .GrpSpPr .Xfrm .Off =_gb .NewCT_Point2D ();_fggf .CSld .SpTree .GrpSpPr .Xfrm .Off .XAttr .ST_CoordinateUnqualified =_df .Int64 (0);_fggf .CSld .SpTree .GrpSpPr .Xfrm .Off .YAttr .ST_CoordinateUnqualified =_df .Int64 (0); _fggf .CSld .SpTree .GrpSpPr .Xfrm .Ext =_gb .NewCT_PositiveSize2D ();_fggf .CSld .SpTree .GrpSpPr .Xfrm .Ext .CxAttr =int64 (0*_cb .Point );_fggf .CSld .SpTree .GrpSpPr .Xfrm .Ext .CyAttr =int64 (0*_cb .Point );_fggf .CSld .SpTree .GrpSpPr .Xfrm .ChOff =_fggf .CSld .SpTree .GrpSpPr .Xfrm .Off ; _fggf .CSld .SpTree .GrpSpPr .Xfrm .ChExt =_fggf .CSld .SpTree .GrpSpPr .Xfrm .Ext ;_abcb ._egb =append (_abcb ._egb ,_fggf );_cea :=_abcb ._acba .AddAutoRelationship (_df .DocTypePresentation ,_df .OfficeDocumentType ,len (_abcb ._egb ),_df .SlideType ); _fcef .RIdAttr =_cea .ID ();_abd :=_df .AbsoluteFilename (_df .DocTypePresentation ,_df .SlideType ,len (_abcb ._egb ));_abcb .ContentTypes .AddOverride (_abd ,_df .SlideContentType );_acd :=_ed .NewRelationships ();_abcb ._aed =append (_abcb ._aed ,_acd ); _acd .AddAutoRelationship (_df .DocTypePresentation ,_df .SlideType ,len (_abcb ._dda ),_df .SlideLayoutType );return Slide {_fcef ,_fggf ,_abcb ,nil };}; // X returns the inner wrapped XML type. func (_deab Slide )X ()*_ef .Sld {return _deab ._adcg }; // X returns the inner wrapped XML type. func (_faf PresentationProperties )X ()*_ef .PresentationPr {return _faf ._fgbc };