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-06-10 07:12:37 +00:00
package presentation ; import ( _ebe "archive/zip" ; _gb "bytes" ; _ce "encoding/xml" ; _fe "errors" ; _dbe "fmt" ; _ca "github.com/unidoc/unioffice" ; _cea "github.com/unidoc/unioffice/common" ; _ef "github.com/unidoc/unioffice/common/logger" ; _dd "github.com/unidoc/unioffice/common/tempstorage" ; _cdd "github.com/unidoc/unioffice/drawing" ; _cc "github.com/unidoc/unioffice/internal/license" ; _a "github.com/unidoc/unioffice/measurement" ; _bd "github.com/unidoc/unioffice/schema/soo/dml" ; _b "github.com/unidoc/unioffice/schema/soo/dml/chart" ; _eb "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes" ; _cd "github.com/unidoc/unioffice/schema/soo/pkg/relationships" ; _ad "github.com/unidoc/unioffice/schema/soo/pml" ; _e "github.com/unidoc/unioffice/zippkg" ; _gg "image" ; _db "image/jpeg" ; _bc "io" ; _gd "math" ; _ebc "os" ; _g "path" ; _ade "sort" ; _d "strconv" ; _f "strings" ; ) ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// Close closes the presentation, removing any temporary files that might have been
// created when opening a document.
func ( _eaa * Presentation ) Close ( ) error { if _eaa . TmpPath != "" { return _dd . RemoveAll ( _eaa . TmpPath ) ; } ; return nil ; } ;
2021-05-31 16:22:30 +00:00
2023-06-10 07:12:37 +00:00
// AddParagraph adds a new paragraph to a placeholder.
func ( _dbed PlaceHolder ) AddParagraph ( ) _cdd . Paragraph { _eda := _cdd . MakeParagraph ( _bd . NewCT_TextParagraph ( ) ) ; _dbed . _eefg . TxBody . P = append ( _dbed . _eefg . TxBody . P , _eda . X ( ) ) ; return _eda ; } ;
2021-05-31 16:22:30 +00:00
2023-06-10 07:12:37 +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 } ; } ;
2022-01-15 21:17:38 +00:00
2023-06-10 07:12:37 +00:00
// SetOffsetY sets vertical offset of text box in distance units (see measurement package).
func ( _egg TextBox ) SetOffsetY ( offY float64 ) { _cda := _egg . getOff ( ) ; _abag := _a . ToEMU ( offY ) ; _cda . YAttr = _bd . ST_Coordinate { ST_CoordinateUnqualified : & _abag } ; } ;
// SlideLayouts returns a slice of all layouts in SlideMaster.
func ( _deea SlideMaster ) SlideLayouts ( ) [ ] SlideLayout { _fdfb := map [ string ] int { } ; _dfe := [ ] SlideLayout { } ; for _ , _ebg := range _deea . _ceab . Relationships ( ) { _cada := _f . Replace ( _ebg . Target ( ) , ".\u002e\u002f\u0073\u006c\u0069\u0064e\u004c\u0061\u0079\u006f\u0075\u0074\u0073\u002f\u0073l\u0069\u0064\u0065L\u0061y\u006f\u0075\u0074" , "" , - 1 ) ; _cada = _f . Replace ( _cada , "\u002e\u0078\u006d\u006c" , "" , - 1 ) ; if _cdea , _dgb := _d . ParseInt ( _cada , 10 , 32 ) ; _dgb == nil { _fdfb [ _ebg . ID ( ) ] = int ( _cdea ) ; } ; } ; for _ , _def := range _deea . _faecc . SldLayoutIdLst . SldLayoutId { if _ebdg , _bffe := _fdfb [ _def . RIdAttr ] ; _bffe { _cadf := _deea . _gcgc . _gac [ _ebdg - 1 ] ; _dfe = append ( _dfe , SlideLayout { _cadf } ) ; } ; } ; return _dfe ; } ;
2022-09-02 11:46:53 +00:00
2023-05-26 09:49:04 +00:00
// AddTable adds an empty table to a slide.
2023-06-10 07:12:37 +00:00
func ( _adge Slide ) AddTable ( ) * _cea . Table { _fcge := _ad . NewCT_GroupShapeChoice ( ) ; _adge . _bda . CSld . SpTree . Choice = append ( _adge . _bda . CSld . SpTree . Choice , _fcge ) ; _fddaa := _ad . NewCT_GraphicalObjectFrame ( ) ; _fcge . GraphicFrame = append ( _fcge . GraphicFrame , _fddaa ) ; _fddaa . Xfrm . Off = _bd . NewCT_Point2D ( ) ; _cac := int64 ( 1 ) ; _fddaa . Xfrm . Off . XAttr = _bd . ST_Coordinate { ST_CoordinateUnqualified : & _cac } ; _fddaa . Xfrm . Off . YAttr = _bd . ST_Coordinate { ST_CoordinateUnqualified : & _cac } ; _dae := _fddaa . Graphic . CT_GraphicalObject . GraphicData ; _dae . 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" ; _badf := _cea . NewTableWithXfrm ( _fddaa . Xfrm ) ; _dae . Any = append ( _dae . Any , _badf . X ( ) ) ; return _badf ; } ;
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// SaveToFileAsTemplate writes the Presentation out to a file as a template.
func ( _beag * Presentation ) SaveToFileAsTemplate ( path string ) error { return _beag . saveToFile ( path , true ) ; } ;
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// NewViewProperties constructs a new ViewProperties.
func NewViewProperties ( ) ViewProperties { return ViewProperties { _ecfe : _ad . NewViewPr ( ) } } ;
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// AddImage adds an image textbox to a slide.
func ( _aeb Slide ) AddImage ( img _cea . ImageRef ) Image { _ffee := _ad . NewCT_GroupShapeChoice ( ) ; _aeb . _bda . CSld . SpTree . Choice = append ( _aeb . _bda . CSld . SpTree . Choice , _ffee ) ; _ebd := _ad . NewCT_Picture ( ) ; _ffee . Pic = append ( _ffee . Pic , _ebd ) ; _ebd . NvPicPr . CNvPicPr = _bd . NewCT_NonVisualPictureProperties ( ) ; _ebd . NvPicPr . CNvPicPr . PicLocks = _bd . NewCT_PictureLocking ( ) ; _ebd . NvPicPr . CNvPicPr . PicLocks . NoChangeAspectAttr = _ca . Bool ( true ) ; _ebd . BlipFill = _bd . NewCT_BlipFillProperties ( ) ; _ebd . BlipFill . Blip = _bd . NewCT_Blip ( ) ; _cca := _aeb . AddImageToRels ( img ) ; _ebd . BlipFill . Blip . EmbedAttr = _ca . String ( _cca ) ; _ebd . BlipFill . Stretch = _bd . NewCT_StretchInfoProperties ( ) ; _ebd . BlipFill . Stretch . FillRect = _bd . NewCT_RelativeRect ( ) ; _ebd . SpPr = _bd . NewCT_ShapeProperties ( ) ; _ebd . SpPr . PrstGeom = _bd . NewCT_PresetGeometry2D ( ) ; _ebd . SpPr . PrstGeom . PrstAttr = _bd . ST_ShapeTypeRect ; _ffbc := Image { _ebd } ; _dcdd := img . Size ( ) ; _ffbc . Properties ( ) . SetWidth ( _a . Distance ( _dcdd . X ) * _a . Pixel72 ) ; _ffbc . Properties ( ) . SetHeight ( _a . Distance ( _dcdd . Y ) * _a . Pixel72 ) ; _ffbc . Properties ( ) . SetPosition ( 0 , 0 ) ; return _ffbc ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// GetTextBoxes returns a list of all text boxes from a slide.
func ( _bebg Slide ) GetTextBoxes ( ) [ ] * TextBox { _bge := [ ] * TextBox { } ; _edfe := _bebg . _bda . CSld . SpTree . Choice ; for _ , _eagg := range _edfe { for _ , _cbac := range _eagg . Sp { if _cbac . NvSpPr . CNvSpPr . TxBoxAttr != nil && * _cbac . NvSpPr . CNvSpPr . TxBoxAttr { _bge = append ( _bge , & TextBox { _cbac } ) ; } ; } ; } ; return _bge ; } ;
2023-03-01 18:42:44 +00:00
2023-06-10 07:12:37 +00:00
// Type returns the type of the slide layout.
func ( _cacb SlideLayout ) Type ( ) _ad . ST_SlideLayoutType { return _cacb . _bcfg . TypeAttr } ; func ( _dcc * Presentation ) onNewRelationship ( _eefd * _e . DecodeMap , _cggc , _cff string , _dgea [ ] * _ebe . File , _gge * _cd . Relationship , _geffe _e . Target ) error { _ecgc := _ca . DocTypePresentation ; switch _cff { case _ca . OfficeDocumentType : _dcc . _gegf = _ad . NewPresentation ( ) ; _eefd . AddTarget ( _cggc , _dcc . _gegf , _cff , 0 ) ; _eefd . AddTarget ( _e . RelationsPathFor ( _cggc ) , _dcc . _bcgf . X ( ) , _cff , 0 ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , 0 ) ; case _ca . CorePropertiesType : _eefd . AddTarget ( _cggc , _dcc . CoreProperties . X ( ) , _cff , 0 ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , 0 ) ; case _ca . CustomPropertiesType : _eefd . AddTarget ( _cggc , _dcc . CustomProperties . X ( ) , _cff , 0 ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , 0 ) ; case _ca . PresentationPropertiesType : _eefd . AddTarget ( _cggc , _dcc . _fcb . X ( ) , _cff , 0 ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , 0 ) ; case _ca . ViewPropertiesType : _eefd . AddTarget ( _cggc , _dcc . _bgdc . X ( ) , _cff , 0 ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , 0 ) ; case _ca . TableStylesType : _eefd . AddTarget ( _cggc , _dcc . _abc . X ( ) , _cff , 0 ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , 0 ) ; case _ca . HyperLinkType : _bfce := _bd . NewCT_Hyperlink ( ) ; _fedc := uint32 ( len ( _dcc . _fedb ) ) ; _eefd . AddTarget ( _cggc , _bfce , _cff , _fedc ) ; _dcc . _fedb = append ( _dcc . _fedb , _bfce ) ; case _ca . CustomXMLType : _cfcg := & _ca . XSDAny { } ; _adac := uint32 ( len ( _dcc . _baeg ) ) ; _eefd . AddTarget ( _cggc , _cfcg , _cff , _adac ) ; _dcc . _baeg = append ( _dcc . _baeg , _cfcg ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , len ( _dcc . _baeg ) ) ; case _ca . ChartType : _cfaf := chart { _ea : _b . NewChartSpace ( ) } ; _dffg := uint32 ( len ( _dcc . _cedaa ) ) ; _eefd . AddTarget ( _cggc , _cfaf . _ea , _cff , _dffg ) ; _dcc . _cedaa = append ( _dcc . _cedaa , & _cfaf ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , len ( _dcc . _cedaa ) ) ; _cfaf . _ac = _gge . TargetAttr ; case _ca . HandoutMasterType : _fgfg := _ad . NewHandoutMaster ( ) ; _acfe := uint32 ( len ( _dcc . _cde ) ) ; _eefd . AddTarget ( _cggc , _fgfg , _cff , _acfe ) ; _dcc . _cde = append ( _dcc . _cde , _fgfg ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , len ( _dcc . _cde ) ) ; case _ca . NotesMasterType : _dec := _ad . NewNotesMaster ( ) ; _gbdc := uint32 ( len ( _dcc . _bee ) ) ; _eefd . AddTarget ( _cggc , _dec , _cff , _gbdc ) ; _dcc . _bee = append ( _dcc . _bee , _dec ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , len ( _dcc . _bee ) ) ; case _ca . ExtendedPropertiesType : _eefd . AddTarget ( _cggc , _dcc . AppProperties . X ( ) , _cff , 0 ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , 0 ) ; case _ca . SlideType : _bcf := _ad . NewSld ( ) ; _dcc . _cfd = append ( _dcc . _cfd , _bcf ) ; _eefd . AddTarget ( _cggc , _bcf , _cff , uint32 ( len ( _dcc . _cfd ) ) ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , len ( _dcc . _cfd ) ) ; _dbeg := _cea . NewRelationships ( ) ; _eefd . AddTarget ( _e . RelationsPathFor ( _cggc ) , _dbeg . X ( ) , _cff , 0 ) ; _dcc . _fabd = append ( _dcc . _fabd , _dbeg ) ; case _ca . SlideMasterType : _fccb := _ad . NewSldMaster ( ) ; if ! _eefd . AddTarget ( _cggc , _fccb , _cff , uint32 ( len ( _dcc . _bgfb ) + 1 ) ) { return nil ; } ; _dcc . _bgfb = append ( _dcc . _bgfb , _fccb ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , len ( _dcc . _bgfb ) ) ; _fecf := _cea . NewRelationships ( ) ; _eefd . AddTarget ( _e . RelationsPathFor ( _cggc ) , _fecf . X ( ) , _cff , 0 ) ; _dcc . _aadb = append ( _dcc . _aadb , _fecf ) ; case _ca . SlideLayoutType : _bece := _ad . NewSldLayout ( ) ; if ! _eefd . AddTarget ( _cggc , _bece , _cff , uint32 ( len ( _dcc . _gac ) + 1 ) ) { return nil ; } ; _dcc . _gac = append ( _dcc . _gac , _bece ) ; _gge . TargetAttr = _ca . RelativeFilename ( _ecgc , _geffe . Typ , _cff , len ( _dcc . _gac ) ) ; _dfdd := _cea . NewRelationships ( ) ; _eefd . AddTarget ( _e . RelationsPathFor ( _cggc ) , _dfdd . X ( ) , _cff , 0 ) ; _dcc . _bab = append ( _dcc . _bab , _dfdd ) ; case _ca . ThumbnailType : for _efaa , _dffd := range _dgea { if _dffd == nil { continue ; } ; if _dffd . Name
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// document.
func ( _gad * Presentation ) GetImageByRelID ( relID string ) ( _cea . ImageRef , bool ) { for _ , _fbf := range _gad . Images { if _fbf . RelID ( ) == relID { return _fbf , true ; } ; } ; return _cea . ImageRef { } , false ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SaveToFile writes the Presentation out to a file.
func ( _eaed * Presentation ) SaveToFile ( path string ) error { return _eaed . saveToFile ( path , false ) } ; func ( _eg * chart ) Target ( ) string { return _eg . _ac } ;
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// WebPr returns the WebPr property.
func ( _cgf PresentationProperties ) WebPr ( ) * _ad . CT_WebProperties { return _cgf . _dfge . WebPr } ;
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func ( _gecb SlideLayout ) X ( ) * _ad . SldLayout { return _gecb . _bcfg } ;
2022-04-09 14:27:46 +00:00
2023-05-26 09:49:04 +00:00
// Read reads a document from an io.Reader.
2023-06-10 07:12:37 +00:00
func Read ( r _bc . ReaderAt , size int64 ) ( * Presentation , error ) { const _cba = "\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e:\u0052\u0065\u0061\u0064" ; if ! _cc . GetLicenseKey ( ) . IsLicensed ( ) && ! _bbec { _dbe . 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" ) ; _dbe . 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 , _fe . 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" ) ; } ; _acab := _cbb ( ) ; _aaa , _bgdda := _cc . GenRefId ( "\u0070\u0072" ) ; if _bgdda != nil { _ef . Log . Error ( "\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v" , _bgdda ) ; return nil , _bgdda ; } ; _acab . _gcab = _aaa ; if _fcg := _cc . Track ( _acab . _gcab , _cba ) ; _fcg != nil { _ef . Log . Error ( "\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v" , _fcg ) ; return nil , _fcg ; } ; _dbba , _bgdda := _dd . TempDir ( "\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065-\u0070\u0070\u0074\u0078" ) ; if _bgdda != nil { return nil , _bgdda ; } ; _acab . TmpPath = _dbba ; _dgcda , _bgdda := _ebe . NewReader ( r , size ) ; if _bgdda != nil { return nil , _dbe . Errorf ( "\u0070a\u0072s\u0069\u006e\u0067\u0020\u007a\u0069\u0070\u003a\u0020\u0025\u0073" , _bgdda ) ; } ; _agc := [ ] * _ebe . File { } ; _agc = append ( _agc , _dgcda . File ... ) ; _efb := false ; for _ , _gbed := range _agc { if _gbed . FileHeader . Name == "\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c" { _efb = true ; break ; } ; } ; if _efb { _acab . CreateCustomProperties ( ) ; } ; _ffg := _e . DecodeMap { } ; _ffg . SetOnNewRelationshipFunc ( _acab . onNewRelationship ) ; _ffg . AddTarget ( _ca . ContentTypesFilename , _acab . ContentTypes . X ( ) , "" , 0 ) ; _ffg . AddTarget ( _ca . BaseRelsFilename , _acab . Rels . X ( ) , "" , 0 ) ; if _cdg := _ffg . Decode ( _agc ) ; _cdg != nil { return nil , _cdg ; } ; for _ , _aga := range _agc { if _aga == nil { continue ; } ; if _gba := _acab . AddExtraFileFromZip ( _aga ) ; _gba != nil { return nil , _gba ; } ; } ; if _efb { _fag := false ; for _ , _gfgce := range _acab . Rels . X ( ) . Relationship { if _gfgce . TargetAttr == "\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c" { _fag = true ; break ; } ; } ; if ! _fag { _acab . AddCustomRelationships ( ) ; } ; } ; return _acab , nil ; } ;
2023-05-26 09:49:04 +00:00
2023-06-10 07:12:37 +00:00
// AddParagraph adds a paragraph to the text box
func ( _gcabe TextBox ) AddParagraph ( ) _cdd . Paragraph { _gff := _bd . NewCT_TextParagraph ( ) ; _gcabe . _cgbb . TxBody . P = append ( _gcabe . _cgbb . TxBody . P , _gff ) ; return _cdd . MakeParagraph ( _gff ) ; } ; type sort2d [ ] * TextItem ; func ( _ddb * chart ) RelId ( ) string { return _ddb . _cdf } ; func ( _aadge * Slide ) getSlideRels ( ) _cea . Relationships { _bagg := _aadge . _dddg ; for _dcg , _gdc := range _bagg . Slides ( ) { if * _aadge . _bda == * _gdc . _bda { return _bagg . _fabd [ len ( _bagg . _fabd ) - _dcg - 1 ] ; } ; } ; return _cea . Relationships { } ; } ;
2023-05-26 09:49:04 +00:00
2023-06-10 07:12:37 +00:00
// OpenTemplate opens a template file.
func OpenTemplate ( fn string ) ( * Presentation , error ) { _cgb , _eefa := Open ( fn ) ; if _eefa != nil { return nil , _eefa ; } ; return _cgb , nil ; } ;
2023-05-26 09:49:04 +00:00
2023-06-10 07:12:37 +00:00
// Height returns slide screen size height in EMU units.
func ( _dde * SlideScreenSize ) Height ( ) int32 { return _dde [ 1 ] } ;
2022-09-02 11:46:53 +00:00
2023-06-10 07:12:37 +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 ( _feg PlaceHolder ) SetText ( text string ) { _feg . Clear ( ) ; _ega := _bd . NewEG_TextRun ( ) ; _ega . R = _bd . NewCT_RegularTextRun ( ) ; _ega . R . T = text ; if len ( _feg . _eefg . TxBody . P ) == 0 { _feg . _eefg . TxBody . P = append ( _feg . _eefg . TxBody . P , _bd . NewCT_TextParagraph ( ) ) ; } ; _feg . _eefg . TxBody . P [ 0 ] . EG_TextRun = nil ; _feg . _eefg . TxBody . P [ 0 ] . EG_TextRun = append ( _feg . _eefg . TxBody . P [ 0 ] . EG_TextRun , _ega ) ; } ;
2022-02-25 19:20:45 +00:00
2023-05-26 09:49:04 +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 ; } ;
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// NewPresentationProperties constructs a new PresentationProperties.
func NewPresentationProperties ( ) PresentationProperties { return PresentationProperties { _dfge : _ad . NewPresentationPr ( ) } ; } ; func _fed ( _cf * Presentation , _fa [ ] * _ad . CT_GroupShapeChoice , _bdd [ ] rectangle , _fec [ ] * TextItem ) [ ] * TextItem { for _ , _aee := range _fa { _ec := append ( [ ] rectangle { } , _bdd ... ) ; for _ , _eae := range _aee . Sp { _fec = append ( _fec , _bb ( _cf , _eae , nil , nil , _eae . SpPr . Xfrm , 0 , _bdd , _eae . TxBody . P ) ... ) ; } ; for _ , _fae := range _aee . GraphicFrame { if _fae != nil && _fae . Graphic != nil && _fae . Graphic . GraphicData != nil { _fd := _fae . Xfrm ; for _ , _bg := range _fae . Graphic . GraphicData . Any { if _cg , _bgf := _bg . ( * _bd . Tbl ) ; _bgf { _bcc := & _cg . CT_Table ; _ddc := 0 ; for _dba , _bgd := range _cg . Tr { for _eef , _aa := range _bgd . Tc { _ed := & TableInfo { Table : _bcc , Row : _bgd , Cell : _aa , RowIndex : _dba , ColIndex : _eef } ; _fec = append ( _fec , _bb ( _cf , nil , _fae , _ed , _fd , _ddc , _bdd , _aa . TxBody . P ) ... ) ; _ddc ++ ; } ; } ; } ; } ; } ; } ; for _ , _ged := range _aee . GrpSp { if _ged . GrpSpPr != nil { _bff := _ged . GrpSpPr . Xfrm ; var _cb , _ff int64 ; if _bff . Off != nil { _aad , _fdd := _bff . Off . XAttr . ST_CoordinateUnqualified , _bff . Off . YAttr . ST_CoordinateUnqualified ; if _aad != nil && _fdd != nil { if _cad := _bff . Ext ; _cad != nil { _cb , _ff = _cad . CxAttr , _cad . CyAttr ; } ; _ec = append ( _ec , rectangle { _efe : * _aad , _ee : * _fdd , _af : * _aad + _cb , _ab : * _fdd + _ff } ) ; } ; } ; } ; _fec = _fed ( _cf , _ged . Choice , _ec , _fec ) ; } ; } ; return _fec ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SlideMasters returns the slide masters defined in the presentation.
func ( _gega * Presentation ) SlideMasters ( ) [ ] SlideMaster { _cgde := [ ] SlideMaster { } ; for _cfgb , _bec := range _gega . _bgfb { _cgde = append ( _cgde , SlideMaster { _gega , _gega . _aadb [ _cfgb ] , _bec } ) ; } ; return _cgde ; } ;
2022-01-15 21:17:38 +00:00
2023-06-10 07:12:37 +00:00
// PresentationText is an array of extracted text items which has some methods for representing extracted text.
type PresentationText struct { Slides [ ] * SlideText ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SetSize sets the slide size, take argument of SlideScreenSize.
func ( _acabf * SlideSize ) SetSize ( sz SlideScreenSize ) { _acabf . _eed . CxAttr = sz [ 0 ] ; _acabf . _eed . CyAttr = sz [ 1 ] ; } ;
2020-11-09 01:00:18 +00:00
2023-06-10 07:12:37 +00:00
// PrnPr returns the PrnPr property.
func ( _ccg PresentationProperties ) PrnPr ( ) * _ad . CT_PrintProperties { return _ccg . _dfge . PrnPr } ;
2021-03-16 20:51:18 +00:00
2023-06-10 07:12:37 +00:00
// Themes returns an array of presentation themes.
func ( _dee * Presentation ) Themes ( ) [ ] * _bd . Theme { return _dee . _bfc } ;
2023-05-26 09:49:04 +00:00
2023-06-10 07:12:37 +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 ( _fga * Presentation ) AddSlideWithLayout ( l SlideLayout ) ( Slide , error ) { _edd := _ad . NewCT_SlideIdListEntry ( ) ; _edd . IdAttr = 256 ; for _ , _fgb := range _fga . _gegf . SldIdLst . SldId { if _fgb . IdAttr >= _edd . IdAttr { _edd . IdAttr = _fgb . IdAttr + 1 ; } ; } ; _fga . _gegf . SldIdLst . SldId = append ( _fga . _gegf . SldIdLst . SldId , _edd ) ; _faec := _ad . NewSld ( ) ; _cga := _gb . Buffer { } ; _dce := _ce . NewEncoder ( & _cga ) ; _ffb := _ce . StartElement { Name : _ce . Name { Local : "\u0073\u006c\u0069d\u0065" } } ; _ffb . Attr = append ( _ffb . Attr , _ce . Attr { Name : _ce . 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" } ) ; _ffb . Attr = append ( _ffb . Attr , _ce . Attr { Name : _ce . 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" } ) ; _ffb . Attr = append ( _ffb . Attr , _ce . Attr { Name : _ce . 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" } ) ; _ffb . Attr = append ( _ffb . Attr , _ce . Attr { Name : _ce . 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" } ) ; _ffb . Attr = append ( _ffb . Attr , _ce . Attr { Name : _ce . 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" } ) ; _ffb . Attr = append ( _ffb . Attr , _ce . Attr { Name : _ce . 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 _geff := l . _bcfg . CSld . MarshalXML ( _dce , _ffb ) ; _geff != nil { return Slide { } , _geff ; } ; _dce . Flush ( ) ; _gcd := _ce . NewDecoder ( & _cga ) ; _faec . CSld = _ad . NewCT_CommonSlideData ( ) ; if _edab := _gcd . Decode ( _faec . CSld ) ; _edab != nil { return Slide { } , _edab ; } ; _faec . CSld . NameAttr = nil ; _faec . CSld . SpTree . Choice = _bfed ( _faec . CSld . SpTree . Choice ) ; _fga . _cfd = append ( _fga . _cfd , _faec ) ; _egb := _fga . _bcgf . AddAutoRelationship ( _ca . DocTypePresentation , _ca . OfficeDocumentType , len ( _fga . _cfd ) , _ca . SlideType ) ; _edd . RIdAttr = _egb . ID ( ) ; _aab := _ca . AbsoluteFilename ( _ca . DocTypePresentation , _ca . SlideType , len ( _fga . _cfd ) ) ; _fga . ContentTypes . AddOverride ( _aab , _ca . SlideContentType ) ; _gbfa := _cea . NewRelationships ( ) ; _fga . _fabd = append ( _fga . _fabd , _gbfa ) ; _bgfba := len ( _fga . _fabd ) - 1 ; for _gacd , _gbff := range _fga . _gac { if _gbff == l . X ( ) { _afa := _fga . _bab [ _gacd ] ; for _ , _dfgg := range _afa . X ( ) . Relationship { if _dfgg . TypeAttr != _ca . SlideMasterType { _fga . _fabd [ _bgfba ] . X ( ) . Relationship = append ( _fga . _fabd [ _bgfba ] . X (
2022-02-25 19:20:45 +00:00
2023-06-10 07:12:37 +00:00
// SetTextAnchor controls the text anchoring
func ( _bgac TextBox ) SetTextAnchor ( a _bd . ST_TextAnchoringType ) { _bgac . _cgbb . TxBody . BodyPr = _bd . NewCT_TextBodyProperties ( ) ; _bgac . _cgbb . TxBody . BodyPr . AnchorAttr = a ; } ;
2022-02-25 19:20:45 +00:00
2023-06-10 07:12:37 +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 ( _aef Slide ) GetPlaceholder ( t _ad . ST_PlaceholderType ) ( PlaceHolder , error ) { for _ , _cffb := range _aef . _bda . CSld . SpTree . Choice { for _ , _fac := range _cffb . Sp { if _fac . NvSpPr != nil && _fac . NvSpPr . NvPr != nil && _fac . NvSpPr . NvPr . Ph != nil { if _fac . NvSpPr . NvPr . Ph . TypeAttr == t { return PlaceHolder { _fac , _aef . _bda } , nil ; } ; } ; } ; } ; return PlaceHolder { } , _fe . 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" ) ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// slide.
func ( _cecg * Slide ) GetImageByRelID ( relID string ) ( _cea . ImageRef , bool ) { _fbdf := _cecg . getSlideRels ( ) ; if ( _fbdf == _cea . Relationships { } ) { return _cea . ImageRef { } , false ; } ; var _eacb string ; for _ , _dgdg := range _fbdf . X ( ) . Relationship { if _dgdg . IdAttr == relID { _eacb = _dgdg . TargetAttr ; break ; } ; } ; for _ , _edaf := range _cecg . _dddg . Images { if _edaf . Target ( ) == _eacb { return _edaf , true ; } ; } ; return _cea . ImageRef { } , false ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// GridSpacing returns the GridSpacing property.
func ( _gaad ViewProperties ) GridSpacing ( ) * _bd . CT_PositiveSize2D { return _gaad . _ecfe . GridSpacing } ; var ( SlideScreenSize16x9 = SlideScreenSize { 12192000 , 6858000 } ; SlideScreenSize4x3 = SlideScreenSize { 9144000 , 6858000 } ; SlideScreenSizeA4 = SlideScreenSize { 9906000 , 6858000 } ; ) ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// Paragraphs returns the paragraphs defined in the placeholder.
func ( _agd PlaceHolder ) Paragraphs ( ) [ ] _cdd . Paragraph { _bae := [ ] _cdd . Paragraph { } ; for _ , _baeb := range _agd . _eefg . TxBody . P { _bae = append ( _bae , _cdd . MakeParagraph ( _baeb ) ) ; } ; return _bae ; } ;
2021-08-23 20:44:48 +00:00
2023-06-10 07:12:37 +00:00
// NotesTextViewPr returns the NotesTextViewPr property.
func ( _aeag ViewProperties ) NotesTextViewPr ( ) * _ad . CT_NotesTextViewProperties { return _aeag . _ecfe . NotesTextViewPr ; } ;
2022-06-27 19:44:23 +00:00
2023-06-10 07:12:37 +00:00
// X returns TextBox's underlying *pml.CT_Shape.
func ( _bddc TextBox ) X ( ) * _ad . CT_Shape { return _bddc . _cgbb } ;
2022-06-27 19:44:23 +00:00
2023-06-10 07:12:37 +00:00
// AddSlide adds a new slide to the presentation.
func ( _dgg * Presentation ) AddSlide ( ) Slide { _ddbb := _ad . NewCT_SlideIdListEntry ( ) ; _ddbb . IdAttr = _dgg . nextSlideID ( ) ; _dgg . _gegf . SldIdLst . SldId = append ( _dgg . _gegf . SldIdLst . SldId , _ddbb ) ; _aadc := _ad . NewSld ( ) ; _aadc . CSld . SpTree . NvGrpSpPr . CNvPr . IdAttr = 1 ; _aadc . CSld . SpTree . GrpSpPr . Xfrm = _bd . NewCT_GroupTransform2D ( ) ; _aadc . CSld . SpTree . GrpSpPr . Xfrm . Off = _bd . NewCT_Point2D ( ) ; _aadc . CSld . SpTree . GrpSpPr . Xfrm . Off . XAttr . ST_CoordinateUnqualified = _ca . Int64 ( 0 ) ; _aadc . CSld . SpTree . GrpSpPr . Xfrm . Off . YAttr . ST_CoordinateUnqualified = _ca . Int64 ( 0 ) ; _aadc . CSld . SpTree . GrpSpPr . Xfrm . Ext = _bd . NewCT_PositiveSize2D ( ) ; _aadc . CSld . SpTree . GrpSpPr . Xfrm . Ext . CxAttr = int64 ( 0 * _a . Point ) ; _aadc . CSld . SpTree . GrpSpPr . Xfrm . Ext . CyAttr = int64 ( 0 * _a . Point ) ; _aadc . CSld . SpTree . GrpSpPr . Xfrm . ChOff = _aadc . CSld . SpTree . GrpSpPr . Xfrm . Off ; _aadc . CSld . SpTree . GrpSpPr . Xfrm . ChExt = _aadc . CSld . SpTree . GrpSpPr . Xfrm . Ext ; _dgg . _cfd = append ( _dgg . _cfd , _aadc ) ; _aae := _dgg . _bcgf . AddAutoRelationship ( _ca . DocTypePresentation , _ca . OfficeDocumentType , len ( _dgg . _cfd ) , _ca . SlideType ) ; _ddbb . RIdAttr = _aae . ID ( ) ; _fgf := _ca . AbsoluteFilename ( _ca . DocTypePresentation , _ca . SlideType , len ( _dgg . _cfd ) ) ; _dgg . ContentTypes . AddOverride ( _fgf , _ca . SlideContentType ) ; _cfa := _cea . NewRelationships ( ) ; _dgg . _fabd = append ( _dgg . _fabd , _cfa ) ; _cfa . AddAutoRelationship ( _ca . DocTypePresentation , _ca . SlideType , len ( _dgg . _gac ) , _ca . SlideLayoutType ) ; return Slide { _ddbb , _aadc , _dgg , nil } ; } ;
2021-08-23 20:44:48 +00:00
2023-06-10 07:12:37 +00:00
// Presentation returns a slide's presentation.
func ( _dcce Slide ) Presentation ( ) * Presentation { return _dcce . _dddg } ;
2021-11-10 11:45:21 +00:00
2023-06-10 07:12:37 +00:00
// ExtractText returns text from a presentation as a PresentationText object.
func ( _be * Presentation ) ExtractText ( ) * PresentationText { _fg := [ ] * SlideText { } ; for _ , _ge := range _be . Slides ( ) { _bef := _ge . ExtractText ( ) ; if _bef != nil { _fg = append ( _fg , _bef ) ; } ; } ; return & PresentationText { Slides : _fg } ; } ;
2021-08-23 20:44:48 +00:00
2023-06-10 07:12:37 +00:00
// ShowCommentsAttr returns the WebPr property.
func ( _fddf ViewProperties ) ShowCommentsAttr ( ) * bool { return _fddf . _ecfe . ShowCommentsAttr } ;
2020-12-17 22:07:08 +00:00
2023-06-10 07:12:37 +00:00
// New initializes and reurns a new presentation
func New ( ) * Presentation { _cbf := _cbb ( ) ; _cbf . 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" ) ; _cbf . 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" ) ; _cbf . 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" ) ; _cbf . 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" ) ; _cbf . 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" ) ; _cbf . 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" ) ; _cbf . 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
2021-06-16 07:10:52 +00:00
2023-06-10 07:12:37 +00:00
// SlideMaster is the slide master for a presentation.
type SlideMaster struct { _gcgc * Presentation ; _ceab _cea . Relationships ; _faecc * _ad . SldMaster ; } ;
2021-01-04 16:11:39 +00:00
2023-05-26 09:49:04 +00:00
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
2023-06-10 07:12:37 +00:00
func ( _eee * Presentation ) GetColorBySchemeColor ( schClr _bd . ST_SchemeColorVal ) * _bd . CT_Color { if len ( _eee . _bgfb ) == 0 || len ( _eee . _bfc ) == 0 { return nil ; } ; var _gade _bd . ST_ColorSchemeIndex ; _dbb := _eee . _bgfb [ 0 ] ; _cfba := _dbb . ClrMap ; switch schClr . String ( ) { case "\u0062\u0067\u0031" : _gade = _cfba . Bg1Attr ; case "\u0062\u0067\u0032" : _gade = _cfba . Bg2Attr ; case "\u0074\u0078\u0031" : _gade = _cfba . Tx1Attr ; case "\u0074\u0078\u0032" : _gade = _cfba . Tx2Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0031" : _gade = _cfba . Accent1Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0032" : _gade = _cfba . Accent2Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0033" : _gade = _cfba . Accent3Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0034" : _gade = _cfba . Accent4Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0035" : _gade = _cfba . Accent5Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0036" : _gade = _cfba . Accent6Attr ; case "\u0068\u006c\u0069n\u006b" : _gade = _cfba . HlinkAttr ; case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b" : _gade = _cfba . FolHlinkAttr ; case "\u0064\u006b\u0031" : _gade = _bd . ST_ColorSchemeIndexDk1 ; case "\u0064\u006b\u0032" : _gade = _bd . ST_ColorSchemeIndexDk2 ; case "\u006c\u0074\u0031" : _gade = _bd . ST_ColorSchemeIndexLt1 ; case "\u006c\u0074\u0032" : _gade = _bd . ST_ColorSchemeIndexLt2 ; default : _gade = _bd . ST_ColorSchemeIndexUnset ; } ; _cede := _eee . _bfc [ 0 ] ; _abb := _cede . ThemeElements ; if _abb == nil { return nil ; } ; var _dgd * _bd . CT_Color ; _gdf := _abb . ClrScheme ; switch _gade . String ( ) { case "\u0064\u006b\u0031" : _dgd = _gdf . Dk1 ; case "\u0064\u006b\u0032" : _dgd = _gdf . Dk2 ; case "\u006c\u0074\u0031" : _dgd = _gdf . Lt1 ; case "\u006c\u0074\u0032" : _dgd = _gdf . Lt2 ; case "\u0061c\u0063\u0065\u006e\u0074\u0031" : _dgd = _gdf . Accent1 ; case "\u0061c\u0063\u0065\u006e\u0074\u0032" : _dgd = _gdf . Accent2 ; case "\u0061c\u0063\u0065\u006e\u0074\u0033" : _dgd = _gdf . Accent3 ; case "\u0061c\u0063\u0065\u006e\u0074\u0034" : _dgd = _gdf . Accent4 ; case "\u0061c\u0063\u0065\u006e\u0074\u0035" : _dgd = _gdf . Accent5 ; case "\u0061c\u0063\u0065\u006e\u0074\u0036" : _dgd = _gdf . Accent6 ; case "\u0068\u006c\u0069n\u006b" : _dgd = _gdf . Hlink ; case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b" : _dgd = _gdf . FolHlink ; default : return nil ; } ; return _dgd ; } ; func ( _bag sort2d ) Swap ( i , j int ) { _bag [ i ] , _bag [ j ] = _bag [ j ] , _bag [ i ] } ;
2021-01-04 16:11:39 +00:00
2023-06-10 07:12:37 +00:00
// GetTableStyleById returns *dml.CT_TableStyle by its style id.
func ( _gfb * Presentation ) GetTableStyleById ( id string ) * _bd . CT_TableStyle { _agea := _gfb . _abc . TblStyle ( ) ; for _ , _ggcg := range _agea { if _ggcg . StyleIdAttr == id { return _ggcg ; } ; } ; return nil ; } ; func ( _gc * chart ) X ( ) * _b . ChartSpace { return _gc . _ea } ; func ( _fca * Presentation ) Validate ( ) error { if _cgac := _fca . _gegf . Validate ( ) ; _cgac != nil { return _cgac ; } ; for _cgge , _edac := range _fca . Slides ( ) { if _fdc := _edac . ValidateWithPath ( _dbe . Sprintf ( "\u0053l\u0069\u0064\u0065\u005b\u0025\u0064]" , _cgge ) ) ; _fdc != nil { return _fdc ; } ; } ; for _cdc , _cag := range _fca . _bgfb { if _geeb := _cag . ValidateWithPath ( _dbe . Sprintf ( "\u0053l\u0069d\u0065\u004d\u0061\u0073\u0074\u0065\u0072\u005b\u0025\u0064\u005d" , _cdc ) ) ; _geeb != nil { return _geeb ; } ; } ; for _acaf , _dfdb := range _fca . _gac { if _aadbg := _dfdb . ValidateWithPath ( _dbe . Sprintf ( "\u0053l\u0069d\u0065\u004c\u0061\u0079\u006f\u0075\u0074\u005b\u0025\u0064\u005d" , _acaf ) ) ; _aadbg != nil { return _aadbg ; } ; } ; return nil ; } ;
2021-01-04 16:11:39 +00:00
2023-06-10 07:12:37 +00:00
// AddImageToRels adds an image relationship to a slide without putting image on the slide.
func ( _edf Slide ) AddImageToRels ( img _cea . ImageRef ) string { _eaca := 0 ; for _cdfa , _ggb := range _edf . _dddg . Images { if _ggb == img { _eaca = _cdfa + 1 ; break ; } ; } ; var _ddda string ; for _ffbf , _egce := range _edf . _dddg . Slides ( ) { if _egce . _bda == _edf . _bda { _gfe := _dbe . Sprintf ( "\u002e\u002e\u002f\u006ded\u0069\u0061\u002f\u0069\u006d\u0061\u0067\u0065\u0025\u0064\u002e\u0025\u0073" , _eaca , img . Format ( ) ) ; _fgg := _edf . _dddg . _fabd [ _ffbf ] . AddRelationship ( _gfe , _ca . ImageType ) ; _ddda = _fgg . ID ( ) ; } ; } ; return _ddda ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// Image is an image within a slide.
type Image struct { _ceda * _ad . CT_Picture } ;
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// PresentationProperties contains document specific properties.
type PresentationProperties struct { _dfge * _ad . PresentationPr } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +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 ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// ClearAll completely clears a placeholder. To be useable, at least one
// paragraph must be added after ClearAll via AddParagraph.
func ( _cef PlaceHolder ) ClearAll ( ) { _cef . _eefg . SpPr = _bd . NewCT_ShapeProperties ( ) ; _cef . _eefg . TxBody = _bd . NewCT_TextBody ( ) ; _cef . _eefg . TxBody . LstStyle = _bd . NewCT_TextListStyle ( ) ; } ;
2021-08-23 20:44:48 +00:00
2023-06-10 07:12:37 +00:00
// SlideViewPr returns the SlideViewPr property.
func ( _bfff ViewProperties ) SlideViewPr ( ) * _ad . CT_SlideViewProperties { return _bfff . _ecfe . SlideViewPr } ;
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +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 * _ad . CT_Shape ; GraphicFrame * _ad . CT_GraphicalObjectFrame ; Paragraph * _bd . CT_TextParagraph ; Run * _bd . CT_RegularTextRun ; TableInfo * TableInfo ; _dc [ ] rectangle ; _gca int ; _fc int ; } ;
2022-01-15 21:17:38 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func ( _bafe SlideMaster ) X ( ) * _ad . SldMaster { return _bafe . _faecc } ;
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// ExtractText returns text from a slide as a SlideText object.
func ( _ae * Slide ) ExtractText ( ) * SlideText { _ggg := _fed ( _ae . _dddg , _ae . _bda . CSld . SpTree . Choice , [ ] rectangle { } , [ ] * TextItem { } ) ; _ade . Sort ( sort2d ( _ggg ) ) ; return & SlideText { Items : _ggg } ; } ;
2023-03-01 18:42:44 +00:00
2023-06-10 07:12:37 +00:00
// AddTextBox adds an empty textbox to a slide.
func ( _egbc Slide ) AddTextBox ( ) TextBox { _efcf := _ad . NewCT_GroupShapeChoice ( ) ; _egbc . _bda . CSld . SpTree . Choice = append ( _egbc . _bda . CSld . SpTree . Choice , _efcf ) ; _gagd := _ad . NewCT_Shape ( ) ; _efcf . Sp = append ( _efcf . Sp , _gagd ) ; _gagd . SpPr = _bd . NewCT_ShapeProperties ( ) ; _gagd . SpPr . Xfrm = _bd . NewCT_Transform2D ( ) ; _gagd . SpPr . PrstGeom = _bd . NewCT_PresetGeometry2D ( ) ; _gagd . SpPr . PrstGeom . PrstAttr = _bd . ST_ShapeTypeRect ; _gagd . NvSpPr = _ad . NewCT_ShapeNonVisual ( ) ; _gagd . NvSpPr . CNvSpPr = _bd . NewCT_NonVisualDrawingShapeProps ( ) ; _bed := true ; _gagd . NvSpPr . CNvSpPr . TxBoxAttr = & _bed ; _gagd . TxBody = _bd . NewCT_TextBody ( ) ; _gagd . TxBody . BodyPr = _bd . NewCT_TextBodyProperties ( ) ; _gagd . TxBody . BodyPr . WrapAttr = _bd . ST_TextWrappingTypeSquare ; _gagd . TxBody . BodyPr . SpAutoFit = _bd . NewCT_TextShapeAutofit ( ) ; _baab := TextBox { _gagd } ; _baab . Properties ( ) . SetWidth ( 3 * _a . Inch ) ; _baab . Properties ( ) . SetHeight ( 1 * _a . Inch ) ; _baab . Properties ( ) . SetPosition ( 0 , 0 ) ; return _baab ; } ;
2023-03-01 18:42:44 +00:00
2023-06-10 07:12:37 +00:00
// Type returns the placeholder type
func ( _gea PlaceHolder ) Type ( ) _ad . ST_PlaceholderType { return _gea . _eefg . NvSpPr . NvPr . Ph . TypeAttr } ;
2022-02-25 19:20:45 +00:00
2023-06-10 07:12:37 +00:00
// Text returns text from a presentation as one string separated with line breaks.
func ( _dfd * PresentationText ) Text ( ) string { _gcc := _gb . NewBuffer ( [ ] byte { } ) ; for _ , _fab := range _dfd . Slides { _gcc . WriteString ( _fab . Text ( ) ) ; } ; return _gcc . String ( ) ; } ;
2020-08-31 22:58:25 +00:00
2023-04-15 17:27:31 +00:00
// X returns the inner wrapped XML type.
2023-06-10 07:12:37 +00:00
func ( _bca Slide ) X ( ) * _ad . Sld { return _bca . _bda } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SetWidth sets width of slide screen size with given value in EMU units.
func ( _ebfgd * SlideScreenSize ) SetWidth ( val int32 ) { _ebfgd [ 0 ] = val } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// Properties returns the properties of the TextBox.
func ( _egba TextBox ) Properties ( ) _cdd . ShapeProperties { if _egba . _cgbb . SpPr == nil { _egba . _cgbb . SpPr = _bd . NewCT_ShapeProperties ( ) ; } ; return _cdd . MakeShapeProperties ( _egba . _cgbb . SpPr ) ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SorterViewPr returns the SorterViewPr property.
func ( _bdee ViewProperties ) SorterViewPr ( ) * _ad . CT_SlideSorterViewProperties { return _bdee . _ecfe . SorterViewPr ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// Width returns slide screen size width in EMU units.
func ( _aeef * SlideScreenSize ) Width ( ) int32 { return _aeef [ 0 ] } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// GetSlideLayout returns a slide layout related to the slide.
func ( _cfbd * Slide ) GetSlideLayout ( ) * _ad . SldLayout { for _cfgf , _bgbad := range _cfbd . _dddg . Slides ( ) { if * _cfbd == _bgbad { return _cfbd . _dddg . _gac [ len ( _cfbd . _dddg . Slides ( ) ) - _cfgf - 1 ] ; } ; } ; return nil ; } ;
2022-12-06 11:56:49 +00:00
2023-06-10 07:12:37 +00:00
// NormalViewPr returns the NormalViewPr property.
func ( _ebfb ViewProperties ) NormalViewPr ( ) * _ad . CT_NormalViewProperties { return _ebfb . _ecfe . NormalViewPr ; } ; func _bb ( _afd * Presentation , _gdb * _ad . CT_Shape , _cdfg * _ad . CT_GraphicalObjectFrame , _ggd * TableInfo , _ada * _bd . CT_Transform2D , _eca int , _ege [ ] rectangle , _bcb [ ] * _bd . CT_TextParagraph ) [ ] * TextItem { _aea := [ ] * TextItem { } ; var _dbeb , _dda , _df , _dfb , _gggf , _ga int64 ; _eaf := _ada == nil ; _bbd := 0 ; for _ , _afc := range _bcb { for _ , _ba := range _afc . EG_TextRun { if _caa := _ba . R ; _caa != nil { if ! _eaf { if _ada . Off != nil { if _bea := _ada . Ext ; _bea != nil { _gggf , _ga = _bea . CxAttr , _bea . CyAttr ; } ; if _ffc := _ada . Off . XAttr . ST_CoordinateUnqualified ; _ffc != nil { _dbeb = * _ffc ; _dda = _dbeb + _gggf ; _eaf = true ; } ; if _fcc := _ada . Off . YAttr . ST_CoordinateUnqualified ; _fcc != nil { _df = * _fcc ; _dfb = _df + _ga ; _eaf = true ; } ; } ; } ; _fdda := append ( [ ] rectangle { } , _ege ... ) ; _fdda = append ( _fdda , rectangle { _efe : _dbeb , _af : _dda , _ee : _df , _ab : _dfb } ) ; _aea = append ( _aea , & TextItem { Presentation : _afd , Shape : _gdb , GraphicFrame : _cdfg , TableInfo : _ggd , Paragraph : _afc , Run : _caa , Text : _caa . T , _dc : _fdda , _gca : _eca , _fc : _bbd } ) ; _bbd ++ ; } ; } ; } ; return _aea ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +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 ( _ggab * Presentation ) AddImage ( i _cea . Image ) ( _cea . ImageRef , error ) { _ffce := _cea . MakeImageRef ( i , & _ggab . DocBase , _ggab . _bcgf ) ; if i . Data == nil && i . Path == "" { return _ffce , _fe . 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 _ffce , _fe . 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 _ffce , _fe . 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 != "" { _dffb := _dd . Add ( i . Path ) ; if _dffb != nil { return _ffce , _dffb ; } ; } ; _ggab . Images = append ( _ggab . Images , _ffce ) ; _ggab . ContentTypes . EnsureDefault ( "\u0070\u006e\u0067" , "\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg" ) ; _ggab . ContentTypes . EnsureDefault ( "\u006a\u0070\u0065\u0067" , "\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067" ) ; _ggab . ContentTypes . EnsureDefault ( "\u006a\u0070\u0067" , "\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067" ) ; _ggab . ContentTypes . EnsureDefault ( "\u0077\u006d\u0066" , "i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066" ) ; _ggab . ContentTypes . EnsureDefault ( i . Format , "\u0069\u006d\u0061\u0067\u0065\u002f" + i . Format ) ; return _ffce , nil ; } ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// NewSlideScreenSize returns slide screen size with default MS PowerPoint slide screen size 16x9.
func NewSlideScreenSize ( ) SlideScreenSize { return NewSlideScreenSizeWithValue ( SlideScreenSize16x9 [ 0 ] , SlideScreenSize16x9 [ 1 ] ) ; } ;
2021-04-23 20:00:00 +00:00
2023-05-26 09:49:04 +00:00
// GetLayoutByName retrieves a slide layout given a layout name.
2023-06-10 07:12:37 +00:00
func ( _gefe * Presentation ) GetLayoutByName ( name string ) ( SlideLayout , error ) { for _ , _gcg := range _gefe . _gac { if _gcg . CSld . NameAttr != nil && name == * _gcg . CSld . NameAttr { return SlideLayout { _gcg } , nil ; } ; } ; return SlideLayout { } , _fe . 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" ) ; } ;
2020-06-07 20:13:15 +07:00
2023-06-10 07:12:37 +00:00
// SlideLayout is a layout from which slides can be created.
type SlideLayout struct { _bcfg * _ad . SldLayout } ; type rectangle struct { _efe int64 ; _ee int64 ; _af int64 ; _ab int64 ; } ;
2017-10-03 09:55:27 -05:00
2023-06-10 07:12:37 +00:00
// Save writes the presentation out to a writer in the Zip package format
func ( _ecae * Presentation ) Save ( w _bc . Writer ) error { return _ecae . save ( w , false ) } ;
2017-10-03 09:55:27 -05:00
2023-05-26 09:49:04 +00:00
// SetOffsetX sets horizontal offset of text box in distance units (see measurement package).
2023-06-10 07:12:37 +00:00
func ( _fcf TextBox ) SetOffsetX ( offX float64 ) { _defg := _fcf . getOff ( ) ; _ggge := _a . ToEMU ( offX ) ; _defg . XAttr = _bd . ST_Coordinate { ST_CoordinateUnqualified : & _ggge } ; } ; func ( _dfg sort2d ) Len ( ) int { return len ( _dfg ) } ;
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// AddTable adds a new table to a placeholder.
func ( _bfd PlaceHolder ) AddTable ( ) * _cea . Table { _bfd . Clear ( ) ; _bgdd := _ad . NewCT_GroupShapeChoice ( ) ; _bfd . _egc . CSld . SpTree . Choice = append ( _bfd . _egc . CSld . SpTree . Choice , _bgdd ) ; _dcf := _ad . NewCT_GraphicalObjectFrame ( ) ; _bgdd . GraphicFrame = append ( _bgdd . GraphicFrame , _dcf ) ; _dcf . Xfrm . Off = _bd . NewCT_Point2D ( ) ; _aca := int64 ( 1 ) ; _dcf . Xfrm . Off . XAttr = _bd . ST_Coordinate { ST_CoordinateUnqualified : & _aca } ; _dcf . Xfrm . Off . YAttr = _bd . ST_Coordinate { ST_CoordinateUnqualified : & _aca } ; _ccb := _dcf . Graphic . CT_GraphicalObject . GraphicData ; _ccb . 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" ; _fff := _cea . NewTableWithXfrm ( _dcf . Xfrm ) ; _ccb . Any = append ( _ccb . Any , _fff . X ( ) ) ; return _fff ; } ;
2021-01-04 16:11:39 +00:00
2023-06-10 07:12:37 +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 ( _edaca * Slide ) GetColorBySchemeColor ( schClr _bd . ST_SchemeColorVal ) * _bd . CT_Color { _edaca . ensureClrMap ( ) ; _daa := _edaca . _aeaa ; if _daa == nil { return nil ; } ; var _adcg _bd . ST_ColorSchemeIndex ; switch schClr . String ( ) { case "\u0062\u0067\u0031" : _adcg = _daa . Bg1Attr ; case "\u0062\u0067\u0032" : _adcg = _daa . Bg2Attr ; case "\u0074\u0078\u0031" : _adcg = _daa . Tx1Attr ; case "\u0074\u0078\u0032" : _adcg = _daa . Tx2Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0031" : _adcg = _daa . Accent1Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0032" : _adcg = _daa . Accent2Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0033" : _adcg = _daa . Accent3Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0034" : _adcg = _daa . Accent4Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0035" : _adcg = _daa . Accent5Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0036" : _adcg = _daa . Accent6Attr ; case "\u0068\u006c\u0069n\u006b" : _adcg = _daa . HlinkAttr ; case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b" : _adcg = _daa . FolHlinkAttr ; case "\u0064\u006b\u0031" : _adcg = _bd . ST_ColorSchemeIndexDk1 ; case "\u0064\u006b\u0032" : _adcg = _bd . ST_ColorSchemeIndexDk2 ; case "\u006c\u0074\u0031" : _adcg = _bd . ST_ColorSchemeIndexLt1 ; case "\u006c\u0074\u0032" : _adcg = _bd . ST_ColorSchemeIndexLt2 ; default : _adcg = _bd . ST_ColorSchemeIndexUnset ; } ; _dfbc := _edaca . _dddg . _bfc [ 0 ] ; _dfaa := _dfbc . ThemeElements ; if _dfaa == nil { return nil ; } ; var _bbbe * _bd . CT_Color ; _eddf := _dfaa . ClrScheme ; switch _adcg . String ( ) { case "\u0064\u006b\u0031" : _bbbe = _eddf . Dk1 ; case "\u0064\u006b\u0032" : _bbbe = _eddf . Dk2 ; case "\u006c\u0074\u0031" : _bbbe = _eddf . Lt1 ; case "\u006c\u0074\u0032" : _bbbe = _eddf . Lt2 ; case "\u0061c\u0063\u0065\u006e\u0074\u0031" : _bbbe = _eddf . Accent1 ; case "\u0061c\u0063\u0065\u006e\u0074\u0032" : _bbbe = _eddf . Accent2 ; case "\u0061c\u0063\u0065\u006e\u0074\u0033" : _bbbe = _eddf . Accent3 ; case "\u0061c\u0063\u0065\u006e\u0074\u0034" : _bbbe = _eddf . Accent4 ; case "\u0061c\u0063\u0065\u006e\u0074\u0035" : _bbbe = _eddf . Accent5 ; case "\u0061c\u0063\u0065\u006e\u0074\u0036" : _bbbe = _eddf . Accent6 ; case "\u0068\u006c\u0069n\u006b" : _bbbe = _eddf . Hlink ; case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b" : _bbbe = _eddf . FolHlink ; default : return nil ; } ; return _bbbe ; } ;
2021-01-04 16:11:39 +00:00
2023-06-10 07:12:37 +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 * _bd . CT_Table ; Row * _bd . CT_TableRow ; Cell * _bd . CT_TableCell ; RowIndex int ; ColIndex int ; } ; func ( _dbef * Presentation ) nextSlideID ( ) uint32 { _ffcg := uint32 ( 256 ) ; for _ , _baf := range _dbef . _gegf . SldIdLst . SldId { if _baf . IdAttr >= _ffcg { _ffcg = _baf . IdAttr + 1 ; } ; } ; return _ffcg ; } ;
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// OutlineViewPr returns the OutlineViewPr property.
func ( _beef ViewProperties ) OutlineViewPr ( ) * _ad . CT_OutlineViewProperties { return _beef . _ecfe . OutlineViewPr ; } ;
2021-05-31 16:22:30 +00:00
2023-06-10 07:12:37 +00:00
// PlaceHolders returns all of the content place holders within a given slide.
func ( _bgba Slide ) PlaceHolders ( ) [ ] PlaceHolder { _egef := [ ] PlaceHolder { } ; for _ , _faaa := range _bgba . _bda . CSld . SpTree . Choice { for _ , _fdf := range _faaa . Sp { if _fdf . NvSpPr != nil && _fdf . NvSpPr . NvPr != nil && _fdf . NvSpPr . NvPr . Ph != nil { _egef = append ( _egef , PlaceHolder { _fdf , _bgba . _bda } ) ; } ; } ; } ; return _egef ; } ;
2022-09-02 11:46:53 +00:00
2023-06-10 07:12:37 +00:00
// TextBox is a text box within a slide.
type TextBox struct { _cgbb * _ad . CT_Shape } ;
2022-09-02 11:46:53 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func ( _ebb PlaceHolder ) X ( ) * _ad . CT_Shape { return _ebb . _eefg } ;
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// Size returns slide size value as SlideScreenSize.
func ( _ddde * SlideSize ) Size ( ) SlideScreenSize { return SlideScreenSize { _ddde . _eed . CxAttr , _ddde . _eed . CyAttr } ; } ;
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// SlideLayouts returns the slide layouts defined in the presentation.
func ( _fgeb * Presentation ) SlideLayouts ( ) [ ] SlideLayout { _dfae := [ ] SlideLayout { } ; for _ , _agga := range _fgeb . _gac { _dfae = append ( _dfae , SlideLayout { _agga } ) ; } ; return _dfae ; } ; const _fgd float64 = 500000 ;
2023-05-26 09:49:04 +00:00
2023-06-10 07:12:37 +00:00
// SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template
func ( _gf * Presentation ) SaveAsTemplate ( w _bc . Writer ) error { return _gf . save ( w , true ) } ;
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// RemoveSlide removes a slide from a presentation.
func ( _dgef * Presentation ) RemoveSlide ( s Slide ) error { _gaa := false ; _ffeg := 0 ; for _bafc , _adc := range _dgef . _cfd { if _adc == s . _bda { if _dgef . _gegf . SldIdLst . SldId [ _bafc ] != s . _bbb { return _fe . 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 ( _dgef . _cfd [ _bafc : ] , _dgef . _cfd [ _bafc + 1 : ] ) ; _dgef . _cfd = _dgef . _cfd [ 0 : len ( _dgef . _cfd ) - 1 ] ; copy ( _dgef . _fabd [ _bafc : ] , _dgef . _fabd [ _bafc + 1 : ] ) ; _dgef . _fabd = _dgef . _fabd [ 0 : len ( _dgef . _fabd ) - 1 ] ; copy ( _dgef . _gegf . SldIdLst . SldId [ _bafc : ] , _dgef . _gegf . SldIdLst . SldId [ _bafc + 1 : ] ) ; _dgef . _gegf . SldIdLst . SldId = _dgef . _gegf . SldIdLst . SldId [ 0 : len ( _dgef . _gegf . SldIdLst . SldId ) - 1 ] ; _gaa = true ; _ffeg = _bafc ; } ; } ; if ! _gaa { return _fe . New ( "u\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0073li\u0064\u0065" ) ; } ; _fdbb := _ca . AbsoluteFilename ( _ca . DocTypePresentation , _ca . SlideType , 0 ) ; return _dgef . ContentTypes . RemoveOverrideByIndex ( _fdbb , _ffeg ) ; } ;
2021-09-22 16:41:01 +00:00
2023-05-26 09:49:04 +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.
2023-06-10 07:12:37 +00:00
func ( _gee sort2d ) Less ( i , j int ) bool { _aff , _fb := _gee [ i ] , _gee [ j ] ; _gab , _efa := _aff . _dc , _fb . _dc ; _gbd , _agg := len ( _gab ) - 1 , len ( _efa ) - 1 ; _ccfd , _de := 0 , 0 ; for { _bcd , _fdb , _bfe , _beg , _gef , _ecc , _bbe , _bcg := _gab [ _ccfd ] . _ee , _efa [ _de ] . _ee , _gab [ _ccfd ] . _ab , _efa [ _de ] . _ab , _gab [ _ccfd ] . _efe , _efa [ _de ] . _efe , _gab [ _ccfd ] . _af , _efa [ _de ] . _af ; if _bcd == _fdb || ( ( _gd . Abs ( float64 ( _bcd ) - float64 ( _fdb ) ) < _fgd ) && ( ( _bcd >= _fdb && _bcd <= _beg ) || ( _fdb >= _bcd && _fdb <= _bfe ) ) && ( _bbe < _ecc || _gef > _bcg ) ) { if _gef == _ecc { if _ccfd < _gbd && _de < _agg { _ccfd ++ ; _de ++ ; continue ; } ; if _ccfd >= _gbd && _de >= _agg { break ; } ; return _ccfd >= _gbd ; } else { return _gef < _ecc ; } ; } else { return _bcd < _fdb ; } ; } ; _da , _bgb , _adaf , _dg := _aff . _gca , _fb . _gca , _aff . _fc , _fb . _fc ; if _da == _bgb { return _adaf <= _dg ; } ; return _da < _bgb ; } ; func ( _gggee TextBox ) getOff ( ) * _bd . CT_Point2D { if _gggee . _cgbb . SpPr == nil { _gggee . _cgbb . SpPr = _bd . NewCT_ShapeProperties ( ) ; } ; if _gggee . _cgbb . SpPr . Xfrm == nil { _gggee . _cgbb . SpPr . Xfrm = _bd . NewCT_Transform2D ( ) ; } ; if _gggee . _cgbb . SpPr . Xfrm . Off == nil { _gggee . _cgbb . SpPr . Xfrm . Off = _bd . NewCT_Point2D ( ) ; } ; return _gggee . _cgbb . SpPr . Xfrm . Off ; } ; func ( _edcb * Slide ) ensureClrMap ( ) { if len ( _edcb . _dddg . _bgfb ) == 0 || len ( _edcb . _dddg . _bfc ) == 0 { return ; } ; _adec := _edcb . _dddg . _bgfb [ 0 ] ; _babb := _adec . ClrMap ; if _faad := _edcb . _bda . ClrMapOvr ; _faad != nil { if _efabg := _faad . Choice ; _efabg != nil { if _efabg . MasterClrMapping == nil { if _bdg := _efabg . OverrideClrMapping ; _bdg != nil { if _bdg . Bg1Attr != _bd . ST_ColorSchemeIndexUnset { _babb . Bg1Attr = _bdg . Bg1Attr ; } ; if _bdg . Tx1Attr != _bd . ST_ColorSchemeIndexUnset { _babb . Tx1Attr = _bdg . Tx1Attr ; } ; if _bdg . Bg2Attr != _bd . ST_ColorSchemeIndexUnset { _babb . Bg2Attr = _bdg . Bg2Attr ; } ; if _bdg . Tx2Attr != _bd . ST_ColorSchemeIndexUnset { _babb . Tx2Attr = _bdg . Tx2Attr ; } ; if _bdg . Accent1Attr != _bd . ST_ColorSchemeIndexUnset { _babb . Accent1Attr = _bdg . Accent1Attr ; } ; if _bdg . Accent2Attr != _bd . ST_ColorSchemeIndexUnset { _babb . Accent2Attr = _bdg . Accent2Attr ; } ; if _bdg . Accent3Attr != _bd . ST_ColorSchemeIndexUnset { _babb . Accent3Attr = _bdg . Accent3Attr ; } ; if _bdg . Accent4Attr != _bd . ST_ColorSchemeIndexUnset { _babb . Accent4Attr = _bdg . Accent4Attr ; } ; if _bdg . Accent5Attr != _bd . ST_ColorSchemeIndexUnset { _babb . Accent5Attr = _bdg . Accent5Attr ; } ; if _bdg . Accent6Attr != _bd . ST_ColorSchemeIndexUnset { _babb . Accent6Attr = _bdg . Accent6Attr ; } ; if _bdg . HlinkAttr != _bd . ST_ColorSchemeIndexUnset { _babb . HlinkAttr = _bdg . HlinkAttr ; } ; if _bdg . FolHlinkAttr != _bd . ST_ColorSchemeIndexUnset { _babb . FolHlinkAttr = _bdg . FolHlinkAttr ; } ; } ; } ; } ; } ; _edcb . _aeaa = _babb ; } ;
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// SlideSize represents a slide size of a presentation.
type SlideSize struct { _eed * _ad . CT_SlideSize ; _fbc * Presentation ; } ;
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// Index returns the placeholder index
func ( _fbbg PlaceHolder ) Index ( ) uint32 { if _fbbg . _eefg . NvSpPr . NvPr . Ph . IdxAttr == nil { return 0 ; } ; return * _fbbg . _eefg . NvSpPr . NvPr . Ph . IdxAttr ; } ; var _bbec = false ;
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// Open opens and reads a document from a file (.pptx).
func Open ( filename string ) ( * Presentation , error ) { _dfgf , _fee := _ebc . Open ( filename ) ; if _fee != nil { return nil , _dbe . Errorf ( "e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073" , filename , _fee ) ; } ; defer _dfgf . Close ( ) ; _fbb , _fee := _ebc . Stat ( filename ) ; if _fee != nil { return nil , _dbe . Errorf ( "e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073" , filename , _fee ) ; } ; _ = _fbb ; return Read ( _dfgf , _fbb . Size ( ) ) ; } ;
2021-09-22 16:41:01 +00:00
2023-05-26 09:49:04 +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.
2023-06-10 07:12:37 +00:00
func ( _edc Slide ) GetPlaceholderByIndex ( idx uint32 ) ( PlaceHolder , error ) { for _ , _dfbb := range _edc . _bda . CSld . SpTree . Choice { for _ , _bcae := range _dfbb . Sp { if _bcae . NvSpPr != nil && _bcae . NvSpPr . NvPr != nil && _bcae . NvSpPr . NvPr . Ph != nil { if ( idx == 0 && _bcae . NvSpPr . NvPr . Ph . IdxAttr == nil ) || ( _bcae . NvSpPr . NvPr . Ph . IdxAttr != nil && * _bcae . NvSpPr . NvPr . Ph . IdxAttr == idx ) { return PlaceHolder { _bcae , _edc . _bda } , nil ; } ; } ; } ; } ; return PlaceHolder { } , _fe . 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" ) ; } ;
2022-09-02 11:46:53 +00:00
2023-06-10 07:12:37 +00:00
// ViewProperties contains presentation specific properties.
type ViewProperties struct { _ecfe * _ad . ViewPr } ;
2022-09-02 11:46:53 +00:00
2023-06-10 07:12:37 +00:00
// Presentation is the a presentation base document.
type Presentation struct { _cea . DocBase ; _gegf * _ad . Presentation ; _bcgf _cea . Relationships ; _cfd [ ] * _ad . Sld ; _fabd [ ] _cea . Relationships ; _bgfb [ ] * _ad . SldMaster ; _aadb [ ] _cea . Relationships ; _gac [ ] * _ad . SldLayout ; _bab [ ] _cea . Relationships ; _bfc [ ] * _bd . Theme ; _cgd [ ] _cea . Relationships ; _abc _cea . TableStyles ; _fcb PresentationProperties ; _bgdc ViewProperties ; _fedb [ ] * _bd . CT_Hyperlink ; _cedaa [ ] * chart ; _cde [ ] * _ad . HandoutMaster ; _bee [ ] * _ad . NotesMaster ; _baeg [ ] * _ca . XSDAny ; _dcfa map [ string ] string ; _gcab string ; } ;
2022-12-06 11:56:49 +00:00
2023-06-10 07:12:37 +00:00
// Slide represents a slide of a presentation.
type Slide struct { _bbb * _ad . CT_SlideIdListEntry ; _bda * _ad . Sld ; _dddg * Presentation ; _aeaa * _bd . CT_ColorMapping ; } ;
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// PlaceHolder is a place holder from a slide.
type PlaceHolder struct { _eefg * _ad . CT_Shape ; _egc * _ad . Sld ; } ;
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func ( _eaedf * SlideSize ) X ( ) * _ad . CT_SlideSize { return _eaedf . _eed } ;
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func ( _gedf PresentationProperties ) X ( ) * _ad . PresentationPr { return _gedf . _dfge } ;
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// Remove removes a placeholder from a presentation.
func ( _dadg PlaceHolder ) Remove ( ) error { for _bcdb , _fgc := range _dadg . _egc . CSld . SpTree . Choice { for _ , _cgg := range _fgc . Sp { if _cgg == _dadg . _eefg { copy ( _dadg . _egc . CSld . SpTree . Choice [ _bcdb : ] , _dadg . _egc . CSld . SpTree . Choice [ _bcdb + 1 : ] ) ; _dadg . _egc . CSld . SpTree . Choice = _dadg . _egc . CSld . SpTree . Choice [ 0 : len ( _dadg . _egc . CSld . SpTree . Choice ) - 1 ] ; return nil ; } ; } ; } ; return _fe . 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" ) ; } ;
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +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 ( _bde * Presentation ) AddDefaultSlideWithLayout ( l SlideLayout ) ( Slide , error ) { _cbef , _ece := _bde . AddSlideWithLayout ( l ) ; for _ , _fbd := range _cbef . PlaceHolders ( ) { _fbd . Clear ( ) ; switch _fbd . Type ( ) { case _ad . ST_PlaceholderTypeFtr , _ad . ST_PlaceholderTypeDt , _ad . ST_PlaceholderTypeSldNum : _fbd . Remove ( ) ; } ; } ; return _cbef , _ece ; } ;
2021-11-10 11:45:21 +00:00
2023-06-10 07:12:37 +00:00
// ClrMru returns the ClrMru property.
func ( _gag PresentationProperties ) ClrMru ( ) * _bd . CT_ColorMRU { return _gag . _dfge . ClrMru } ;
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// Text returns text from a slide as one string separated with line breaks.
func ( _ebf * SlideText ) Text ( ) string { _eag := _gb . NewBuffer ( [ ] byte { } ) ; for _ , _dbc := range _ebf . Items { if _dbc . Text != "" { _eag . WriteString ( _dbc . Text ) ; _eag . WriteString ( "\u000a" ) ; } ; } ; return _eag . String ( ) ; } ;
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// Name returns the name of the slide layout.
func ( _gdg SlideLayout ) Name ( ) string { if _gdg . _bcfg . CSld != nil && _gdg . _bcfg . CSld . NameAttr != nil { return * _gdg . _bcfg . CSld . NameAttr ; } ; return "" ; } ;
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// ExtLst returns the ExtLst property.
func ( _bcba ViewProperties ) ExtLst ( ) * _ad . CT_ExtensionList { return _bcba . _ecfe . ExtLst } ;
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func ( _bdc * Presentation ) X ( ) * _ad . Presentation { return _bdc . _gegf } ;
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// GetChartSpaceByRelId returns a *crt.ChartSpace with the associated relation ID in the
// slide.
func ( _edg * Slide ) GetChartSpaceByRelId ( relId string ) * _b . ChartSpace { _fdge := _edg . getSlideRels ( ) ; if ( _fdge == _cea . Relationships { } ) { return nil ; } ; _ffd := _fdge . GetTargetByRelId ( relId ) ; for _ , _gfba := range _edg . _dddg . _cedaa { if _ffd == _gfba . Target ( ) { return _gfba . _ea ; } ; } ; return nil ; } ;
2022-04-09 14:27:46 +00:00
2023-05-26 09:49:04 +00:00
// X returns the inner wrapped XML type.
2023-06-10 07:12:37 +00:00
func ( _fde ViewProperties ) X ( ) * _ad . ViewPr { return _fde . _ecfe } ;
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// ExtLst returns the ExtLst property.
func ( _fdg PresentationProperties ) ExtLst ( ) * _ad . CT_ExtensionList { return _fdg . _dfge . ExtLst } ;
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// HtmlPubPr returns the HtmlPubPr property.
func ( _egeg PresentationProperties ) HtmlPubPr ( ) * _ad . CT_HtmlPublishProperties { return _egeg . _dfge . HtmlPubPr ; } ;
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// LastViewAttr returns the LastViewAttr property.
func ( _bfced ViewProperties ) LastViewAttr ( ) _ad . ST_ViewType { return _bfced . _ecfe . LastViewAttr } ; func ( _eba * Presentation ) saveToFile ( _cgba string , _bgfg bool ) error { _ccbd , _dgee := _ebc . Create ( _cgba ) ; if _dgee != nil { return _dgee ; } ; defer _ccbd . Close ( ) ; return _eba . save ( _ccbd , _bgfg ) ; } ;
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// NotesViewPr returns the NotesViewPr property.
func ( _addc ViewProperties ) NotesViewPr ( ) * _ad . CT_NotesViewProperties { return _addc . _ecfe . NotesViewPr } ;
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// Properties returns the properties of the TextBox.
func ( _dad Image ) Properties ( ) _cdd . ShapeProperties { if _dad . _ceda . SpPr == nil { _dad . _ceda . SpPr = _bd . NewCT_ShapeProperties ( ) ; } ; return _cdd . MakeShapeProperties ( _dad . _ceda . SpPr ) ; } ;
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// Slides returns the slides in the presentation.
func ( _agf * Presentation ) Slides ( ) [ ] Slide { _dea := [ ] Slide { } ; for _adg , _bga := range _agf . _cfd { _dea = append ( _dea , Slide { _agf . _gegf . SldIdLst . SldId [ _adg ] , _bga , _agf , nil } ) ; } ; return _dea ; } ; type chart struct { _ea * _b . ChartSpace ; _cdf string ; _ac string ; } ;
// SlideSize returns presentation slide size.
func ( _bccc * Presentation ) SlideSize ( ) SlideSize { if _bccc . _gegf . SldSz == nil { _bccc . _gegf . SldSz = _ad . NewCT_SlideSize ( ) ; } ; return SlideSize { _bccc . _gegf . SldSz , _bccc } ; } ; func _bfed ( _eagf [ ] * _ad . CT_GroupShapeChoice ) [ ] * _ad . CT_GroupShapeChoice { var _ecg [ ] * _ad . CT_GroupShapeChoice ; for _ , _faae := range _eagf { if len ( _faae . Pic ) == 0 { _ecg = append ( _ecg , _faae ) ; } ; } ; return _ecg ; } ;
// ShowPr returns the ShowPr property.
func ( _efg PresentationProperties ) ShowPr ( ) * _ad . CT_ShowProperties { return _efg . _dfge . ShowPr } ; func _cbb ( ) * Presentation { _ead := & Presentation { _gegf : _ad . NewPresentation ( ) } ; _ead . _gegf . SldIdLst = _ad . NewCT_SlideIdList ( ) ; _ead . _gegf . ConformanceAttr = _eb . ST_ConformanceClassTransitional ; _ead . AppProperties = _cea . NewAppProperties ( ) ; _ead . CoreProperties = _cea . NewCoreProperties ( ) ; _ead . _abc = _cea . NewTableStyles ( ) ; _ead . ContentTypes = _cea . NewContentTypes ( ) ; _ead . Rels = _cea . NewRelationships ( ) ; _ead . _bcgf = _cea . NewRelationships ( ) ; _ead . _fcb = NewPresentationProperties ( ) ; _ead . _bgdc = NewViewProperties ( ) ; _ead . _dcfa = map [ string ] string { } ; return _ead ; } ;
// 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 ( _afb PlaceHolder ) Clear ( ) { _afb . ClearAll ( ) ; _ecf := _bd . NewCT_TextParagraph ( ) ; _afb . _eefg . TxBody . P = [ ] * _bd . CT_TextParagraph { _ecf } ; _ecf . EndParaRPr = _bd . NewCT_TextCharacterProperties ( ) ; _ecf . EndParaRPr . LangAttr = _ca . String ( "\u0065\u006e\u002dU\u0053" ) ; } ;
// SetHeight sets height of slide screen size with given value in EMU units.
func ( _fegf * SlideScreenSize ) SetHeight ( val int32 ) { _fegf [ 1 ] = val } ;
// ValidateWithPath validates the slide passing path informaton for a better
// error message.
func ( _gedg Slide ) ValidateWithPath ( path string ) error { if _bafd := _gedg . _bda . ValidateWithPath ( path ) ; _bafd != nil { return _bafd ; } ; for _ , _caag := range _gedg . _bda . CSld . SpTree . Choice { for _ , _bdec := range _caag . Sp { if _bdec . TxBody != nil { if len ( _bdec . TxBody . P ) == 0 { return _fe . 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 ( _gfg * Presentation ) save ( _ffaa _bc . Writer , _bdda bool ) error { const _cadc = "\u0050\u0072\u0065\u0073en\u0074\u0061\u0074\u0069\u006f\u006e\u003a\u0070\u002e\u0053\u0061\u0076\u0065" ; if _gcb := _gfg . _gegf . Validate ( ) ; _gcb != nil { _ef . 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" , _gcb ) ; } ; if ! _cc . GetLicenseKey ( ) . IsLicensed ( ) && ! _bbec { _dbe . 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" ) ; _dbe . 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 _fe . 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 ( _gfg . _gcab ) == 0 { _cfed , _adf := _cc . GenRefId ( "\u0070\u0077" ) ; if _adf != nil { _ef . Log . Error ( "\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v" , _adf ) ; return _adf ; } ; _gfg . _gcab = _cfed ; } ; if _dff := _cc . Track ( _gfg . _gcab , _cadc ) ; _dff != nil { _ef . Log . Error ( "\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v" , _dff ) ; return _dff ; } ; if _bdda { _gfg . 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" ) ; _gfg . 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 { _gfg . 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" ) ; _gfg . 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 \ u007