unioffice/presentation/presentation.go
2023-07-04 11:04:03 +00:00

364 lines
78 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 (_dg "archive/zip";_af "bytes";_bb "encoding/xml";_acb "errors";_e "fmt";_fea "github.com/unidoc/unioffice";_da "github.com/unidoc/unioffice/common";_g "github.com/unidoc/unioffice/common/logger";_b "github.com/unidoc/unioffice/common/tempstorage";_bd "github.com/unidoc/unioffice/drawing";_dc "github.com/unidoc/unioffice/internal/license";_cab "github.com/unidoc/unioffice/measurement";_bde "github.com/unidoc/unioffice/schema/soo/dml";_fe "github.com/unidoc/unioffice/schema/soo/dml/chart";_ac "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_ca "github.com/unidoc/unioffice/schema/soo/pkg/relationships";_ae "github.com/unidoc/unioffice/schema/soo/pml";_c "github.com/unidoc/unioffice/zippkg";_ag "image";_bc "image/jpeg";_cf "io";_cfd "math";_be "os";_ab "path";_fa "sort";_d "strconv";_a "strings";);func (_aac sort2d )Len ()int {return len (_aac )};
// Slides returns the slides in the presentation.
func (_cddc *Presentation )Slides ()[]Slide {_geb :=[]Slide {};for _dfb ,_bag :=range _cddc ._afec {_geb =append (_geb ,Slide {_cddc ._gffd .SldIdLst .SldId [_dfb ],_bag ,_cddc ,nil });};return _geb ;};
// Read reads a document from an io.Reader.
func Read (r _cf .ReaderAt ,size int64 )(*Presentation ,error ){const _bbec ="\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e:\u0052\u0065\u0061\u0064";if !_dc .GetLicenseKey ().IsLicensed ()&&!_abb {_e .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");_e .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 ,_acb .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");};_aea :=_gfebe ();_egfd ,_ggba :=_dc .GenRefId ("\u0070\u0072");if _ggba !=nil {_g .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_ggba );return nil ,_ggba ;};_aea ._cdc =_egfd ;if _dgbg :=_dc .Track (_aea ._cdc ,_bbec );_dgbg !=nil {_g .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dgbg );return nil ,_dgbg ;};_fbg ,_ggba :=_b .TempDir ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065-\u0070\u0070\u0074\u0078");if _ggba !=nil {return nil ,_ggba ;};_aea .TmpPath =_fbg ;_ccba ,_ggba :=_dg .NewReader (r ,size );if _ggba !=nil {return nil ,_e .Errorf ("\u0070a\u0072s\u0069\u006e\u0067\u0020\u007a\u0069\u0070\u003a\u0020\u0025\u0073",_ggba );};_bcdc :=[]*_dg .File {};_bcdc =append (_bcdc ,_ccba .File ...);_fgba :=false ;for _ ,_ecgf :=range _bcdc {if _ecgf .FileHeader .Name =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_fgba =true ;break ;};};if _fgba {_aea .CreateCustomProperties ();};_gaf :=_c .DecodeMap {};_gaf .SetOnNewRelationshipFunc (_aea .onNewRelationship );_gaf .AddTarget (_fea .ContentTypesFilename ,_aea .ContentTypes .X (),"",0);_gaf .AddTarget (_fea .BaseRelsFilename ,_aea .Rels .X (),"",0);if _cbd :=_gaf .Decode (_bcdc );_cbd !=nil {return nil ,_cbd ;};for _ ,_cdfc :=range _bcdc {if _cdfc ==nil {continue ;};if _cafe :=_aea .AddExtraFileFromZip (_cdfc );_cafe !=nil {return nil ,_cafe ;};};if _fgba {_dfef :=false ;for _ ,_fbe :=range _aea .Rels .X ().Relationship {if _fbe .TargetAttr =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_dfef =true ;break ;};};if !_dfef {_aea .AddCustomRelationships ();};};return _aea ,nil ;};
// ExtLst returns the ExtLst property.
func (_aaa PresentationProperties )ExtLst ()*_ae .CT_ExtensionList {return _aaa ._baf .ExtLst };
// HtmlPubPr returns the HtmlPubPr property.
func (_gaae PresentationProperties )HtmlPubPr ()*_ae .CT_HtmlPublishProperties {return _gaae ._baf .HtmlPubPr ;};
// X returns the inner wrapped XML type.
func (_bbae SlideMaster )X ()*_ae .SldMaster {return _bbae ._dcbd };
// SetOffsetX sets horizontal offset of text box in distance units (see measurement package).
func (_dbec TextBox )SetOffsetX (offX float64 ){_ddb :=_dbec .getOff ();_beff :=_cab .ToEMU (offX );_ddb .XAttr =_bde .ST_Coordinate {ST_CoordinateUnqualified :&_beff };};
// X returns the inner wrapped XML type.
func (_gccd PlaceHolder )X ()*_ae .CT_Shape {return _gccd ._efe };
// Open opens and reads a document from a file (.pptx).
func Open (filename string )(*Presentation ,error ){_aaf ,_aca :=_be .Open (filename );if _aca !=nil {return nil ,_e .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_aca );};defer _aaf .Close ();_gce ,_aca :=_be .Stat (filename );if _aca !=nil {return nil ,_e .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_aca );};_ =_gce ;return Read (_aaf ,_gce .Size ());};
// X returns the inner wrapped XML type.
func (_cbg *SlideSize )X ()*_ae .CT_SlideSize {return _cbg ._fdgg };
// GetTableStyleById returns *dml.CT_TableStyle by its style id.
func (_baa *Presentation )GetTableStyleById (id string )*_bde .CT_TableStyle {_cfab :=_baa ._gdba .TblStyle ();for _ ,_dgff :=range _cfab {if _dgff .StyleIdAttr ==id {return _dgff ;};};return nil ;};func (_bcgg *Slide )getSlideRels ()_da .Relationships {_acbb :=_bcgg ._cbfg ;for _eegd ,_fbag :=range _acbb .Slides (){if *_bcgg ._acg ==*_fbag ._acg {return _acbb ._efb [len (_acbb ._efb )-_eegd -1];};};return _da .Relationships {};};
// Text returns text from a presentation as one string separated with line breaks.
func (_edb *PresentationText )Text ()string {_bbf :=_af .NewBuffer ([]byte {});for _ ,_fbb :=range _edb .Slides {_bbf .WriteString (_fbb .Text ());};return _bbf .String ();};func (_gfa *Presentation )nextSlideID ()uint32 {_bbc :=uint32 (256);for _ ,_dded :=range _gfa ._gffd .SldIdLst .SldId {if _dded .IdAttr >=_bbc {_bbc =_dded .IdAttr +1;};};return _bbc ;};func _cbf (_fec *Presentation ,_dad []*_ae .CT_GroupShapeChoice ,_ea []rectangle ,_bcb []*TextItem )[]*TextItem {for _ ,_bba :=range _dad {_eag :=append ([]rectangle {},_ea ...);for _ ,_bdg :=range _bba .Sp {_bcb =append (_bcb ,_dfc (_fec ,_bdg ,nil ,nil ,_bdg .SpPr .Xfrm ,0,_ea ,_bdg .TxBody .P )...);};for _ ,_gfd :=range _bba .GraphicFrame {if _gfd !=nil &&_gfd .Graphic !=nil &&_gfd .Graphic .GraphicData !=nil {_fd :=_gfd .Xfrm ;for _ ,_cbc :=range _gfd .Graphic .GraphicData .Any {if _gb ,_ecb :=_cbc .(*_bde .Tbl );_ecb {_bdf :=&_gb .CT_Table ;_gaa :=0;for _fee ,_bgd :=range _gb .Tr {for _ccf ,_dgf :=range _bgd .Tc {_aa :=&TableInfo {Table :_bdf ,Row :_bgd ,Cell :_dgf ,RowIndex :_fee ,ColIndex :_ccf };_bcb =append (_bcb ,_dfc (_fec ,nil ,_gfd ,_aa ,_fd ,_gaa ,_ea ,_dgf .TxBody .P )...);_gaa ++;};};};};};};for _ ,_acd :=range _bba .GrpSp {if _acd .GrpSpPr !=nil {_ece :=_acd .GrpSpPr .Xfrm ;var _de ,_gfg int64 ;if _ece .Off !=nil {_bdec ,_bcc :=_ece .Off .XAttr .ST_CoordinateUnqualified ,_ece .Off .YAttr .ST_CoordinateUnqualified ;if _bdec !=nil &&_bcc !=nil {if _bef :=_ece .Ext ;_bef !=nil {_de ,_gfg =_bef .CxAttr ,_bef .CyAttr ;};_eag =append (_eag ,rectangle {_gc :*_bdec ,_ccb :*_bcc ,_gf :*_bdec +_de ,_df :*_bcc +_gfg });};};};_bcb =_cbf (_fec ,_acd .Choice ,_eag ,_bcb );};};return _bcb ;};
// ClearAll completely clears a placeholder. To be useable, at least one
// paragraph must be added after ClearAll via AddParagraph.
func (_ffg PlaceHolder )ClearAll (){_ffg ._efe .SpPr =_bde .NewCT_ShapeProperties ();_ffg ._efe .TxBody =_bde .NewCT_TextBody ();_ffg ._efe .TxBody .LstStyle =_bde .NewCT_TextListStyle ();};
// GetTextBoxes returns a list of all text boxes from a slide.
func (_adga Slide )GetTextBoxes ()[]*TextBox {_bed :=[]*TextBox {};_fdf :=_adga ._acg .CSld .SpTree .Choice ;for _ ,_eacf :=range _fdf {for _ ,_aedb :=range _eacf .Sp {if _aedb .NvSpPr .CNvSpPr .TxBoxAttr !=nil &&*_aedb .NvSpPr .CNvSpPr .TxBoxAttr {_bed =append (_bed ,&TextBox {_aedb });};};};return _bed ;};var (SlideScreenSize16x9 =SlideScreenSize {12192000,6858000};SlideScreenSize4x3 =SlideScreenSize {9144000,6858000};SlideScreenSizeA4 =SlideScreenSize {9906000,6858000};);
// AddSlide adds a new slide to the presentation.
func (_ege *Presentation )AddSlide ()Slide {_fdg :=_ae .NewCT_SlideIdListEntry ();_fdg .IdAttr =_ege .nextSlideID ();_ege ._gffd .SldIdLst .SldId =append (_ege ._gffd .SldIdLst .SldId ,_fdg );_ebc :=_ae .NewSld ();_ebc .CSld .SpTree .NvGrpSpPr .CNvPr .IdAttr =1;_ebc .CSld .SpTree .GrpSpPr .Xfrm =_bde .NewCT_GroupTransform2D ();_ebc .CSld .SpTree .GrpSpPr .Xfrm .Off =_bde .NewCT_Point2D ();_ebc .CSld .SpTree .GrpSpPr .Xfrm .Off .XAttr .ST_CoordinateUnqualified =_fea .Int64 (0);_ebc .CSld .SpTree .GrpSpPr .Xfrm .Off .YAttr .ST_CoordinateUnqualified =_fea .Int64 (0);_ebc .CSld .SpTree .GrpSpPr .Xfrm .Ext =_bde .NewCT_PositiveSize2D ();_ebc .CSld .SpTree .GrpSpPr .Xfrm .Ext .CxAttr =int64 (0*_cab .Point );_ebc .CSld .SpTree .GrpSpPr .Xfrm .Ext .CyAttr =int64 (0*_cab .Point );_ebc .CSld .SpTree .GrpSpPr .Xfrm .ChOff =_ebc .CSld .SpTree .GrpSpPr .Xfrm .Off ;_ebc .CSld .SpTree .GrpSpPr .Xfrm .ChExt =_ebc .CSld .SpTree .GrpSpPr .Xfrm .Ext ;_ege ._afec =append (_ege ._afec ,_ebc );_gdbad :=_ege ._gcf .AddAutoRelationship (_fea .DocTypePresentation ,_fea .OfficeDocumentType ,len (_ege ._afec ),_fea .SlideType );_fdg .RIdAttr =_gdbad .ID ();_cee :=_fea .AbsoluteFilename (_fea .DocTypePresentation ,_fea .SlideType ,len (_ege ._afec ));_ege .ContentTypes .AddOverride (_cee ,_fea .SlideContentType );_faf :=_da .NewRelationships ();_ege ._efb =append (_ege ._efb ,_faf );_faf .AddAutoRelationship (_fea .DocTypePresentation ,_fea .SlideType ,len (_ege ._egg ),_fea .SlideLayoutType );return Slide {_fdg ,_ebc ,_ege ,nil };};
// X returns the inner wrapped XML type.
func (_efd *Presentation )X ()*_ae .Presentation {return _efd ._gffd };
// Properties returns the properties of the TextBox.
func (_bdbd TextBox )Properties ()_bd .ShapeProperties {if _bdbd ._dbeb .SpPr ==nil {_bdbd ._dbeb .SpPr =_bde .NewCT_ShapeProperties ();};return _bd .MakeShapeProperties (_bdbd ._dbeb .SpPr );};
// Properties returns the properties of the TextBox.
func (_fac Image )Properties ()_bd .ShapeProperties {if _fac ._bad .SpPr ==nil {_fac ._bad .SpPr =_bde .NewCT_ShapeProperties ();};return _bd .MakeShapeProperties (_fac ._bad .SpPr );};
// OutlineViewPr returns the OutlineViewPr property.
func (_efdc ViewProperties )OutlineViewPr ()*_ae .CT_OutlineViewProperties {return _efdc ._efeg .OutlineViewPr ;};
// Text returns text from a slide as one string separated with line breaks.
func (_fc *SlideText )Text ()string {_gfda :=_af .NewBuffer ([]byte {});for _ ,_gdb :=range _fc .Items {if _gdb .Text !=""{_gfda .WriteString (_gdb .Text );_gfda .WriteString ("\u000a");};};return _gfda .String ();};
// SorterViewPr returns the SorterViewPr property.
func (_cead ViewProperties )SorterViewPr ()*_ae .CT_SlideSorterViewProperties {return _cead ._efeg .SorterViewPr ;};
// SaveToFileAsTemplate writes the Presentation out to a file as a template.
func (_eagg *Presentation )SaveToFileAsTemplate (path string )error {return _eagg .saveToFile (path ,true );};
// GetChartSpaceByRelId returns a *crt.ChartSpace with the associated relation ID in the
// slide.
func (_egef *Slide )GetChartSpaceByRelId (relId string )*_fe .ChartSpace {_bfca :=_egef .getSlideRels ();if (_bfca ==_da .Relationships {}){return nil ;};_aeb :=_bfca .GetTargetByRelId (relId );for _ ,_efef :=range _egef ._cbfg ._facd {if _aeb ==_efef .Target (){return _efef ._cd ;};};return nil ;};
// X returns the inner wrapped XML type.
func (_aabd ViewProperties )X ()*_ae .ViewPr {return _aabd ._efeg };type sort2d []*TextItem ;
// NewPresentationProperties constructs a new PresentationProperties.
func NewPresentationProperties ()PresentationProperties {return PresentationProperties {_baf :_ae .NewPresentationPr ()};};const _bbb float64 =500000;
// NotesViewPr returns the NotesViewPr property.
func (_fcdd ViewProperties )NotesViewPr ()*_ae .CT_NotesViewProperties {return _fcdd ._efeg .NotesViewPr };
// Width returns slide screen size width in EMU units.
func (_aaba *SlideScreenSize )Width ()int32 {return _aaba [0]};
// 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 (_fgf PlaceHolder )Clear (){_fgf .ClearAll ();_bgg :=_bde .NewCT_TextParagraph ();_fgf ._efe .TxBody .P =[]*_bde .CT_TextParagraph {_bgg };_bgg .EndParaRPr =_bde .NewCT_TextCharacterProperties ();_bgg .EndParaRPr .LangAttr =_fea .String ("\u0065\u006e\u002dU\u0053");};func (_dcc *Presentation )Validate ()error {if _aefd :=_dcc ._gffd .Validate ();_aefd !=nil {return _aefd ;};for _ccff ,_gcfa :=range _dcc .Slides (){if _afbdd :=_gcfa .ValidateWithPath (_e .Sprintf ("\u0053l\u0069\u0064\u0065\u005b\u0025\u0064]",_ccff ));_afbdd !=nil {return _afbdd ;};};for _bdd ,_ada :=range _dcc ._eg {if _gae :=_ada .ValidateWithPath (_e .Sprintf ("\u0053l\u0069d\u0065\u004d\u0061\u0073\u0074\u0065\u0072\u005b\u0025\u0064\u005d",_bdd ));_gae !=nil {return _gae ;};};for _bfc ,_dbde :=range _dcc ._egg {if _cfec :=_dbde .ValidateWithPath (_e .Sprintf ("\u0053l\u0069d\u0065\u004c\u0061\u0079\u006f\u0075\u0074\u005b\u0025\u0064\u005d",_bfc ));_cfec !=nil {return _cfec ;};};return nil ;};
// PrnPr returns the PrnPr property.
func (_efg PresentationProperties )PrnPr ()*_ae .CT_PrintProperties {return _efg ._baf .PrnPr };func (_ffgd *Presentation )saveToFile (_abebf string ,_fce bool )error {_fgg ,_gbfb :=_be .Create (_abebf );if _gbfb !=nil {return _gbfb ;};defer _fgg .Close ();return _ffgd .save (_fgg ,_fce );};
// AddTextBox adds an empty textbox to a slide.
func (_afgc Slide )AddTextBox ()TextBox {_eef :=_ae .NewCT_GroupShapeChoice ();_afgc ._acg .CSld .SpTree .Choice =append (_afgc ._acg .CSld .SpTree .Choice ,_eef );_ccg :=_ae .NewCT_Shape ();_eef .Sp =append (_eef .Sp ,_ccg );_ccg .SpPr =_bde .NewCT_ShapeProperties ();_ccg .SpPr .Xfrm =_bde .NewCT_Transform2D ();_ccg .SpPr .PrstGeom =_bde .NewCT_PresetGeometry2D ();_ccg .SpPr .PrstGeom .PrstAttr =_bde .ST_ShapeTypeRect ;_ccg .NvSpPr =_ae .NewCT_ShapeNonVisual ();_ccg .NvSpPr .CNvSpPr =_bde .NewCT_NonVisualDrawingShapeProps ();_fdcd :=true ;_ccg .NvSpPr .CNvSpPr .TxBoxAttr =&_fdcd ;_ccg .TxBody =_bde .NewCT_TextBody ();_ccg .TxBody .BodyPr =_bde .NewCT_TextBodyProperties ();_ccg .TxBody .BodyPr .WrapAttr =_bde .ST_TextWrappingTypeSquare ;_ccg .TxBody .BodyPr .SpAutoFit =_bde .NewCT_TextShapeAutofit ();_eae :=TextBox {_ccg };_eae .Properties ().SetWidth (3*_cab .Inch );_eae .Properties ().SetHeight (1*_cab .Inch );_eae .Properties ().SetPosition (0,0);return _eae ;};
// Save writes the presentation out to a writer in the Zip package format
func (_gbg *Presentation )Save (w _cf .Writer )error {return _gbg .save (w ,false )};
// SetTextAnchor controls the text anchoring
func (_bff TextBox )SetTextAnchor (a _bde .ST_TextAnchoringType ){_bff ._dbeb .TxBody .BodyPr =_bde .NewCT_TextBodyProperties ();_bff ._dbeb .TxBody .BodyPr .AnchorAttr =a ;};
// X returns the inner wrapped XML type.
func (_aefg Slide )X ()*_ae .Sld {return _aefg ._acg };
// 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 (_effb Slide )GetPlaceholderByIndex (idx uint32 )(PlaceHolder ,error ){for _ ,_cdfd :=range _effb ._acg .CSld .SpTree .Choice {for _ ,_fdc :=range _cdfd .Sp {if _fdc .NvSpPr !=nil &&_fdc .NvSpPr .NvPr !=nil &&_fdc .NvSpPr .NvPr .Ph !=nil {if (idx ==0&&_fdc .NvSpPr .NvPr .Ph .IdxAttr ==nil )||(_fdc .NvSpPr .NvPr .Ph .IdxAttr !=nil &&*_fdc .NvSpPr .NvPr .Ph .IdxAttr ==idx ){return PlaceHolder {_fdc ,_effb ._acg },nil ;};};};};return PlaceHolder {},_acb .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");};
// SlideLayouts returns a slice of all layouts in SlideMaster.
func (_bfad SlideMaster )SlideLayouts ()[]SlideLayout {_accc :=map[string ]int {};_dead :=[]SlideLayout {};for _ ,_afef :=range _bfad ._bbfd .Relationships (){_acbe :=_a .Replace (_afef .Target (),".\u002e\u002f\u0073\u006c\u0069\u0064e\u004c\u0061\u0079\u006f\u0075\u0074\u0073\u002f\u0073l\u0069\u0064\u0065L\u0061y\u006f\u0075\u0074","",-1);_acbe =_a .Replace (_acbe ,"\u002e\u0078\u006d\u006c","",-1);if _cbdg ,_gad :=_d .ParseInt (_acbe ,10,32);_gad ==nil {_accc [_afef .ID ()]=int (_cbdg );};};for _ ,_ebf :=range _bfad ._dcbd .SldLayoutIdLst .SldLayoutId {if _facb ,_dfdd :=_accc [_ebf .RIdAttr ];_dfdd {_deec :=_bfad ._ebbd ._egg [_facb -1];_dead =append (_dead ,SlideLayout {_deec });};};return _dead ;};
// Close closes the presentation, removing any temporary files that might have been
// created when opening a document.
func (_dff *Presentation )Close ()error {if _dff .TmpPath !=""{return _b .RemoveAll (_dff .TmpPath );};return nil ;};
// LastViewAttr returns the LastViewAttr property.
func (_gfab ViewProperties )LastViewAttr ()_ae .ST_ViewType {return _gfab ._efeg .LastViewAttr };
// Image is an image within a slide.
type Image struct{_bad *_ae .CT_Picture };
// AddTable adds a new table to a placeholder.
func (_ccbd PlaceHolder )AddTable ()*_da .Table {_ccbd .Clear ();_dbf :=_ae .NewCT_GroupShapeChoice ();_ccbd ._caa .CSld .SpTree .Choice =append (_ccbd ._caa .CSld .SpTree .Choice ,_dbf );_cbce :=_ae .NewCT_GraphicalObjectFrame ();_dbf .GraphicFrame =append (_dbf .GraphicFrame ,_cbce );_cbce .Xfrm .Off =_bde .NewCT_Point2D ();_dgc :=int64 (1);_cbce .Xfrm .Off .XAttr =_bde .ST_Coordinate {ST_CoordinateUnqualified :&_dgc };_cbce .Xfrm .Off .YAttr =_bde .ST_Coordinate {ST_CoordinateUnqualified :&_dgc };_gdf :=_cbce .Graphic .CT_GraphicalObject .GraphicData ;_gdf .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";_afce :=_da .NewTableWithXfrm (_cbce .Xfrm );_gdf .Any =append (_gdf .Any ,_afce .X ());return _afce ;};
// Slide represents a slide of a presentation.
type Slide struct{_bdfd *_ae .CT_SlideIdListEntry ;_acg *_ae .Sld ;_cbfg *Presentation ;_dfdf *_bde .CT_ColorMapping ;};func _gfebe ()*Presentation {_cgb :=&Presentation {_gffd :_ae .NewPresentation ()};_cgb ._gffd .SldIdLst =_ae .NewCT_SlideIdList ();_cgb ._gffd .ConformanceAttr =_ac .ST_ConformanceClassTransitional ;_cgb .AppProperties =_da .NewAppProperties ();_cgb .CoreProperties =_da .NewCoreProperties ();_cgb ._gdba =_da .NewTableStyles ();_cgb .ContentTypes =_da .NewContentTypes ();_cgb .Rels =_da .NewRelationships ();_cgb ._gcf =_da .NewRelationships ();_cgb ._abf =NewPresentationProperties ();_cgb ._bbd =NewViewProperties ();_cgb ._gfeb =map[string ]string {};return _cgb ;};func (_fb *chart )X ()*_fe .ChartSpace {return _fb ._cd };
// AddParagraph adds a new paragraph to a placeholder.
func (_fad PlaceHolder )AddParagraph ()_bd .Paragraph {_agae :=_bd .MakeParagraph (_bde .NewCT_TextParagraph ());_fad ._efe .TxBody .P =append (_fad ._efe .TxBody .P ,_agae .X ());return _agae ;};
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// document.
func (_bdca *Presentation )GetImageByRelID (relID string )(_da .ImageRef ,bool ){for _ ,_bcbe :=range _bdca .Images {if _bcbe .RelID ()==relID {return _bcbe ,true ;};};return _da .ImageRef {},false ;};
// GridSpacing returns the GridSpacing property.
func (_gfbgf ViewProperties )GridSpacing ()*_bde .CT_PositiveSize2D {return _gfbgf ._efeg .GridSpacing };
// X returns the inner wrapped XML type.
func (_bf PresentationProperties )X ()*_ae .PresentationPr {return _bf ._baf };func (_ff *chart )Target ()string {return _ff ._eb };
// 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 (_ggbb Slide )GetPlaceholder (t _ae .ST_PlaceholderType )(PlaceHolder ,error ){for _ ,_aeag :=range _ggbb ._acg .CSld .SpTree .Choice {for _ ,_dcfd :=range _aeag .Sp {if _dcfd .NvSpPr !=nil &&_dcfd .NvSpPr .NvPr !=nil &&_dcfd .NvSpPr .NvPr .Ph !=nil {if _dcfd .NvSpPr .NvPr .Ph .TypeAttr ==t {return PlaceHolder {_dcfd ,_ggbb ._acg },nil ;};};};};return PlaceHolder {},_acb .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");};
// GetLayoutByName retrieves a slide layout given a layout name.
func (_cbaeb *Presentation )GetLayoutByName (name string )(SlideLayout ,error ){for _ ,_gdd :=range _cbaeb ._egg {if _gdd .CSld .NameAttr !=nil &&name ==*_gdd .CSld .NameAttr {return SlideLayout {_gdd },nil ;};};return SlideLayout {},_acb .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");};
// SlideMasters returns the slide masters defined in the presentation.
func (_bcce *Presentation )SlideMasters ()[]SlideMaster {_ecg :=[]SlideMaster {};for _eed ,_cfg :=range _bcce ._eg {_ecg =append (_ecg ,SlideMaster {_bcce ,_bcce ._baba [_eed ],_cfg });};return _ecg ;};
// SaveToFile writes the Presentation out to a file.
func (_ded *Presentation )SaveToFile (path string )error {return _ded .saveToFile (path ,false )};
// SetSize sets the slide size, take argument of SlideScreenSize.
func (_gfac *SlideSize )SetSize (sz SlideScreenSize ){_gfac ._fdgg .CxAttr =sz [0];_gfac ._fdgg .CyAttr =sz [1];};
// 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 (_abe sort2d )Less (i ,j int )bool {_cg ,_gcg :=_abe [i ],_abe [j ];_eada ,_gfe :=_cg ._gd ,_gcg ._gd ;_cdg ,_ef :=len (_eada )-1,len (_gfe )-1;_bbe ,_cdf :=0,0;for {_cbb ,_cbe ,_ad ,_fbbf ,_dac ,_agf ,_edfd ,_dag :=_eada [_bbe ]._ccb ,_gfe [_cdf ]._ccb ,_eada [_bbe ]._df ,_gfe [_cdf ]._df ,_eada [_bbe ]._gc ,_gfe [_cdf ]._gc ,_eada [_bbe ]._gf ,_gfe [_cdf ]._gf ;if _cbb ==_cbe ||((_cfd .Abs (float64 (_cbb )-float64 (_cbe ))< _bbb )&&((_cbb >=_cbe &&_cbb <=_fbbf )||(_cbe >=_cbb &&_cbe <=_ad ))&&(_edfd < _agf ||_dac > _dag )){if _dac ==_agf {if _bbe < _cdg &&_cdf < _ef {_bbe ++;_cdf ++;continue ;};if _bbe >=_cdg &&_cdf >=_ef {break ;};return _bbe >=_cdg ;}else {return _dac < _agf ;};}else {return _cbb < _cbe ;};};_afe ,_befb ,_ee ,_ebb :=_cg ._fg ,_gcg ._fg ,_cg ._dd ,_gcg ._dd ;if _afe ==_befb {return _ee <=_ebb ;};return _afe < _befb ;};
// 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 *_bde .CT_TextParagraph ;Run *_bde .CT_RegularTextRun ;TableInfo *TableInfo ;_gd []rectangle ;_fg int ;_dd int ;};
// ViewProperties contains presentation specific properties.
type ViewProperties struct{_efeg *_ae .ViewPr };
// SlideSize represents a slide size of a presentation.
type SlideSize struct{_fdgg *_ae .CT_SlideSize ;_cbac *Presentation ;};
// PlaceHolder is a place holder from a slide.
type PlaceHolder struct{_efe *_ae .CT_Shape ;_caa *_ae .Sld ;};
// RemoveSlide removes a slide from a presentation.
func (_cdge *Presentation )RemoveSlide (s Slide )error {_eee :=false ;_aafe :=0;for _abda ,_geba :=range _cdge ._afec {if _geba ==s ._acg {if _cdge ._gffd .SldIdLst .SldId [_abda ]!=s ._bdfd {return _acb .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 (_cdge ._afec [_abda :],_cdge ._afec [_abda +1:]);_cdge ._afec =_cdge ._afec [0:len (_cdge ._afec )-1];copy (_cdge ._efb [_abda :],_cdge ._efb [_abda +1:]);_cdge ._efb =_cdge ._efb [0:len (_cdge ._efb )-1];copy (_cdge ._gffd .SldIdLst .SldId [_abda :],_cdge ._gffd .SldIdLst .SldId [_abda +1:]);_cdge ._gffd .SldIdLst .SldId =_cdge ._gffd .SldIdLst .SldId [0:len (_cdge ._gffd .SldIdLst .SldId )-1];_eee =true ;_aafe =_abda ;};};if !_eee {return _acb .New ("u\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0073li\u0064\u0065");};_fecfg :=_fea .AbsoluteFilename (_fea .DocTypePresentation ,_fea .SlideType ,0);return _cdge .ContentTypes .RemoveOverrideByIndex (_fecfg ,_aafe );};
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
func (_agac *Presentation )GetColorBySchemeColor (schClr _bde .ST_SchemeColorVal )*_bde .CT_Color {if len (_agac ._eg )==0||len (_agac ._edfc )==0{return nil ;};var _cea _bde .ST_ColorSchemeIndex ;_fcb :=_agac ._eg [0];_gfgd :=_fcb .ClrMap ;switch schClr .String (){case "\u0062\u0067\u0031":_cea =_gfgd .Bg1Attr ;case "\u0062\u0067\u0032":_cea =_gfgd .Bg2Attr ;case "\u0074\u0078\u0031":_cea =_gfgd .Tx1Attr ;case "\u0074\u0078\u0032":_cea =_gfgd .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_cea =_gfgd .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_cea =_gfgd .Accent2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_cea =_gfgd .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_cea =_gfgd .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_cea =_gfgd .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_cea =_gfgd .Accent6Attr ;case "\u0068\u006c\u0069n\u006b":_cea =_gfgd .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_cea =_gfgd .FolHlinkAttr ;case "\u0064\u006b\u0031":_cea =_bde .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_cea =_bde .ST_ColorSchemeIndexDk2 ;case "\u006c\u0074\u0031":_cea =_bde .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_cea =_bde .ST_ColorSchemeIndexLt2 ;default:_cea =_bde .ST_ColorSchemeIndexUnset ;};_aggd :=_agac ._edfc [0];_dgg :=_aggd .ThemeElements ;if _dgg ==nil {return nil ;};var _edcg *_bde .CT_Color ;_fbd :=_dgg .ClrScheme ;switch _cea .String (){case "\u0064\u006b\u0031":_edcg =_fbd .Dk1 ;case "\u0064\u006b\u0032":_edcg =_fbd .Dk2 ;case "\u006c\u0074\u0031":_edcg =_fbd .Lt1 ;case "\u006c\u0074\u0032":_edcg =_fbd .Lt2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_edcg =_fbd .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_edcg =_fbd .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_edcg =_fbd .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_edcg =_fbd .Accent4 ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_edcg =_fbd .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_edcg =_fbd .Accent6 ;case "\u0068\u006c\u0069n\u006b":_edcg =_fbd .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_edcg =_fbd .FolHlink ;default:return nil ;};return _edcg ;};
// AddImageToRels adds an image relationship to a slide without putting image on the slide.
func (_bafd Slide )AddImageToRels (img _da .ImageRef )string {_dafb :=0;for _gfbg ,_fada :=range _bafd ._cbfg .Images {if _fada ==img {_dafb =_gfbg +1;break ;};};var _aacf string ;for _baff ,_bbgg :=range _bafd ._cbfg .Slides (){if _bbgg ._acg ==_bafd ._acg {_fbcb :=_e .Sprintf ("\u002e\u002e\u002f\u006ded\u0069\u0061\u002f\u0069\u006d\u0061\u0067\u0065\u0025\u0064\u002e\u0025\u0073",_dafb ,img .Format ());_egfgg :=_bafd ._cbfg ._efb [_baff ].AddRelationship (_fbcb ,_fea .ImageType );_aacf =_egfgg .ID ();};};return _aacf ;};
// Presentation is the a presentation base document.
type Presentation struct{_da .DocBase ;_gffd *_ae .Presentation ;_gcf _da .Relationships ;_afec []*_ae .Sld ;_efb []_da .Relationships ;_eg []*_ae .SldMaster ;_baba []_da .Relationships ;_egg []*_ae .SldLayout ;_cce []_da .Relationships ;_edfc []*_bde .Theme ;_bfg []_da .Relationships ;_gdba _da .TableStyles ;_abf PresentationProperties ;_bbd ViewProperties ;_fddd []*_bde .CT_Hyperlink ;_facd []*chart ;_bce []*_ae .HandoutMaster ;_deg []*_ae .NotesMaster ;_ce []*_fea .XSDAny ;_gfeb map[string ]string ;_cdc string ;};
// SlideLayouts returns the slide layouts defined in the presentation.
func (_fga *Presentation )SlideLayouts ()[]SlideLayout {_cafc :=[]SlideLayout {};for _ ,_dace :=range _fga ._egg {_cafc =append (_cafc ,SlideLayout {_dace });};return _cafc ;};
// NotesTextViewPr returns the NotesTextViewPr property.
func (_eecg ViewProperties )NotesTextViewPr ()*_ae .CT_NotesTextViewProperties {return _eecg ._efeg .NotesTextViewPr ;};func _dfc (_bcg *Presentation ,_afc *_ae .CT_Shape ,_eac *_ae .CT_GraphicalObjectFrame ,_edf *TableInfo ,_aef *_bde .CT_Transform2D ,_gff int ,_dec []rectangle ,_bdee []*_bde .CT_TextParagraph )[]*TextItem {_cdd :=[]*TextItem {};var _ba ,_ebg ,_gcc ,_cfe ,_ccc ,_bca int64 ;_gg :=_aef ==nil ;_ecbd :=0;for _ ,_afa :=range _bdee {for _ ,_dde :=range _afa .EG_TextRun {if _fbc :=_dde .R ;_fbc !=nil {if !_gg {if _aef .Off !=nil {if _ead :=_aef .Ext ;_ead !=nil {_ccc ,_bca =_ead .CxAttr ,_ead .CyAttr ;};if _dfe :=_aef .Off .XAttr .ST_CoordinateUnqualified ;_dfe !=nil {_ba =*_dfe ;_ebg =_ba +_ccc ;_gg =true ;};if _aed :=_aef .Off .YAttr .ST_CoordinateUnqualified ;_aed !=nil {_gcc =*_aed ;_cfe =_gcc +_bca ;_gg =true ;};};};_gca :=append ([]rectangle {},_dec ...);_gca =append (_gca ,rectangle {_gc :_ba ,_gf :_ebg ,_ccb :_gcc ,_df :_cfe });_cdd =append (_cdd ,&TextItem {Presentation :_bcg ,Shape :_afc ,GraphicFrame :_eac ,TableInfo :_edf ,Paragraph :_afa ,Run :_fbc ,Text :_fbc .T ,_gd :_gca ,_fg :_gff ,_dd :_ecbd });_ecbd ++;};};};return _cdd ;};
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// slide.
func (_gegg *Slide )GetImageByRelID (relID string )(_da .ImageRef ,bool ){_acgd :=_gegg .getSlideRels ();if (_acgd ==_da .Relationships {}){return _da .ImageRef {},false ;};var _bega string ;for _ ,_bgcg :=range _acgd .X ().Relationship {if _bgcg .IdAttr ==relID {_bega =_bgcg .TargetAttr ;break ;};};for _ ,_eggg :=range _gegg ._cbfg .Images {if _eggg .Target ()==_bega {return _eggg ,true ;};};return _da .ImageRef {},false ;};
// SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template
func (_fcg *Presentation )SaveAsTemplate (w _cf .Writer )error {return _fcg .save (w ,true )};
// AddImage adds an image textbox to a slide.
func (_eeff Slide )AddImage (img _da .ImageRef )Image {_dgbe :=_ae .NewCT_GroupShapeChoice ();_eeff ._acg .CSld .SpTree .Choice =append (_eeff ._acg .CSld .SpTree .Choice ,_dgbe );_bdef :=_ae .NewCT_Picture ();_dgbe .Pic =append (_dgbe .Pic ,_bdef );_bdef .NvPicPr .CNvPicPr =_bde .NewCT_NonVisualPictureProperties ();_bdef .NvPicPr .CNvPicPr .PicLocks =_bde .NewCT_PictureLocking ();_bdef .NvPicPr .CNvPicPr .PicLocks .NoChangeAspectAttr =_fea .Bool (true );_bdef .BlipFill =_bde .NewCT_BlipFillProperties ();_bdef .BlipFill .Blip =_bde .NewCT_Blip ();_ace :=_eeff .AddImageToRels (img );_bdef .BlipFill .Blip .EmbedAttr =_fea .String (_ace );_bdef .BlipFill .Stretch =_bde .NewCT_StretchInfoProperties ();_bdef .BlipFill .Stretch .FillRect =_bde .NewCT_RelativeRect ();_bdef .SpPr =_bde .NewCT_ShapeProperties ();_bdef .SpPr .PrstGeom =_bde .NewCT_PresetGeometry2D ();_bdef .SpPr .PrstGeom .PrstAttr =_bde .ST_ShapeTypeRect ;_ade :=Image {_bdef };_gdgea :=img .Size ();_ade .Properties ().SetWidth (_cab .Distance (_gdgea .X )*_cab .Pixel72 );_ade .Properties ().SetHeight (_cab .Distance (_gdgea .Y )*_cab .Pixel72 );_ade .Properties ().SetPosition (0,0);return _ade ;};
// Presentation returns a slide's presentation.
func (_ebd Slide )Presentation ()*Presentation {return _ebd ._cbfg };
// Paragraphs returns the paragraphs defined in the placeholder.
func (_gef PlaceHolder )Paragraphs ()[]_bd .Paragraph {_cbeg :=[]_bd .Paragraph {};for _ ,_ecbc :=range _gef ._efe .TxBody .P {_cbeg =append (_cbeg ,_bd .MakeParagraph (_ecbc ));};return _cbeg ;};
// Height returns slide screen size height in EMU units.
func (_bfcc *SlideScreenSize )Height ()int32 {return _bfcc [1]};
// SlideLayout is a layout from which slides can be created.
type SlideLayout struct{_face *_ae .SldLayout };func (_cccf *Presentation )save (_fecf _cf .Writer ,_ceeg bool )error {const _aee ="\u0050\u0072\u0065\u0073en\u0074\u0061\u0074\u0069\u006f\u006e\u003a\u0070\u002e\u0053\u0061\u0076\u0065";if _abd :=_cccf ._gffd .Validate ();_abd !=nil {_g .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",_abd );};if !_dc .GetLicenseKey ().IsLicensed ()&&!_abb {_e .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");_e .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 _acb .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 (_cccf ._cdc )==0{_edg ,_abfc :=_dc .GenRefId ("\u0070\u0077");if _abfc !=nil {_g .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_abfc );return _abfc ;};_cccf ._cdc =_edg ;};if _dce :=_dc .Track (_cccf ._cdc ,_aee );_dce !=nil {_g .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dce );return _dce ;};if _ceeg {_cccf .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");_cccf .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 {_cccf .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");_cccf .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");};_debd :=_fea .DocTypePresentation ;_abc :=_dg .NewWriter (_fecf );defer _abc .Close ();if _bbbf :=_c .MarshalXML (_abc ,_fea .BaseRelsFilename ,_cccf .Rels .X ());_bbbf !=nil {return _bbbf ;};if _dbgd :=_c .MarshalXMLByType (_abc ,_debd ,_fea .ExtendedPropertiesType ,_cccf .AppProperties .X ());_dbgd !=nil {return _dbgd ;};if _eec :=_c .MarshalXMLByType (_abc ,_debd ,_fea .CorePropertiesType ,_cccf .CoreProperties .X ());_eec !=nil {return _eec ;};if _egfg :=_c .MarshalXMLByType (_abc ,_debd ,_fea .PresentationPropertiesType ,_cccf ._abf .X ());_egfg !=nil {return _egfg ;};if _dee :=_c .MarshalXMLByType (_abc ,_debd ,_fea .ViewPropertiesType ,_cccf ._bbd .X ());_dee !=nil {return _dee ;};if _gefg :=_c .MarshalXMLByType (_abc ,_debd ,_fea .TableStylesType ,_cccf ._gdba .X ());_gefg !=nil {return _gefg ;};if _cccf .CustomProperties .X ()!=nil {if _gde :=_c .MarshalXMLByType (_abc ,_debd ,_fea .CustomPropertiesType ,_cccf .CustomProperties .X ());_gde !=nil {return _gde ;};};if _cccf .Thumbnail !=nil {_gbge ,_gdge :=_abc .Create ("\u0064\u006f\u0063Pr\u006f\u0070\u0073\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c\u002e\u006a\u0070\u0065\u0067");if _gdge !=nil {return _gdge ;};if _aefe :=_bc .Encode (_gbge ,_cccf .Thumbnail ,nil );_aefe !=nil {return _aefe ;};};_eba :=_fea .AbsoluteFilename (_debd ,_fea .OfficeDocumentType ,0);if _efab :=_c .MarshalXML (_abc ,_eba ,_cccf ._gffd );_efab !=nil {return _efab ;};if _cfeg :=_c .MarshalXML (_abc ,_c .RelationsPathFor (_eba ),_cccf ._gcf .X ());_cfeg !=nil {return _cfeg ;};for _dcbg ,_dda :=range _cccf ._afec {_bcf :=_fea .AbsoluteFilename (_fea .DocTypePresentation ,_fea .SlideType ,_dcbg +1);_c .MarshalXML (_abc ,_bcf ,_dda );if !_cccf ._efb [_dcbg ].IsEmpty (){_cgag :=_c .RelationsPathFor (_bcf );_c .MarshalXML (_abc ,_cgag ,_cccf ._efb [_dcbg ].X ());};};for _fba ,_fadd :=range _cccf ._eg {_cgac :=_fea .AbsoluteFilename (_fea .DocTypePresentation ,_fea .SlideMasterType ,_fba +1);_c .MarshalXML (_abc ,_cgac ,_fadd );if !_cccf ._baba [_fba ].IsEmpty (){_abeb :=_c .RelationsPathFor (_cgac );_c .MarshalXML (_abc ,_abeb ,_cccf ._baba [_fba ].X ());};};for _bgc ,_ffb :=range _cccf ._egg {_cbae :=_fea .AbsoluteFilename (_fea .DocTypePresentation ,_fea .SlideLayoutType ,_bgc +1);_c .MarshalXML (_abc ,_cbae ,_ffb );if !_cccf ._cce [_bgc ].IsEmpty (){_cbcb :=_c .RelationsPathFor (_cbae );_c .MarshalXML (_abc ,_cbcb ,_cccf ._cce [_bgc ].X ());};};for _dbd ,_gga :=range _cccf ._edfc {_bbfg :=_fea .AbsoluteFilename (_fea .DocTypePresentation ,_fea .ThemeType ,_dbd +1);_c .MarshalXML (_abc ,_bbfg ,_gga );if !_cccf ._bfg [_dbd ].IsEmpty (){_geg :=_c .RelationsPathFor (_bbfg );_c .MarshalXML (_abc ,_geg ,_cccf ._bfg [_dbd ].X ());};};for _cec ,_ebca :=range _cccf ._facd {_dcg :=_fea .AbsoluteFilename (_debd ,_fea .ChartType ,_cec +1);_c .MarshalXML (_abc ,_dcg ,_ebca );};for _cbeb ,_bggg :=range _cccf ._bce {_bee :=_fea .AbsoluteFilename (_debd ,_fea .HandoutMasterType ,_cbeb +1);_c .MarshalXML (_abc ,_bee ,_bggg );};for _feca ,_dceb :=range _cccf ._deg {_adf :=_fea .AbsoluteFilename (_debd ,_fea .NotesMasterType ,_feca +1);_c .MarshalXML (_abc ,_adf ,_dceb );};for _dadg ,_gec :=range _cccf ._ce {_cgda :=_fea .AbsoluteFilename (_debd ,_fea .CustomXMLType ,_dadg +1);_c .MarshalXML (_abc ,_cgda ,_gec );};for _dcef ,_bcd :=range _cccf .Images {if _gfb :=_da .AddImageToZip (_abc ,_bcd ,_dcef +1,_fea .DocTypePresentation );_gfb !=nil {return _gfb ;};};_cccf .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_cccf .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_cccf .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_cccf .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");if _ddg :=_c .MarshalXML (_abc ,_fea .ContentTypesFilename ,_cccf .ContentTypes .X ());_ddg !=nil {return _ddg ;};if _dgb :=_cccf .WriteExtraFiles (_abc );_dgb !=nil {return _dgb ;};return nil ;};
// NormalViewPr returns the NormalViewPr property.
func (_aecc ViewProperties )NormalViewPr ()*_ae .CT_NormalViewProperties {return _aecc ._efeg .NormalViewPr ;};
// Remove removes a placeholder from a presentation.
func (_abg PlaceHolder )Remove ()error {for _ggf ,_bab :=range _abg ._caa .CSld .SpTree .Choice {for _ ,_aga :=range _bab .Sp {if _aga ==_abg ._efe {copy (_abg ._caa .CSld .SpTree .Choice [_ggf :],_abg ._caa .CSld .SpTree .Choice [_ggf +1:]);_abg ._caa .CSld .SpTree .Choice =_abg ._caa .CSld .SpTree .Choice [0:len (_abg ._caa .CSld .SpTree .Choice )-1];return nil ;};};};return _acb .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");};
// X returns the inner wrapped XML type.
func (_efefd SlideLayout )X ()*_ae .SldLayout {return _efefd ._face };
// SlideSize returns presentation slide size.
func (_gdfa *Presentation )SlideSize ()SlideSize {if _gdfa ._gffd .SldSz ==nil {_gdfa ._gffd .SldSz =_ae .NewCT_SlideSize ();};return SlideSize {_gdfa ._gffd .SldSz ,_gdfa };};
// 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 (_deb *Presentation )AddSlideWithLayout (l SlideLayout )(Slide ,error ){_gge :=_ae .NewCT_SlideIdListEntry ();_gge .IdAttr =256;for _ ,_gda :=range _deb ._gffd .SldIdLst .SldId {if _gda .IdAttr >=_gge .IdAttr {_gge .IdAttr =_gda .IdAttr +1;};};_deb ._gffd .SldIdLst .SldId =append (_deb ._gffd .SldIdLst .SldId ,_gge );_ceb :=_ae .NewSld ();_bbeg :=_af .Buffer {};_cge :=_bb .NewEncoder (&_bbeg );_daaa :=_bb .StartElement {Name :_bb .Name {Local :"\u0073\u006c\u0069d\u0065"}};_daaa .Attr =append (_daaa .Attr ,_bb .Attr {Name :_bb .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"});_daaa .Attr =append (_daaa .Attr ,_bb .Attr {Name :_bb .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"});_daaa .Attr =append (_daaa .Attr ,_bb .Attr {Name :_bb .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"});_daaa .Attr =append (_daaa .Attr ,_bb .Attr {Name :_bb .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"});_daaa .Attr =append (_daaa .Attr ,_bb .Attr {Name :_bb .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"});_daaa .Attr =append (_daaa .Attr ,_bb .Attr {Name :_bb .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 _ddd :=l ._face .CSld .MarshalXML (_cge ,_daaa );_ddd !=nil {return Slide {},_ddd ;};_cge .Flush ();_efa :=_bb .NewDecoder (&_bbeg );_ceb .CSld =_ae .NewCT_CommonSlideData ();if _ebgd :=_efa .Decode (_ceb .CSld );_ebgd !=nil {return Slide {},_ebgd ;};_ceb .CSld .NameAttr =nil ;_ceb .CSld .SpTree .Choice =_cgdd (_ceb .CSld .SpTree .Choice );_deb ._afec =append (_deb ._afec ,_ceb );_bcbd :=_deb ._gcf .AddAutoRelationship (_fea .DocTypePresentation ,_fea .OfficeDocumentType ,len (_deb ._afec ),_fea .SlideType );_gge .RIdAttr =_bcbd .ID ();_abgd :=_fea .AbsoluteFilename (_fea .DocTypePresentation ,_fea .SlideType ,len (_deb ._afec ));_deb .ContentTypes .AddOverride (_abgd ,_fea .SlideContentType );_aab :=_da .NewRelationships ();_deb ._efb =append (_deb ._efb ,_aab );_fcd :=len (_deb ._efb )-1;for _afbf ,_edc :=range _deb ._egg {if _edc ==l .X (){_eab :=_deb ._cce [_afbf ];for _ ,_cfc :=range _eab .X ().Relationship {if _cfc .TypeAttr !=_fea .SlideMasterType {_deb ._efb [_fcd ].X ().Relationship =append (_deb ._efb [_fcd ].X ().Relationship ,_cfc );};};_aab .AddAutoRelationship (_fea .DocTypePresentation ,_fea .SlideType ,_afbf +1,_fea .SlideLayoutType );};};_ede :=Slide {_gge ,_ceb ,_deb ,nil };return _ede ,nil ;};func (_effe TextBox )getOff ()*_bde .CT_Point2D {if _effe ._dbeb .SpPr ==nil {_effe ._dbeb .SpPr =_bde .NewCT_ShapeProperties ();};if _effe ._dbeb .SpPr .Xfrm ==nil {_effe ._dbeb .SpPr .Xfrm =_bde .NewCT_Transform2D ();};if _effe ._dbeb .SpPr .Xfrm .Off ==nil {_effe ._dbeb .SpPr .Xfrm .Off =_bde .NewCT_Point2D ();};return _effe ._dbeb .SpPr .Xfrm .Off ;};
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
func (_gfebb *Slide )GetColorBySchemeColor (schClr _bde .ST_SchemeColorVal )*_bde .CT_Color {_gfebb .ensureClrMap ();_dfg :=_gfebb ._dfdf ;if _dfg ==nil {return nil ;};var _dfa _bde .ST_ColorSchemeIndex ;switch schClr .String (){case "\u0062\u0067\u0031":_dfa =_dfg .Bg1Attr ;case "\u0062\u0067\u0032":_dfa =_dfg .Bg2Attr ;case "\u0074\u0078\u0031":_dfa =_dfg .Tx1Attr ;case "\u0074\u0078\u0032":_dfa =_dfg .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_dfa =_dfg .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_dfa =_dfg .Accent2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_dfa =_dfg .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_dfa =_dfg .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_dfa =_dfg .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_dfa =_dfg .Accent6Attr ;case "\u0068\u006c\u0069n\u006b":_dfa =_dfg .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_dfa =_dfg .FolHlinkAttr ;case "\u0064\u006b\u0031":_dfa =_bde .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_dfa =_bde .ST_ColorSchemeIndexDk2 ;case "\u006c\u0074\u0031":_dfa =_bde .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_dfa =_bde .ST_ColorSchemeIndexLt2 ;default:_dfa =_bde .ST_ColorSchemeIndexUnset ;};_edcb :=_gfebb ._cbfg ._edfc [0];_cbaea :=_edcb .ThemeElements ;if _cbaea ==nil {return nil ;};var _gccc *_bde .CT_Color ;_eeef :=_cbaea .ClrScheme ;switch _dfa .String (){case "\u0064\u006b\u0031":_gccc =_eeef .Dk1 ;case "\u0064\u006b\u0032":_gccc =_eeef .Dk2 ;case "\u006c\u0074\u0031":_gccc =_eeef .Lt1 ;case "\u006c\u0074\u0032":_gccc =_eeef .Lt2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_gccc =_eeef .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_gccc =_eeef .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_gccc =_eeef .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_gccc =_eeef .Accent4 ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_gccc =_eeef .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_gccc =_eeef .Accent6 ;case "\u0068\u006c\u0069n\u006b":_gccc =_eeef .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_gccc =_eeef .FolHlink ;default:return nil ;};return _gccc ;};
// PlaceHolders returns all of the content place holders within a given slide.
func (_bfgg Slide )PlaceHolders ()[]PlaceHolder {_gbe :=[]PlaceHolder {};for _ ,_dadd :=range _bfgg ._acg .CSld .SpTree .Choice {for _ ,_fde :=range _dadd .Sp {if _fde .NvSpPr !=nil &&_fde .NvSpPr .NvPr !=nil &&_fde .NvSpPr .NvPr .Ph !=nil {_gbe =append (_gbe ,PlaceHolder {_fde ,_bfgg ._acg });};};};return _gbe ;};
// SlideViewPr returns the SlideViewPr property.
func (_dddd ViewProperties )SlideViewPr ()*_ae .CT_SlideViewProperties {return _dddd ._efeg .SlideViewPr };type rectangle struct{_gc int64 ;_ccb int64 ;_gf int64 ;_df int64 ;};
// WebPr returns the WebPr property.
func (_afbd PresentationProperties )WebPr ()*_ae .CT_WebProperties {return _afbd ._baf .WebPr };
// Size returns slide size value as SlideScreenSize.
func (_gaac *SlideSize )Size ()SlideScreenSize {return SlideScreenSize {_gaac ._fdgg .CxAttr ,_gaac ._fdgg .CyAttr };};
// OpenTemplate opens a template file.
func OpenTemplate (fn string )(*Presentation ,error ){_dcb ,_edbd :=Open (fn );if _edbd !=nil {return nil ,_edbd ;};return _dcb ,nil ;};func (_ddeb sort2d )Swap (i ,j int ){_ddeb [i ],_ddeb [j ]=_ddeb [j ],_ddeb [i ]};
// SlideText is an array of extracted text items which has some methods for representing extracted text from a slide.
type SlideText struct{Items []*TextItem ;};
// AddParagraph adds a paragraph to the text box
func (_fefe TextBox )AddParagraph ()_bd .Paragraph {_cbdf :=_bde .NewCT_TextParagraph ();_fefe ._dbeb .TxBody .P =append (_fefe ._dbeb .TxBody .P ,_cbdf );return _bd .MakeParagraph (_cbdf );};
// 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 (_badb *Presentation )AddDefaultSlideWithLayout (l SlideLayout )(Slide ,error ){_fafc ,_cba :=_badb .AddSlideWithLayout (l );for _ ,_agb :=range _fafc .PlaceHolders (){_agb .Clear ();switch _agb .Type (){case _ae .ST_PlaceholderTypeFtr ,_ae .ST_PlaceholderTypeDt ,_ae .ST_PlaceholderTypeSldNum :_agb .Remove ();};};return _fafc ,_cba ;};
// PresentationProperties contains document specific properties.
type PresentationProperties struct{_baf *_ae .PresentationPr };
// Themes returns an array of presentation themes.
func (_eeg *Presentation )Themes ()[]*_bde .Theme {return _eeg ._edfc };
// Name returns the name of the slide layout.
func (_cbfb SlideLayout )Name ()string {if _cbfb ._face .CSld !=nil &&_cbfb ._face .CSld .NameAttr !=nil {return *_cbfb ._face .CSld .NameAttr ;};return "";};
// X returns TextBox's underlying *pml.CT_Shape.
func (_badd TextBox )X ()*_ae .CT_Shape {return _badd ._dbeb };
// GetSlideLayout returns a slide layout related to the slide.
func (_fdda *Slide )GetSlideLayout ()*_ae .SldLayout {for _edba ,_afca :=range _fdda ._cbfg .Slides (){if *_fdda ==_afca {return _fdda ._cbfg ._egg [len (_fdda ._cbfg .Slides ())-_edba -1];};};return nil ;};
// ShowPr returns the ShowPr property.
func (_gbf PresentationProperties )ShowPr ()*_ae .CT_ShowProperties {return _gbf ._baf .ShowPr };
// NewSlideScreenSize returns slide screen size with default MS PowerPoint slide screen size 16x9.
func NewSlideScreenSize ()SlideScreenSize {return NewSlideScreenSizeWithValue (SlideScreenSize16x9 [0],SlideScreenSize16x9 [1]);};
// ValidateWithPath validates the slide passing path informaton for a better
// error message.
func (_fbgd Slide )ValidateWithPath (path string )error {if _aefee :=_fbgd ._acg .ValidateWithPath (path );_aefee !=nil {return _aefee ;};for _ ,_daf :=range _fbgd ._acg .CSld .SpTree .Choice {for _ ,_fdddb :=range _daf .Sp {if _fdddb .TxBody !=nil {if len (_fdddb .TxBody .P )==0{return _acb .New (path +"\u0020\u003a \u0073\u006c\u0069\u0064\u0065 \u0073\u0068\u0061\u0070\u0065 \u0077\u0069\u0074\u0068\u0020\u0061\u0020\u0074\u0078\u0062\u006f\u0064\u0079\u0020\u006d\u0075\u0073\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0020\u0070\u0061\u0072\u0061\u0067\u0072\u0061\u0070\u0068\u0073");};};};};return nil ;};func (_abgc *Slide )ensureClrMap (){if len (_abgc ._cbfg ._eg )==0||len (_abgc ._cbfg ._edfc )==0{return ;};_gefb :=_abgc ._cbfg ._eg [0];_bgb :=_gefb .ClrMap ;if _bfb :=_abgc ._acg .ClrMapOvr ;_bfb !=nil {if _bedc :=_bfb .Choice ;_bedc !=nil {if _bedc .MasterClrMapping ==nil {if _adfd :=_bedc .OverrideClrMapping ;_adfd !=nil {if _adfd .Bg1Attr !=_bde .ST_ColorSchemeIndexUnset {_bgb .Bg1Attr =_adfd .Bg1Attr ;};if _adfd .Tx1Attr !=_bde .ST_ColorSchemeIndexUnset {_bgb .Tx1Attr =_adfd .Tx1Attr ;};if _adfd .Bg2Attr !=_bde .ST_ColorSchemeIndexUnset {_bgb .Bg2Attr =_adfd .Bg2Attr ;};if _adfd .Tx2Attr !=_bde .ST_ColorSchemeIndexUnset {_bgb .Tx2Attr =_adfd .Tx2Attr ;};if _adfd .Accent1Attr !=_bde .ST_ColorSchemeIndexUnset {_bgb .Accent1Attr =_adfd .Accent1Attr ;};if _adfd .Accent2Attr !=_bde .ST_ColorSchemeIndexUnset {_bgb .Accent2Attr =_adfd .Accent2Attr ;};if _adfd .Accent3Attr !=_bde .ST_ColorSchemeIndexUnset {_bgb .Accent3Attr =_adfd .Accent3Attr ;};if _adfd .Accent4Attr !=_bde .ST_ColorSchemeIndexUnset {_bgb .Accent4Attr =_adfd .Accent4Attr ;};if _adfd .Accent5Attr !=_bde .ST_ColorSchemeIndexUnset {_bgb .Accent5Attr =_adfd .Accent5Attr ;};if _adfd .Accent6Attr !=_bde .ST_ColorSchemeIndexUnset {_bgb .Accent6Attr =_adfd .Accent6Attr ;};if _adfd .HlinkAttr !=_bde .ST_ColorSchemeIndexUnset {_bgb .HlinkAttr =_adfd .HlinkAttr ;};if _adfd .FolHlinkAttr !=_bde .ST_ColorSchemeIndexUnset {_bgb .FolHlinkAttr =_adfd .FolHlinkAttr ;};};};};};_abgc ._dfdf =_bgb ;};
// SlideScreenSize represents the slide screen size as a 2 element array
// representing the width and height in EMU units.
type SlideScreenSize [2]int32 ;
// Type returns the type of the slide layout.
func (_ecc SlideLayout )Type ()_ae .ST_SlideLayoutType {return _ecc ._face .TypeAttr };
// ClrMru returns the ClrMru property.
func (_adg PresentationProperties )ClrMru ()*_bde .CT_ColorMRU {return _adg ._baf .ClrMru };
// ExtractText returns text from a presentation as a PresentationText object.
func (_afb *Presentation )ExtractText ()*PresentationText {_ga :=[]*SlideText {};for _ ,_cb :=range _afb .Slides (){_dca :=_cb .ExtractText ();if _dca !=nil {_ga =append (_ga ,_dca );};};return &PresentationText {Slides :_ga };};var _abb =false ;
// TableInfo is used for keep information about a table, a row and a cell where the text is located.
type TableInfo struct{Table *_bde .CT_Table ;Row *_bde .CT_TableRow ;Cell *_bde .CT_TableCell ;RowIndex int ;ColIndex int ;};
// TextBox is a text box within a slide.
type TextBox struct{_dbeb *_ae .CT_Shape };
// SetOffsetY sets vertical offset of text box in distance units (see measurement package).
func (_fdec TextBox )SetOffsetY (offY float64 ){_gagc :=_fdec .getOff ();_cdcc :=_cab .ToEMU (offY );_gagc .YAttr =_bde .ST_Coordinate {ST_CoordinateUnqualified :&_cdcc };};
// New initializes and reurns a new presentation
func New ()*Presentation {_cgd :=_gfebe ();_cgd .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");_cgd .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");_cgd .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");_cgd .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");_cgd .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");_cgd .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");_cgd .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");_cgd ._gffd .SldMasterIdLst =_ae .NewCT_SlideMasterIdList ();_gcab :=_ae .NewSldMaster ();_gcab .ClrMap .Bg1Attr =_bde .ST_ColorSchemeIndexLt1 ;_gcab .ClrMap .Bg2Attr =_bde .ST_ColorSchemeIndexLt2 ;_gcab .ClrMap .Tx1Attr =_bde .ST_ColorSchemeIndexDk1 ;_gcab .ClrMap .Tx2Attr =_bde .ST_ColorSchemeIndexDk2 ;_gcab .ClrMap .Accent1Attr =_bde .ST_ColorSchemeIndexAccent1 ;_gcab .ClrMap .Accent2Attr =_bde .ST_ColorSchemeIndexAccent2 ;_gcab .ClrMap .Accent3Attr =_bde .ST_ColorSchemeIndexAccent3 ;_gcab .ClrMap .Accent4Attr =_bde .ST_ColorSchemeIndexAccent4 ;_gcab .ClrMap .Accent5Attr =_bde .ST_ColorSchemeIndexAccent5 ;_gcab .ClrMap .Accent6Attr =_bde .ST_ColorSchemeIndexAccent6 ;_gcab .ClrMap .HlinkAttr =_bde .ST_ColorSchemeIndexHlink ;_gcab .ClrMap .FolHlinkAttr =_bde .ST_ColorSchemeIndexFolHlink ;_cgd ._eg =append (_cgd ._eg ,_gcab );_cbbc :=_fea .AbsoluteFilename (_fea .DocTypePresentation ,_fea .SlideMasterType ,1);_cgd .ContentTypes .AddOverride (_cbbc ,_fea .SlideMasterContentType );_acc :=_cgd ._gcf .AddAutoRelationship (_fea .DocTypePresentation ,_fea .OfficeDocumentType ,1,_fea .SlideMasterType );_dfdb :=_ae .NewCT_SlideMasterIdListEntry ();_dfdb .IdAttr =_fea .Uint32 (2147483648);_dfdb .RIdAttr =_acc .ID ();_cgd ._gffd .SldMasterIdLst .SldMasterId =append (_cgd ._gffd .SldMasterIdLst .SldMasterId ,_dfdb );_agg :=_da .NewRelationships ();_cgd ._baba =append (_cgd ._baba ,_agg );_dbg :=_ae .NewSldLayout ();_gag :=_agg .AddAutoRelationship (_fea .DocTypePresentation ,_fea .SlideMasterType ,1,_fea .SlideLayoutType );_bge :=_fea .AbsoluteFilename (_fea .DocTypePresentation ,_fea .SlideLayoutType ,1);_cgd .ContentTypes .AddOverride (_bge ,_fea .SlideLayoutContentType );_agg .AddAutoRelationship (_fea .DocTypePresentation ,_fea .SlideMasterType ,1,_fea .ThemeType );_cgd ._egg =append (_cgd ._egg ,_dbg );_gcab .SldLayoutIdLst =_ae .NewCT_SlideLayoutIdList ();_eeb :=_ae .NewCT_SlideLayoutIdListEntry ();_eeb .IdAttr =_fea .Uint32 (2147483649);_eeb .RIdAttr =_gag .ID ();_gcab .SldLayoutIdLst .SldLayoutId =append (_gcab .SldLayoutIdLst .SldLayoutId ,_eeb );_gcfe :=_da .NewRelationships ();_cgd ._cce =append (_cgd ._cce ,_gcfe );_gcfe .AddAutoRelationship (_fea .DocTypePresentation ,_fea .SlideType ,1,_fea .SlideMasterType );_cgd ._gffd .NotesSz .CxAttr =6858000;_cgd ._gffd .NotesSz .CyAttr =9144000;_fdb :=_bde .NewTheme ();_fdb .NameAttr =_fea .String ("\u0075n\u0069o\u0066\u0066\u0069\u0063\u0065\u0020\u0054\u0068\u0065\u006d\u0065");_fdb .ThemeElements .ClrScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_fdb .ThemeElements .ClrScheme .Dk1 .SysClr =_bde .NewCT_SystemColor ();_fdb .ThemeElements .ClrScheme .Dk1 .SysClr .LastClrAttr =_fea .String ("\u0030\u0030\u0030\u0030\u0030\u0030");_fdb .ThemeElements .ClrScheme .Dk1 .SysClr .ValAttr =_bde .ST_SystemColorValWindowText ;_fdb .ThemeElements .ClrScheme .Lt1 .SysClr =_bde .NewCT_SystemColor ();_fdb .ThemeElements .ClrScheme .Lt1 .SysClr .LastClrAttr =_fea .String ("\u0066\u0066\u0066\u0066\u0066\u0066");_fdb .ThemeElements .ClrScheme .Lt1 .SysClr .ValAttr =_bde .ST_SystemColorValWindow ;_fdb .ThemeElements .ClrScheme .Dk2 .SrgbClr =_bde .NewCT_SRgbColor ();_fdb .ThemeElements .ClrScheme .Dk2 .SrgbClr .ValAttr ="\u0034\u0034\u0035\u0034\u0036\u0061";_fdb .ThemeElements .ClrScheme .Lt2 .SrgbClr =_bde .NewCT_SRgbColor ();_fdb .ThemeElements .ClrScheme .Lt2 .SrgbClr .ValAttr ="\u0065\u0037\u0065\u0037\u0065\u0036";_fdb .ThemeElements .ClrScheme .Accent1 .SrgbClr =_bde .NewCT_SRgbColor ();_fdb .ThemeElements .ClrScheme .Accent1 .SrgbClr .ValAttr ="\u0034\u0034\u0037\u0032\u0063\u0034";_fdb .ThemeElements .ClrScheme .Accent2 .SrgbClr =_bde .NewCT_SRgbColor ();_fdb .ThemeElements .ClrScheme .Accent2 .SrgbClr .ValAttr ="\u0065\u0064\u0037\u0064\u0033\u0031";_fdb .ThemeElements .ClrScheme .Accent3 .SrgbClr =_bde .NewCT_SRgbColor ();_fdb .ThemeElements .ClrScheme .Accent3 .SrgbClr .ValAttr ="\u0061\u0035\u0061\u0035\u0061\u0035";_fdb .ThemeElements .ClrScheme .Accent4 .SrgbClr =_bde .NewCT_SRgbColor ();_fdb .ThemeElements .ClrScheme .Accent4 .SrgbClr .ValAttr ="\u0066\u0066\u0063\u0030\u0030\u0030";_fdb .ThemeElements .ClrScheme .Accent5 .SrgbClr =_bde .NewCT_SRgbColor ();_fdb .ThemeElements .ClrScheme .Accent5 .SrgbClr .ValAttr ="\u0035\u0062\u0039\u0062\u0064\u0035";_fdb .ThemeElements .ClrScheme .Accent6 .SrgbClr =_bde .NewCT_SRgbColor ();_fdb .ThemeElements .ClrScheme .Accent6 .SrgbClr .ValAttr ="\u0037\u0030\u0061\u0064\u0034\u0037";_fdb .ThemeElements .ClrScheme .Hlink .SrgbClr =_bde .NewCT_SRgbColor ();_fdb .ThemeElements .ClrScheme .Hlink .SrgbClr .ValAttr ="\u0030\u0035\u0036\u0033\u0063\u0031";_fdb .ThemeElements .ClrScheme .FolHlink .SrgbClr =_bde .NewCT_SRgbColor ();_fdb .ThemeElements .ClrScheme .FolHlink .SrgbClr .ValAttr ="\u0039\u0035\u0034\u0066\u0037\u0032";_fdb .ThemeElements .FontScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_fdb .ThemeElements .FontScheme .MajorFont .Latin .TypefaceAttr ="\u0043\u0061\u006c\u0069\u0062\u0072\u0069\u0020\u004c\u0069\u0067\u0068\u0074";_fdb .ThemeElements .FontScheme .MinorFont .Latin .TypefaceAttr ="\u0043a\u006c\u0069\u0062\u0072\u0069";_fdb .ThemeElements .FmtScheme .NameAttr =_fea .String ("\u004f\u0066\u0066\u0069\u0063\u0065");_bdfb :=_bde .NewEG_FillProperties ();_fdb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_fdb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_bdfb );_bdfb .SolidFill =&_bde .CT_SolidColorFillProperties {SchemeClr :&_bde .CT_SchemeColor {ValAttr :_bde .ST_SchemeColorValPhClr }};_bdfb =_bde .NewEG_FillProperties ();_fdb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_fdb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_bdfb );_fdb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_fdb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_bdfb );_bdfb .GradFill =&_bde .CT_GradientFillProperties {RotWithShapeAttr :_fea .Bool (true ),GsLst :&_bde .CT_GradientStopList {},Lin :&_bde .CT_LinearShadeProperties {}};_bdfb .GradFill .Lin .AngAttr =_fea .Int32 (5400000);_bdfb .GradFill .Lin .ScaledAttr =_fea .Bool (false );_aeg :=_bde .NewCT_GradientStop ();_aeg .PosAttr .ST_PositiveFixedPercentageDecimal =_fea .Int32 (0);_aeg .SchemeClr =&_bde .CT_SchemeColor {ValAttr :_bde .ST_SchemeColorValPhClr };_bdfb .GradFill .GsLst .Gs =append (_bdfb .GradFill .GsLst .Gs ,_aeg );_aeg =_bde .NewCT_GradientStop ();_aeg .PosAttr .ST_PositiveFixedPercentageDecimal =_fea .Int32 (50000);_aeg .SchemeClr =&_bde .CT_SchemeColor {ValAttr :_bde .ST_SchemeColorValPhClr };_bdfb .GradFill .GsLst .Gs =append (_bdfb .GradFill .GsLst .Gs ,_aeg );_fdb .ThemeElements .FmtScheme .LnStyleLst =_bde .NewCT_LineStyleList ();for _bga :=0;_bga < 3;_bga ++{_cda :=_bde .NewCT_LineProperties ();_cda .WAttr =_fea .Int32 (int32 (6350*(_bga +1)));_cda .CapAttr =_bde .ST_LineCapFlat ;_cda .CmpdAttr =_bde .ST_CompoundLineSng ;_cda .AlgnAttr =_bde .ST_PenAlignmentCtr ;_fdb .ThemeElements .FmtScheme .LnStyleLst .Ln =append (_fdb .ThemeElements .FmtScheme .LnStyleLst .Ln ,_cda );};_fdb .ThemeElements .FmtScheme .EffectStyleLst =_bde .NewCT_EffectStyleList ();for _gcfc :=0;_gcfc < 3;_gcfc ++{_aggb :=_bde .NewCT_EffectStyleItem ();_aggb .EffectLst =_bde .NewCT_EffectList ();_fdb .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle =append (_fdb .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle ,_aggb );};_egf :=_bde .NewEG_FillProperties ();_egf .SolidFill =&_bde .CT_SolidColorFillProperties {SchemeClr :&_bde .CT_SchemeColor {ValAttr :_bde .ST_SchemeColorValPhClr }};_fdb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_fdb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_egf );_fdb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_fdb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_egf );_fdb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_fdb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_bdfb );_cgd ._edfc =append (_cgd ._edfc ,_fdb );_bfd :=_fea .AbsoluteFilename (_fea .DocTypePresentation ,_fea .ThemeType ,1);_cgd .ContentTypes .AddOverride (_bfd ,_fea .ThemeContentType );_cgd ._gcf .AddAutoRelationship (_fea .DocTypePresentation ,_fea .OfficeDocumentType ,1,_fea .ThemeType );_fag :=_da .NewRelationships ();_cgd ._bfg =append (_cgd ._bfg ,_fag );return _cgd ;};
// 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 (_cga PlaceHolder )SetText (text string ){_cga .Clear ();_ffd :=_bde .NewEG_TextRun ();_ffd .R =_bde .NewCT_RegularTextRun ();_ffd .R .T =text ;if len (_cga ._efe .TxBody .P )==0{_cga ._efe .TxBody .P =append (_cga ._efe .TxBody .P ,_bde .NewCT_TextParagraph ());};_cga ._efe .TxBody .P [0].EG_TextRun =nil ;_cga ._efe .TxBody .P [0].EG_TextRun =append (_cga ._efe .TxBody .P [0].EG_TextRun ,_ffd );};
// 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 (_dcd *Presentation )AddImage (i _da .Image )(_da .ImageRef ,error ){_fbf :=_da .MakeImageRef (i ,&_dcd .DocBase ,_dcd ._gcf );if i .Data ==nil &&i .Path ==""{return _fbf ,_acb .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 _fbf ,_acb .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 _fbf ,_acb .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 !=""{_bgeb :=_b .Add (i .Path );if _bgeb !=nil {return _fbf ,_bgeb ;};};_dcd .Images =append (_dcd .Images ,_fbf );_dcd .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_dcd .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_dcd .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_dcd .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");_dcd .ContentTypes .EnsureDefault (i .Format ,"\u0069\u006d\u0061\u0067\u0065\u002f"+i .Format );return _fbf ,nil ;};
// 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 };};
// Index returns the placeholder index
func (_db PlaceHolder )Index ()uint32 {if _db ._efe .NvSpPr .NvPr .Ph .IdxAttr ==nil {return 0;};return *_db ._efe .NvSpPr .NvPr .Ph .IdxAttr ;};func (_dae *Presentation )onNewRelationship (_bcda *_c .DecodeMap ,_aba ,_bdcf string ,_dbb []*_dg .File ,_age *_ca .Relationship ,_ggb _c .Target )error {_babc :=_fea .DocTypePresentation ;switch _bdcf {case _fea .OfficeDocumentType :_dae ._gffd =_ae .NewPresentation ();_bcda .AddTarget (_aba ,_dae ._gffd ,_bdcf ,0);_bcda .AddTarget (_c .RelationsPathFor (_aba ),_dae ._gcf .X (),_bdcf ,0);_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,0);case _fea .CorePropertiesType :_bcda .AddTarget (_aba ,_dae .CoreProperties .X (),_bdcf ,0);_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,0);case _fea .CustomPropertiesType :_bcda .AddTarget (_aba ,_dae .CustomProperties .X (),_bdcf ,0);_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,0);case _fea .PresentationPropertiesType :_bcda .AddTarget (_aba ,_dae ._abf .X (),_bdcf ,0);_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,0);case _fea .ViewPropertiesType :_bcda .AddTarget (_aba ,_dae ._bbd .X (),_bdcf ,0);_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,0);case _fea .TableStylesType :_bcda .AddTarget (_aba ,_dae ._gdba .X (),_bdcf ,0);_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,0);case _fea .HyperLinkType :_bbg :=_bde .NewCT_Hyperlink ();_dbdc :=uint32 (len (_dae ._fddd ));_bcda .AddTarget (_aba ,_bbg ,_bdcf ,_dbdc );_dae ._fddd =append (_dae ._fddd ,_bbg );case _fea .CustomXMLType :_ggd :=&_fea .XSDAny {};_fgb :=uint32 (len (_dae ._ce ));_bcda .AddTarget (_aba ,_ggd ,_bdcf ,_fgb );_dae ._ce =append (_dae ._ce ,_ggd );_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,len (_dae ._ce ));case _fea .ChartType :_dfeb :=chart {_cd :_fe .NewChartSpace ()};_ccfe :=uint32 (len (_dae ._facd ));_bcda .AddTarget (_aba ,_dfeb ._cd ,_bdcf ,_ccfe );_dae ._facd =append (_dae ._facd ,&_dfeb );_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,len (_dae ._facd ));_dfeb ._eb =_age .TargetAttr ;case _fea .HandoutMasterType :_eadf :=_ae .NewHandoutMaster ();_bfa :=uint32 (len (_dae ._bce ));_bcda .AddTarget (_aba ,_eadf ,_bdcf ,_bfa );_dae ._bce =append (_dae ._bce ,_eadf );_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,len (_dae ._bce ));case _fea .NotesMasterType :_fef :=_ae .NewNotesMaster ();_dbe :=uint32 (len (_dae ._deg ));_bcda .AddTarget (_aba ,_fef ,_bdcf ,_dbe );_dae ._deg =append (_dae ._deg ,_fef );_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,len (_dae ._deg ));case _fea .ExtendedPropertiesType :_bcda .AddTarget (_aba ,_dae .AppProperties .X (),_bdcf ,0);_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,0);case _fea .SlideType :_bbcg :=_ae .NewSld ();_dae ._afec =append (_dae ._afec ,_bbcg );_bcda .AddTarget (_aba ,_bbcg ,_bdcf ,uint32 (len (_dae ._afec )));_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,len (_dae ._afec ));_gea :=_da .NewRelationships ();_bcda .AddTarget (_c .RelationsPathFor (_aba ),_gea .X (),_bdcf ,0);_dae ._efb =append (_dae ._efb ,_gea );case _fea .SlideMasterType :_gagd :=_ae .NewSldMaster ();if !_bcda .AddTarget (_aba ,_gagd ,_bdcf ,uint32 (len (_dae ._eg )+1)){return nil ;};_dae ._eg =append (_dae ._eg ,_gagd );_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,len (_dae ._eg ));_fafd :=_da .NewRelationships ();_bcda .AddTarget (_c .RelationsPathFor (_aba ),_fafd .X (),_bdcf ,0);_dae ._baba =append (_dae ._baba ,_fafd );case _fea .SlideLayoutType :_cbcg :=_ae .NewSldLayout ();if !_bcda .AddTarget (_aba ,_cbcg ,_bdcf ,uint32 (len (_dae ._egg )+1)){return nil ;};_dae ._egg =append (_dae ._egg ,_cbcg );_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,len (_dae ._egg ));_dgd :=_da .NewRelationships ();_bcda .AddTarget (_c .RelationsPathFor (_aba ),_dgd .X (),_bdcf ,0);_dae ._cce =append (_dae ._cce ,_dgd );case _fea .ThumbnailType :for _aec ,_fcde :=range _dbb {if _fcde ==nil {continue ;};if _fcde .Name ==_aba {_dea ,_efde :=_fcde .Open ();if _efde !=nil {return _e .Errorf ("e\u0072\u0072\u006f\u0072\u0020\u0072e\u0061\u0064\u0069\u006e\u0067\u0020\u0074\u0068\u0075m\u0062\u006e\u0061i\u006c:\u0020\u0025\u0073",_efde );};_dae .Thumbnail ,_ ,_efde =_ag .Decode (_dea );_dea .Close ();if _efde !=nil {return _e .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",_efde );};_dbb [_aec ]=nil ;};};case _fea .ThemeType :_bbgf :=_bde .NewTheme ();if !_bcda .AddTarget (_aba ,_bbgf ,_bdcf ,uint32 (len (_dae ._edfc )+1)){return nil ;};_dae ._edfc =append (_dae ._edfc ,_bbgf );_age .TargetAttr =_fea .RelativeFilename (_babc ,_ggb .Typ ,_bdcf ,len (_dae ._edfc ));_adb :=_da .NewRelationships ();_bcda .AddTarget (_c .RelationsPathFor (_aba ),_adb .X (),_bdcf ,0);_dae ._bfg =append (_dae ._bfg ,_adb );case _fea .ImageType :_aba =_ab .Clean (_aba );if _ega ,_feff :=_dae ._gfeb [_aba ];_feff {_age .TargetAttr =_ega ;return nil ;};_cag :="";for _efec ,_debg :=range _dbb {if _debg ==nil {continue ;};if _debg .Name ==_aba {_cad ,_gcaf :=_c .ExtractToDiskTmp (_debg ,_dae .TmpPath );if _gcaf !=nil {return _gcaf ;};_ddef ,_gcaf :=_da .ImageFromStorage (_cad );if _gcaf !=nil {return _gcaf ;};_cag =_ddef .Format ;_feg :=_da .MakeImageRef (_ddef ,&_dae .DocBase ,_dae ._gcf );_feg .SetTarget ("\u002e\u002e\u002f"+_aba [4:]);_dae .Images =append (_dae .Images ,_feg );_dbb [_efec ]=nil ;_bcda .RecordIndex (_aba ,len (_dae .Images ));break ;};};_eecc :=_bcda .IndexFor (_aba );_age .TargetAttr =_fea .RelativeImageFilename (_babc ,_ggb .Typ ,_bdcf ,_eecc ,_cag );_dae ._gfeb [_aba ]=_age .TargetAttr ;default:_g .Log .Debug ("\u0075\u006e\u0073\u0075\u0070p\u006f\u0072\u0074\u0065\u0064\u0020\u0072\u0065\u006c\u0061\u0074\u0069\u006fn\u0073\u0068\u0069\u0070\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0073\u0020\u0074\u0067\u0074\u003a\u0020\u0025\u0073",_bdcf ,_aba );};return nil ;};
// Type returns the placeholder type
func (_dcbf PlaceHolder )Type ()_ae .ST_PlaceholderType {return _dcbf ._efe .NvSpPr .NvPr .Ph .TypeAttr };
// NewViewProperties constructs a new ViewProperties.
func NewViewProperties ()ViewProperties {return ViewProperties {_efeg :_ae .NewViewPr ()}};
// SetWidth sets width of slide screen size with given value in EMU units.
func (_ggfb *SlideScreenSize )SetWidth (val int32 ){_ggfb [0]=val };
// AddTable adds an empty table to a slide.
func (_dced Slide )AddTable ()*_da .Table {_cdbe :=_ae .NewCT_GroupShapeChoice ();_dced ._acg .CSld .SpTree .Choice =append (_dced ._acg .CSld .SpTree .Choice ,_cdbe );_ffgda :=_ae .NewCT_GraphicalObjectFrame ();_cdbe .GraphicFrame =append (_cdbe .GraphicFrame ,_ffgda );_ffgda .Xfrm .Off =_bde .NewCT_Point2D ();_agc :=int64 (1);_ffgda .Xfrm .Off .XAttr =_bde .ST_Coordinate {ST_CoordinateUnqualified :&_agc };_ffgda .Xfrm .Off .YAttr =_bde .ST_Coordinate {ST_CoordinateUnqualified :&_agc };_gfdb :=_ffgda .Graphic .CT_GraphicalObject .GraphicData ;_gfdb .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";_fca :=_da .NewTableWithXfrm (_ffgda .Xfrm );_gfdb .Any =append (_gfdb .Any ,_fca .X ());return _fca ;};func _cgdd (_ddda []*_ae .CT_GroupShapeChoice )[]*_ae .CT_GroupShapeChoice {var _gdfb []*_ae .CT_GroupShapeChoice ;for _ ,_gdac :=range _ddda {if len (_gdac .Pic )==0{_gdfb =append (_gdfb ,_gdac );};};return _gdfb ;};
// PresentationText is an array of extracted text items which has some methods for representing extracted text.
type PresentationText struct{Slides []*SlideText ;};
// SetHeight sets height of slide screen size with given value in EMU units.
func (_gcfad *SlideScreenSize )SetHeight (val int32 ){_gcfad [1]=val };type chart struct{_cd *_fe .ChartSpace ;_ec string ;_eb string ;};
// SlideMaster is the slide master for a presentation.
type SlideMaster struct{_ebbd *Presentation ;_bbfd _da .Relationships ;_dcbd *_ae .SldMaster ;};
// ExtLst returns the ExtLst property.
func (_bda ViewProperties )ExtLst ()*_ae .CT_ExtensionList {return _bda ._efeg .ExtLst };func (_cc *chart )RelId ()string {return _cc ._ec };
// ShowCommentsAttr returns the WebPr property.
func (_agee ViewProperties )ShowCommentsAttr ()*bool {return _agee ._efeg .ShowCommentsAttr };
// ExtractText returns text from a slide as a SlideText object.
func (_cfdb *Slide )ExtractText ()*SlideText {_beg :=_cbf (_cfdb ._cbfg ,_cfdb ._acg .CSld .SpTree .Choice ,[]rectangle {},[]*TextItem {});_fa .Sort (sort2d (_beg ));return &SlideText {Items :_beg };};