mirror of
https://github.com/unidoc/unioffice.git
synced 2025-04-25 13:48:53 +08:00

* PPT relationships, image fix * filenames fix * Custom properties fix * schema update * Table styles fix * Scale fix * path fix * New schema: cycle imports fix * xsdAny namespace duplicate fix * Images names fix * Images extensions fix * duplicate chart fix * chart empty attrs fix * Choice if fixed, scale is rolled back * comments * Rollback license info in schema files * import path fix * import path fix 2 * error with incorrect content types names fixed when deleting slides and then adding them again * template with image example * MustCompile replaced * imports fixed * slideIdx error fix
50 lines
1.4 KiB
Go
50 lines
1.4 KiB
Go
// Copyright 2017 FoxyUtils ehf. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by the terms of the Affero GNU General
|
|
// Public License version 3.0 as published by the Free Software Foundation and
|
|
// appearing in the file LICENSE included in the packaging of this file. A
|
|
// commercial license can be purchased on https://unidoc.io.
|
|
|
|
package presentation
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/unidoc/unioffice/common"
|
|
"github.com/unidoc/unioffice/schema/soo/pml"
|
|
)
|
|
|
|
// SlideMaster is the slide master for a presentation.
|
|
type SlideMaster struct {
|
|
p *Presentation
|
|
rels common.Relationships
|
|
x *pml.SldMaster
|
|
}
|
|
|
|
// X returns the inner wrapped XML type.
|
|
func (s SlideMaster) X() *pml.SldMaster {
|
|
return s.x
|
|
}
|
|
|
|
// SlideLayouts returns a slice of all layouts in SlideMaster.
|
|
func (s SlideMaster) SlideLayouts() []SlideLayout {
|
|
nameToLayoutIdx := map[string]int{}
|
|
layouts := []SlideLayout{}
|
|
for _, r := range s.rels.Relationships() {
|
|
idxTxt := strings.Replace(r.Target(), "../slideLayouts/slideLayout", "", -1)
|
|
idxTxt = strings.Replace(idxTxt, ".xml", "", -1)
|
|
if idx, err := strconv.ParseInt(idxTxt, 10, 32); err == nil {
|
|
nameToLayoutIdx[r.ID()] = int(idx)
|
|
}
|
|
}
|
|
|
|
for _, lid := range s.x.SldLayoutIdLst.SldLayoutId {
|
|
if idx, ok := nameToLayoutIdx[lid.RIdAttr]; ok {
|
|
lout := s.p.layouts[idx-1]
|
|
layouts = append(layouts, SlideLayout{lout})
|
|
}
|
|
}
|
|
return layouts
|
|
}
|