// // 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 (_a "archive/zip";_dd "bytes";_fc "encoding/xml";_ded "errors";_df "fmt";_fgg "github.com/unidoc/unioffice";_gf "github.com/unidoc/unioffice/common";_ff "github.com/unidoc/unioffice/common/logger";_ba "github.com/unidoc/unioffice/common/tempstorage";_bd "github.com/unidoc/unioffice/drawing";_fa "github.com/unidoc/unioffice/internal/license";_fg "github.com/unidoc/unioffice/measurement";_fcc "github.com/unidoc/unioffice/schema/soo/dml";_fe "github.com/unidoc/unioffice/schema/soo/dml/chart";_bg "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_g "github.com/unidoc/unioffice/schema/soo/pkg/relationships";_cg "github.com/unidoc/unioffice/schema/soo/pml";_b "github.com/unidoc/unioffice/zippkg";_eb "image";_de "image/jpeg";_cc "io";_ef "math";_ffd "os";_e "path";_fgc "sort";_d "strconv";_c "strings";); // GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation. func (_gdcb *Slide )GetColorBySchemeColor (schClr _fcc .ST_SchemeColorVal )*_fcc .CT_Color {_gdcb .ensureClrMap ();_gdg :=_gdcb ._bgd ;if _gdg ==nil {return nil ;};var _cbfg _fcc .ST_ColorSchemeIndex ;switch schClr .String (){case "\u0062\u0067\u0031":_cbfg =_gdg .Bg1Attr ;case "\u0062\u0067\u0032":_cbfg =_gdg .Bg2Attr ;case "\u0074\u0078\u0031":_cbfg =_gdg .Tx1Attr ;case "\u0074\u0078\u0032":_cbfg =_gdg .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_cbfg =_gdg .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_cbfg =_gdg .Accent2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_cbfg =_gdg .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_cbfg =_gdg .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_cbfg =_gdg .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_cbfg =_gdg .Accent6Attr ;case "\u0068\u006c\u0069n\u006b":_cbfg =_gdg .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_cbfg =_gdg .FolHlinkAttr ;case "\u0064\u006b\u0031":_cbfg =_fcc .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_cbfg =_fcc .ST_ColorSchemeIndexDk2 ;case "\u006c\u0074\u0031":_cbfg =_fcc .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_cbfg =_fcc .ST_ColorSchemeIndexLt2 ;default:_cbfg =_fcc .ST_ColorSchemeIndexUnset ;};_ggba :=_gdcb ._gggf ._aag [0];_fgde :=_ggba .ThemeElements ;if _fgde ==nil {return nil ;};var _defb *_fcc .CT_Color ;_decf :=_fgde .ClrScheme ;switch _cbfg .String (){case "\u0064\u006b\u0031":_defb =_decf .Dk1 ;case "\u0064\u006b\u0032":_defb =_decf .Dk2 ;case "\u006c\u0074\u0031":_defb =_decf .Lt1 ;case "\u006c\u0074\u0032":_defb =_decf .Lt2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_defb =_decf .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_defb =_decf .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_defb =_decf .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_defb =_decf .Accent4 ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_defb =_decf .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_defb =_decf .Accent6 ;case "\u0068\u006c\u0069n\u006b":_defb =_decf .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_defb =_decf .FolHlink ;default:return nil ;};return _defb ;}; // 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 (_efc *Presentation )AddImage (i _gf .Image )(_gf .ImageRef ,error ){_edf :=_gf .MakeImageRef (i ,&_efc .DocBase ,_efc ._acf );if i .Data ==nil &&i .Path ==""{return _edf ,_ded .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 _edf ,_ded .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 _edf ,_ded .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 !=""{_begee :=_ba .Add (i .Path );if _begee !=nil {return _edf ,_begee ;};};_efc .Images =append (_efc .Images ,_edf );_efc .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_efc .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_efc .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_efc .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");_efc .ContentTypes .EnsureDefault (i .Format ,"\u0069\u006d\u0061\u0067\u0065\u002f"+i .Format );return _edf ,nil ;}; // NewPresentationProperties constructs a new PresentationProperties. func NewPresentationProperties ()PresentationProperties {return PresentationProperties {_aad :_cg .NewPresentationPr ()};}; // PresentationProperties contains document specific properties. type PresentationProperties struct{_aad *_cg .PresentationPr }; // PlaceHolder is a place holder from a slide. type PlaceHolder struct{_eca *_cg .CT_Shape ;_ecg *_cg .Sld ;}; // 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 (_degf *Presentation )AddDefaultSlideWithLayout (l SlideLayout )(Slide ,error ){_fgdb ,_ccac :=_degf .AddSlideWithLayout (l );for _ ,_gga :=range _fgdb .PlaceHolders (){_gga .Clear ();switch _gga .Type (){case _cg .ST_PlaceholderTypeFtr ,_cg .ST_PlaceholderTypeDt ,_cg .ST_PlaceholderTypeSldNum :_gga .Remove ();};};return _fgdb ,_ccac ;}; // WebPr returns the WebPr property. func (_cgdea PresentationProperties )WebPr ()*_cg .CT_WebProperties {return _cgdea ._aad .WebPr }; // X returns the inner wrapped XML type. func (_bacb ViewProperties )X ()*_cg .ViewPr {return _bacb ._gca }; // 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 (_dbdf Slide )GetPlaceholder (t _cg .ST_PlaceholderType )(PlaceHolder ,error ){for _ ,_fabc :=range _dbdf ._eed .CSld .SpTree .Choice {for _ ,_dbb :=range _fabc .Sp {if _dbb .NvSpPr !=nil &&_dbb .NvSpPr .NvPr !=nil &&_dbb .NvSpPr .NvPr .Ph !=nil {if _dbb .NvSpPr .NvPr .Ph .TypeAttr ==t {return PlaceHolder {_dbb ,_dbdf ._eed },nil ;};};};};return PlaceHolder {},_ded .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");}; // ExtLst returns the ExtLst property. func (_dgd PresentationProperties )ExtLst ()*_cg .CT_ExtensionList {return _dgd ._aad .ExtLst }; // GetLayoutByName retrieves a slide layout given a layout name. func (_fgdgc *Presentation )GetLayoutByName (name string )(SlideLayout ,error ){for _ ,_eceb :=range _fgdgc ._ca {if _eceb .CSld .NameAttr !=nil &&name ==*_eceb .CSld .NameAttr {return SlideLayout {_eceb },nil ;};};return SlideLayout {},_ded .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");}; // PresentationText is an array of extracted text items which has some methods for representing extracted text. type PresentationText struct{Slides []*SlideText ;}; // X returns the inner wrapped XML type. func (_gadg SlideMaster )X ()*_cg .SldMaster {return _gadg ._fdcg }; // Image is an image within a slide. type Image struct{_gec *_cg .CT_Picture }; // Type returns the type of the slide layout. func (_gbc SlideLayout )Type ()_cg .ST_SlideLayoutType {return _gbc ._cdg .TypeAttr }; // SetOffsetX sets horizontal offset of text box in distance units (see measurement package). func (_ffbg TextBox )SetOffsetX (offX float64 ){_agag :=_ffbg .getOff ();_fagc :=_fg .ToEMU (offX );_agag .XAttr =_fcc .ST_Coordinate {ST_CoordinateUnqualified :&_fagc };};var _ffdd =false ; // SlideMaster is the slide master for a presentation. type SlideMaster struct{_fcdf *Presentation ;_dbae _gf .Relationships ;_fdcg *_cg .SldMaster ;};func _dab (_ggb []*_cg .CT_GroupShapeChoice )[]*_cg .CT_GroupShapeChoice {var _ddf []*_cg .CT_GroupShapeChoice ;for _ ,_afg :=range _ggb {if len (_afg .Pic )==0{_ddf =append (_ddf ,_afg );};};return _ddf ;}; // SetOffsetY sets vertical offset of text box in distance units (see measurement package). func (_bgaf TextBox )SetOffsetY (offY float64 ){_dbdfb :=_bgaf .getOff ();_cdbf :=_fg .ToEMU (offY );_dbdfb .YAttr =_fcc .ST_Coordinate {ST_CoordinateUnqualified :&_cdbf };}; // ExtractText returns text from a presentation as a PresentationText object. func (_be *Presentation )ExtractText ()*PresentationText {_af :=[]*SlideText {};for _ ,_fgge :=range _be .Slides (){_bbf :=_fgge .ExtractText ();if _bbf !=nil {_af =append (_af ,_bbf );};};return &PresentationText {Slides :_af };}; // SlideMasters returns the slide masters defined in the presentation. func (_ffg *Presentation )SlideMasters ()[]SlideMaster {_babd :=[]SlideMaster {};for _caa ,_bdga :=range _ffg ._gdf {_babd =append (_babd ,SlideMaster {_ffg ,_ffg ._daa [_caa ],_bdga });};return _babd ;}; // NotesViewPr returns the NotesViewPr property. func (_cae ViewProperties )NotesViewPr ()*_cg .CT_NotesViewProperties {return _cae ._gca .NotesViewPr }; // ValidateWithPath validates the slide passing path informaton for a better // error message. func (_ged Slide )ValidateWithPath (path string )error {if _edga :=_ged ._eed .ValidateWithPath (path );_edga !=nil {return _edga ;};for _ ,_aggf :=range _ged ._eed .CSld .SpTree .Choice {for _ ,_ebbb :=range _aggf .Sp {if _ebbb .TxBody !=nil {if len (_ebbb .TxBody .P )==0{return _ded .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 ;}; // Properties returns the properties of the TextBox. func (_baa TextBox )Properties ()_bd .ShapeProperties {if _baa ._eef .SpPr ==nil {_baa ._eef .SpPr =_fcc .NewCT_ShapeProperties ();};return _bd .MakeShapeProperties (_baa ._eef .SpPr );}; // AddParagraph adds a paragraph to the text box func (_bfb TextBox )AddParagraph ()_bd .Paragraph {_gdea :=_fcc .NewCT_TextParagraph ();_bfb ._eef .TxBody .P =append (_bfb ._eef .TxBody .P ,_gdea );return _bd .MakeParagraph (_gdea );}; // LastViewAttr returns the LastViewAttr property. func (_agde ViewProperties )LastViewAttr ()_cg .ST_ViewType {return _agde ._gca .LastViewAttr };func (_add *Slide )ensureClrMap (){if len (_add ._gggf ._gdf )==0||len (_add ._gggf ._aag )==0{return ;};_gfa :=_add ._gggf ._gdf [0];_bgfg :=_gfa .ClrMap ;if _beee :=_add ._eed .ClrMapOvr ;_beee !=nil {if _gdde :=_beee .Choice ;_gdde !=nil {if _gdde .MasterClrMapping ==nil {if _aebd :=_gdde .OverrideClrMapping ;_aebd !=nil {if _aebd .Bg1Attr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .Bg1Attr =_aebd .Bg1Attr ;};if _aebd .Tx1Attr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .Tx1Attr =_aebd .Tx1Attr ;};if _aebd .Bg2Attr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .Bg2Attr =_aebd .Bg2Attr ;};if _aebd .Tx2Attr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .Tx2Attr =_aebd .Tx2Attr ;};if _aebd .Accent1Attr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .Accent1Attr =_aebd .Accent1Attr ;};if _aebd .Accent2Attr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .Accent2Attr =_aebd .Accent2Attr ;};if _aebd .Accent3Attr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .Accent3Attr =_aebd .Accent3Attr ;};if _aebd .Accent4Attr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .Accent4Attr =_aebd .Accent4Attr ;};if _aebd .Accent5Attr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .Accent5Attr =_aebd .Accent5Attr ;};if _aebd .Accent6Attr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .Accent6Attr =_aebd .Accent6Attr ;};if _aebd .HlinkAttr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .HlinkAttr =_aebd .HlinkAttr ;};if _aebd .FolHlinkAttr !=_fcc .ST_ColorSchemeIndexUnset {_bgfg .FolHlinkAttr =_aebd .FolHlinkAttr ;};};};};};_add ._bgd =_bgfg ;};func _fag (_gea *Presentation ,_adc *_cg .CT_Shape ,_edef *_cg .CT_GraphicalObjectFrame ,_fbc *TableInfo ,_ccg *_fcc .CT_Transform2D ,_eeb int ,_bbg []rectangle ,_gc []*_fcc .CT_TextParagraph )[]*TextItem {_gd :=[]*TextItem {};var _dcc ,_cb ,_feeg ,_bc ,_bgf ,_gfb int64 ;_gad :=_ccg ==nil ;_bdg :=0;for _ ,_gaa :=range _gc {for _ ,_cgb :=range _gaa .EG_TextRun {if _fabg :=_cgb .R ;_fabg !=nil {if !_gad {if _ccg .Off !=nil {if _cgce :=_ccg .Ext ;_cgce !=nil {_bgf ,_gfb =_cgce .CxAttr ,_cgce .CyAttr ;};if _ddd :=_ccg .Off .XAttr .ST_CoordinateUnqualified ;_ddd !=nil {_dcc =*_ddd ;_cb =_dcc +_bgf ;_gad =true ;};if _afc :=_ccg .Off .YAttr .ST_CoordinateUnqualified ;_afc !=nil {_feeg =*_afc ;_bc =_feeg +_gfb ;_gad =true ;};};};_egg :=append ([]rectangle {},_bbg ...);_egg =append (_egg ,rectangle {_ge :_dcc ,_ed :_cb ,_dcf :_feeg ,_gb :_bc });_gd =append (_gd ,&TextItem {Presentation :_gea ,Shape :_adc ,GraphicFrame :_edef ,TableInfo :_fbc ,Paragraph :_gaa ,Run :_fabg ,Text :_fabg .T ,_bb :_egg ,_ee :_eeb ,_ag :_bdg });_bdg ++;};};};return _gd ;}; // X returns the inner wrapped XML type. func (_dec Slide )X ()*_cg .Sld {return _dec ._eed }; // New initializes and reurns a new presentation func New ()*Presentation {_fgdg :=_bfa ();_fgdg .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");_fgdg .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");_fgdg .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");_fgdg .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");_fgdg .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");_fgdg .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");_fgdg .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");_fgdg ._eebd .SldMasterIdLst =_cg .NewCT_SlideMasterIdList ();_adg :=_cg .NewSldMaster ();_adg .ClrMap .Bg1Attr =_fcc .ST_ColorSchemeIndexLt1 ;_adg .ClrMap .Bg2Attr =_fcc .ST_ColorSchemeIndexLt2 ;_adg .ClrMap .Tx1Attr =_fcc .ST_ColorSchemeIndexDk1 ;_adg .ClrMap .Tx2Attr =_fcc .ST_ColorSchemeIndexDk2 ;_adg .ClrMap .Accent1Attr =_fcc .ST_ColorSchemeIndexAccent1 ;_adg .ClrMap .Accent2Attr =_fcc .ST_ColorSchemeIndexAccent2 ;_adg .ClrMap .Accent3Attr =_fcc .ST_ColorSchemeIndexAccent3 ;_adg .ClrMap .Accent4Attr =_fcc .ST_ColorSchemeIndexAccent4 ;_adg .ClrMap .Accent5Attr =_fcc .ST_ColorSchemeIndexAccent5 ;_adg .ClrMap .Accent6Attr =_fcc .ST_ColorSchemeIndexAccent6 ;_adg .ClrMap .HlinkAttr =_fcc .ST_ColorSchemeIndexHlink ;_adg .ClrMap .FolHlinkAttr =_fcc .ST_ColorSchemeIndexFolHlink ;_fgdg ._gdf =append (_fgdg ._gdf ,_adg );_bdbb :=_fgg .AbsoluteFilename (_fgg .DocTypePresentation ,_fgg .SlideMasterType ,1);_fgdg .ContentTypes .AddOverride (_bdbb ,_fgg .SlideMasterContentType );_dgg :=_fgdg ._acf .AddAutoRelationship (_fgg .DocTypePresentation ,_fgg .OfficeDocumentType ,1,_fgg .SlideMasterType );_gdb :=_cg .NewCT_SlideMasterIdListEntry ();_gdb .IdAttr =_fgg .Uint32 (2147483648);_gdb .RIdAttr =_dgg .ID ();_fgdg ._eebd .SldMasterIdLst .SldMasterId =append (_fgdg ._eebd .SldMasterIdLst .SldMasterId ,_gdb );_eba :=_gf .NewRelationships ();_fgdg ._daa =append (_fgdg ._daa ,_eba );_cfc :=_cg .NewSldLayout ();_bdd :=_eba .AddAutoRelationship (_fgg .DocTypePresentation ,_fgg .SlideMasterType ,1,_fgg .SlideLayoutType );_bbcd :=_fgg .AbsoluteFilename (_fgg .DocTypePresentation ,_fgg .SlideLayoutType ,1);_fgdg .ContentTypes .AddOverride (_bbcd ,_fgg .SlideLayoutContentType );_eba .AddAutoRelationship (_fgg .DocTypePresentation ,_fgg .SlideMasterType ,1,_fgg .ThemeType );_fgdg ._ca =append (_fgdg ._ca ,_cfc );_adg .SldLayoutIdLst =_cg .NewCT_SlideLayoutIdList ();_abf :=_cg .NewCT_SlideLayoutIdListEntry ();_abf .IdAttr =_fgg .Uint32 (2147483649);_abf .RIdAttr =_bdd .ID ();_adg .SldLayoutIdLst .SldLayoutId =append (_adg .SldLayoutIdLst .SldLayoutId ,_abf );_dffc :=_gf .NewRelationships ();_fgdg ._aca =append (_fgdg ._aca ,_dffc );_dffc .AddAutoRelationship (_fgg .DocTypePresentation ,_fgg .SlideType ,1,_fgg .SlideMasterType );_fgdg ._eebd .NotesSz .CxAttr =6858000;_fgdg ._eebd .NotesSz .CyAttr =9144000;_ceb :=_fcc .NewTheme ();_ceb .NameAttr =_fgg .String ("\u0075n\u0069o\u0066\u0066\u0069\u0063\u0065\u0020\u0054\u0068\u0065\u006d\u0065");_ceb .ThemeElements .ClrScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_ceb .ThemeElements .ClrScheme .Dk1 .SysClr =_fcc .NewCT_SystemColor ();_ceb .ThemeElements .ClrScheme .Dk1 .SysClr .LastClrAttr =_fgg .String ("\u0030\u0030\u0030\u0030\u0030\u0030");_ceb .ThemeElements .ClrScheme .Dk1 .SysClr .ValAttr =_fcc .ST_SystemColorValWindowText ;_ceb .ThemeElements .ClrScheme .Lt1 .SysClr =_fcc .NewCT_SystemColor ();_ceb .ThemeElements .ClrScheme .Lt1 .SysClr .LastClrAttr =_fgg .String ("\u0066\u0066\u0066\u0066\u0066\u0066");_ceb .ThemeElements .ClrScheme .Lt1 .SysClr .ValAttr =_fcc .ST_SystemColorValWindow ;_ceb .ThemeElements .ClrScheme .Dk2 .SrgbClr =_fcc .NewCT_SRgbColor ();_ceb .ThemeElements .ClrScheme .Dk2 .SrgbClr .ValAttr ="\u0034\u0034\u0035\u0034\u0036\u0061";_ceb .ThemeElements .ClrScheme .Lt2 .SrgbClr =_fcc .NewCT_SRgbColor ();_ceb .ThemeElements .ClrScheme .Lt2 .SrgbClr .ValAttr ="\u0065\u0037\u0065\u0037\u0065\u0036";_ceb .ThemeElements .ClrScheme .Accent1 .SrgbClr =_fcc .NewCT_SRgbColor ();_ceb .ThemeElements .ClrScheme .Accent1 .SrgbClr .ValAttr ="\u0034\u0034\u0037\u0032\u0063\u0034";_ceb .ThemeElements .ClrScheme .Accent2 .SrgbClr =_fcc .NewCT_SRgbColor ();_ceb .ThemeElements .ClrScheme .Accent2 .SrgbClr .ValAttr ="\u0065\u0064\u0037\u0064\u0033\u0031";_ceb .ThemeElements .ClrScheme .Accent3 .SrgbClr =_fcc .NewCT_SRgbColor ();_ceb .ThemeElements .ClrScheme .Accent3 .SrgbClr .ValAttr ="\u0061\u0035\u0061\u0035\u0061\u0035";_ceb .ThemeElements .ClrScheme .Accent4 .SrgbClr =_fcc .NewCT_SRgbColor ();_ceb .ThemeElements .ClrScheme .Accent4 .SrgbClr .ValAttr ="\u0066\u0066\u0063\u0030\u0030\u0030";_ceb .ThemeElements .ClrScheme .Accent5 .SrgbClr =_fcc .NewCT_SRgbColor ();_ceb .ThemeElements .ClrScheme .Accent5 .SrgbClr .ValAttr ="\u0035\u0062\u0039\u0062\u0064\u0035";_ceb .ThemeElements .ClrScheme .Accent6 .SrgbClr =_fcc .NewCT_SRgbColor ();_ceb .ThemeElements .ClrScheme .Accent6 .SrgbClr .ValAttr ="\u0037\u0030\u0061\u0064\u0034\u0037";_ceb .ThemeElements .ClrScheme .Hlink .SrgbClr =_fcc .NewCT_SRgbColor ();_ceb .ThemeElements .ClrScheme .Hlink .SrgbClr .ValAttr ="\u0030\u0035\u0036\u0033\u0063\u0031";_ceb .ThemeElements .ClrScheme .FolHlink .SrgbClr =_fcc .NewCT_SRgbColor ();_ceb .ThemeElements .ClrScheme .FolHlink .SrgbClr .ValAttr ="\u0039\u0035\u0034\u0066\u0037\u0032";_ceb .ThemeElements .FontScheme .NameAttr ="\u004f\u0066\u0066\u0069\u0063\u0065";_ceb .ThemeElements .FontScheme .MajorFont .Latin .TypefaceAttr ="\u0043\u0061\u006c\u0069\u0062\u0072\u0069\u0020\u004c\u0069\u0067\u0068\u0074";_ceb .ThemeElements .FontScheme .MinorFont .Latin .TypefaceAttr ="\u0043a\u006c\u0069\u0062\u0072\u0069";_ceb .ThemeElements .FmtScheme .NameAttr =_fgg .String ("\u004f\u0066\u0066\u0069\u0063\u0065");_fbbf :=_fcc .NewEG_FillProperties ();_ceb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_ceb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_fbbf );_fbbf .SolidFill =&_fcc .CT_SolidColorFillProperties {SchemeClr :&_fcc .CT_SchemeColor {ValAttr :_fcc .ST_SchemeColorValPhClr }};_fbbf =_fcc .NewEG_FillProperties ();_ceb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_ceb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_fbbf );_ceb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties =append (_ceb .ThemeElements .FmtScheme .FillStyleLst .EG_FillProperties ,_fbbf );_fbbf .GradFill =&_fcc .CT_GradientFillProperties {RotWithShapeAttr :_fgg .Bool (true ),GsLst :&_fcc .CT_GradientStopList {},Lin :&_fcc .CT_LinearShadeProperties {}};_fbbf .GradFill .Lin .AngAttr =_fgg .Int32 (5400000);_fbbf .GradFill .Lin .ScaledAttr =_fgg .Bool (false );_dacc :=_fcc .NewCT_GradientStop ();_dacc .PosAttr .ST_PositiveFixedPercentageDecimal =_fgg .Int32 (0);_dacc .SchemeClr =&_fcc .CT_SchemeColor {ValAttr :_fcc .ST_SchemeColorValPhClr };_fbbf .GradFill .GsLst .Gs =append (_fbbf .GradFill .GsLst .Gs ,_dacc );_dacc =_fcc .NewCT_GradientStop ();_dacc .PosAttr .ST_PositiveFixedPercentageDecimal =_fgg .Int32 (50000);_dacc .SchemeClr =&_fcc .CT_SchemeColor {ValAttr :_fcc .ST_SchemeColorValPhClr };_fbbf .GradFill .GsLst .Gs =append (_fbbf .GradFill .GsLst .Gs ,_dacc );_ceb .ThemeElements .FmtScheme .LnStyleLst =_fcc .NewCT_LineStyleList ();for _ega :=0;_ega < 3;_ega ++{_gbg :=_fcc .NewCT_LineProperties ();_gbg .WAttr =_fgg .Int32 (int32 (6350*(_ega +1)));_gbg .CapAttr =_fcc .ST_LineCapFlat ;_gbg .CmpdAttr =_fcc .ST_CompoundLineSng ;_gbg .AlgnAttr =_fcc .ST_PenAlignmentCtr ;_ceb .ThemeElements .FmtScheme .LnStyleLst .Ln =append (_ceb .ThemeElements .FmtScheme .LnStyleLst .Ln ,_gbg );};_ceb .ThemeElements .FmtScheme .EffectStyleLst =_fcc .NewCT_EffectStyleList ();for _ece :=0;_ece < 3;_ece ++{_cdac :=_fcc .NewCT_EffectStyleItem ();_cdac .EffectLst =_fcc .NewCT_EffectList ();_ceb .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle =append (_ceb .ThemeElements .FmtScheme .EffectStyleLst .EffectStyle ,_cdac );};_cbe :=_fcc .NewEG_FillProperties ();_cbe .SolidFill =&_fcc .CT_SolidColorFillProperties {SchemeClr :&_fcc .CT_SchemeColor {ValAttr :_fcc .ST_SchemeColorValPhClr }};_ceb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_ceb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_cbe );_ceb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_ceb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_cbe );_ceb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties =append (_ceb .ThemeElements .FmtScheme .BgFillStyleLst .EG_FillProperties ,_fbbf );_fgdg ._aag =append (_fgdg ._aag ,_ceb );_fagd :=_fgg .AbsoluteFilename (_fgg .DocTypePresentation ,_fgg .ThemeType ,1);_fgdg .ContentTypes .AddOverride (_fagd ,_fgg .ThemeContentType );_fgdg ._acf .AddAutoRelationship (_fgg .DocTypePresentation ,_fgg .OfficeDocumentType ,1,_fgg .ThemeType );_agg :=_gf .NewRelationships ();_fgdg ._bdb =append (_fgdg ._bdb ,_agg );return _fgdg ;};const _db float64 =500000; // ShowCommentsAttr returns the WebPr property. func (_dfb ViewProperties )ShowCommentsAttr ()*bool {return _dfb ._gca .ShowCommentsAttr }; // Name returns the name of the slide layout. func (_efa SlideLayout )Name ()string {if _efa ._cdg .CSld !=nil &&_efa ._cdg .CSld .NameAttr !=nil {return *_efa ._cdg .CSld .NameAttr ;};return "";}; // GetSlideLayout returns a slide layout related to the slide. func (_daaag *Slide )GetSlideLayout ()*_cg .SldLayout {for _feec ,_bccc :=range _daaag ._gggf .Slides (){if *_daaag ==_bccc {return _daaag ._gggf ._ca [len (_daaag ._gggf .Slides ())-_feec -1];};};return nil ;}; // X returns the inner wrapped XML type. func (_fcd SlideLayout )X ()*_cg .SldLayout {return _fcd ._cdg }; // NormalViewPr returns the NormalViewPr property. func (_baec ViewProperties )NormalViewPr ()*_cg .CT_NormalViewProperties {return _baec ._gca .NormalViewPr ;}; // Properties returns the properties of the TextBox. func (_aed Image )Properties ()_bd .ShapeProperties {if _aed ._gec .SpPr ==nil {_aed ._gec .SpPr =_fcc .NewCT_ShapeProperties ();};return _bd .MakeShapeProperties (_aed ._gec .SpPr );}; // SlideViewPr returns the SlideViewPr property. func (_fdbfg ViewProperties )SlideViewPr ()*_cg .CT_SlideViewProperties {return _fdbfg ._gca .SlideViewPr ;};func (_bac sort2d )Swap (i ,j int ){_bac [i ],_bac [j ]=_bac [j ],_bac [i ]};func _ede (_dea *Presentation ,_bec []*_cg .CT_GroupShapeChoice ,_cd []rectangle ,_afb []*TextItem )[]*TextItem {for _ ,_bbc :=range _bec {_fgb :=append ([]rectangle {},_cd ...);for _ ,_ce :=range _bbc .Sp {_afb =append (_afb ,_fag (_dea ,_ce ,nil ,nil ,_ce .SpPr .Xfrm ,0,_cd ,_ce .TxBody .P )...);};for _ ,_cda :=range _bbc .GraphicFrame {if _cda !=nil &&_cda .Graphic !=nil &&_cda .Graphic .GraphicData !=nil {_fee :=_cda .Xfrm ;for _ ,_age :=range _cda .Graphic .GraphicData .Any {if _eg ,_bbce :=_age .(*_fcc .Tbl );_bbce {_bbd :=&_eg .CT_Table ;_deb :=0;for _cgc ,_da :=range _eg .Tr {for _becf ,_bf :=range _da .Tc {_ccc :=&TableInfo {Table :_bbd ,Row :_da ,Cell :_bf ,RowIndex :_cgc ,ColIndex :_becf };_afb =append (_afb ,_fag (_dea ,nil ,_cda ,_ccc ,_fee ,_deb ,_cd ,_bf .TxBody .P )...);_deb ++;};};};};};};for _ ,_fb :=range _bbc .GrpSp {if _fb .GrpSpPr !=nil {_bga :=_fb .GrpSpPr .Xfrm ;var _ab ,_aa int64 ;if _bga .Off !=nil {_fcb ,_cgf :=_bga .Off .XAttr .ST_CoordinateUnqualified ,_bga .Off .YAttr .ST_CoordinateUnqualified ;if _fcb !=nil &&_cgf !=nil {if _fab :=_bga .Ext ;_fab !=nil {_ab ,_aa =_fab .CxAttr ,_fab .CyAttr ;};_fgb =append (_fgb ,rectangle {_ge :*_fcb ,_dcf :*_cgf ,_ed :*_fcb +_ab ,_gb :*_cgf +_aa });};};};_afb =_ede (_dea ,_fb .Choice ,_fgb ,_afb );};};return _afb ;}; // 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 (_ffdf *Presentation )AddSlideWithLayout (l SlideLayout )(Slide ,error ){_bfgf :=_cg .NewCT_SlideIdListEntry ();_bfgf .IdAttr =256;for _ ,_cgdb :=range _ffdf ._eebd .SldIdLst .SldId {if _cgdb .IdAttr >=_bfgf .IdAttr {_bfgf .IdAttr =_cgdb .IdAttr +1;};};_ffdf ._eebd .SldIdLst .SldId =append (_ffdf ._eebd .SldIdLst .SldId ,_bfgf );_gdc :=_cg .NewSld ();_cab :=_dd .Buffer {};_bcad :=_fc .NewEncoder (&_cab );_fcg :=_fc .StartElement {Name :_fc .Name {Local :"\u0073\u006c\u0069d\u0065"}};_fcg .Attr =append (_fcg .Attr ,_fc .Attr {Name :_fc .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"});_fcg .Attr =append (_fcg .Attr ,_fc .Attr {Name :_fc .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"});_fcg .Attr =append (_fcg .Attr ,_fc .Attr {Name :_fc .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"});_fcg .Attr =append (_fcg .Attr ,_fc .Attr {Name :_fc .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"});_fcg .Attr =append (_fcg .Attr ,_fc .Attr {Name :_fc .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"});_fcg .Attr =append (_fcg .Attr ,_fc .Attr {Name :_fc .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 _dgda :=l ._cdg .CSld .MarshalXML (_bcad ,_fcg );_dgda !=nil {return Slide {},_dgda ;};_bcad .Flush ();_acb :=_fc .NewDecoder (&_cab );_gdc .CSld =_cg .NewCT_CommonSlideData ();if _ddcd :=_acb .Decode (_gdc .CSld );_ddcd !=nil {return Slide {},_ddcd ;};_gdc .CSld .NameAttr =nil ;_gdc .CSld .SpTree .Choice =_dab (_gdc .CSld .SpTree .Choice );_ffdf ._fba =append (_ffdf ._fba ,_gdc );_cbc :=_ffdf ._acf .AddAutoRelationship (_fgg .DocTypePresentation ,_fgg .OfficeDocumentType ,len (_ffdf ._fba ),_fgg .SlideType );_bfgf .RIdAttr =_cbc .ID ();_debg :=_fgg .AbsoluteFilename (_fgg .DocTypePresentation ,_fgg .SlideType ,len (_ffdf ._fba ));_ffdf .ContentTypes .AddOverride (_debg ,_fgg .SlideContentType );_cba :=_gf .NewRelationships ();_ffdf ._cgfe =append (_ffdf ._cgfe ,_cba );_feef :=len (_ffdf ._cgfe )-1;for _fgfb ,_bab :=range _ffdf ._ca {if _bab ==l .X (){_geaa :=_ffdf ._aca [_fgfb ];for _ ,_bdc :=range _geaa .X ().Relationship {if _bdc .TypeAttr !=_fgg .SlideMasterType {_ffdf ._cgfe [_feef ].X ().Relationship =append (_ffdf ._cgfe [_feef ].X ().Relationship ,_bdc );};};_cba .AddAutoRelationship (_fgg .DocTypePresentation ,_fgg .SlideType ,_fgfb +1,_fgg .SlideLayoutType );};};_dcg :=Slide {_bfgf ,_gdc ,_ffdf ,nil };return _dcg ,nil ;};func (_faca *Presentation )onNewRelationship (_dcb *_b .DecodeMap ,_gde ,_adcg string ,_agdg []*_a .File ,_adba *_g .Relationship ,_ebb _b .Target )error {_fffb :=_fgg .DocTypePresentation ;switch _adcg {case _fgg .OfficeDocumentType :_faca ._eebd =_cg .NewPresentation ();_dcb .AddTarget (_gde ,_faca ._eebd ,_adcg ,0);_dcb .AddTarget (_b .RelationsPathFor (_gde ),_faca ._acf .X (),_adcg ,0);_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,0);case _fgg .CorePropertiesType :_dcb .AddTarget (_gde ,_faca .CoreProperties .X (),_adcg ,0);_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,0);case _fgg .CustomPropertiesType :_dcb .AddTarget (_gde ,_faca .CustomProperties .X (),_adcg ,0);_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,0);case _fgg .PresentationPropertiesType :_dcb .AddTarget (_gde ,_faca ._aaee .X (),_adcg ,0);_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,0);case _fgg .ViewPropertiesType :_dcb .AddTarget (_gde ,_faca ._gcd .X (),_adcg ,0);_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,0);case _fgg .TableStylesType :_dcb .AddTarget (_gde ,_faca ._acfd .X (),_adcg ,0);_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,0);case _fgg .HyperLinkType :_egfce :=_fcc .NewCT_Hyperlink ();_fde :=uint32 (len (_faca ._ecc ));_dcb .AddTarget (_gde ,_egfce ,_adcg ,_fde );_faca ._ecc =append (_faca ._ecc ,_egfce );case _fgg .CustomXMLType :_gcf :=&_fgg .XSDAny {};_abdb :=uint32 (len (_faca ._fac ));_dcb .AddTarget (_gde ,_gcf ,_adcg ,_abdb );_faca ._fac =append (_faca ._fac ,_gcf );_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,len (_faca ._fac ));case _fgg .ChartType :_aeb :=chart {_gff :_fe .NewChartSpace ()};_defe :=uint32 (len (_faca ._adbf ));_dcb .AddTarget (_gde ,_aeb ._gff ,_adcg ,_defe );_faca ._adbf =append (_faca ._adbf ,&_aeb );_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,len (_faca ._adbf ));_aeb ._dg =_adba .TargetAttr ;case _fgg .HandoutMasterType :_ceg :=_cg .NewHandoutMaster ();_gfc :=uint32 (len (_faca ._cbb ));_dcb .AddTarget (_gde ,_ceg ,_adcg ,_gfc );_faca ._cbb =append (_faca ._cbb ,_ceg );_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,len (_faca ._cbb ));case _fgg .NotesMasterType :_fccf :=_cg .NewNotesMaster ();_abaf :=uint32 (len (_faca ._aac ));_dcb .AddTarget (_gde ,_fccf ,_adcg ,_abaf );_faca ._aac =append (_faca ._aac ,_fccf );_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,len (_faca ._aac ));case _fgg .ExtendedPropertiesType :_dcb .AddTarget (_gde ,_faca .AppProperties .X (),_adcg ,0);_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,0);case _fgg .SlideType :_cgcg :=_cg .NewSld ();_faca ._fba =append (_faca ._fba ,_cgcg );_dcb .AddTarget (_gde ,_cgcg ,_adcg ,uint32 (len (_faca ._fba )));_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,len (_faca ._fba ));_ecdf :=_gf .NewRelationships ();_dcb .AddTarget (_b .RelationsPathFor (_gde ),_ecdf .X (),_adcg ,0);_faca ._cgfe =append (_faca ._cgfe ,_ecdf );case _fgg .SlideMasterType :_ecb :=_cg .NewSldMaster ();if !_dcb .AddTarget (_gde ,_ecb ,_adcg ,uint32 (len (_faca ._gdf )+1)){return nil ;};_faca ._gdf =append (_faca ._gdf ,_ecb );_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,len (_faca ._gdf ));_caba :=_gf .NewRelationships ();_dcb .AddTarget (_b .RelationsPathFor (_gde ),_caba .X (),_adcg ,0);_faca ._daa =append (_faca ._daa ,_caba );case _fgg .SlideLayoutType :_egcb :=_cg .NewSldLayout ();if !_dcb .AddTarget (_gde ,_egcb ,_adcg ,uint32 (len (_faca ._ca )+1)){return nil ;};_faca ._ca =append (_faca ._ca ,_egcb );_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,len (_faca ._ca ));_efd :=_gf .NewRelationships ();_dcb .AddTarget (_b .RelationsPathFor (_gde ),_efd .X (),_adcg ,0);_faca ._aca =append (_faca ._aca ,_efd );case _fgg .ThumbnailType :for _gadf ,_cdec :=range _agdg {if _cdec ==nil {continue ;};if _cdec .Name ==_gde {_cabc ,_egcc :=_cdec .Open ();if _egcc !=nil {return _df .Errorf ("e\u0072\u0072\u006f\u0072\u0020\u0072e\u0061\u0064\u0069\u006e\u0067\u0020\u0074\u0068\u0075m\u0062\u006e\u0061i\u006c:\u0020\u0025\u0073",_egcc );};_faca .Thumbnail ,_ ,_egcc =_eb .Decode (_cabc );_cabc .Close ();if _egcc !=nil {return _df .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",_egcc );};_agdg [_gadf ]=nil ;};};case _fgg .ThemeType :_fdb :=_fcc .NewTheme ();if !_dcb .AddTarget (_gde ,_fdb ,_adcg ,uint32 (len (_faca ._aag )+1)){return nil ;};_faca ._aag =append (_faca ._aag ,_fdb );_adba .TargetAttr =_fgg .RelativeFilename (_fffb ,_ebb .Typ ,_adcg ,len (_faca ._aag ));_cabcd :=_gf .NewRelationships ();_dcb .AddTarget (_b .RelationsPathFor (_gde ),_cabcd .X (),_adcg ,0);_faca ._bdb =append (_faca ._bdb ,_cabcd );case _fgg .ImageType :_gde =_e .Clean (_gde );if _geeb ,_gdd :=_faca ._ddc [_gde ];_gdd {_adba .TargetAttr =_geeb ;return nil ;};_gcc :="";for _acbd ,_dbdg :=range _agdg {if _dbdg ==nil {continue ;};if _dbdg .Name ==_gde {_bcc ,_gafa :=_b .ExtractToDiskTmp (_dbdg ,_faca .TmpPath );if _gafa !=nil {return _gafa ;};_bcdg ,_gafa :=_gf .ImageFromStorage (_bcc );if _gafa !=nil {return _gafa ;};_gcc =_bcdg .Format ;_aecd :=_gf .MakeImageRef (_bcdg ,&_faca .DocBase ,_faca ._acf );_aecd .SetTarget ("\u002e\u002e\u002f"+_gde [4:]);_faca .Images =append (_faca .Images ,_aecd );_agdg [_acbd ]=nil ;_dcb .RecordIndex (_gde ,len (_faca .Images ));break ;};};_edg :=_dcb .IndexFor (_gde );_adba .TargetAttr =_fgg .RelativeImageFilename (_fffb ,_ebb .Typ ,_adcg ,_edg ,_gcc );_faca ._ddc [_gde ]=_adba .TargetAttr ;default:_ff .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",_adcg ,_gde );};return nil ;};func (_abag *Presentation )saveToFile (_aff string ,_ace bool )error {_dba ,_abac :=_ffd .Create (_aff );if _abac !=nil {return _abac ;};defer _dba .Close ();return _abag .save (_dba ,_ace );}; // OpenTemplate opens a template file. func OpenTemplate (fn string )(*Presentation ,error ){_fgd ,_dce :=Open (fn );if _dce !=nil {return nil ,_dce ;};return _fgd ,nil ;}; // Slide represents a slide of a presentation. type Slide struct{_ggf *_cg .CT_SlideIdListEntry ;_eed *_cg .Sld ;_gggf *Presentation ;_bgd *_fcc .CT_ColorMapping ;}; // GetTextBoxes returns a list of all text boxes from a slide. func (_dcaf Slide )GetTextBoxes ()[]*TextBox {_gdca :=[]*TextBox {};_dcgf :=_dcaf ._eed .CSld .SpTree .Choice ;for _ ,_gfcc :=range _dcgf {for _ ,_bgdg :=range _gfcc .Sp {if _bgdg .NvSpPr .CNvSpPr .TxBoxAttr !=nil &&*_bgdg .NvSpPr .CNvSpPr .TxBoxAttr {_gdca =append (_gdca ,&TextBox {_bgdg });};};};return _gdca ;}; // PrnPr returns the PrnPr property. func (_baf PresentationProperties )PrnPr ()*_cg .CT_PrintProperties {return _baf ._aad .PrnPr }; // ExtLst returns the ExtLst property. func (_fecf ViewProperties )ExtLst ()*_cg .CT_ExtensionList {return _fecf ._gca .ExtLst }; // SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template func (_daaa *Presentation )SaveAsTemplate (w _cc .Writer )error {return _daaa .save (w ,true )};func (_dbge *Presentation )nextSlideID ()uint32 {_egad :=uint32 (256);for _ ,_gbge :=range _dbge ._eebd .SldIdLst .SldId {if _gbge .IdAttr >=_egad {_egad =_gbge .IdAttr +1;};};return _egad ;}; // OutlineViewPr returns the OutlineViewPr property. func (_dbbf ViewProperties )OutlineViewPr ()*_cg .CT_OutlineViewProperties {return _dbbf ._gca .OutlineViewPr ;}; // RemoveSlide removes a slide from a presentation. func (_efg *Presentation )RemoveSlide (s Slide )error {_geac :=false ;_efdf :=0;for _cff ,_gcg :=range _efg ._fba {if _gcg ==s ._eed {if _efg ._eebd .SldIdLst .SldId [_cff ]!=s ._ggf {return _ded .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 (_efg ._fba [_cff :],_efg ._fba [_cff +1:]);_efg ._fba =_efg ._fba [0:len (_efg ._fba )-1];copy (_efg ._cgfe [_cff :],_efg ._cgfe [_cff +1:]);_efg ._cgfe =_efg ._cgfe [0:len (_efg ._cgfe )-1];copy (_efg ._eebd .SldIdLst .SldId [_cff :],_efg ._eebd .SldIdLst .SldId [_cff +1:]);_efg ._eebd .SldIdLst .SldId =_efg ._eebd .SldIdLst .SldId [0:len (_efg ._eebd .SldIdLst .SldId )-1];_geac =true ;_efdf =_cff ;};};if !_geac {return _ded .New ("u\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0073li\u0064\u0065");};_ggbd :=_fgg .AbsoluteFilename (_fgg .DocTypePresentation ,_fgg .SlideType ,0);return _efg .ContentTypes .RemoveOverrideByIndex (_ggbd ,_efdf );}; // AddSlide adds a new slide to the presentation. func (_dbc *Presentation )AddSlide ()Slide {_cgfee :=_cg .NewCT_SlideIdListEntry ();_cgfee .IdAttr =_dbc .nextSlideID ();_dbc ._eebd .SldIdLst .SldId =append (_dbc ._eebd .SldIdLst .SldId ,_cgfee );_aba :=_cg .NewSld ();_aba .CSld .SpTree .NvGrpSpPr .CNvPr .IdAttr =1;_aba .CSld .SpTree .GrpSpPr .Xfrm =_fcc .NewCT_GroupTransform2D ();_aba .CSld .SpTree .GrpSpPr .Xfrm .Off =_fcc .NewCT_Point2D ();_aba .CSld .SpTree .GrpSpPr .Xfrm .Off .XAttr .ST_CoordinateUnqualified =_fgg .Int64 (0);_aba .CSld .SpTree .GrpSpPr .Xfrm .Off .YAttr .ST_CoordinateUnqualified =_fgg .Int64 (0);_aba .CSld .SpTree .GrpSpPr .Xfrm .Ext =_fcc .NewCT_PositiveSize2D ();_aba .CSld .SpTree .GrpSpPr .Xfrm .Ext .CxAttr =int64 (0*_fg .Point );_aba .CSld .SpTree .GrpSpPr .Xfrm .Ext .CyAttr =int64 (0*_fg .Point );_aba .CSld .SpTree .GrpSpPr .Xfrm .ChOff =_aba .CSld .SpTree .GrpSpPr .Xfrm .Off ;_aba .CSld .SpTree .GrpSpPr .Xfrm .ChExt =_aba .CSld .SpTree .GrpSpPr .Xfrm .Ext ;_dbc ._fba =append (_dbc ._fba ,_aba );_adbd :=_dbc ._acf .AddAutoRelationship (_fgg .DocTypePresentation ,_fgg .OfficeDocumentType ,len (_dbc ._fba ),_fgg .SlideType );_cgfee .RIdAttr =_adbd .ID ();_gfde :=_fgg .AbsoluteFilename (_fgg .DocTypePresentation ,_fgg .SlideType ,len (_dbc ._fba ));_dbc .ContentTypes .AddOverride (_gfde ,_fgg .SlideContentType );_ebg :=_gf .NewRelationships ();_dbc ._cgfe =append (_dbc ._cgfe ,_ebg );_ebg .AddAutoRelationship (_fgg .DocTypePresentation ,_fgg .SlideType ,len (_dbc ._ca ),_fgg .SlideLayoutType );return Slide {_cgfee ,_aba ,_dbc ,nil };}; // PlaceHolders returns all of the content place holders within a given slide. func (_ddfa Slide )PlaceHolders ()[]PlaceHolder {_eda :=[]PlaceHolder {};for _ ,_gcgb :=range _ddfa ._eed .CSld .SpTree .Choice {for _ ,_ffgc :=range _gcgb .Sp {if _ffgc .NvSpPr !=nil &&_ffgc .NvSpPr .NvPr !=nil &&_ffgc .NvSpPr .NvPr .Ph !=nil {_eda =append (_eda ,PlaceHolder {_ffgc ,_ddfa ._eed });};};};return _eda ;}; // TextBox is a text box within a slide. type TextBox struct{_eef *_cg .CT_Shape }; // 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 (_dde Slide )GetPlaceholderByIndex (idx uint32 )(PlaceHolder ,error ){for _ ,_ggc :=range _dde ._eed .CSld .SpTree .Choice {for _ ,_fgeb :=range _ggc .Sp {if _fgeb .NvSpPr !=nil &&_fgeb .NvSpPr .NvPr !=nil &&_fgeb .NvSpPr .NvPr .Ph !=nil {if (idx ==0&&_fgeb .NvSpPr .NvPr .Ph .IdxAttr ==nil )||(_fgeb .NvSpPr .NvPr .Ph .IdxAttr !=nil &&*_fgeb .NvSpPr .NvPr .Ph .IdxAttr ==idx ){return PlaceHolder {_fgeb ,_dde ._eed },nil ;};};};};return PlaceHolder {},_ded .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 (_acfg *Presentation )Validate ()error {if _bege :=_acfg ._eebd .Validate ();_bege !=nil {return _bege ;};for _ebe ,_acga :=range _acfg .Slides (){if _bbb :=_acga .ValidateWithPath (_df .Sprintf ("\u0053l\u0069\u0064\u0065\u005b\u0025\u0064]",_ebe ));_bbb !=nil {return _bbb ;};};for _cdd ,_egaa :=range _acfg ._gdf {if _fcgb :=_egaa .ValidateWithPath (_df .Sprintf ("\u0053l\u0069d\u0065\u004d\u0061\u0073\u0074\u0065\u0072\u005b\u0025\u0064\u005d",_cdd ));_fcgb !=nil {return _fcgb ;};};for _cfg ,_fbf :=range _acfg ._ca {if _ada :=_fbf .ValidateWithPath (_df .Sprintf ("\u0053l\u0069d\u0065\u004c\u0061\u0079\u006f\u0075\u0074\u005b\u0025\u0064\u005d",_cfg ));_ada !=nil {return _ada ;};};return nil ;};func _bfa ()*Presentation {_bca :=&Presentation {_eebd :_cg .NewPresentation ()};_bca ._eebd .SldIdLst =_cg .NewCT_SlideIdList ();_bca ._eebd .ConformanceAttr =_bg .ST_ConformanceClassTransitional ;_bca .AppProperties =_gf .NewAppProperties ();_bca .CoreProperties =_gf .NewCoreProperties ();_bca ._acfd =_gf .NewTableStyles ();_bca .ContentTypes =_gf .NewContentTypes ();_bca .Rels =_gf .NewRelationships ();_bca ._acf =_gf .NewRelationships ();_bca ._aaee =NewPresentationProperties ();_bca ._gcd =NewViewProperties ();_bca ._ddc =map[string ]string {};return _bca ;}; // 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 (_fdc PlaceHolder )Clear (){_fdc .ClearAll ();_fgf :=_fcc .NewCT_TextParagraph ();_fdc ._eca .TxBody .P =[]*_fcc .CT_TextParagraph {_fgf };_fgf .EndParaRPr =_fcc .NewCT_TextCharacterProperties ();_fgf .EndParaRPr .LangAttr =_fgg .String ("\u0065\u006e\u002dU\u0053");}; // 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 *_cg .CT_Shape ;GraphicFrame *_cg .CT_GraphicalObjectFrame ;Paragraph *_fcc .CT_TextParagraph ;Run *_fcc .CT_RegularTextRun ;TableInfo *TableInfo ;_bb []rectangle ;_ee int ;_ag int ;}; // Text returns text from a presentation as one string separated with line breaks. func (_deg *PresentationText )Text ()string {_cde :=_dd .NewBuffer ([]byte {});for _ ,_ebc :=range _deg .Slides {_cde .WriteString (_ebc .Text ());};return _cde .String ();}; // Save writes the presentation out to a writer in the Zip package format func (_cgdd *Presentation )Save (w _cc .Writer )error {return _cgdd .save (w ,false )}; // SlideText is an array of extracted text items which has some methods for representing extracted text from a slide. type SlideText struct{Items []*TextItem ;}; // AddImage adds an image textbox to a slide. func (_bfdf Slide )AddImage (img _gf .ImageRef )Image {_fabf :=_cg .NewCT_GroupShapeChoice ();_bfdf ._eed .CSld .SpTree .Choice =append (_bfdf ._eed .CSld .SpTree .Choice ,_fabf );_efe :=_cg .NewCT_Picture ();_fabf .Pic =append (_fabf .Pic ,_efe );_efe .NvPicPr .CNvPicPr =_fcc .NewCT_NonVisualPictureProperties ();_efe .NvPicPr .CNvPicPr .PicLocks =_fcc .NewCT_PictureLocking ();_efe .NvPicPr .CNvPicPr .PicLocks .NoChangeAspectAttr =_fgg .Bool (true );_efe .BlipFill =_fcc .NewCT_BlipFillProperties ();_efe .BlipFill .Blip =_fcc .NewCT_Blip ();_faf :=_bfdf .AddImageToRels (img );_efe .BlipFill .Blip .EmbedAttr =_fgg .String (_faf );_efe .BlipFill .Stretch =_fcc .NewCT_StretchInfoProperties ();_efe .BlipFill .Stretch .FillRect =_fcc .NewCT_RelativeRect ();_efe .SpPr =_fcc .NewCT_ShapeProperties ();_efe .SpPr .PrstGeom =_fcc .NewCT_PresetGeometry2D ();_efe .SpPr .PrstGeom .PrstAttr =_fcc .ST_ShapeTypeRect ;_ebcf :=Image {_efe };_ced :=img .Size ();_ebcf .Properties ().SetWidth (_fg .Distance (_ced .X )*_fg .Pixel72 );_ebcf .Properties ().SetHeight (_fg .Distance (_ced .Y )*_fg .Pixel72 );_ebcf .Properties ().SetPosition (0,0);return _ebcf ;}; // Slides returns the slides in the presentation. func (_eeea *Presentation )Slides ()[]Slide {_dedg :=[]Slide {};for _fdbf ,_daad :=range _eeea ._fba {_dedg =append (_dedg ,Slide {_eeea ._eebd .SldIdLst .SldId [_fdbf ],_daad ,_eeea ,nil });};return _dedg ;}; // 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 (_ea sort2d )Less (i ,j int )bool {_agd ,_fd :=_ea [i ],_ea [j ];_cca ,_egf :=_agd ._bb ,_fd ._bb ;_bgag ,_cgd :=len (_cca )-1,len (_egf )-1;_cf ,_gef :=0,0;for {_edd ,_bea ,_ec ,_ead ,_cgba ,_cce ,_dff ,_gg :=_cca [_cf ]._dcf ,_egf [_gef ]._dcf ,_cca [_cf ]._gb ,_egf [_gef ]._gb ,_cca [_cf ]._ge ,_egf [_gef ]._ge ,_cca [_cf ]._ed ,_egf [_gef ]._ed ;if _edd ==_bea ||((_ef .Abs (float64 (_edd )-float64 (_bea ))< _db )&&((_edd >=_bea &&_edd <=_ead )||(_bea >=_edd &&_bea <=_ec ))&&(_dff < _cce ||_cgba > _gg )){if _cgba ==_cce {if _cf < _bgag &&_gef < _cgd {_cf ++;_gef ++;continue ;};if _cf >=_bgag &&_gef >=_cgd {break ;};return _cf >=_bgag ;}else {return _cgba < _cce ;};}else {return _edd < _bea ;};};_dbg ,_egc ,_ebd ,_dbd :=_agd ._ee ,_fd ._ee ,_agd ._ag ,_fd ._ag ;if _dbg ==_egc {return _ebd <=_dbd ;};return _dbg < _egc ;}; // ClrMru returns the ClrMru property. func (_fbbc PresentationProperties )ClrMru ()*_fcc .CT_ColorMRU {return _fbbc ._aad .ClrMru }; // SorterViewPr returns the SorterViewPr property. func (_dacf ViewProperties )SorterViewPr ()*_cg .CT_SlideSorterViewProperties {return _dacf ._gca .SorterViewPr ;}; // Themes returns an array of presentation themes. func (_dffcf *Presentation )Themes ()[]*_fcc .Theme {return _dffcf ._aag };func (_cfcg TextBox )getOff ()*_fcc .CT_Point2D {if _cfcg ._eef .SpPr ==nil {_cfcg ._eef .SpPr =_fcc .NewCT_ShapeProperties ();};if _cfcg ._eef .SpPr .Xfrm ==nil {_cfcg ._eef .SpPr .Xfrm =_fcc .NewCT_Transform2D ();};if _cfcg ._eef .SpPr .Xfrm .Off ==nil {_cfcg ._eef .SpPr .Xfrm .Off =_fcc .NewCT_Point2D ();};return _cfcg ._eef .SpPr .Xfrm .Off ;}; // SaveToFile writes the Presentation out to a file. func (_geb *Presentation )SaveToFile (path string )error {return _geb .saveToFile (path ,false )};func (_fga *chart )Target ()string {return _fga ._dg };type rectangle struct{_ge int64 ;_dcf int64 ;_ed int64 ;_gb int64 ;}; // GetChartSpaceByRelId returns a *crt.ChartSpace with the associated relation ID in the // slide. func (_agcd *Slide )GetChartSpaceByRelId (relId string )*_fe .ChartSpace {_abcd :=_agcd .getSlideRels ();if (_abcd ==_gf .Relationships {}){return nil ;};_bace :=_abcd .GetTargetByRelId (relId );for _ ,_eag :=range _agcd ._gggf ._adbf {if _bace ==_eag .Target (){return _eag ._gff ;};};return nil ;};type sort2d []*TextItem ; // Type returns the placeholder type func (_eff PlaceHolder )Type ()_cg .ST_PlaceholderType {return _eff ._eca .NvSpPr .NvPr .Ph .TypeAttr };func (_dc *chart )RelId ()string {return _dc ._ga }; // ViewProperties contains presentation specific properties. type ViewProperties struct{_gca *_cg .ViewPr }; // NewViewProperties constructs a new ViewProperties. func NewViewProperties ()ViewProperties {return ViewProperties {_gca :_cg .NewViewPr ()}}; // X returns TextBox's underlying *pml.CT_Shape. func (_eead TextBox )X ()*_cg .CT_Shape {return _eead ._eef }; // Presentation returns a slide's presentation. func (_fadg Slide )Presentation ()*Presentation {return _fadg ._gggf }; // GridSpacing returns the GridSpacing property. func (_adbb ViewProperties )GridSpacing ()*_fcc .CT_PositiveSize2D {return _adbb ._gca .GridSpacing }; // TableInfo is used for keep information about a table, a row and a cell where the text is located. type TableInfo struct{Table *_fcc .CT_Table ;Row *_fcc .CT_TableRow ;Cell *_fcc .CT_TableCell ;RowIndex int ;ColIndex int ;}; // Presentation is the a presentation base document. type Presentation struct{_gf .DocBase ;_eebd *_cg .Presentation ;_acf _gf .Relationships ;_fba []*_cg .Sld ;_cgfe []_gf .Relationships ;_gdf []*_cg .SldMaster ;_daa []_gf .Relationships ;_ca []*_cg .SldLayout ;_aca []_gf .Relationships ;_aag []*_fcc .Theme ;_bdb []_gf .Relationships ;_acfd _gf .TableStyles ;_aaee PresentationProperties ;_gcd ViewProperties ;_ecc []*_fcc .CT_Hyperlink ;_adbf []*chart ;_cbb []*_cg .HandoutMaster ;_aac []*_cg .NotesMaster ;_fac []*_fgg .XSDAny ;_ddc map[string ]string ;_dcd string ;}; // SlideLayouts returns a slice of all layouts in SlideMaster. func (_bfc SlideMaster )SlideLayouts ()[]SlideLayout {_gcfd :=map[string ]int {};_eebe :=[]SlideLayout {};for _ ,_ggbae :=range _bfc ._dbae .Relationships (){_egbg :=_c .Replace (_ggbae .Target (),".\u002e\u002f\u0073\u006c\u0069\u0064e\u004c\u0061\u0079\u006f\u0075\u0074\u0073\u002f\u0073l\u0069\u0064\u0065L\u0061y\u006f\u0075\u0074","",-1);_egbg =_c .Replace (_egbg ,"\u002e\u0078\u006d\u006c","",-1);if _ggfb ,_dfa :=_d .ParseInt (_egbg ,10,32);_dfa ==nil {_gcfd [_ggbae .ID ()]=int (_ggfb );};};for _ ,_bddg :=range _bfc ._fdcg .SldLayoutIdLst .SldLayoutId {if _dbcf ,_cafb :=_gcfd [_bddg .RIdAttr ];_cafb {_agdf :=_bfc ._fcdf ._ca [_dbcf -1];_eebe =append (_eebe ,SlideLayout {_agdf });};};return _eebe ;};type chart struct{_gff *_fe .ChartSpace ;_ga string ;_dg string ;}; // GetTableStyleById returns *dml.CT_TableStyle by its style id. func (_cdecg *Presentation )GetTableStyleById (id string )*_fcc .CT_TableStyle {_agc :=_cdecg ._acfd .TblStyle ();for _ ,_edfe :=range _agc {if _edfe .StyleIdAttr ==id {return _edfe ;};};return nil ;}; // Text returns text from a slide as one string separated with line breaks. func (_aae *SlideText )Text ()string {_ac :=_dd .NewBuffer ([]byte {});for _ ,_gee :=range _aae .Items {if _gee .Text !=""{_ac .WriteString (_gee .Text );_ac .WriteString ("\u000a");};};return _ac .String ();}; // Close closes the presentation, removing any temporary files that might have been // created when opening a document. func (_ebec *Presentation )Close ()error {if _ebec .TmpPath !=""{return _ba .RemoveAll (_ebec .TmpPath );};return nil ;}; // AddTable adds an empty table to a slide. func (_acca Slide )AddTable ()*_gf .Table {_dcec :=_cg .NewCT_GroupShapeChoice ();_acca ._eed .CSld .SpTree .Choice =append (_acca ._eed .CSld .SpTree .Choice ,_dcec );_fgba :=_cg .NewCT_GraphicalObjectFrame ();_dcec .GraphicFrame =append (_dcec .GraphicFrame ,_fgba );_fgba .Xfrm .Off =_fcc .NewCT_Point2D ();_abdg :=int64 (1);_fgba .Xfrm .Off .XAttr =_fcc .ST_Coordinate {ST_CoordinateUnqualified :&_abdg };_fgba .Xfrm .Off .YAttr =_fcc .ST_Coordinate {ST_CoordinateUnqualified :&_abdg };_ccb :=_fgba .Graphic .CT_GraphicalObject .GraphicData ;_ccb .UriAttr ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002eo\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073.\u006f\u0072\u0067\u002f\u0064\u0072\u0061\u0077\u0069\u006e\u0067\u006dl/\u0032\u0030\u0030\u0036\u002f\u0074\u0061\u0062\u006c\u0065";_bbde :=_gf .NewTableWithXfrm (_fgba .Xfrm );_ccb .Any =append (_ccb .Any ,_bbde .X ());return _bbde ;};func (_egccc *Slide )getSlideRels ()_gf .Relationships {_gaff :=_egccc ._gggf ;for _defa ,_bacc :=range _gaff .Slides (){if *_egccc ._eed ==*_bacc ._eed {return _gaff ._cgfe [len (_gaff ._cgfe )-_defa -1];};};return _gf .Relationships {};}; // NotesTextViewPr returns the NotesTextViewPr property. func (_abce ViewProperties )NotesTextViewPr ()*_cg .CT_NotesTextViewProperties {return _abce ._gca .NotesTextViewPr ;}; // X returns the inner wrapped XML type. func (_cdb PresentationProperties )X ()*_cg .PresentationPr {return _cdb ._aad }; // GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation. func (_cgbf *Presentation )GetColorBySchemeColor (schClr _fcc .ST_SchemeColorVal )*_fcc .CT_Color {if len (_cgbf ._gdf )==0||len (_cgbf ._aag )==0{return nil ;};var _degfg _fcc .ST_ColorSchemeIndex ;_aceg :=_cgbf ._gdf [0];_bcb :=_aceg .ClrMap ;switch schClr .String (){case "\u0062\u0067\u0031":_degfg =_bcb .Bg1Attr ;case "\u0062\u0067\u0032":_degfg =_bcb .Bg2Attr ;case "\u0074\u0078\u0031":_degfg =_bcb .Tx1Attr ;case "\u0074\u0078\u0032":_degfg =_bcb .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_degfg =_bcb .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_degfg =_bcb .Accent2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_degfg =_bcb .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_degfg =_bcb .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_degfg =_bcb .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_degfg =_bcb .Accent6Attr ;case "\u0068\u006c\u0069n\u006b":_degfg =_bcb .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_degfg =_bcb .FolHlinkAttr ;case "\u0064\u006b\u0031":_degfg =_fcc .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_degfg =_fcc .ST_ColorSchemeIndexDk2 ;case "\u006c\u0074\u0031":_degfg =_fcc .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_degfg =_fcc .ST_ColorSchemeIndexLt2 ;default:_degfg =_fcc .ST_ColorSchemeIndexUnset ;};_adff :=_cgbf ._aag [0];_dbe :=_adff .ThemeElements ;if _dbe ==nil {return nil ;};var _bdcf *_fcc .CT_Color ;_gefge :=_dbe .ClrScheme ;switch _degfg .String (){case "\u0064\u006b\u0031":_bdcf =_gefge .Dk1 ;case "\u0064\u006b\u0032":_bdcf =_gefge .Dk2 ;case "\u006c\u0074\u0031":_bdcf =_gefge .Lt1 ;case "\u006c\u0074\u0032":_bdcf =_gefge .Lt2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_bdcf =_gefge .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_bdcf =_gefge .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_bdcf =_gefge .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_bdcf =_gefge .Accent4 ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_bdcf =_gefge .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_bdcf =_gefge .Accent6 ;case "\u0068\u006c\u0069n\u006b":_bdcf =_gefge .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_bdcf =_gefge .FolHlink ;default:return nil ;};return _bdcf ;}; // AddTextBox adds an empty textbox to a slide. func (_bccd Slide )AddTextBox ()TextBox {_gadd :=_cg .NewCT_GroupShapeChoice ();_bccd ._eed .CSld .SpTree .Choice =append (_bccd ._eed .CSld .SpTree .Choice ,_gadd );_bafa :=_cg .NewCT_Shape ();_gadd .Sp =append (_gadd .Sp ,_bafa );_bafa .SpPr =_fcc .NewCT_ShapeProperties ();_bafa .SpPr .Xfrm =_fcc .NewCT_Transform2D ();_bafa .SpPr .PrstGeom =_fcc .NewCT_PresetGeometry2D ();_bafa .SpPr .PrstGeom .PrstAttr =_fcc .ST_ShapeTypeRect ;_bafa .NvSpPr =_cg .NewCT_ShapeNonVisual ();_bafa .NvSpPr .CNvSpPr =_fcc .NewCT_NonVisualDrawingShapeProps ();_debe :=true ;_bafa .NvSpPr .CNvSpPr .TxBoxAttr =&_debe ;_bafa .TxBody =_fcc .NewCT_TextBody ();_bafa .TxBody .BodyPr =_fcc .NewCT_TextBodyProperties ();_bafa .TxBody .BodyPr .WrapAttr =_fcc .ST_TextWrappingTypeSquare ;_bafa .TxBody .BodyPr .SpAutoFit =_fcc .NewCT_TextShapeAutofit ();_caf :=TextBox {_bafa };_caf .Properties ().SetWidth (3*_fg .Inch );_caf .Properties ().SetHeight (1*_fg .Inch );_caf .Properties ().SetPosition (0,0);return _caf ;}; // X returns the inner wrapped XML type. func (_gefg *Presentation )X ()*_cg .Presentation {return _gefg ._eebd }; // Paragraphs returns the paragraphs defined in the placeholder. func (_gcb PlaceHolder )Paragraphs ()[]_bd .Paragraph {_bfg :=[]_bd .Paragraph {};for _ ,_bcg :=range _gcb ._eca .TxBody .P {_bfg =append (_bfg ,_bd .MakeParagraph (_bcg ));};return _bfg ;}; // Read reads a document from an io.Reader. func Read (r _cc .ReaderAt ,size int64 )(*Presentation ,error ){const _aga ="\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e:\u0052\u0065\u0061\u0064";if !_fa .GetLicenseKey ().IsLicensed ()&&!_ffdd {_df .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");_df .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 ,_ded .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");};_faa :=_bfa ();_ffeb ,_cdc :=_fa .GenRefId ("\u0070\u0072");if _cdc !=nil {_ff .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_cdc );return nil ,_cdc ;};_faa ._dcd =_ffeb ;if _fge :=_fa .Track (_faa ._dcd ,_aga );_fge !=nil {_ff .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fge );return nil ,_fge ;};_faag ,_cdc :=_ba .TempDir ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065-\u0070\u0070\u0074\u0078");if _cdc !=nil {return nil ,_cdc ;};_faa .TmpPath =_faag ;_gcfa ,_cdc :=_a .NewReader (r ,size );if _cdc !=nil {return nil ,_df .Errorf ("\u0070a\u0072s\u0069\u006e\u0067\u0020\u007a\u0069\u0070\u003a\u0020\u0025\u0073",_cdc );};_dcbe :=[]*_a .File {};_dcbe =append (_dcbe ,_gcfa .File ...);_ege :=false ;for _ ,_acgg :=range _dcbe {if _acgg .FileHeader .Name =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_ege =true ;break ;};};if _ege {_faa .CreateCustomProperties ();};_bcge :=_b .DecodeMap {};_bcge .SetOnNewRelationshipFunc (_faa .onNewRelationship );_bcge .AddTarget (_fgg .ContentTypesFilename ,_faa .ContentTypes .X (),"",0);_bcge .AddTarget (_fgg .BaseRelsFilename ,_faa .Rels .X (),"",0);if _ggg :=_bcge .Decode (_dcbe );_ggg !=nil {return nil ,_ggg ;};for _ ,_acd :=range _dcbe {if _acd ==nil {continue ;};if _cgda :=_faa .AddExtraFileFromZip (_acd );_cgda !=nil {return nil ,_cgda ;};};if _ege {_fgga :=false ;for _ ,_bdf :=range _faa .Rels .X ().Relationship {if _bdf .TargetAttr =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_fgga =true ;break ;};};if !_fgga {_faa .AddCustomRelationships ();};};return _faa ,nil ;}; // GetImageByRelID returns an ImageRef with the associated relation ID in the // document. func (_bfd *Presentation )GetImageByRelID (relID string )(_gf .ImageRef ,bool ){for _ ,_cbbbc :=range _bfd .Images {if _cbbbc .RelID ()==relID {return _cbbbc ,true ;};};return _gf .ImageRef {},false ;}; // ClearAll completely clears a placeholder. To be useable, at least one // paragraph must be added after ClearAll via AddParagraph. func (_gaf PlaceHolder )ClearAll (){_gaf ._eca .SpPr =_fcc .NewCT_ShapeProperties ();_gaf ._eca .TxBody =_fcc .NewCT_TextBody ();_gaf ._eca .TxBody .LstStyle =_fcc .NewCT_TextListStyle ();}; // Open opens and reads a document from a file (.pptx). func Open (filename string )(*Presentation ,error ){_acg ,_eec :=_ffd .Open (filename );if _eec !=nil {return nil ,_df .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_eec );};defer _acg .Close ();_dca ,_eec :=_ffd .Stat (filename );if _eec !=nil {return nil ,_df .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_eec );};_ =_dca ;return Read (_acg ,_dca .Size ());}; // 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 (_bef PlaceHolder )SetText (text string ){_bef .Clear ();_dac :=_fcc .NewEG_TextRun ();_dac .R =_fcc .NewCT_RegularTextRun ();_dac .R .T =text ;if len (_bef ._eca .TxBody .P )==0{_bef ._eca .TxBody .P =append (_bef ._eca .TxBody .P ,_fcc .NewCT_TextParagraph ());};_bef ._eca .TxBody .P [0].EG_TextRun =nil ;_bef ._eca .TxBody .P [0].EG_TextRun =append (_bef ._eca .TxBody .P [0].EG_TextRun ,_dac );}; // Index returns the placeholder index func (_cfd PlaceHolder )Index ()uint32 {if _cfd ._eca .NvSpPr .NvPr .Ph .IdxAttr ==nil {return 0;};return *_cfd ._eca .NvSpPr .NvPr .Ph .IdxAttr ;}; // SlideLayouts returns the slide layouts defined in the presentation. func (_gdcc *Presentation )SlideLayouts ()[]SlideLayout {_egfc :=[]SlideLayout {};for _ ,_fdcc :=range _gdcc ._ca {_egfc =append (_egfc ,SlideLayout {_fdcc });};return _egfc ;}; // ShowPr returns the ShowPr property. func (_bcd PresentationProperties )ShowPr ()*_cg .CT_ShowProperties {return _bcd ._aad .ShowPr };func (_fff *chart )X ()*_fe .ChartSpace {return _fff ._gff }; // SlideLayout is a layout from which slides can be created. type SlideLayout struct{_cdg *_cg .SldLayout }; // AddParagraph adds a new paragraph to a placeholder. func (_bbcb PlaceHolder )AddParagraph ()_bd .Paragraph {_cfdb :=_bd .MakeParagraph (_fcc .NewCT_TextParagraph ());_bbcb ._eca .TxBody .P =append (_bbcb ._eca .TxBody .P ,_cfdb .X ());return _cfdb ;}; // SaveToFileAsTemplate writes the Presentation out to a file as a template. func (_bbdc *Presentation )SaveToFileAsTemplate (path string )error {return _bbdc .saveToFile (path ,true );};func (_bbe *Presentation )save (_gbf _cc .Writer ,_afe bool )error {const _gbb ="\u0050\u0072\u0065\u0073en\u0074\u0061\u0074\u0069\u006f\u006e\u003a\u0070\u002e\u0053\u0061\u0076\u0065";if _debf :=_bbe ._eebd .Validate ();_debf !=nil {_ff .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",_debf );};if !_fa .GetLicenseKey ().IsLicensed ()&&!_ffdd {_df .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");_df .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 _ded .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 (_bbe ._dcd )==0{_cfdd ,_adbfg :=_fa .GenRefId ("\u0070\u0077");if _adbfg !=nil {_ff .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_adbfg );return _adbfg ;};_bbe ._dcd =_cfdd ;};if _def :=_fa .Track (_bbe ._dcd ,_gbb );_def !=nil {_ff .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_def );return _def ;};if _afe {_bbe .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");_bbe .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 {_bbe .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");_bbe .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");};_fec :=_fgg .DocTypePresentation ;_fbg :=_a .NewWriter (_gbf );defer _fbg .Close ();if _dfg :=_b .MarshalXML (_fbg ,_fgg .BaseRelsFilename ,_bbe .Rels .X ());_dfg !=nil {return _dfg ;};if _cbg :=_b .MarshalXMLByType (_fbg ,_fec ,_fgg .ExtendedPropertiesType ,_bbe .AppProperties .X ());_cbg !=nil {return _cbg ;};if _gfg :=_b .MarshalXMLByType (_fbg ,_fec ,_fgg .CorePropertiesType ,_bbe .CoreProperties .X ());_gfg !=nil {return _gfg ;};if _abd :=_b .MarshalXMLByType (_fbg ,_fec ,_fgg .PresentationPropertiesType ,_bbe ._aaee .X ());_abd !=nil {return _abd ;};if _cbcd :=_b .MarshalXMLByType (_fbg ,_fec ,_fgg .ViewPropertiesType ,_bbe ._gcd .X ());_cbcd !=nil {return _cbcd ;};if _fca :=_b .MarshalXMLByType (_fbg ,_fec ,_fgg .TableStylesType ,_bbe ._acfd .X ());_fca !=nil {return _fca ;};if _bbe .CustomProperties .X ()!=nil {if _agda :=_b .MarshalXMLByType (_fbg ,_fec ,_fgg .CustomPropertiesType ,_bbe .CustomProperties .X ());_agda !=nil {return _agda ;};};if _bbe .Thumbnail !=nil {_babb ,_fgbe :=_fbg .Create ("\u0064\u006f\u0063Pr\u006f\u0070\u0073\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c\u002e\u006a\u0070\u0065\u0067");if _fgbe !=nil {return _fgbe ;};if _bgg :=_de .Encode (_babb ,_bbe .Thumbnail ,nil );_bgg !=nil {return _bgg ;};};_daf :=_fgg .AbsoluteFilename (_fec ,_fgg .OfficeDocumentType ,0);if _ggaf :=_b .MarshalXML (_fbg ,_daf ,_bbe ._eebd );_ggaf !=nil {return _ggaf ;};if _fbcb :=_b .MarshalXML (_fbg ,_b .RelationsPathFor (_daf ),_bbe ._acf .X ());_fbcb !=nil {return _fbcb ;};for _aaa ,_edec :=range _bbe ._fba {_fdg :=_fgg .AbsoluteFilename (_fgg .DocTypePresentation ,_fgg .SlideType ,_aaa +1);_b .MarshalXML (_fbg ,_fdg ,_edec );if !_bbe ._cgfe [_aaa ].IsEmpty (){_ffb :=_b .RelationsPathFor (_fdg );_b .MarshalXML (_fbg ,_ffb ,_bbe ._cgfe [_aaa ].X ());};};for _eeeb ,_deda :=range _bbe ._gdf {_abg :=_fgg .AbsoluteFilename (_fgg .DocTypePresentation ,_fgg .SlideMasterType ,_eeeb +1);_b .MarshalXML (_fbg ,_abg ,_deda );if !_bbe ._daa [_eeeb ].IsEmpty (){_eeed :=_b .RelationsPathFor (_abg );_b .MarshalXML (_fbg ,_eeed ,_bbe ._daa [_eeeb ].X ());};};for _ecd ,_cbbb :=range _bbe ._ca {_ecea :=_fgg .AbsoluteFilename (_fgg .DocTypePresentation ,_fgg .SlideLayoutType ,_ecd +1);_b .MarshalXML (_fbg ,_ecea ,_cbbb );if !_bbe ._aca [_ecd ].IsEmpty (){_fef :=_b .RelationsPathFor (_ecea );_b .MarshalXML (_fbg ,_fef ,_bbe ._aca [_ecd ].X ());};};for _cdba ,_ffe :=range _bbe ._aag {_aec :=_fgg .AbsoluteFilename (_fgg .DocTypePresentation ,_fgg .ThemeType ,_cdba +1);_b .MarshalXML (_fbg ,_aec ,_ffe );if !_bbe ._bdb [_cdba ].IsEmpty (){_dge :=_b .RelationsPathFor (_aec );_b .MarshalXML (_fbg ,_dge ,_bbe ._bdb [_cdba ].X ());};};for _gafc ,_eea :=range _bbe ._adbf {_ebge :=_fgg .AbsoluteFilename (_fec ,_fgg .ChartType ,_gafc +1);_b .MarshalXML (_fbg ,_ebge ,_eea );};for _ecga ,_cdf :=range _bbe ._cbb {_bbff :=_fgg .AbsoluteFilename (_fec ,_fgg .HandoutMasterType ,_ecga +1);_b .MarshalXML (_fbg ,_bbff ,_cdf );};for _dfe ,_geec :=range _bbe ._aac {_eab :=_fgg .AbsoluteFilename (_fec ,_fgg .NotesMasterType ,_dfe +1);_b .MarshalXML (_fbg ,_eab ,_geec );};for _ddcf ,_fbgg :=range _bbe ._fac {_ffaa :=_fgg .AbsoluteFilename (_fec ,_fgg .CustomXMLType ,_ddcf +1);_b .MarshalXML (_fbg ,_ffaa ,_fbgg );};for _dabf ,_bed :=range _bbe .Images {if _cga :=_gf .AddImageToZip (_fbg ,_bed ,_dabf +1,_fgg .DocTypePresentation );_cga !=nil {return _cga ;};};_bbe .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_bbe .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_bbe .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_bbe .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");if _ggd :=_b .MarshalXML (_fbg ,_fgg .ContentTypesFilename ,_bbe .ContentTypes .X ());_ggd !=nil {return _ggd ;};if _adf :=_bbe .WriteExtraFiles (_fbg );_adf !=nil {return _adf ;};return nil ;}; // ExtractText returns text from a slide as a SlideText object. func (_eee *Slide )ExtractText ()*SlideText {_agf :=_ede (_eee ._gggf ,_eee ._eed .CSld .SpTree .Choice ,[]rectangle {},[]*TextItem {});_fgc .Sort (sort2d (_agf ));return &SlideText {Items :_agf };};func (_gfd sort2d )Len ()int {return len (_gfd )}; // HtmlPubPr returns the HtmlPubPr property. func (_ccf PresentationProperties )HtmlPubPr ()*_cg .CT_HtmlPublishProperties {return _ccf ._aad .HtmlPubPr ;}; // X returns the inner wrapped XML type. func (_fbb PlaceHolder )X ()*_cg .CT_Shape {return _fbb ._eca }; // AddImageToRels adds an image relationship to a slide without putting image on the slide. func (_cgfg Slide )AddImageToRels (img _gf .ImageRef )string {_fdga :=0;for _aagc ,_bafd :=range _cgfg ._gggf .Images {if _bafd ==img {_fdga =_aagc +1;break ;};};var _bfdb string ;for _bae ,_abc :=range _cgfg ._gggf .Slides (){if _abc ._eed ==_cgfg ._eed {_cfab :=_df .Sprintf ("\u002e\u002e\u002f\u006ded\u0069\u0061\u002f\u0069\u006d\u0061\u0067\u0065\u0025\u0064\u002e\u0025\u0073",_fdga ,img .Format ());_gffba :=_cgfg ._gggf ._cgfe [_bae ].AddRelationship (_cfab ,_fgg .ImageType );_bfdb =_gffba .ID ();};};return _bfdb ;}; // GetImageByRelID returns an ImageRef with the associated relation ID in the // slide. func (_deeg *Slide )GetImageByRelID (relID string )(_gf .ImageRef ,bool ){_gbe :=_deeg .getSlideRels ();if (_gbe ==_gf .Relationships {}){return _gf .ImageRef {},false ;};var _edfg string ;for _ ,_gfe :=range _gbe .X ().Relationship {if _gfe .IdAttr ==relID {_edfg =_gfe .TargetAttr ;break ;};};for _ ,_gddd :=range _deeg ._gggf .Images {if _gddd .Target ()==_edfg {return _gddd ,true ;};};return _gf .ImageRef {},false ;}; // SetTextAnchor controls the text anchoring func (_fbaf TextBox )SetTextAnchor (a _fcc .ST_TextAnchoringType ){_fbaf ._eef .TxBody .BodyPr =_fcc .NewCT_TextBodyProperties ();_fbaf ._eef .TxBody .BodyPr .AnchorAttr =a ;}; // Remove removes a placeholder from a presentation. func (_cgde PlaceHolder )Remove ()error {for _gbd ,_edc :=range _cgde ._ecg .CSld .SpTree .Choice {for _ ,_bge :=range _edc .Sp {if _bge ==_cgde ._eca {copy (_cgde ._ecg .CSld .SpTree .Choice [_gbd :],_cgde ._ecg .CSld .SpTree .Choice [_gbd +1:]);_cgde ._ecg .CSld .SpTree .Choice =_cgde ._ecg .CSld .SpTree .Choice [0:len (_cgde ._ecg .CSld .SpTree .Choice )-1];return nil ;};};};return _ded .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");};