unioffice/presentation/presentation.go

589 lines
86 KiB
Go
Raw Normal View History

2017-08-28 20:56:18 -05:00
//
2020-08-23 14:15:53 +00:00
// 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/
2024-11-22 00:17:48 +00:00
package presentation ;import (_gg "archive/zip";_cgg "bytes";_fc "encoding/xml";_gab "errors";_be "fmt";_gbg "github.com/unidoc/unioffice";_gb "github.com/unidoc/unioffice/common";_ga "github.com/unidoc/unioffice/common/logger";_ff "github.com/unidoc/unioffice/common/tempstorage";
_cgc "github.com/unidoc/unioffice/drawing";_fd "github.com/unidoc/unioffice/internal/formatutils";_ce "github.com/unidoc/unioffice/internal/license";_ca "github.com/unidoc/unioffice/measurement";_db "github.com/unidoc/unioffice/schema/soo/dml";_g "github.com/unidoc/unioffice/schema/soo/dml/chart";
_a "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_fe "github.com/unidoc/unioffice/schema/soo/pkg/relationships";_ed "github.com/unidoc/unioffice/schema/soo/pml";_f "github.com/unidoc/unioffice/zippkg";_df "image";_ge "image/jpeg";_b "io";_ee "math";
_e "os";_feg "path";_ec "sort";_c "strconv";_cg "strings";);func (_eb *chart )RelId ()string {return _eb ._fa };
2020-08-23 14:15:53 +00:00
2024-11-22 00:17:48 +00:00
// ShowPr returns the ShowPr property.
func (_egda PresentationProperties )ShowPr ()*_ed .CT_ShowProperties {return _egda ._cda .ShowPr };
2024-05-08 13:54:39 +00:00
2024-11-22 00:17:48 +00:00
// ExtLst returns the ExtLst property.
func (_ageg PresentationProperties )ExtLst ()*_ed .CT_ExtensionList {return _ageg ._cda .ExtLst };func (_edeb *Slide )getSlideRels ()_gb .Relationships {_ddgb :=_edeb ._fagc ;for _cfe ,_fccaf :=range _ddgb .Slides (){if *_edeb ._efg ==*_fccaf ._efg {return _ddgb ._edg [_cfe ];
};};return _gb .Relationships {};};
2024-05-08 13:54:39 +00:00
2024-11-22 00:17:48 +00:00
// X returns the inner wrapped XML type.
func (_bfd PresentationProperties )X ()*_ed .PresentationPr {return _bfd ._cda };
2024-05-08 13:54:39 +00:00
2024-11-22 00:17:48 +00:00
// X returns the inner wrapped XML type.
func (_bgd PlaceHolder )X ()*_ed .CT_Shape {return _bgd ._dfd };
2022-02-25 19:20:45 +00:00
2024-11-22 00:17:48 +00:00
// SetHeight sets height of slide screen size with given value in EMU units.
func (_bdc *SlideScreenSize )SetHeight (val int32 ){_bdc [1]=val };
2021-08-23 20:44:48 +00:00
2024-11-22 00:17:48 +00:00
// SlideMaster is the slide master for a presentation.
type SlideMaster struct{_bfbe *Presentation ;_gffg _gb .Relationships ;_gfba *_ed .SldMaster ;};
2021-01-04 16:11:39 +00:00
2024-11-22 00:17:48 +00:00
// PlaceHolders returns all of the content place holders within a given slide.
func (_ccef Slide )PlaceHolders ()[]PlaceHolder {_cgca :=[]PlaceHolder {};for _ ,_dag :=range _ccef ._efg .CSld .SpTree .Choice {for _ ,_cbac :=range _dag .Sp {if _cbac .NvSpPr !=nil &&_cbac .NvSpPr .NvPr !=nil &&_cbac .NvSpPr .NvPr .Ph !=nil {_cgca =append (_cgca ,PlaceHolder {_cbac ,_ccef ._efg });
};};};return _cgca ;};
2024-05-08 13:54:39 +00:00
2024-11-22 00:17:48 +00:00
// NormalViewPr returns the NormalViewPr property.
func (_eaf ViewProperties )NormalViewPr ()*_ed .CT_NormalViewProperties {return _eaf ._agecf .NormalViewPr ;};
2022-04-09 14:27:46 +00:00
2024-11-22 00:17:48 +00:00
// SlideLayouts returns a slice of all layouts in SlideMaster.
func (_dbb SlideMaster )SlideLayouts ()[]SlideLayout {_ddaa :=map[string ]int {};_def :=[]SlideLayout {};for _ ,_bebd :=range _dbb ._gffg .Relationships (){_gfc :=_cg .Replace (_bebd .Target (),".\u002e\u002f\u0073\u006c\u0069\u0064e\u004c\u0061\u0079\u006f\u0075\u0074\u0073\u002f\u0073l\u0069\u0064\u0065L\u0061y\u006f\u0075\u0074","",-1);
_gfc =_cg .Replace (_gfc ,"\u002e\u0078\u006d\u006c","",-1);if _gadb ,_gefe :=_c .ParseInt (_gfc ,10,32);_gefe ==nil {_ddaa [_bebd .ID ()]=int (_gadb );};};for _ ,_caf :=range _dbb ._gfba .SldLayoutIdLst .SldLayoutId {if _ceac ,_edgd :=_ddaa [_caf .RIdAttr ];
_edgd {_egdg :=_dbb ._bfbe ._ffg [_ceac -1];_def =append (_def ,SlideLayout {_egdg });};};return _def ;};
2022-01-15 21:17:38 +00:00
2024-11-22 00:17:48 +00:00
// Properties returns the properties of the TextBox.
func (_gadc TextBox )Properties ()_cgc .ShapeProperties {if _gadc ._baf .SpPr ==nil {_gadc ._baf .SpPr =_db .NewCT_ShapeProperties ();};return _cgc .MakeShapeProperties (_gadc ._baf .SpPr );};
2021-09-22 16:41:01 +00:00
2024-11-22 00:17:48 +00:00
// AddParagraph adds a new paragraph to a placeholder.
func (_bcc PlaceHolder )AddParagraph ()_cgc .Paragraph {_dfe :=_cgc .MakeParagraph (_db .NewCT_TextParagraph ());_bcc ._dfd .TxBody .P =append (_bcc ._dfd .TxBody .P ,_dfe .X ());return _dfe ;};
2022-02-25 19:20:45 +00:00
2024-11-22 00:17:48 +00:00
// NewSlideScreenSize returns slide screen size with default MS PowerPoint slide screen size 16x9.
func NewSlideScreenSize ()SlideScreenSize {return NewSlideScreenSizeWithValue (SlideScreenSize16x9 [0],SlideScreenSize16x9 [1]);};
2020-08-23 14:15:53 +00:00
2024-11-22 00:17:48 +00:00
// SlideSize returns presentation slide size.
func (_eegg *Presentation )SlideSize ()SlideSize {if _eegg ._eec .SldSz ==nil {_eegg ._eec .SldSz =_ed .NewCT_SlideSize ();};return SlideSize {_eegg ._eec .SldSz ,_eegg };};type chart struct{_dg *_g .ChartSpace ;_fa string ;_dgd string ;};
2021-04-23 20:00:00 +00:00
2024-11-22 00:17:48 +00:00
// Themes returns an array of presentation themes.
func (_gdfg *Presentation )Themes ()[]*_db .Theme {return _gdfg ._fcae };
// SlideLayouts returns the slide layouts defined in the presentation.
func (_cdaee *Presentation )SlideLayouts ()[]SlideLayout {_efb :=[]SlideLayout {};for _ ,_bffg :=range _cdaee ._ffg {if _bffg ==nil {continue ;};if _bffg .CSld .NameAttr ==nil {continue ;};_efb =append (_efb ,SlideLayout {_bffg });};return _efb ;};func (_fef sort2d )Len ()int {return len (_fef )};
// AddImageToRels adds an image relationship to a slide without putting image on the slide.
func (_gacd Slide )AddImageToRels (img _gb .ImageRef )string {_adgb :=0;for _fgf ,_cgff :=range _gacd ._fagc .Images {if _cgff ==img {_adgb =_fgf +1;break ;};};var _bggb string ;for _dac ,_becgc :=range _gacd ._fagc .Slides (){if _becgc ._efg ==_gacd ._efg {_ecdc :=_be .Sprintf ("\u002e\u002e\u002f\u006ded\u0069\u0061\u002f\u0069\u006d\u0061\u0067\u0065\u0025\u0064\u002e\u0025\u0073",_adgb ,img .Format ());
_bba :=_gacd ._fagc ._edg [_dac ].AddRelationship (_ecdc ,_gbg .ImageType );_bggb =_bba .ID ();};};return _bggb ;};
// Remove removes a placeholder from a presentation.
func (_efcd PlaceHolder )Remove ()error {for _bcdb ,_ebecc :=range _efcd ._ebd .CSld .SpTree .Choice {for _ ,_bac :=range _ebecc .Sp {if _bac ==_efcd ._dfd {copy (_efcd ._ebd .CSld .SpTree .Choice [_bcdb :],_efcd ._ebd .CSld .SpTree .Choice [_bcdb +1:]);
_efcd ._ebd .CSld .SpTree .Choice =_efcd ._ebd .CSld .SpTree .Choice [0:len (_efcd ._ebd .CSld .SpTree .Choice )-1];return nil ;};};};return _gab .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");
2024-06-20 13:33:45 +00:00
};
2024-11-22 00:17:48 +00:00
// 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 (_agb *Presentation )AddSlideWithLayout (l SlideLayout )(Slide ,error ){_cfba :=_ed .NewCT_SlideIdListEntry ();_cfba .IdAttr =_agb .nextSlideID ();_agb ._eec .SldIdLst .SldId =append (_agb ._eec .SldIdLst .SldId ,_cfba );_eebc :=_ed .NewSld ();_ebdc :=_cgg .Buffer {};
_babe :=_fc .NewEncoder (&_ebdc );_cgga :=_fc .StartElement {Name :_fc .Name {Local :"\u0073\u006c\u0069d\u0065"}};_cgga .Attr =append (_cgga .Attr ,_fc .Attr {Name :_fc .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"});
_cgga .Attr =append (_cgga .Attr ,_fc .Attr {Name :_fc .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"});
_cgga .Attr =append (_cgga .Attr ,_fc .Attr {Name :_fc .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"});
_cgga .Attr =append (_cgga .Attr ,_fc .Attr {Name :_fc .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"});
_cgga .Attr =append (_cgga .Attr ,_fc .Attr {Name :_fc .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"});
_cgga .Attr =append (_cgga .Attr ,_fc .Attr {Name :_fc .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 _cfd :=l ._acdd .CSld .MarshalXML (_babe ,_cgga );_cfd !=nil {return Slide {},_cfd ;};_babe .Flush ();_gcaf :=_fc .NewDecoder (&_ebdc );_eebc .CSld =_ed .NewCT_CommonSlideData ();if _gge :=_gcaf .Decode (_eebc .CSld );_gge !=nil {return Slide {},_gge ;
};_eebc .CSld .NameAttr =nil ;_eebc .CSld .SpTree .Choice =_ead (_eebc .CSld .SpTree .Choice );_agb ._bbf =append (_agb ._bbf ,_eebc );_agb ._bgf =append (_agb ._bgf ,len (_agb ._bbf ));_edde :=_agb ._ede .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .OfficeDocumentType ,len (_agb ._bbf ),_gbg .SlideType );
_cfba .RIdAttr =_edde .ID ();_bfg :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .SlideType ,len (_agb ._bbf ));_agb .ContentTypes .AddOverride (_bfg ,_gbg .SlideContentType );_bfc :=_gb .NewRelationships ();_agb ._edg =append (_agb ._edg ,_bfc );
_gbf :=len (_agb ._edg )-1;for _agd ,_ddg :=range _agb ._ffg {if _ddg ==l .X (){_agbb :=_agb ._bff [_agd ];for _ ,_bdf :=range _agbb .X ().Relationship {if _bdf .TypeAttr !=_gbg .SlideMasterType {_agb ._edg [_gbf ].X ().Relationship =append (_agb ._edg [_gbf ].X ().Relationship ,_bdf );
};};_bfc .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .SlideType ,_agd +1,_gbg .SlideLayoutType );};};_abe :=Slide {_cfba ,_eebc ,_agb ,nil };return _abe ,nil ;};
2023-09-16 17:56:36 +00:00
2024-11-22 00:17:48 +00:00
// SlideText is an array of extracted text items which has some methods for representing extracted text from a slide.
type SlideText struct{Items []*TextItem ;};func (_ccca *Presentation )onNewRelationship (_gac *_f .DecodeMap ,_abb ,_dfag string ,_fce []*_gg .File ,_acce *_fe .Relationship ,_fgg _f .Target )error {_cadef :=_gbg .DocTypePresentation ;switch _dfag {case _gbg .OfficeDocumentType :_ccca ._eec =_ed .NewPresentation ();
_gac .AddTarget (_abb ,_ccca ._eec ,_dfag ,0);_gac .AddTarget (_f .RelationsPathFor (_abb ),_ccca ._ede .X (),_dfag ,0);_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,0);case _gbg .CorePropertiesType :_gac .AddTarget (_abb ,_ccca .CoreProperties .X (),_dfag ,0);
_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,0);case _gbg .CustomPropertiesType :_gac .AddTarget (_abb ,_ccca .CustomProperties .X (),_dfag ,0);_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,0);case _gbg .PresentationPropertiesType :_gac .AddTarget (_abb ,_ccca ._bd .X (),_dfag ,0);
_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,0);case _gbg .ViewPropertiesType :_gac .AddTarget (_abb ,_ccca ._edd .X (),_dfag ,0);_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,0);case _gbg .TableStylesType :_gac .AddTarget (_abb ,_ccca ._ffb .X (),_dfag ,0);
_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,0);case _gbg .HyperLinkType :_ccfd :=_db .NewCT_Hyperlink ();_abbg :=uint32 (len (_ccca ._cgfe ));_gac .AddTarget (_abb ,_ccfd ,_dfag ,_abbg );_ccca ._cgfe =append (_ccca ._cgfe ,_ccfd );
case _gbg .CustomXMLType :if _accc ,_ffgc :=_fd .StringToNumbers (_abb );_ffgc {if len (_ccca ._gee )< _accc {_dcad :=&_gbg .XSDAny {};_gac .AddTarget (_abb ,_dcad ,_dfag ,uint32 (_accc ));_ccca ._gee =append (_ccca ._gee ,_dcad );_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,_accc );
};};case _gbg .ChartType :_cefa :=chart {_dg :_g .NewChartSpace ()};_faba :=uint32 (len (_ccca ._fac ));_gac .AddTarget (_abb ,_cefa ._dg ,_dfag ,_faba );_ccca ._fac =append (_ccca ._fac ,&_cefa );_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,len (_ccca ._fac ));
_cefa ._dgd =_acce .TargetAttr ;case _gbg .HandoutMasterType :_fcce :=_ed .NewHandoutMaster ();_cefb :=uint32 (len (_ccca ._cdf ));_gac .AddTarget (_abb ,_fcce ,_dfag ,_cefb );_ccca ._cdf =append (_ccca ._cdf ,_fcce );_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,len (_ccca ._cdf ));
case _gbg .NotesMasterType :if _ecbd ,_cgae :=_fd .StringToNumbers (_abb );_cgae {if len (_ccca ._cee )< _ecbd {_eea :=_ed .NewNotesMaster ();_ccca ._cee =append (_ccca ._cee ,_eea );_ccca ._egg =append (_ccca ._egg ,_ecbd );_gac .AddTarget (_abb ,_eea ,_dfag ,uint32 (_ecbd ));
_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,_ecbd );};};case _gbg .ExtendedPropertiesType :_gac .AddTarget (_abb ,_ccca .AppProperties .X (),_dfag ,0);_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,0);case _gbg .SlideType :if _gfec ,_fdea :=_fd .StringToNumbers (_abb );
_fdea {if len (_ccca ._bbf )< _gfec {_abea :=_ed .NewSld ();_ccca ._bbf =append (_ccca ._bbf ,_abea );_ccca ._bgf =append (_ccca ._bgf ,_gfec );_gac .AddTarget (_abb ,_abea ,_dfag ,uint32 (_gfec ));_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,_gfec );
_acbg :=_gb .NewRelationships ();_gac .AddTarget (_f .RelationsPathFor (_abb ),_acbg .X (),_dfag ,0);if len (_ccca ._edg )>=_gfec {_ccca ._edg [_gfec -1]=_acbg ;}else {_ccca ._edg =append (_ccca ._edg ,_acbg );};};};case _gbg .SlideMasterType :if _agdd ,_dccg :=_fd .StringToNumbers (_abb );
_dccg {if len (_ccca ._cgf )< _agdd {_geac :=_ed .NewSldMaster ();if !_gac .AddTarget (_abb ,_geac ,_dfag ,uint32 (_agdd )){return nil ;};_ccca ._cgf =append (_ccca ._cgf ,_geac );_ccca ._gca =append (_ccca ._gca ,_agdd );_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,_agdd );
_gdbf :=_gb .NewRelationships ();_gac .AddTarget (_f .RelationsPathFor (_abb ),_gdbf .X (),_dfag ,0);if len (_ccca ._bae )>=_agdd {_ccca ._bae [_agdd -1]=_gdbf ;}else {_ccca ._bae =append (_ccca ._edg ,_gdbf );};};};case _gbg .SlideLayoutType :if _fefg ,_ffc :=_fd .StringToNumbers (_abb );
_ffc {_ddf :=_ed .NewSldLayout ();if !_gac .AddTarget (_abb ,_ddf ,_dfag ,uint32 (_fefg )){return nil ;};for _fdeb :=len (_ccca ._ffg );_fdeb < _fefg ;_fdeb ++{_ccca ._ffg =append (_ccca ._ffg ,nil );};_ccca ._ffg [_fefg -1]=_ddf ;_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,_fefg );
for _eebe :=len (_ccca ._bff );_eebe < _fefg ;_eebe ++{_ccca ._bff =append (_ccca ._bff ,_gb .NewRelationships ());};_gda :=_gb .NewRelationships ();_gac .AddTarget (_f .RelationsPathFor (_abb ),_gda .X (),_dfag ,0);_ccca ._bff [_fefg -1]=_gda ;};case _gbg .ThumbnailType :for _dga ,_fdfg :=range _fce {if _fdfg ==nil {continue ;
};if _fdfg .Name ==_abb {_bbfba ,_adbc :=_fdfg .Open ();if _adbc !=nil {return _be .Errorf ("e\u0072\u0072\u006f\u0072\u0020\u0072e\u0061\u0064\u0069\u006e\u0067\u0020\u0074\u0068\u0075m\u0062\u006e\u0061i\u006c:\u0020\u0025\u0073",_adbc );};_ccca .Thumbnail ,_ ,_adbc =_df .Decode (_bbfba );
_bbfba .Close ();if _adbc !=nil {return _be .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",_adbc );};_fce [_dga ]=nil ;};};case _gbg .ThemeType :if _gfbc ,_ebfb :=_fd .StringToNumbers (_abb );
_ebfb {if len (_ccca ._fcae )< _gfbc {_abc :=_db .NewTheme ();if !_gac .AddTarget (_abb ,_abc ,_dfag ,uint32 (_gfbc )){return nil ;};_ccca ._fcae =append (_ccca ._fcae ,_abc );_ccca ._cdga =append (_ccca ._cdga ,_gfbc );_acce .TargetAttr =_gbg .RelativeFilename (_cadef ,_fgg .Typ ,_dfag ,_gfbc );
_cdba :=_gb .NewRelationships ();_gac .AddTarget (_f .RelationsPathFor (_abb ),_cdba .X (),_dfag ,0);if len (_ccca ._baa )>=_gfbc {_ccca ._baa [_gfbc -1]=_cdba ;}else {_ccca ._baa =append (_ccca ._baa ,_cdba );};};};case _gbg .ImageType :_abb =_feg .Clean (_abb );
if _ded ,_gcb :=_ccca ._gage [_abb ];_gcb {_acce .TargetAttr =_ded ;return nil ;};_bbfd :="";for _gbff ,_cegd :=range _fce {if _cegd ==nil {continue ;};if _cegd .Name ==_abb {_aac ,_eage :=_f .ExtractToDiskTmp (_cegd ,_ccca .TmpPath );if _eage !=nil {return _eage ;
};_cfc ,_eage :=_gb .ImageFromStorage (_aac );if _eage !=nil {return _eage ;};_bbfd =_cfc .Format ;if _cfc .Format =="\u006a\u0070\u0065\u0067"&&_cg .HasSuffix (_abb ,"\u006a\u0070\u0067"){_bbfd ="\u006a\u0070\u0067";};_fabf :=_gb .MakeImageRef (_cfc ,&_ccca .DocBase ,_ccca ._ede );
_fabf .SetTarget ("\u002e\u002e\u002f"+_abb [4:]);_ccca .Images =append (_ccca .Images ,_fabf );_fce [_gbff ]=nil ;_bbe :=len (_ccca .Images );if _ffbg ,_dbgc :=_fd .StringToNumbers (_abb );_dbgc {_bbe =_ffbg ;};_gac .RecordIndex (_abb ,_bbe );break ;};
};_afda :=_gac .IndexFor (_abb );_acce .TargetAttr =_gbg .RelativeImageFilename (_cadef ,_fgg .Typ ,_dfag ,_afda ,_bbfd );_ccca ._gage [_abb ]=_acce .TargetAttr ;default:_ga .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",_dfag ,_abb );
};return nil ;};
2024-11-22 00:17:48 +00:00
// AddImage adds an image textbox to a slide.
func (_ebbc Slide )AddImage (img _gb .ImageRef )Image {_gbd :=_ed .NewCT_GroupShapeChoice ();_ebbc ._efg .CSld .SpTree .Choice =append (_ebbc ._efg .CSld .SpTree .Choice ,_gbd );_ecg :=_ed .NewCT_Picture ();_gbd .Pic =append (_gbd .Pic ,_ecg );_ecg .NvPicPr .CNvPicPr =_db .NewCT_NonVisualPictureProperties ();
_ecg .NvPicPr .CNvPicPr .PicLocks =_db .NewCT_PictureLocking ();_ecg .NvPicPr .CNvPicPr .PicLocks .NoChangeAspectAttr =_gbg .Bool (true );_ecg .BlipFill =_db .NewCT_BlipFillProperties ();_ecg .BlipFill .Blip =_db .NewCT_Blip ();_dfgb :=_ebbc .AddImageToRels (img );
_ecg .BlipFill .Blip .EmbedAttr =_gbg .String (_dfgb );_ecg .BlipFill .Stretch =_db .NewCT_StretchInfoProperties ();_ecg .BlipFill .Stretch .FillRect =_db .NewCT_RelativeRect ();_ecg .SpPr =_db .NewCT_ShapeProperties ();_ecg .SpPr .PrstGeom =_db .NewCT_PresetGeometry2D ();
_ecg .SpPr .PrstGeom .PrstAttr =_db .ST_ShapeTypeRect ;_gbb :=Image {_ecg };_beb :=img .Size ();_gbb .Properties ().SetWidth (_ca .Distance (_beb .X )*_ca .Pixel72 );_gbb .Properties ().SetHeight (_ca .Distance (_beb .Y )*_ca .Pixel72 );_gbb .Properties ().SetPosition (0,0);
return _gbb ;};
2024-11-22 00:17:48 +00:00
// SetOffsetX sets horizontal offset of text box in distance units (see measurement package).
func (_ecbdf TextBox )SetOffsetX (offX float64 ){_faec :=_ecbdf .getOff ();_dba :=_ca .ToEMU (offX );_faec .XAttr =_db .ST_Coordinate {ST_CoordinateUnqualified :&_dba };};
2023-04-15 17:27:31 +00:00
2024-10-17 17:05:28 +00:00
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
2024-11-22 00:17:48 +00:00
func (_ddge *Slide )GetColorBySchemeColor (schClr _db .ST_SchemeColorVal )*_db .CT_Color {_ddge .ensureClrMap ();_cefac :=_ddge ._cde ;if _cefac ==nil {return nil ;};var _aecb _db .ST_ColorSchemeIndex ;switch schClr .String (){case "\u0062\u0067\u0031":_aecb =_cefac .Bg1Attr ;
case "\u0062\u0067\u0032":_aecb =_cefac .Bg2Attr ;case "\u0074\u0078\u0031":_aecb =_cefac .Tx1Attr ;case "\u0074\u0078\u0032":_aecb =_cefac .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_aecb =_cefac .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_aecb =_cefac .Accent2Attr ;
case "\u0061c\u0063\u0065\u006e\u0074\u0033":_aecb =_cefac .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_aecb =_cefac .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_aecb =_cefac .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_aecb =_cefac .Accent6Attr ;
case "\u0068\u006c\u0069n\u006b":_aecb =_cefac .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_aecb =_cefac .FolHlinkAttr ;case "\u0064\u006b\u0031":_aecb =_db .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_aecb =_db .ST_ColorSchemeIndexDk2 ;
case "\u006c\u0074\u0031":_aecb =_db .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_aecb =_db .ST_ColorSchemeIndexLt2 ;default:_aecb =_db .ST_ColorSchemeIndexUnset ;};_caga :=_ddge ._fagc ._fcae [0];_edcbg :=_caga .ThemeElements ;if _edcbg ==nil {return nil ;
};var _fcba *_db .CT_Color ;_gcaa :=_edcbg .ClrScheme ;switch _aecb .String (){case "\u0064\u006b\u0031":_fcba =_gcaa .Dk1 ;case "\u0064\u006b\u0032":_fcba =_gcaa .Dk2 ;case "\u006c\u0074\u0031":_fcba =_gcaa .Lt1 ;case "\u006c\u0074\u0032":_fcba =_gcaa .Lt2 ;
case "\u0061c\u0063\u0065\u006e\u0074\u0031":_fcba =_gcaa .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_fcba =_gcaa .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_fcba =_gcaa .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_fcba =_gcaa .Accent4 ;
case "\u0061c\u0063\u0065\u006e\u0074\u0035":_fcba =_gcaa .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_fcba =_gcaa .Accent6 ;case "\u0068\u006c\u0069n\u006b":_fcba =_gcaa .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_fcba =_gcaa .FolHlink ;
default:return nil ;};return _fcba ;};
2021-01-04 16:11:39 +00:00
2024-11-22 00:17:48 +00:00
// AddTable adds a new table to a placeholder.
func (_cdg PlaceHolder )AddTable ()*_gb .Table {_cdg .Clear ();_aca :=_ed .NewCT_GroupShapeChoice ();_cdg ._ebd .CSld .SpTree .Choice =append (_cdg ._ebd .CSld .SpTree .Choice ,_aca );_fcf :=_ed .NewCT_GraphicalObjectFrame ();_aca .GraphicFrame =append (_aca .GraphicFrame ,_fcf );
_fcf .Xfrm .Off =_db .NewCT_Point2D ();_aba :=int64 (1);_fcf .Xfrm .Off .XAttr =_db .ST_Coordinate {ST_CoordinateUnqualified :&_aba };_fcf .Xfrm .Off .YAttr =_db .ST_Coordinate {ST_CoordinateUnqualified :&_aba };_gag :=_fcf .Graphic .CT_GraphicalObject .GraphicData ;
_gag .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";
_egee :=_gb .NewTableWithXfrm (_fcf .Xfrm );_gag .Any =append (_gag .Any ,_egee .X ());return _egee ;};
2021-01-04 16:11:39 +00:00
2024-11-22 00:17:48 +00:00
// 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 (_gffd *Presentation )AddDefaultSlideWithLayout (l SlideLayout )(Slide ,error ){_bef ,_edga :=_gffd .AddSlideWithLayout (l );for _ ,_aeed :=range _bef .PlaceHolders (){_aeed .Clear ();switch _aeed .Type (){case _ed .ST_PlaceholderTypeFtr ,_ed .ST_PlaceholderTypeDt ,_ed .ST_PlaceholderTypeSldNum :_aeed .Remove ();
};};return _bef ,_edga ;};
2022-09-02 11:46:53 +00:00
2024-10-17 17:05:28 +00:00
// NewPresentationProperties constructs a new PresentationProperties.
2024-11-22 00:17:48 +00:00
func NewPresentationProperties ()PresentationProperties {return PresentationProperties {_cda :_ed .NewPresentationPr ()};};
2024-05-22 00:21:11 +00:00
2024-11-22 00:17:48 +00:00
// 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 (_abff PlaceHolder )SetText (text string ){_abff .Clear ();_ebb :=_db .NewEG_TextRun ();_ebb .R =_db .NewCT_RegularTextRun ();_ebb .R .T =text ;if len (_abff ._dfd .TxBody .P )==0{_abff ._dfd .TxBody .P =append (_abff ._dfd .TxBody .P ,_db .NewCT_TextParagraph ());
};_abff ._dfd .TxBody .P [0].EG_TextRun =nil ;_abff ._dfd .TxBody .P [0].EG_TextRun =append (_abff ._dfd .TxBody .P [0].EG_TextRun ,_ebb );};
2024-09-16 09:59:58 +00:00
2024-11-22 00:17:48 +00:00
// Close closes the presentation, removing any temporary files that might have been
// created when opening a document.
func (_cebd *Presentation )Close ()error {if _cebd .TmpPath !=""{return _ff .RemoveAll (_cebd .TmpPath );};return nil ;};
2021-09-22 16:41:01 +00:00
2024-11-22 00:17:48 +00:00
// GetLayoutByName retrieves a slide layout given a layout name.
func (_befb *Presentation )GetLayoutByName (name string )(SlideLayout ,error ){for _ ,_ffd :=range _befb ._ffg {if _ffd .CSld .NameAttr !=nil &&name ==*_ffd .CSld .NameAttr {return SlideLayout {_ffd },nil ;};};return SlideLayout {},_gab .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 _cd (_dbd *Presentation ,_ceb []*_ed .CT_GroupShapeChoice ,_fcc []rectangle ,_fae []*TextItem )[]*TextItem {for _ ,_gfd :=range _ceb {_ggg :=append ([]rectangle {},_fcc ...);for _ ,_ccaf :=range _gfd .Sp {_fae =append (_fae ,_fge (_dbd ,_ccaf ,nil ,nil ,_ccaf .SpPr .Xfrm ,0,_fcc ,_ccaf .TxBody .P )...);
};for _ ,_bfa :=range _gfd .GraphicFrame {if _bfa !=nil &&_bfa .Graphic !=nil &&_bfa .Graphic .GraphicData !=nil {_bec :=_bfa .Xfrm ;for _ ,_gad :=range _bfa .Graphic .GraphicData .Any {if _dd ,_eeb :=_gad .(*_db .Tbl );_eeb {_ebc :=&_dd .CT_Table ;_gbc :=0;
for _bb ,_aad :=range _dd .Tr {for _fg ,_fca :=range _aad .Tc {_fda :=&TableInfo {Table :_ebc ,Row :_aad ,Cell :_fca ,RowIndex :_bb ,ColIndex :_fg };_fae =append (_fae ,_fge (_dbd ,nil ,_bfa ,_fda ,_bec ,_gbc ,_fcc ,_fca .TxBody .P )...);_gbc ++;};};};
};};};for _ ,_bc :=range _gfd .GrpSp {if _bc .GrpSpPr !=nil {_da :=_bc .GrpSpPr .Xfrm ;var _bcd ,_acc int64 ;if _da .Off !=nil {_age ,_ab :=_da .Off .XAttr .ST_CoordinateUnqualified ,_da .Off .YAttr .ST_CoordinateUnqualified ;if _age !=nil &&_ab !=nil {if _de :=_da .Ext ;
_de !=nil {_bcd ,_acc =_de .CxAttr ,_de .CyAttr ;};_ggg =append (_ggg ,rectangle {_cca :*_age ,_cea :*_ab ,_ef :*_age +_bcd ,_fdb :*_ab +_acc });};};};_fae =_cd (_dbd ,_bc .Choice ,_ggg ,_fae );};};return _fae ;};
2021-09-22 16:41:01 +00:00
2024-11-22 00:17:48 +00:00
// ClearAll completely clears a placeholder. To be useable, at least one
// paragraph must be added after ClearAll via AddParagraph.
func (_fb PlaceHolder )ClearAll (){_fb ._dfd .SpPr =_db .NewCT_ShapeProperties ();_fb ._dfd .TxBody =_db .NewCT_TextBody ();_fb ._dfd .TxBody .LstStyle =_db .NewCT_TextListStyle ();};
2021-09-22 16:41:01 +00:00
2024-11-22 00:17:48 +00:00
// Presentation is the a presentation base document.
type Presentation struct{_gb .DocBase ;_eec *_ed .Presentation ;_ede _gb .Relationships ;_bbf []*_ed .Sld ;_edg []_gb .Relationships ;_bgf []int ;_cgf []*_ed .SldMaster ;_bae []_gb .Relationships ;_gca []int ;_ffg []*_ed .SldLayout ;_bff []_gb .Relationships ;
_fcae []*_db .Theme ;_baa []_gb .Relationships ;_cdga []int ;_ffb _gb .TableStyles ;_bd PresentationProperties ;_edd ViewProperties ;_cgfe []*_db .CT_Hyperlink ;_fac []*chart ;_cdf []*_ed .HandoutMaster ;_cee []*_ed .NotesMaster ;_egg []int ;_gee []*_gbg .XSDAny ;
_gage map[string ]string ;_eaa string ;};
2024-09-16 09:59:58 +00:00
2024-11-22 00:17:48 +00:00
// 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 };};
2024-11-22 00:17:48 +00:00
// HtmlPubPr returns the HtmlPubPr property.
func (_agc PresentationProperties )HtmlPubPr ()*_ed .CT_HtmlPublishProperties {return _agc ._cda .HtmlPubPr ;};
2021-09-22 16:41:01 +00:00
2024-11-22 00:17:48 +00:00
// NotesTextViewPr returns the NotesTextViewPr property.
func (_dbdg ViewProperties )NotesTextViewPr ()*_ed .CT_NotesTextViewProperties {return _dbdg ._agecf .NotesTextViewPr ;};func (_cada sort2d )Swap (i ,j int ){_cada [i ],_cada [j ]=_cada [j ],_cada [i ]};
2022-09-02 11:46:53 +00:00
2024-11-22 00:17:48 +00:00
// Text returns text from a slide as one string separated with line breaks.
func (_gd *SlideText )Text ()string {_cdc :=_cgg .NewBuffer ([]byte {});for _ ,_adb :=range _gd .Items {if _adb .Text !=""{_cdc .WriteString (_adb .Text );_cdc .WriteString ("\u000a");};};return _cdc .String ();};
2022-09-02 11:46:53 +00:00
2024-11-22 00:17:48 +00:00
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
func (_eefg *Presentation )GetColorBySchemeColor (schClr _db .ST_SchemeColorVal )*_db .CT_Color {if len (_eefg ._cgf )==0||len (_eefg ._fcae )==0{return nil ;};var _faf _db .ST_ColorSchemeIndex ;_efdf :=_eefg ._cgf [0];_gggf :=_efdf .ClrMap ;switch schClr .String (){case "\u0062\u0067\u0031":_faf =_gggf .Bg1Attr ;
case "\u0062\u0067\u0032":_faf =_gggf .Bg2Attr ;case "\u0074\u0078\u0031":_faf =_gggf .Tx1Attr ;case "\u0074\u0078\u0032":_faf =_gggf .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_faf =_gggf .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_faf =_gggf .Accent2Attr ;
case "\u0061c\u0063\u0065\u006e\u0074\u0033":_faf =_gggf .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_faf =_gggf .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_faf =_gggf .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_faf =_gggf .Accent6Attr ;
case "\u0068\u006c\u0069n\u006b":_faf =_gggf .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_faf =_gggf .FolHlinkAttr ;case "\u0064\u006b\u0031":_faf =_db .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_faf =_db .ST_ColorSchemeIndexDk2 ;
case "\u006c\u0074\u0031":_faf =_db .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_faf =_db .ST_ColorSchemeIndexLt2 ;default:_faf =_db .ST_ColorSchemeIndexUnset ;};_dfaa :=_eefg ._fcae [0];_bbfa :=_dfaa .ThemeElements ;if _bbfa ==nil {return nil ;
};var _eeaa *_db .CT_Color ;_eebb :=_bbfa .ClrScheme ;switch _faf .String (){case "\u0064\u006b\u0031":_eeaa =_eebb .Dk1 ;case "\u0064\u006b\u0032":_eeaa =_eebb .Dk2 ;case "\u006c\u0074\u0031":_eeaa =_eebb .Lt1 ;case "\u006c\u0074\u0032":_eeaa =_eebb .Lt2 ;
case "\u0061c\u0063\u0065\u006e\u0074\u0031":_eeaa =_eebb .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_eeaa =_eebb .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_eeaa =_eebb .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_eeaa =_eebb .Accent4 ;
case "\u0061c\u0063\u0065\u006e\u0074\u0035":_eeaa =_eebb .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_eeaa =_eebb .Accent6 ;case "\u0068\u006c\u0069n\u006b":_eeaa =_eebb .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_eeaa =_eebb .FolHlink ;
default:return nil ;};return _eeaa ;};
2022-12-06 11:56:49 +00:00
2024-11-22 00:17:48 +00:00
// GetSlideLayout returns a slide layout related to the slide.
func (_ebaec *Slide )GetSlideLayout ()*_ed .SldLayout {_gbfd :=_ebaec .getSlideRels ();for _ ,_bdde :=range _gbfd .Relationships (){if _bdde .Type ()==_gbg .SlideLayoutType {if _gfbcd ,_cfg :=_fd .StringToNumbers (_bdde .Target ());_cfg {return _ebaec ._fagc ._ffg [_gfbcd -1];
};return nil ;};};return nil ;};
2022-02-05 13:05:36 +00:00
2024-11-22 00:17:48 +00:00
// OpenTemplate opens a template file.
func OpenTemplate (fn string )(*Presentation ,error ){_fdec ,_ebcc :=Open (fn );if _ebcc !=nil {return nil ,_ebcc ;};return _fdec ,nil ;};
2022-02-05 13:05:36 +00:00
2024-11-22 00:17:48 +00:00
// OutlineViewPr returns the OutlineViewPr property.
func (_cgfg ViewProperties )OutlineViewPr ()*_ed .CT_OutlineViewProperties {return _cgfg ._agecf .OutlineViewPr ;};
2023-12-12 23:20:29 +00:00
2024-11-22 00:17:48 +00:00
// GridSpacing returns the GridSpacing property.
func (_gggge ViewProperties )GridSpacing ()*_db .CT_PositiveSize2D {return _gggge ._agecf .GridSpacing };
2023-12-12 23:20:29 +00:00
2024-11-22 00:17:48 +00:00
// RemoveSlide removes a slide from a presentation.
func (_fdbc *Presentation )RemoveSlide (s Slide )error {_ecd :=false ;_ggf :=0;for _eed ,_afad :=range _fdbc ._bbf {if _afad ==s ._efg {if _fdbc ._eec .SldIdLst .SldId [_eed ]!=s ._dcbc {return _gab .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 (_fdbc ._bbf [_eed :],_fdbc ._bbf [_eed +1:]);_fdbc ._bbf =_fdbc ._bbf [0:len (_fdbc ._bbf )-1];copy (_fdbc ._edg [_eed :],_fdbc ._edg [_eed +1:]);_fdbc ._edg =_fdbc ._edg [0:len (_fdbc ._edg )-1];copy (_fdbc ._eec .SldIdLst .SldId [_eed :],_fdbc ._eec .SldIdLst .SldId [_eed +1:]);
_fdbc ._eec .SldIdLst .SldId =_fdbc ._eec .SldIdLst .SldId [0:len (_fdbc ._eec .SldIdLst .SldId )-1];copy (_fdbc ._bgf [_eed :],_fdbc ._bgf [_eed +1:]);_fdbc ._bgf =_fdbc ._bgf [0:len (_fdbc ._bgf )-1];_ecd =true ;_ggf =_eed ;};};if !_ecd {return _gab .New ("u\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0073li\u0064\u0065");
};_efcda :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .SlideType ,0);return _fdbc .ContentTypes .RemoveOverrideByIndex (_efcda ,_ggf );};
2023-12-12 23:20:29 +00:00
2024-11-22 00:17:48 +00:00
// X returns the inner wrapped XML type.
func (_dgdb *SlideSize )X ()*_ed .CT_SlideSize {return _dgdb ._acccd };
2024-09-16 09:59:58 +00:00
2024-11-22 00:17:48 +00:00
// SlideSize represents a slide size of a presentation.
type SlideSize struct{_acccd *_ed .CT_SlideSize ;_add *Presentation ;};
2023-04-15 17:27:31 +00:00
2024-11-22 00:17:48 +00:00
// GetTextBoxes returns a list of all text boxes from a slide.
func (_aacg Slide )GetTextBoxes ()[]*TextBox {_aaefb :=[]*TextBox {};_cdfg :=_aacg ._efg .CSld .SpTree .Choice ;for _ ,_dfba :=range _cdfg {for _ ,_dgfca :=range _dfba .Sp {if _dgfca .NvSpPr .CNvSpPr .TxBoxAttr !=nil &&*_dgfca .NvSpPr .CNvSpPr .TxBoxAttr {_aaefb =append (_aaefb ,&TextBox {_dgfca });
};};};return _aaefb ;};func (_adac TextBox )getOff ()*_db .CT_Point2D {if _adac ._baf .SpPr ==nil {_adac ._baf .SpPr =_db .NewCT_ShapeProperties ();};if _adac ._baf .SpPr .Xfrm ==nil {_adac ._baf .SpPr .Xfrm =_db .NewCT_Transform2D ();};if _adac ._baf .SpPr .Xfrm .Off ==nil {_adac ._baf .SpPr .Xfrm .Off =_db .NewCT_Point2D ();
};return _adac ._baf .SpPr .Xfrm .Off ;};
2023-04-15 17:27:31 +00:00
2024-11-22 00:17:48 +00:00
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// document.
func (_eac *Presentation )GetImageByRelID (relID string )(_gb .ImageRef ,bool ){for _ ,_fag :=range _eac .Images {if _fag .RelID ()==relID {return _fag ,true ;};};return _gb .ImageRef {},false ;};
2021-11-10 11:45:21 +00:00
2024-11-22 00:17:48 +00:00
// MoveSlide moves a slide with given number to position targetPos within a presentation.
func (_ffa *Presentation )MoveSlide (slideNumber ,targetPos int )error {if slideNumber < 0||slideNumber >=len (_ffa ._bbf ){return _gab .New ("\u0073\u006c\u0069\u0064eN\u0075\u006d\u0062\u0065\u0072\u0020\u0069\u0073\u0020\u0069\u006e\u0076\u0061\u006ci\u0064");
};if targetPos < 0||targetPos >=len (_ffa ._bbf ){return _gab .New ("t\u0061r\u0067\u0065\u0074\u0050\u006f\u0073\u0020\u0069s\u0020\u0069\u006e\u0076al\u0069\u0064");};if slideNumber ==targetPos {return nil ;};_edcc :=_ffa ._bbf [slideNumber ];_gde :=_ffa ._edg [slideNumber ];
if slideNumber < targetPos {copy (_ffa ._bbf [slideNumber :targetPos ],_ffa ._bbf [slideNumber +1:targetPos +1]);copy (_ffa ._edg [slideNumber :targetPos ],_ffa ._edg [slideNumber +1:targetPos +1]);copy (_ffa ._bgf [slideNumber :targetPos ],_ffa ._bgf [slideNumber +1:targetPos +1]);
}else {copy (_ffa ._bbf [targetPos +1:slideNumber +1],_ffa ._bbf [targetPos :slideNumber ]);copy (_ffa ._edg [targetPos +1:slideNumber +1],_ffa ._edg [targetPos :slideNumber ]);copy (_ffa ._bgf [targetPos +1:slideNumber +1],_ffa ._bgf [targetPos :slideNumber ]);
};_ffa ._bbf [targetPos ]=_edcc ;_ffa ._edg [targetPos ]=_gde ;return nil ;};
2022-02-05 13:05:36 +00:00
2024-11-22 00:17:48 +00:00
// Text returns text from a presentation as one string separated with line breaks.
func (_gaf *PresentationText )Text ()string {_ggb :=_cgg .NewBuffer ([]byte {});for _ ,_ddc :=range _gaf .Slides {_ggb .WriteString (_ddc .Text ());};return _ggb .String ();};
2024-11-22 00:17:48 +00:00
// AddParagraph adds a paragraph to the text box
func (_cfgb TextBox )AddParagraph ()_cgc .Paragraph {_fede :=_db .NewCT_TextParagraph ();_cfgb ._baf .TxBody .P =append (_cfgb ._baf .TxBody .P ,_fede );return _cgc .MakeParagraph (_fede );};
2022-04-09 14:27:46 +00:00
2024-11-22 00:17:48 +00:00
// 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 *_ed .CT_Shape ;GraphicFrame *_ed .CT_GraphicalObjectFrame ;Paragraph *_db .CT_TextParagraph ;Run *_db .CT_RegularTextRun ;TableInfo *TableInfo ;_edf []rectangle ;_ac int ;_cce int ;};
2022-02-05 13:05:36 +00:00
2023-09-16 17:56:36 +00:00
2024-11-22 00:17:48 +00:00
// SlideMasters returns the slide masters defined in the presentation.
func (_gffb *Presentation )SlideMasters ()[]SlideMaster {_fbcg :=[]SlideMaster {};for _feca ,_gceg :=range _gffb ._cgf {if _feca < len (_gffb ._bae ){_fbcg =append (_fbcg ,SlideMaster {_gffb ,_gffb ._bae [_feca ],_gceg });};};return _fbcg ;};
2022-02-05 13:05:36 +00:00
2024-10-17 17:05:28 +00:00
// X returns the inner wrapped XML type.
2024-11-22 00:17:48 +00:00
func (_fed Slide )X ()*_ed .Sld {return _fed ._efg };func (_eda *Presentation )nextSlideID ()uint32 {_ccf :=uint32 (256);for _ ,_bee :=range _eda ._eec .SldIdLst .SldId {if _bee .IdAttr >=_ccf {_ccf =_bee .IdAttr +1;};};return _ccf ;};
2024-07-28 07:48:26 +00:00
2024-11-22 00:17:48 +00:00
// 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 (_gfeb PlaceHolder )Clear (){_gfeb .ClearAll ();_gff :=_db .NewCT_TextParagraph ();_gfeb ._dfd .TxBody .P =[]*_db .CT_TextParagraph {_gff };_gff .EndParaRPr =_db .NewCT_TextCharacterProperties ();_gff .EndParaRPr .LangAttr =_gbg .String ("\u0065\u006e\u002dU\u0053");
};
2024-07-28 07:48:26 +00:00
2024-11-22 00:17:48 +00:00
// Slides returns the slides in the presentation.
func (_egegg *Presentation )Slides ()[]Slide {_geb :=[]Slide {};for _acd ,_beeb :=range _egegg ._bbf {_geb =append (_geb ,Slide {_egegg ._eec .SldIdLst .SldId [_acd ],_beeb ,_egegg ,nil });};return _geb ;};func _fge (_fcca *Presentation ,_gc *_ed .CT_Shape ,_fad *_ed .CT_GraphicalObjectFrame ,_ggga *TableInfo ,_dbc *_db .CT_Transform2D ,_gbe int ,_cga []rectangle ,_fdf []*_db .CT_TextParagraph )[]*TextItem {_bfe :=[]*TextItem {};
var _eg ,_ad ,_cdb ,_ae ,_fde ,_agef int64 ;_aee :=_dbc ==nil ;_ebg :=0;for _ ,_fdae :=range _fdf {for _ ,_gggg :=range _fdae .EG_TextRun {if _ecb :=_gggg .R ;_ecb !=nil {if !_aee {if _dbc .Off !=nil {if _efd :=_dbc .Ext ;_efd !=nil {_fde ,_agef =_efd .CxAttr ,_efd .CyAttr ;
};if _bg :=_dbc .Off .XAttr .ST_CoordinateUnqualified ;_bg !=nil {_eg =*_bg ;_ad =_eg +_fde ;_aee =true ;};if _cge :=_dbc .Off .YAttr .ST_CoordinateUnqualified ;_cge !=nil {_cdb =*_cge ;_ae =_cdb +_agef ;_aee =true ;};};};_aae :=append ([]rectangle {},_cga ...);
_aae =append (_aae ,rectangle {_cca :_eg ,_ef :_ad ,_cea :_cdb ,_fdb :_ae });_bfe =append (_bfe ,&TextItem {Presentation :_fcca ,Shape :_gc ,GraphicFrame :_fad ,TableInfo :_ggga ,Paragraph :_fdae ,Run :_ecb ,Text :_ecb .T ,_edf :_aae ,_ac :_gbe ,_cce :_ebg });
_ebg ++;};};};return _bfe ;};
2022-02-05 13:05:36 +00:00
2024-11-22 00:17:48 +00:00
// Height returns slide screen size height in EMU units.
func (_bfdfg *SlideScreenSize )Height ()int32 {return _bfdfg [1]};
2024-06-20 13:33:45 +00:00
2024-11-22 00:17:48 +00:00
// ClrMru returns the ClrMru property.
func (_ada PresentationProperties )ClrMru ()*_db .CT_ColorMRU {return _ada ._cda .ClrMru };var _fee =false ;
2023-12-12 23:20:29 +00:00
2024-11-22 00:17:48 +00:00
// Properties returns the properties of the TextBox.
func (_edb Image )Properties ()_cgc .ShapeProperties {if _edb ._dea .SpPr ==nil {_edb ._dea .SpPr =_db .NewCT_ShapeProperties ();};return _cgc .MakeShapeProperties (_edb ._dea .SpPr );};type rectangle struct{_cca int64 ;_cea int64 ;_ef int64 ;_fdb int64 ;
};
2023-12-12 23:20:29 +00:00
2024-11-22 00:17:48 +00:00
// SaveToFile writes the Presentation out to a file.
func (_fdc *Presentation )SaveToFile (path string )error {return _fdc .saveToFile (path ,false )};
2023-12-12 23:20:29 +00:00
2024-11-22 00:17:48 +00:00
// Sid returns the sid of slide
func (_fddd Slide )Sid ()*_ed .CT_SlideIdListEntry {return _fddd ._dcbc };
2024-07-28 07:48:26 +00:00
2024-11-22 00:17:48 +00:00
// Slide represents a slide of a presentation.
type Slide struct{_dcbc *_ed .CT_SlideIdListEntry ;_efg *_ed .Sld ;_fagc *Presentation ;_cde *_db .CT_ColorMapping ;};
2024-07-28 07:48:26 +00:00
2024-11-22 00:17:48 +00:00
// PresentationText is an array of extracted text items which has some methods for representing extracted text.
type PresentationText struct{Slides []*SlideText ;};
2024-07-28 07:48:26 +00:00
2024-11-22 00:17:48 +00:00
// ExtLst returns the ExtLst property.
func (_abbaa ViewProperties )ExtLst ()*_ed .CT_ExtensionList {return _abbaa ._agecf .ExtLst };func (_faeg *Presentation )addLayoutFromSlide (_dbg Slide )error {_cdae :=1;for _ ,_bcga :=range _faeg .Images {if _egc ,_bgc :=_fd .StringToNumbers (_bcga .Target ());
_bgc &&_egc >=_cdae {_cdae =_egc +1;};};_faeg ._ffg =append (_faeg ._ffg ,_dbg .GetSlideLayout ());_fbe :=_dbg .getSlideLayoutRels ();for _ ,_dfb :=range _fbe .X ().Relationship {if _dfb .TypeAttr ==_gbg .ImageType {_fdd ,_gcf :=_dbg ._fagc .GetImageByTarget (_dfb .TargetAttr );
if _gcf {if _cfa ,_bbff :=_fd .StringToNumbers (_fdd .Target ());_bbff &&_cfa < _cdae {_fdd .SetTarget (_cg .ReplaceAll (_fdd .Target (),_be .Sprint (_cfa ),_be .Sprint (_cdae )));_dfb .TargetAttr =_fdd .Target ();_cdae =_cdae +1;};_faeg .Images =append (_faeg .Images ,_fdd );
};};};_faeg ._bff =append (_faeg ._bff ,_fbe );if len (_faeg ._cgf )> 0&&len (_faeg ._bae )> 0{_agda :=_faeg ._bae [0].AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .SlideMasterType ,len (_faeg ._ffg ),_gbg .SlideLayoutType );_dfdf :=_ed .NewCT_SlideLayoutIdListEntry ();
_dfdf .IdAttr =_gbg .Uint32 (2147483649);_dfdf .RIdAttr =_agda .ID ();for _ ,_dab :=range _faeg ._cgf [0].SldLayoutIdLst .SldLayoutId {if *_dab .IdAttr >=*_dfdf .IdAttr {_dfdf .IdAttr =_gbg .Uint32 ((*_dab .IdAttr +1));};};_faeg ._cgf [0].SldLayoutIdLst .SldLayoutId =append (_faeg ._cgf [0].SldLayoutIdLst .SldLayoutId ,_dfdf );
};_fgea :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .SlideLayoutType ,len (_faeg ._ffg ));_faeg .ContentTypes .AddOverride (_fgea ,_gbg .SlideLayoutContentType );return nil ;};
// Size returns slide size value as SlideScreenSize.
func (_bdeg *SlideSize )Size ()SlideScreenSize {return SlideScreenSize {_bdeg ._acccd .CxAttr ,_bdeg ._acccd .CyAttr };};
2024-07-28 07:48:26 +00:00
2024-10-17 17:05:28 +00:00
// X returns the inner wrapped XML type.
2024-11-22 00:17:48 +00:00
func (_bbg SlideLayout )X ()*_ed .SldLayout {return _bbg ._acdd };
2023-12-12 23:20:29 +00:00
2024-11-22 00:17:48 +00:00
// 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 (_beg Slide )GetPlaceholderByIndex (idx uint32 )(PlaceHolder ,error ){for _ ,_ecaf :=range _beg ._efg .CSld .SpTree .Choice {for _ ,_gcc :=range _ecaf .Sp {if _gcc .NvSpPr !=nil &&_gcc .NvSpPr .NvPr !=nil &&_gcc .NvSpPr .NvPr .Ph !=nil {if (idx ==0&&_gcc .NvSpPr .NvPr .Ph .IdxAttr ==nil )||(_gcc .NvSpPr .NvPr .Ph .IdxAttr !=nil &&*_gcc .NvSpPr .NvPr .Ph .IdxAttr ==idx ){return PlaceHolder {_gcc ,_beg ._efg },nil ;
};};};};return PlaceHolder {},_gab .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");};
2024-11-22 00:17:48 +00:00
// ExtractText returns text from a slide as a SlideText object.
func (_efe *Slide )ExtractText ()*SlideText {_eee :=_cd (_efe ._fagc ,_efe ._efg .CSld .SpTree .Choice ,[]rectangle {},[]*TextItem {});_ec .Sort (sort2d (_eee ));return &SlideText {Items :_eee };};
2023-04-15 17:27:31 +00:00
2024-11-22 00:17:48 +00:00
// SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template
func (_cagf *Presentation )SaveAsTemplate (w _b .Writer )error {return _cagf .save (w ,true )};
2024-09-16 09:59:58 +00:00
2024-11-22 00:17:48 +00:00
// TextBox is a text box within a slide.
type TextBox struct{_baf *_ed .CT_Shape };
2024-09-16 09:59:58 +00:00
2024-11-22 00:17:48 +00:00
// NewViewProperties constructs a new ViewProperties.
func NewViewProperties ()ViewProperties {return ViewProperties {_agecf :_ed .NewViewPr ()}};var (SlideScreenSize16x9 =SlideScreenSize {12192000,6858000};SlideScreenSize4x3 =SlideScreenSize {9144000,6858000};SlideScreenSizeA4 =SlideScreenSize {9906000,6858000};
);
2024-09-16 09:59:58 +00:00
2024-11-22 00:17:48 +00:00
// NotesViewPr returns the NotesViewPr property.
func (_ecbc ViewProperties )NotesViewPr ()*_ed .CT_NotesViewProperties {return _ecbc ._agecf .NotesViewPr ;};
2023-12-12 23:20:29 +00:00
2024-11-22 00:17:48 +00:00
// GetLayoutImageByRelID returns an ImageRef with the associated relation ID in the
// slide layout.
func (_gdag *Slide )GetLayoutImageByRelID (relID string )(_gb .ImageRef ,bool ){_fcff :=_gdag .getSlideLayoutRels ();if (_fcff ==_gb .Relationships {}){return _gb .ImageRef {},false ;};_bbecc :=_fcff .GetTargetByRelId (relID );for _ ,_befa :=range _gdag ._fagc .Images {if _befa .Target ()==_bbecc {return _befa ,true ;
};};return _gb .ImageRef {},false ;};
2023-12-12 23:20:29 +00:00
2024-11-22 00:17:48 +00:00
// CopySlide copies existing slide from another presentation and inserts it as a last one.
func (_aaea *Presentation )CopySlide (s Slide )(Slide ,error ){_dca :=_ed .NewCT_SlideIdListEntry ();_dca .IdAttr =_aaea .nextSlideID ();_aaea ._eec .SldIdLst .SldId =append (_aaea ._eec .SldIdLst .SldId ,_dca );_cgeb :=s .GetSlideLayout ();_bggg :=true ;
for _ ,_fbc :=range _aaea ._ffg {if _fbc ==_cgeb {_bggg =false ;break ;};};if _bggg {_aaea .addLayoutFromSlide (s );};_aaea ._bbf =append (_aaea ._bbf ,s ._efg );_aaea ._bgf =append (_aaea ._bgf ,len (_aaea ._bbf ));_adbe :=_aaea ._ede .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .OfficeDocumentType ,len (_aaea ._bbf ),_gbg .SlideType );
_dca .RIdAttr =_adbe .ID ();_adg :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .SlideType ,len (_aaea ._bbf ));_aaea .ContentTypes .AddOverride (_adg ,_gbg .SlideContentType );_ceec :=_gb .NewRelationships ();_aaea ._edg =append (_aaea ._edg ,_ceec );
_cbc :=len (_aaea ._edg )-1;for _bfdf ,_decg :=range _aaea ._ffg {if _decg ==_cgeb {_aeda :=_aaea ._bff [_bfdf ];for _ ,_cbcc :=range _aeda .X ().Relationship {if _cbcc .TypeAttr !=_gbg .SlideMasterType {_aaea ._edg [_cbc ].X ().Relationship =append (_aaea ._edg [_cbc ].X ().Relationship ,_cbcc );
};};_ceec .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .SlideType ,_bfdf +1,_gbg .SlideLayoutType );};};_dcc :=Slide {_dca ,s ._efg ,_aaea ,nil };return _dcc ,nil ;};
2023-06-10 07:12:37 +00:00
2024-11-22 00:17:48 +00:00
// LastViewAttr returns the LastViewAttr property.
func (_gada ViewProperties )LastViewAttr ()_ed .ST_ViewType {return _gada ._agecf .LastViewAttr };
2023-09-16 17:56:36 +00:00
2024-11-22 00:17:48 +00:00
// SlideViewPr returns the SlideViewPr property.
func (_cgaf ViewProperties )SlideViewPr ()*_ed .CT_SlideViewProperties {return _cgaf ._agecf .SlideViewPr ;};
2023-08-06 17:57:53 +00:00
2024-11-22 00:17:48 +00:00
// SetTextAnchor controls the text anchoring
func (_dgb TextBox )SetTextAnchor (a _db .ST_TextAnchoringType ){_dgb ._baf .TxBody .BodyPr =_db .NewCT_TextBodyProperties ();_dgb ._baf .TxBody .BodyPr .AnchorAttr =a ;};
2023-06-10 07:12:37 +00:00
2024-11-22 00:17:48 +00:00
// Save writes the presentation out to a writer in the Zip package format
func (_gea *Presentation )Save (w _b .Writer )error {return _gea .save (w ,false )};
2023-09-16 17:56:36 +00:00
2024-11-22 00:17:48 +00:00
// GetChartSpaceByRelId returns a *crt.ChartSpace with the associated relation ID in the
// slide.
func (_fcge *Slide )GetChartSpaceByRelId (relId string )*_g .ChartSpace {_ged :=_fcge .getSlideRels ();if (_ged ==_gb .Relationships {}){return nil ;};_cae :=_ged .GetTargetByRelId (relId );for _ ,_dadf :=range _fcge ._fagc ._fac {if _cae ==_dadf .Target (){return _dadf ._dg ;
};};return nil ;};
2023-09-16 17:56:36 +00:00
2024-11-22 00:17:48 +00:00
// SetWidth sets width of slide screen size with given value in EMU units.
func (_fga *SlideScreenSize )SetWidth (val int32 ){_fga [0]=val };
2023-09-16 17:56:36 +00:00
2024-11-22 00:17:48 +00:00
// SlideScreenSize represents the slide screen size as a 2 element array
// representing the width and height in EMU units.
type SlideScreenSize [2]int32 ;
2023-06-10 07:12:37 +00:00
2024-11-22 00:17:48 +00:00
// Index returns the placeholder index
func (_efc PlaceHolder )Index ()uint32 {if _efc ._dfd .NvSpPr .NvPr .Ph .IdxAttr ==nil {return 0;};return *_efc ._dfd .NvSpPr .NvPr .Ph .IdxAttr ;};
2023-08-06 17:57:53 +00:00
2024-11-22 00:17:48 +00:00
// 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 (_abf sort2d )Less (i ,j int )bool {_ebec ,_ba :=_abf [i ],_abf [j ];_bgg ,_bab :=_ebec ._edf ,_ba ._edf ;_ecac ,_egd :=len (_bgg )-1,len (_bab )-1;_edc ,_accb :=0,0;for {_af ,_gggd ,_ffe ,_gbgd ,_dgf ,_bbb ,_fccc ,_aed :=_bgg [_edc ]._cea ,_bab [_accb ]._cea ,_bgg [_edc ]._fdb ,_bab [_accb ]._fdb ,_bgg [_edc ]._cca ,_bab [_accb ]._cca ,_bgg [_edc ]._ef ,_bab [_accb ]._ef ;
if _af ==_gggd ||((_ee .Abs (float64 (_af )-float64 (_gggd ))< _fcd )&&((_af >=_gggd &&_af <=_gbgd )||(_gggd >=_af &&_gggd <=_ffe ))&&(_fccc < _bbb ||_dgf > _aed )){if _dgf ==_bbb {if _edc < _ecac &&_accb < _egd {_edc ++;_accb ++;continue ;};if _edc >=_ecac &&_accb >=_egd {break ;
};return _edc >=_ecac ;}else {return _dgf < _bbb ;};}else {return _af < _gggd ;};};_eba ,_gabg ,_cag ,_gafb :=_ebec ._ac ,_ba ._ac ,_ebec ._cce ,_ba ._cce ;if _eba ==_gabg {return _cag <=_gafb ;};return _eba < _gabg ;};const _fcd float64 =500000;func _ead (_dccb []*_ed .CT_GroupShapeChoice )[]*_ed .CT_GroupShapeChoice {var _babef []*_ed .CT_GroupShapeChoice ;
for _ ,_fec :=range _dccb {if len (_fec .Pic )==0{_babef =append (_babef ,_fec );};};return _babef ;};
2023-09-16 17:56:36 +00:00
2024-11-22 00:17:48 +00:00
// Width returns slide screen size width in EMU units.
func (_fgff *SlideScreenSize )Width ()int32 {return _fgff [0]};
2023-09-16 17:56:36 +00:00
2024-11-22 00:17:48 +00:00
// Paragraphs returns the paragraphs defined in the placeholder.
func (_dff PlaceHolder )Paragraphs ()[]_cgc .Paragraph {_cgd :=[]_cgc .Paragraph {};for _ ,_gcg :=range _dff ._dfd .TxBody .P {_cgd =append (_cgd ,_cgc .MakeParagraph (_gcg ));};return _cgd ;};
2023-09-16 17:56:36 +00:00
2024-11-22 00:17:48 +00:00
// Name returns the name of the slide layout.
func (_bedff SlideLayout )Name ()string {if _bedff ._acdd .CSld !=nil &&_bedff ._acdd .CSld .NameAttr !=nil {return *_bedff ._acdd .CSld .NameAttr ;};return "";};
2023-12-12 23:20:29 +00:00
2024-11-22 00:17:48 +00:00
// 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 (_aagf *Presentation )AddImage (i _gb .Image )(_gb .ImageRef ,error ){_cdge :=_gb .MakeImageRef (i ,&_aagf .DocBase ,_aagf ._ede );if i .Data ==nil &&i .Path ==""{return _cdge ,_gab .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 _cdge ,_gab .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 _cdge ,_gab .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 !=""{_eddd :=_ff .Add (i .Path );if _eddd !=nil {return _cdge ,_eddd ;};};_aagf .Images =append (_aagf .Images ,_cdge );_aagf .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_aagf .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");
_aagf .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_aagf .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");_aagf .ContentTypes .EnsureDefault (i .Format ,"\u0069\u006d\u0061\u0067\u0065\u002f"+i .Format );
return _cdge ,nil ;};
2023-12-28 15:53:06 +00:00
2024-11-22 00:17:48 +00:00
// SaveToFileAsTemplate writes the Presentation out to a file as a template.
func (_fegd *Presentation )SaveToFileAsTemplate (path string )error {return _fegd .saveToFile (path ,true );};
2024-06-20 13:33:45 +00:00
2024-11-22 00:17:48 +00:00
// ShowCommentsAttr returns the WebPr property.
func (_gbffe ViewProperties )ShowCommentsAttr ()*bool {return _gbffe ._agecf .ShowCommentsAttr };
2024-06-20 13:33:45 +00:00
2024-11-22 00:17:48 +00:00
// Type returns the placeholder type
func (_aeb PlaceHolder )Type ()_ed .ST_PlaceholderType {return _aeb ._dfd .NvSpPr .NvPr .Ph .TypeAttr };
2024-06-20 13:33:45 +00:00
2024-11-22 00:17:48 +00:00
// AddSlide adds a new slide to the presentation.
func (_bdad *Presentation )AddSlide ()Slide {_dgfg :=_ed .NewCT_SlideIdListEntry ();_dgfg .IdAttr =_bdad .nextSlideID ();_bdad ._eec .SldIdLst .SldId =append (_bdad ._eec .SldIdLst .SldId ,_dgfg );_bedf :=_ed .NewSld ();_bedf .CSld .SpTree .NvGrpSpPr .CNvPr .IdAttr =1;
_bedf .CSld .SpTree .GrpSpPr .Xfrm =_db .NewCT_GroupTransform2D ();_bedf .CSld .SpTree .GrpSpPr .Xfrm .Off =_db .NewCT_Point2D ();_bedf .CSld .SpTree .GrpSpPr .Xfrm .Off .XAttr .ST_CoordinateUnqualified =_gbg .Int64 (0);_bedf .CSld .SpTree .GrpSpPr .Xfrm .Off .YAttr .ST_CoordinateUnqualified =_gbg .Int64 (0);
_bedf .CSld .SpTree .GrpSpPr .Xfrm .Ext =_db .NewCT_PositiveSize2D ();_bedf .CSld .SpTree .GrpSpPr .Xfrm .Ext .CxAttr =int64 (0*_ca .Point );_bedf .CSld .SpTree .GrpSpPr .Xfrm .Ext .CyAttr =int64 (0*_ca .Point );_bedf .CSld .SpTree .GrpSpPr .Xfrm .ChOff =_bedf .CSld .SpTree .GrpSpPr .Xfrm .Off ;
_bedf .CSld .SpTree .GrpSpPr .Xfrm .ChExt =_bedf .CSld .SpTree .GrpSpPr .Xfrm .Ext ;_bdad ._bbf =append (_bdad ._bbf ,_bedf );_bdad ._bgf =append (_bdad ._bgf ,len (_bdad ._bbf ));_fff :=_bdad ._ede .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .OfficeDocumentType ,len (_bdad ._bbf ),_gbg .SlideType );
_dgfg .RIdAttr =_fff .ID ();_dec :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .SlideType ,len (_bdad ._bbf ));_bdad .ContentTypes .AddOverride (_dec ,_gbg .SlideContentType );_eccf :=_gb .NewRelationships ();_bdad ._edg =append (_bdad ._edg ,_eccf );
_eccf .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .SlideType ,len (_bdad ._ffg ),_gbg .SlideLayoutType );return Slide {_dgfg ,_bedf ,_bdad ,nil };};
2024-06-20 13:33:45 +00:00
2024-11-22 00:17:48 +00:00
// Presentation returns a slide's presentation.
func (_dgg Slide )Presentation ()*Presentation {return _dgg ._fagc };func (_facc *Slide )ensureClrMap (){if len (_facc ._fagc ._cgf )==0||len (_facc ._fagc ._fcae )==0{return ;};_fdac :=_facc ._fagc ._cgf [0];_dggb :=_fdac .ClrMap ;if _gabf :=_facc ._efg .ClrMapOvr ;
_gabf !=nil {if _cbfc :=_gabf .Choice ;_cbfc !=nil {if _cbfc .MasterClrMapping ==nil {if _fadg :=_cbfc .OverrideClrMapping ;_fadg !=nil {if _fadg .Bg1Attr !=_db .ST_ColorSchemeIndexUnset {_dggb .Bg1Attr =_fadg .Bg1Attr ;};if _fadg .Tx1Attr !=_db .ST_ColorSchemeIndexUnset {_dggb .Tx1Attr =_fadg .Tx1Attr ;
};if _fadg .Bg2Attr !=_db .ST_ColorSchemeIndexUnset {_dggb .Bg2Attr =_fadg .Bg2Attr ;};if _fadg .Tx2Attr !=_db .ST_ColorSchemeIndexUnset {_dggb .Tx2Attr =_fadg .Tx2Attr ;};if _fadg .Accent1Attr !=_db .ST_ColorSchemeIndexUnset {_dggb .Accent1Attr =_fadg .Accent1Attr ;
};if _fadg .Accent2Attr !=_db .ST_ColorSchemeIndexUnset {_dggb .Accent2Attr =_fadg .Accent2Attr ;};if _fadg .Accent3Attr !=_db .ST_ColorSchemeIndexUnset {_dggb .Accent3Attr =_fadg .Accent3Attr ;};if _fadg .Accent4Attr !=_db .ST_ColorSchemeIndexUnset {_dggb .Accent4Attr =_fadg .Accent4Attr ;
};if _fadg .Accent5Attr !=_db .ST_ColorSchemeIndexUnset {_dggb .Accent5Attr =_fadg .Accent5Attr ;};if _fadg .Accent6Attr !=_db .ST_ColorSchemeIndexUnset {_dggb .Accent6Attr =_fadg .Accent6Attr ;};if _fadg .HlinkAttr !=_db .ST_ColorSchemeIndexUnset {_dggb .HlinkAttr =_fadg .HlinkAttr ;
};if _fadg .FolHlinkAttr !=_db .ST_ColorSchemeIndexUnset {_dggb .FolHlinkAttr =_fadg .FolHlinkAttr ;};};};};};_facc ._cde =_dggb ;};
2024-02-17 03:37:07 +00:00
2024-11-22 00:17:48 +00:00
// ExtractText returns text from a presentation as a PresentationText object.
func (_bf *Presentation )ExtractText ()*PresentationText {_aa :=[]*SlideText {};for _ ,_cad :=range _bf .Slides (){_eca :=_cad .ExtractText ();if _eca !=nil {_aa =append (_aa ,_eca );};};return &PresentationText {Slides :_aa };};
2024-05-22 00:21:11 +00:00
2024-11-22 00:17:48 +00:00
// PrnPr returns the PrnPr property.
func (_bcg PresentationProperties )PrnPr ()*_ed .CT_PrintProperties {return _bcg ._cda .PrnPr };
2024-05-22 00:21:11 +00:00
2024-11-22 00:17:48 +00:00
// X returns TextBox's underlying *pml.CT_Shape.
func (_ced TextBox )X ()*_ed .CT_Shape {return _ced ._baf };
2024-05-22 00:21:11 +00:00
2024-11-22 00:17:48 +00:00
// Open opens and reads a document from a file (.pptx).
func Open (filename string )(*Presentation ,error ){_ege ,_ea :=_e .Open (filename );if _ea !=nil {return nil ,_be .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_ea );};defer _ege .Close ();
_aaed ,_ea :=_e .Stat (filename );if _ea !=nil {return nil ,_be .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_ea );};_ =_aaed ;return Read (_ege ,_aaed .Size ());};
2024-05-22 00:21:11 +00:00
2024-10-17 17:05:28 +00:00
// X returns the inner wrapped XML type.
2024-11-22 00:17:48 +00:00
func (_cfbb *Presentation )X ()*_ed .Presentation {return _cfbb ._eec };
2024-11-22 00:17:48 +00:00
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// slide.
func (_bagc *Slide )GetImageByRelID (relID string )(_gb .ImageRef ,bool ){_egfe :=_bagc .getSlideRels ();if (_egfe ==_gb .Relationships {}){return _gb .ImageRef {},false ;};_abg :=_egfe .GetTargetByRelId (relID );for _ ,_gbde :=range _bagc ._fagc .Images {if _gbde .Target ()==_abg {return _gbde ,true ;
};};return _gb .ImageRef {},false ;};
2024-05-04 18:48:06 +00:00
2024-11-22 00:17:48 +00:00
// WebPr returns the WebPr property.
func (_cb PresentationProperties )WebPr ()*_ed .CT_WebProperties {return _cb ._cda .WebPr };
2024-05-04 18:48:06 +00:00
2024-11-22 00:17:48 +00:00
// ViewProperties contains presentation specific properties.
type ViewProperties struct{_agecf *_ed .ViewPr };
2024-05-22 00:21:11 +00:00
2024-11-22 00:17:48 +00:00
// X returns the inner wrapped XML type.
func (_dfdd SlideMaster )X ()*_ed .SldMaster {return _dfdd ._gfba };
2024-05-04 18:48:06 +00:00
2024-11-22 00:17:48 +00:00
// ValidateWithPath validates the slide passing path informaton for a better
// error message.
func (_fdbb Slide )ValidateWithPath (path string )error {if _bgggb :=_fdbb ._efg .ValidateWithPath (path );_bgggb !=nil {return _bgggb ;};for _ ,_bedb :=range _fdbb ._efg .CSld .SpTree .Choice {for _ ,_dgfc :=range _bedb .Sp {if _dgfc .TxBody !=nil {if len (_dgfc .TxBody .P )==0{return _gab .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 (_dgdf *chart )Target ()string {return _dgdf ._dgd };func (_cc *chart )X ()*_g .ChartSpace {return _cc ._dg };
2024-05-04 18:48:06 +00:00
2024-11-22 00:17:48 +00:00
// GetImageByTarget returns an ImageRef with the given target in the
// document.
func (_bga *Presentation )GetImageByTarget (target string )(_gb .ImageRef ,bool ){for _ ,_fcac :=range _bga .Images {if _fcac .Target ()==target {return _fcac ,true ;};};return _gb .ImageRef {},false ;};
2024-05-08 13:54:39 +00:00
2024-11-22 00:17:48 +00:00
// SetSize sets the slide size, take argument of SlideScreenSize.
func (_fcaad *SlideSize )SetSize (sz SlideScreenSize ){_fcaad ._acccd .CxAttr =sz [0];_fcaad ._acccd .CyAttr =sz [1];};
2024-05-22 00:21:11 +00:00
2024-11-22 00:17:48 +00:00
// New initializes and returns a new presentation
func New ()*Presentation {_afc :=_egeg ();_afc .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");
_afc .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");
_afc .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");
_afc .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");
_afc .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");
_afc .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");
_afc .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");
_afc ._eec .SldMasterIdLst =_ed .NewCT_SlideMasterIdList ();_efda :=_ed .NewSldMaster ();_efda .ClrMap .Bg1Attr =_db .ST_ColorSchemeIndexLt1 ;_efda .ClrMap .Bg2Attr =_db .ST_ColorSchemeIndexLt2 ;_efda .ClrMap .Tx1Attr =_db .ST_ColorSchemeIndexDk1 ;_efda .ClrMap .Tx2Attr =_db .ST_ColorSchemeIndexDk2 ;
_efda .ClrMap .Accent1Attr =_db .ST_ColorSchemeIndexAccent1 ;_efda .ClrMap .Accent2Attr =_db .ST_ColorSchemeIndexAccent2 ;_efda .ClrMap .Accent3Attr =_db .ST_ColorSchemeIndexAccent3 ;_efda .ClrMap .Accent4Attr =_db .ST_ColorSchemeIndexAccent4 ;_efda .ClrMap .Accent5Attr =_db .ST_ColorSchemeIndexAccent5 ;
_efda .ClrMap .Accent6Attr =_db .ST_ColorSchemeIndexAccent6 ;_efda .ClrMap .HlinkAttr =_db .ST_ColorSchemeIndexHlink ;_efda .ClrMap .FolHlinkAttr =_db .ST_ColorSchemeIndexFolHlink ;_afc ._cgf =append (_afc ._cgf ,_efda );_afc ._gca =append (_afc ._gca ,len (_afc ._cgf ));
_aag :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .SlideMasterType ,1);_afc .ContentTypes .AddOverride (_aag ,_gbg .SlideMasterContentType );_adbf :=_afc ._ede .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .OfficeDocumentType ,1,_gbg .SlideMasterType );
_ceg :=_ed .NewCT_SlideMasterIdListEntry ();_ceg .IdAttr =_gbg .Uint32 (2147483648);_ceg .RIdAttr =_adbf .ID ();_afc ._eec .SldMasterIdLst .SldMasterId =append (_afc ._eec .SldMasterIdLst .SldMasterId ,_ceg );_fcg :=_gb .NewRelationships ();_afc ._bae =append (_afc ._bae ,_fcg );
_bde :=_ed .NewSldLayout ();_fgc :=_fcg .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .SlideMasterType ,1,_gbg .SlideLayoutType );_gafba :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .SlideLayoutType ,1);_afc .ContentTypes .AddOverride (_gafba ,_gbg .SlideLayoutContentType );
_fcg .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .SlideMasterType ,1,_gbg .ThemeType );_afc ._ffg =append (_afc ._ffg ,_bde );_efda .SldLayoutIdLst =_ed .NewCT_SlideLayoutIdList ();_aga :=_ed .NewCT_SlideLayoutIdListEntry ();_aga .IdAttr =_gbg .Uint32 (2147483649);
_aga .RIdAttr =_fgc .ID ();_efda .SldLayoutIdLst .SldLayoutId =append (_efda .SldLayoutIdLst .SldLayoutId ,_aga );_fgb :=_gb .NewRelationships ();_afc ._bff =append (_afc ._bff ,_fgb );_fgb .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .SlideType ,1,_gbg .SlideMasterType );
_afc ._eec .NotesSz .CxAttr =6858000;_afc ._eec .NotesSz .CyAttr =9144000;_aec :=_db .NewTheme ();_aec .NameAttr =_gbg .String ("\u0075n\u0069o\u0066\u0066\u0069\u0063\u0065\u0020\u0054\u0068\u0065\u006d\u0065");_aec .ThemeElements .ClrScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";
_aec .ThemeElements .ClrScheme .Dk1 .SysClr =_db .NewCT_SystemColor ();_aec .ThemeElements .ClrScheme .Dk1 .SysClr .LastClrAttr =_gbg .String ("\u0030\u0030\u0030\u0030\u0030\u0030");_aec .ThemeElements .ClrScheme .Dk1 .SysClr .ValAttr =_db .ST_SystemColorValWindowText ;
_aec .ThemeElements .ClrScheme .Lt1 .SysClr =_db .NewCT_SystemColor ();_aec .ThemeElements .ClrScheme .Lt1 .SysClr .LastClrAttr =_gbg .String ("\u0066\u0066\u0066\u0066\u0066\u0066");_aec .ThemeElements .ClrScheme .Lt1 .SysClr .ValAttr =_db .ST_SystemColorValWindow ;
_aec .ThemeElements .ClrScheme .Dk2 .SrgbClr =_db .NewCT_SRgbColor ();_aec .ThemeElements .ClrScheme .Dk2 .SrgbClr .ValAttr ="\u0034\u0034\u0035\u0034\u0036\u0061";_aec .ThemeElements .ClrScheme .Lt2 .SrgbClr =_db .NewCT_SRgbColor ();_aec .ThemeElements .ClrScheme .Lt2 .SrgbClr .ValAttr ="\u0065\u0037\u0065\u0037\u0065\u0036";
_aec .ThemeElements .ClrScheme .Accent1 .SrgbClr =_db .NewCT_SRgbColor ();_aec .ThemeElements .ClrScheme .Accent1 .SrgbClr .ValAttr ="\u0034\u0034\u0037\u0032\u0063\u0034";_aec .ThemeElements .ClrScheme .Accent2 .SrgbClr =_db .NewCT_SRgbColor ();_aec .ThemeElements .ClrScheme .Accent2 .SrgbClr .ValAttr ="\u0065\u0064\u0037\u0064\u0033\u0031";
_aec .ThemeElements .ClrScheme .Accent3 .SrgbClr =_db .NewCT_SRgbColor ();_aec .ThemeElements .ClrScheme .Accent3 .SrgbClr .ValAttr ="\u0061\u0035\u0061\u0035\u0061\u0035";_aec .ThemeElements .ClrScheme .Accent4 .SrgbClr =_db .NewCT_SRgbColor ();_aec .ThemeElements .ClrScheme .Accent4 .SrgbClr .ValAttr ="\u0066\u0066\u0063\u0030\u0030\u0030";
_aec .ThemeElements .ClrScheme .Accent5 .SrgbClr =_db .NewCT_SRgbColor ();_aec .ThemeElements .ClrScheme .Accent5 .SrgbClr .ValAttr ="\u0035\u0062\u0039\u0062\u0064\u0035";_aec .ThemeElements .ClrScheme .Accent6 .SrgbClr =_db .NewCT_SRgbColor ();_aec .ThemeElements .ClrScheme .Accent6 .SrgbClr .ValAttr ="\u0037\u0030\u0061\u0064\u0034\u0037";
_aec .ThemeElements .ClrScheme .Hlink .SrgbClr =_db .NewCT_SRgbColor ();_aec .ThemeElements .ClrScheme .Hlink .SrgbClr .ValAttr ="\u0030\u0035\u0036\u0033\u0063\u0031";_aec .ThemeElements .ClrScheme .FolHlink .SrgbClr =_db .NewCT_SRgbColor ();_aec .ThemeElements .ClrScheme .FolHlink .SrgbClr .ValAttr ="\u0039\u0035\u0034\u0066\u0037\u0032";
_aec .ThemeElements .FontScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_aec .ThemeElements .FontScheme .MajorFont .Latin .TypefaceAttr ="\u0043\u0061\u006c\u0069\u0062\u0072\u0069\u0020\u004c\u0069\u0067\u0068\u0074";_aec .ThemeElements .FontScheme .MinorFont .Latin .TypefaceAttr ="\u0043a\u006c\u0069\u0062\u0072\u0069";
_aec .ThemeElements .FmtScheme .NameAttr =_gbg .String ("\u004f\u0066\u0066\u0069\u0063\u0065");_bbfb :=_db .NewEG_FillProperties ();_aec .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_aec .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_bbfb );
_bbfb .SolidFill =&_db .CT_SolidColorFillProperties {SchemeClr :&_db .CT_SchemeColor {ValAttr :_db .ST_SchemeColorValPhClr }};_bbfb =_db .NewEG_FillProperties ();_aec .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_aec .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_bbfb );
_aec .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_aec .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_bbfb );_bbfb .GradFill =&_db .CT_GradientFillProperties {RotWithShapeAttr :_gbg .Bool (true ),GsLst :&_db .CT_GradientStopList {},Lin :&_db .CT_LinearShadeProperties {}};
_bbfb .GradFill .Lin .AngAttr =_gbg .Int32 (5400000);_bbfb .GradFill .Lin .ScaledAttr =_gbg .Bool (false );_aff :=_db .NewCT_GradientStop ();_aff .PosAttr .ST_PositiveFixedPercentageDecimal =_gbg .Int32 (0);_aff .SchemeClr =&_db .CT_SchemeColor {ValAttr :_db .ST_SchemeColorValPhClr };
_bbfb .GradFill .GsLst .Gs =append (_bbfb .GradFill .GsLst .Gs ,_aff );_aff =_db .NewCT_GradientStop ();_aff .PosAttr .ST_PositiveFixedPercentageDecimal =_gbg .Int32 (50000);_aff .SchemeClr =&_db .CT_SchemeColor {ValAttr :_db .ST_SchemeColorValPhClr };
_bbfb .GradFill .GsLst .Gs =append (_bbfb .GradFill .GsLst .Gs ,_aff );_aec .ThemeElements .FmtScheme .LnStyleLst =_db .NewCT_LineStyleList ();for _dffe :=0;_dffe < 3;_dffe ++{_becg :=_db .NewCT_LineProperties ();_becg .WAttr =_gbg .Int32 (int32 (6350*(_dffe +1)));
_becg .CapAttr =_db .ST_LineCapFlat ;_becg .CmpdAttr =_db .ST_CompoundLineSng ;_becg .AlgnAttr =_db .ST_PenAlignmentCtr ;_aec .ThemeElements .FmtScheme .LnStyleLst .Ln =append (_aec .ThemeElements .FmtScheme .LnStyleLst .Ln ,_becg );};_aec .ThemeElements .FmtScheme .EffectStyleLst =_db .NewCT_EffectStyleList ();
for _gdg :=0;_gdg < 3;_gdg ++{_bda :=_db .NewCT_EffectStyleItem ();_bda .EffectLst =_db .NewCT_EffectList ();_aec .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle =append (_aec .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle ,_bda );};_gec :=_db .NewEG_FillProperties ();
_gec .SolidFill =&_db .CT_SolidColorFillProperties {SchemeClr :&_db .CT_SchemeColor {ValAttr :_db .ST_SchemeColorValPhClr }};_aec .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_aec .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_gec );
_aec .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_aec .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_gec );_aec .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_aec .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_bbfb );
_afc ._fcae =append (_afc ._fcae ,_aec );_ecc :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .ThemeType ,1);_afc .ContentTypes .AddOverride (_ecc ,_gbg .ThemeContentType );_afc ._ede .AddAutoRelationship (_gbg .DocTypePresentation ,_gbg .OfficeDocumentType ,1,_gbg .ThemeType );
_bed :=_gb .NewRelationships ();_afc ._baa =append (_afc ._baa ,_bed );_afc ._cdga =append (_afc ._cdga ,len (_afc ._fcae ));return _afc ;};func (_eddg *Presentation )save (_gce _b .Writer ,_faa bool )error {const _bfb ="\u0050\u0072\u0065\u0073en\u0074\u0061\u0074\u0069\u006f\u006e\u003a\u0070\u002e\u0053\u0061\u0076\u0065";
if _ega :=_eddg ._eec .Validate ();_ega !=nil {_ga .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",_ega );
};if !_ce .GetLicenseKey ().IsLicensed ()&&!_fee {_be .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");_be .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 _gab .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");};_bfff :="\u0075n\u006b\u006e\u006f\u0077\u006e";if _dda ,_ffbb :=_gce .(*_e .File );
_ffbb {_bfff =_dda .Name ();};if len (_eddg ._eaa )==0{_acf ,_cfbbb :=_ce .GenRefId ("\u0070\u0077");if _cfbbb !=nil {_ga .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cfbbb );return _cfbbb ;};_eddg ._eaa =_acf ;};if _gdf :=_ce .Track (_eddg ._eaa ,_bfb ,_bfff );
_gdf !=nil {_ga .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_gdf );return _gdf ;};if _faa {_eddg .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");
_eddg .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 {_eddg .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");
_eddg .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");
};_adab :=_gbg .DocTypePresentation ;_cef :=_gg .NewWriter (_gce );defer _cef .Close ();if _gfff :=_f .MarshalXML (_cef ,_gbg .BaseRelsFilename ,_eddg .Rels .X ());_gfff !=nil {return _gfff ;};if _gdc :=_f .MarshalXMLByType (_cef ,_adab ,_gbg .ExtendedPropertiesType ,_eddg .AppProperties .X ());
_gdc !=nil {return _gdc ;};if _agec :=_f .MarshalXMLByType (_cef ,_adab ,_gbg .CorePropertiesType ,_eddg .CoreProperties .X ());_agec !=nil {return _agec ;};if _ffeg :=_f .MarshalXMLByType (_cef ,_adab ,_gbg .PresentationPropertiesType ,_eddg ._bd .X ());
_ffeg !=nil {return _ffeg ;};if _bge :=_f .MarshalXMLByType (_cef ,_adab ,_gbg .ViewPropertiesType ,_eddg ._edd .X ());_bge !=nil {return _bge ;};if _ebf :=_f .MarshalXMLByType (_cef ,_adab ,_gbg .TableStylesType ,_eddg ._ffb .X ());_ebf !=nil {return _ebf ;
};if _eddg .CustomProperties .X ()!=nil {if _ebba :=_f .MarshalXMLByType (_cef ,_adab ,_gbg .CustomPropertiesType ,_eddg .CustomProperties .X ());_ebba !=nil {return _ebba ;};};if _eddg .Thumbnail !=nil {_bfea ,_dcg :=_cef .Create ("\u0064\u006f\u0063Pr\u006f\u0070\u0073\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c\u002e\u006a\u0070\u0065\u0067");
if _dcg !=nil {return _dcg ;};if _fbd :=_ge .Encode (_bfea ,_eddg .Thumbnail ,nil );_fbd !=nil {return _fbd ;};};_dcce :=_gbg .AbsoluteFilename (_adab ,_gbg .OfficeDocumentType ,0);if _dad :=_f .MarshalXML (_cef ,_dcce ,_eddg ._eec );_dad !=nil {return _dad ;
};if _aeg :=_f .MarshalXML (_cef ,_f .RelationsPathFor (_dcce ),_eddg ._ede .X ());_aeg !=nil {return _aeg ;};for _eef ,_bcdg :=range _eddg ._bbf {if _bcdg ==nil {continue ;};_bcdgc :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .SlideType ,_eddg ._bgf [_eef ]);
_f .MarshalXML (_cef ,_bcdgc ,_bcdg );if !_eddg ._edg [_eef ].IsEmpty (){_dfbb :=_f .RelationsPathFor (_bcdgc );_f .MarshalXML (_cef ,_dfbb ,_eddg ._edg [_eef ].X ());};};for _cbd ,_eeef :=range _eddg ._cgf {if _eeef ==nil {continue ;};_bbbe :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .SlideMasterType ,_eddg ._gca [_cbd ]);
_f .MarshalXML (_cef ,_bbbe ,_eeef );if !_eddg ._bae [_cbd ].IsEmpty (){_bcgb :=_f .RelationsPathFor (_bbbe );_f .MarshalXML (_cef ,_bcgb ,_eddg ._bae [_cbd ].X ());};};for _gbca ,_cac :=range _eddg ._ffg {if _cac ==nil {continue ;};_afaf :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .SlideLayoutType ,_gbca +1);
_f .MarshalXML (_cef ,_afaf ,_cac );if !_eddg ._bff [_gbca ].IsEmpty (){_fab :=_f .RelationsPathFor (_afaf );_f .MarshalXML (_cef ,_fab ,_eddg ._bff [_gbca ].X ());};};for _eadg ,_fcaa :=range _eddg ._fcae {if _fcaa ==nil {continue ;};_fcfb :=_gbg .AbsoluteFilename (_gbg .DocTypePresentation ,_gbg .ThemeType ,_eddg ._cdga [_eadg ]);
_f .MarshalXML (_cef ,_fcfb ,_fcaa );if !_eddg ._baa [_eadg ].IsEmpty (){_bbfbf :=_f .RelationsPathFor (_fcfb );_f .MarshalXML (_cef ,_bbfbf ,_eddg ._baa [_eadg ].X ());};};for _fbf ,_cebf :=range _eddg ._fac {_dfg :=_gbg .AbsoluteFilename (_adab ,_gbg .ChartType ,_fbf +1);
_f .MarshalXML (_cef ,_dfg ,_cebf );};for _gfdg ,_cbg :=range _eddg ._cdf {_gef :=_gbg .AbsoluteFilename (_adab ,_gbg .HandoutMasterType ,_gfdg +1);_f .MarshalXML (_cef ,_gef ,_cbg );};for _gga ,_adabe :=range _eddg ._cee {if _adabe ==nil {continue ;};
_ddd :=_gbg .AbsoluteFilename (_adab ,_gbg .NotesMasterType ,_eddg ._egg [_gga ]);_f .MarshalXML (_cef ,_ddd ,_adabe );};for _aecc ,_ccc :=range _eddg .Images {_eeg :=_aecc +1;if _adc ,_gdb :=_fd .StringToNumbers (_ccc .Target ());_gdb &&_eeg !=_adc {_eeg =_adc ;
};if _gafg :=_gb .AddImageToZip (_cef ,_ccc ,_eeg ,_gbg .DocTypePresentation );_gafg !=nil {return _gafg ;};};_eddg .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_eddg .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");
_eddg .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_eddg .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");if _fcgf :=_f .MarshalXML (_cef ,_gbg .ContentTypesFilename ,_eddg .ContentTypes .X ());
_fcgf !=nil {return _fcgf ;};if _cadea :=_eddg .WriteExtraFiles (_cef );_cadea !=nil {return _cadea ;};return nil ;};func (_ceae *Presentation )Validate ()error {if _afd :=_ceae ._eec .Validate ();_afd !=nil {return _afd ;};for _acb ,_dcb :=range _ceae .Slides (){if _gbfb :=_dcb .ValidateWithPath (_be .Sprintf ("\u0053l\u0069\u0064\u0065\u005b\u0025\u0064]",_acb ));
_gbfb !=nil {return _gbfb ;};};for _baaa ,_gfbf :=range _ceae ._cgf {if _decd :=_gfbf .ValidateWithPath (_be .Sprintf ("\u0053l\u0069d\u0065\u004d\u0061\u0073\u0074\u0065\u0072\u005b\u0025\u0064\u005d",_baaa ));_decd !=nil {return _decd ;};};for _edfa ,_efa :=range _ceae ._ffg {if _fcfg :=_efa .ValidateWithPath (_be .Sprintf ("\u0053l\u0069d\u0065\u004c\u0061\u0079\u006f\u0075\u0074\u005b\u0025\u0064\u005d",_edfa ));
_fcfg !=nil {return _fcfg ;};};return nil ;};
2024-10-17 17:05:28 +00:00
2024-11-22 00:17:48 +00:00
// SetOffsetY sets vertical offset of text box in distance units (see measurement package).
func (_adce TextBox )SetOffsetY (offY float64 ){_egcb :=_adce .getOff ();_cbe :=_ca .ToEMU (offY );_egcb .YAttr =_db .ST_Coordinate {ST_CoordinateUnqualified :&_cbe };};
2024-10-17 17:05:28 +00:00
2024-11-22 00:17:48 +00:00
// GetTableStyleById returns *dml.CT_TableStyle by its style id.
func (_cacf *Presentation )GetTableStyleById (id string )*_db .CT_TableStyle {_ccd :=_cacf ._ffb .TblStyle ();for _ ,_beec :=range _ccd {if _beec .StyleIdAttr ==id {return _beec ;};};return nil ;};
2024-10-17 17:05:28 +00:00
2024-11-22 00:17:48 +00:00
// Read reads a document from an io.Reader.
func Read (r _b .ReaderAt ,size int64 )(*Presentation ,error ){const _ebae ="\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e:\u0052\u0065\u0061\u0064";if !_ce .GetLicenseKey ().IsLicensed ()&&!_fee {_be .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");
_be .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 ,_gab .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");};_efde :="\u0075n\u006b\u006e\u006f\u0077\u006e";if _eecb ,_gcff :=r .(*_e .File );
_gcff {_efde =_eecb .Name ();};_aaef :=_egeg ();_fcb ,_gba :=_ce .GenRefId ("\u0070\u0072");if _gba !=nil {_ga .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_gba );return nil ,_gba ;};_aaef ._eaa =_fcb ;if _dcca :=_ce .Track (_aaef ._eaa ,_ebae ,_efde );
_dcca !=nil {_ga .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dcca );return nil ,_dcca ;};_abba ,_gba :=_ff .TempDir ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065-\u0070\u0070\u0074\u0078");if _gba !=nil {return nil ,_gba ;};
_aaef .TmpPath =_abba ;_feb ,_gba :=_gg .NewReader (r ,size );if _gba !=nil {return nil ,_be .Errorf ("\u0070a\u0072s\u0069\u006e\u0067\u0020\u007a\u0069\u0070\u003a\u0020\u0025\u0073",_gba );};_bbec :=[]*_gg .File {};_bbec =append (_bbec ,_feb .File ...);
_bcgc :=false ;for _ ,_cff :=range _bbec {if _cff .FileHeader .Name =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_bcgc =true ;break ;};};if _bcgc {_aaef .CreateCustomProperties ();};_dfab :=_f .DecodeMap {};
_dfab .SetOnNewRelationshipFunc (_aaef .onNewRelationship );_dfab .AddTarget (_gbg .ContentTypesFilename ,_aaef .ContentTypes .X (),"",0);_dfab .AddTarget (_gbg .BaseRelsFilename ,_aaef .Rels .X (),"",0);if _dge :=_dfab .Decode (_bbec );_dge !=nil {return nil ,_dge ;
};for _ ,_abd :=range _bbec {if _abd ==nil {continue ;};if _fcga :=_aaef .AddExtraFileFromZip (_abd );_fcga !=nil {return nil ,_fcga ;};};if _bcgc {_dgag :=false ;for _ ,_cba :=range _aaef .Rels .X ().Relationship {if _cba .TargetAttr =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_dgag =true ;
break ;};};if !_dgag {_aaef .AddCustomRelationships ();};};return _aaef ,nil ;};func (_eag *Presentation )saveToFile (_aaf string ,_fdg bool )error {_cbga ,_accg :=_e .Create (_aaf );if _accg !=nil {return _accg ;};defer _cbga .Close ();return _eag .save (_cbga ,_fdg );
};func _egeg ()*Presentation {_afa :=&Presentation {_eec :_ed .NewPresentation ()};_afa ._eec .SldIdLst =_ed .NewCT_SlideIdList ();_afa ._eec .ConformanceAttr =_a .ST_ConformanceClassTransitional ;_afa .AppProperties =_gb .NewAppProperties ();_afa .CoreProperties =_gb .NewCoreProperties ();
_afa ._ffb =_gb .NewTableStyles ();_afa .ContentTypes =_gb .NewContentTypes ();_afa .Rels =_gb .NewRelationships ();_afa ._ede =_gb .NewRelationships ();_afa ._bd =NewPresentationProperties ();_afa ._edd =NewViewProperties ();_afa ._gage =map[string ]string {};
return _afa ;};
2024-10-17 17:05:28 +00:00
2024-11-22 00:17:48 +00:00
// X returns the inner wrapped XML type.
func (_dacc ViewProperties )X ()*_ed .ViewPr {return _dacc ._agecf };
2024-05-22 00:21:11 +00:00
2024-11-22 00:17:48 +00:00
// TableInfo is used for keep information about a table, a row and a cell where the text is located.
type TableInfo struct{Table *_db .CT_Table ;Row *_db .CT_TableRow ;Cell *_db .CT_TableCell ;RowIndex int ;ColIndex int ;};
2024-05-22 00:21:11 +00:00
2024-11-22 00:17:48 +00:00
// SlideLayout is a layout from which slides can be created.
type SlideLayout struct{_acdd *_ed .SldLayout };
2024-05-22 00:21:11 +00:00
2024-11-22 00:17:48 +00:00
// AddTable adds an empty table to a slide.
func (_bgfc Slide )AddTable ()*_gb .Table {_ggc :=_ed .NewCT_GroupShapeChoice ();_bgfc ._efg .CSld .SpTree .Choice =append (_bgfc ._efg .CSld .SpTree .Choice ,_ggc );_gabe :=_ed .NewCT_GraphicalObjectFrame ();_ggc .GraphicFrame =append (_ggc .GraphicFrame ,_gabe );
_gabe .Xfrm .Off =_db .NewCT_Point2D ();_bag :=int64 (1);_gabe .Xfrm .Off .XAttr =_db .ST_Coordinate {ST_CoordinateUnqualified :&_bag };_gabe .Xfrm .Off .YAttr =_db .ST_Coordinate {ST_CoordinateUnqualified :&_bag };_fgcg :=_gabe .Graphic .CT_GraphicalObject .GraphicData ;
_fgcg .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";
_cgab :=_gb .NewTableWithXfrm (_gabe .Xfrm );_fgcg .Any =append (_fgcg .Any ,_cgab .X ());return _cgab ;};
2024-05-22 00:21:11 +00:00
2024-11-22 00:17:48 +00:00
// Type returns the type of the slide layout.
func (_cfaa SlideLayout )Type ()_ed .ST_SlideLayoutType {return _cfaa ._acdd .TypeAttr };
2024-07-28 07:48:26 +00:00
2024-11-22 00:17:48 +00:00
// AddTextBox adds an empty textbox to a slide.
func (_cgdc Slide )AddTextBox ()TextBox {_ebgg :=_ed .NewCT_GroupShapeChoice ();_cgdc ._efg .CSld .SpTree .Choice =append (_cgdc ._efg .CSld .SpTree .Choice ,_ebgg );_acfd :=_ed .NewCT_Shape ();_ebgg .Sp =append (_ebgg .Sp ,_acfd );_acfd .SpPr =_db .NewCT_ShapeProperties ();
_acfd .SpPr .Xfrm =_db .NewCT_Transform2D ();_acfd .SpPr .PrstGeom =_db .NewCT_PresetGeometry2D ();_acfd .SpPr .PrstGeom .PrstAttr =_db .ST_ShapeTypeRect ;_acfd .NvSpPr =_ed .NewCT_ShapeNonVisual ();_acfd .NvSpPr .CNvSpPr =_db .NewCT_NonVisualDrawingShapeProps ();
_agf :=true ;_acfd .NvSpPr .CNvSpPr .TxBoxAttr =&_agf ;_acfd .TxBody =_db .NewCT_TextBody ();_acfd .TxBody .BodyPr =_db .NewCT_TextBodyProperties ();_acfd .TxBody .BodyPr .WrapAttr =_db .ST_TextWrappingTypeSquare ;_acfd .TxBody .BodyPr .SpAutoFit =_db .NewCT_TextShapeAutofit ();
_bfcb :=TextBox {_acfd };_bfcb .Properties ().SetWidth (3*_ca .Inch );_bfcb .Properties ().SetHeight (1*_ca .Inch );_bfcb .Properties ().SetPosition (0,0);return _bfcb ;};
2024-07-28 07:48:26 +00:00
2024-11-22 00:17:48 +00:00
// Image is an image within a slide.
type Image struct{_dea *_ed .CT_Picture };
2024-10-17 17:05:28 +00:00
2024-11-22 00:17:48 +00:00
// 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 (_ceag Slide )GetPlaceholder (t _ed .ST_PlaceholderType )(PlaceHolder ,error ){for _ ,_eae :=range _ceag ._efg .CSld .SpTree .Choice {for _ ,_geacb :=range _eae .Sp {if _geacb .NvSpPr !=nil &&_geacb .NvSpPr .NvPr !=nil &&_geacb .NvSpPr .NvPr .Ph !=nil {if _geacb .NvSpPr .NvPr .Ph .TypeAttr ==t {return PlaceHolder {_geacb ,_ceag ._efg },nil ;
};};};};return PlaceHolder {},_gab .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");};
2024-10-17 17:05:28 +00:00
2024-11-22 00:17:48 +00:00
// PresentationProperties contains document specific properties.
type PresentationProperties struct{_cda *_ed .PresentationPr };type sort2d []*TextItem ;
2024-10-17 17:05:28 +00:00
2024-11-22 00:17:48 +00:00
// SorterViewPr returns the SorterViewPr property.
func (_abab ViewProperties )SorterViewPr ()*_ed .CT_SlideSorterViewProperties {return _abab ._agecf .SorterViewPr ;};
2024-10-17 17:05:28 +00:00
2024-11-22 00:17:48 +00:00
// PlaceHolder is a place holder from a slide.
type PlaceHolder struct{_dfd *_ed .CT_Shape ;_ebd *_ed .Sld ;};func (_ebed *Slide )getSlideLayoutRels ()_gb .Relationships {_bcdgb :=_ebed ._fagc ;for _deag ,_dfbab :=range _bcdgb .SlideLayouts (){if *_ebed .GetSlideLayout ().CSld ==*_dfbab ._acdd .CSld {return _bcdgb ._bff [_deag ];
};};return _gb .Relationships {};};