unioffice/presentation/presentation.go
2021-09-22 16:41:01 +00:00

322 lines
75 KiB
Go

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package presentation ;import (_fbe "archive/zip";_bcc "bytes";_cg "encoding/xml";_ega "errors";_dc "fmt";_ce "github.com/unidoc/unioffice";_a "github.com/unidoc/unioffice/common";_eg "github.com/unidoc/unioffice/common/tempstorage";_fad "github.com/unidoc/unioffice/drawing";_ea "github.com/unidoc/unioffice/internal/license";_bc "github.com/unidoc/unioffice/measurement";_af "github.com/unidoc/unioffice/schema/soo/dml";_e "github.com/unidoc/unioffice/schema/soo/dml/chart";_d "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_cd "github.com/unidoc/unioffice/schema/soo/pkg/relationships";_ae "github.com/unidoc/unioffice/schema/soo/pml";_c "github.com/unidoc/unioffice/zippkg";_ga "image";_fb "image/jpeg";_fa "io";_cb "log";_fg "math";_ba "os";_df "path";_ab "sort";_f "strconv";_g "strings";);
// 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 (_fgg sort2d )Less (i ,j int )bool {_ceg ,_gab :=_fgg [i ],_fgg [j ];_fae ,_bbg :=_ceg ._ge ,_gab ._ge ;_gf ,_ggb :=len (_fae )-1,len (_bbg )-1;_afe ,_bde :=0,0;for {_daf ,_acg ,_bab ,_afc ,_ade ,_fbf ,_aec ,_deb :=_fae [_afe ]._gg ,_bbg [_bde ]._gg ,_fae [_afe ]._ac ,_bbg [_bde ]._ac ,_fae [_afe ]._dd ,_bbg [_bde ]._dd ,_fae [_afe ]._eb ,_bbg [_bde ]._eb ;if _daf ==_acg ||((_fg .Abs (float64 (_daf )-float64 (_acg ))< _cbf )&&((_daf >=_acg &&_daf <=_afc )||(_acg >=_daf &&_acg <=_bab ))&&(_aec < _fbf ||_ade > _deb )){if _ade ==_fbf {if _afe < _gf &&_bde < _ggb {_afe ++;_bde ++;continue ;};if _afe >=_gf &&_bde >=_ggb {break ;};return _afe >=_gf ;}else {return _ade < _fbf ;};}else {return _daf < _acg ;};};_bga ,_bdd ,_bdf ,_ee :=_ceg ._fab ,_gab ._fab ,_ceg ._ed ,_gab ._ed ;if _bga ==_bdd {return _bdf <=_ee ;};return _bga < _bdd ;};
// ExtractText returns text from a slide as a SlideText object.
func (_ceb *Slide )ExtractText ()*SlideText {_ebc :=_eab (_ceb ._gbce ,_ceb ._abaa .CSld .SpTree .Choice ,[]rectangle {},[]*TextItem {});_ab .Sort (sort2d (_ebc ));return &SlideText {Items :_ebc };};
// OpenTemplate opens a template file.
func OpenTemplate (fn string )(*Presentation ,error ){_gb ,_gfe :=Open (fn );if _gfe !=nil {return nil ,_gfe ;};return _gb ,nil ;};
// 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 (_cba PlaceHolder )Clear (){_cba .ClearAll ();_fcg :=_af .NewCT_TextParagraph ();_cba ._ddg .TxBody .P =[]*_af .CT_TextParagraph {_fcg };_fcg .EndParaRPr =_af .NewCT_TextCharacterProperties ();_fcg .EndParaRPr .LangAttr =_ce .String ("\u0065\u006e\u002dU\u0053");};
// Slides returns the slides in the presentation.
func (_adeb *Presentation )Slides ()[]Slide {_aff :=[]Slide {};for _edc ,_cbe :=range _adeb ._ded {_aff =append (_aff ,Slide {_adeb ._fbaa .SldIdLst .SldId [_edc ],_cbe ,_adeb ,nil });};return _aff ;};
// PresentationText is an array of extracted text items which has some methods for representing extracted text.
type PresentationText struct{Slides []*SlideText ;};
// ExtractText returns text from a presentation as a PresentationText object.
func (_cdb *Presentation )ExtractText ()*PresentationText {_bd :=[]*SlideText {};for _ ,_bbd :=range _cdb .Slides (){_fe :=_bbd .ExtractText ();if _fe !=nil {_bd =append (_bd ,_fe );};};return &PresentationText {Slides :_bd };};
// Name returns the name of the slide layout.
func (_dcea SlideLayout )Name ()string {if _dcea ._acgg .CSld !=nil &&_dcea ._acgg .CSld .NameAttr !=nil {return *_dcea ._acgg .CSld .NameAttr ;};return "";};
// X returns the inner wrapped XML type.
func (_eca PlaceHolder )X ()*_ae .CT_Shape {return _eca ._ddg };
// X returns the inner wrapped XML type.
func (_ceca ViewProperties )X ()*_ae .ViewPr {return _ceca ._fccd };
// WebPr returns the WebPr property.
func (_efb PresentationProperties )WebPr ()*_ae .CT_WebProperties {return _efb ._gbc .WebPr };
// ClrMru returns the ClrMru property.
func (_gfg PresentationProperties )ClrMru ()*_af .CT_ColorMRU {return _gfg ._gbc .ClrMru };
// SlideLayouts returns the slide layouts defined in the presentation.
func (_gebg *Presentation )SlideLayouts ()[]SlideLayout {_eeb :=[]SlideLayout {};for _ ,_gfgf :=range _gebg ._gaba {_eeb =append (_eeb ,SlideLayout {_gfgf });};return _eeb ;};
// PlaceHolders returns all of the content place holders within a given slide.
func (_gedg Slide )PlaceHolders ()[]PlaceHolder {_ead :=[]PlaceHolder {};for _ ,_agdeb :=range _gedg ._abaa .CSld .SpTree .Choice {for _ ,_fbbb :=range _agdeb .Sp {if _fbbb .NvSpPr !=nil &&_fbbb .NvSpPr .NvPr !=nil &&_fbbb .NvSpPr .NvPr .Ph !=nil {_ead =append (_ead ,PlaceHolder {_fbbb ,_gedg ._abaa });};};};return _ead ;};
// NotesTextViewPr returns the NotesTextViewPr property.
func (_gfaac ViewProperties )NotesTextViewPr ()*_ae .CT_NotesTextViewProperties {return _gfaac ._fccd .NotesTextViewPr ;};
// ShowCommentsAttr returns the WebPr property.
func (_gcgg ViewProperties )ShowCommentsAttr ()*bool {return _gcgg ._fccd .ShowCommentsAttr };
// Paragraphs returns the paragraphs defined in the placeholder.
func (_fbd PlaceHolder )Paragraphs ()[]_fad .Paragraph {_fdc :=[]_fad .Paragraph {};for _ ,_eeg :=range _fbd ._ddg .TxBody .P {_fdc =append (_fdc ,_fad .MakeParagraph (_eeg ));};return _fdc ;};
// GridSpacing returns the GridSpacing property.
func (_cabf ViewProperties )GridSpacing ()*_af .CT_PositiveSize2D {return _cabf ._fccd .GridSpacing };
// AddParagraph adds a paragraph to the text box
func (_agcce TextBox )AddParagraph ()_fad .Paragraph {_agdc :=_af .NewCT_TextParagraph ();_agcce ._dbeg .TxBody .P =append (_agcce ._dbeg .TxBody .P ,_agdc );return _fad .MakeParagraph (_agdc );};
// 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 (_bfcd *Presentation )AddImage (i _a .Image )(_a .ImageRef ,error ){_adca :=_a .MakeImageRef (i ,&_bfcd .DocBase ,_bfcd ._cgb );if i .Data ==nil &&i .Path ==""{return _adca ,_ega .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 _adca ,_ega .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 _adca ,_ega .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 !=""{_bbfg :=_eg .Add (i .Path );if _bbfg !=nil {return _adca ,_bbfg ;};};_bfcd .Images =append (_bfcd .Images ,_adca );_bfcd .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_bfcd .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_bfcd .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_bfcd .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");_bfcd .ContentTypes .EnsureDefault (i .Format ,"\u0069\u006d\u0061\u0067\u0065\u002f"+i .Format );return _adca ,nil ;};
// PresentationProperties contains document specific properties.
type PresentationProperties struct{_gbc *_ae .PresentationPr };
// Read reads a document from an io.Reader.
func Read (r _fa .ReaderAt ,size int64 )(*Presentation ,error ){const _bec ="\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e:\u0052\u0065\u0061\u0064";if !_ea .GetLicenseKey ().IsLicensed ()&&!_gfed {_dc .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");_dc .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 ,_ega .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");};_dcbf :=_gac ();_cafe ,_aagf :=_ea .GenRefId ("\u0070\u0072");if _aagf !=nil {_ce .Log ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0025\u0076\u000a",_aagf );return nil ,_aagf ;};_dcbf ._bfc =_cafe ;if _dbgg :=_ea .Track (_dcbf ._bfc ,_bec );_dbgg !=nil {_dc .Printf ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0025\u0076\u000a",_dbgg );return nil ,_dbgg ;};_gfce ,_aagf :=_eg .TempDir ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065-\u0070\u0070\u0074\u0078");if _aagf !=nil {return nil ,_aagf ;};_dcbf .TmpPath =_gfce ;_gbcf ,_aagf :=_fbe .NewReader (r ,size );if _aagf !=nil {return nil ,_dc .Errorf ("\u0070a\u0072s\u0069\u006e\u0067\u0020\u007a\u0069\u0070\u003a\u0020\u0025\u0073",_aagf );};_fgde :=[]*_fbe .File {};_fgde =append (_fgde ,_gbcf .File ...);_cbacf :=false ;for _ ,_bgbg :=range _fgde {if _bgbg .FileHeader .Name =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_cbacf =true ;break ;};};if _cbacf {_dcbf .CreateCustomProperties ();};_agad :=_c .DecodeMap {};_agad .SetOnNewRelationshipFunc (_dcbf .onNewRelationship );_agad .AddTarget (_ce .ContentTypesFilename ,_dcbf .ContentTypes .X (),"",0);_agad .AddTarget (_ce .BaseRelsFilename ,_dcbf .Rels .X (),"",0);if _acb :=_agad .Decode (_fgde );_acb !=nil {return nil ,_acb ;};for _ ,_cgab :=range _fgde {if _cgab ==nil {continue ;};if _adbd :=_dcbf .AddExtraFileFromZip (_cgab );_adbd !=nil {return nil ,_adbd ;};};if _cbacf {_faff :=false ;for _ ,_dbf :=range _dcbf .Rels .X ().Relationship {if _dbf .TargetAttr =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_faff =true ;break ;};};if !_faff {_dcbf .AddCustomRelationships ();};};return _dcbf ,nil ;};func (_bdg *Presentation )saveToFile (_bfee string ,_fggg bool )error {_ada ,_abfc :=_ba .Create (_bfee );if _abfc !=nil {return _abfc ;};defer _ada .Close ();return _bdg .save (_ada ,_fggg );};
// Text returns text from a slide as one string separated with line breaks.
func (_ecd *SlideText )Text ()string {_cgf :=_bcc .NewBuffer ([]byte {});for _ ,_ecg :=range _ecd .Items {if _ecg .Text !=""{_cgf .WriteString (_ecg .Text );_cgf .WriteString ("\u000a");};};return _cgf .String ();};
// Type returns the type of the slide layout.
func (_acbe SlideLayout )Type ()_ae .ST_SlideLayoutType {return _acbe ._acgg .TypeAttr };
// PlaceHolder is a place holder from a slide.
type PlaceHolder struct{_ddg *_ae .CT_Shape ;_dcb *_ae .Sld ;};func (_fga *Presentation )onNewRelationship (_gdd *_c .DecodeMap ,_ebbc ,_bcf string ,_ecbb []*_fbe .File ,_def *_cd .Relationship ,_fbee _c .Target )error {_age :=_ce .DocTypePresentation ;switch _bcf {case _ce .OfficeDocumentType :_fga ._fbaa =_ae .NewPresentation ();_gdd .AddTarget (_ebbc ,_fga ._fbaa ,_bcf ,0);_gdd .AddTarget (_c .RelationsPathFor (_ebbc ),_fga ._cgb .X (),_bcf ,0);_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,0);case _ce .CorePropertiesType :_gdd .AddTarget (_ebbc ,_fga .CoreProperties .X (),_bcf ,0);_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,0);case _ce .CustomPropertiesType :_gdd .AddTarget (_ebbc ,_fga .CustomProperties .X (),_bcf ,0);_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,0);case _ce .PresentationPropertiesType :_gdd .AddTarget (_ebbc ,_fga ._eed .X (),_bcf ,0);_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,0);case _ce .ViewPropertiesType :_gdd .AddTarget (_ebbc ,_fga ._bcg .X (),_bcf ,0);_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,0);case _ce .TableStylesType :_gdd .AddTarget (_ebbc ,_fga ._fgd .X (),_bcf ,0);_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,0);case _ce .HyperLinkType :_cae :=_af .NewCT_Hyperlink ();_aca :=uint32 (len (_fga ._acd ));_gdd .AddTarget (_ebbc ,_cae ,_bcf ,_aca );_fga ._acd =append (_fga ._acd ,_cae );case _ce .CustomXMLType :_gde :=&_ce .XSDAny {};_gefe :=uint32 (len (_fga ._efbe ));_gdd .AddTarget (_ebbc ,_gde ,_bcf ,_gefe );_fga ._efbe =append (_fga ._efbe ,_gde );_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,len (_fga ._efbe ));case _ce .ChartType :_gcaa :=chart {_ff :_e .NewChartSpace ()};_agbf :=uint32 (len (_fga ._dcg ));_gdd .AddTarget (_ebbc ,_gcaa ._ff ,_bcf ,_agbf );_fga ._dcg =append (_fga ._dcg ,&_gcaa );_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,len (_fga ._dcg ));_gcaa ._gc =_def .TargetAttr ;case _ce .HandoutMasterType :_bgc :=_ae .NewHandoutMaster ();_fbaf :=uint32 (len (_fga ._bbcf ));_gdd .AddTarget (_ebbc ,_bgc ,_bcf ,_fbaf );_fga ._bbcf =append (_fga ._bbcf ,_bgc );_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,len (_fga ._bbcf ));case _ce .NotesMasterType :_ggga :=_ae .NewNotesMaster ();_dbb :=uint32 (len (_fga ._fcdd ));_gdd .AddTarget (_ebbc ,_ggga ,_bcf ,_dbb );_fga ._fcdd =append (_fga ._fcdd ,_ggga );_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,len (_fga ._fcdd ));case _ce .ExtendedPropertiesType :_gdd .AddTarget (_ebbc ,_fga .AppProperties .X (),_bcf ,0);_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,0);case _ce .SlideType :_bbfc :=_ae .NewSld ();_fga ._ded =append (_fga ._ded ,_bbfc );_gdd .AddTarget (_ebbc ,_bbfc ,_bcf ,uint32 (len (_fga ._ded )));_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,len (_fga ._ded ));_ede :=_a .NewRelationships ();_gdd .AddTarget (_c .RelationsPathFor (_ebbc ),_ede .X (),_bcf ,0);_fga ._dcf =append (_fga ._dcf ,_ede );case _ce .SlideMasterType :_dba :=_ae .NewSldMaster ();if !_gdd .AddTarget (_ebbc ,_dba ,_bcf ,uint32 (len (_fga ._bccd )+1)){return nil ;};_fga ._bccd =append (_fga ._bccd ,_dba );_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,len (_fga ._bccd ));_dbbb :=_a .NewRelationships ();_gdd .AddTarget (_c .RelationsPathFor (_ebbc ),_dbbb .X (),_bcf ,0);_fga ._bbde =append (_fga ._bbde ,_dbbb );case _ce .SlideLayoutType :_bbfdg :=_ae .NewSldLayout ();if !_gdd .AddTarget (_ebbc ,_bbfdg ,_bcf ,uint32 (len (_fga ._gaba )+1)){return nil ;};_fga ._gaba =append (_fga ._gaba ,_bbfdg );_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,len (_fga ._gaba ));_bacf :=_a .NewRelationships ();_gdd .AddTarget (_c .RelationsPathFor (_ebbc ),_bacf .X (),_bcf ,0);_fga ._cgd =append (_fga ._cgd ,_bacf );case _ce .ThumbnailType :for _aab ,_aaed :=range _ecbb {if _aaed ==nil {continue ;};if _aaed .Name ==_ebbc {_fafg ,_fgcba :=_aaed .Open ();if _fgcba !=nil {return _dc .Errorf ("e\u0072\u0072\u006f\u0072\u0020\u0072e\u0061\u0064\u0069\u006e\u0067\u0020\u0074\u0068\u0075m\u0062\u006e\u0061i\u006c:\u0020\u0025\u0073",_fgcba );};_fga .Thumbnail ,_ ,_fgcba =_ga .Decode (_fafg );_fafg .Close ();if _fgcba !=nil {return _dc .Errorf ("\u0065\u0072\u0072\u006fr\u0020\u0064\u0065\u0063\u006f\u0064\u0069\u006e\u0067\u0020t\u0068u\u006d\u0062\u006e\u0061\u0069\u006c\u003a \u0025\u0073",_fgcba );};_ecbb [_aab ]=nil ;};};case _ce .ThemeType :_cad :=_af .NewTheme ();if !_gdd .AddTarget (_ebbc ,_cad ,_bcf ,uint32 (len (_fga ._geaf )+1)){return nil ;};_fga ._geaf =append (_fga ._geaf ,_cad );_def .TargetAttr =_ce .RelativeFilename (_age ,_fbee .Typ ,_bcf ,len (_fga ._geaf ));_cged :=_a .NewRelationships ();_gdd .AddTarget (_c .RelationsPathFor (_ebbc ),_cged .X (),_bcf ,0);_fga ._ggc =append (_fga ._ggc ,_cged );case _ce .ImageType :_ebbc =_df .Clean (_ebbc );if _bfea ,_dfbf :=_fga ._bdef [_ebbc ];_dfbf {_def .TargetAttr =_bfea ;return nil ;};_adfe :="";for _ccag ,_ffd :=range _ecbb {if _ffd ==nil {continue ;};if _ffd .Name ==_ebbc {_fde ,_bddb :=_c .ExtractToDiskTmp (_ffd ,_fga .TmpPath );if _bddb !=nil {return _bddb ;};_agf ,_bddb :=_a .ImageFromStorage (_fde );if _bddb !=nil {return _bddb ;};_adfe =_agf .Format ;_cdbb :=_a .MakeImageRef (_agf ,&_fga .DocBase ,_fga ._cgb );_cdbb .SetTarget ("\u002e\u002e\u002f"+_ebbc [4:]);_fga .Images =append (_fga .Images ,_cdbb );_ecbb [_ccag ]=nil ;_gdd .RecordIndex (_ebbc ,len (_fga .Images ));break ;};};_acga :=_gdd .IndexFor (_ebbc );_def .TargetAttr =_ce .RelativeImageFilename (_age ,_fbee .Typ ,_bcf ,_acga ,_adfe );_fga ._bdef [_ebbc ]=_def .TargetAttr ;default:_ce .Log ("\u0075\u006e\u0073\u0075\u0070p\u006f\u0072\u0074\u0065\u0064\u0020\u0072\u0065\u006c\u0061\u0074\u0069\u006fn\u0073\u0068\u0069\u0070\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0073\u0020\u0074\u0067\u0074\u003a\u0020\u0025\u0073",_bcf ,_ebbc );};return nil ;};
// Text returns text from a presentation as one string separated with line breaks.
func (_deg *PresentationText )Text ()string {_cebd :=_bcc .NewBuffer ([]byte {});for _ ,_cec :=range _deg .Slides {_cebd .WriteString (_cec .Text ());};return _cebd .String ();};
// SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template
func (_dbe *Presentation )SaveAsTemplate (w _fa .Writer )error {return _dbe .save (w ,true )};
// OutlineViewPr returns the OutlineViewPr property.
func (_aeae ViewProperties )OutlineViewPr ()*_ae .CT_OutlineViewProperties {return _aeae ._fccd .OutlineViewPr ;};
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// document.
func (_fcbc *Presentation )GetImageByRelID (relID string )(_a .ImageRef ,bool ){for _ ,_cecd :=range _fcbc .Images {if _cecd .RelID ()==relID {return _cecd ,true ;};};return _a .ImageRef {},false ;};
// Presentation returns a slide's presentation.
func (_efbg Slide )Presentation ()*Presentation {return _efbg ._gbce };
// AddImageToRels adds an image relationship to a slide without putting image on the slide.
func (_agcbf Slide )AddImageToRels (img _a .ImageRef )string {_feab :=0;for _edbc ,_bcb :=range _agcbf ._gbce .Images {if _bcb ==img {_feab =_edbc +1;break ;};};var _egf string ;for _dbce ,_dgf :=range _agcbf ._gbce .Slides (){if _dgf ._abaa ==_agcbf ._abaa {_dbfb :=_dc .Sprintf ("\u002e\u002e\u002f\u006ded\u0069\u0061\u002f\u0069\u006d\u0061\u0067\u0065\u0025\u0064\u002e\u0025\u0073",_feab ,img .Format ());_gbcff :=_agcbf ._gbce ._dcf [_dbce ].AddRelationship (_dbfb ,_ce .ImageType );_egf =_gbcff .ID ();};};return _egf ;};
// Save writes the presentation out to a writer in the Zip package format
func (_faba *Presentation )Save (w _fa .Writer )error {return _faba .save (w ,false )};
// ClearAll completely clears a placeholder. To be useable, at least one
// paragraph must be added after ClearAll via AddParagraph.
func (_dga PlaceHolder )ClearAll (){_dga ._ddg .SpPr =_af .NewCT_ShapeProperties ();_dga ._ddg .TxBody =_af .NewCT_TextBody ();_dga ._ddg .TxBody .LstStyle =_af .NewCT_TextListStyle ();};
// SetOffsetY sets vertical offset of text box in distance units (see measurement package).
func (_gfaa TextBox )SetOffsetY (offY float64 ){_fbba :=_gfaa .getOff ();_feff :=_bc .ToEMU (offY );_fbba .YAttr =_af .ST_Coordinate {ST_CoordinateUnqualified :&_feff };};
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// slide.
func (_aad *Slide )GetImageByRelID (relID string )(_a .ImageRef ,bool ){_fgfd :=_aad .getSlideRels ();if (_fgfd ==_a .Relationships {}){return _a .ImageRef {},false ;};var _eebg string ;for _ ,_dfgf :=range _fgfd .X ().Relationship {if _dfgf .IdAttr ==relID {_eebg =_dfgf .TargetAttr ;break ;};};for _ ,_agcc :=range _aad ._gbce .Images {if _agcc .Target ()==_eebg {return _agcc ,true ;};};return _a .ImageRef {},false ;};
// SaveToFile writes the Presentation out to a file.
func (_cccc *Presentation )SaveToFile (path string )error {return _cccc .saveToFile (path ,false )};
// X returns the inner wrapped XML type.
func (_ebca PresentationProperties )X ()*_ae .PresentationPr {return _ebca ._gbc };func _eab (_gge *Presentation ,_ag []*_ae .CT_GroupShapeChoice ,_bbdg []rectangle ,_cf []*TextItem )[]*TextItem {for _ ,_ec :=range _ag {_de :=append ([]rectangle {},_bbdg ...);for _ ,_dfa :=range _ec .Sp {_cf =append (_cf ,_abe (_gge ,_dfa ,nil ,nil ,_dfa .SpPr .Xfrm ,0,_bbdg ,_dfa .TxBody .P )...);};for _ ,_cc :=range _ec .GraphicFrame {if _cc !=nil &&_cc .Graphic !=nil &&_cc .Graphic .GraphicData !=nil {_be :=_cc .Xfrm ;for _ ,_bf :=range _cc .Graphic .GraphicData .Any {if _bda ,_cfd :=_bf .(*_af .Tbl );_cfd {_feg :=&_bda .CT_Table ;_ffc :=0;for _bgf ,_ggf :=range _bda .Tr {for _bbf ,_fgc :=range _ggf .Tc {_dcc :=&TableInfo {Table :_feg ,Row :_ggf ,Cell :_fgc ,RowIndex :_bgf ,ColIndex :_bbf };_cf =append (_cf ,_abe (_gge ,nil ,_cc ,_dcc ,_be ,_ffc ,_bbdg ,_fgc .TxBody .P )...);_ffc ++;};};};};};};for _ ,_abf :=range _ec .GrpSp {if _abf .GrpSpPr !=nil {_ffg :=_abf .GrpSpPr .Xfrm ;var _bac ,_dfb int64 ;if _ffg .Off !=nil {_edg ,_acc :=_ffg .Off .XAttr .ST_CoordinateUnqualified ,_ffg .Off .YAttr .ST_CoordinateUnqualified ;if _edg !=nil &&_acc !=nil {if _fgb :=_ffg .Ext ;_fgb !=nil {_bac ,_dfb =_fgb .CxAttr ,_fgb .CyAttr ;};_de =append (_de ,rectangle {_dd :*_edg ,_gg :*_acc ,_eb :*_edg +_bac ,_ac :*_acc +_dfb });};};};_cf =_eab (_gge ,_abf .Choice ,_de ,_cf );};};return _cf ;};
// Open opens and reads a document from a file (.pptx).
func Open (filename string )(*Presentation ,error ){_edb ,_cgfg :=_ba .Open (filename );if _cgfg !=nil {return nil ,_dc .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_cgfg );};defer _edb .Close ();_cgc ,_cgfg :=_ba .Stat (filename );if _cgfg !=nil {return nil ,_dc .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_cgfg );};_ =_cgc ;return Read (_edb ,_cgc .Size ());};
// HtmlPubPr returns the HtmlPubPr property.
func (_eee PresentationProperties )HtmlPubPr ()*_ae .CT_HtmlPublishProperties {return _eee ._gbc .HtmlPubPr ;};
// 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 (_fca PlaceHolder )SetText (text string ){_fca .Clear ();_eced :=_af .NewEG_TextRun ();_eced .R =_af .NewCT_RegularTextRun ();_eced .R .T =text ;if len (_fca ._ddg .TxBody .P )==0{_fca ._ddg .TxBody .P =append (_fca ._ddg .TxBody .P ,_af .NewCT_TextParagraph ());};_fca ._ddg .TxBody .P [0].EG_TextRun =nil ;_fca ._ddg .TxBody .P [0].EG_TextRun =append (_fca ._ddg .TxBody .P [0].EG_TextRun ,_eced );};
// ViewProperties contains presentation specific properties.
type ViewProperties struct{_fccd *_ae .ViewPr };
// AddSlide adds a new slide to the presentation.
func (_ca *Presentation )AddSlide ()Slide {_bca :=_ae .NewCT_SlideIdListEntry ();_bca .IdAttr =_ca .nextSlideID ();_ca ._fbaa .SldIdLst .SldId =append (_ca ._fbaa .SldIdLst .SldId ,_bca );_bdec :=_ae .NewSld ();_bdec .CSld .SpTree .NvGrpSpPr .CNvPr .IdAttr =1;_bdec .CSld .SpTree .GrpSpPr .Xfrm =_af .NewCT_GroupTransform2D ();_bdec .CSld .SpTree .GrpSpPr .Xfrm .Off =_af .NewCT_Point2D ();_bdec .CSld .SpTree .GrpSpPr .Xfrm .Off .XAttr .ST_CoordinateUnqualified =_ce .Int64 (0);_bdec .CSld .SpTree .GrpSpPr .Xfrm .Off .YAttr .ST_CoordinateUnqualified =_ce .Int64 (0);_bdec .CSld .SpTree .GrpSpPr .Xfrm .Ext =_af .NewCT_PositiveSize2D ();_bdec .CSld .SpTree .GrpSpPr .Xfrm .Ext .CxAttr =int64 (0*_bc .Point );_bdec .CSld .SpTree .GrpSpPr .Xfrm .Ext .CyAttr =int64 (0*_bc .Point );_bdec .CSld .SpTree .GrpSpPr .Xfrm .ChOff =_bdec .CSld .SpTree .GrpSpPr .Xfrm .Off ;_bdec .CSld .SpTree .GrpSpPr .Xfrm .ChExt =_bdec .CSld .SpTree .GrpSpPr .Xfrm .Ext ;_ca ._ded =append (_ca ._ded ,_bdec );_agde :=_ca ._cgb .AddAutoRelationship (_ce .DocTypePresentation ,_ce .OfficeDocumentType ,len (_ca ._ded ),_ce .SlideType );_bca .RIdAttr =_agde .ID ();_ddbd :=_ce .AbsoluteFilename (_ce .DocTypePresentation ,_ce .SlideType ,len (_ca ._ded ));_ca .ContentTypes .AddOverride (_ddbd ,_ce .SlideContentType );_agb :=_a .NewRelationships ();_ca ._dcf =append (_ca ._dcf ,_agb );_agb .AddAutoRelationship (_ce .DocTypePresentation ,_ce .SlideType ,len (_ca ._gaba ),_ce .SlideLayoutType );return Slide {_bca ,_bdec ,_ca ,nil };};
// 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 *_ae .CT_Shape ;GraphicFrame *_ae .CT_GraphicalObjectFrame ;Paragraph *_af .CT_TextParagraph ;Run *_af .CT_RegularTextRun ;TableInfo *TableInfo ;_ge []rectangle ;_fab int ;_ed int ;};func (_ef *chart )RelId ()string {return _ef ._fc };func (_cgbc *Presentation )save (_beea _fa .Writer ,_ebb bool )error {const _fgce ="\u0050\u0072\u0065\u0073en\u0074\u0061\u0074\u0069\u006f\u006e\u003a\u0070\u002e\u0053\u0061\u0076\u0065";if _eegc :=_cgbc ._fbaa .Validate ();_eegc !=nil {_cb .Printf ("\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",_eegc );};if !_ea .GetLicenseKey ().IsLicensed ()&&!_gfed {_dc .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");_dc .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 _ega .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 (_cgbc ._bfc )==0{_aecc ,_caf :=_ea .GenRefId ("\u0070\u0077");if _caf !=nil {_ce .Log ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0025\u0076\u000a",_caf );return _caf ;};_cgbc ._bfc =_aecc ;};if _dddc :=_ea .Track (_cgbc ._bfc ,_fgce );_dddc !=nil {_dc .Printf ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0025\u0076\u000a",_dddc );return _dddc ;};if _ebb {_cgbc .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");_cgbc .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 {_cgbc .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");_cgbc .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");};_gbe :=_ce .DocTypePresentation ;_cea :=_fbe .NewWriter (_beea );defer _cea .Close ();if _ebf :=_c .MarshalXML (_cea ,_ce .BaseRelsFilename ,_cgbc .Rels .X ());_ebf !=nil {return _ebf ;};if _cbac :=_c .MarshalXMLByType (_cea ,_gbe ,_ce .ExtendedPropertiesType ,_cgbc .AppProperties .X ());_cbac !=nil {return _cbac ;};if _fdcf :=_c .MarshalXMLByType (_cea ,_gbe ,_ce .CorePropertiesType ,_cgbc .CoreProperties .X ());_fdcf !=nil {return _fdcf ;};if _adf :=_c .MarshalXMLByType (_cea ,_gbe ,_ce .PresentationPropertiesType ,_cgbc ._eed .X ());_adf !=nil {return _adf ;};if _cfga :=_c .MarshalXMLByType (_cea ,_gbe ,_ce .ViewPropertiesType ,_cgbc ._bcg .X ());_cfga !=nil {return _cfga ;};if _cbd :=_c .MarshalXMLByType (_cea ,_gbe ,_ce .TableStylesType ,_cgbc ._fgd .X ());_cbd !=nil {return _cbd ;};if _cgbc .CustomProperties .X ()!=nil {if _degg :=_c .MarshalXMLByType (_cea ,_gbe ,_ce .CustomPropertiesType ,_cgbc .CustomProperties .X ());_degg !=nil {return _degg ;};};if _cgbc .Thumbnail !=nil {_ege ,_acdf :=_cea .Create ("\u0064\u006f\u0063Pr\u006f\u0070\u0073\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c\u002e\u006a\u0070\u0065\u0067");if _acdf !=nil {return _acdf ;};if _bbab :=_fb .Encode (_ege ,_cgbc .Thumbnail ,nil );_bbab !=nil {return _bbab ;};};_fcb :=_ce .AbsoluteFilename (_gbe ,_ce .OfficeDocumentType ,0);if _bce :=_c .MarshalXML (_cea ,_fcb ,_cgbc ._fbaa );_bce !=nil {return _bce ;};if _gegb :=_c .MarshalXML (_cea ,_c .RelationsPathFor (_fcb ),_cgbc ._cgb .X ());_gegb !=nil {return _gegb ;};for _ggg ,_egeb :=range _cgbc ._ded {_fbbf :=_ce .AbsoluteFilename (_ce .DocTypePresentation ,_ce .SlideType ,_ggg +1);_c .MarshalXML (_cea ,_fbbf ,_egeb );if !_cgbc ._dcf [_ggg ].IsEmpty (){_dgef :=_c .RelationsPathFor (_fbbf );_c .MarshalXML (_cea ,_dgef ,_cgbc ._dcf [_ggg ].X ());};};for _eagg ,_gfc :=range _cgbc ._bccd {_bag :=_ce .AbsoluteFilename (_ce .DocTypePresentation ,_ce .SlideMasterType ,_eagg +1);_c .MarshalXML (_cea ,_bag ,_gfc );if !_cgbc ._bbde [_eagg ].IsEmpty (){_bbe :=_c .RelationsPathFor (_bag );_c .MarshalXML (_cea ,_bbe ,_cgbc ._bbde [_eagg ].X ());};};for _dcbc ,_gca :=range _cgbc ._gaba {_degf :=_ce .AbsoluteFilename (_ce .DocTypePresentation ,_ce .SlideLayoutType ,_dcbc +1);_c .MarshalXML (_cea ,_degf ,_gca );if !_cgbc ._cgd [_dcbc ].IsEmpty (){_baf :=_c .RelationsPathFor (_degf );_c .MarshalXML (_cea ,_baf ,_cgbc ._cgd [_dcbc ].X ());};};for _ebbb ,_dfbd :=range _cgbc ._geaf {_gef :=_ce .AbsoluteFilename (_ce .DocTypePresentation ,_ce .ThemeType ,_ebbb +1);_c .MarshalXML (_cea ,_gef ,_dfbd );if !_cgbc ._ggc [_ebbb ].IsEmpty (){_agc :=_c .RelationsPathFor (_gef );_c .MarshalXML (_cea ,_agc ,_cgbc ._ggc [_ebbb ].X ());};};for _egg ,_ffbc :=range _cgbc ._dcg {_gdc :=_ce .AbsoluteFilename (_gbe ,_ce .ChartType ,_egg +1);_c .MarshalXML (_cea ,_gdc ,_ffbc );};for _dae ,_aba :=range _cgbc ._bbcf {_dce :=_ce .AbsoluteFilename (_gbe ,_ce .HandoutMasterType ,_dae +1);_c .MarshalXML (_cea ,_dce ,_aba );};for _ecb ,_dcge :=range _cgbc ._fcdd {_fea :=_ce .AbsoluteFilename (_gbe ,_ce .NotesMasterType ,_ecb +1);_c .MarshalXML (_cea ,_fea ,_dcge );};for _cece ,_fcdb :=range _cgbc ._efbe {_bfg :=_ce .AbsoluteFilename (_gbe ,_ce .CustomXMLType ,_cece +1);_c .MarshalXML (_cea ,_bfg ,_fcdb );};for _egac ,_fcc :=range _cgbc .Images {if _bed :=_a .AddImageToZip (_cea ,_fcc ,_egac +1,_ce .DocTypePresentation );_bed !=nil {return _bed ;};};_cgbc .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_cgbc .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_cgbc .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_cgbc .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");if _bbaa :=_c .MarshalXML (_cea ,_ce .ContentTypesFilename ,_cgbc .ContentTypes .X ());_bbaa !=nil {return _bbaa ;};if _fbff :=_cgbc .WriteExtraFiles (_cea );_fbff !=nil {return _fbff ;};return nil ;};
// Type returns the placeholder type
func (_gfd PlaceHolder )Type ()_ae .ST_PlaceholderType {return _gfd ._ddg .NvSpPr .NvPr .Ph .TypeAttr };
// GetLayoutByName retrieves a slide layout given a layout name.
func (_gcd *Presentation )GetLayoutByName (name string )(SlideLayout ,error ){for _ ,_bccg :=range _gcd ._gaba {if _bccg .CSld .NameAttr !=nil &&name ==*_bccg .CSld .NameAttr {return SlideLayout {_bccg },nil ;};};return SlideLayout {},_ega .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");};
// SlideLayout is a layout from which slides can be created.
type SlideLayout struct{_acgg *_ae .SldLayout };
// GetChartSpaceByRelId returns a *crt.ChartSpace with the associated relation ID in the
// slide.
func (_bgceb *Slide )GetChartSpaceByRelId (relId string )*_e .ChartSpace {_cgaa :=_bgceb .getSlideRels ();if (_cgaa ==_a .Relationships {}){return nil ;};_bccf :=_cgaa .GetTargetByRelId (relId );for _ ,_bgbe :=range _bgceb ._gbce ._dcg {if _bccf ==_bgbe .Target (){return _bgbe ._ff ;};};return nil ;};
// LastViewAttr returns the LastViewAttr property.
func (_ebaf ViewProperties )LastViewAttr ()_ae .ST_ViewType {return _ebaf ._fccd .LastViewAttr };
// NotesViewPr returns the NotesViewPr property.
func (_gfde ViewProperties )NotesViewPr ()*_ae .CT_NotesViewProperties {return _gfde ._fccd .NotesViewPr };
// SaveToFileAsTemplate writes the Presentation out to a file as a template.
func (_ebad *Presentation )SaveToFileAsTemplate (path string )error {return _ebad .saveToFile (path ,true );};
// SetTextAnchor controls the text anchoring
func (_dbea TextBox )SetTextAnchor (a _af .ST_TextAnchoringType ){_dbea ._dbeg .TxBody .BodyPr =_af .NewCT_TextBodyProperties ();_dbea ._dbeg .TxBody .BodyPr .AnchorAttr =a ;};type rectangle struct{_dd int64 ;_gg int64 ;_eb int64 ;_ac int64 ;};func (_acf *Presentation )Validate ()error {if _acdb :=_acf ._fbaa .Validate ();_acdb !=nil {return _acdb ;};for _cecee ,_cgeee :=range _acf .Slides (){if _gdcf :=_cgeee .ValidateWithPath (_dc .Sprintf ("\u0053l\u0069\u0064\u0065\u005b\u0025\u0064]",_cecee ));_gdcf !=nil {return _gdcf ;};};for _bbff ,_gede :=range _acf ._bccd {if _dfg :=_gede .ValidateWithPath (_dc .Sprintf ("\u0053l\u0069d\u0065\u004d\u0061\u0073\u0074\u0065\u0072\u005b\u0025\u0064\u005d",_bbff ));_dfg !=nil {return _dfg ;};};for _cdbg ,_dcdg :=range _acf ._gaba {if _faga :=_dcdg .ValidateWithPath (_dc .Sprintf ("\u0053l\u0069d\u0065\u004c\u0061\u0079\u006f\u0075\u0074\u005b\u0025\u0064\u005d",_cdbg ));_faga !=nil {return _faga ;};};return nil ;};
// RemoveSlide removes a slide from a presentation.
func (_cag *Presentation )RemoveSlide (s Slide )error {_edcc :=false ;_cac :=0;for _bdfa ,_bbfdc :=range _cag ._ded {if _bbfdc ==s ._abaa {if _cag ._fbaa .SldIdLst .SldId [_bdfa ]!=s ._eafb {return _ega .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 (_cag ._ded [_bdfa :],_cag ._ded [_bdfa +1:]);_cag ._ded =_cag ._ded [0:len (_cag ._ded )-1];copy (_cag ._dcf [_bdfa :],_cag ._dcf [_bdfa +1:]);_cag ._dcf =_cag ._dcf [0:len (_cag ._dcf )-1];copy (_cag ._fbaa .SldIdLst .SldId [_bdfa :],_cag ._fbaa .SldIdLst .SldId [_bdfa +1:]);_cag ._fbaa .SldIdLst .SldId =_cag ._fbaa .SldIdLst .SldId [0:len (_cag ._fbaa .SldIdLst .SldId )-1];_edcc =true ;_cac =_bdfa ;};};if !_edcc {return _ega .New ("u\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0073li\u0064\u0065");};_cfeb :=_ce .AbsoluteFilename (_ce .DocTypePresentation ,_ce .SlideType ,0);return _cag .ContentTypes .RemoveOverrideByIndex (_cfeb ,_cac );};
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
func (_dbg *Presentation )GetColorBySchemeColor (schClr _af .ST_SchemeColorVal )*_af .CT_Color {if len (_dbg ._bccd )==0||len (_dbg ._geaf )==0{return nil ;};var _adcc _af .ST_ColorSchemeIndex ;_dbd :=_dbg ._bccd [0];_cef :=_dbd .ClrMap ;switch schClr .String (){case "\u0062\u0067\u0031":_adcc =_cef .Bg1Attr ;case "\u0062\u0067\u0032":_adcc =_cef .Bg2Attr ;case "\u0074\u0078\u0031":_adcc =_cef .Tx1Attr ;case "\u0074\u0078\u0032":_adcc =_cef .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_adcc =_cef .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_adcc =_cef .Accent2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_adcc =_cef .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_adcc =_cef .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_adcc =_cef .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_adcc =_cef .Accent6Attr ;case "\u0068\u006c\u0069n\u006b":_adcc =_cef .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_adcc =_cef .FolHlinkAttr ;case "\u0064\u006b\u0031":_adcc =_af .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_adcc =_af .ST_ColorSchemeIndexDk2 ;case "\u006c\u0074\u0031":_adcc =_af .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_adcc =_af .ST_ColorSchemeIndexLt2 ;default:_adcc =_af .ST_ColorSchemeIndexUnset ;};_edf :=_dbg ._geaf [0];_cgbf :=_edf .ThemeElements ;if _cgbf ==nil {return nil ;};var _beab *_af .CT_Color ;_ecef :=_cgbf .ClrScheme ;switch _adcc .String (){case "\u0064\u006b\u0031":_beab =_ecef .Dk1 ;case "\u0064\u006b\u0032":_beab =_ecef .Dk2 ;case "\u006c\u0074\u0031":_beab =_ecef .Lt1 ;case "\u006c\u0074\u0032":_beab =_ecef .Lt2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_beab =_ecef .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_beab =_ecef .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_beab =_ecef .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_beab =_ecef .Accent4 ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_beab =_ecef .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_beab =_ecef .Accent6 ;case "\u0068\u006c\u0069n\u006b":_beab =_ecef .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_beab =_ecef .FolHlink ;default:return nil ;};return _beab ;};
// X returns the inner wrapped XML type.
func (_gcc SlideLayout )X ()*_ae .SldLayout {return _gcc ._acgg };
// AddParagraph adds a new paragraph to a placeholder.
func (_bba PlaceHolder )AddParagraph ()_fad .Paragraph {_gfb :=_fad .MakeParagraph (_af .NewCT_TextParagraph ());_bba ._ddg .TxBody .P =append (_bba ._ddg .TxBody .P ,_gfb .X ());return _gfb ;};func (_gec *Presentation )nextSlideID ()uint32 {_ddd :=uint32 (256);for _ ,_ccaf :=range _gec ._fbaa .SldIdLst .SldId {if _ccaf .IdAttr >=_ddd {_ddd =_ccaf .IdAttr +1;};};return _ddd ;};
// 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 (_ebcc Slide )GetPlaceholder (t _ae .ST_PlaceholderType )(PlaceHolder ,error ){for _ ,_bfeg :=range _ebcc ._abaa .CSld .SpTree .Choice {for _ ,_gaed :=range _bfeg .Sp {if _gaed .NvSpPr !=nil &&_gaed .NvSpPr .NvPr !=nil &&_gaed .NvSpPr .NvPr .Ph !=nil {if _gaed .NvSpPr .NvPr .Ph .TypeAttr ==t {return PlaceHolder {_gaed ,_ebcc ._abaa },nil ;};};};};return PlaceHolder {},_ega .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");};
// Slide represents a slide of a presentation.
type Slide struct{_eafb *_ae .CT_SlideIdListEntry ;_abaa *_ae .Sld ;_gbce *Presentation ;_ecbf *_af .CT_ColorMapping ;};
// 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 (_abfd Slide )GetPlaceholderByIndex (idx uint32 )(PlaceHolder ,error ){for _ ,_aac :=range _abfd ._abaa .CSld .SpTree .Choice {for _ ,_febb :=range _aac .Sp {if _febb .NvSpPr !=nil &&_febb .NvSpPr .NvPr !=nil &&_febb .NvSpPr .NvPr .Ph !=nil {if (idx ==0&&_febb .NvSpPr .NvPr .Ph .IdxAttr ==nil )||(_febb .NvSpPr .NvPr .Ph .IdxAttr !=nil &&*_febb .NvSpPr .NvPr .Ph .IdxAttr ==idx ){return PlaceHolder {_febb ,_abfd ._abaa },nil ;};};};};return PlaceHolder {},_ega .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");};func _fgf (_dge []*_ae .CT_GroupShapeChoice )[]*_ae .CT_GroupShapeChoice {var _adb []*_ae .CT_GroupShapeChoice ;for _ ,_eba :=range _dge {if len (_eba .Pic )==0{_adb =append (_adb ,_eba );};};return _adb ;};
// GetTextBoxes returns a list of all text boxes from a slide.
func (_eafd Slide )GetTextBoxes ()[]*TextBox {_befg :=[]*TextBox {};_dagd :=_eafd ._abaa .CSld .SpTree .Choice ;for _ ,_gcde :=range _dagd {for _ ,_ffa :=range _gcde .Sp {if _ffa .NvSpPr .CNvSpPr .TxBoxAttr !=nil &&*_ffa .NvSpPr .CNvSpPr .TxBoxAttr {_befg =append (_befg ,&TextBox {_ffa });};};};return _befg ;};func (_fbeb TextBox )getOff ()*_af .CT_Point2D {if _fbeb ._dbeg .SpPr ==nil {_fbeb ._dbeg .SpPr =_af .NewCT_ShapeProperties ();};if _fbeb ._dbeg .SpPr .Xfrm ==nil {_fbeb ._dbeg .SpPr .Xfrm =_af .NewCT_Transform2D ();};if _fbeb ._dbeg .SpPr .Xfrm .Off ==nil {_fbeb ._dbeg .SpPr .Xfrm .Off =_af .NewCT_Point2D ();};return _fbeb ._dbeg .SpPr .Xfrm .Off ;};func (_gaf sort2d )Swap (i ,j int ){_gaf [i ],_gaf [j ]=_gaf [j ],_gaf [i ]};type chart struct{_ff *_e .ChartSpace ;_fc string ;_gc string ;};
// SlideViewPr returns the SlideViewPr property.
func (_baba ViewProperties )SlideViewPr ()*_ae .CT_SlideViewProperties {return _baba ._fccd .SlideViewPr };
// X returns TextBox's underlying *pml.CT_Shape.
func (_fge TextBox )X ()*_ae .CT_Shape {return _fge ._dbeg };
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
func (_bafd *Slide )GetColorBySchemeColor (schClr _af .ST_SchemeColorVal )*_af .CT_Color {_bafd .ensureClrMap ();_caec :=_bafd ._ecbf ;if _caec ==nil {return nil ;};var _ebccb _af .ST_ColorSchemeIndex ;switch schClr .String (){case "\u0062\u0067\u0031":_ebccb =_caec .Bg1Attr ;case "\u0062\u0067\u0032":_ebccb =_caec .Bg2Attr ;case "\u0074\u0078\u0031":_ebccb =_caec .Tx1Attr ;case "\u0074\u0078\u0032":_ebccb =_caec .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_ebccb =_caec .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_ebccb =_caec .Accent2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_ebccb =_caec .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_ebccb =_caec .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_ebccb =_caec .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_ebccb =_caec .Accent6Attr ;case "\u0068\u006c\u0069n\u006b":_ebccb =_caec .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_ebccb =_caec .FolHlinkAttr ;case "\u0064\u006b\u0031":_ebccb =_af .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_ebccb =_af .ST_ColorSchemeIndexDk2 ;case "\u006c\u0074\u0031":_ebccb =_af .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_ebccb =_af .ST_ColorSchemeIndexLt2 ;default:_ebccb =_af .ST_ColorSchemeIndexUnset ;};_ccagg :=_bafd ._gbce ._geaf [0];_effd :=_ccagg .ThemeElements ;if _effd ==nil {return nil ;};var _fegg *_af .CT_Color ;_aaf :=_effd .ClrScheme ;switch _ebccb .String (){case "\u0064\u006b\u0031":_fegg =_aaf .Dk1 ;case "\u0064\u006b\u0032":_fegg =_aaf .Dk2 ;case "\u006c\u0074\u0031":_fegg =_aaf .Lt1 ;case "\u006c\u0074\u0032":_fegg =_aaf .Lt2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_fegg =_aaf .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_fegg =_aaf .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_fegg =_aaf .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_fegg =_aaf .Accent4 ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_fegg =_aaf .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_fegg =_aaf .Accent6 ;case "\u0068\u006c\u0069n\u006b":_fegg =_aaf .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_fegg =_aaf .FolHlink ;default:return nil ;};return _fegg ;};func (_bad *chart )X ()*_e .ChartSpace {return _bad ._ff };
// X returns the inner wrapped XML type.
func (_bef Slide )X ()*_ae .Sld {return _bef ._abaa };func _abe (_fed *Presentation ,_db *_ae .CT_Shape ,_ddb *_ae .CT_GraphicalObjectFrame ,_bbc *TableInfo ,_fgcb *_af .CT_Transform2D ,_gd int ,_ffgb []rectangle ,_fba []*_af .CT_TextParagraph )[]*TextItem {_bee :=[]*TextItem {};var _dg ,_fbb ,_ad ,_dcd ,_abg ,_fd int64 ;_aee :=_fgcb ==nil ;_agd :=0;for _ ,_gea :=range _fba {for _ ,_cgee :=range _gea .EG_TextRun {if _efg :=_cgee .R ;_efg !=nil {if !_aee {if _fgcb .Off !=nil {if _ccf :=_fgcb .Ext ;_ccf !=nil {_abg ,_fd =_ccf .CxAttr ,_ccf .CyAttr ;};if _bbdf :=_fgcb .Off .XAttr .ST_CoordinateUnqualified ;_bbdf !=nil {_dg =*_bbdf ;_fbb =_dg +_abg ;_aee =true ;};if _fef :=_fgcb .Off .YAttr .ST_CoordinateUnqualified ;_fef !=nil {_ad =*_fef ;_dcd =_ad +_fd ;_aee =true ;};};};_faf :=append ([]rectangle {},_ffgb ...);_faf =append (_faf ,rectangle {_dd :_dg ,_eb :_fbb ,_gg :_ad ,_ac :_dcd });_bee =append (_bee ,&TextItem {Presentation :_fed ,Shape :_db ,GraphicFrame :_ddb ,TableInfo :_bbc ,Paragraph :_gea ,Run :_efg ,Text :_efg .T ,_ge :_faf ,_fab :_gd ,_ed :_agd });_agd ++;};};};return _bee ;};
// Presentation is the a presentation base document.
type Presentation struct{_a .DocBase ;_fbaa *_ae .Presentation ;_cgb _a .Relationships ;_ded []*_ae .Sld ;_dcf []_a .Relationships ;_bccd []*_ae .SldMaster ;_bbde []_a .Relationships ;_gaba []*_ae .SldLayout ;_cgd []_a .Relationships ;_geaf []*_af .Theme ;_ggc []_a .Relationships ;_fgd _a .TableStyles ;_eed PresentationProperties ;_bcg ViewProperties ;_acd []*_af .CT_Hyperlink ;_dcg []*chart ;_bbcf []*_ae .HandoutMaster ;_fcdd []*_ae .NotesMaster ;_efbe []*_ce .XSDAny ;_bdef map[string ]string ;_bfc string ;};
// NewPresentationProperties constructs a new PresentationProperties.
func NewPresentationProperties ()PresentationProperties {return PresentationProperties {_gbc :_ae .NewPresentationPr ()};};func (_fagd *Slide )getSlideRels ()_a .Relationships {_bcd :=_fagd ._gbce ;for _dafg ,_abag :=range _bcd .Slides (){if *_fagd ._abaa ==*_abag ._abaa {return _bcd ._dcf [len (_bcd ._dcf )-_dafg -1];};};return _a .Relationships {};};
// ValidateWithPath validates the slide passing path informaton for a better
// error message.
func (_gdb Slide )ValidateWithPath (path string )error {if _ceae :=_gdb ._abaa .ValidateWithPath (path );_ceae !=nil {return _ceae ;};for _ ,_faee :=range _gdb ._abaa .CSld .SpTree .Choice {for _ ,_dfe :=range _faee .Sp {if _dfe .TxBody !=nil {if len (_dfe .TxBody .P )==0{return _ega .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 ;};
// SlideText is an array of extracted text items which has some methods for representing extracted text from a slide.
type SlideText struct{Items []*TextItem ;};func _gac ()*Presentation {_fgcf :=&Presentation {_fbaa :_ae .NewPresentation ()};_fgcf ._fbaa .SldIdLst =_ae .NewCT_SlideIdList ();_fgcf ._fbaa .ConformanceAttr =_d .ST_ConformanceClassTransitional ;_fgcf .AppProperties =_a .NewAppProperties ();_fgcf .CoreProperties =_a .NewCoreProperties ();_fgcf ._fgd =_a .NewTableStyles ();_fgcf .ContentTypes =_a .NewContentTypes ();_fgcf .Rels =_a .NewRelationships ();_fgcf ._cgb =_a .NewRelationships ();_fgcf ._eed =NewPresentationProperties ();_fgcf ._bcg =NewViewProperties ();_fgcf ._bdef =map[string ]string {};return _fgcf ;};
// TextBox is a text box within a slide.
type TextBox struct{_dbeg *_ae .CT_Shape };
// NewViewProperties constructs a new ViewProperties.
func NewViewProperties ()ViewProperties {return ViewProperties {_fccd :_ae .NewViewPr ()}};
// New initializes and reurns a new presentation
func New ()*Presentation {_adc :=_gac ();_adc .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");_adc .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");_adc .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");_adc .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");_adc .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");_adc .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");_adc .Rels .AddRelationship ("\u0070\u0070\u0074\u002fta\u0062\u006c\u0065\u0053\u0074\u0079\u006c\u0065\u0073\u002e\u0078\u006d\u006c","\u0068\u0074\u0074\u0070\u003a\u002f\u002fs\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006cf\u006fr\u006d\u0061\u0074\u0073\u002e\u006fr\u0067\u002f\u006f\u0066\u0066\u0069\u0063e\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0032\u0030\u0030\u0036\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073h\u0069\u0070\u0073\u002f\u0074\u0061\u0062\u006c\u0065\u0053\u0074\u0079\u006ce\u0073");_adc ._fbaa .SldMasterIdLst =_ae .NewCT_SlideMasterIdList ();_bea :=_ae .NewSldMaster ();_bea .ClrMap .Bg1Attr =_af .ST_ColorSchemeIndexLt1 ;_bea .ClrMap .Bg2Attr =_af .ST_ColorSchemeIndexLt2 ;_bea .ClrMap .Tx1Attr =_af .ST_ColorSchemeIndexDk1 ;_bea .ClrMap .Tx2Attr =_af .ST_ColorSchemeIndexDk2 ;_bea .ClrMap .Accent1Attr =_af .ST_ColorSchemeIndexAccent1 ;_bea .ClrMap .Accent2Attr =_af .ST_ColorSchemeIndexAccent2 ;_bea .ClrMap .Accent3Attr =_af .ST_ColorSchemeIndexAccent3 ;_bea .ClrMap .Accent4Attr =_af .ST_ColorSchemeIndexAccent4 ;_bea .ClrMap .Accent5Attr =_af .ST_ColorSchemeIndexAccent5 ;_bea .ClrMap .Accent6Attr =_af .ST_ColorSchemeIndexAccent6 ;_bea .ClrMap .HlinkAttr =_af .ST_ColorSchemeIndexHlink ;_bea .ClrMap .FolHlinkAttr =_af .ST_ColorSchemeIndexFolHlink ;_adc ._bccd =append (_adc ._bccd ,_bea );_cda :=_ce .AbsoluteFilename (_ce .DocTypePresentation ,_ce .SlideMasterType ,1);_adc .ContentTypes .AddOverride (_cda ,_ce .SlideMasterContentType );_gfa :=_adc ._cgb .AddAutoRelationship (_ce .DocTypePresentation ,_ce .OfficeDocumentType ,1,_ce .SlideMasterType );_eaf :=_ae .NewCT_SlideMasterIdListEntry ();_eaf .IdAttr =_ce .Uint32 (2147483648);_eaf .RIdAttr =_gfa .ID ();_adc ._fbaa .SldMasterIdLst .SldMasterId =append (_adc ._fbaa .SldMasterIdLst .SldMasterId ,_eaf );_dfbe :=_a .NewRelationships ();_adc ._bbde =append (_adc ._bbde ,_dfbe );_bgfb :=_ae .NewSldLayout ();_fgbd :=_dfbe .AddAutoRelationship (_ce .DocTypePresentation ,_ce .SlideMasterType ,1,_ce .SlideLayoutType );_ccg :=_ce .AbsoluteFilename (_ce .DocTypePresentation ,_ce .SlideLayoutType ,1);_adc .ContentTypes .AddOverride (_ccg ,_ce .SlideLayoutContentType );_dfbe .AddAutoRelationship (_ce .DocTypePresentation ,_ce .SlideMasterType ,1,_ce .ThemeType );_adc ._gaba =append (_adc ._gaba ,_bgfb );_bea .SldLayoutIdLst =_ae .NewCT_SlideLayoutIdList ();_adcb :=_ae .NewCT_SlideLayoutIdListEntry ();_adcb .IdAttr =_ce .Uint32 (2147483649);_adcb .RIdAttr =_fgbd .ID ();_bea .SldLayoutIdLst .SldLayoutId =append (_bea .SldLayoutIdLst .SldLayoutId ,_adcb );_gcf :=_a .NewRelationships ();_adc ._cgd =append (_adc ._cgd ,_gcf );_gcf .AddAutoRelationship (_ce .DocTypePresentation ,_ce .SlideType ,1,_ce .SlideMasterType );_adc ._fbaa .NotesSz .CxAttr =6858000;_adc ._fbaa .NotesSz .CyAttr =9144000;_aeg :=_af .NewTheme ();_aeg .NameAttr =_ce .String ("\u0075n\u0069o\u0066\u0066\u0069\u0063\u0065\u0020\u0054\u0068\u0065\u006d\u0065");_aeg .ThemeElements .ClrScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_aeg .ThemeElements .ClrScheme .Dk1 .SysClr =_af .NewCT_SystemColor ();_aeg .ThemeElements .ClrScheme .Dk1 .SysClr .LastClrAttr =_ce .String ("\u0030\u0030\u0030\u0030\u0030\u0030");_aeg .ThemeElements .ClrScheme .Dk1 .SysClr .ValAttr =_af .ST_SystemColorValWindowText ;_aeg .ThemeElements .ClrScheme .Lt1 .SysClr =_af .NewCT_SystemColor ();_aeg .ThemeElements .ClrScheme .Lt1 .SysClr .LastClrAttr =_ce .String ("\u0066\u0066\u0066\u0066\u0066\u0066");_aeg .ThemeElements .ClrScheme .Lt1 .SysClr .ValAttr =_af .ST_SystemColorValWindow ;_aeg .ThemeElements .ClrScheme .Dk2 .SrgbClr =_af .NewCT_SRgbColor ();_aeg .ThemeElements .ClrScheme .Dk2 .SrgbClr .ValAttr ="\u0034\u0034\u0035\u0034\u0036\u0061";_aeg .ThemeElements .ClrScheme .Lt2 .SrgbClr =_af .NewCT_SRgbColor ();_aeg .ThemeElements .ClrScheme .Lt2 .SrgbClr .ValAttr ="\u0065\u0037\u0065\u0037\u0065\u0036";_aeg .ThemeElements .ClrScheme .Accent1 .SrgbClr =_af .NewCT_SRgbColor ();_aeg .ThemeElements .ClrScheme .Accent1 .SrgbClr .ValAttr ="\u0034\u0034\u0037\u0032\u0063\u0034";_aeg .ThemeElements .ClrScheme .Accent2 .SrgbClr =_af .NewCT_SRgbColor ();_aeg .ThemeElements .ClrScheme .Accent2 .SrgbClr .ValAttr ="\u0065\u0064\u0037\u0064\u0033\u0031";_aeg .ThemeElements .ClrScheme .Accent3 .SrgbClr =_af .NewCT_SRgbColor ();_aeg .ThemeElements .ClrScheme .Accent3 .SrgbClr .ValAttr ="\u0061\u0035\u0061\u0035\u0061\u0035";_aeg .ThemeElements .ClrScheme .Accent4 .SrgbClr =_af .NewCT_SRgbColor ();_aeg .ThemeElements .ClrScheme .Accent4 .SrgbClr .ValAttr ="\u0066\u0066\u0063\u0030\u0030\u0030";_aeg .ThemeElements .ClrScheme .Accent5 .SrgbClr =_af .NewCT_SRgbColor ();_aeg .ThemeElements .ClrScheme .Accent5 .SrgbClr .ValAttr ="\u0035\u0062\u0039\u0062\u0064\u0035";_aeg .ThemeElements .ClrScheme .Accent6 .SrgbClr =_af .NewCT_SRgbColor ();_aeg .ThemeElements .ClrScheme .Accent6 .SrgbClr .ValAttr ="\u0037\u0030\u0061\u0064\u0034\u0037";_aeg .ThemeElements .ClrScheme .Hlink .SrgbClr =_af .NewCT_SRgbColor ();_aeg .ThemeElements .ClrScheme .Hlink .SrgbClr .ValAttr ="\u0030\u0035\u0036\u0033\u0063\u0031";_aeg .ThemeElements .ClrScheme .FolHlink .SrgbClr =_af .NewCT_SRgbColor ();_aeg .ThemeElements .ClrScheme .FolHlink .SrgbClr .ValAttr ="\u0039\u0035\u0034\u0066\u0037\u0032";_aeg .ThemeElements .FontScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_aeg .ThemeElements .FontScheme .MajorFont .Latin .TypefaceAttr ="\u0043\u0061\u006c\u0069\u0062\u0072\u0069\u0020\u004c\u0069\u0067\u0068\u0074";_aeg .ThemeElements .FontScheme .MinorFont .Latin .TypefaceAttr ="\u0043a\u006c\u0069\u0062\u0072\u0069";_aeg .ThemeElements .FmtScheme .NameAttr =_ce .String ("\u004f\u0066\u0066\u0069\u0063\u0065");_cfg :=_af .NewEG_FillProperties ();_aeg .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_aeg .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_cfg );_cfg .SolidFill =&_af .CT_SolidColorFillProperties {SchemeClr :&_af .CT_SchemeColor {ValAttr :_af .ST_SchemeColorValPhClr }};_cfg =_af .NewEG_FillProperties ();_aeg .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_aeg .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_cfg );_aeg .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_aeg .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_cfg );_cfg .GradFill =&_af .CT_GradientFillProperties {RotWithShapeAttr :_ce .Bool (true ),GsLst :&_af .CT_GradientStopList {},Lin :&_af .CT_LinearShadeProperties {}};_cfg .GradFill .Lin .AngAttr =_ce .Int32 (5400000);_cfg .GradFill .Lin .ScaledAttr =_ce .Bool (false );_bgb :=_af .NewCT_GradientStop ();_bgb .PosAttr .ST_PositiveFixedPercentageDecimal =_ce .Int32 (0);_bgb .SchemeClr =&_af .CT_SchemeColor {ValAttr :_af .ST_SchemeColorValPhClr };_cfg .GradFill .GsLst .Gs =append (_cfg .GradFill .GsLst .Gs ,_bgb );_bgb =_af .NewCT_GradientStop ();_bgb .PosAttr .ST_PositiveFixedPercentageDecimal =_ce .Int32 (50000);_bgb .SchemeClr =&_af .CT_SchemeColor {ValAttr :_af .ST_SchemeColorValPhClr };_cfg .GradFill .GsLst .Gs =append (_cfg .GradFill .GsLst .Gs ,_bgb );_aeg .ThemeElements .FmtScheme .LnStyleLst =_af .NewCT_LineStyleList ();for _aaa :=0;_aaa < 3;_aaa ++{_baa :=_af .NewCT_LineProperties ();_baa .WAttr =_ce .Int32 (int32 (6350*(_aaa +1)));_baa .CapAttr =_af .ST_LineCapFlat ;_baa .CmpdAttr =_af .ST_CompoundLineSng ;_baa .AlgnAttr =_af .ST_PenAlignmentCtr ;_aeg .ThemeElements .FmtScheme .LnStyleLst .Ln =append (_aeg .ThemeElements .FmtScheme .LnStyleLst .Ln ,_baa );};_aeg .ThemeElements .FmtScheme .EffectStyleLst =_af .NewCT_EffectStyleList ();for _fbef :=0;_fbef < 3;_fbef ++{_eafg :=_af .NewCT_EffectStyleItem ();_eafg .EffectLst =_af .NewCT_EffectList ();_aeg .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle =append (_aeg .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle ,_eafg );};_eeed :=_af .NewEG_FillProperties ();_eeed .SolidFill =&_af .CT_SolidColorFillProperties {SchemeClr :&_af .CT_SchemeColor {ValAttr :_af .ST_SchemeColorValPhClr }};_aeg .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_aeg .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_eeed );_aeg .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_aeg .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_eeed );_aeg .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_aeg .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_cfg );_adc ._geaf =append (_adc ._geaf ,_aeg );_aag :=_ce .AbsoluteFilename (_ce .DocTypePresentation ,_ce .ThemeType ,1);_adc .ContentTypes .AddOverride (_aag ,_ce .ThemeContentType );_adc ._cgb .AddAutoRelationship (_ce .DocTypePresentation ,_ce .OfficeDocumentType ,1,_ce .ThemeType );_cga :=_a .NewRelationships ();_adc ._ggc =append (_adc ._ggc ,_cga );return _adc ;};
// X returns the inner wrapped XML type.
func (_gcg *Presentation )X ()*_ae .Presentation {return _gcg ._fbaa };
// SetOffsetX sets horizontal offset of text box in distance units (see measurement package).
func (_dbbf TextBox )SetOffsetX (offX float64 ){_dfdf :=_dbbf .getOff ();_abea :=_bc .ToEMU (offX );_dfdf .XAttr =_af .ST_Coordinate {ST_CoordinateUnqualified :&_abea };};
// NormalViewPr returns the NormalViewPr property.
func (_bdc ViewProperties )NormalViewPr ()*_ae .CT_NormalViewProperties {return _bdc ._fccd .NormalViewPr ;};
// AddTextBox adds an empty textbox to a slide.
func (_agcb Slide )AddTextBox ()TextBox {_dcfb :=_ae .NewCT_GroupShapeChoice ();_agcb ._abaa .CSld .SpTree .Choice =append (_agcb ._abaa .CSld .SpTree .Choice ,_dcfb );_dbc :=_ae .NewCT_Shape ();_dcfb .Sp =append (_dcfb .Sp ,_dbc );_dbc .SpPr =_af .NewCT_ShapeProperties ();_dbc .SpPr .Xfrm =_af .NewCT_Transform2D ();_dbc .SpPr .PrstGeom =_af .NewCT_PresetGeometry2D ();_dbc .SpPr .PrstGeom .PrstAttr =_af .ST_ShapeTypeRect ;_dbc .NvSpPr =_ae .NewCT_ShapeNonVisual ();_dbc .NvSpPr .CNvSpPr =_af .NewCT_NonVisualDrawingShapeProps ();_gafb :=true ;_dbc .NvSpPr .CNvSpPr .TxBoxAttr =&_gafb ;_dbc .TxBody =_af .NewCT_TextBody ();_dbc .TxBody .BodyPr =_af .NewCT_TextBodyProperties ();_dbc .TxBody .BodyPr .WrapAttr =_af .ST_TextWrappingTypeSquare ;_dbc .TxBody .BodyPr .SpAutoFit =_af .NewCT_TextShapeAutofit ();_ccfb :=TextBox {_dbc };_ccfb .Properties ().SetWidth (3*_bc .Inch );_ccfb .Properties ().SetHeight (1*_bc .Inch );_ccfb .Properties ().SetPosition (0,0);return _ccfb ;};
// X returns the inner wrapped XML type.
func (_aaca SlideMaster )X ()*_ae .SldMaster {return _aaca ._egef };
// TableInfo is used for keep information about a table, a row and a cell where the text is located.
type TableInfo struct{Table *_af .CT_Table ;Row *_af .CT_TableRow ;Cell *_af .CT_TableCell ;RowIndex int ;ColIndex int ;};const _cbf float64 =500000;
// ExtLst returns the ExtLst property.
func (_dgg PresentationProperties )ExtLst ()*_ae .CT_ExtensionList {return _dgg ._gbc .ExtLst };
// 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 (_cff *Presentation )AddSlideWithLayout (l SlideLayout )(Slide ,error ){_gcga :=_ae .NewCT_SlideIdListEntry ();_gcga .IdAttr =256;for _ ,_fag :=range _cff ._fbaa .SldIdLst .SldId {if _fag .IdAttr >=_gcga .IdAttr {_gcga .IdAttr =_fag .IdAttr +1;};};_cff ._fbaa .SldIdLst .SldId =append (_cff ._fbaa .SldIdLst .SldId ,_gcga );_aae :=_ae .NewSld ();_aaeb :=_bcc .Buffer {};_gae :=_cg .NewEncoder (&_aaeb );_aga :=_cg .StartElement {Name :_cg .Name {Local :"\u0073\u006c\u0069d\u0065"}};_aga .Attr =append (_aga .Attr ,_cg .Attr {Name :_cg .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"});_aga .Attr =append (_aga .Attr ,_cg .Attr {Name :_cg .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"});_aga .Attr =append (_aga .Attr ,_cg .Attr {Name :_cg .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"});_aga .Attr =append (_aga .Attr ,_cg .Attr {Name :_cg .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"});_aga .Attr =append (_aga .Attr ,_cg .Attr {Name :_cg .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"});_aga .Attr =append (_aga .Attr ,_cg .Attr {Name :_cg .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 _dedb :=l ._acgg .CSld .MarshalXML (_gae ,_aga );_dedb !=nil {return Slide {},_dedb ;};_gae .Flush ();_geg :=_cg .NewDecoder (&_aaeb );_aae .CSld =_ae .NewCT_CommonSlideData ();if _gcb :=_geg .Decode (_aae .CSld );_gcb !=nil {return Slide {},_gcb ;};_aae .CSld .NameAttr =nil ;_aae .CSld .SpTree .Choice =_fgf (_aae .CSld .SpTree .Choice );_cff ._ded =append (_cff ._ded ,_aae );_eceg :=_cff ._cgb .AddAutoRelationship (_ce .DocTypePresentation ,_ce .OfficeDocumentType ,len (_cff ._ded ),_ce .SlideType );_gcga .RIdAttr =_eceg .ID ();_geb :=_ce .AbsoluteFilename (_ce .DocTypePresentation ,_ce .SlideType ,len (_cff ._ded ));_cff .ContentTypes .AddOverride (_geb ,_ce .SlideContentType );_cee :=_a .NewRelationships ();_cff ._dcf =append (_cff ._dcf ,_cee );_bfcc :=len (_cff ._dcf )-1;for _dgb ,_cecb :=range _cff ._gaba {if _cecb ==l .X (){_dca :=_cff ._cgd [_dgb ];for _ ,_feb :=range _dca .X ().Relationship {if _feb .TypeAttr !=_ce .SlideMasterType {_cff ._dcf [_bfcc ].X ().Relationship =append (_cff ._dcf [_bfcc ].X ().Relationship ,_feb );};};_cee .AddAutoRelationship (_ce .DocTypePresentation ,_ce .SlideType ,_dgb +1,_ce .SlideLayoutType );};};_fcad :=Slide {_gcga ,_aae ,_cff ,nil };return _fcad ,nil ;};func (_ece sort2d )Len ()int {return len (_ece )};var _gfed =false ;
// SorterViewPr returns the SorterViewPr property.
func (_fdb ViewProperties )SorterViewPr ()*_ae .CT_SlideSorterViewProperties {return _fdb ._fccd .SorterViewPr ;};
// ExtLst returns the ExtLst property.
func (_aed ViewProperties )ExtLst ()*_ae .CT_ExtensionList {return _aed ._fccd .ExtLst };
// Properties returns the properties of the TextBox.
func (_fabaa TextBox )Properties ()_fad .ShapeProperties {if _fabaa ._dbeg .SpPr ==nil {_fabaa ._dbeg .SpPr =_af .NewCT_ShapeProperties ();};return _fad .MakeShapeProperties (_fabaa ._dbeg .SpPr );};
// GetSlideLayout returns a slide layout related to the slide.
func (_gbcg *Slide )GetSlideLayout ()*_ae .SldLayout {for _fcde ,_geab :=range _gbcg ._gbce .Slides (){if *_gbcg ==_geab {return _gbcg ._gbce ._gaba [len (_gbcg ._gbce .Slides ())-_fcde -1];};};return nil ;};
// SlideLayouts returns a slice of all layouts in SlideMaster.
func (_fbafb SlideMaster )SlideLayouts ()[]SlideLayout {_caff :=map[string ]int {};_aea :=[]SlideLayout {};for _ ,_adaf :=range _fbafb ._cdg .Relationships (){_eda :=_g .Replace (_adaf .Target (),".\u002e\u002f\u0073\u006c\u0069\u0064e\u004c\u0061\u0079\u006f\u0075\u0074\u0073\u002f\u0073l\u0069\u0064\u0065L\u0061y\u006f\u0075\u0074","",-1);_eda =_g .Replace (_eda ,"\u002e\u0078\u006d\u006c","",-1);if _add ,_fda :=_f .ParseInt (_eda ,10,32);_fda ==nil {_caff [_adaf .ID ()]=int (_add );};};for _ ,_aebg :=range _fbafb ._egef .SldLayoutIdLst .SldLayoutId {if _gece ,_dccg :=_caff [_aebg .RIdAttr ];_dccg {_dbdc :=_fbafb ._gcab ._gaba [_gece -1];_aea =append (_aea ,SlideLayout {_dbdc });};};return _aea ;};func (_bgd *Slide )ensureClrMap (){if len (_bgd ._gbce ._bccd )==0||len (_bgd ._gbce ._geaf )==0{return ;};_cab :=_bgd ._gbce ._bccd [0];_febbe :=_cab .ClrMap ;if _becb :=_bgd ._abaa .ClrMapOvr ;_becb !=nil {if _aecb :=_becb .Choice ;_aecb !=nil {if _aecb .MasterClrMapping ==nil {if _cgbg :=_aecb .OverrideClrMapping ;_cgbg !=nil {if _cgbg .Bg1Attr !=_af .ST_ColorSchemeIndexUnset {_febbe .Bg1Attr =_cgbg .Bg1Attr ;};if _cgbg .Tx1Attr !=_af .ST_ColorSchemeIndexUnset {_febbe .Tx1Attr =_cgbg .Tx1Attr ;};if _cgbg .Bg2Attr !=_af .ST_ColorSchemeIndexUnset {_febbe .Bg2Attr =_cgbg .Bg2Attr ;};if _cgbg .Tx2Attr !=_af .ST_ColorSchemeIndexUnset {_febbe .Tx2Attr =_cgbg .Tx2Attr ;};if _cgbg .Accent1Attr !=_af .ST_ColorSchemeIndexUnset {_febbe .Accent1Attr =_cgbg .Accent1Attr ;};if _cgbg .Accent2Attr !=_af .ST_ColorSchemeIndexUnset {_febbe .Accent2Attr =_cgbg .Accent2Attr ;};if _cgbg .Accent3Attr !=_af .ST_ColorSchemeIndexUnset {_febbe .Accent3Attr =_cgbg .Accent3Attr ;};if _cgbg .Accent4Attr !=_af .ST_ColorSchemeIndexUnset {_febbe .Accent4Attr =_cgbg .Accent4Attr ;};if _cgbg .Accent5Attr !=_af .ST_ColorSchemeIndexUnset {_febbe .Accent5Attr =_cgbg .Accent5Attr ;};if _cgbg .Accent6Attr !=_af .ST_ColorSchemeIndexUnset {_febbe .Accent6Attr =_cgbg .Accent6Attr ;};if _cgbg .HlinkAttr !=_af .ST_ColorSchemeIndexUnset {_febbe .HlinkAttr =_cgbg .HlinkAttr ;};if _cgbg .FolHlinkAttr !=_af .ST_ColorSchemeIndexUnset {_febbe .FolHlinkAttr =_cgbg .FolHlinkAttr ;};};};};};_bgd ._ecbf =_febbe ;};
// ShowPr returns the ShowPr property.
func (_cdf PresentationProperties )ShowPr ()*_ae .CT_ShowProperties {return _cdf ._gbc .ShowPr };
// Themes returns an array of presentation themes.
func (_baff *Presentation )Themes ()[]*_af .Theme {return _baff ._geaf };
// GetTableStyleById returns *dml.CT_TableStyle by its style id.
func (_bbef *Presentation )GetTableStyleById (id string )*_af .CT_TableStyle {_gegf :=_bbef ._fgd .TblStyle ();for _ ,_acfa :=range _gegf {if _acfa .StyleIdAttr ==id {return _acfa ;};};return nil ;};func (_bb *chart )Target ()string {return _bb ._gc };
// 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 (_afd *Presentation )AddDefaultSlideWithLayout (l SlideLayout )(Slide ,error ){_ddc ,_dag :=_afd .AddSlideWithLayout (l );for _ ,_ddba :=range _ddc .PlaceHolders (){_ddba .Clear ();switch _ddba .Type (){case _ae .ST_PlaceholderTypeFtr ,_ae .ST_PlaceholderTypeDt ,_ae .ST_PlaceholderTypeSldNum :_ddba .Remove ();};};return _ddc ,_dag ;};type sort2d []*TextItem ;
// SlideMasters returns the slide masters defined in the presentation.
func (_fedb *Presentation )SlideMasters ()[]SlideMaster {_bbfd :=[]SlideMaster {};for _gedec ,_cbfa :=range _fedb ._bccd {_bbfd =append (_bbfd ,SlideMaster {_fedb ,_fedb ._bbde [_gedec ],_cbfa });};return _bbfd ;};
// Properties returns the properties of the TextBox.
func (_cfe Image )Properties ()_fad .ShapeProperties {if _cfe ._aa .SpPr ==nil {_cfe ._aa .SpPr =_af .NewCT_ShapeProperties ();};return _fad .MakeShapeProperties (_cfe ._aa .SpPr );};
// Remove removes a placeholder from a presentation.
func (_cfa PlaceHolder )Remove ()error {for _cdc ,_bgac :=range _cfa ._dcb .CSld .SpTree .Choice {for _ ,_bfe :=range _bgac .Sp {if _bfe ==_cfa ._ddg {copy (_cfa ._dcb .CSld .SpTree .Choice [_cdc :],_cfa ._dcb .CSld .SpTree .Choice [_cdc +1:]);_cfa ._dcb .CSld .SpTree .Choice =_cfa ._dcb .CSld .SpTree .Choice [0:len (_cfa ._dcb .CSld .SpTree .Choice )-1];return nil ;};};};return _ega .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");};
// Index returns the placeholder index
func (_fce PlaceHolder )Index ()uint32 {if _fce ._ddg .NvSpPr .NvPr .Ph .IdxAttr ==nil {return 0;};return *_fce ._ddg .NvSpPr .NvPr .Ph .IdxAttr ;};
// SlideMaster is the slide master for a presentation.
type SlideMaster struct{_gcab *Presentation ;_cdg _a .Relationships ;_egef *_ae .SldMaster ;};
// AddTable adds an empty table to a slide.
func (_bgbd Slide )AddTable ()*_a .Table {_ecaf :=_ae .NewCT_GroupShapeChoice ();_bgbd ._abaa .CSld .SpTree .Choice =append (_bgbd ._abaa .CSld .SpTree .Choice ,_ecaf );_cbee :=_ae .NewCT_GraphicalObjectFrame ();_ecaf .GraphicFrame =append (_ecaf .GraphicFrame ,_cbee );_cbee .Xfrm .Off =_af .NewCT_Point2D ();_fgbb :=int64 (1);_cbee .Xfrm .Off .XAttr =_af .ST_Coordinate {ST_CoordinateUnqualified :&_fgbb };_cbee .Xfrm .Off .YAttr =_af .ST_Coordinate {ST_CoordinateUnqualified :&_fgbb };_fbbd :=_cbee .Graphic .CT_GraphicalObject .GraphicData ;_fbbd .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";_bcba :=_a .NewTableWithXfrm (_cbee .Xfrm );_fbbd .Any =append (_fbbd .Any ,_bcba .X ());return _bcba ;};
// AddImage adds an image textbox to a slide.
func (_bgfe Slide )AddImage (img _a .ImageRef )Image {_abb :=_ae .NewCT_GroupShapeChoice ();_bgfe ._abaa .CSld .SpTree .Choice =append (_bgfe ._abaa .CSld .SpTree .Choice ,_abb );_ecda :=_ae .NewCT_Picture ();_abb .Pic =append (_abb .Pic ,_ecda );_ecda .NvPicPr .CNvPicPr =_af .NewCT_NonVisualPictureProperties ();_ecda .NvPicPr .CNvPicPr .PicLocks =_af .NewCT_PictureLocking ();_ecda .NvPicPr .CNvPicPr .PicLocks .NoChangeAspectAttr =_ce .Bool (true );_ecda .BlipFill =_af .NewCT_BlipFillProperties ();_ecda .BlipFill .Blip =_af .NewCT_Blip ();_bdb :=_bgfe .AddImageToRels (img );_ecda .BlipFill .Blip .EmbedAttr =_ce .String (_bdb );_ecda .BlipFill .Stretch =_af .NewCT_StretchInfoProperties ();_ecda .BlipFill .Stretch .FillRect =_af .NewCT_RelativeRect ();_ecda .SpPr =_af .NewCT_ShapeProperties ();_ecda .SpPr .PrstGeom =_af .NewCT_PresetGeometry2D ();_ecda .SpPr .PrstGeom .PrstAttr =_af .ST_ShapeTypeRect ;_eebe :=Image {_ecda };_bcgb :=img .Size ();_eebe .Properties ().SetWidth (_bc .Distance (_bcgb .X )*_bc .Pixel72 );_eebe .Properties ().SetHeight (_bc .Distance (_bcgb .Y )*_bc .Pixel72 );_eebe .Properties ().SetPosition (0,0);return _eebe ;};
// PrnPr returns the PrnPr property.
func (_eec PresentationProperties )PrnPr ()*_ae .CT_PrintProperties {return _eec ._gbc .PrnPr };
// Close closes the presentation, removing any temporary files that might have been
// created when opening a document.
func (_egd *Presentation )Close ()error {if _egd .TmpPath !=""{return _eg .RemoveAll (_egd .TmpPath );};return nil ;};
// Image is an image within a slide.
type Image struct{_aa *_ae .CT_Picture };