unioffice/presentation/presentation.go

364 lines
79 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/
2023-08-06 17:57:53 +00:00
package presentation ;import (_fe "archive/zip";_cd "bytes";_dd "encoding/xml";_db "errors";_fdc "fmt";_ddg "github.com/unidoc/unioffice";_gcb "github.com/unidoc/unioffice/common";_bb "github.com/unidoc/unioffice/common/logger";_eb "github.com/unidoc/unioffice/common/tempstorage";_dc "github.com/unidoc/unioffice/drawing";_a "github.com/unidoc/unioffice/internal/formatutils";_fd "github.com/unidoc/unioffice/internal/license";_bf "github.com/unidoc/unioffice/measurement";_eg "github.com/unidoc/unioffice/schema/soo/dml";_g "github.com/unidoc/unioffice/schema/soo/dml/chart";_ge "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_f "github.com/unidoc/unioffice/schema/soo/pkg/relationships";_cc "github.com/unidoc/unioffice/schema/soo/pml";_d "github.com/unidoc/unioffice/zippkg";_cf "image";_dg "image/jpeg";_gc "io";_ef "math";_ec "os";_ga "path";_fg "sort";_e "strconv";_c "strings";);
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// LastViewAttr returns the LastViewAttr property.
func (_bad ViewProperties )LastViewAttr ()_cc .ST_ViewType {return _bad ._fcca .LastViewAttr };
2021-05-31 16:22:30 +00:00
2023-08-06 17:57:53 +00:00
// SlideMaster is the slide master for a presentation.
type SlideMaster struct{_daea *Presentation ;_gabbb _gcb .Relationships ;_dfbe *_cc .SldMaster ;};func _gdg (_dfa *Presentation ,_cfa *_cc .CT_Shape ,_dbe *_cc .CT_GraphicalObjectFrame ,_gda *TableInfo ,_ceg *_eg .CT_Transform2D ,_fcd int ,_cdd []rectangle ,_fea []*_eg .CT_TextParagraph )[]*TextItem {_ebg :=[]*TextItem {};var _eef ,_gf ,_de ,_fce ,_dcfe ,_efda int64 ;_dca :=_ceg ==nil ;_egc :=0;for _ ,_afd :=range _fea {for _ ,_ff :=range _afd .EG_TextRun {if _bca :=_ff .R ;_bca !=nil {if !_dca {if _ceg .Off !=nil {if _cega :=_ceg .Ext ;_cega !=nil {_dcfe ,_efda =_cega .CxAttr ,_cega .CyAttr ;};if _efg :=_ceg .Off .XAttr .ST_CoordinateUnqualified ;_efg !=nil {_eef =*_efg ;_gf =_eef +_dcfe ;_dca =true ;};if _ac :=_ceg .Off .YAttr .ST_CoordinateUnqualified ;_ac !=nil {_de =*_ac ;_fce =_de +_efda ;_dca =true ;};};};_ae :=append ([]rectangle {},_cdd ...);_ae =append (_ae ,rectangle {_dbg :_eef ,_fdg :_gf ,_fed :_de ,_bd :_fce });_ebg =append (_ebg ,&TextItem {Presentation :_dfa ,Shape :_cfa ,GraphicFrame :_dbe ,TableInfo :_gda ,Paragraph :_afd ,Run :_bca ,Text :_bca .T ,_cg :_ae ,_bc :_fcd ,_fef :_egc });_egc ++;};};};return _ebg ;};func (_ca *chart )X ()*_g .ChartSpace {return _ca ._fa };
2022-01-15 21:17:38 +00:00
2023-08-06 17:57:53 +00:00
// ClearAll completely clears a placeholder. To be useable, at least one
// paragraph must be added after ClearAll via AddParagraph.
func (_eed PlaceHolder )ClearAll (){_eed ._edg .SpPr =_eg .NewCT_ShapeProperties ();_eed ._edg .TxBody =_eg .NewCT_TextBody ();_eed ._edg .TxBody .LstStyle =_eg .NewCT_TextListStyle ();};
2023-06-10 07:12:37 +00:00
2023-07-04 11:04:03 +00:00
// X returns the inner wrapped XML type.
2023-08-06 17:57:53 +00:00
func (_cgc PlaceHolder )X ()*_cc .CT_Shape {return _cgc ._edg };
2022-09-02 11:46:53 +00:00
2023-08-06 17:57:53 +00:00
// SetWidth sets width of slide screen size with given value in EMU units.
func (_gbbb *SlideScreenSize )SetWidth (val int32 ){_gbbb [0]=val };
2022-04-09 14:27:46 +00:00
2023-08-06 17:57:53 +00:00
// Image is an image within a slide.
type Image struct{_egd *_cc .CT_Picture };
2022-04-09 14:27:46 +00:00
2023-08-06 17:57:53 +00:00
// NotesTextViewPr returns the NotesTextViewPr property.
func (_cgff ViewProperties )NotesTextViewPr ()*_cc .CT_NotesTextViewProperties {return _cgff ._fcca .NotesTextViewPr ;};func (_bdbb *Slide )ensureClrMap (){if len (_bdbb ._ffef ._bde )==0||len (_bdbb ._ffef ._cfd )==0{return ;};_gfed :=_bdbb ._ffef ._bde [0];_eaca :=_gfed .ClrMap ;if _fadd :=_bdbb ._fcbb .ClrMapOvr ;_fadd !=nil {if _cdbd :=_fadd .Choice ;_cdbd !=nil {if _cdbd .MasterClrMapping ==nil {if _cae :=_cdbd .OverrideClrMapping ;_cae !=nil {if _cae .Bg1Attr !=_eg .ST_ColorSchemeIndexUnset {_eaca .Bg1Attr =_cae .Bg1Attr ;};if _cae .Tx1Attr !=_eg .ST_ColorSchemeIndexUnset {_eaca .Tx1Attr =_cae .Tx1Attr ;};if _cae .Bg2Attr !=_eg .ST_ColorSchemeIndexUnset {_eaca .Bg2Attr =_cae .Bg2Attr ;};if _cae .Tx2Attr !=_eg .ST_ColorSchemeIndexUnset {_eaca .Tx2Attr =_cae .Tx2Attr ;};if _cae .Accent1Attr !=_eg .ST_ColorSchemeIndexUnset {_eaca .Accent1Attr =_cae .Accent1Attr ;};if _cae .Accent2Attr !=_eg .ST_ColorSchemeIndexUnset {_eaca .Accent2Attr =_cae .Accent2Attr ;};if _cae .Accent3Attr !=_eg .ST_ColorSchemeIndexUnset {_eaca .Accent3Attr =_cae .Accent3Attr ;};if _cae .Accent4Attr !=_eg .ST_ColorSchemeIndexUnset {_eaca .Accent4Attr =_cae .Accent4Attr ;};if _cae .Accent5Attr !=_eg .ST_ColorSchemeIndexUnset {_eaca .Accent5Attr =_cae .Accent5Attr ;};if _cae .Accent6Attr !=_eg .ST_ColorSchemeIndexUnset {_eaca .Accent6Attr =_cae .Accent6Attr ;};if _cae .HlinkAttr !=_eg .ST_ColorSchemeIndexUnset {_eaca .HlinkAttr =_cae .HlinkAttr ;};if _cae .FolHlinkAttr !=_eg .ST_ColorSchemeIndexUnset {_eaca .FolHlinkAttr =_cae .FolHlinkAttr ;};};};};};_bdbb ._abde =_eaca ;};
2022-04-09 14:27:46 +00:00
2023-08-06 17:57:53 +00:00
// OpenTemplate opens a template file.
func OpenTemplate (fn string )(*Presentation ,error ){_ecac ,_ecf :=Open (fn );if _ecf !=nil {return nil ,_ecf ;};return _ecac ,nil ;};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// Type returns the type of the slide layout.
func (_effa SlideLayout )Type ()_cc .ST_SlideLayoutType {return _effa ._bcg .TypeAttr };
2023-03-01 18:42:44 +00:00
2023-08-06 17:57:53 +00:00
// AddTable adds an empty table to a slide.
func (_ecec Slide )AddTable ()*_gcb .Table {_ecee :=_cc .NewCT_GroupShapeChoice ();_ecec ._fcbb .CSld .SpTree .Choice =append (_ecec ._fcbb .CSld .SpTree .Choice ,_ecee );_cagf :=_cc .NewCT_GraphicalObjectFrame ();_ecee .GraphicFrame =append (_ecee .GraphicFrame ,_cagf );_cagf .Xfrm .Off =_eg .NewCT_Point2D ();_gffaf :=int64 (1);_cagf .Xfrm .Off .XAttr =_eg .ST_Coordinate {ST_CoordinateUnqualified :&_gffaf };_cagf .Xfrm .Off .YAttr =_eg .ST_Coordinate {ST_CoordinateUnqualified :&_gffaf };_fbbf :=_cagf .Graphic .CT_GraphicalObject .GraphicData ;_fbbf .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";_gabd :=_gcb .NewTableWithXfrm (_cagf .Xfrm );_fbbf .Any =append (_fbbf .Any ,_gabd .X ());return _gabd ;};type chart struct{_fa *_g .ChartSpace ;_ba string ;_gag string ;};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// Remove removes a placeholder from a presentation.
func (_bdb PlaceHolder )Remove ()error {for _gcc ,_gde :=range _bdb ._eac .CSld .SpTree .Choice {for _ ,_ffa :=range _gde .Sp {if _ffa ==_bdb ._edg {copy (_bdb ._eac .CSld .SpTree .Choice [_gcc :],_bdb ._eac .CSld .SpTree .Choice [_gcc +1:]);_bdb ._eac .CSld .SpTree .Choice =_bdb ._eac .CSld .SpTree .Choice [0:len (_bdb ._eac .CSld .SpTree .Choice )-1];return nil ;};};};return _db .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");};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// PresentationProperties contains document specific properties.
type PresentationProperties struct{_dfbf *_cc .PresentationPr };
2022-04-09 14:27:46 +00:00
2023-08-06 17:57:53 +00:00
// Size returns slide size value as SlideScreenSize.
func (_cbba *SlideSize )Size ()SlideScreenSize {return SlideScreenSize {_cbba ._fadg .CxAttr ,_cbba ._fadg .CyAttr };};
2022-04-09 14:27:46 +00:00
2023-08-06 17:57:53 +00:00
// New initializes and reurns a new presentation
func New ()*Presentation {_bee :=_dda ();_bee .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");_bee .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");_bee .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");_bee .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");_bee .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");_bee .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");_bee .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\u006
2022-04-09 14:27:46 +00:00
2023-08-06 17:57:53 +00:00
// SlideSize returns presentation slide size.
func (_egdd *Presentation )SlideSize ()SlideSize {if _egdd ._acc .SldSz ==nil {_egdd ._acc .SldSz =_cc .NewCT_SlideSize ();};return SlideSize {_egdd ._acc .SldSz ,_egdd };};
2023-05-26 09:49:04 +00:00
2023-08-06 17:57:53 +00:00
// X returns the inner wrapped XML type.
func (_dbf SlideLayout )X ()*_cc .SldLayout {return _dbf ._bcg };
2023-05-26 09:49:04 +00:00
2023-08-06 17:57:53 +00:00
// TextBox is a text box within a slide.
type TextBox struct{_bagb *_cc .CT_Shape };func (_bfef *Presentation )onNewRelationship (_adceg *_d .DecodeMap ,_gcg ,_fgcb string ,_gedf []*_fe .File ,_ebe *_f .Relationship ,_bgg _d .Target )error {_bbg :=_ddg .DocTypePresentation ;switch _fgcb {case _ddg .OfficeDocumentType :_bfef ._acc =_cc .NewPresentation ();_adceg .AddTarget (_gcg ,_bfef ._acc ,_fgcb ,0);_adceg .AddTarget (_d .RelationsPathFor (_gcg ),_bfef ._bba .X (),_fgcb ,0);_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,0);case _ddg .CorePropertiesType :_adceg .AddTarget (_gcg ,_bfef .CoreProperties .X (),_fgcb ,0);_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,0);case _ddg .CustomPropertiesType :_adceg .AddTarget (_gcg ,_bfef .CustomProperties .X (),_fgcb ,0);_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,0);case _ddg .PresentationPropertiesType :_adceg .AddTarget (_gcg ,_bfef ._ffg .X (),_fgcb ,0);_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,0);case _ddg .ViewPropertiesType :_adceg .AddTarget (_gcg ,_bfef ._adc .X (),_fgcb ,0);_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,0);case _ddg .TableStylesType :_adceg .AddTarget (_gcg ,_bfef ._ffaf .X (),_fgcb ,0);_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,0);case _ddg .HyperLinkType :_ccd :=_eg .NewCT_Hyperlink ();_eebf :=uint32 (len (_bfef ._fdb ));_adceg .AddTarget (_gcg ,_ccd ,_fgcb ,_eebf );_bfef ._fdb =append (_bfef ._fdb ,_ccd );case _ddg .CustomXMLType :_gdd :=&_ddg .XSDAny {};_cac :=uint32 (len (_bfef ._da ));_adceg .AddTarget (_gcg ,_gdd ,_fgcb ,_cac );_bfef ._da =append (_bfef ._da ,_gdd );_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,len (_bfef ._da ));case _ddg .ChartType :_edf :=chart {_fa :_g .NewChartSpace ()};_abbf :=uint32 (len (_bfef ._dbc ));_adceg .AddTarget (_gcg ,_edf ._fa ,_fgcb ,_abbf );_bfef ._dbc =append (_bfef ._dbc ,&_edf );_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,len (_bfef ._dbc ));_edf ._gag =_ebe .TargetAttr ;case _ddg .HandoutMasterType :_aee :=_cc .NewHandoutMaster ();_bga :=uint32 (len (_bfef ._fdce ));_adceg .AddTarget (_gcg ,_aee ,_fgcb ,_bga );_bfef ._fdce =append (_bfef ._fdce ,_aee );_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,len (_bfef ._fdce ));case _ddg .NotesMasterType :_add :=_cc .NewNotesMaster ();_efdc :=uint32 (len (_bfef ._dcc ));_adceg .AddTarget (_gcg ,_add ,_fgcb ,_efdc );_bfef ._dcc =append (_bfef ._dcc ,_add );_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,len (_bfef ._dcc ));case _ddg .ExtendedPropertiesType :_adceg .AddTarget (_gcg ,_bfef .AppProperties .X (),_fgcb ,0);_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,0);case _ddg .SlideType :if _ddf ,_cdca :=_a .StringToNumbers (_gcg );_cdca {if len (_bfef ._gca )< _ddf {_ggd :=_cc .NewSld ();_bfef ._gca =append (_bfef ._gca ,_ggd );_adceg .AddTarget (_gcg ,_ggd ,_fgcb ,uint32 (_ddf ));_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,_ddf );_cdad :=_gcb .NewRelationships ();_adceg .AddTarget (_d .RelationsPathFor (_gcg ),_cdad .X (),_fgcb ,0);if len (_bfef ._dbef )>=_ddf {_bfef ._dbef [_ddf -1]=_cdad ;}else {_bfef ._dbef =append (_bfef ._dbef ,_cdad );};};};case _ddg .SlideMasterType :_gad :=_cc .NewSldMaster ();if !_adceg .AddTarget (_gcg ,_gad ,_fgcb ,uint32 (len (_bfef ._bde )+1)){return nil ;};_bfef ._bde =append (_bfef ._bde ,_gad );_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,len (_bfef ._bde ));_bbd :=_gcb .NewRelationships ();_adceg .AddTarget (_d .RelationsPathFor (_gcg ),_bbd .X (),_fgcb ,0);_bfef ._ccff =append (_bfef ._ccff ,_bbd );case _ddg .SlideLayoutType :_dfeb :=_cc .NewSldLayout ();if !_adceg .AddTarget (_gcg ,_dfeb ,_fgcb ,uint32 (len (_bfef ._aagc )+1)){return nil ;};_bfef ._aagc =append (_bfef ._aagc ,_dfeb );_ebe .TargetAttr =_ddg .RelativeFilename (_bbg ,_bgg .Typ ,_fgcb ,len (_bfef ._aagc ));_gbdg :=_gcb .NewRelationships ();_adceg .AddTarget (_d .RelationsPathFor (_gcg ),_gbdg .X (),_fgcb ,0);_bfef ._aea =append (_bfef ._aea ,
2023-05-26 09:49:04 +00:00
2023-08-06 17:57:53 +00:00
// ViewProperties contains presentation specific properties.
type ViewProperties struct{_fcca *_cc .ViewPr };
2022-09-02 11:46:53 +00:00
2023-08-06 17:57:53 +00:00
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// document.
func (_fbe *Presentation )GetImageByRelID (relID string )(_gcb .ImageRef ,bool ){for _ ,_ecacg :=range _fbe .Images {if _ecacg .RelID ()==relID {return _ecacg ,true ;};};return _gcb .ImageRef {},false ;};
2022-02-25 19:20:45 +00:00
2023-08-06 17:57:53 +00:00
// AddParagraph adds a new paragraph to a placeholder.
func (_adf PlaceHolder )AddParagraph ()_dc .Paragraph {_ddde :=_dc .MakeParagraph (_eg .NewCT_TextParagraph ());_adf ._edg .TxBody .P =append (_adf ._edg .TxBody .P ,_ddde .X ());return _ddde ;};
2023-07-04 11:04:03 +00:00
2023-08-06 17:57:53 +00:00
// SorterViewPr returns the SorterViewPr property.
func (_bbbf ViewProperties )SorterViewPr ()*_cc .CT_SlideSorterViewProperties {return _bbbf ._fcca .SorterViewPr ;};
2023-07-04 11:04:03 +00:00
2023-08-06 17:57:53 +00:00
// SetOffsetY sets vertical offset of text box in distance units (see measurement package).
func (_abc TextBox )SetOffsetY (offY float64 ){_caa :=_abc .getOff ();_dgef :=_bf .ToEMU (offY );_caa .YAttr =_eg .ST_Coordinate {ST_CoordinateUnqualified :&_dgef };};
2022-04-09 14:27:46 +00:00
2023-08-06 17:57:53 +00:00
// Paragraphs returns the paragraphs defined in the placeholder.
func (_gg PlaceHolder )Paragraphs ()[]_dc .Paragraph {_deb :=[]_dc .Paragraph {};for _ ,_efe :=range _gg ._edg .TxBody .P {_deb =append (_deb ,_dc .MakeParagraph (_efe ));};return _deb ;};func _efd (_ad *Presentation ,_dde []*_cc .CT_GroupShapeChoice ,_efb []rectangle ,_bdd []*TextItem )[]*TextItem {for _ ,_bbf :=range _dde {_dgb :=append ([]rectangle {},_efb ...);for _ ,_ce :=range _bbf .Sp {_bdd =append (_bdd ,_gdg (_ad ,_ce ,nil ,nil ,_ce .SpPr .Xfrm ,0,_efb ,_ce .TxBody .P )...);};for _ ,_dgg :=range _bbf .GraphicFrame {if _dgg !=nil &&_dgg .Graphic !=nil &&_dgg .Graphic .GraphicData !=nil {_gee :=_dgg .Xfrm ;for _ ,_faf :=range _dgg .Graphic .GraphicData .Any {if _gdc ,_fca :=_faf .(*_eg .Tbl );_fca {_ddd :=&_gdc .CT_Table ;_dga :=0;for _dcf ,_gec :=range _gdc .Tr {for _ecc ,_ceb :=range _gec .Tc {_cbf :=&TableInfo {Table :_ddd ,Row :_gec ,Cell :_ceb ,RowIndex :_dcf ,ColIndex :_ecc };_bdd =append (_bdd ,_gdg (_ad ,nil ,_dgg ,_cbf ,_gee ,_dga ,_efb ,_ceb .TxBody .P )...);_dga ++;};};};};};};for _ ,_fcad :=range _bbf .GrpSp {if _fcad .GrpSpPr !=nil {_ee :=_fcad .GrpSpPr .Xfrm ;var _df ,_bce int64 ;if _ee .Off !=nil {_af ,_be :=_ee .Off .XAttr .ST_CoordinateUnqualified ,_ee .Off .YAttr .ST_CoordinateUnqualified ;if _af !=nil &&_be !=nil {if _cad :=_ee .Ext ;_cad !=nil {_df ,_bce =_cad .CxAttr ,_cad .CyAttr ;};_dgb =append (_dgb ,rectangle {_dbg :*_af ,_fed :*_be ,_fdg :*_af +_df ,_bd :*_be +_bce });};};};_bdd =_efd (_ad ,_fcad .Choice ,_dgb ,_bdd );};};return _bdd ;};func (_agab *Slide )getSlideRels ()_gcb .Relationships {_cfade :=_agab ._ffef ;for _acae ,_abaf :=range _cfade .Slides (){if *_agab ._fcbb ==*_abaf ._fcbb {return _cfade ._dbef [_acae ];};};return _gcb .Relationships {};};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// AddSlide adds a new slide to the presentation.
func (_bae *Presentation )AddSlide ()Slide {_aeg :=_cc .NewCT_SlideIdListEntry ();_aeg .IdAttr =_bae .nextSlideID ();_bae ._acc .SldIdLst .SldId =append (_bae ._acc .SldIdLst .SldId ,_aeg );_ccg :=_cc .NewSld ();_ccg .CSld .SpTree .NvGrpSpPr .CNvPr .IdAttr =1;_ccg .CSld .SpTree .GrpSpPr .Xfrm =_eg .NewCT_GroupTransform2D ();_ccg .CSld .SpTree .GrpSpPr .Xfrm .Off =_eg .NewCT_Point2D ();_ccg .CSld .SpTree .GrpSpPr .Xfrm .Off .XAttr .ST_CoordinateUnqualified =_ddg .Int64 (0);_ccg .CSld .SpTree .GrpSpPr .Xfrm .Off .YAttr .ST_CoordinateUnqualified =_ddg .Int64 (0);_ccg .CSld .SpTree .GrpSpPr .Xfrm .Ext =_eg .NewCT_PositiveSize2D ();_ccg .CSld .SpTree .GrpSpPr .Xfrm .Ext .CxAttr =int64 (0*_bf .Point );_ccg .CSld .SpTree .GrpSpPr .Xfrm .Ext .CyAttr =int64 (0*_bf .Point );_ccg .CSld .SpTree .GrpSpPr .Xfrm .ChOff =_ccg .CSld .SpTree .GrpSpPr .Xfrm .Off ;_ccg .CSld .SpTree .GrpSpPr .Xfrm .ChExt =_ccg .CSld .SpTree .GrpSpPr .Xfrm .Ext ;_bae ._gca =append (_bae ._gca ,_ccg );_ebaa :=_bae ._bba .AddAutoRelationship (_ddg .DocTypePresentation ,_ddg .OfficeDocumentType ,len (_bae ._gca ),_ddg .SlideType );_aeg .RIdAttr =_ebaa .ID ();_bbe :=_ddg .AbsoluteFilename (_ddg .DocTypePresentation ,_ddg .SlideType ,len (_bae ._gca ));_bae .ContentTypes .AddOverride (_bbe ,_ddg .SlideContentType );_gce :=_gcb .NewRelationships ();_bae ._dbef =append (_bae ._dbef ,_gce );_gce .AddAutoRelationship (_ddg .DocTypePresentation ,_ddg .SlideType ,len (_bae ._aagc ),_ddg .SlideLayoutType );return Slide {_aeg ,_ccg ,_bae ,nil };};
2022-01-15 21:17:38 +00:00
2023-08-06 17:57:53 +00:00
// HtmlPubPr returns the HtmlPubPr property.
func (_fad PresentationProperties )HtmlPubPr ()*_cc .CT_HtmlPublishProperties {return _fad ._dfbf .HtmlPubPr ;};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// SaveToFileAsTemplate writes the Presentation out to a file as a template.
func (_fdba *Presentation )SaveToFileAsTemplate (path string )error {return _fdba .saveToFile (path ,true );};
2020-11-09 01:00:18 +00:00
2023-08-06 17:57:53 +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 (_dad *Presentation )GetColorBySchemeColor (schClr _eg .ST_SchemeColorVal )*_eg .CT_Color {if len (_dad ._bde )==0||len (_dad ._cfd )==0{return nil ;};var _dgae _eg .ST_ColorSchemeIndex ;_bge :=_dad ._bde [0];_gaea :=_bge .ClrMap ;switch schClr .String (){case "\u0062\u0067\u0031":_dgae =_gaea .Bg1Attr ;case "\u0062\u0067\u0032":_dgae =_gaea .Bg2Attr ;case "\u0074\u0078\u0031":_dgae =_gaea .Tx1Attr ;case "\u0074\u0078\u0032":_dgae =_gaea .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_dgae =_gaea .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_dgae =_gaea .Accent2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_dgae =_gaea .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_dgae =_gaea .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_dgae =_gaea .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_dgae =_gaea .Accent6Attr ;case "\u0068\u006c\u0069n\u006b":_dgae =_gaea .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_dgae =_gaea .FolHlinkAttr ;case "\u0064\u006b\u0031":_dgae =_eg .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_dgae =_eg .ST_ColorSchemeIndexDk2 ;case "\u006c\u0074\u0031":_dgae =_eg .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_dgae =_eg .ST_ColorSchemeIndexLt2 ;default:_dgae =_eg .ST_ColorSchemeIndexUnset ;};_egfb :=_dad ._cfd [0];_gef :=_egfb .ThemeElements ;if _gef ==nil {return nil ;};var _gfc *_eg .CT_Color ;_ddbb :=_gef .ClrScheme ;switch _dgae .String (){case "\u0064\u006b\u0031":_gfc =_ddbb .Dk1 ;case "\u0064\u006b\u0032":_gfc =_ddbb .Dk2 ;case "\u006c\u0074\u0031":_gfc =_ddbb .Lt1 ;case "\u006c\u0074\u0032":_gfc =_ddbb .Lt2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_gfc =_ddbb .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_gfc =_ddbb .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_gfc =_ddbb .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_gfc =_ddbb .Accent4 ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_gfc =_ddbb .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_gfc =_ddbb .Accent6 ;case "\u0068\u006c\u0069n\u006b":_gfc =_ddbb .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_gfc =_ddbb .FolHlink ;default:return nil ;};return _gfc ;};
2021-03-16 20:51:18 +00:00
2023-08-06 17:57:53 +00:00
// SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template
func (_abb *Presentation )SaveAsTemplate (w _gc .Writer )error {return _abb .save (w ,true )};
2023-05-26 09:49:04 +00:00
2023-08-06 17:57:53 +00:00
// GetTableStyleById returns *dml.CT_TableStyle by its style id.
func (_fcf *Presentation )GetTableStyleById (id string )*_eg .CT_TableStyle {_dcade :=_fcf ._ffaf .TblStyle ();for _ ,_egcd :=range _dcade {if _egcd .StyleIdAttr ==id {return _egcd ;};};return nil ;};
2022-02-25 19:20:45 +00:00
2023-08-06 17:57:53 +00:00
// WebPr returns the WebPr property.
func (_dcad PresentationProperties )WebPr ()*_cc .CT_WebProperties {return _dcad ._dfbf .WebPr };
2022-02-25 19:20:45 +00:00
2023-08-06 17:57:53 +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 *_cc .CT_Shape ;GraphicFrame *_cc .CT_GraphicalObjectFrame ;Paragraph *_eg .CT_TextParagraph ;Run *_eg .CT_RegularTextRun ;TableInfo *TableInfo ;_cg []rectangle ;_bc int ;_fef int ;};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// SlideSize represents a slide size of a presentation.
type SlideSize struct{_fadg *_cc .CT_SlideSize ;_ddff *Presentation ;};type sort2d []*TextItem ;
2021-08-23 20:44:48 +00:00
2023-08-06 17:57:53 +00:00
// PlaceHolders returns all of the content place holders within a given slide.
func (_bef Slide )PlaceHolders ()[]PlaceHolder {_afdb :=[]PlaceHolder {};for _ ,_gbec :=range _bef ._fcbb .CSld .SpTree .Choice {for _ ,_ecb :=range _gbec .Sp {if _ecb .NvSpPr !=nil &&_ecb .NvSpPr .NvPr !=nil &&_ecb .NvSpPr .NvPr .Ph !=nil {_afdb =append (_afdb ,PlaceHolder {_ecb ,_bef ._fcbb });};};};return _afdb ;};
2022-06-27 19:44:23 +00:00
2023-08-06 17:57:53 +00:00
// ValidateWithPath validates the slide passing path informaton for a better
// error message.
func (_ddcc Slide )ValidateWithPath (path string )error {if _beg :=_ddcc ._fcbb .ValidateWithPath (path );_beg !=nil {return _beg ;};for _ ,_fbeb :=range _ddcc ._fcbb .CSld .SpTree .Choice {for _ ,_edec :=range _fbeb .Sp {if _edec .TxBody !=nil {if len (_edec .TxBody .P )==0{return _db .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 ;};type rectangle struct{_dbg int64 ;_fed int64 ;_fdg int64 ;_bd int64 ;};
2022-06-27 19:44:23 +00:00
2023-08-06 17:57:53 +00:00
// Height returns slide screen size height in EMU units.
func (_dcag *SlideScreenSize )Height ()int32 {return _dcag [1]};
2021-08-23 20:44:48 +00:00
2023-08-06 17:57:53 +00:00
// Index returns the placeholder index
func (_bfe PlaceHolder )Index ()uint32 {if _bfe ._edg .NvSpPr .NvPr .Ph .IdxAttr ==nil {return 0;};return *_bfe ._edg .NvSpPr .NvPr .Ph .IdxAttr ;};
2021-11-10 11:45:21 +00:00
2023-07-04 11:04:03 +00:00
// AddTable adds a new table to a placeholder.
2023-08-06 17:57:53 +00:00
func (_dbgf PlaceHolder )AddTable ()*_gcb .Table {_dbgf .Clear ();_fgf :=_cc .NewCT_GroupShapeChoice ();_dbgf ._eac .CSld .SpTree .Choice =append (_dbgf ._eac .CSld .SpTree .Choice ,_fgf );_edgg :=_cc .NewCT_GraphicalObjectFrame ();_fgf .GraphicFrame =append (_fgf .GraphicFrame ,_edgg );_edgg .Xfrm .Off =_eg .NewCT_Point2D ();_bcf :=int64 (1);_edgg .Xfrm .Off .XAttr =_eg .ST_Coordinate {ST_CoordinateUnqualified :&_bcf };_edgg .Xfrm .Off .YAttr =_eg .ST_Coordinate {ST_CoordinateUnqualified :&_bcf };_eec :=_edgg .Graphic .CT_GraphicalObject .GraphicData ;_eec .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";_ada :=_gcb .NewTableWithXfrm (_edgg .Xfrm );_eec .Any =append (_eec .Any ,_ada .X ());return _ada ;};func (_fcc sort2d )Swap (i ,j int ){_fcc [i ],_fcc [j ]=_fcc [j ],_fcc [i ]};
2021-06-16 07:10:52 +00:00
2023-08-06 17:57:53 +00:00
// Properties returns the properties of the TextBox.
func (_fag Image )Properties ()_dc .ShapeProperties {if _fag ._egd .SpPr ==nil {_fag ._egd .SpPr =_eg .NewCT_ShapeProperties ();};return _dc .MakeShapeProperties (_fag ._egd .SpPr );};
2021-01-04 16:11:39 +00:00
2023-08-06 17:57:53 +00:00
// Text returns text from a slide as one string separated with line breaks.
func (_eca *SlideText )Text ()string {_egf :=_cd .NewBuffer ([]byte {});for _ ,_gbaf :=range _eca .Items {if _gbaf .Text !=""{_egf .WriteString (_gbaf .Text );_egf .WriteString ("\u000a");};};return _egf .String ();};
2021-01-04 16:11:39 +00:00
2023-08-06 17:57:53 +00:00
// PlaceHolder is a place holder from a slide.
type PlaceHolder struct{_edg *_cc .CT_Shape ;_eac *_cc .Sld ;};
2021-01-04 16:11:39 +00:00
2023-07-04 11:04:03 +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.
2023-08-06 17:57:53 +00:00
func (_ebcc Slide )GetPlaceholder (t _cc .ST_PlaceholderType )(PlaceHolder ,error ){for _ ,_gcab :=range _ebcc ._fcbb .CSld .SpTree .Choice {for _ ,_fadc :=range _gcab .Sp {if _fadc .NvSpPr !=nil &&_fadc .NvSpPr .NvPr !=nil &&_fadc .NvSpPr .NvPr .Ph !=nil {if _fadc .NvSpPr .NvPr .Ph .TypeAttr ==t {return PlaceHolder {_fadc ,_ebcc ._fcbb },nil ;};};};};return PlaceHolder {},_db .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");};
2023-04-15 17:27:31 +00:00
2023-08-06 17:57:53 +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 ;func (_acgd *Presentation )save (_aac _gc .Writer ,_dae bool )error {const _bbbe ="\u0050\u0072\u0065\u0073en\u0074\u0061\u0074\u0069\u006f\u006e\u003a\u0070\u002e\u0053\u0061\u0076\u0065";if _edge :=_acgd ._acc .Validate ();_edge !=nil {_bb .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",_edge );};if !_fd .GetLicenseKey ().IsLicensed ()&&!_bfc {_fdc .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");_fdc .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 _db .New ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065\u0020\u006ci\u0063\u0065\u006e\u0073\u0065\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0064");};if len (_acgd ._adfc )==0{_ag ,_gab :=_fd .GenRefId ("\u0070\u0077");if _gab !=nil {_bb .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_gab );return _gab ;};_acgd ._adfc =_ag ;};if _dea :=_fd .Track (_acgd ._adfc ,_bbbe );_dea !=nil {_bb .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dea );return _dea ;};if _dae {_acgd .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");_acgd .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 {_acgd .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");_acgd .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");};_ddaf :=_ddg .DocTypePresentation ;_dgbg :=_fe .NewWriter (_aac );defer _dgbg .Close ();if _ccb :=_d .MarshalXML (_dgbg ,_ddg .BaseRelsFilename ,_acgd .Rels .X ());_ccb !=nil {return _ccb ;};if _afdg :=_d .MarshalXMLByType (_dgbg ,_ddaf ,_ddg .ExtendedPropertiesType ,_acgd .AppProperties .X ());_afdg !=nil {return _afdg ;};if _gcaf :=_d .MarshalXMLByType (_dgbg ,_ddaf ,_ddg .CorePropertiesType ,_acgd .CoreProperties .X ());_gcaf !=nil {return _gcaf ;};if _gee
2020-08-23 14:15:53 +00:00
2023-07-04 11:04:03 +00:00
// SaveToFile writes the Presentation out to a file.
2023-08-06 17:57:53 +00:00
func (_cdc *Presentation )SaveToFile (path string )error {return _cdc .saveToFile (path ,false )};
2022-04-09 14:27:46 +00:00
2023-08-06 17:57:53 +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 (_eeaf *Presentation )AddImage (i _gcb .Image )(_gcb .ImageRef ,error ){_adbc :=_gcb .MakeImageRef (i ,&_eeaf .DocBase ,_eeaf ._bba );if i .Data ==nil &&i .Path ==""{return _adbc ,_db .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 _adbc ,_db .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 _adbc ,_db .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 !=""{_dge :=_eb .Add (i .Path );if _dge !=nil {return _adbc ,_dge ;};};_eeaf .Images =append (_eeaf .Images ,_adbc );_eeaf .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_eeaf .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_eeaf .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_eeaf .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");_eeaf .ContentTypes .EnsureDefault (i .Format ,"\u0069\u006d\u0061\u0067\u0065\u002f"+i .Format );return _adbc ,nil ;};
2022-01-15 21:17:38 +00:00
2023-08-06 17:57:53 +00:00
// X returns the inner wrapped XML type.
func (_ebd *Presentation )X ()*_cc .Presentation {return _ebd ._acc };func (_acca *Presentation )saveToFile (_adb string ,_acga bool )error {_eebg ,_def :=_ec .Create (_adb );if _def !=nil {return _def ;};defer _eebg .Close ();return _acca .save (_eebg ,_acga );};const _cfac float64 =500000;
2021-09-22 16:41:01 +00:00
2023-08-06 17:57:53 +00:00
// SlideLayouts returns a slice of all layouts in SlideMaster.
func (_ggb SlideMaster )SlideLayouts ()[]SlideLayout {_dbac :=map[string ]int {};_bff :=[]SlideLayout {};for _ ,_gada :=range _ggb ._gabbb .Relationships (){_dece :=_c .Replace (_gada .Target (),".\u002e\u002f\u0073\u006c\u0069\u0064e\u004c\u0061\u0079\u006f\u0075\u0074\u0073\u002f\u0073l\u0069\u0064\u0065L\u0061y\u006f\u0075\u0074","",-1);_dece =_c .Replace (_dece ,"\u002e\u0078\u006d\u006c","",-1);if _fcg ,_dfg :=_e .ParseInt (_dece ,10,32);_dfg ==nil {_dbac [_gada .ID ()]=int (_fcg );};};for _ ,_adee :=range _ggb ._dfbe .SldLayoutIdLst .SldLayoutId {if _ded ,_cfafa :=_dbac [_adee .RIdAttr ];_cfafa {_cgad :=_ggb ._daea ._aagc [_ded -1];_bff =append (_bff ,SlideLayout {_cgad });};};return _bff ;};
2023-03-01 18:42:44 +00:00
2023-08-06 17:57:53 +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 (_ffgc *Presentation )AddDefaultSlideWithLayout (l SlideLayout )(Slide ,error ){_gbe ,_dbeg :=_ffgc .AddSlideWithLayout (l );for _ ,_gbd :=range _gbe .PlaceHolders (){_gbd .Clear ();switch _gbd .Type (){case _cc .ST_PlaceholderTypeFtr ,_cc .ST_PlaceholderTypeDt ,_cc .ST_PlaceholderTypeSldNum :_gbd .Remove ();};};return _gbe ,_dbeg ;};
2023-03-01 18:42:44 +00:00
2023-08-06 17:57:53 +00:00
// Presentation returns a slide's presentation.
func (_cegd Slide )Presentation ()*Presentation {return _cegd ._ffef };
2022-02-25 19:20:45 +00:00
2023-08-06 17:57:53 +00:00
// GetSlideLayout returns a slide layout related to the slide.
func (_edgb *Slide )GetSlideLayout ()*_cc .SldLayout {for _gfag :=range _edgb ._ffef .Slides (){_fbc :=_edgb ._ffef ._dbef [_gfag ];for _ ,_dbb :=range _fbc .Relationships (){if _dbb .Type ()==_ddg .SlideLayoutType {if _ffdf ,_gcee :=_a .StringToNumbers (_dbb .Target ());_gcee {return _edgb ._ffef ._aagc [_ffdf -1];};return nil ;};};};return nil ;};
2020-08-31 22:58:25 +00:00
2023-08-06 17:57:53 +00:00
// Width returns slide screen size width in EMU units.
func (_cdf *SlideScreenSize )Width ()int32 {return _cdf [0]};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +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 (_cea PlaceHolder )Clear (){_cea .ClearAll ();_fcb :=_eg .NewCT_TextParagraph ();_cea ._edg .TxBody .P =[]*_eg .CT_TextParagraph {_fcb };_fcb .EndParaRPr =_eg .NewCT_TextCharacterProperties ();_fcb .EndParaRPr .LangAttr =_ddg .String ("\u0065\u006e\u002dU\u0053");};var (SlideScreenSize16x9 =SlideScreenSize {12192000,6858000};SlideScreenSize4x3 =SlideScreenSize {9144000,6858000};SlideScreenSizeA4 =SlideScreenSize {9906000,6858000};);
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// NotesViewPr returns the NotesViewPr property.
func (_abe ViewProperties )NotesViewPr ()*_cc .CT_NotesViewProperties {return _abe ._fcca .NotesViewPr };
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// NewPresentationProperties constructs a new PresentationProperties.
func NewPresentationProperties ()PresentationProperties {return PresentationProperties {_dfbf :_cc .NewPresentationPr ()};};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +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 *_eg .CT_Table ;Row *_eg .CT_TableRow ;Cell *_eg .CT_TableCell ;RowIndex int ;ColIndex int ;};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// SlideViewPr returns the SlideViewPr property.
func (_cbdc ViewProperties )SlideViewPr ()*_cc .CT_SlideViewProperties {return _cbdc ._fcca .SlideViewPr };func (_gb *chart )RelId ()string {return _gb ._ba };
2022-12-06 11:56:49 +00:00
2023-08-06 17:57:53 +00:00
// SlideLayouts returns the slide layouts defined in the presentation.
func (_gac *Presentation )SlideLayouts ()[]SlideLayout {_bedg :=[]SlideLayout {};for _ ,_fge :=range _gac ._aagc {_bedg =append (_bedg ,SlideLayout {_fge });};return _bedg ;};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// Presentation is the a presentation base document.
type Presentation struct{_gcb .DocBase ;_acc *_cc .Presentation ;_bba _gcb .Relationships ;_gca []*_cc .Sld ;_dbef []_gcb .Relationships ;_bde []*_cc .SldMaster ;_ccff []_gcb .Relationships ;_aagc []*_cc .SldLayout ;_aea []_gcb .Relationships ;_cfd []*_eg .Theme ;_eede []_gcb .Relationships ;_ffaf _gcb .TableStyles ;_ffg PresentationProperties ;_adc ViewProperties ;_fdb []*_eg .CT_Hyperlink ;_dbc []*chart ;_fdce []*_cc .HandoutMaster ;_dcc []*_cc .NotesMaster ;_da []*_ddg .XSDAny ;_feg map[string ]string ;_adfc string ;};
2020-08-23 14:15:53 +00:00
2023-08-06 17:57:53 +00:00
// AddTextBox adds an empty textbox to a slide.
func (_fggb Slide )AddTextBox ()TextBox {_gcagf :=_cc .NewCT_GroupShapeChoice ();_fggb ._fcbb .CSld .SpTree .Choice =append (_fggb ._fcbb .CSld .SpTree .Choice ,_gcagf );_bdcf :=_cc .NewCT_Shape ();_gcagf .Sp =append (_gcagf .Sp ,_bdcf );_bdcf .SpPr =_eg .NewCT_ShapeProperties ();_bdcf .SpPr .Xfrm =_eg .NewCT_Transform2D ();_bdcf .SpPr .PrstGeom =_eg .NewCT_PresetGeometry2D ();_bdcf .SpPr .PrstGeom .PrstAttr =_eg .ST_ShapeTypeRect ;_bdcf .NvSpPr =_cc .NewCT_ShapeNonVisual ();_bdcf .NvSpPr .CNvSpPr =_eg .NewCT_NonVisualDrawingShapeProps ();_fcfd :=true ;_bdcf .NvSpPr .CNvSpPr .TxBoxAttr =&_fcfd ;_bdcf .TxBody =_eg .NewCT_TextBody ();_bdcf .TxBody .BodyPr =_eg .NewCT_TextBodyProperties ();_bdcf .TxBody .BodyPr .WrapAttr =_eg .ST_TextWrappingTypeSquare ;_bdcf .TxBody .BodyPr .SpAutoFit =_eg .NewCT_TextShapeAutofit ();_ffged :=TextBox {_bdcf };_ffged .Properties ().SetWidth (3*_bf .Inch );_ffged .Properties ().SetHeight (1*_bf .Inch );_ffged .Properties ().SetPosition (0,0);return _ffged ;};
2021-04-23 20:00:00 +00:00
2023-08-06 17:57:53 +00:00
// Text returns text from a presentation as one string separated with line breaks.
func (_acg *PresentationText )Text ()string {_feag :=_cd .NewBuffer ([]byte {});for _ ,_cadf :=range _acg .Slides {_feag .WriteString (_cadf .Text ());};return _feag .String ();};
2023-08-06 17:57:53 +00:00
// AddImage adds an image textbox to a slide.
func (_ace Slide )AddImage (img _gcb .ImageRef )Image {_aca :=_cc .NewCT_GroupShapeChoice ();_ace ._fcbb .CSld .SpTree .Choice =append (_ace ._fcbb .CSld .SpTree .Choice ,_aca );_adab :=_cc .NewCT_Picture ();_aca .Pic =append (_aca .Pic ,_adab );_adab .NvPicPr .CNvPicPr =_eg .NewCT_NonVisualPictureProperties ();_adab .NvPicPr .CNvPicPr .PicLocks =_eg .NewCT_PictureLocking ();_adab .NvPicPr .CNvPicPr .PicLocks .NoChangeAspectAttr =_ddg .Bool (true );_adab .BlipFill =_eg .NewCT_BlipFillProperties ();_adab .BlipFill .Blip =_eg .NewCT_Blip ();_aecf :=_ace .AddImageToRels (img );_adab .BlipFill .Blip .EmbedAttr =_ddg .String (_aecf );_adab .BlipFill .Stretch =_eg .NewCT_StretchInfoProperties ();_adab .BlipFill .Stretch .FillRect =_eg .NewCT_RelativeRect ();_adab .SpPr =_eg .NewCT_ShapeProperties ();_adab .SpPr .PrstGeom =_eg .NewCT_PresetGeometry2D ();_adab .SpPr .PrstGeom .PrstAttr =_eg .ST_ShapeTypeRect ;_aba :=Image {_adab };_ece :=img .Size ();_aba .Properties ().SetWidth (_bf .Distance (_ece .X )*_bf .Pixel72 );_aba .Properties ().SetHeight (_bf .Distance (_ece .Y )*_bf .Pixel72 );_aba .Properties ().SetPosition (0,0);return _aba ;};
2023-08-06 17:57:53 +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 (_eceb *Slide )GetColorBySchemeColor (schClr _eg .ST_SchemeColorVal )*_eg .CT_Color {_eceb .ensureClrMap ();_ddfd :=_eceb ._abde ;if _ddfd ==nil {return nil ;};var _afa _eg .ST_ColorSchemeIndex ;switch schClr .String (){case "\u0062\u0067\u0031":_afa =_ddfd .Bg1Attr ;case "\u0062\u0067\u0032":_afa =_ddfd .Bg2Attr ;case "\u0074\u0078\u0031":_afa =_ddfd .Tx1Attr ;case "\u0074\u0078\u0032":_afa =_ddfd .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_afa =_ddfd .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_afa =_ddfd .Accent2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_afa =_ddfd .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_afa =_ddfd .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_afa =_ddfd .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_afa =_ddfd .Accent6Attr ;case "\u0068\u006c\u0069n\u006b":_afa =_ddfd .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_afa =_ddfd .FolHlinkAttr ;case "\u0064\u006b\u0031":_afa =_eg .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_afa =_eg .ST_ColorSchemeIndexDk2 ;case "\u006c\u0074\u0031":_afa =_eg .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_afa =_eg .ST_ColorSchemeIndexLt2 ;default:_afa =_eg .ST_ColorSchemeIndexUnset ;};_gbb :=_eceb ._ffef ._cfd [0];_bbeb :=_gbb .ThemeElements ;if _bbeb ==nil {return nil ;};var _addf *_eg .CT_Color ;_dade :=_bbeb .ClrScheme ;switch _afa .String (){case "\u0064\u006b\u0031":_addf =_dade .Dk1 ;case "\u0064\u006b\u0032":_addf =_dade .Dk2 ;case "\u006c\u0074\u0031":_addf =_dade .Lt1 ;case "\u006c\u0074\u0032":_addf =_dade .Lt2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_addf =_dade .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_addf =_dade .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_addf =_dade .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_addf =_dade .Accent4 ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_addf =_dade .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_addf =_dade .Accent6 ;case "\u0068\u006c\u0069n\u006b":_addf =_dade .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_addf =_dade .FolHlink ;default:return nil ;};return _addf ;};
2023-08-06 17:57:53 +00:00
// Read reads a document from an io.Reader.
func Read (r _gc .ReaderAt ,size int64 )(*Presentation ,error ){const _fcab ="\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e:\u0052\u0065\u0061\u0064";if !_fd .GetLicenseKey ().IsLicensed ()&&!_bfc {_fdc .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");_fdc .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 ,_db .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");};_eggd :=_dda ();_ebec ,_fdgd :=_fd .GenRefId ("\u0070\u0072");if _fdgd !=nil {_bb .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fdgd );return nil ,_fdgd ;};_eggd ._adfc =_ebec ;if _acf :=_fd .Track (_eggd ._adfc ,_fcab );_acf !=nil {_bb .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_acf );return nil ,_acf ;};_cgcc ,_fdgd :=_eb .TempDir ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065-\u0070\u0070\u0074\u0078");if _fdgd !=nil {return nil ,_fdgd ;};_eggd .TmpPath =_cgcc ;_efgf ,_fdgd :=_fe .NewReader (r ,size );if _fdgd !=nil {return nil ,_fdc .Errorf ("\u0070a\u0072s\u0069\u006e\u0067\u0020\u007a\u0069\u0070\u003a\u0020\u0025\u0073",_fdgd );};_aegb :=[]*_fe .File {};_aegb =append (_aegb ,_efgf .File ...);_ffge :=false ;for _ ,_fab :=range _aegb {if _fab .FileHeader .Name =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_ffge =true ;break ;};};if _ffge {_eggd .CreateCustomProperties ();};_eabe :=_d .DecodeMap {};_eabe .SetOnNewRelationshipFunc (_eggd .onNewRelationship );_eabe .AddTarget (_ddg .ContentTypesFilename ,_eggd .ContentTypes .X (),"",0);_eabe .AddTarget (_ddg .BaseRelsFilename ,_eggd .Rels .X (),"",0);if _cbd :=_eabe .Decode (_aegb );_cbd !=nil {return nil ,_cbd ;};for _ ,_ggc :=range _aegb {if _ggc ==nil {continue ;};if _ead :=_eggd .AddExtraFileFromZip (_ggc );_ead !=nil {return nil ,_ead ;};};if _ffge {_cbdb :=false ;for _ ,_gdcc :=range _eggd .Rels .X ().Relationship {if _gdcc .TargetAttr =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_cbdb =true ;break ;};};if !_cbdb {_eggd .AddCustomRelationships ();};};return _eggd ,nil ;};
2023-04-15 17:27:31 +00:00
2023-08-06 17:57:53 +00:00
// SetHeight sets height of slide screen size with given value in EMU units.
func (_befa *SlideScreenSize )SetHeight (val int32 ){_befa [1]=val };
2021-01-04 16:11:39 +00:00
2023-08-06 17:57:53 +00:00
// NewViewProperties constructs a new ViewProperties.
func NewViewProperties ()ViewProperties {return ViewProperties {_fcca :_cc .NewViewPr ()}};
2021-01-04 16:11:39 +00:00
2023-08-06 17:57:53 +00:00
// PrnPr returns the PrnPr property.
func (_bddd PresentationProperties )PrnPr ()*_cc .CT_PrintProperties {return _bddd ._dfbf .PrnPr };
2021-09-22 16:41:01 +00:00
2023-08-06 17:57:53 +00:00
// GetTextBoxes returns a list of all text boxes from a slide.
func (_dccad Slide )GetTextBoxes ()[]*TextBox {_fcfb :=[]*TextBox {};_agcc :=_dccad ._fcbb .CSld .SpTree .Choice ;for _ ,_fcfc :=range _agcc {for _ ,_dab :=range _fcfc .Sp {if _dab .NvSpPr .CNvSpPr .TxBoxAttr !=nil &&*_dab .NvSpPr .CNvSpPr .TxBoxAttr {_fcfb =append (_fcfb ,&TextBox {_dab });};};};return _fcfb ;};
2021-05-31 16:22:30 +00:00
2023-08-06 17:57:53 +00:00
// Slide represents a slide of a presentation.
type Slide struct{_faec *_cc .CT_SlideIdListEntry ;_fcbb *_cc .Sld ;_ffef *Presentation ;_abde *_eg .CT_ColorMapping ;};
2022-09-02 11:46:53 +00:00
2023-08-06 17:57:53 +00:00
// ExtractText returns text from a presentation as a PresentationText object.
func (_cb *Presentation )ExtractText ()*PresentationText {_bg :=[]*SlideText {};for _ ,_fc :=range _cb .Slides (){_gdb :=_fc .ExtractText ();if _gdb !=nil {_bg =append (_bg ,_gdb );};};return &PresentationText {Slides :_bg };};
2022-09-02 11:46:53 +00:00
2023-08-06 17:57:53 +00:00
// GetChartSpaceByRelId returns a *crt.ChartSpace with the associated relation ID in the
// slide.
func (_eaf *Slide )GetChartSpaceByRelId (relId string )*_g .ChartSpace {_daf :=_eaf .getSlideRels ();if (_daf ==_gcb .Relationships {}){return nil ;};_bdee :=_daf .GetTargetByRelId (relId );for _ ,_bfca :=range _eaf ._ffef ._dbc {if _bdee ==_bfca .Target (){return _bfca ._fa ;};};return nil ;};
2021-09-22 16:41:01 +00:00
2023-08-06 17:57:53 +00:00
// X returns the inner wrapped XML type.
func (_dgbf ViewProperties )X ()*_cc .ViewPr {return _dgbf ._fcca };
2021-09-22 16:41:01 +00:00
2023-08-06 17:57:53 +00:00
// X returns the inner wrapped XML type.
func (_ffb Slide )X ()*_cc .Sld {return _ffb ._fcbb };
2023-05-26 09:49:04 +00:00
2023-08-06 17:57:53 +00:00
// Slides returns the slides in the presentation.
func (_cegc *Presentation )Slides ()[]Slide {_gcagb :=[]Slide {};for _babg ,_cdga :=range _cegc ._gca {_gcagb =append (_gcagb ,Slide {_cegc ._acc .SldIdLst .SldId [_babg ],_cdga ,_cegc ,nil });};return _gcagb ;};
2021-09-22 16:41:01 +00:00
2023-07-04 11:04:03 +00:00
// AddParagraph adds a paragraph to the text box
2023-08-06 17:57:53 +00:00
func (_aafb TextBox )AddParagraph ()_dc .Paragraph {_fggf :=_eg .NewCT_TextParagraph ();_aafb ._bagb .TxBody .P =append (_aafb ._bagb .TxBody .P ,_fggf );return _dc .MakeParagraph (_fggf );};
2021-09-22 16:41:01 +00:00
2023-08-06 17:57:53 +00:00
// SetSize sets the slide size, take argument of SlideScreenSize.
func (_gabb *SlideSize )SetSize (sz SlideScreenSize ){_gabb ._fadg .CxAttr =sz [0];_gabb ._fadg .CyAttr =sz [1];};
2021-09-22 16:41:01 +00:00
2023-08-06 17:57:53 +00:00
// SlideMasters returns the slide masters defined in the presentation.
func (_dbd *Presentation )SlideMasters ()[]SlideMaster {_bab :=[]SlideMaster {};for _cdde ,_fee :=range _dbd ._bde {_bab =append (_bab ,SlideMaster {_dbd ,_dbd ._ccff [_cdde ],_fee });};return _bab ;};
2021-09-22 16:41:01 +00:00
2023-08-06 17:57:53 +00:00
// SetTextAnchor controls the text anchoring
func (_dgbd TextBox )SetTextAnchor (a _eg .ST_TextAnchoringType ){_dgbd ._bagb .TxBody .BodyPr =_eg .NewCT_TextBodyProperties ();_dgbd ._bagb .TxBody .BodyPr .AnchorAttr =a ;};
2021-09-22 16:41:01 +00:00
2023-08-06 17:57:53 +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 (_cfag *Presentation )AddSlideWithLayout (l SlideLayout )(Slide ,error ){_fgce :=_cc .NewCT_SlideIdListEntry ();_fgce .IdAttr =256;for _ ,_bcfd :=range _cfag ._acc .SldIdLst .SldId {if _bcfd .IdAttr >=_fgce .IdAttr {_fgce .IdAttr =_bcfd .IdAttr +1;};};_cfag ._acc .SldIdLst .SldId =append (_cfag ._acc .SldIdLst .SldId ,_fgce );_geg :=_cc .NewSld ();_ecd :=_cd .Buffer {};_fefa :=_dd .NewEncoder (&_ecd );_dgd :=_dd .StartElement {Name :_dd .Name {Local :"\u0073\u006c\u0069d\u0065"}};_dgd .Attr =append (_dgd .Attr ,_dd .Attr {Name :_dd .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"});_dgd .Attr =append (_dgd .Attr ,_dd .Attr {Name :_dd .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"});_dgd .Attr =append (_dgd .Attr ,_dd .Attr {Name :_dd .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"});_dgd .Attr =append (_dgd .Attr ,_dd .Attr {Name :_dd .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"});_dgd .Attr =append (_dgd .Attr ,_dd .Attr {Name :_dd .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"});_dgd .Attr =append (_dgd .Attr ,_dd .Attr {Name :_dd .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 _bfee :=l ._bcg .CSld .MarshalXML (_fefa ,_dgd );_bfee !=nil {return Slide {},_bfee ;};_fefa .Flush ();_bdg :=_dd .NewDecoder (&_ecd );_geg .CSld =_cc .NewCT_CommonSlideData ();if _cec :=_bdg .Decode (_geg .CSld );_cec !=nil {return Slide {},_cec ;};_geg .CSld .NameAttr =nil ;_geg .CSld .SpTree .Choice =_fbbg (_geg .CSld .SpTree .Choice );_cfag ._gca =append (_cfag ._gca ,_geg );_adce :=_cfag ._bba .AddAutoRelationship (_ddg .DocTypePresentation ,_ddg .OfficeDocumentType ,len (_cfag ._gca ),_ddg .SlideType );_fgce .RIdAttr =_adce .ID ();_fga :=_ddg .AbsoluteFilename (_ddg .DocTypePresentation ,_ddg .SlideType ,len (_cfag ._gca ));_cfag .ContentTypes .AddOverride (_fga ,_ddg .SlideContentType );_aege :=_gcb .NewRelationships ();_cfag ._dbef =append (_cfag ._dbef ,_aege );_ebab :=len (_cfag ._dbef )-1;for _fedf ,_ddbg :=range _cfag ._aagc {if _ddbg ==l .X (){_gbc :=_cfag ._aea [_fedf ];for _ ,_bdbe :=range _gbc .X ().Relationship {if _bdbe .TypeAttr !=_ddg .SlideMasterType {_cfag ._dbef [_ebab ].X ().Relationship =append (_cf
2021-09-22 16:41:01 +00:00
2023-07-04 11:04:03 +00:00
// X returns TextBox's underlying *pml.CT_Shape.
2023-08-06 17:57:53 +00:00
func (_ebdg TextBox )X ()*_cc .CT_Shape {return _ebdg ._bagb };
2022-09-02 11:46:53 +00:00
2023-08-06 17:57:53 +00:00
// NormalViewPr returns the NormalViewPr property.
func (_bbcc ViewProperties )NormalViewPr ()*_cc .CT_NormalViewProperties {return _bbcc ._fcca .NormalViewPr ;};
2022-09-02 11:46:53 +00:00
2023-08-06 17:57:53 +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 (_bbb sort2d )Less (i ,j int )bool {_afc ,_ed :=_bbb [i ],_bbb [j ];_cga ,_dff :=_afc ._cg ,_ed ._cg ;_ddc ,_fda :=len (_cga )-1,len (_dff )-1;_ccc ,_fb :=0,0;for {_fedb ,_ccf ,_ddee ,_eea ,_dfe ,_cebd ,_bed ,_fafb :=_cga [_ccc ]._fed ,_dff [_fb ]._fed ,_cga [_ccc ]._bd ,_dff [_fb ]._bd ,_cga [_ccc ]._dbg ,_dff [_fb ]._dbg ,_cga [_ccc ]._fdg ,_dff [_fb ]._fdg ;if _fedb ==_ccf ||((_ef .Abs (float64 (_fedb )-float64 (_ccf ))< _cfac )&&((_fedb >=_ccf &&_fedb <=_eea )||(_ccf >=_fedb &&_ccf <=_ddee ))&&(_bed < _cebd ||_dfe > _fafb )){if _dfe ==_cebd {if _ccc < _ddc &&_fb < _fda {_ccc ++;_fb ++;continue ;};if _ccc >=_ddc &&_fb >=_fda {break ;};return _ccc >=_ddc ;}else {return _dfe < _cebd ;};}else {return _fedb < _ccf ;};};_fff ,_ab ,_aff ,_eee :=_afc ._bc ,_ed ._bc ,_afc ._fef ,_ed ._fef ;if _fff ==_ab {return _aff <=_eee ;};return _fff < _ab ;};
2022-12-06 11:56:49 +00:00
2023-07-04 11:04:03 +00:00
// NewSlideScreenSize returns slide screen size with default MS PowerPoint slide screen size 16x9.
func NewSlideScreenSize ()SlideScreenSize {return NewSlideScreenSizeWithValue (SlideScreenSize16x9 [0],SlideScreenSize16x9 [1]);};
2022-02-05 13:05:36 +00:00
2023-08-06 17:57:53 +00:00
// ClrMru returns the ClrMru property.
func (_cgaf PresentationProperties )ClrMru ()*_eg .CT_ColorMRU {return _cgaf ._dfbf .ClrMru };func (_bcea TextBox )getOff ()*_eg .CT_Point2D {if _bcea ._bagb .SpPr ==nil {_bcea ._bagb .SpPr =_eg .NewCT_ShapeProperties ();};if _bcea ._bagb .SpPr .Xfrm ==nil {_bcea ._bagb .SpPr .Xfrm =_eg .NewCT_Transform2D ();};if _bcea ._bagb .SpPr .Xfrm .Off ==nil {_bcea ._bagb .SpPr .Xfrm .Off =_eg .NewCT_Point2D ();};return _bcea ._bagb .SpPr .Xfrm .Off ;};
2022-02-05 13:05:36 +00:00
2023-08-06 17:57:53 +00:00
// X returns the inner wrapped XML type.
func (_aaf *SlideSize )X ()*_cc .CT_SlideSize {return _aaf ._fadg };
2021-09-22 16:41:01 +00:00
2023-08-06 17:57:53 +00:00
// X returns the inner wrapped XML type.
func (_ege PresentationProperties )X ()*_cc .PresentationPr {return _ege ._dfbf };
2023-04-15 17:27:31 +00:00
2023-08-06 17:57:53 +00:00
// Properties returns the properties of the TextBox.
func (_eaa TextBox )Properties ()_dc .ShapeProperties {if _eaa ._bagb .SpPr ==nil {_eaa ._bagb .SpPr =_eg .NewCT_ShapeProperties ();};return _dc .MakeShapeProperties (_eaa ._bagb .SpPr );};
2023-04-15 17:27:31 +00:00
2023-08-06 17:57:53 +00:00
// Save writes the presentation out to a writer in the Zip package format
func (_fae *Presentation )Save (w _gc .Writer )error {return _fae .save (w ,false )};
2021-11-10 11:45:21 +00:00
2023-08-06 17:57:53 +00:00
// PresentationText is an array of extracted text items which has some methods for representing extracted text.
type PresentationText struct{Slides []*SlideText ;};
2022-02-05 13:05:36 +00:00
2023-08-06 17:57:53 +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 (_bbea Slide )GetPlaceholderByIndex (idx uint32 )(PlaceHolder ,error ){for _ ,_cfab :=range _bbea ._fcbb .CSld .SpTree .Choice {for _ ,_dcac :=range _cfab .Sp {if _dcac .NvSpPr !=nil &&_dcac .NvSpPr .NvPr !=nil &&_dcac .NvSpPr .NvPr .Ph !=nil {if (idx ==0&&_dcac .NvSpPr .NvPr .Ph .IdxAttr ==nil )||(_dcac .NvSpPr .NvPr .Ph .IdxAttr !=nil &&*_dcac .NvSpPr .NvPr .Ph .IdxAttr ==idx ){return PlaceHolder {_dcac ,_bbea ._fcbb },nil ;};};};};return PlaceHolder {},_db .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");};var _bfc =false ;
2022-04-09 14:27:46 +00:00
2023-08-06 17:57:53 +00:00
// SlideLayout is a layout from which slides can be created.
type SlideLayout struct{_bcg *_cc .SldLayout };
2022-02-05 13:05:36 +00:00
2023-08-06 17:57:53 +00:00
// Name returns the name of the slide layout.
func (_ebcg SlideLayout )Name ()string {if _ebcg ._bcg .CSld !=nil &&_ebcg ._bcg .CSld .NameAttr !=nil {return *_ebcg ._bcg .CSld .NameAttr ;};return "";};
2022-02-05 13:05:36 +00:00
2023-07-04 11:04:03 +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.
2023-08-06 17:57:53 +00:00
func (_ddda PlaceHolder )SetText (text string ){_ddda .Clear ();_ecce :=_eg .NewEG_TextRun ();_ecce .R =_eg .NewCT_RegularTextRun ();_ecce .R .T =text ;if len (_ddda ._edg .TxBody .P )==0{_ddda ._edg .TxBody .P =append (_ddda ._edg .TxBody .P ,_eg .NewCT_TextParagraph ());};_ddda ._edg .TxBody .P [0].EG_TextRun =nil ;_ddda ._edg .TxBody .P [0].EG_TextRun =append (_ddda ._edg .TxBody .P [0].EG_TextRun ,_ecce );};
2022-02-05 13:05:36 +00:00
2023-08-06 17:57:53 +00:00
// ExtractText returns text from a slide as a SlideText object.
func (_cag *Slide )ExtractText ()*SlideText {_fdgb :=_efd (_cag ._ffef ,_cag ._fcbb .CSld .SpTree .Choice ,[]rectangle {},[]*TextItem {});_fg .Sort (sort2d (_fdgb ));return &SlideText {Items :_fdgb };};
2022-04-09 14:27:46 +00:00
2023-08-06 17:57:53 +00:00
// ShowPr returns the ShowPr property.
func (_dcfa PresentationProperties )ShowPr ()*_cc .CT_ShowProperties {return _dcfa ._dfbf .ShowPr };
2023-04-15 17:27:31 +00:00
2023-08-06 17:57:53 +00:00
// SetOffsetX sets horizontal offset of text box in distance units (see measurement package).
func (_ddbc TextBox )SetOffsetX (offX float64 ){_fceg :=_ddbc .getOff ();_dcef :=_bf .ToEMU (offX );_fceg .XAttr =_eg .ST_Coordinate {ST_CoordinateUnqualified :&_dcef };};func (_ddb *chart )Target ()string {return _ddb ._gag };
2023-04-15 17:27:31 +00:00
2023-08-06 17:57:53 +00:00
// ExtLst returns the ExtLst property.
func (_eae PresentationProperties )ExtLst ()*_cc .CT_ExtensionList {return _eae ._dfbf .ExtLst };
2023-04-15 17:27:31 +00:00
2023-08-06 17:57:53 +00:00
// X returns the inner wrapped XML type.
func (_cfaf SlideMaster )X ()*_cc .SldMaster {return _cfaf ._dfbe };
2023-04-15 17:27:31 +00:00
2023-08-06 17:57:53 +00:00
// RemoveSlide removes a slide from a presentation.
func (_dcaf *Presentation )RemoveSlide (s Slide )error {_bggf :=false ;_dffc :=0;for _bcab ,_gaba :=range _dcaf ._gca {if _gaba ==s ._fcbb {if _dcaf ._acc .SldIdLst .SldId [_bcab ]!=s ._faec {return _db .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 (_dcaf ._gca [_bcab :],_dcaf ._gca [_bcab +1:]);_dcaf ._gca =_dcaf ._gca [0:len (_dcaf ._gca )-1];copy (_dcaf ._dbef [_bcab :],_dcaf ._dbef [_bcab +1:]);_dcaf ._dbef =_dcaf ._dbef [0:len (_dcaf ._dbef )-1];copy (_dcaf ._acc .SldIdLst .SldId [_bcab :],_dcaf ._acc .SldIdLst .SldId [_bcab +1:]);_dcaf ._acc .SldIdLst .SldId =_dcaf ._acc .SldIdLst .SldId [0:len (_dcaf ._acc .SldIdLst .SldId )-1];_bggf =true ;_dffc =_bcab ;};};if !_bggf {return _db .New ("u\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0073li\u0064\u0065");};_cgcb :=_ddg .AbsoluteFilename (_ddg .DocTypePresentation ,_ddg .SlideType ,0);return _dcaf .ContentTypes .RemoveOverrideByIndex (_cgcb ,_dffc );};
2023-04-15 17:27:31 +00:00
2023-08-06 17:57:53 +00:00
// GetLayoutByName retrieves a slide layout given a layout name.
func (_ffe *Presentation )GetLayoutByName (name string )(SlideLayout ,error ){for _ ,_affg :=range _ffe ._aagc {if _affg .CSld .NameAttr !=nil &&name ==*_affg .CSld .NameAttr {return SlideLayout {_affg },nil ;};};return SlideLayout {},_db .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 (_ccfa *Presentation )nextSlideID ()uint32 {_gcd :=uint32 (256);for _ ,_aec :=range _ccfa ._acc .SldIdLst .SldId {if _aec .IdAttr >=_gcd {_gcd =_aec .IdAttr +1;};};return _gcd ;};
2023-04-15 17:27:31 +00:00
2023-08-06 17:57:53 +00:00
// Themes returns an array of presentation themes.
func (_dggf *Presentation )Themes ()[]*_eg .Theme {return _dggf ._cfd };func (_gdgd *Presentation )Validate ()error {if _cdg :=_gdgd ._acc .Validate ();_cdg !=nil {return _cdg ;};for _aaa ,_fccf :=range _gdgd .Slides (){if _egcb :=_fccf .ValidateWithPath (_fdc .Sprintf ("\u0053l\u0069\u0064\u0065\u005b\u0025\u0064]",_aaa ));_egcb !=nil {return _egcb ;};};for _gdfg ,_gaaf :=range _gdgd ._bde {if _ged :=_gaaf .ValidateWithPath (_fdc .Sprintf ("\u0053l\u0069d\u0065\u004d\u0061\u0073\u0074\u0065\u0072\u005b\u0025\u0064\u005d",_gdfg ));_ged !=nil {return _ged ;};};for _cgdb ,_ced :=range _gdgd ._aagc {if _gfe :=_ced .ValidateWithPath (_fdc .Sprintf ("\u0053l\u0069d\u0065\u004c\u0061\u0079\u006f\u0075\u0074\u005b\u0025\u0064\u005d",_cgdb ));_gfe !=nil {return _gfe ;};};return nil ;};
2023-06-10 07:12:37 +00:00
2023-08-06 17:57:53 +00:00
// Close closes the presentation, removing any temporary files that might have been
// created when opening a document.
func (_abd *Presentation )Close ()error {if _abd .TmpPath !=""{return _eb .RemoveAll (_abd .TmpPath );};return nil ;};func _fbbg (_fdd []*_cc .CT_GroupShapeChoice )[]*_cc .CT_GroupShapeChoice {var _eeb []*_cc .CT_GroupShapeChoice ;for _ ,_fdab :=range _fdd {if len (_fdab .Pic )==0{_eeb =append (_eeb ,_fdab );};};return _eeb ;};
2023-06-10 07:12:37 +00:00
2023-08-06 17:57:53 +00:00
// Open opens and reads a document from a file (.pptx).
func Open (filename string )(*Presentation ,error ){_cbc ,_faa :=_ec .Open (filename );if _faa !=nil {return nil ,_fdc .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_faa );};defer _cbc .Close ();_ade ,_faa :=_ec .Stat (filename );if _faa !=nil {return nil ,_fdc .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_faa );};_ =_ade ;return Read (_cbc ,_ade .Size ());};
// OutlineViewPr returns the OutlineViewPr property.
func (_ebcge ViewProperties )OutlineViewPr ()*_cc .CT_OutlineViewProperties {return _ebcge ._fcca .OutlineViewPr ;};
// GridSpacing returns the GridSpacing property.
func (_fdf ViewProperties )GridSpacing ()*_eg .CT_PositiveSize2D {return _fdf ._fcca .GridSpacing };
// 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 };};
2023-06-10 07:12:37 +00:00
2023-07-04 11:04:03 +00:00
// ExtLst returns the ExtLst property.
2023-08-06 17:57:53 +00:00
func (_aafba ViewProperties )ExtLst ()*_cc .CT_ExtensionList {return _aafba ._fcca .ExtLst };
// Type returns the placeholder type
func (_aag PlaceHolder )Type ()_cc .ST_PlaceholderType {return _aag ._edg .NvSpPr .NvPr .Ph .TypeAttr };
// AddImageToRels adds an image relationship to a slide without putting image on the slide.
func (_gga Slide )AddImageToRels (img _gcb .ImageRef )string {_fgd :=0;for _egb ,_eebd :=range _gga ._ffef .Images {if _eebd ==img {_fgd =_egb +1;break ;};};var _agaa string ;for _fac ,_bggd :=range _gga ._ffef .Slides (){if _bggd ._fcbb ==_gga ._fcbb {_aae :=_fdc .Sprintf ("\u002e\u002e\u002f\u006ded\u0069\u0061\u002f\u0069\u006d\u0061\u0067\u0065\u0025\u0064\u002e\u0025\u0073",_fgd ,img .Format ());_dce :=_gga ._ffef ._dbef [_fac ].AddRelationship (_aae ,_ddg .ImageType );_agaa =_dce .ID ();};};return _agaa ;};
2023-06-10 07:12:37 +00:00
2023-07-04 11:04:03 +00:00
// ShowCommentsAttr returns the WebPr property.
2023-08-06 17:57:53 +00:00
func (_fedad ViewProperties )ShowCommentsAttr ()*bool {return _fedad ._fcca .ShowCommentsAttr };func _dda ()*Presentation {_aef :=&Presentation {_acc :_cc .NewPresentation ()};_aef ._acc .SldIdLst =_cc .NewCT_SlideIdList ();_aef ._acc .ConformanceAttr =_ge .ST_ConformanceClassTransitional ;_aef .AppProperties =_gcb .NewAppProperties ();_aef .CoreProperties =_gcb .NewCoreProperties ();_aef ._ffaf =_gcb .NewTableStyles ();_aef .ContentTypes =_gcb .NewContentTypes ();_aef .Rels =_gcb .NewRelationships ();_aef ._bba =_gcb .NewRelationships ();_aef ._ffg =NewPresentationProperties ();_aef ._adc =NewViewProperties ();_aef ._feg =map[string ]string {};return _aef ;};
2023-06-10 07:12:37 +00:00
2023-08-06 17:57:53 +00:00
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// slide.
func (_gge *Slide )GetImageByRelID (relID string )(_gcb .ImageRef ,bool ){_dgdf :=_gge .getSlideRels ();if (_dgdf ==_gcb .Relationships {}){return _gcb .ImageRef {},false ;};var _bac string ;for _ ,_gadf :=range _dgdf .X ().Relationship {if _gadf .IdAttr ==relID {_bac =_gadf .TargetAttr ;break ;};};for _ ,_cddf :=range _gge ._ffef .Images {if _cddf .Target ()==_bac {return _cddf ,true ;};};return _gcb .ImageRef {},false ;};
// SlideText is an array of extracted text items which has some methods for representing extracted text from a slide.
type SlideText struct{Items []*TextItem ;};