// // 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 (_de "archive/zip";_cf "bytes";_dde "encoding/xml";_eb "errors";_bf "fmt";_fd "github.com/unidoc/unioffice";_cd "github.com/unidoc/unioffice/common";_ef "github.com/unidoc/unioffice/common/logger";_ca "github.com/unidoc/unioffice/common/tempstorage"; _ag "github.com/unidoc/unioffice/drawing";_da "github.com/unidoc/unioffice/internal/formatutils";_e "github.com/unidoc/unioffice/internal/license";_a "github.com/unidoc/unioffice/measurement";_bd "github.com/unidoc/unioffice/schema/soo/dml";_g "github.com/unidoc/unioffice/schema/soo/dml/chart"; _f "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_gg "github.com/unidoc/unioffice/schema/soo/pkg/relationships";_db "github.com/unidoc/unioffice/schema/soo/pml";_gf "github.com/unidoc/unioffice/zippkg";_gfg "image";_ec "image/jpeg";_ea "io"; _efd "math";_eg "os";_b "path";_bb "sort";_dd "strconv";_d "strings";); // Width returns slide screen size width in EMU units. func (_dcd *SlideScreenSize )Width ()int32 {return _dcd [0]};func (_degc *Slide )getSlideLayoutRels ()_cd .Relationships {_dfdd :=_degc ._bfc ;for _accg ,_gcaa :=range _dfdd .SlideLayouts (){if *_degc .GetSlideLayout ().CSld ==*_gcaa ._fffe .CSld {return _dfdd ._ddgc [_accg ]; };};return _cd .Relationships {};}; // Slide represents a slide of a presentation. type Slide struct{_egdg *_db .CT_SlideIdListEntry ;_dfee *_db .Sld ;_bfc *Presentation ;_bgbf *_bd .CT_ColorMapping ;}; // SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template func (_gcf *Presentation )SaveAsTemplate (w _ea .Writer )error {return _gcf .save (w ,true )}; // OpenTemplate opens a template file. func OpenTemplate (fn string )(*Presentation ,error ){_gb ,_bgb :=Open (fn );if _bgb !=nil {return nil ,_bgb ;};return _gb ,nil ;};func (_ddec *Presentation )nextSlideID ()uint32 {_bgfb :=uint32 (256);for _ ,_agfg :=range _ddec ._bec .SldIdLst .SldId {if _agfg .IdAttr >=_bgfb {_bgfb =_agfg .IdAttr +1; };};return _bgfb ;}; // SetTextAnchor controls the text anchoring func (_ddfb TextBox )SetTextAnchor (a _bd .ST_TextAnchoringType ){_ddfb ._ebag .TxBody .BodyPr =_bd .NewCT_TextBodyProperties ();_ddfb ._ebag .TxBody .BodyPr .AnchorAttr =a ;}; // Slides returns the slides in the presentation. func (_gbc *Presentation )Slides ()[]Slide {_ddgb :=[]Slide {};for _eeaa ,_gccb :=range _gbc ._gcec {_ddgb =append (_ddgb ,Slide {_gbc ._bec .SldIdLst .SldId [_eeaa ],_gccb ,_gbc ,nil });};return _ddgb ;}; // SorterViewPr returns the SorterViewPr property. func (_adb ViewProperties )SorterViewPr ()*_db .CT_SlideSorterViewProperties {return _adb ._efda .SorterViewPr ;}; // ExtractText returns text from a slide as a SlideText object. func (_ac *Slide )ExtractText ()*SlideText {_ff :=_fb (_ac ._bfc ,_ac ._dfee .CSld .SpTree .Choice ,[]rectangle {},[]*TextItem {});_bb .Sort (sort2d (_ff ));return &SlideText {Items :_ff };};func (_cdb *Presentation )saveToFile (_dbc string ,_ccb bool )error {_gge ,_eca :=_eg .Create (_dbc ); if _eca !=nil {return _eca ;};defer _gge .Close ();return _cdb .save (_gge ,_ccb );}; // AddParagraph adds a paragraph to the text box func (_aede TextBox )AddParagraph ()_ag .Paragraph {_fabe :=_bd .NewCT_TextParagraph ();_aede ._ebag .TxBody .P =append (_aede ._ebag .TxBody .P ,_fabe );return _ag .MakeParagraph (_fabe );}; // SetSize sets the slide size, take argument of SlideScreenSize. func (_fdag *SlideSize )SetSize (sz SlideScreenSize ){_fdag ._eage .CxAttr =sz [0];_fdag ._eage .CyAttr =sz [1];};func _ecd (_cbf *Presentation ,_cfe *_db .CT_Shape ,_deg *_db .CT_GraphicalObjectFrame ,_acf *TableInfo ,_afgg *_bd .CT_Transform2D ,_eff int ,_ccaf []rectangle ,_agc []*_bd .CT_TextParagraph )[]*TextItem {_bdc :=[]*TextItem {}; var _ada ,_fa ,_bae ,_bgg ,_ae ,_cab int64 ;_be :=_afgg ==nil ;_fe :=0;for _ ,_cdc :=range _agc {for _ ,_ddg :=range _cdc .EG_TextRun {if _dae :=_ddg .R ;_dae !=nil {if !_be {if _afgg .Off !=nil {if _daa :=_afgg .Ext ;_daa !=nil {_ae ,_cab =_daa .CxAttr ,_daa .CyAttr ; };if _effa :=_afgg .Off .XAttr .ST_CoordinateUnqualified ;_effa !=nil {_ada =*_effa ;_fa =_ada +_ae ;_be =true ;};if _dfc :=_afgg .Off .YAttr .ST_CoordinateUnqualified ;_dfc !=nil {_bae =*_dfc ;_bgg =_bae +_cab ;_be =true ;};};};_def :=append ([]rectangle {},_ccaf ...); _def =append (_def ,rectangle {_aff :_ada ,_bg :_fa ,_afga :_bae ,_gc :_bgg });_bdc =append (_bdc ,&TextItem {Presentation :_cbf ,Shape :_cfe ,GraphicFrame :_deg ,TableInfo :_acf ,Paragraph :_cdc ,Run :_dae ,Text :_dae .T ,_bfd :_def ,_afg :_eff ,_deb :_fe }); _fe ++;};};};return _bdc ;}; // Remove removes a placeholder from a presentation. func (_bgbd PlaceHolder )Remove ()error {for _fdf ,_cfa :=range _bgbd ._ddae .CSld .SpTree .Choice {for _ ,_gce :=range _cfa .Sp {if _gce ==_bgbd ._bggb {copy (_bgbd ._ddae .CSld .SpTree .Choice [_fdf :],_bgbd ._ddae .CSld .SpTree .Choice [_fdf +1:]);_bgbd ._ddae .CSld .SpTree .Choice =_bgbd ._ddae .CSld .SpTree .Choice [0:len (_bgbd ._ddae .CSld .SpTree .Choice )-1]; return nil ;};};};return _eb .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");}; // GetTableStyleById returns *dml.CT_TableStyle by its style id. func (_fcb *Presentation )GetTableStyleById (id string )*_bd .CT_TableStyle {_bdgd :=_fcb ._ecef .TblStyle ();for _ ,_gcaf :=range _bdgd {if _gcaf .StyleIdAttr ==id {return _gcaf ;};};return nil ;}; // 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 (_cde *Presentation )AddDefaultSlideWithLayout (l SlideLayout )(Slide ,error ){_fgd ,_gbb :=_cde .AddSlideWithLayout (l );for _ ,_daad :=range _fgd .PlaceHolders (){_daad .Clear ();switch _daad .Type (){case _db .ST_PlaceholderTypeFtr ,_db .ST_PlaceholderTypeDt ,_db .ST_PlaceholderTypeSldNum :_daad .Remove (); };};return _fgd ,_gbb ;}; // X returns the inner wrapped XML type. func (_fdc Slide )X ()*_db .Sld {return _fdc ._dfee }; // Presentation is the a presentation base document. type Presentation struct{_cd .DocBase ;_bec *_db .Presentation ;_ddcc _cd .Relationships ;_gcec []*_db .Sld ;_gcb []_cd .Relationships ;_abb []*_db .SldMaster ;_edd []_cd .Relationships ;_cee []*_db .SldLayout ;_ddgc []_cd .Relationships ;_bebg []*_bd .Theme ; _cfb []_cd .Relationships ;_ecef _cd .TableStyles ;_bbg PresentationProperties ;_eba ViewProperties ;_ffc []*_bd .CT_Hyperlink ;_abd []*chart ;_fee []*_db .HandoutMaster ;_gdb []*_db .NotesMaster ;_agg []*_fd .XSDAny ;_bgc map[string ]string ;_cge string ; }; // SlideSize represents a slide size of a presentation. type SlideSize struct{_eage *_db .CT_SlideSize ;_aeac *Presentation ;}; // SlideScreenSize represents the slide screen size as a 2 element array // representing the width and height in EMU units. type SlideScreenSize [2]int32 ; // X returns the inner wrapped XML type. func (_aeb SlideLayout )X ()*_db .SldLayout {return _aeb ._fffe };func _dgb ()*Presentation {_cce :=&Presentation {_bec :_db .NewPresentation ()};_cce ._bec .SldIdLst =_db .NewCT_SlideIdList ();_cce ._bec .ConformanceAttr =_f .ST_ConformanceClassTransitional ; _cce .AppProperties =_cd .NewAppProperties ();_cce .CoreProperties =_cd .NewCoreProperties ();_cce ._ecef =_cd .NewTableStyles ();_cce .ContentTypes =_cd .NewContentTypes ();_cce .Rels =_cd .NewRelationships ();_cce ._ddcc =_cd .NewRelationships ();_cce ._bbg =NewPresentationProperties (); _cce ._eba =NewViewProperties ();_cce ._bgc =map[string ]string {};return _cce ;};type sort2d []*TextItem ;func (_gdd *Slide )getSlideRels ()_cd .Relationships {_ebfg :=_gdd ._bfc ;for _deef ,_fad :=range _ebfg .Slides (){if *_gdd ._dfee ==*_fad ._dfee {return _ebfg ._gcb [_deef ]; };};return _cd .Relationships {};};func (_fdb sort2d )Len ()int {return len (_fdb )}; // ClrMru returns the ClrMru property. func (_fga PresentationProperties )ClrMru ()*_bd .CT_ColorMRU {return _fga ._eee .ClrMru }; // SlideLayout is a layout from which slides can be created. type SlideLayout struct{_fffe *_db .SldLayout }; // NotesTextViewPr returns the NotesTextViewPr property. func (_dbf ViewProperties )NotesTextViewPr ()*_db .CT_NotesTextViewProperties {return _dbf ._efda .NotesTextViewPr ;}; // 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 (_eagd Slide )GetPlaceholder (t _db .ST_PlaceholderType )(PlaceHolder ,error ){for _ ,_ffda :=range _eagd ._dfee .CSld .SpTree .Choice {for _ ,_aafd :=range _ffda .Sp {if _aafd .NvSpPr !=nil &&_aafd .NvSpPr .NvPr !=nil &&_aafd .NvSpPr .NvPr .Ph !=nil {if _aafd .NvSpPr .NvPr .Ph .TypeAttr ==t {return PlaceHolder {_aafd ,_eagd ._dfee },nil ; };};};};return PlaceHolder {},_eb .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 (_fdg *chart )RelId ()string {return _fdg ._dba }; // Save writes the presentation out to a writer in the Zip package format func (_eab *Presentation )Save (w _ea .Writer )error {return _eab .save (w ,false )}; // GetSlideLayout returns a slide layout related to the slide. func (_egac *Slide )GetSlideLayout ()*_db .SldLayout {_ecc :=_egac .getSlideRels ();for _ ,_bfa :=range _ecc .Relationships (){if _bfa .Type ()==_fd .SlideLayoutType {if _ccge ,_dcf :=_da .StringToNumbers (_bfa .Target ());_dcf {return _egac ._bfc ._cee [_ccge -1]; };return nil ;};};return nil ;}; // Sid returns the sid of slide func (_baddd Slide )Sid ()*_db .CT_SlideIdListEntry {return _baddd ._egdg }; // AddTextBox adds an empty textbox to a slide. func (_dec Slide )AddTextBox ()TextBox {_cdce :=_db .NewCT_GroupShapeChoice ();_dec ._dfee .CSld .SpTree .Choice =append (_dec ._dfee .CSld .SpTree .Choice ,_cdce );_adf :=_db .NewCT_Shape ();_cdce .Sp =append (_cdce .Sp ,_adf );_adf .SpPr =_bd .NewCT_ShapeProperties (); _adf .SpPr .Xfrm =_bd .NewCT_Transform2D ();_adf .SpPr .PrstGeom =_bd .NewCT_PresetGeometry2D ();_adf .SpPr .PrstGeom .PrstAttr =_bd .ST_ShapeTypeRect ;_adf .NvSpPr =_db .NewCT_ShapeNonVisual ();_adf .NvSpPr .CNvSpPr =_bd .NewCT_NonVisualDrawingShapeProps (); _eec :=true ;_adf .NvSpPr .CNvSpPr .TxBoxAttr =&_eec ;_adf .TxBody =_bd .NewCT_TextBody ();_adf .TxBody .BodyPr =_bd .NewCT_TextBodyProperties ();_adf .TxBody .BodyPr .WrapAttr =_bd .ST_TextWrappingTypeSquare ;_adf .TxBody .BodyPr .SpAutoFit =_bd .NewCT_TextShapeAutofit (); _edff :=TextBox {_adf };_edff .Properties ().SetWidth (3*_a .Inch );_edff .Properties ().SetHeight (1*_a .Inch );_edff .Properties ().SetPosition (0,0);return _edff ;}; // Text returns text from a slide as one string separated with line breaks. func (_beg *SlideText )Text ()string {_cba :=_cf .NewBuffer ([]byte {});for _ ,_ega :=range _beg .Items {if _ega .Text !=""{_cba .WriteString (_ega .Text );_cba .WriteString ("\u000a");};};return _cba .String ();}; // X returns the inner wrapped XML type. func (_fac *Presentation )X ()*_db .Presentation {return _fac ._bec }; // OutlineViewPr returns the OutlineViewPr property. func (_dbca ViewProperties )OutlineViewPr ()*_db .CT_OutlineViewProperties {return _dbca ._efda .OutlineViewPr ;}; // Type returns the placeholder type func (_feg PlaceHolder )Type ()_db .ST_PlaceholderType {return _feg ._bggb .NvSpPr .NvPr .Ph .TypeAttr }; // Height returns slide screen size height in EMU units. func (_ccafd *SlideScreenSize )Height ()int32 {return _ccafd [1]}; // X returns the inner wrapped XML type. func (_dade *SlideSize )X ()*_db .CT_SlideSize {return _dade ._eage }; // 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 (_acg *Presentation )AddImage (i _cd .Image )(_cd .ImageRef ,error ){_fca :=_cd .MakeImageRef (i ,&_acg .DocBase ,_acg ._ddcc );if i .Data ==nil &&i .Path ==""{return _fca ,_eb .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 _fca ,_eb .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 _fca ,_eb .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 !=""{_fff :=_ca .Add (i .Path );if _fff !=nil {return _fca ,_fff ;};};_acg .Images =append (_acg .Images ,_fca );_acg .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_acg .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067"); _acg .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_acg .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");_acg .ContentTypes .EnsureDefault (i .Format ,"\u0069\u006d\u0061\u0067\u0065\u002f"+i .Format ); return _fca ,nil ;}; // 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 (_fae PlaceHolder )SetText (text string ){_fae .Clear ();_efg :=_bd .NewEG_TextRun ();_efg .R =_bd .NewCT_RegularTextRun ();_efg .R .T =text ;if len (_fae ._bggb .TxBody .P )==0{_fae ._bggb .TxBody .P =append (_fae ._bggb .TxBody .P ,_bd .NewCT_TextParagraph ()); };_fae ._bggb .TxBody .P [0].EG_TextRun =nil ;_fae ._bggb .TxBody .P [0].EG_TextRun =append (_fae ._bggb .TxBody .P [0].EG_TextRun ,_efg );}; // GetChartSpaceByRelId returns a *crt.ChartSpace with the associated relation ID in the // slide. func (_dgag *Slide )GetChartSpaceByRelId (relId string )*_g .ChartSpace {_ddde :=_dgag .getSlideRels ();if (_ddde ==_cd .Relationships {}){return nil ;};_egb :=_ddde .GetTargetByRelId (relId );for _ ,_fecdc :=range _dgag ._bfc ._abd {if _egb ==_fecdc .Target (){return _fecdc ._af ; };};return nil ;}; // ValidateWithPath validates the slide passing path informaton for a better // error message. func (_agfe Slide )ValidateWithPath (path string )error {if _ddb :=_agfe ._dfee .ValidateWithPath (path );_ddb !=nil {return _ddb ;};for _ ,_gbgg :=range _agfe ._dfee .CSld .SpTree .Choice {for _ ,_daeb :=range _gbgg .Sp {if _daeb .TxBody !=nil {if len (_daeb .TxBody .P )==0{return _eb .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 ;}; // SlideMasters returns the slide masters defined in the presentation. func (_ddgg *Presentation )SlideMasters ()[]SlideMaster {_gfb :=[]SlideMaster {};for _gbe ,_ddf :=range _ddgg ._abb {_gfb =append (_gfb ,SlideMaster {_ddgg ,_ddgg ._edd [_gbe ],_ddf });};return _gfb ;}; // GetImageByRelID returns an ImageRef with the associated relation ID in the // document. func (_gbf *Presentation )GetImageByRelID (relID string )(_cd .ImageRef ,bool ){for _ ,_ffa :=range _gbf .Images {if _ffa .RelID ()==relID {return _ffa ,true ;};};return _cd .ImageRef {},false ;}; // X returns the inner wrapped XML type. func (_faa PresentationProperties )X ()*_db .PresentationPr {return _faa ._eee }; // PlaceHolder is a place holder from a slide. type PlaceHolder struct{_bggb *_db .CT_Shape ;_ddae *_db .Sld ;}; // GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation. func (_edfff *Slide )GetColorBySchemeColor (schClr _bd .ST_SchemeColorVal )*_bd .CT_Color {_edfff .ensureClrMap ();_gba :=_edfff ._bgbf ;if _gba ==nil {return nil ;};var _aegc _bd .ST_ColorSchemeIndex ;switch schClr .String (){case "\u0062\u0067\u0031":_aegc =_gba .Bg1Attr ; case "\u0062\u0067\u0032":_aegc =_gba .Bg2Attr ;case "\u0074\u0078\u0031":_aegc =_gba .Tx1Attr ;case "\u0074\u0078\u0032":_aegc =_gba .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_aegc =_gba .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_aegc =_gba .Accent2Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0033":_aegc =_gba .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_aegc =_gba .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_aegc =_gba .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_aegc =_gba .Accent6Attr ; case "\u0068\u006c\u0069n\u006b":_aegc =_gba .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_aegc =_gba .FolHlinkAttr ;case "\u0064\u006b\u0031":_aegc =_bd .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_aegc =_bd .ST_ColorSchemeIndexDk2 ; case "\u006c\u0074\u0031":_aegc =_bd .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_aegc =_bd .ST_ColorSchemeIndexLt2 ;default:_aegc =_bd .ST_ColorSchemeIndexUnset ;};_bgca :=_edfff ._bfc ._bebg [0];_dgg :=_bgca .ThemeElements ;if _dgg ==nil {return nil ; };var _abca *_bd .CT_Color ;_dafb :=_dgg .ClrScheme ;switch _aegc .String (){case "\u0064\u006b\u0031":_abca =_dafb .Dk1 ;case "\u0064\u006b\u0032":_abca =_dafb .Dk2 ;case "\u006c\u0074\u0031":_abca =_dafb .Lt1 ;case "\u006c\u0074\u0032":_abca =_dafb .Lt2 ; case "\u0061c\u0063\u0065\u006e\u0074\u0031":_abca =_dafb .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_abca =_dafb .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_abca =_dafb .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_abca =_dafb .Accent4 ; case "\u0061c\u0063\u0065\u006e\u0074\u0035":_abca =_dafb .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_abca =_dafb .Accent6 ;case "\u0068\u006c\u0069n\u006b":_abca =_dafb .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_abca =_dafb .FolHlink ; default:return nil ;};return _abca ;}; // NormalViewPr returns the NormalViewPr property. func (_cdca ViewProperties )NormalViewPr ()*_db .CT_NormalViewProperties {return _cdca ._efda .NormalViewPr ;}; // Close closes the presentation, removing any temporary files that might have been // created when opening a document. func (_eae *Presentation )Close ()error {if _eae .TmpPath !=""{return _ca .RemoveAll (_eae .TmpPath );};return nil ;}; // AddSlide adds a new slide to the presentation. func (_abag *Presentation )AddSlide ()Slide {_efad :=_db .NewCT_SlideIdListEntry ();_efad .IdAttr =_abag .nextSlideID ();_abag ._bec .SldIdLst .SldId =append (_abag ._bec .SldIdLst .SldId ,_efad );_cdag :=_db .NewSld ();_cdag .CSld .SpTree .NvGrpSpPr .CNvPr .IdAttr =1; _cdag .CSld .SpTree .GrpSpPr .Xfrm =_bd .NewCT_GroupTransform2D ();_cdag .CSld .SpTree .GrpSpPr .Xfrm .Off =_bd .NewCT_Point2D ();_cdag .CSld .SpTree .GrpSpPr .Xfrm .Off .XAttr .ST_CoordinateUnqualified =_fd .Int64 (0);_cdag .CSld .SpTree .GrpSpPr .Xfrm .Off .YAttr .ST_CoordinateUnqualified =_fd .Int64 (0); _cdag .CSld .SpTree .GrpSpPr .Xfrm .Ext =_bd .NewCT_PositiveSize2D ();_cdag .CSld .SpTree .GrpSpPr .Xfrm .Ext .CxAttr =int64 (0*_a .Point );_cdag .CSld .SpTree .GrpSpPr .Xfrm .Ext .CyAttr =int64 (0*_a .Point );_cdag .CSld .SpTree .GrpSpPr .Xfrm .ChOff =_cdag .CSld .SpTree .GrpSpPr .Xfrm .Off ; _cdag .CSld .SpTree .GrpSpPr .Xfrm .ChExt =_cdag .CSld .SpTree .GrpSpPr .Xfrm .Ext ;_abag ._gcec =append (_abag ._gcec ,_cdag );_aad :=_abag ._ddcc .AddAutoRelationship (_fd .DocTypePresentation ,_fd .OfficeDocumentType ,len (_abag ._gcec ),_fd .SlideType ); _efad .RIdAttr =_aad .ID ();_ccg :=_fd .AbsoluteFilename (_fd .DocTypePresentation ,_fd .SlideType ,len (_abag ._gcec ));_abag .ContentTypes .AddOverride (_ccg ,_fd .SlideContentType );_dffc :=_cd .NewRelationships ();_abag ._gcb =append (_abag ._gcb ,_dffc ); _dffc .AddAutoRelationship (_fd .DocTypePresentation ,_fd .SlideType ,len (_abag ._cee ),_fd .SlideLayoutType );return Slide {_efad ,_cdag ,_abag ,nil };}; // Properties returns the properties of the TextBox. func (_dbb Image )Properties ()_ag .ShapeProperties {if _dbb ._gag .SpPr ==nil {_dbb ._gag .SpPr =_bd .NewCT_ShapeProperties ();};return _ag .MakeShapeProperties (_dbb ._gag .SpPr );}; // ExtractText returns text from a presentation as a PresentationText object. func (_dc *Presentation )ExtractText ()*PresentationText {_cc :=[]*SlideText {};for _ ,_ba :=range _dc .Slides (){_bfe :=_ba .ExtractText ();if _bfe !=nil {_cc =append (_cc ,_bfe );};};return &PresentationText {Slides :_cc };};func (_afb *Presentation )save (_gdcf _ea .Writer ,_bed bool )error {const _geb ="\u0050\u0072\u0065\u0073en\u0074\u0061\u0074\u0069\u006f\u006e\u003a\u0070\u002e\u0053\u0061\u0076\u0065"; if _dca :=_afb ._bec .Validate ();_dca !=nil {_ef .Log .Debug ("\u0076\u0061\u006c\u0069\u0064\u0061\u0074\u0069\u006f\u006e\u0020\u0065\u0072\u0072\u006fr\u0020i\u006e\u0020\u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0073",_dca ); };if !_e .GetLicenseKey ().IsLicensed ()&&!_gfce {_bf .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");_bf .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 _eb .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 (_afb ._cge )==0{_fddf ,_dge :=_e .GenRefId ("\u0070\u0077");if _dge !=nil {_ef .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dge ); return _dge ;};_afb ._cge =_fddf ;};if _fbb :=_e .Track (_afb ._cge ,_geb );_fbb !=nil {_ef .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fbb );return _fbb ;};if _bed {_afb .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"); _afb .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 {_afb .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"); _afb .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"); };_eeg :=_fd .DocTypePresentation ;_fega :=_de .NewWriter (_gdcf );defer _fega .Close ();if _fef :=_gf .MarshalXML (_fega ,_fd .BaseRelsFilename ,_afb .Rels .X ());_fef !=nil {return _fef ;};if _cdec :=_gf .MarshalXMLByType (_fega ,_eeg ,_fd .ExtendedPropertiesType ,_afb .AppProperties .X ()); _cdec !=nil {return _cdec ;};if _gcbg :=_gf .MarshalXMLByType (_fega ,_eeg ,_fd .CorePropertiesType ,_afb .CoreProperties .X ());_gcbg !=nil {return _gcbg ;};if _bedc :=_gf .MarshalXMLByType (_fega ,_eeg ,_fd .PresentationPropertiesType ,_afb ._bbg .X ()); _bedc !=nil {return _bedc ;};if _baf :=_gf .MarshalXMLByType (_fega ,_eeg ,_fd .ViewPropertiesType ,_afb ._eba .X ());_baf !=nil {return _baf ;};if _afge :=_gf .MarshalXMLByType (_fega ,_eeg ,_fd .TableStylesType ,_afb ._ecef .X ());_afge !=nil {return _afge ; };if _afb .CustomProperties .X ()!=nil {if _egg :=_gf .MarshalXMLByType (_fega ,_eeg ,_fd .CustomPropertiesType ,_afb .CustomProperties .X ());_egg !=nil {return _egg ;};};if _afb .Thumbnail !=nil {_bdf ,_cbee :=_fega .Create ("\u0064\u006f\u0063Pr\u006f\u0070\u0073\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c\u002e\u006a\u0070\u0065\u0067"); if _cbee !=nil {return _cbee ;};if _ffba :=_ec .Encode (_bdf ,_afb .Thumbnail ,nil );_ffba !=nil {return _ffba ;};};_gfa :=_fd .AbsoluteFilename (_eeg ,_fd .OfficeDocumentType ,0);if _cec :=_gf .MarshalXML (_fega ,_gfa ,_afb ._bec );_cec !=nil {return _cec ; };if _bea :=_gf .MarshalXML (_fega ,_gf .RelationsPathFor (_gfa ),_afb ._ddcc .X ());_bea !=nil {return _bea ;};for _cac ,_gdfa :=range _afb ._gcec {_dcebd :=_fd .AbsoluteFilename (_fd .DocTypePresentation ,_fd .SlideType ,_cac +1);_gf .MarshalXML (_fega ,_dcebd ,_gdfa ); if !_afb ._gcb [_cac ].IsEmpty (){_accf :=_gf .RelationsPathFor (_dcebd );_gf .MarshalXML (_fega ,_accf ,_afb ._gcb [_cac ].X ());};};for _fggf ,_cfbg :=range _afb ._abb {_ebcd :=_fd .AbsoluteFilename (_fd .DocTypePresentation ,_fd .SlideMasterType ,_fggf +1); _gf .MarshalXML (_fega ,_ebcd ,_cfbg );if !_afb ._edd [_fggf ].IsEmpty (){_dbea :=_gf .RelationsPathFor (_ebcd );_gf .MarshalXML (_fega ,_dbea ,_afb ._edd [_fggf ].X ());};};for _ebf ,_eeeb :=range _afb ._cee {_abad :=_fd .AbsoluteFilename (_fd .DocTypePresentation ,_fd .SlideLayoutType ,_ebf +1); _gf .MarshalXML (_fega ,_abad ,_eeeb );if !_afb ._ddgc [_ebf ].IsEmpty (){_badd :=_gf .RelationsPathFor (_abad );_gf .MarshalXML (_fega ,_badd ,_afb ._ddgc [_ebf ].X ());};};for _cgb ,_ddaee :=range _afb ._bebg {_cfde :=_fd .AbsoluteFilename (_fd .DocTypePresentation ,_fd .ThemeType ,_cgb +1); _gf .MarshalXML (_fega ,_cfde ,_ddaee );if !_afb ._cfb [_cgb ].IsEmpty (){_cadc :=_gf .RelationsPathFor (_cfde );_gf .MarshalXML (_fega ,_cadc ,_afb ._cfb [_cgb ].X ());};};for _ecf ,_gab :=range _afb ._abd {_aae :=_fd .AbsoluteFilename (_eeg ,_fd .ChartType ,_ecf +1); _gf .MarshalXML (_fega ,_aae ,_gab );};for _fda ,_eac :=range _afb ._fee {_gca :=_fd .AbsoluteFilename (_eeg ,_fd .HandoutMasterType ,_fda +1);_gf .MarshalXML (_fega ,_gca ,_eac );};for _caec ,_fbeg :=range _afb ._gdb {_bcf :=_fd .AbsoluteFilename (_eeg ,_fd .NotesMasterType ,_caec +1); _gf .MarshalXML (_fega ,_bcf ,_fbeg );};for _ddaf ,_ddd :=range _afb ._agg {_abde :=_fd .AbsoluteFilename (_eeg ,_fd .CustomXMLType ,_ddaf +1);_gf .MarshalXML (_fega ,_abde ,_ddd );};for _afdd ,_acd :=range _afb .Images {_ecg :=_afdd +1;if _bgbg ,_cfec :=_da .StringToNumbers (_acd .Target ()); _cfec &&_ecg !=_bgbg {_ecg =_bgbg ;};if _efe :=_cd .AddImageToZip (_fega ,_acd ,_ecg ,_fd .DocTypePresentation );_efe !=nil {return _efe ;};};_afb .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_afb .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067"); _afb .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_afb .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");if _aga :=_gf .MarshalXML (_fega ,_fd .ContentTypesFilename ,_afb .ContentTypes .X ()); _aga !=nil {return _aga ;};if _feae :=_afb .WriteExtraFiles (_fega );_feae !=nil {return _feae ;};return nil ;}; // HtmlPubPr returns the HtmlPubPr property. func (_baa PresentationProperties )HtmlPubPr ()*_db .CT_HtmlPublishProperties {return _baa ._eee .HtmlPubPr ;}; // 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 (_ffe sort2d )Less (i ,j int )bool {_fgc ,_cfd :=_ffe [i ],_ffe [j ];_ed ,_egd :=_fgc ._bfd ,_cfd ._bfd ;_ggg ,_aeg :=len (_ed )-1,len (_egd )-1;_cbe ,_gdg :=0,0;for {_agda ,_dda ,_daf ,_egc ,_begc ,_edb ,_bc ,_gggc :=_ed [_cbe ]._afga ,_egd [_gdg ]._afga ,_ed [_cbe ]._gc ,_egd [_gdg ]._gc ,_ed [_cbe ]._aff ,_egd [_gdg ]._aff ,_ed [_cbe ]._bg ,_egd [_gdg ]._bg ; if _agda ==_dda ||((_efd .Abs (float64 (_agda )-float64 (_dda ))< _ga )&&((_agda >=_dda &&_agda <=_egc )||(_dda >=_agda &&_dda <=_daf ))&&(_bc < _edb ||_begc > _gggc )){if _begc ==_edb {if _cbe < _ggg &&_gdg < _aeg {_cbe ++;_gdg ++;continue ;};if _cbe >=_ggg &&_gdg >=_aeg {break ; };return _cbe >=_ggg ;}else {return _begc < _edb ;};}else {return _agda < _dda ;};};_fbf ,_acc ,_ege ,_ffdf :=_fgc ._afg ,_cfd ._afg ,_fgc ._deb ,_cfd ._deb ;if _fbf ==_acc {return _ege <=_ffdf ;};return _fbf < _acc ;};func (_ce sort2d )Swap (i ,j int ){_ce [i ],_ce [j ]=_ce [j ],_ce [i ]}; // AddTable adds a new table to a placeholder. func (_dcge PlaceHolder )AddTable ()*_cd .Table {_dcge .Clear ();_adc :=_db .NewCT_GroupShapeChoice ();_dcge ._ddae .CSld .SpTree .Choice =append (_dcge ._ddae .CSld .SpTree .Choice ,_adc );_gcc :=_db .NewCT_GraphicalObjectFrame ();_adc .GraphicFrame =append (_adc .GraphicFrame ,_gcc ); _gcc .Xfrm .Off =_bd .NewCT_Point2D ();_bdg :=int64 (1);_gcc .Xfrm .Off .XAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_bdg };_gcc .Xfrm .Off .YAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_bdg };_ccd :=_gcc .Graphic .CT_GraphicalObject .GraphicData ; _ccd .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"; _cea :=_cd .NewTableWithXfrm (_gcc .Xfrm );_ccd .Any =append (_ccd .Any ,_cea .X ());return _cea ;}; // Index returns the placeholder index func (_ceg PlaceHolder )Index ()uint32 {if _ceg ._bggb .NvSpPr .NvPr .Ph .IdxAttr ==nil {return 0;};return *_ceg ._bggb .NvSpPr .NvPr .Ph .IdxAttr ;};type chart struct{_af *_g .ChartSpace ;_dba string ;_cg string ;};var _gfce =false ; // ViewProperties contains presentation specific properties. type ViewProperties struct{_efda *_db .ViewPr };func (_ggef *Slide )ensureClrMap (){if len (_ggef ._bfc ._abb )==0||len (_ggef ._bfc ._bebg )==0{return ;};_ffdab :=_ggef ._bfc ._abb [0];_bffe :=_ffdab .ClrMap ;if _adad :=_ggef ._dfee .ClrMapOvr ;_adad !=nil {if _bdb :=_adad .Choice ; _bdb !=nil {if _bdb .MasterClrMapping ==nil {if _bacb :=_bdb .OverrideClrMapping ;_bacb !=nil {if _bacb .Bg1Attr !=_bd .ST_ColorSchemeIndexUnset {_bffe .Bg1Attr =_bacb .Bg1Attr ;};if _bacb .Tx1Attr !=_bd .ST_ColorSchemeIndexUnset {_bffe .Tx1Attr =_bacb .Tx1Attr ; };if _bacb .Bg2Attr !=_bd .ST_ColorSchemeIndexUnset {_bffe .Bg2Attr =_bacb .Bg2Attr ;};if _bacb .Tx2Attr !=_bd .ST_ColorSchemeIndexUnset {_bffe .Tx2Attr =_bacb .Tx2Attr ;};if _bacb .Accent1Attr !=_bd .ST_ColorSchemeIndexUnset {_bffe .Accent1Attr =_bacb .Accent1Attr ; };if _bacb .Accent2Attr !=_bd .ST_ColorSchemeIndexUnset {_bffe .Accent2Attr =_bacb .Accent2Attr ;};if _bacb .Accent3Attr !=_bd .ST_ColorSchemeIndexUnset {_bffe .Accent3Attr =_bacb .Accent3Attr ;};if _bacb .Accent4Attr !=_bd .ST_ColorSchemeIndexUnset {_bffe .Accent4Attr =_bacb .Accent4Attr ; };if _bacb .Accent5Attr !=_bd .ST_ColorSchemeIndexUnset {_bffe .Accent5Attr =_bacb .Accent5Attr ;};if _bacb .Accent6Attr !=_bd .ST_ColorSchemeIndexUnset {_bffe .Accent6Attr =_bacb .Accent6Attr ;};if _bacb .HlinkAttr !=_bd .ST_ColorSchemeIndexUnset {_bffe .HlinkAttr =_bacb .HlinkAttr ; };if _bacb .FolHlinkAttr !=_bd .ST_ColorSchemeIndexUnset {_bffe .FolHlinkAttr =_bacb .FolHlinkAttr ;};};};};};_ggef ._bgbf =_bffe ;}; // PresentationText is an array of extracted text items which has some methods for representing extracted text. type PresentationText struct{Slides []*SlideText ;}; // GridSpacing returns the GridSpacing property. func (_gcag ViewProperties )GridSpacing ()*_bd .CT_PositiveSize2D {return _gcag ._efda .GridSpacing }; // PrnPr returns the PrnPr property. func (_bee PresentationProperties )PrnPr ()*_db .CT_PrintProperties {return _bee ._eee .PrnPr }; // AddImageToRels adds an image relationship to a slide without putting image on the slide. func (_fdbb Slide )AddImageToRels (img _cd .ImageRef )string {_eefe :=0;for _ebce ,_bdfa :=range _fdbb ._bfc .Images {if _bdfa ==img {_eefe =_ebce +1;break ;};};var _ffcg string ;for _adcd ,_dcb :=range _fdbb ._bfc .Slides (){if _dcb ._dfee ==_fdbb ._dfee {_ggga :=_bf .Sprintf ("\u002e\u002e\u002f\u006ded\u0069\u0061\u002f\u0069\u006d\u0061\u0067\u0065\u0025\u0064\u002e\u0025\u0073",_eefe ,img .Format ()); _acfb :=_fdbb ._bfc ._gcb [_adcd ].AddRelationship (_ggga ,_fd .ImageType );_ffcg =_acfb .ID ();};};return _ffcg ;};func (_bda *chart )Target ()string {return _bda ._cg }; // 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 (_faf *Presentation )AddSlideWithLayout (l SlideLayout )(Slide ,error ){_bgd :=_db .NewCT_SlideIdListEntry ();_bgd .IdAttr =256;for _ ,_dbe :=range _faf ._bec .SldIdLst .SldId {if _dbe .IdAttr >=_bgd .IdAttr {_bgd .IdAttr =_dbe .IdAttr +1;};};_faf ._bec .SldIdLst .SldId =append (_faf ._bec .SldIdLst .SldId ,_bgd ); _ffb :=_db .NewSld ();_gee :=_cf .Buffer {};_faea :=_dde .NewEncoder (&_gee );_feed :=_dde .StartElement {Name :_dde .Name {Local :"\u0073\u006c\u0069d\u0065"}};_feed .Attr =append (_feed .Attr ,_dde .Attr {Name :_dde .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"}); _feed .Attr =append (_feed .Attr ,_dde .Attr {Name :_dde .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"}); _feed .Attr =append (_feed .Attr ,_dde .Attr {Name :_dde .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"}); _feed .Attr =append (_feed .Attr ,_dde .Attr {Name :_dde .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"}); _feed .Attr =append (_feed .Attr ,_dde .Attr {Name :_dde .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"}); _feed .Attr =append (_feed .Attr ,_dde .Attr {Name :_dde .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 _edf :=l ._fffe .CSld .MarshalXML (_faea ,_feed );_edf !=nil {return Slide {},_edf ;};_faea .Flush ();_afa :=_dde .NewDecoder (&_gee );_ffb .CSld =_db .NewCT_CommonSlideData ();if _gcea :=_afa .Decode (_ffb .CSld );_gcea !=nil {return Slide {},_gcea ; };_ffb .CSld .NameAttr =nil ;_ffb .CSld .SpTree .Choice =_cga (_ffb .CSld .SpTree .Choice );_faf ._gcec =append (_faf ._gcec ,_ffb );_cabg :=_faf ._ddcc .AddAutoRelationship (_fd .DocTypePresentation ,_fd .OfficeDocumentType ,len (_faf ._gcec ),_fd .SlideType ); _bgd .RIdAttr =_cabg .ID ();_cff :=_fd .AbsoluteFilename (_fd .DocTypePresentation ,_fd .SlideType ,len (_faf ._gcec ));_faf .ContentTypes .AddOverride (_cff ,_fd .SlideContentType );_fdff :=_cd .NewRelationships ();_faf ._gcb =append (_faf ._gcb ,_fdff ); _babf :=len (_faf ._gcb )-1;for _dege ,_efc :=range _faf ._cee {if _efc ==l .X (){_fea :=_faf ._ddgc [_dege ];for _ ,_cdfe :=range _fea .X ().Relationship {if _cdfe .TypeAttr !=_fd .SlideMasterType {_faf ._gcb [_babf ].X ().Relationship =append (_faf ._gcb [_babf ].X ().Relationship ,_cdfe ); };};_fdff .AddAutoRelationship (_fd .DocTypePresentation ,_fd .SlideType ,_dege +1,_fd .SlideLayoutType );};};_ebc :=Slide {_bgd ,_ffb ,_faf ,nil };return _ebc ,nil ;}; // GetTextBoxes returns a list of all text boxes from a slide. func (_dbeg Slide )GetTextBoxes ()[]*TextBox {_cfgc :=[]*TextBox {};_cafd :=_dbeg ._dfee .CSld .SpTree .Choice ;for _ ,_add :=range _cafd {for _ ,_dag :=range _add .Sp {if _dag .NvSpPr .CNvSpPr .TxBoxAttr !=nil &&*_dag .NvSpPr .CNvSpPr .TxBoxAttr {_cfgc =append (_cfgc ,&TextBox {_dag }); };};};return _cfgc ;}; // ShowPr returns the ShowPr property. func (_bab PresentationProperties )ShowPr ()*_db .CT_ShowProperties {return _bab ._eee .ShowPr };type rectangle struct{_aff int64 ;_afga int64 ;_bg int64 ;_gc int64 ;}; // SlideLayouts returns the slide layouts defined in the presentation. func (_fde *Presentation )SlideLayouts ()[]SlideLayout {_eda :=[]SlideLayout {};for _ ,_cbd :=range _fde ._cee {_eda =append (_eda ,SlideLayout {_cbd });};return _eda ;}; // SetHeight sets height of slide screen size with given value in EMU units. func (_eacc *SlideScreenSize )SetHeight (val int32 ){_eacc [1]=val }; // GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation. func (_bbc *Presentation )GetColorBySchemeColor (schClr _bd .ST_SchemeColorVal )*_bd .CT_Color {if len (_bbc ._abb )==0||len (_bbc ._bebg )==0{return nil ;};var _afad _bd .ST_ColorSchemeIndex ;_bfga :=_bbc ._abb [0];_egfc :=_bfga .ClrMap ;switch schClr .String (){case "\u0062\u0067\u0031":_afad =_egfc .Bg1Attr ; case "\u0062\u0067\u0032":_afad =_egfc .Bg2Attr ;case "\u0074\u0078\u0031":_afad =_egfc .Tx1Attr ;case "\u0074\u0078\u0032":_afad =_egfc .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_afad =_egfc .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_afad =_egfc .Accent2Attr ; case "\u0061c\u0063\u0065\u006e\u0074\u0033":_afad =_egfc .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_afad =_egfc .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_afad =_egfc .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_afad =_egfc .Accent6Attr ; case "\u0068\u006c\u0069n\u006b":_afad =_egfc .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_afad =_egfc .FolHlinkAttr ;case "\u0064\u006b\u0031":_afad =_bd .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_afad =_bd .ST_ColorSchemeIndexDk2 ; case "\u006c\u0074\u0031":_afad =_bd .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_afad =_bd .ST_ColorSchemeIndexLt2 ;default:_afad =_bd .ST_ColorSchemeIndexUnset ;};_bege :=_bbc ._bebg [0];_cagg :=_bege .ThemeElements ;if _cagg ==nil {return nil ; };var _debf *_bd .CT_Color ;_ceee :=_cagg .ClrScheme ;switch _afad .String (){case "\u0064\u006b\u0031":_debf =_ceee .Dk1 ;case "\u0064\u006b\u0032":_debf =_ceee .Dk2 ;case "\u006c\u0074\u0031":_debf =_ceee .Lt1 ;case "\u006c\u0074\u0032":_debf =_ceee .Lt2 ; case "\u0061c\u0063\u0065\u006e\u0074\u0031":_debf =_ceee .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_debf =_ceee .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_debf =_ceee .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_debf =_ceee .Accent4 ; case "\u0061c\u0063\u0065\u006e\u0074\u0035":_debf =_ceee .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_debf =_ceee .Accent6 ;case "\u0068\u006c\u0069n\u006b":_debf =_ceee .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_debf =_ceee .FolHlink ; default:return nil ;};return _debf ;}; // SetWidth sets width of slide screen size with given value in EMU units. func (_ffg *SlideScreenSize )SetWidth (val int32 ){_ffg [0]=val }; // TableInfo is used for keep information about a table, a row and a cell where the text is located. type TableInfo struct{Table *_bd .CT_Table ;Row *_bd .CT_TableRow ;Cell *_bd .CT_TableCell ;RowIndex int ;ColIndex int ;}; // Properties returns the properties of the TextBox. func (_gbggg TextBox )Properties ()_ag .ShapeProperties {if _gbggg ._ebag .SpPr ==nil {_gbggg ._ebag .SpPr =_bd .NewCT_ShapeProperties ();};return _ag .MakeShapeProperties (_gbggg ._ebag .SpPr );}; // AddTable adds an empty table to a slide. func (_bac Slide )AddTable ()*_cd .Table {_aabe :=_db .NewCT_GroupShapeChoice ();_bac ._dfee .CSld .SpTree .Choice =append (_bac ._dfee .CSld .SpTree .Choice ,_aabe );_gbbb :=_db .NewCT_GraphicalObjectFrame ();_aabe .GraphicFrame =append (_aabe .GraphicFrame ,_gbbb ); _gbbb .Xfrm .Off =_bd .NewCT_Point2D ();_cffa :=int64 (1);_gbbb .Xfrm .Off .XAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_cffa };_gbbb .Xfrm .Off .YAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_cffa };_agcb :=_gbbb .Graphic .CT_GraphicalObject .GraphicData ; _agcb .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"; _gac :=_cd .NewTableWithXfrm (_gbbb .Xfrm );_agcb .Any =append (_agcb .Any ,_gac .X ());return _gac ;}; // NewSlideScreenSize returns slide screen size with default MS PowerPoint slide screen size 16x9. func NewSlideScreenSize ()SlideScreenSize {return NewSlideScreenSizeWithValue (SlideScreenSize16x9 [0],SlideScreenSize16x9 [1]);};func (_cgcb *Presentation )onNewRelationship (_feb *_gf .DecodeMap ,_fddb ,_ceef string ,_ggeg []*_de .File ,_ebda *_gg .Relationship ,_eabc _gf .Target )error {_ebfc :=_fd .DocTypePresentation ; switch _ceef {case _fd .OfficeDocumentType :_cgcb ._bec =_db .NewPresentation ();_feb .AddTarget (_fddb ,_cgcb ._bec ,_ceef ,0);_feb .AddTarget (_gf .RelationsPathFor (_fddb ),_cgcb ._ddcc .X (),_ceef ,0);_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,0); case _fd .CorePropertiesType :_feb .AddTarget (_fddb ,_cgcb .CoreProperties .X (),_ceef ,0);_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,0);case _fd .CustomPropertiesType :_feb .AddTarget (_fddb ,_cgcb .CustomProperties .X (),_ceef ,0); _ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,0);case _fd .PresentationPropertiesType :_feb .AddTarget (_fddb ,_cgcb ._bbg .X (),_ceef ,0);_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,0);case _fd .ViewPropertiesType :_feb .AddTarget (_fddb ,_cgcb ._eba .X (),_ceef ,0); _ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,0);case _fd .TableStylesType :_feb .AddTarget (_fddb ,_cgcb ._ecef .X (),_ceef ,0);_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,0);case _fd .HyperLinkType :_babfa :=_bd .NewCT_Hyperlink (); _gfe :=uint32 (len (_cgcb ._ffc ));_feb .AddTarget (_fddb ,_babfa ,_ceef ,_gfe );_cgcb ._ffc =append (_cgcb ._ffc ,_babfa );case _fd .CustomXMLType :_fecd :=&_fd .XSDAny {};_agca :=uint32 (len (_cgcb ._agg ));_feb .AddTarget (_fddb ,_fecd ,_ceef ,_agca ); _cgcb ._agg =append (_cgcb ._agg ,_fecd );_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,len (_cgcb ._agg ));case _fd .ChartType :_eaf :=chart {_af :_g .NewChartSpace ()};_gfac :=uint32 (len (_cgcb ._abd ));_feb .AddTarget (_fddb ,_eaf ._af ,_ceef ,_gfac ); _cgcb ._abd =append (_cgcb ._abd ,&_eaf );_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,len (_cgcb ._abd ));_eaf ._cg =_ebda .TargetAttr ;case _fd .HandoutMasterType :_fegc :=_db .NewHandoutMaster ();_dced :=uint32 (len (_cgcb ._fee )); _feb .AddTarget (_fddb ,_fegc ,_ceef ,_dced );_cgcb ._fee =append (_cgcb ._fee ,_fegc );_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,len (_cgcb ._fee ));case _fd .NotesMasterType :_gagd :=_db .NewNotesMaster ();_beag :=uint32 (len (_cgcb ._gdb )); _feb .AddTarget (_fddb ,_gagd ,_ceef ,_beag );_cgcb ._gdb =append (_cgcb ._gdb ,_gagd );_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,len (_cgcb ._gdb ));case _fd .ExtendedPropertiesType :_feb .AddTarget (_fddb ,_cgcb .AppProperties .X (),_ceef ,0); _ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,0);case _fd .SlideType :if _eea ,_gfed :=_da .StringToNumbers (_fddb );_gfed {if len (_cgcb ._gcec )< _eea {_bfg :=_db .NewSld ();_cgcb ._gcec =append (_cgcb ._gcec ,_bfg );_feb .AddTarget (_fddb ,_bfg ,_ceef ,uint32 (_eea )); _ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,_eea );_efcc :=_cd .NewRelationships ();_feb .AddTarget (_gf .RelationsPathFor (_fddb ),_efcc .X (),_ceef ,0);if len (_cgcb ._gcb )>=_eea {_cgcb ._gcb [_eea -1]=_efcc ;}else {_cgcb ._gcb =append (_cgcb ._gcb ,_efcc ); };};};case _fd .SlideMasterType :_cag :=_db .NewSldMaster ();if !_feb .AddTarget (_fddb ,_cag ,_ceef ,uint32 (len (_cgcb ._abb )+1)){return nil ;};_cgcb ._abb =append (_cgcb ._abb ,_cag );_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,len (_cgcb ._abb )); _ffbf :=_cd .NewRelationships ();_feb .AddTarget (_gf .RelationsPathFor (_fddb ),_ffbf .X (),_ceef ,0);_cgcb ._edd =append (_cgcb ._edd ,_ffbf );case _fd .SlideLayoutType :_gdca :=_db .NewSldLayout ();if !_feb .AddTarget (_fddb ,_gdca ,_ceef ,uint32 (len (_cgcb ._cee )+1)){return nil ; };_cgcb ._cee =append (_cgcb ._cee ,_gdca );_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,len (_cgcb ._cee ));_dcc :=_cd .NewRelationships ();_feb .AddTarget (_gf .RelationsPathFor (_fddb ),_dcc .X (),_ceef ,0);_cgcb ._ddgc =append (_cgcb ._ddgc ,_dcc ); case _fd .ThumbnailType :for _egca ,_gggd :=range _ggeg {if _gggd ==nil {continue ;};if _gggd .Name ==_fddb {_dfb ,_aec :=_gggd .Open ();if _aec !=nil {return _bf .Errorf ("e\u0072\u0072\u006f\u0072\u0020\u0072e\u0061\u0064\u0069\u006e\u0067\u0020\u0074\u0068\u0075m\u0062\u006e\u0061i\u006c:\u0020\u0025\u0073",_aec ); };_cgcb .Thumbnail ,_ ,_aec =_gfg .Decode (_dfb );_dfb .Close ();if _aec !=nil {return _bf .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",_aec ); };_ggeg [_egca ]=nil ;};};case _fd .ThemeType :_afdg :=_bd .NewTheme ();if !_feb .AddTarget (_fddb ,_afdg ,_ceef ,uint32 (len (_cgcb ._bebg )+1)){return nil ;};_cgcb ._bebg =append (_cgcb ._bebg ,_afdg );_ebda .TargetAttr =_fd .RelativeFilename (_ebfc ,_eabc .Typ ,_ceef ,len (_cgcb ._bebg )); _eafb :=_cd .NewRelationships ();_feb .AddTarget (_gf .RelationsPathFor (_fddb ),_eafb .X (),_ceef ,0);_cgcb ._cfb =append (_cgcb ._cfb ,_eafb );case _fd .ImageType :_fddb =_b .Clean (_fddb );if _gbg ,_dgf :=_cgcb ._bgc [_fddb ];_dgf {_ebda .TargetAttr =_gbg ; return nil ;};_ggc :="";for _fbfd ,_bfgd :=range _ggeg {if _bfgd ==nil {continue ;};if _bfgd .Name ==_fddb {_eedf ,_fcc :=_gf .ExtractToDiskTmp (_bfgd ,_cgcb .TmpPath );if _fcc !=nil {return _fcc ;};_bcfd ,_fcc :=_cd .ImageFromStorage (_eedf );if _fcc !=nil {return _fcc ; };_ggc =_bcfd .Format ;_fgad :=_cd .MakeImageRef (_bcfd ,&_cgcb .DocBase ,_cgcb ._ddcc );_fgad .SetTarget ("\u002e\u002e\u002f"+_fddb [4:]);_cgcb .Images =append (_cgcb .Images ,_fgad );_ggeg [_fbfd ]=nil ;_faaa :=len (_cgcb .Images );if _dfe ,_dga :=_da .StringToNumbers (_fddb ); _dga {_faaa =_dfe ;};_feb .RecordIndex (_fddb ,_faaa );break ;};};_cgeg :=_feb .IndexFor (_fddb );_ebda .TargetAttr =_fd .RelativeImageFilename (_ebfc ,_eabc .Typ ,_ceef ,_cgeg ,_ggc );_cgcb ._bgc [_fddb ]=_ebda .TargetAttr ;default:_ef .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",_ceef ,_fddb ); };return nil ;}; // WebPr returns the WebPr property. func (_ccc PresentationProperties )WebPr ()*_db .CT_WebProperties {return _ccc ._eee .WebPr }; // X returns TextBox's underlying *pml.CT_Shape. func (_ggb TextBox )X ()*_db .CT_Shape {return _ggb ._ebag }; // X returns the inner wrapped XML type. func (_fdcg ViewProperties )X ()*_db .ViewPr {return _fdcg ._efda }; // Read reads a document from an io.Reader. func Read (r _ea .ReaderAt ,size int64 )(*Presentation ,error ){const _gbcf ="\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e:\u0052\u0065\u0061\u0064";if !_e .GetLicenseKey ().IsLicensed ()&&!_gfce {_bf .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"); _bf .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 ,_eb .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");};_cada :=_dgb ();_cfg ,_afade :=_e .GenRefId ("\u0070\u0072");if _afade !=nil {_ef .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_afade ); return nil ,_afade ;};_cada ._cge =_cfg ;if _cdeb :=_e .Track (_cada ._cge ,_gbcf );_cdeb !=nil {_ef .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cdeb );return nil ,_cdeb ;};_dab ,_afade :=_ca .TempDir ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065-\u0070\u0070\u0074\u0078"); if _afade !=nil {return nil ,_afade ;};_cada .TmpPath =_dab ;_efaa ,_afade :=_de .NewReader (r ,size );if _afade !=nil {return nil ,_bf .Errorf ("\u0070a\u0072s\u0069\u006e\u0067\u0020\u007a\u0069\u0070\u003a\u0020\u0025\u0073",_afade );};_bbgg :=[]*_de .File {}; _bbgg =append (_bbgg ,_efaa .File ...);_fegab :=false ;for _ ,_deed :=range _bbgg {if _deed .FileHeader .Name =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_fegab =true ;break ;};};if _fegab {_cada .CreateCustomProperties (); };_ade :=_gf .DecodeMap {};_ade .SetOnNewRelationshipFunc (_cada .onNewRelationship );_ade .AddTarget (_fd .ContentTypesFilename ,_cada .ContentTypes .X (),"",0);_ade .AddTarget (_fd .BaseRelsFilename ,_cada .Rels .X (),"",0);if _adcb :=_ade .Decode (_bbgg ); _adcb !=nil {return nil ,_adcb ;};for _ ,_fbegg :=range _bbgg {if _fbegg ==nil {continue ;};if _ead :=_cada .AddExtraFileFromZip (_fbegg );_ead !=nil {return nil ,_ead ;};};if _fegab {_cead :=false ;for _ ,_dabb :=range _cada .Rels .X ().Relationship {if _dabb .TargetAttr =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_cead =true ; break ;};};if !_cead {_cada .AddCustomRelationships ();};};return _cada ,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 *_db .CT_Shape ;GraphicFrame *_db .CT_GraphicalObjectFrame ;Paragraph *_bd .CT_TextParagraph ;Run *_bd .CT_RegularTextRun ;TableInfo *TableInfo ;_bfd []rectangle ;_afg int ;_deb int ;}; // Presentation returns a slide's presentation. func (_ecgc Slide )Presentation ()*Presentation {return _ecgc ._bfc }; // SlideViewPr returns the SlideViewPr property. func (_gafe ViewProperties )SlideViewPr ()*_db .CT_SlideViewProperties {return _gafe ._efda .SlideViewPr }; // Name returns the name of the slide layout. func (_bade SlideLayout )Name ()string {if _bade ._fffe .CSld !=nil &&_bade ._fffe .CSld .NameAttr !=nil {return *_bade ._fffe .CSld .NameAttr ;};return "";}; // SetOffsetY sets vertical offset of text box in distance units (see measurement package). func (_bbf TextBox )SetOffsetY (offY float64 ){_ede :=_bbf .getOff ();_bgcf :=_a .ToEMU (offY );_ede .YAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_bgcf };}; // ExtLst returns the ExtLst property. func (_cagfb ViewProperties )ExtLst ()*_db .CT_ExtensionList {return _cagfb ._efda .ExtLst }; // GetImageByRelID returns an ImageRef with the associated relation ID in the // slide. func (_gacb *Slide )GetImageByRelID (relID string )(_cd .ImageRef ,bool ){_gagg :=_gacb .getSlideRels ();if (_gagg ==_cd .Relationships {}){return _cd .ImageRef {},false ;};_cabc :=_gagg .GetTargetByRelId (relID );for _ ,_cbfc :=range _gacb ._bfc .Images {if _cbfc .Target ()==_cabc {return _cbfc ,true ; };};return _cd .ImageRef {},false ;}; // TextBox is a text box within a slide. type TextBox struct{_ebag *_db .CT_Shape }; // AddParagraph adds a new paragraph to a placeholder. func (_gdc PlaceHolder )AddParagraph ()_ag .Paragraph {_beb :=_ag .MakeParagraph (_bd .NewCT_TextParagraph ());_gdc ._bggb .TxBody .P =append (_gdc ._bggb .TxBody .P ,_beb .X ());return _beb ;}; // SaveToFile writes the Presentation out to a file. func (_eag *Presentation )SaveToFile (path string )error {return _eag .saveToFile (path ,false )};const _ga float64 =500000; // SetOffsetX sets horizontal offset of text box in distance units (see measurement package). func (_ceda TextBox )SetOffsetX (offX float64 ){_dacc :=_ceda .getOff ();_abe :=_a .ToEMU (offX );_dacc .XAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_abe };};func (_ebe TextBox )getOff ()*_bd .CT_Point2D {if _ebe ._ebag .SpPr ==nil {_ebe ._ebag .SpPr =_bd .NewCT_ShapeProperties (); };if _ebe ._ebag .SpPr .Xfrm ==nil {_ebe ._ebag .SpPr .Xfrm =_bd .NewCT_Transform2D ();};if _ebe ._ebag .SpPr .Xfrm .Off ==nil {_ebe ._ebag .SpPr .Xfrm .Off =_bd .NewCT_Point2D ();};return _ebe ._ebag .SpPr .Xfrm .Off ;}; // PresentationProperties contains document specific properties. type PresentationProperties struct{_eee *_db .PresentationPr }; // Text returns text from a presentation as one string separated with line breaks. func (_efa *PresentationText )Text ()string {_aba :=_cf .NewBuffer ([]byte {});for _ ,_acb :=range _efa .Slides {_aba .WriteString (_acb .Text ());};return _aba .String ();}; // SlideSize returns presentation slide size. func (_aed *Presentation )SlideSize ()SlideSize {if _aed ._bec .SldSz ==nil {_aed ._bec .SldSz =_db .NewCT_SlideSize ();};return SlideSize {_aed ._bec .SldSz ,_aed };}; // Size returns slide size value as SlideScreenSize. func (_ecdc *SlideSize )Size ()SlideScreenSize {return SlideScreenSize {_ecdc ._eage .CxAttr ,_ecdc ._eage .CyAttr };}; // ClearAll completely clears a placeholder. To be useable, at least one // paragraph must be added after ClearAll via AddParagraph. func (_gad PlaceHolder )ClearAll (){_gad ._bggb .SpPr =_bd .NewCT_ShapeProperties ();_gad ._bggb .TxBody =_bd .NewCT_TextBody ();_gad ._bggb .TxBody .LstStyle =_bd .NewCT_TextListStyle ();}; // GetLayoutImageByRelID returns an ImageRef with the associated relation ID in the // slide layout. func (_dac *Slide )GetLayoutImageByRelID (relID string )(_cd .ImageRef ,bool ){_gddb :=_dac .getSlideLayoutRels ();if (_gddb ==_cd .Relationships {}){return _cd .ImageRef {},false ;};_caga :=_gddb .GetTargetByRelId (relID );for _ ,_eebc :=range _dac ._bfc .Images {if _eebc .Target ()==_caga {return _eebc ,true ; };};return _cd .ImageRef {},false ;}; // Image is an image within a slide. type Image struct{_gag *_db .CT_Picture }; // 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 _fb (_fg *Presentation ,_caf []*_db .CT_GroupShapeChoice ,_cdf []rectangle ,_ge []*TextItem )[]*TextItem {for _ ,_fgf :=range _caf {_ece :=append ([]rectangle {},_cdf ...);for _ ,_dff :=range _fgf .Sp {_ge =append (_ge ,_ecd (_fg ,_dff ,nil ,nil ,_dff .SpPr .Xfrm ,0,_cdf ,_dff .TxBody .P )...); };for _ ,_dg :=range _fgf .GraphicFrame {if _dg !=nil &&_dg .Graphic !=nil &&_dg .Graphic .GraphicData !=nil {_fgg :=_dg .Xfrm ;for _ ,_gef :=range _dg .Graphic .GraphicData .Any {if _ffd ,_cgc :=_gef .(*_bd .Tbl );_cgc {_dcg :=&_ffd .CT_Table ;_cb :=0; for _dad ,_fbe :=range _ffd .Tr {for _dce ,_agd :=range _fbe .Tc {_ad :=&TableInfo {Table :_dcg ,Row :_fbe ,Cell :_agd ,RowIndex :_dad ,ColIndex :_dce };_ge =append (_ge ,_ecd (_fg ,nil ,_dg ,_ad ,_fgg ,_cb ,_cdf ,_agd .TxBody .P )...);_cb ++;};};};};}; };for _ ,_ace :=range _fgf .GrpSp {if _ace .GrpSpPr !=nil {_bge :=_ace .GrpSpPr .Xfrm ;var _afe ,_bbd int64 ;if _bge .Off !=nil {_agf ,_gd :=_bge .Off .XAttr .ST_CoordinateUnqualified ,_bge .Off .YAttr .ST_CoordinateUnqualified ;if _agf !=nil &&_gd !=nil {if _fc :=_bge .Ext ; _fc !=nil {_afe ,_bbd =_fc .CxAttr ,_fc .CyAttr ;};_ece =append (_ece ,rectangle {_aff :*_agf ,_afga :*_gd ,_bg :*_agf +_afe ,_gc :*_gd +_bbd });};};};_ge =_fb (_fg ,_ace .Choice ,_ece ,_ge );};};return _ge ;};func (_ee *chart )X ()*_g .ChartSpace {return _ee ._af }; var (SlideScreenSize16x9 =SlideScreenSize {12192000,6858000};SlideScreenSize4x3 =SlideScreenSize {9144000,6858000};SlideScreenSizeA4 =SlideScreenSize {9906000,6858000};);func _cga (_gfc []*_db .CT_GroupShapeChoice )[]*_db .CT_GroupShapeChoice {var _efga []*_db .CT_GroupShapeChoice ; for _ ,_fec :=range _gfc {if len (_fec .Pic )==0{_efga =append (_efga ,_fec );};};return _efga ;}; // ExtLst returns the ExtLst property. func (_ebd PresentationProperties )ExtLst ()*_db .CT_ExtensionList {return _ebd ._eee .ExtLst }; // Themes returns an array of presentation themes. func (_dee *Presentation )Themes ()[]*_bd .Theme {return _dee ._bebg }; // NotesViewPr returns the NotesViewPr property. func (_ebfd ViewProperties )NotesViewPr ()*_db .CT_NotesViewProperties {return _ebfd ._efda .NotesViewPr }; // NewPresentationProperties constructs a new PresentationProperties. func NewPresentationProperties ()PresentationProperties {return PresentationProperties {_eee :_db .NewPresentationPr ()};}; // ShowCommentsAttr returns the WebPr property. func (_efb ViewProperties )ShowCommentsAttr ()*bool {return _efb ._efda .ShowCommentsAttr }; // X returns the inner wrapped XML type. func (_fadg SlideMaster )X ()*_db .SldMaster {return _fadg ._fcgb }; // LastViewAttr returns the LastViewAttr property. func (_dcedd ViewProperties )LastViewAttr ()_db .ST_ViewType {return _dcedd ._efda .LastViewAttr }; // NewViewProperties constructs a new ViewProperties. func NewViewProperties ()ViewProperties {return ViewProperties {_efda :_db .NewViewPr ()}}; // Type returns the type of the slide layout. func (_gbcg SlideLayout )Type ()_db .ST_SlideLayoutType {return _gbcg ._fffe .TypeAttr }; // 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 (_fbed Slide )GetPlaceholderByIndex (idx uint32 )(PlaceHolder ,error ){for _ ,_cagf :=range _fbed ._dfee .CSld .SpTree .Choice {for _ ,_bbb :=range _cagf .Sp {if _bbb .NvSpPr !=nil &&_bbb .NvSpPr .NvPr !=nil &&_bbb .NvSpPr .NvPr .Ph !=nil {if (idx ==0&&_bbb .NvSpPr .NvPr .Ph .IdxAttr ==nil )||(_bbb .NvSpPr .NvPr .Ph .IdxAttr !=nil &&*_bbb .NvSpPr .NvPr .Ph .IdxAttr ==idx ){return PlaceHolder {_bbb ,_fbed ._dfee },nil ; };};};};return PlaceHolder {},_eb .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 (_ebcc *Presentation )GetLayoutByName (name string )(SlideLayout ,error ){for _ ,_aabc :=range _ebcc ._cee {if _aabc .CSld .NameAttr !=nil &&name ==*_aabc .CSld .NameAttr {return SlideLayout {_aabc },nil ;};};return SlideLayout {},_eb .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"); }; // RemoveSlide removes a slide from a presentation. func (_feaa *Presentation )RemoveSlide (s Slide )error {_ccdc :=false ;_eef :=0;for _dbeaa ,_aab :=range _feaa ._gcec {if _aab ==s ._dfee {if _feaa ._bec .SldIdLst .SldId [_dbeaa ]!=s ._egdg {return _eb .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 (_feaa ._gcec [_dbeaa :],_feaa ._gcec [_dbeaa +1:]);_feaa ._gcec =_feaa ._gcec [0:len (_feaa ._gcec )-1];copy (_feaa ._gcb [_dbeaa :],_feaa ._gcb [_dbeaa +1:]);_feaa ._gcb =_feaa ._gcb [0:len (_feaa ._gcb )-1];copy (_feaa ._bec .SldIdLst .SldId [_dbeaa :],_feaa ._bec .SldIdLst .SldId [_dbeaa +1:]); _feaa ._bec .SldIdLst .SldId =_feaa ._bec .SldIdLst .SldId [0:len (_feaa ._bec .SldIdLst .SldId )-1];_ccdc =true ;_eef =_dbeaa ;};};if !_ccdc {return _eb .New ("u\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0073li\u0064\u0065"); };_gggca :=_fd .AbsoluteFilename (_fd .DocTypePresentation ,_fd .SlideType ,0);return _feaa .ContentTypes .RemoveOverrideByIndex (_gggca ,_eef );}; // AddImage adds an image textbox to a slide. func (_gff Slide )AddImage (img _cd .ImageRef )Image {_bfdb :=_db .NewCT_GroupShapeChoice ();_gff ._dfee .CSld .SpTree .Choice =append (_gff ._dfee .CSld .SpTree .Choice ,_bfdb );_eeae :=_db .NewCT_Picture ();_bfdb .Pic =append (_bfdb .Pic ,_eeae );_eeae .NvPicPr .CNvPicPr =_bd .NewCT_NonVisualPictureProperties (); _eeae .NvPicPr .CNvPicPr .PicLocks =_bd .NewCT_PictureLocking ();_eeae .NvPicPr .CNvPicPr .PicLocks .NoChangeAspectAttr =_fd .Bool (true );_eeae .BlipFill =_bd .NewCT_BlipFillProperties ();_eeae .BlipFill .Blip =_bd .NewCT_Blip ();_egce :=_gff .AddImageToRels (img ); _eeae .BlipFill .Blip .EmbedAttr =_fd .String (_egce );_eeae .BlipFill .Stretch =_bd .NewCT_StretchInfoProperties ();_eeae .BlipFill .Stretch .FillRect =_bd .NewCT_RelativeRect ();_eeae .SpPr =_bd .NewCT_ShapeProperties ();_eeae .SpPr .PrstGeom =_bd .NewCT_PresetGeometry2D (); _eeae .SpPr .PrstGeom .PrstAttr =_bd .ST_ShapeTypeRect ;_ded :=Image {_eeae };_dbge :=img .Size ();_ded .Properties ().SetWidth (_a .Distance (_dbge .X )*_a .Pixel72 );_ded .Properties ().SetHeight (_a .Distance (_dbge .Y )*_a .Pixel72 );_ded .Properties ().SetPosition (0,0); return _ded ;}; // SlideMaster is the slide master for a presentation. type SlideMaster struct{_gggag *Presentation ;_dbd _cd .Relationships ;_fcgb *_db .SldMaster ;};func (_eed *Presentation )Validate ()error {if _feea :=_eed ._bec .Validate ();_feea !=nil {return _feea ;};for _ebg ,_cdfd :=range _eed .Slides (){if _afac :=_cdfd .ValidateWithPath (_bf .Sprintf ("\u0053l\u0069\u0064\u0065\u005b\u0025\u0064]",_ebg )); _afac !=nil {return _afac ;};};for _edba ,_fab :=range _eed ._abb {if _ggag :=_fab .ValidateWithPath (_bf .Sprintf ("\u0053l\u0069d\u0065\u004d\u0061\u0073\u0074\u0065\u0072\u005b\u0025\u0064\u005d",_edba ));_ggag !=nil {return _ggag ;};};for _eaag ,_daee :=range _eed ._cee {if _ccde :=_daee .ValidateWithPath (_bf .Sprintf ("\u0053l\u0069d\u0065\u004c\u0061\u0079\u006f\u0075\u0074\u005b\u0025\u0064\u005d",_eaag )); _ccde !=nil {return _ccde ;};};return 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 };}; // X returns the inner wrapped XML type. func (_bff PlaceHolder )X ()*_db .CT_Shape {return _bff ._bggb }; // Open opens and reads a document from a file (.pptx). func Open (filename string )(*Presentation ,error ){_dbg ,_gdf :=_eg .Open (filename );if _gdf !=nil {return nil ,_bf .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_gdf );};defer _dbg .Close (); _dfdb ,_gdf :=_eg .Stat (filename );if _gdf !=nil {return nil ,_bf .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_gdf );};_ =_dfdb ;return Read (_dbg ,_dfdb .Size ());}; // New initializes and reurns a new presentation func New ()*Presentation {_dceb :=_dgb ();_dceb .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"); _dceb .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"); _dceb .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"); _dceb .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"); _dceb .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"); _dceb .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"); _dceb .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"); _dceb ._bec .SldMasterIdLst =_db .NewCT_SlideMasterIdList ();_ced :=_db .NewSldMaster ();_ced .ClrMap .Bg1Attr =_bd .ST_ColorSchemeIndexLt1 ;_ced .ClrMap .Bg2Attr =_bd .ST_ColorSchemeIndexLt2 ;_ced .ClrMap .Tx1Attr =_bd .ST_ColorSchemeIndexDk1 ;_ced .ClrMap .Tx2Attr =_bd .ST_ColorSchemeIndexDk2 ; _ced .ClrMap .Accent1Attr =_bd .ST_ColorSchemeIndexAccent1 ;_ced .ClrMap .Accent2Attr =_bd .ST_ColorSchemeIndexAccent2 ;_ced .ClrMap .Accent3Attr =_bd .ST_ColorSchemeIndexAccent3 ;_ced .ClrMap .Accent4Attr =_bd .ST_ColorSchemeIndexAccent4 ;_ced .ClrMap .Accent5Attr =_bd .ST_ColorSchemeIndexAccent5 ; _ced .ClrMap .Accent6Attr =_bd .ST_ColorSchemeIndexAccent6 ;_ced .ClrMap .HlinkAttr =_bd .ST_ColorSchemeIndexHlink ;_ced .ClrMap .FolHlinkAttr =_bd .ST_ColorSchemeIndexFolHlink ;_dceb ._abb =append (_dceb ._abb ,_ced );_eeb :=_fd .AbsoluteFilename (_fd .DocTypePresentation ,_fd .SlideMasterType ,1); _dceb .ContentTypes .AddOverride (_eeb ,_fd .SlideMasterContentType );_aace :=_dceb ._ddcc .AddAutoRelationship (_fd .DocTypePresentation ,_fd .OfficeDocumentType ,1,_fd .SlideMasterType );_aea :=_db .NewCT_SlideMasterIdListEntry ();_aea .IdAttr =_fd .Uint32 (2147483648); _aea .RIdAttr =_aace .ID ();_dceb ._bec .SldMasterIdLst .SldMasterId =append (_dceb ._bec .SldMasterIdLst .SldMasterId ,_aea );_bad :=_cd .NewRelationships ();_dceb ._edd =append (_dceb ._edd ,_bad );_cda :=_db .NewSldLayout ();_cfba :=_bad .AddAutoRelationship (_fd .DocTypePresentation ,_fd .SlideMasterType ,1,_fd .SlideLayoutType ); _abc :=_fd .AbsoluteFilename (_fd .DocTypePresentation ,_fd .SlideLayoutType ,1);_dceb .ContentTypes .AddOverride (_abc ,_fd .SlideLayoutContentType );_bad .AddAutoRelationship (_fd .DocTypePresentation ,_fd .SlideMasterType ,1,_fd .ThemeType );_dceb ._cee =append (_dceb ._cee ,_cda ); _ced .SldLayoutIdLst =_db .NewCT_SlideLayoutIdList ();_cdd :=_db .NewCT_SlideLayoutIdListEntry ();_cdd .IdAttr =_fd .Uint32 (2147483649);_cdd .RIdAttr =_cfba .ID ();_ced .SldLayoutIdLst .SldLayoutId =append (_ced .SldLayoutIdLst .SldLayoutId ,_cdd );_degg :=_cd .NewRelationships (); _dceb ._ddgc =append (_dceb ._ddgc ,_degg );_degg .AddAutoRelationship (_fd .DocTypePresentation ,_fd .SlideType ,1,_fd .SlideMasterType );_dceb ._bec .NotesSz .CxAttr =6858000;_dceb ._bec .NotesSz .CyAttr =9144000;_gga :=_bd .NewTheme ();_gga .NameAttr =_fd .String ("\u0075n\u0069o\u0066\u0066\u0069\u0063\u0065\u0020\u0054\u0068\u0065\u006d\u0065"); _gga .ThemeElements .ClrScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_gga .ThemeElements .ClrScheme .Dk1 .SysClr =_bd .NewCT_SystemColor ();_gga .ThemeElements .ClrScheme .Dk1 .SysClr .LastClrAttr =_fd .String ("\u0030\u0030\u0030\u0030\u0030\u0030"); _gga .ThemeElements .ClrScheme .Dk1 .SysClr .ValAttr =_bd .ST_SystemColorValWindowText ;_gga .ThemeElements .ClrScheme .Lt1 .SysClr =_bd .NewCT_SystemColor ();_gga .ThemeElements .ClrScheme .Lt1 .SysClr .LastClrAttr =_fd .String ("\u0066\u0066\u0066\u0066\u0066\u0066"); _gga .ThemeElements .ClrScheme .Lt1 .SysClr .ValAttr =_bd .ST_SystemColorValWindow ;_gga .ThemeElements .ClrScheme .Dk2 .SrgbClr =_bd .NewCT_SRgbColor ();_gga .ThemeElements .ClrScheme .Dk2 .SrgbClr .ValAttr ="\u0034\u0034\u0035\u0034\u0036\u0061";_gga .ThemeElements .ClrScheme .Lt2 .SrgbClr =_bd .NewCT_SRgbColor (); _gga .ThemeElements .ClrScheme .Lt2 .SrgbClr .ValAttr ="\u0065\u0037\u0065\u0037\u0065\u0036";_gga .ThemeElements .ClrScheme .Accent1 .SrgbClr =_bd .NewCT_SRgbColor ();_gga .ThemeElements .ClrScheme .Accent1 .SrgbClr .ValAttr ="\u0034\u0034\u0037\u0032\u0063\u0034"; _gga .ThemeElements .ClrScheme .Accent2 .SrgbClr =_bd .NewCT_SRgbColor ();_gga .ThemeElements .ClrScheme .Accent2 .SrgbClr .ValAttr ="\u0065\u0064\u0037\u0064\u0033\u0031";_gga .ThemeElements .ClrScheme .Accent3 .SrgbClr =_bd .NewCT_SRgbColor ();_gga .ThemeElements .ClrScheme .Accent3 .SrgbClr .ValAttr ="\u0061\u0035\u0061\u0035\u0061\u0035"; _gga .ThemeElements .ClrScheme .Accent4 .SrgbClr =_bd .NewCT_SRgbColor ();_gga .ThemeElements .ClrScheme .Accent4 .SrgbClr .ValAttr ="\u0066\u0066\u0063\u0030\u0030\u0030";_gga .ThemeElements .ClrScheme .Accent5 .SrgbClr =_bd .NewCT_SRgbColor ();_gga .ThemeElements .ClrScheme .Accent5 .SrgbClr .ValAttr ="\u0035\u0062\u0039\u0062\u0064\u0035"; _gga .ThemeElements .ClrScheme .Accent6 .SrgbClr =_bd .NewCT_SRgbColor ();_gga .ThemeElements .ClrScheme .Accent6 .SrgbClr .ValAttr ="\u0037\u0030\u0061\u0064\u0034\u0037";_gga .ThemeElements .ClrScheme .Hlink .SrgbClr =_bd .NewCT_SRgbColor ();_gga .ThemeElements .ClrScheme .Hlink .SrgbClr .ValAttr ="\u0030\u0035\u0036\u0033\u0063\u0031"; _gga .ThemeElements .ClrScheme .FolHlink .SrgbClr =_bd .NewCT_SRgbColor ();_gga .ThemeElements .ClrScheme .FolHlink .SrgbClr .ValAttr ="\u0039\u0035\u0034\u0066\u0037\u0032";_gga .ThemeElements .FontScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065"; _gga .ThemeElements .FontScheme .MajorFont .Latin .TypefaceAttr ="\u0043\u0061\u006c\u0069\u0062\u0072\u0069\u0020\u004c\u0069\u0067\u0068\u0074";_gga .ThemeElements .FontScheme .MinorFont .Latin .TypefaceAttr ="\u0043a\u006c\u0069\u0062\u0072\u0069";_gga .ThemeElements .FmtScheme .NameAttr =_fd .String ("\u004f\u0066\u0066\u0069\u0063\u0065"); _eddf :=_bd .NewEG_FillProperties ();_gga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_gga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_eddf );_eddf .SolidFill =&_bd .CT_SolidColorFillProperties {SchemeClr :&_bd .CT_SchemeColor {ValAttr :_bd .ST_SchemeColorValPhClr }}; _eddf =_bd .NewEG_FillProperties ();_gga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_gga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_eddf );_gga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_gga .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_eddf ); _eddf .GradFill =&_bd .CT_GradientFillProperties {RotWithShapeAttr :_fd .Bool (true ),GsLst :&_bd .CT_GradientStopList {},Lin :&_bd .CT_LinearShadeProperties {}};_eddf .GradFill .Lin .AngAttr =_fd .Int32 (5400000);_eddf .GradFill .Lin .ScaledAttr =_fd .Bool (false ); _bffb :=_bd .NewCT_GradientStop ();_bffb .PosAttr .ST_PositiveFixedPercentageDecimal =_fd .Int32 (0);_bffb .SchemeClr =&_bd .CT_SchemeColor {ValAttr :_bd .ST_SchemeColorValPhClr };_eddf .GradFill .GsLst .Gs =append (_eddf .GradFill .GsLst .Gs ,_bffb ); _bffb =_bd .NewCT_GradientStop ();_bffb .PosAttr .ST_PositiveFixedPercentageDecimal =_fd .Int32 (50000);_bffb .SchemeClr =&_bd .CT_SchemeColor {ValAttr :_bd .ST_SchemeColorValPhClr };_eddf .GradFill .GsLst .Gs =append (_eddf .GradFill .GsLst .Gs ,_bffb ); _gga .ThemeElements .FmtScheme .LnStyleLst =_bd .NewCT_LineStyleList ();for _gaf :=0;_gaf < 3;_gaf ++{_egf :=_bd .NewCT_LineProperties ();_egf .WAttr =_fd .Int32 (int32 (6350*(_gaf +1)));_egf .CapAttr =_bd .ST_LineCapFlat ;_egf .CmpdAttr =_bd .ST_CompoundLineSng ; _egf .AlgnAttr =_bd .ST_PenAlignmentCtr ;_gga .ThemeElements .FmtScheme .LnStyleLst .Ln =append (_gga .ThemeElements .FmtScheme .LnStyleLst .Ln ,_egf );};_gga .ThemeElements .FmtScheme .EffectStyleLst =_bd .NewCT_EffectStyleList ();for _baaa :=0;_baaa < 3; _baaa ++{_fcg :=_bd .NewCT_EffectStyleItem ();_fcg .EffectLst =_bd .NewCT_EffectList ();_gga .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle =append (_gga .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle ,_fcg );};_cae :=_bd .NewEG_FillProperties (); _cae .SolidFill =&_bd .CT_SolidColorFillProperties {SchemeClr :&_bd .CT_SchemeColor {ValAttr :_bd .ST_SchemeColorValPhClr }};_gga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_gga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_cae ); _gga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_gga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_cae );_gga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_gga .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_eddf ); _dceb ._bebg =append (_dceb ._bebg ,_gga );_cfc :=_fd .AbsoluteFilename (_fd .DocTypePresentation ,_fd .ThemeType ,1);_dceb .ContentTypes .AddOverride (_cfc ,_fd .ThemeContentType );_dceb ._ddcc .AddAutoRelationship (_fd .DocTypePresentation ,_fd .OfficeDocumentType ,1,_fd .ThemeType ); _bfef :=_cd .NewRelationships ();_dceb ._cfb =append (_dceb ._cfb ,_bfef );return _dceb ;}; // Paragraphs returns the paragraphs defined in the placeholder. func (_aac PlaceHolder )Paragraphs ()[]_ag .Paragraph {_eaa :=[]_ag .Paragraph {};for _ ,_gdgb :=range _aac ._bggb .TxBody .P {_eaa =append (_eaa ,_ag .MakeParagraph (_gdgb ));};return _eaa ;}; // SaveToFileAsTemplate writes the Presentation out to a file as a template. func (_dgbf *Presentation )SaveToFileAsTemplate (path string )error {return _dgbf .saveToFile (path ,true );}; // 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 (_cad PlaceHolder )Clear (){_cad .ClearAll ();_efac :=_bd .NewCT_TextParagraph ();_cad ._bggb .TxBody .P =[]*_bd .CT_TextParagraph {_efac };_efac .EndParaRPr =_bd .NewCT_TextCharacterProperties ();_efac .EndParaRPr .LangAttr =_fd .String ("\u0065\u006e\u002dU\u0053"); }; // SlideLayouts returns a slice of all layouts in SlideMaster. func (_bdfg SlideMaster )SlideLayouts ()[]SlideLayout {_bfff :=map[string ]int {};_gaa :=[]SlideLayout {};for _ ,_edag :=range _bdfg ._dbd .Relationships (){_efaab :=_d .Replace (_edag .Target (),".\u002e\u002f\u0073\u006c\u0069\u0064e\u004c\u0061\u0079\u006f\u0075\u0074\u0073\u002f\u0073l\u0069\u0064\u0065L\u0061y\u006f\u0075\u0074","",-1); _efaab =_d .Replace (_efaab ,"\u002e\u0078\u006d\u006c","",-1);if _cbdf ,_gcca :=_dd .ParseInt (_efaab ,10,32);_gcca ==nil {_bfff [_edag .ID ()]=int (_cbdf );};};for _ ,_dfbb :=range _bdfg ._fcgb .SldLayoutIdLst .SldLayoutId {if _gagc ,_fcab :=_bfff [_dfbb .RIdAttr ]; _fcab {_dadd :=_bdfg ._gggag ._cee [_gagc -1];_gaa =append (_gaa ,SlideLayout {_dadd });};};return _gaa ;}; // PlaceHolders returns all of the content place holders within a given slide. func (_gcd Slide )PlaceHolders ()[]PlaceHolder {_eaeb :=[]PlaceHolder {};for _ ,_cegg :=range _gcd ._dfee .CSld .SpTree .Choice {for _ ,_cfcb :=range _cegg .Sp {if _cfcb .NvSpPr !=nil &&_cfcb .NvSpPr .NvPr !=nil &&_cfcb .NvSpPr .NvPr .Ph !=nil {_eaeb =append (_eaeb ,PlaceHolder {_cfcb ,_gcd ._dfee }); };};};return _eaeb ;};