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 ( ) ; } ;
2020-06-07 20:13:15 +07:00
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 ; } ;
2017-10-03 09:55:27 -05: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 ( _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 ; } ;
2017-10-03 09:55:27 -05:00
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 ; } ;