unioffice/presentation/presentation.go

364 lines
78 KiB
Go
Raw Normal View History

2017-08-28 20:56:18 -05:00
//
2020-08-23 14:15:53 +00:00
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
2023-06-10 07:12:37 +00:00
package presentation ;import (_ebe "archive/zip";_gb "bytes";_ce "encoding/xml";_fe "errors";_dbe "fmt";_ca "github.com/unidoc/unioffice";_cea "github.com/unidoc/unioffice/common";_ef "github.com/unidoc/unioffice/common/logger";_dd "github.com/unidoc/unioffice/common/tempstorage";_cdd "github.com/unidoc/unioffice/drawing";_cc "github.com/unidoc/unioffice/internal/license";_a "github.com/unidoc/unioffice/measurement";_bd "github.com/unidoc/unioffice/schema/soo/dml";_b "github.com/unidoc/unioffice/schema/soo/dml/chart";_eb "github.com/unidoc/unioffice/schema/soo/ofc/sharedTypes";_cd "github.com/unidoc/unioffice/schema/soo/pkg/relationships";_ad "github.com/unidoc/unioffice/schema/soo/pml";_e "github.com/unidoc/unioffice/zippkg";_gg "image";_db "image/jpeg";_bc "io";_gd "math";_ebc "os";_g "path";_ade "sort";_d "strconv";_f "strings";);
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// Close closes the presentation, removing any temporary files that might have been
// created when opening a document.
func (_eaa *Presentation )Close ()error {if _eaa .TmpPath !=""{return _dd .RemoveAll (_eaa .TmpPath );};return nil ;};
2021-05-31 16:22:30 +00:00
2023-06-10 07:12:37 +00:00
// AddParagraph adds a new paragraph to a placeholder.
func (_dbed PlaceHolder )AddParagraph ()_cdd .Paragraph {_eda :=_cdd .MakeParagraph (_bd .NewCT_TextParagraph ());_dbed ._eefg .TxBody .P =append (_dbed ._eefg .TxBody .P ,_eda .X ());return _eda ;};
2021-05-31 16:22:30 +00:00
2023-06-10 07:12:37 +00:00
// 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 };};
2022-01-15 21:17:38 +00:00
2023-06-10 07:12:37 +00:00
// SetOffsetY sets vertical offset of text box in distance units (see measurement package).
func (_egg TextBox )SetOffsetY (offY float64 ){_cda :=_egg .getOff ();_abag :=_a .ToEMU (offY );_cda .YAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_abag };};
// SlideLayouts returns a slice of all layouts in SlideMaster.
func (_deea SlideMaster )SlideLayouts ()[]SlideLayout {_fdfb :=map[string ]int {};_dfe :=[]SlideLayout {};for _ ,_ebg :=range _deea ._ceab .Relationships (){_cada :=_f .Replace (_ebg .Target (),".\u002e\u002f\u0073\u006c\u0069\u0064e\u004c\u0061\u0079\u006f\u0075\u0074\u0073\u002f\u0073l\u0069\u0064\u0065L\u0061y\u006f\u0075\u0074","",-1);_cada =_f .Replace (_cada ,"\u002e\u0078\u006d\u006c","",-1);if _cdea ,_dgb :=_d .ParseInt (_cada ,10,32);_dgb ==nil {_fdfb [_ebg .ID ()]=int (_cdea );};};for _ ,_def :=range _deea ._faecc .SldLayoutIdLst .SldLayoutId {if _ebdg ,_bffe :=_fdfb [_def .RIdAttr ];_bffe {_cadf :=_deea ._gcgc ._gac [_ebdg -1];_dfe =append (_dfe ,SlideLayout {_cadf });};};return _dfe ;};
2022-09-02 11:46:53 +00:00
2023-05-26 09:49:04 +00:00
// AddTable adds an empty table to a slide.
2023-06-10 07:12:37 +00:00
func (_adge Slide )AddTable ()*_cea .Table {_fcge :=_ad .NewCT_GroupShapeChoice ();_adge ._bda .CSld .SpTree .Choice =append (_adge ._bda .CSld .SpTree .Choice ,_fcge );_fddaa :=_ad .NewCT_GraphicalObjectFrame ();_fcge .GraphicFrame =append (_fcge .GraphicFrame ,_fddaa );_fddaa .Xfrm .Off =_bd .NewCT_Point2D ();_cac :=int64 (1);_fddaa .Xfrm .Off .XAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_cac };_fddaa .Xfrm .Off .YAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_cac };_dae :=_fddaa .Graphic .CT_GraphicalObject .GraphicData ;_dae .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";_badf :=_cea .NewTableWithXfrm (_fddaa .Xfrm );_dae .Any =append (_dae .Any ,_badf .X ());return _badf ;};
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// SaveToFileAsTemplate writes the Presentation out to a file as a template.
func (_beag *Presentation )SaveToFileAsTemplate (path string )error {return _beag .saveToFile (path ,true );};
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// NewViewProperties constructs a new ViewProperties.
func NewViewProperties ()ViewProperties {return ViewProperties {_ecfe :_ad .NewViewPr ()}};
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// AddImage adds an image textbox to a slide.
func (_aeb Slide )AddImage (img _cea .ImageRef )Image {_ffee :=_ad .NewCT_GroupShapeChoice ();_aeb ._bda .CSld .SpTree .Choice =append (_aeb ._bda .CSld .SpTree .Choice ,_ffee );_ebd :=_ad .NewCT_Picture ();_ffee .Pic =append (_ffee .Pic ,_ebd );_ebd .NvPicPr .CNvPicPr =_bd .NewCT_NonVisualPictureProperties ();_ebd .NvPicPr .CNvPicPr .PicLocks =_bd .NewCT_PictureLocking ();_ebd .NvPicPr .CNvPicPr .PicLocks .NoChangeAspectAttr =_ca .Bool (true );_ebd .BlipFill =_bd .NewCT_BlipFillProperties ();_ebd .BlipFill .Blip =_bd .NewCT_Blip ();_cca :=_aeb .AddImageToRels (img );_ebd .BlipFill .Blip .EmbedAttr =_ca .String (_cca );_ebd .BlipFill .Stretch =_bd .NewCT_StretchInfoProperties ();_ebd .BlipFill .Stretch .FillRect =_bd .NewCT_RelativeRect ();_ebd .SpPr =_bd .NewCT_ShapeProperties ();_ebd .SpPr .PrstGeom =_bd .NewCT_PresetGeometry2D ();_ebd .SpPr .PrstGeom .PrstAttr =_bd .ST_ShapeTypeRect ;_ffbc :=Image {_ebd };_dcdd :=img .Size ();_ffbc .Properties ().SetWidth (_a .Distance (_dcdd .X )*_a .Pixel72 );_ffbc .Properties ().SetHeight (_a .Distance (_dcdd .Y )*_a .Pixel72 );_ffbc .Properties ().SetPosition (0,0);return _ffbc ;};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// GetTextBoxes returns a list of all text boxes from a slide.
func (_bebg Slide )GetTextBoxes ()[]*TextBox {_bge :=[]*TextBox {};_edfe :=_bebg ._bda .CSld .SpTree .Choice ;for _ ,_eagg :=range _edfe {for _ ,_cbac :=range _eagg .Sp {if _cbac .NvSpPr .CNvSpPr .TxBoxAttr !=nil &&*_cbac .NvSpPr .CNvSpPr .TxBoxAttr {_bge =append (_bge ,&TextBox {_cbac });};};};return _bge ;};
2023-03-01 18:42:44 +00:00
2023-06-10 07:12:37 +00:00
// Type returns the type of the slide layout.
func (_cacb SlideLayout )Type ()_ad .ST_SlideLayoutType {return _cacb ._bcfg .TypeAttr };func (_dcc *Presentation )onNewRelationship (_eefd *_e .DecodeMap ,_cggc ,_cff string ,_dgea []*_ebe .File ,_gge *_cd .Relationship ,_geffe _e .Target )error {_ecgc :=_ca .DocTypePresentation ;switch _cff {case _ca .OfficeDocumentType :_dcc ._gegf =_ad .NewPresentation ();_eefd .AddTarget (_cggc ,_dcc ._gegf ,_cff ,0);_eefd .AddTarget (_e .RelationsPathFor (_cggc ),_dcc ._bcgf .X (),_cff ,0);_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,0);case _ca .CorePropertiesType :_eefd .AddTarget (_cggc ,_dcc .CoreProperties .X (),_cff ,0);_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,0);case _ca .CustomPropertiesType :_eefd .AddTarget (_cggc ,_dcc .CustomProperties .X (),_cff ,0);_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,0);case _ca .PresentationPropertiesType :_eefd .AddTarget (_cggc ,_dcc ._fcb .X (),_cff ,0);_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,0);case _ca .ViewPropertiesType :_eefd .AddTarget (_cggc ,_dcc ._bgdc .X (),_cff ,0);_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,0);case _ca .TableStylesType :_eefd .AddTarget (_cggc ,_dcc ._abc .X (),_cff ,0);_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,0);case _ca .HyperLinkType :_bfce :=_bd .NewCT_Hyperlink ();_fedc :=uint32 (len (_dcc ._fedb ));_eefd .AddTarget (_cggc ,_bfce ,_cff ,_fedc );_dcc ._fedb =append (_dcc ._fedb ,_bfce );case _ca .CustomXMLType :_cfcg :=&_ca .XSDAny {};_adac :=uint32 (len (_dcc ._baeg ));_eefd .AddTarget (_cggc ,_cfcg ,_cff ,_adac );_dcc ._baeg =append (_dcc ._baeg ,_cfcg );_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,len (_dcc ._baeg ));case _ca .ChartType :_cfaf :=chart {_ea :_b .NewChartSpace ()};_dffg :=uint32 (len (_dcc ._cedaa ));_eefd .AddTarget (_cggc ,_cfaf ._ea ,_cff ,_dffg );_dcc ._cedaa =append (_dcc ._cedaa ,&_cfaf );_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,len (_dcc ._cedaa ));_cfaf ._ac =_gge .TargetAttr ;case _ca .HandoutMasterType :_fgfg :=_ad .NewHandoutMaster ();_acfe :=uint32 (len (_dcc ._cde ));_eefd .AddTarget (_cggc ,_fgfg ,_cff ,_acfe );_dcc ._cde =append (_dcc ._cde ,_fgfg );_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,len (_dcc ._cde ));case _ca .NotesMasterType :_dec :=_ad .NewNotesMaster ();_gbdc :=uint32 (len (_dcc ._bee ));_eefd .AddTarget (_cggc ,_dec ,_cff ,_gbdc );_dcc ._bee =append (_dcc ._bee ,_dec );_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,len (_dcc ._bee ));case _ca .ExtendedPropertiesType :_eefd .AddTarget (_cggc ,_dcc .AppProperties .X (),_cff ,0);_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,0);case _ca .SlideType :_bcf :=_ad .NewSld ();_dcc ._cfd =append (_dcc ._cfd ,_bcf );_eefd .AddTarget (_cggc ,_bcf ,_cff ,uint32 (len (_dcc ._cfd )));_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,len (_dcc ._cfd ));_dbeg :=_cea .NewRelationships ();_eefd .AddTarget (_e .RelationsPathFor (_cggc ),_dbeg .X (),_cff ,0);_dcc ._fabd =append (_dcc ._fabd ,_dbeg );case _ca .SlideMasterType :_fccb :=_ad .NewSldMaster ();if !_eefd .AddTarget (_cggc ,_fccb ,_cff ,uint32 (len (_dcc ._bgfb )+1)){return nil ;};_dcc ._bgfb =append (_dcc ._bgfb ,_fccb );_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,len (_dcc ._bgfb ));_fecf :=_cea .NewRelationships ();_eefd .AddTarget (_e .RelationsPathFor (_cggc ),_fecf .X (),_cff ,0);_dcc ._aadb =append (_dcc ._aadb ,_fecf );case _ca .SlideLayoutType :_bece :=_ad .NewSldLayout ();if !_eefd .AddTarget (_cggc ,_bece ,_cff ,uint32 (len (_dcc ._gac )+1)){return nil ;};_dcc ._gac =append (_dcc ._gac ,_bece );_gge .TargetAttr =_ca .RelativeFilename (_ecgc ,_geffe .Typ ,_cff ,len (_dcc ._gac ));_dfdd :=_cea .NewRelationships ();_eefd .AddTarget (_e .RelationsPathFor (_cggc ),_dfdd .X (),_cff ,0);_dcc ._bab =append (_dcc ._bab ,_dfdd );case _ca .ThumbnailType :for _efaa ,_dffd :=range _dgea {if _dffd ==nil {continue ;};if _dffd .Name
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// document.
func (_gad *Presentation )GetImageByRelID (relID string )(_cea .ImageRef ,bool ){for _ ,_fbf :=range _gad .Images {if _fbf .RelID ()==relID {return _fbf ,true ;};};return _cea .ImageRef {},false ;};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SaveToFile writes the Presentation out to a file.
func (_eaed *Presentation )SaveToFile (path string )error {return _eaed .saveToFile (path ,false )};func (_eg *chart )Target ()string {return _eg ._ac };
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// WebPr returns the WebPr property.
func (_cgf PresentationProperties )WebPr ()*_ad .CT_WebProperties {return _cgf ._dfge .WebPr };
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func (_gecb SlideLayout )X ()*_ad .SldLayout {return _gecb ._bcfg };
2022-04-09 14:27:46 +00:00
2023-05-26 09:49:04 +00:00
// Read reads a document from an io.Reader.
2023-06-10 07:12:37 +00:00
func Read (r _bc .ReaderAt ,size int64 )(*Presentation ,error ){const _cba ="\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0061\u0074\u0069\u006f\u006e:\u0052\u0065\u0061\u0064";if !_cc .GetLicenseKey ().IsLicensed ()&&!_bbec {_dbe .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");_dbe .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 ,_fe .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");};_acab :=_cbb ();_aaa ,_bgdda :=_cc .GenRefId ("\u0070\u0072");if _bgdda !=nil {_ef .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_bgdda );return nil ,_bgdda ;};_acab ._gcab =_aaa ;if _fcg :=_cc .Track (_acab ._gcab ,_cba );_fcg !=nil {_ef .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_fcg );return nil ,_fcg ;};_dbba ,_bgdda :=_dd .TempDir ("\u0075\u006e\u0069\u006f\u0066\u0066\u0069\u0063\u0065-\u0070\u0070\u0074\u0078");if _bgdda !=nil {return nil ,_bgdda ;};_acab .TmpPath =_dbba ;_dgcda ,_bgdda :=_ebe .NewReader (r ,size );if _bgdda !=nil {return nil ,_dbe .Errorf ("\u0070a\u0072s\u0069\u006e\u0067\u0020\u007a\u0069\u0070\u003a\u0020\u0025\u0073",_bgdda );};_agc :=[]*_ebe .File {};_agc =append (_agc ,_dgcda .File ...);_efb :=false ;for _ ,_gbed :=range _agc {if _gbed .FileHeader .Name =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_efb =true ;break ;};};if _efb {_acab .CreateCustomProperties ();};_ffg :=_e .DecodeMap {};_ffg .SetOnNewRelationshipFunc (_acab .onNewRelationship );_ffg .AddTarget (_ca .ContentTypesFilename ,_acab .ContentTypes .X (),"",0);_ffg .AddTarget (_ca .BaseRelsFilename ,_acab .Rels .X (),"",0);if _cdg :=_ffg .Decode (_agc );_cdg !=nil {return nil ,_cdg ;};for _ ,_aga :=range _agc {if _aga ==nil {continue ;};if _gba :=_acab .AddExtraFileFromZip (_aga );_gba !=nil {return nil ,_gba ;};};if _efb {_fag :=false ;for _ ,_gfgce :=range _acab .Rels .X ().Relationship {if _gfgce .TargetAttr =="\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c"{_fag =true ;break ;};};if !_fag {_acab .AddCustomRelationships ();};};return _acab ,nil ;};
2023-05-26 09:49:04 +00:00
2023-06-10 07:12:37 +00:00
// AddParagraph adds a paragraph to the text box
func (_gcabe TextBox )AddParagraph ()_cdd .Paragraph {_gff :=_bd .NewCT_TextParagraph ();_gcabe ._cgbb .TxBody .P =append (_gcabe ._cgbb .TxBody .P ,_gff );return _cdd .MakeParagraph (_gff );};type sort2d []*TextItem ;func (_ddb *chart )RelId ()string {return _ddb ._cdf };func (_aadge *Slide )getSlideRels ()_cea .Relationships {_bagg :=_aadge ._dddg ;for _dcg ,_gdc :=range _bagg .Slides (){if *_aadge ._bda ==*_gdc ._bda {return _bagg ._fabd [len (_bagg ._fabd )-_dcg -1];};};return _cea .Relationships {};};
2023-05-26 09:49:04 +00:00
2023-06-10 07:12:37 +00:00
// OpenTemplate opens a template file.
func OpenTemplate (fn string )(*Presentation ,error ){_cgb ,_eefa :=Open (fn );if _eefa !=nil {return nil ,_eefa ;};return _cgb ,nil ;};
2023-05-26 09:49:04 +00:00
2023-06-10 07:12:37 +00:00
// Height returns slide screen size height in EMU units.
func (_dde *SlideScreenSize )Height ()int32 {return _dde [1]};
2022-09-02 11:46:53 +00:00
2023-06-10 07:12:37 +00:00
// SetText sets the text of a placeholder for the initial paragraph. This is a
// shortcut method that is useful for things like titles which only contain a
// single paragraph.
func (_feg PlaceHolder )SetText (text string ){_feg .Clear ();_ega :=_bd .NewEG_TextRun ();_ega .R =_bd .NewCT_RegularTextRun ();_ega .R .T =text ;if len (_feg ._eefg .TxBody .P )==0{_feg ._eefg .TxBody .P =append (_feg ._eefg .TxBody .P ,_bd .NewCT_TextParagraph ());};_feg ._eefg .TxBody .P [0].EG_TextRun =nil ;_feg ._eefg .TxBody .P [0].EG_TextRun =append (_feg ._eefg .TxBody .P [0].EG_TextRun ,_ega );};
2022-02-25 19:20:45 +00:00
2023-05-26 09:49:04 +00:00
// SlideText is an array of extracted text items which has some methods for representing extracted text from a slide.
type SlideText struct{Items []*TextItem ;};
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// NewPresentationProperties constructs a new PresentationProperties.
func NewPresentationProperties ()PresentationProperties {return PresentationProperties {_dfge :_ad .NewPresentationPr ()};};func _fed (_cf *Presentation ,_fa []*_ad .CT_GroupShapeChoice ,_bdd []rectangle ,_fec []*TextItem )[]*TextItem {for _ ,_aee :=range _fa {_ec :=append ([]rectangle {},_bdd ...);for _ ,_eae :=range _aee .Sp {_fec =append (_fec ,_bb (_cf ,_eae ,nil ,nil ,_eae .SpPr .Xfrm ,0,_bdd ,_eae .TxBody .P )...);};for _ ,_fae :=range _aee .GraphicFrame {if _fae !=nil &&_fae .Graphic !=nil &&_fae .Graphic .GraphicData !=nil {_fd :=_fae .Xfrm ;for _ ,_bg :=range _fae .Graphic .GraphicData .Any {if _cg ,_bgf :=_bg .(*_bd .Tbl );_bgf {_bcc :=&_cg .CT_Table ;_ddc :=0;for _dba ,_bgd :=range _cg .Tr {for _eef ,_aa :=range _bgd .Tc {_ed :=&TableInfo {Table :_bcc ,Row :_bgd ,Cell :_aa ,RowIndex :_dba ,ColIndex :_eef };_fec =append (_fec ,_bb (_cf ,nil ,_fae ,_ed ,_fd ,_ddc ,_bdd ,_aa .TxBody .P )...);_ddc ++;};};};};};};for _ ,_ged :=range _aee .GrpSp {if _ged .GrpSpPr !=nil {_bff :=_ged .GrpSpPr .Xfrm ;var _cb ,_ff int64 ;if _bff .Off !=nil {_aad ,_fdd :=_bff .Off .XAttr .ST_CoordinateUnqualified ,_bff .Off .YAttr .ST_CoordinateUnqualified ;if _aad !=nil &&_fdd !=nil {if _cad :=_bff .Ext ;_cad !=nil {_cb ,_ff =_cad .CxAttr ,_cad .CyAttr ;};_ec =append (_ec ,rectangle {_efe :*_aad ,_ee :*_fdd ,_af :*_aad +_cb ,_ab :*_fdd +_ff });};};};_fec =_fed (_cf ,_ged .Choice ,_ec ,_fec );};};return _fec ;};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SlideMasters returns the slide masters defined in the presentation.
func (_gega *Presentation )SlideMasters ()[]SlideMaster {_cgde :=[]SlideMaster {};for _cfgb ,_bec :=range _gega ._bgfb {_cgde =append (_cgde ,SlideMaster {_gega ,_gega ._aadb [_cfgb ],_bec });};return _cgde ;};
2022-01-15 21:17:38 +00:00
2023-06-10 07:12:37 +00:00
// PresentationText is an array of extracted text items which has some methods for representing extracted text.
type PresentationText struct{Slides []*SlideText ;};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SetSize sets the slide size, take argument of SlideScreenSize.
func (_acabf *SlideSize )SetSize (sz SlideScreenSize ){_acabf ._eed .CxAttr =sz [0];_acabf ._eed .CyAttr =sz [1];};
2020-11-09 01:00:18 +00:00
2023-06-10 07:12:37 +00:00
// PrnPr returns the PrnPr property.
func (_ccg PresentationProperties )PrnPr ()*_ad .CT_PrintProperties {return _ccg ._dfge .PrnPr };
2021-03-16 20:51:18 +00:00
2023-06-10 07:12:37 +00:00
// Themes returns an array of presentation themes.
func (_dee *Presentation )Themes ()[]*_bd .Theme {return _dee ._bfc };
2023-05-26 09:49:04 +00:00
2023-06-10 07:12:37 +00:00
// AddSlideWithLayout adds a new slide with content copied from a layout. Normally you should
// use AddDefaultSlideWithLayout as it will do some post processing similar to PowerPoint to
// clear place holder text, etc.
func (_fga *Presentation )AddSlideWithLayout (l SlideLayout )(Slide ,error ){_edd :=_ad .NewCT_SlideIdListEntry ();_edd .IdAttr =256;for _ ,_fgb :=range _fga ._gegf .SldIdLst .SldId {if _fgb .IdAttr >=_edd .IdAttr {_edd .IdAttr =_fgb .IdAttr +1;};};_fga ._gegf .SldIdLst .SldId =append (_fga ._gegf .SldIdLst .SldId ,_edd );_faec :=_ad .NewSld ();_cga :=_gb .Buffer {};_dce :=_ce .NewEncoder (&_cga );_ffb :=_ce .StartElement {Name :_ce .Name {Local :"\u0073\u006c\u0069d\u0065"}};_ffb .Attr =append (_ffb .Attr ,_ce .Attr {Name :_ce .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"});_ffb .Attr =append (_ffb .Attr ,_ce .Attr {Name :_ce .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"});_ffb .Attr =append (_ffb .Attr ,_ce .Attr {Name :_ce .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"});_ffb .Attr =append (_ffb .Attr ,_ce .Attr {Name :_ce .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"});_ffb .Attr =append (_ffb .Attr ,_ce .Attr {Name :_ce .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"});_ffb .Attr =append (_ffb .Attr ,_ce .Attr {Name :_ce .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 _geff :=l ._bcfg .CSld .MarshalXML (_dce ,_ffb );_geff !=nil {return Slide {},_geff ;};_dce .Flush ();_gcd :=_ce .NewDecoder (&_cga );_faec .CSld =_ad .NewCT_CommonSlideData ();if _edab :=_gcd .Decode (_faec .CSld );_edab !=nil {return Slide {},_edab ;};_faec .CSld .NameAttr =nil ;_faec .CSld .SpTree .Choice =_bfed (_faec .CSld .SpTree .Choice );_fga ._cfd =append (_fga ._cfd ,_faec );_egb :=_fga ._bcgf .AddAutoRelationship (_ca .DocTypePresentation ,_ca .OfficeDocumentType ,len (_fga ._cfd ),_ca .SlideType );_edd .RIdAttr =_egb .ID ();_aab :=_ca .AbsoluteFilename (_ca .DocTypePresentation ,_ca .SlideType ,len (_fga ._cfd ));_fga .ContentTypes .AddOverride (_aab ,_ca .SlideContentType );_gbfa :=_cea .NewRelationships ();_fga ._fabd =append (_fga ._fabd ,_gbfa );_bgfba :=len (_fga ._fabd )-1;for _gacd ,_gbff :=range _fga ._gac {if _gbff ==l .X (){_afa :=_fga ._bab [_gacd ];for _ ,_dfgg :=range _afa .X ().Relationship {if _dfgg .TypeAttr !=_ca .SlideMasterType {_fga ._fabd [_bgfba ].X ().Relationship =append (_fga ._fabd [_bgfba ].X (
2022-02-25 19:20:45 +00:00
2023-06-10 07:12:37 +00:00
// SetTextAnchor controls the text anchoring
func (_bgac TextBox )SetTextAnchor (a _bd .ST_TextAnchoringType ){_bgac ._cgbb .TxBody .BodyPr =_bd .NewCT_TextBodyProperties ();_bgac ._cgbb .TxBody .BodyPr .AnchorAttr =a ;};
2022-02-25 19:20:45 +00:00
2023-06-10 07:12:37 +00:00
// GetPlaceholder returns a placeholder given its type. If there are multiplace
// placeholders of the same type, this method returns the first one. You must use the
// PlaceHolders() method to access the others.
func (_aef Slide )GetPlaceholder (t _ad .ST_PlaceholderType )(PlaceHolder ,error ){for _ ,_cffb :=range _aef ._bda .CSld .SpTree .Choice {for _ ,_fac :=range _cffb .Sp {if _fac .NvSpPr !=nil &&_fac .NvSpPr .NvPr !=nil &&_fac .NvSpPr .NvPr .Ph !=nil {if _fac .NvSpPr .NvPr .Ph .TypeAttr ==t {return PlaceHolder {_fac ,_aef ._bda },nil ;};};};};return PlaceHolder {},_fe .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");};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// GetImageByRelID returns an ImageRef with the associated relation ID in the
// slide.
func (_cecg *Slide )GetImageByRelID (relID string )(_cea .ImageRef ,bool ){_fbdf :=_cecg .getSlideRels ();if (_fbdf ==_cea .Relationships {}){return _cea .ImageRef {},false ;};var _eacb string ;for _ ,_dgdg :=range _fbdf .X ().Relationship {if _dgdg .IdAttr ==relID {_eacb =_dgdg .TargetAttr ;break ;};};for _ ,_edaf :=range _cecg ._dddg .Images {if _edaf .Target ()==_eacb {return _edaf ,true ;};};return _cea .ImageRef {},false ;};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// GridSpacing returns the GridSpacing property.
func (_gaad ViewProperties )GridSpacing ()*_bd .CT_PositiveSize2D {return _gaad ._ecfe .GridSpacing };var (SlideScreenSize16x9 =SlideScreenSize {12192000,6858000};SlideScreenSize4x3 =SlideScreenSize {9144000,6858000};SlideScreenSizeA4 =SlideScreenSize {9906000,6858000};);
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// Paragraphs returns the paragraphs defined in the placeholder.
func (_agd PlaceHolder )Paragraphs ()[]_cdd .Paragraph {_bae :=[]_cdd .Paragraph {};for _ ,_baeb :=range _agd ._eefg .TxBody .P {_bae =append (_bae ,_cdd .MakeParagraph (_baeb ));};return _bae ;};
2021-08-23 20:44:48 +00:00
2023-06-10 07:12:37 +00:00
// NotesTextViewPr returns the NotesTextViewPr property.
func (_aeag ViewProperties )NotesTextViewPr ()*_ad .CT_NotesTextViewProperties {return _aeag ._ecfe .NotesTextViewPr ;};
2022-06-27 19:44:23 +00:00
2023-06-10 07:12:37 +00:00
// X returns TextBox's underlying *pml.CT_Shape.
func (_bddc TextBox )X ()*_ad .CT_Shape {return _bddc ._cgbb };
2022-06-27 19:44:23 +00:00
2023-06-10 07:12:37 +00:00
// AddSlide adds a new slide to the presentation.
func (_dgg *Presentation )AddSlide ()Slide {_ddbb :=_ad .NewCT_SlideIdListEntry ();_ddbb .IdAttr =_dgg .nextSlideID ();_dgg ._gegf .SldIdLst .SldId =append (_dgg ._gegf .SldIdLst .SldId ,_ddbb );_aadc :=_ad .NewSld ();_aadc .CSld .SpTree .NvGrpSpPr .CNvPr .IdAttr =1;_aadc .CSld .SpTree .GrpSpPr .Xfrm =_bd .NewCT_GroupTransform2D ();_aadc .CSld .SpTree .GrpSpPr .Xfrm .Off =_bd .NewCT_Point2D ();_aadc .CSld .SpTree .GrpSpPr .Xfrm .Off .XAttr .ST_CoordinateUnqualified =_ca .Int64 (0);_aadc .CSld .SpTree .GrpSpPr .Xfrm .Off .YAttr .ST_CoordinateUnqualified =_ca .Int64 (0);_aadc .CSld .SpTree .GrpSpPr .Xfrm .Ext =_bd .NewCT_PositiveSize2D ();_aadc .CSld .SpTree .GrpSpPr .Xfrm .Ext .CxAttr =int64 (0*_a .Point );_aadc .CSld .SpTree .GrpSpPr .Xfrm .Ext .CyAttr =int64 (0*_a .Point );_aadc .CSld .SpTree .GrpSpPr .Xfrm .ChOff =_aadc .CSld .SpTree .GrpSpPr .Xfrm .Off ;_aadc .CSld .SpTree .GrpSpPr .Xfrm .ChExt =_aadc .CSld .SpTree .GrpSpPr .Xfrm .Ext ;_dgg ._cfd =append (_dgg ._cfd ,_aadc );_aae :=_dgg ._bcgf .AddAutoRelationship (_ca .DocTypePresentation ,_ca .OfficeDocumentType ,len (_dgg ._cfd ),_ca .SlideType );_ddbb .RIdAttr =_aae .ID ();_fgf :=_ca .AbsoluteFilename (_ca .DocTypePresentation ,_ca .SlideType ,len (_dgg ._cfd ));_dgg .ContentTypes .AddOverride (_fgf ,_ca .SlideContentType );_cfa :=_cea .NewRelationships ();_dgg ._fabd =append (_dgg ._fabd ,_cfa );_cfa .AddAutoRelationship (_ca .DocTypePresentation ,_ca .SlideType ,len (_dgg ._gac ),_ca .SlideLayoutType );return Slide {_ddbb ,_aadc ,_dgg ,nil };};
2021-08-23 20:44:48 +00:00
2023-06-10 07:12:37 +00:00
// Presentation returns a slide's presentation.
func (_dcce Slide )Presentation ()*Presentation {return _dcce ._dddg };
2021-11-10 11:45:21 +00:00
2023-06-10 07:12:37 +00:00
// ExtractText returns text from a presentation as a PresentationText object.
func (_be *Presentation )ExtractText ()*PresentationText {_fg :=[]*SlideText {};for _ ,_ge :=range _be .Slides (){_bef :=_ge .ExtractText ();if _bef !=nil {_fg =append (_fg ,_bef );};};return &PresentationText {Slides :_fg };};
2021-08-23 20:44:48 +00:00
2023-06-10 07:12:37 +00:00
// ShowCommentsAttr returns the WebPr property.
func (_fddf ViewProperties )ShowCommentsAttr ()*bool {return _fddf ._ecfe .ShowCommentsAttr };
2020-12-17 22:07:08 +00:00
2023-06-10 07:12:37 +00:00
// New initializes and reurns a new presentation
func New ()*Presentation {_cbf :=_cbb ();_cbf .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");_cbf .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");_cbf .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");_cbf .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");_cbf .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");_cbf .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");_cbf .Rels .AddRelationship ("\u0070\u0070\u0074\u002fta\u0062\u006c\u0065\u0053\u0074\u0079\u006c\u0065\u0073\u002e\u0078\u006d\u006c","\u0068\u0074\u0074\u0070\u003a\u002f\u002fs\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078\u006d\u006cf\u006fr\u006d\u0061\u0074\u0073\u002e\u006fr\u0067\u002f\u006f\u0066\u0066\u0069\u0063e\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0032\u0030\u0030\u0036\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073h\u0069\u0070\u0073\u002f\u0074\u006
2021-06-16 07:10:52 +00:00
2023-06-10 07:12:37 +00:00
// SlideMaster is the slide master for a presentation.
type SlideMaster struct{_gcgc *Presentation ;_ceab _cea .Relationships ;_faecc *_ad .SldMaster ;};
2021-01-04 16:11:39 +00:00
2023-05-26 09:49:04 +00:00
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
2023-06-10 07:12:37 +00:00
func (_eee *Presentation )GetColorBySchemeColor (schClr _bd .ST_SchemeColorVal )*_bd .CT_Color {if len (_eee ._bgfb )==0||len (_eee ._bfc )==0{return nil ;};var _gade _bd .ST_ColorSchemeIndex ;_dbb :=_eee ._bgfb [0];_cfba :=_dbb .ClrMap ;switch schClr .String (){case "\u0062\u0067\u0031":_gade =_cfba .Bg1Attr ;case "\u0062\u0067\u0032":_gade =_cfba .Bg2Attr ;case "\u0074\u0078\u0031":_gade =_cfba .Tx1Attr ;case "\u0074\u0078\u0032":_gade =_cfba .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_gade =_cfba .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_gade =_cfba .Accent2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_gade =_cfba .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_gade =_cfba .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_gade =_cfba .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_gade =_cfba .Accent6Attr ;case "\u0068\u006c\u0069n\u006b":_gade =_cfba .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_gade =_cfba .FolHlinkAttr ;case "\u0064\u006b\u0031":_gade =_bd .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_gade =_bd .ST_ColorSchemeIndexDk2 ;case "\u006c\u0074\u0031":_gade =_bd .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_gade =_bd .ST_ColorSchemeIndexLt2 ;default:_gade =_bd .ST_ColorSchemeIndexUnset ;};_cede :=_eee ._bfc [0];_abb :=_cede .ThemeElements ;if _abb ==nil {return nil ;};var _dgd *_bd .CT_Color ;_gdf :=_abb .ClrScheme ;switch _gade .String (){case "\u0064\u006b\u0031":_dgd =_gdf .Dk1 ;case "\u0064\u006b\u0032":_dgd =_gdf .Dk2 ;case "\u006c\u0074\u0031":_dgd =_gdf .Lt1 ;case "\u006c\u0074\u0032":_dgd =_gdf .Lt2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_dgd =_gdf .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_dgd =_gdf .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_dgd =_gdf .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_dgd =_gdf .Accent4 ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_dgd =_gdf .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_dgd =_gdf .Accent6 ;case "\u0068\u006c\u0069n\u006b":_dgd =_gdf .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_dgd =_gdf .FolHlink ;default:return nil ;};return _dgd ;};func (_bag sort2d )Swap (i ,j int ){_bag [i ],_bag [j ]=_bag [j ],_bag [i ]};
2021-01-04 16:11:39 +00:00
2023-06-10 07:12:37 +00:00
// GetTableStyleById returns *dml.CT_TableStyle by its style id.
func (_gfb *Presentation )GetTableStyleById (id string )*_bd .CT_TableStyle {_agea :=_gfb ._abc .TblStyle ();for _ ,_ggcg :=range _agea {if _ggcg .StyleIdAttr ==id {return _ggcg ;};};return nil ;};func (_gc *chart )X ()*_b .ChartSpace {return _gc ._ea };func (_fca *Presentation )Validate ()error {if _cgac :=_fca ._gegf .Validate ();_cgac !=nil {return _cgac ;};for _cgge ,_edac :=range _fca .Slides (){if _fdc :=_edac .ValidateWithPath (_dbe .Sprintf ("\u0053l\u0069\u0064\u0065\u005b\u0025\u0064]",_cgge ));_fdc !=nil {return _fdc ;};};for _cdc ,_cag :=range _fca ._bgfb {if _geeb :=_cag .ValidateWithPath (_dbe .Sprintf ("\u0053l\u0069d\u0065\u004d\u0061\u0073\u0074\u0065\u0072\u005b\u0025\u0064\u005d",_cdc ));_geeb !=nil {return _geeb ;};};for _acaf ,_dfdb :=range _fca ._gac {if _aadbg :=_dfdb .ValidateWithPath (_dbe .Sprintf ("\u0053l\u0069d\u0065\u004c\u0061\u0079\u006f\u0075\u0074\u005b\u0025\u0064\u005d",_acaf ));_aadbg !=nil {return _aadbg ;};};return nil ;};
2021-01-04 16:11:39 +00:00
2023-06-10 07:12:37 +00:00
// AddImageToRels adds an image relationship to a slide without putting image on the slide.
func (_edf Slide )AddImageToRels (img _cea .ImageRef )string {_eaca :=0;for _cdfa ,_ggb :=range _edf ._dddg .Images {if _ggb ==img {_eaca =_cdfa +1;break ;};};var _ddda string ;for _ffbf ,_egce :=range _edf ._dddg .Slides (){if _egce ._bda ==_edf ._bda {_gfe :=_dbe .Sprintf ("\u002e\u002e\u002f\u006ded\u0069\u0061\u002f\u0069\u006d\u0061\u0067\u0065\u0025\u0064\u002e\u0025\u0073",_eaca ,img .Format ());_fgg :=_edf ._dddg ._fabd [_ffbf ].AddRelationship (_gfe ,_ca .ImageType );_ddda =_fgg .ID ();};};return _ddda ;};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// Image is an image within a slide.
type Image struct{_ceda *_ad .CT_Picture };
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// PresentationProperties contains document specific properties.
type PresentationProperties struct{_dfge *_ad .PresentationPr };
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SlideScreenSize represents the slide screen size as a 2 element array
// representing the width and height in EMU units.
type SlideScreenSize [2]int32 ;
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// ClearAll completely clears a placeholder. To be useable, at least one
// paragraph must be added after ClearAll via AddParagraph.
func (_cef PlaceHolder )ClearAll (){_cef ._eefg .SpPr =_bd .NewCT_ShapeProperties ();_cef ._eefg .TxBody =_bd .NewCT_TextBody ();_cef ._eefg .TxBody .LstStyle =_bd .NewCT_TextListStyle ();};
2021-08-23 20:44:48 +00:00
2023-06-10 07:12:37 +00:00
// SlideViewPr returns the SlideViewPr property.
func (_bfff ViewProperties )SlideViewPr ()*_ad .CT_SlideViewProperties {return _bfff ._ecfe .SlideViewPr };
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// TextItem is used for keeping text with references to a paragraph and run, a shape or a table, a row and a cell where it is located.
type TextItem struct{Text string ;Presentation *Presentation ;Shape *_ad .CT_Shape ;GraphicFrame *_ad .CT_GraphicalObjectFrame ;Paragraph *_bd .CT_TextParagraph ;Run *_bd .CT_RegularTextRun ;TableInfo *TableInfo ;_dc []rectangle ;_gca int ;_fc int ;};
2022-01-15 21:17:38 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func (_bafe SlideMaster )X ()*_ad .SldMaster {return _bafe ._faecc };
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// ExtractText returns text from a slide as a SlideText object.
func (_ae *Slide )ExtractText ()*SlideText {_ggg :=_fed (_ae ._dddg ,_ae ._bda .CSld .SpTree .Choice ,[]rectangle {},[]*TextItem {});_ade .Sort (sort2d (_ggg ));return &SlideText {Items :_ggg };};
2023-03-01 18:42:44 +00:00
2023-06-10 07:12:37 +00:00
// AddTextBox adds an empty textbox to a slide.
func (_egbc Slide )AddTextBox ()TextBox {_efcf :=_ad .NewCT_GroupShapeChoice ();_egbc ._bda .CSld .SpTree .Choice =append (_egbc ._bda .CSld .SpTree .Choice ,_efcf );_gagd :=_ad .NewCT_Shape ();_efcf .Sp =append (_efcf .Sp ,_gagd );_gagd .SpPr =_bd .NewCT_ShapeProperties ();_gagd .SpPr .Xfrm =_bd .NewCT_Transform2D ();_gagd .SpPr .PrstGeom =_bd .NewCT_PresetGeometry2D ();_gagd .SpPr .PrstGeom .PrstAttr =_bd .ST_ShapeTypeRect ;_gagd .NvSpPr =_ad .NewCT_ShapeNonVisual ();_gagd .NvSpPr .CNvSpPr =_bd .NewCT_NonVisualDrawingShapeProps ();_bed :=true ;_gagd .NvSpPr .CNvSpPr .TxBoxAttr =&_bed ;_gagd .TxBody =_bd .NewCT_TextBody ();_gagd .TxBody .BodyPr =_bd .NewCT_TextBodyProperties ();_gagd .TxBody .BodyPr .WrapAttr =_bd .ST_TextWrappingTypeSquare ;_gagd .TxBody .BodyPr .SpAutoFit =_bd .NewCT_TextShapeAutofit ();_baab :=TextBox {_gagd };_baab .Properties ().SetWidth (3*_a .Inch );_baab .Properties ().SetHeight (1*_a .Inch );_baab .Properties ().SetPosition (0,0);return _baab ;};
2023-03-01 18:42:44 +00:00
2023-06-10 07:12:37 +00:00
// Type returns the placeholder type
func (_gea PlaceHolder )Type ()_ad .ST_PlaceholderType {return _gea ._eefg .NvSpPr .NvPr .Ph .TypeAttr };
2022-02-25 19:20:45 +00:00
2023-06-10 07:12:37 +00:00
// Text returns text from a presentation as one string separated with line breaks.
func (_dfd *PresentationText )Text ()string {_gcc :=_gb .NewBuffer ([]byte {});for _ ,_fab :=range _dfd .Slides {_gcc .WriteString (_fab .Text ());};return _gcc .String ();};
2020-08-31 22:58:25 +00:00
2023-04-15 17:27:31 +00:00
// X returns the inner wrapped XML type.
2023-06-10 07:12:37 +00:00
func (_bca Slide )X ()*_ad .Sld {return _bca ._bda };
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SetWidth sets width of slide screen size with given value in EMU units.
func (_ebfgd *SlideScreenSize )SetWidth (val int32 ){_ebfgd [0]=val };
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// Properties returns the properties of the TextBox.
func (_egba TextBox )Properties ()_cdd .ShapeProperties {if _egba ._cgbb .SpPr ==nil {_egba ._cgbb .SpPr =_bd .NewCT_ShapeProperties ();};return _cdd .MakeShapeProperties (_egba ._cgbb .SpPr );};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// SorterViewPr returns the SorterViewPr property.
func (_bdee ViewProperties )SorterViewPr ()*_ad .CT_SlideSorterViewProperties {return _bdee ._ecfe .SorterViewPr ;};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// Width returns slide screen size width in EMU units.
func (_aeef *SlideScreenSize )Width ()int32 {return _aeef [0]};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// GetSlideLayout returns a slide layout related to the slide.
func (_cfbd *Slide )GetSlideLayout ()*_ad .SldLayout {for _cfgf ,_bgbad :=range _cfbd ._dddg .Slides (){if *_cfbd ==_bgbad {return _cfbd ._dddg ._gac [len (_cfbd ._dddg .Slides ())-_cfgf -1];};};return nil ;};
2022-12-06 11:56:49 +00:00
2023-06-10 07:12:37 +00:00
// NormalViewPr returns the NormalViewPr property.
func (_ebfb ViewProperties )NormalViewPr ()*_ad .CT_NormalViewProperties {return _ebfb ._ecfe .NormalViewPr ;};func _bb (_afd *Presentation ,_gdb *_ad .CT_Shape ,_cdfg *_ad .CT_GraphicalObjectFrame ,_ggd *TableInfo ,_ada *_bd .CT_Transform2D ,_eca int ,_ege []rectangle ,_bcb []*_bd .CT_TextParagraph )[]*TextItem {_aea :=[]*TextItem {};var _dbeb ,_dda ,_df ,_dfb ,_gggf ,_ga int64 ;_eaf :=_ada ==nil ;_bbd :=0;for _ ,_afc :=range _bcb {for _ ,_ba :=range _afc .EG_TextRun {if _caa :=_ba .R ;_caa !=nil {if !_eaf {if _ada .Off !=nil {if _bea :=_ada .Ext ;_bea !=nil {_gggf ,_ga =_bea .CxAttr ,_bea .CyAttr ;};if _ffc :=_ada .Off .XAttr .ST_CoordinateUnqualified ;_ffc !=nil {_dbeb =*_ffc ;_dda =_dbeb +_gggf ;_eaf =true ;};if _fcc :=_ada .Off .YAttr .ST_CoordinateUnqualified ;_fcc !=nil {_df =*_fcc ;_dfb =_df +_ga ;_eaf =true ;};};};_fdda :=append ([]rectangle {},_ege ...);_fdda =append (_fdda ,rectangle {_efe :_dbeb ,_af :_dda ,_ee :_df ,_ab :_dfb });_aea =append (_aea ,&TextItem {Presentation :_afd ,Shape :_gdb ,GraphicFrame :_cdfg ,TableInfo :_ggd ,Paragraph :_afc ,Run :_caa ,Text :_caa .T ,_dc :_fdda ,_gca :_eca ,_fc :_bbd });_bbd ++;};};};return _aea ;};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// AddImage adds an image to the document package, returning a reference that
// can be used to add the image to a run and place it in the document contents.
func (_ggab *Presentation )AddImage (i _cea .Image )(_cea .ImageRef ,error ){_ffce :=_cea .MakeImageRef (i ,&_ggab .DocBase ,_ggab ._bcgf );if i .Data ==nil &&i .Path ==""{return _ffce ,_fe .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 _ffce ,_fe .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 _ffce ,_fe .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 !=""{_dffb :=_dd .Add (i .Path );if _dffb !=nil {return _ffce ,_dffb ;};};_ggab .Images =append (_ggab .Images ,_ffce );_ggab .ContentTypes .EnsureDefault ("\u0070\u006e\u0067","\u0069m\u0061\u0067\u0065\u002f\u0070\u006eg");_ggab .ContentTypes .EnsureDefault ("\u006a\u0070\u0065\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_ggab .ContentTypes .EnsureDefault ("\u006a\u0070\u0067","\u0069\u006d\u0061\u0067\u0065\u002f\u006a\u0070\u0065\u0067");_ggab .ContentTypes .EnsureDefault ("\u0077\u006d\u0066","i\u006d\u0061\u0067\u0065\u002f\u0078\u002d\u0077\u006d\u0066");_ggab .ContentTypes .EnsureDefault (i .Format ,"\u0069\u006d\u0061\u0067\u0065\u002f"+i .Format );return _ffce ,nil ;};
2020-08-23 14:15:53 +00:00
2023-06-10 07:12:37 +00:00
// NewSlideScreenSize returns slide screen size with default MS PowerPoint slide screen size 16x9.
func NewSlideScreenSize ()SlideScreenSize {return NewSlideScreenSizeWithValue (SlideScreenSize16x9 [0],SlideScreenSize16x9 [1]);};
2021-04-23 20:00:00 +00:00
2023-05-26 09:49:04 +00:00
// GetLayoutByName retrieves a slide layout given a layout name.
2023-06-10 07:12:37 +00:00
func (_gefe *Presentation )GetLayoutByName (name string )(SlideLayout ,error ){for _ ,_gcg :=range _gefe ._gac {if _gcg .CSld .NameAttr !=nil &&name ==*_gcg .CSld .NameAttr {return SlideLayout {_gcg },nil ;};};return SlideLayout {},_fe .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");};
2023-06-10 07:12:37 +00:00
// SlideLayout is a layout from which slides can be created.
type SlideLayout struct{_bcfg *_ad .SldLayout };type rectangle struct{_efe int64 ;_ee int64 ;_af int64 ;_ab int64 ;};
2023-06-10 07:12:37 +00:00
// Save writes the presentation out to a writer in the Zip package format
func (_ecae *Presentation )Save (w _bc .Writer )error {return _ecae .save (w ,false )};
2023-05-26 09:49:04 +00:00
// SetOffsetX sets horizontal offset of text box in distance units (see measurement package).
2023-06-10 07:12:37 +00:00
func (_fcf TextBox )SetOffsetX (offX float64 ){_defg :=_fcf .getOff ();_ggge :=_a .ToEMU (offX );_defg .XAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_ggge };};func (_dfg sort2d )Len ()int {return len (_dfg )};
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// AddTable adds a new table to a placeholder.
func (_bfd PlaceHolder )AddTable ()*_cea .Table {_bfd .Clear ();_bgdd :=_ad .NewCT_GroupShapeChoice ();_bfd ._egc .CSld .SpTree .Choice =append (_bfd ._egc .CSld .SpTree .Choice ,_bgdd );_dcf :=_ad .NewCT_GraphicalObjectFrame ();_bgdd .GraphicFrame =append (_bgdd .GraphicFrame ,_dcf );_dcf .Xfrm .Off =_bd .NewCT_Point2D ();_aca :=int64 (1);_dcf .Xfrm .Off .XAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_aca };_dcf .Xfrm .Off .YAttr =_bd .ST_Coordinate {ST_CoordinateUnqualified :&_aca };_ccb :=_dcf .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";_fff :=_cea .NewTableWithXfrm (_dcf .Xfrm );_ccb .Any =append (_ccb .Any ,_fff .X ());return _fff ;};
2021-01-04 16:11:39 +00:00
2023-06-10 07:12:37 +00:00
// GetColorBySchemeColor returns *dml.CT_Color mapped to scheme colors like dk1, lt1 etc. depending on what theme is used in the presentation.
func (_edaca *Slide )GetColorBySchemeColor (schClr _bd .ST_SchemeColorVal )*_bd .CT_Color {_edaca .ensureClrMap ();_daa :=_edaca ._aeaa ;if _daa ==nil {return nil ;};var _adcg _bd .ST_ColorSchemeIndex ;switch schClr .String (){case "\u0062\u0067\u0031":_adcg =_daa .Bg1Attr ;case "\u0062\u0067\u0032":_adcg =_daa .Bg2Attr ;case "\u0074\u0078\u0031":_adcg =_daa .Tx1Attr ;case "\u0074\u0078\u0032":_adcg =_daa .Tx2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_adcg =_daa .Accent1Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_adcg =_daa .Accent2Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_adcg =_daa .Accent3Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_adcg =_daa .Accent4Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_adcg =_daa .Accent5Attr ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_adcg =_daa .Accent6Attr ;case "\u0068\u006c\u0069n\u006b":_adcg =_daa .HlinkAttr ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_adcg =_daa .FolHlinkAttr ;case "\u0064\u006b\u0031":_adcg =_bd .ST_ColorSchemeIndexDk1 ;case "\u0064\u006b\u0032":_adcg =_bd .ST_ColorSchemeIndexDk2 ;case "\u006c\u0074\u0031":_adcg =_bd .ST_ColorSchemeIndexLt1 ;case "\u006c\u0074\u0032":_adcg =_bd .ST_ColorSchemeIndexLt2 ;default:_adcg =_bd .ST_ColorSchemeIndexUnset ;};_dfbc :=_edaca ._dddg ._bfc [0];_dfaa :=_dfbc .ThemeElements ;if _dfaa ==nil {return nil ;};var _bbbe *_bd .CT_Color ;_eddf :=_dfaa .ClrScheme ;switch _adcg .String (){case "\u0064\u006b\u0031":_bbbe =_eddf .Dk1 ;case "\u0064\u006b\u0032":_bbbe =_eddf .Dk2 ;case "\u006c\u0074\u0031":_bbbe =_eddf .Lt1 ;case "\u006c\u0074\u0032":_bbbe =_eddf .Lt2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0031":_bbbe =_eddf .Accent1 ;case "\u0061c\u0063\u0065\u006e\u0074\u0032":_bbbe =_eddf .Accent2 ;case "\u0061c\u0063\u0065\u006e\u0074\u0033":_bbbe =_eddf .Accent3 ;case "\u0061c\u0063\u0065\u006e\u0074\u0034":_bbbe =_eddf .Accent4 ;case "\u0061c\u0063\u0065\u006e\u0074\u0035":_bbbe =_eddf .Accent5 ;case "\u0061c\u0063\u0065\u006e\u0074\u0036":_bbbe =_eddf .Accent6 ;case "\u0068\u006c\u0069n\u006b":_bbbe =_eddf .Hlink ;case "\u0066\u006f\u006c\u0048\u006c\u0069\u006e\u006b":_bbbe =_eddf .FolHlink ;default:return nil ;};return _bbbe ;};
2021-01-04 16:11:39 +00:00
2023-06-10 07:12:37 +00:00
// TableInfo is used for keep information about a table, a row and a cell where the text is located.
type TableInfo struct{Table *_bd .CT_Table ;Row *_bd .CT_TableRow ;Cell *_bd .CT_TableCell ;RowIndex int ;ColIndex int ;};func (_dbef *Presentation )nextSlideID ()uint32 {_ffcg :=uint32 (256);for _ ,_baf :=range _dbef ._gegf .SldIdLst .SldId {if _baf .IdAttr >=_ffcg {_ffcg =_baf .IdAttr +1;};};return _ffcg ;};
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// OutlineViewPr returns the OutlineViewPr property.
func (_beef ViewProperties )OutlineViewPr ()*_ad .CT_OutlineViewProperties {return _beef ._ecfe .OutlineViewPr ;};
2021-05-31 16:22:30 +00:00
2023-06-10 07:12:37 +00:00
// PlaceHolders returns all of the content place holders within a given slide.
func (_bgba Slide )PlaceHolders ()[]PlaceHolder {_egef :=[]PlaceHolder {};for _ ,_faaa :=range _bgba ._bda .CSld .SpTree .Choice {for _ ,_fdf :=range _faaa .Sp {if _fdf .NvSpPr !=nil &&_fdf .NvSpPr .NvPr !=nil &&_fdf .NvSpPr .NvPr .Ph !=nil {_egef =append (_egef ,PlaceHolder {_fdf ,_bgba ._bda });};};};return _egef ;};
2022-09-02 11:46:53 +00:00
2023-06-10 07:12:37 +00:00
// TextBox is a text box within a slide.
type TextBox struct{_cgbb *_ad .CT_Shape };
2022-09-02 11:46:53 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func (_ebb PlaceHolder )X ()*_ad .CT_Shape {return _ebb ._eefg };
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// Size returns slide size value as SlideScreenSize.
func (_ddde *SlideSize )Size ()SlideScreenSize {return SlideScreenSize {_ddde ._eed .CxAttr ,_ddde ._eed .CyAttr };};
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// SlideLayouts returns the slide layouts defined in the presentation.
func (_fgeb *Presentation )SlideLayouts ()[]SlideLayout {_dfae :=[]SlideLayout {};for _ ,_agga :=range _fgeb ._gac {_dfae =append (_dfae ,SlideLayout {_agga });};return _dfae ;};const _fgd float64 =500000;
2023-05-26 09:49:04 +00:00
2023-06-10 07:12:37 +00:00
// SaveAsTemplate writes the presentation out to a writer in the Zip package format as a template
func (_gf *Presentation )SaveAsTemplate (w _bc .Writer )error {return _gf .save (w ,true )};
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// RemoveSlide removes a slide from a presentation.
func (_dgef *Presentation )RemoveSlide (s Slide )error {_gaa :=false ;_ffeg :=0;for _bafc ,_adc :=range _dgef ._cfd {if _adc ==s ._bda {if _dgef ._gegf .SldIdLst .SldId [_bafc ]!=s ._bbb {return _fe .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 (_dgef ._cfd [_bafc :],_dgef ._cfd [_bafc +1:]);_dgef ._cfd =_dgef ._cfd [0:len (_dgef ._cfd )-1];copy (_dgef ._fabd [_bafc :],_dgef ._fabd [_bafc +1:]);_dgef ._fabd =_dgef ._fabd [0:len (_dgef ._fabd )-1];copy (_dgef ._gegf .SldIdLst .SldId [_bafc :],_dgef ._gegf .SldIdLst .SldId [_bafc +1:]);_dgef ._gegf .SldIdLst .SldId =_dgef ._gegf .SldIdLst .SldId [0:len (_dgef ._gegf .SldIdLst .SldId )-1];_gaa =true ;_ffeg =_bafc ;};};if !_gaa {return _fe .New ("u\u006ea\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0066i\u006e\u0064\u0020\u0073li\u0064\u0065");};_fdbb :=_ca .AbsoluteFilename (_ca .DocTypePresentation ,_ca .SlideType ,0);return _dgef .ContentTypes .RemoveOverrideByIndex (_fdbb ,_ffeg );};
2021-09-22 16:41:01 +00:00
2023-05-26 09:49:04 +00:00
// Less is for implementing sorting of two locations. Symbols share the same location if they are in the same paragraph or table. One location is 'less' than another first by y coordinate, if y coordinates are equal or differ by less than yEpsilon, then x coordinates are compared, then if they are also equal, indexes of locations in the table are compared, then positions of locations in a paragraph.
2023-06-10 07:12:37 +00:00
func (_gee sort2d )Less (i ,j int )bool {_aff ,_fb :=_gee [i ],_gee [j ];_gab ,_efa :=_aff ._dc ,_fb ._dc ;_gbd ,_agg :=len (_gab )-1,len (_efa )-1;_ccfd ,_de :=0,0;for {_bcd ,_fdb ,_bfe ,_beg ,_gef ,_ecc ,_bbe ,_bcg :=_gab [_ccfd ]._ee ,_efa [_de ]._ee ,_gab [_ccfd ]._ab ,_efa [_de ]._ab ,_gab [_ccfd ]._efe ,_efa [_de ]._efe ,_gab [_ccfd ]._af ,_efa [_de ]._af ;if _bcd ==_fdb ||((_gd .Abs (float64 (_bcd )-float64 (_fdb ))< _fgd )&&((_bcd >=_fdb &&_bcd <=_beg )||(_fdb >=_bcd &&_fdb <=_bfe ))&&(_bbe < _ecc ||_gef > _bcg )){if _gef ==_ecc {if _ccfd < _gbd &&_de < _agg {_ccfd ++;_de ++;continue ;};if _ccfd >=_gbd &&_de >=_agg {break ;};return _ccfd >=_gbd ;}else {return _gef < _ecc ;};}else {return _bcd < _fdb ;};};_da ,_bgb ,_adaf ,_dg :=_aff ._gca ,_fb ._gca ,_aff ._fc ,_fb ._fc ;if _da ==_bgb {return _adaf <=_dg ;};return _da < _bgb ;};func (_gggee TextBox )getOff ()*_bd .CT_Point2D {if _gggee ._cgbb .SpPr ==nil {_gggee ._cgbb .SpPr =_bd .NewCT_ShapeProperties ();};if _gggee ._cgbb .SpPr .Xfrm ==nil {_gggee ._cgbb .SpPr .Xfrm =_bd .NewCT_Transform2D ();};if _gggee ._cgbb .SpPr .Xfrm .Off ==nil {_gggee ._cgbb .SpPr .Xfrm .Off =_bd .NewCT_Point2D ();};return _gggee ._cgbb .SpPr .Xfrm .Off ;};func (_edcb *Slide )ensureClrMap (){if len (_edcb ._dddg ._bgfb )==0||len (_edcb ._dddg ._bfc )==0{return ;};_adec :=_edcb ._dddg ._bgfb [0];_babb :=_adec .ClrMap ;if _faad :=_edcb ._bda .ClrMapOvr ;_faad !=nil {if _efabg :=_faad .Choice ;_efabg !=nil {if _efabg .MasterClrMapping ==nil {if _bdg :=_efabg .OverrideClrMapping ;_bdg !=nil {if _bdg .Bg1Attr !=_bd .ST_ColorSchemeIndexUnset {_babb .Bg1Attr =_bdg .Bg1Attr ;};if _bdg .Tx1Attr !=_bd .ST_ColorSchemeIndexUnset {_babb .Tx1Attr =_bdg .Tx1Attr ;};if _bdg .Bg2Attr !=_bd .ST_ColorSchemeIndexUnset {_babb .Bg2Attr =_bdg .Bg2Attr ;};if _bdg .Tx2Attr !=_bd .ST_ColorSchemeIndexUnset {_babb .Tx2Attr =_bdg .Tx2Attr ;};if _bdg .Accent1Attr !=_bd .ST_ColorSchemeIndexUnset {_babb .Accent1Attr =_bdg .Accent1Attr ;};if _bdg .Accent2Attr !=_bd .ST_ColorSchemeIndexUnset {_babb .Accent2Attr =_bdg .Accent2Attr ;};if _bdg .Accent3Attr !=_bd .ST_ColorSchemeIndexUnset {_babb .Accent3Attr =_bdg .Accent3Attr ;};if _bdg .Accent4Attr !=_bd .ST_ColorSchemeIndexUnset {_babb .Accent4Attr =_bdg .Accent4Attr ;};if _bdg .Accent5Attr !=_bd .ST_ColorSchemeIndexUnset {_babb .Accent5Attr =_bdg .Accent5Attr ;};if _bdg .Accent6Attr !=_bd .ST_ColorSchemeIndexUnset {_babb .Accent6Attr =_bdg .Accent6Attr ;};if _bdg .HlinkAttr !=_bd .ST_ColorSchemeIndexUnset {_babb .HlinkAttr =_bdg .HlinkAttr ;};if _bdg .FolHlinkAttr !=_bd .ST_ColorSchemeIndexUnset {_babb .FolHlinkAttr =_bdg .FolHlinkAttr ;};};};};};_edcb ._aeaa =_babb ;};
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// SlideSize represents a slide size of a presentation.
type SlideSize struct{_eed *_ad .CT_SlideSize ;_fbc *Presentation ;};
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// Index returns the placeholder index
func (_fbbg PlaceHolder )Index ()uint32 {if _fbbg ._eefg .NvSpPr .NvPr .Ph .IdxAttr ==nil {return 0;};return *_fbbg ._eefg .NvSpPr .NvPr .Ph .IdxAttr ;};var _bbec =false ;
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// Open opens and reads a document from a file (.pptx).
func Open (filename string )(*Presentation ,error ){_dfgf ,_fee :=_ebc .Open (filename );if _fee !=nil {return nil ,_dbe .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_fee );};defer _dfgf .Close ();_fbb ,_fee :=_ebc .Stat (filename );if _fee !=nil {return nil ,_dbe .Errorf ("e\u0072r\u006f\u0072\u0020\u006f\u0070\u0065\u006e\u0069n\u0067\u0020\u0025\u0073: \u0025\u0073",filename ,_fee );};_ =_fbb ;return Read (_dfgf ,_fbb .Size ());};
2021-09-22 16:41:01 +00:00
2023-05-26 09:49:04 +00:00
// GetPlaceholderByIndex returns a placeholder given its index. If there are multiplace
// placeholders of the same index, this method returns the first one. You must use the
// PlaceHolders() method to access the others.
2023-06-10 07:12:37 +00:00
func (_edc Slide )GetPlaceholderByIndex (idx uint32 )(PlaceHolder ,error ){for _ ,_dfbb :=range _edc ._bda .CSld .SpTree .Choice {for _ ,_bcae :=range _dfbb .Sp {if _bcae .NvSpPr !=nil &&_bcae .NvSpPr .NvPr !=nil &&_bcae .NvSpPr .NvPr .Ph !=nil {if (idx ==0&&_bcae .NvSpPr .NvPr .Ph .IdxAttr ==nil )||(_bcae .NvSpPr .NvPr .Ph .IdxAttr !=nil &&*_bcae .NvSpPr .NvPr .Ph .IdxAttr ==idx ){return PlaceHolder {_bcae ,_edc ._bda },nil ;};};};};return PlaceHolder {},_fe .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");};
2022-09-02 11:46:53 +00:00
2023-06-10 07:12:37 +00:00
// ViewProperties contains presentation specific properties.
type ViewProperties struct{_ecfe *_ad .ViewPr };
2022-09-02 11:46:53 +00:00
2023-06-10 07:12:37 +00:00
// Presentation is the a presentation base document.
type Presentation struct{_cea .DocBase ;_gegf *_ad .Presentation ;_bcgf _cea .Relationships ;_cfd []*_ad .Sld ;_fabd []_cea .Relationships ;_bgfb []*_ad .SldMaster ;_aadb []_cea .Relationships ;_gac []*_ad .SldLayout ;_bab []_cea .Relationships ;_bfc []*_bd .Theme ;_cgd []_cea .Relationships ;_abc _cea .TableStyles ;_fcb PresentationProperties ;_bgdc ViewProperties ;_fedb []*_bd .CT_Hyperlink ;_cedaa []*chart ;_cde []*_ad .HandoutMaster ;_bee []*_ad .NotesMaster ;_baeg []*_ca .XSDAny ;_dcfa map[string ]string ;_gcab string ;};
2022-12-06 11:56:49 +00:00
2023-06-10 07:12:37 +00:00
// Slide represents a slide of a presentation.
type Slide struct{_bbb *_ad .CT_SlideIdListEntry ;_bda *_ad .Sld ;_dddg *Presentation ;_aeaa *_bd .CT_ColorMapping ;};
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// PlaceHolder is a place holder from a slide.
type PlaceHolder struct{_eefg *_ad .CT_Shape ;_egc *_ad .Sld ;};
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func (_eaedf *SlideSize )X ()*_ad .CT_SlideSize {return _eaedf ._eed };
2021-09-22 16:41:01 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func (_gedf PresentationProperties )X ()*_ad .PresentationPr {return _gedf ._dfge };
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// Remove removes a placeholder from a presentation.
func (_dadg PlaceHolder )Remove ()error {for _bcdb ,_fgc :=range _dadg ._egc .CSld .SpTree .Choice {for _ ,_cgg :=range _fgc .Sp {if _cgg ==_dadg ._eefg {copy (_dadg ._egc .CSld .SpTree .Choice [_bcdb :],_dadg ._egc .CSld .SpTree .Choice [_bcdb +1:]);_dadg ._egc .CSld .SpTree .Choice =_dadg ._egc .CSld .SpTree .Choice [0:len (_dadg ._egc .CSld .SpTree .Choice )-1];return nil ;};};};return _fe .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");};
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// AddDefaultSlideWithLayout tries to replicate what PowerPoint does when
// inserting a slide with a new style by clearing placeholder content and removing
// some placeholders. Use AddSlideWithLayout if you need more control.
func (_bde *Presentation )AddDefaultSlideWithLayout (l SlideLayout )(Slide ,error ){_cbef ,_ece :=_bde .AddSlideWithLayout (l );for _ ,_fbd :=range _cbef .PlaceHolders (){_fbd .Clear ();switch _fbd .Type (){case _ad .ST_PlaceholderTypeFtr ,_ad .ST_PlaceholderTypeDt ,_ad .ST_PlaceholderTypeSldNum :_fbd .Remove ();};};return _cbef ,_ece ;};
2021-11-10 11:45:21 +00:00
2023-06-10 07:12:37 +00:00
// ClrMru returns the ClrMru property.
func (_gag PresentationProperties )ClrMru ()*_bd .CT_ColorMRU {return _gag ._dfge .ClrMru };
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// Text returns text from a slide as one string separated with line breaks.
func (_ebf *SlideText )Text ()string {_eag :=_gb .NewBuffer ([]byte {});for _ ,_dbc :=range _ebf .Items {if _dbc .Text !=""{_eag .WriteString (_dbc .Text );_eag .WriteString ("\u000a");};};return _eag .String ();};
2022-04-09 14:27:46 +00:00
2023-06-10 07:12:37 +00:00
// Name returns the name of the slide layout.
func (_gdg SlideLayout )Name ()string {if _gdg ._bcfg .CSld !=nil &&_gdg ._bcfg .CSld .NameAttr !=nil {return *_gdg ._bcfg .CSld .NameAttr ;};return "";};
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// ExtLst returns the ExtLst property.
func (_bcba ViewProperties )ExtLst ()*_ad .CT_ExtensionList {return _bcba ._ecfe .ExtLst };
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// X returns the inner wrapped XML type.
func (_bdc *Presentation )X ()*_ad .Presentation {return _bdc ._gegf };
2022-02-05 13:05:36 +00:00
2023-06-10 07:12:37 +00:00
// GetChartSpaceByRelId returns a *crt.ChartSpace with the associated relation ID in the
// slide.
func (_edg *Slide )GetChartSpaceByRelId (relId string )*_b .ChartSpace {_fdge :=_edg .getSlideRels ();if (_fdge ==_cea .Relationships {}){return nil ;};_ffd :=_fdge .GetTargetByRelId (relId );for _ ,_gfba :=range _edg ._dddg ._cedaa {if _ffd ==_gfba .Target (){return _gfba ._ea ;};};return nil ;};
2022-04-09 14:27:46 +00:00
2023-05-26 09:49:04 +00:00
// X returns the inner wrapped XML type.
2023-06-10 07:12:37 +00:00
func (_fde ViewProperties )X ()*_ad .ViewPr {return _fde ._ecfe };
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// ExtLst returns the ExtLst property.
func (_fdg PresentationProperties )ExtLst ()*_ad .CT_ExtensionList {return _fdg ._dfge .ExtLst };
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// HtmlPubPr returns the HtmlPubPr property.
func (_egeg PresentationProperties )HtmlPubPr ()*_ad .CT_HtmlPublishProperties {return _egeg ._dfge .HtmlPubPr ;};
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// LastViewAttr returns the LastViewAttr property.
func (_bfced ViewProperties )LastViewAttr ()_ad .ST_ViewType {return _bfced ._ecfe .LastViewAttr };func (_eba *Presentation )saveToFile (_cgba string ,_bgfg bool )error {_ccbd ,_dgee :=_ebc .Create (_cgba );if _dgee !=nil {return _dgee ;};defer _ccbd .Close ();return _eba .save (_ccbd ,_bgfg );};
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// NotesViewPr returns the NotesViewPr property.
func (_addc ViewProperties )NotesViewPr ()*_ad .CT_NotesViewProperties {return _addc ._ecfe .NotesViewPr };
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// Properties returns the properties of the TextBox.
func (_dad Image )Properties ()_cdd .ShapeProperties {if _dad ._ceda .SpPr ==nil {_dad ._ceda .SpPr =_bd .NewCT_ShapeProperties ();};return _cdd .MakeShapeProperties (_dad ._ceda .SpPr );};
2023-04-15 17:27:31 +00:00
2023-06-10 07:12:37 +00:00
// Slides returns the slides in the presentation.
func (_agf *Presentation )Slides ()[]Slide {_dea :=[]Slide {};for _adg ,_bga :=range _agf ._cfd {_dea =append (_dea ,Slide {_agf ._gegf .SldIdLst .SldId [_adg ],_bga ,_agf ,nil });};return _dea ;};type chart struct{_ea *_b .ChartSpace ;_cdf string ;_ac string ;};
// SlideSize returns presentation slide size.
func (_bccc *Presentation )SlideSize ()SlideSize {if _bccc ._gegf .SldSz ==nil {_bccc ._gegf .SldSz =_ad .NewCT_SlideSize ();};return SlideSize {_bccc ._gegf .SldSz ,_bccc };};func _bfed (_eagf []*_ad .CT_GroupShapeChoice )[]*_ad .CT_GroupShapeChoice {var _ecg []*_ad .CT_GroupShapeChoice ;for _ ,_faae :=range _eagf {if len (_faae .Pic )==0{_ecg =append (_ecg ,_faae );};};return _ecg ;};
// ShowPr returns the ShowPr property.
func (_efg PresentationProperties )ShowPr ()*_ad .CT_ShowProperties {return _efg ._dfge .ShowPr };func _cbb ()*Presentation {_ead :=&Presentation {_gegf :_ad .NewPresentation ()};_ead ._gegf .SldIdLst =_ad .NewCT_SlideIdList ();_ead ._gegf .ConformanceAttr =_eb .ST_ConformanceClassTransitional ;_ead .AppProperties =_cea .NewAppProperties ();_ead .CoreProperties =_cea .NewCoreProperties ();_ead ._abc =_cea .NewTableStyles ();_ead .ContentTypes =_cea .NewContentTypes ();_ead .Rels =_cea .NewRelationships ();_ead ._bcgf =_cea .NewRelationships ();_ead ._fcb =NewPresentationProperties ();_ead ._bgdc =NewViewProperties ();_ead ._dcfa =map[string ]string {};return _ead ;};
// 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 (_afb PlaceHolder )Clear (){_afb .ClearAll ();_ecf :=_bd .NewCT_TextParagraph ();_afb ._eefg .TxBody .P =[]*_bd .CT_TextParagraph {_ecf };_ecf .EndParaRPr =_bd .NewCT_TextCharacterProperties ();_ecf .EndParaRPr .LangAttr =_ca .String ("\u0065\u006e\u002dU\u0053");};
// SetHeight sets height of slide screen size with given value in EMU units.
func (_fegf *SlideScreenSize )SetHeight (val int32 ){_fegf [1]=val };
// ValidateWithPath validates the slide passing path informaton for a better
// error message.
func (_gedg Slide )ValidateWithPath (path string )error {if _bafd :=_gedg ._bda .ValidateWithPath (path );_bafd !=nil {return _bafd ;};for _ ,_caag :=range _gedg ._bda .CSld .SpTree .Choice {for _ ,_bdec :=range _caag .Sp {if _bdec .TxBody !=nil {if len (_bdec .TxBody .P )==0{return _fe .New (path +"\u0020\u003a \u0073\u006c\u0069\u0064\u0065 \u0073\u0068\u0061\u0070\u0065 \u0077\u0069\u0074\u0068\u0020\u0061\u0020\u0074\u0078\u0062\u006f\u0064\u0079\u0020\u006d\u0075\u0073\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0020\u0070\u0061\u0072\u0061\u0067\u0072\u0061\u0070\u0068\u0073");};};};};return nil ;};func (_gfg *Presentation )save (_ffaa _bc .Writer ,_bdda bool )error {const _cadc ="\u0050\u0072\u0065\u0073en\u0074\u0061\u0074\u0069\u006f\u006e\u003a\u0070\u002e\u0053\u0061\u0076\u0065";if _gcb :=_gfg ._gegf .Validate ();_gcb !=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",_gcb );};if !_cc .GetLicenseKey ().IsLicensed ()&&!_bbec {_dbe .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");_dbe .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 _fe .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 (_gfg ._gcab )==0{_cfed ,_adf :=_cc .GenRefId ("\u0070\u0077");if _adf !=nil {_ef .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_adf );return _adf ;};_gfg ._gcab =_cfed ;};if _dff :=_cc .Track (_gfg ._gcab ,_cadc );_dff !=nil {_ef .Log .Error ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dff );return _dff ;};if _bdda {_gfg .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");_gfg .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 {_gfg .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");_gfg .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\u007