// Copyright 2017 Baliance. 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 by contacting sales@baliance.com. package presentationml import ( "encoding/xml" "fmt" "log" "strconv" "baliance.com/gooxml/schema/schemas.openxmlformats.org/drawingml" ) type CT_TLCommonTimeNodeData struct { // ID IdAttr *uint32 // Preset ID PresetIDAttr *int32 // Preset Types PresetClassAttr ST_TLTimeNodePresetClassType // Preset SubType PresetSubtypeAttr *int32 // Duration DurAttr *ST_TLTime // Repeat Count RepeatCountAttr *ST_TLTime // Repeat Duration RepeatDurAttr *ST_TLTime // Speed SpdAttr *drawingml.ST_Percentage // Acceleration AccelAttr *drawingml.ST_PositiveFixedPercentage // Deceleration DecelAttr *drawingml.ST_PositiveFixedPercentage // Auto Reverse AutoRevAttr *bool // Restart RestartAttr ST_TLTimeNodeRestartType // Fill FillAttr ST_TLTimeNodeFillType // Synchronization Behavior SyncBehaviorAttr ST_TLTimeNodeSyncType // Time Filter TmFilterAttr *string // Event Filter EvtFilterAttr *string // Display DisplayAttr *bool // Master Relation MasterRelAttr ST_TLTimeNodeMasterRelation // Build level BldLvlAttr *int32 // Group ID GrpIdAttr *uint32 // After Effect AfterEffectAttr *bool // Node Type NodeTypeAttr ST_TLTimeNodeType // Node Placeholder NodePhAttr *bool // Start Conditions List StCondLst *CT_TLTimeConditionList // End Conditions List EndCondLst *CT_TLTimeConditionList // EndSync EndSync *CT_TLTimeCondition // Iterate Iterate *CT_TLIterateData // Children Time Node List ChildTnLst *CT_TimeNodeList // Sub-TimeNodes List SubTnLst *CT_TimeNodeList } func NewCT_TLCommonTimeNodeData() *CT_TLCommonTimeNodeData { ret := &CT_TLCommonTimeNodeData{} return ret } func (m *CT_TLCommonTimeNodeData) MarshalXML(e *xml.Encoder, start xml.StartElement) error { if m == nil { return nil } if m.IdAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "id"}, Value: fmt.Sprintf("%v", *m.IdAttr)}) } if m.PresetIDAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "presetID"}, Value: fmt.Sprintf("%v", *m.PresetIDAttr)}) } if m.PresetClassAttr != ST_TLTimeNodePresetClassTypeUnset { attr, err := m.PresetClassAttr.MarshalXMLAttr(xml.Name{Local: "presetClass"}) if err != nil { return err } start.Attr = append(start.Attr, attr) } if m.PresetSubtypeAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "presetSubtype"}, Value: fmt.Sprintf("%v", *m.PresetSubtypeAttr)}) } if m.DurAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "dur"}, Value: fmt.Sprintf("%v", *m.DurAttr)}) } if m.RepeatCountAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "repeatCount"}, Value: fmt.Sprintf("%v", *m.RepeatCountAttr)}) } if m.RepeatDurAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "repeatDur"}, Value: fmt.Sprintf("%v", *m.RepeatDurAttr)}) } if m.SpdAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "spd"}, Value: fmt.Sprintf("%v", *m.SpdAttr)}) } if m.AccelAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "accel"}, Value: fmt.Sprintf("%v", *m.AccelAttr)}) } if m.DecelAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "decel"}, Value: fmt.Sprintf("%v", *m.DecelAttr)}) } if m.AutoRevAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "autoRev"}, Value: fmt.Sprintf("%v", *m.AutoRevAttr)}) } if m.RestartAttr != ST_TLTimeNodeRestartTypeUnset { attr, err := m.RestartAttr.MarshalXMLAttr(xml.Name{Local: "restart"}) if err != nil { return err } start.Attr = append(start.Attr, attr) } if m.FillAttr != ST_TLTimeNodeFillTypeUnset { attr, err := m.FillAttr.MarshalXMLAttr(xml.Name{Local: "fill"}) if err != nil { return err } start.Attr = append(start.Attr, attr) } if m.SyncBehaviorAttr != ST_TLTimeNodeSyncTypeUnset { attr, err := m.SyncBehaviorAttr.MarshalXMLAttr(xml.Name{Local: "syncBehavior"}) if err != nil { return err } start.Attr = append(start.Attr, attr) } if m.TmFilterAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "tmFilter"}, Value: fmt.Sprintf("%v", *m.TmFilterAttr)}) } if m.EvtFilterAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "evtFilter"}, Value: fmt.Sprintf("%v", *m.EvtFilterAttr)}) } if m.DisplayAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "display"}, Value: fmt.Sprintf("%v", *m.DisplayAttr)}) } if m.MasterRelAttr != ST_TLTimeNodeMasterRelationUnset { attr, err := m.MasterRelAttr.MarshalXMLAttr(xml.Name{Local: "masterRel"}) if err != nil { return err } start.Attr = append(start.Attr, attr) } if m.BldLvlAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "bldLvl"}, Value: fmt.Sprintf("%v", *m.BldLvlAttr)}) } if m.GrpIdAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "grpId"}, Value: fmt.Sprintf("%v", *m.GrpIdAttr)}) } if m.AfterEffectAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "afterEffect"}, Value: fmt.Sprintf("%v", *m.AfterEffectAttr)}) } if m.NodeTypeAttr != ST_TLTimeNodeTypeUnset { attr, err := m.NodeTypeAttr.MarshalXMLAttr(xml.Name{Local: "nodeType"}) if err != nil { return err } start.Attr = append(start.Attr, attr) } if m.NodePhAttr != nil { start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "nodePh"}, Value: fmt.Sprintf("%v", *m.NodePhAttr)}) } e.EncodeToken(start) start.Attr = nil if m.StCondLst != nil { sestCondLst := xml.StartElement{Name: xml.Name{Local: "p:stCondLst"}} e.EncodeElement(m.StCondLst, sestCondLst) } if m.EndCondLst != nil { seendCondLst := xml.StartElement{Name: xml.Name{Local: "p:endCondLst"}} e.EncodeElement(m.EndCondLst, seendCondLst) } if m.EndSync != nil { seendSync := xml.StartElement{Name: xml.Name{Local: "p:endSync"}} e.EncodeElement(m.EndSync, seendSync) } if m.Iterate != nil { seiterate := xml.StartElement{Name: xml.Name{Local: "p:iterate"}} e.EncodeElement(m.Iterate, seiterate) } if m.ChildTnLst != nil { sechildTnLst := xml.StartElement{Name: xml.Name{Local: "p:childTnLst"}} e.EncodeElement(m.ChildTnLst, sechildTnLst) } if m.SubTnLst != nil { sesubTnLst := xml.StartElement{Name: xml.Name{Local: "p:subTnLst"}} e.EncodeElement(m.SubTnLst, sesubTnLst) } e.EncodeToken(xml.EndElement{Name: start.Name}) return nil } func (m *CT_TLCommonTimeNodeData) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { // initialize to default for _, attr := range start.Attr { if attr.Name.Local == "id" { parsed, err := strconv.ParseUint(attr.Value, 10, 32) if err != nil { return err } // SPECIAL pt := uint32(parsed) m.IdAttr = &pt } if attr.Name.Local == "presetID" { parsed, err := strconv.ParseInt(attr.Value, 10, 32) if err != nil { return err } // SPECIAL pt := int32(parsed) m.PresetIDAttr = &pt } if attr.Name.Local == "presetClass" { m.PresetClassAttr.UnmarshalXMLAttr(attr) } if attr.Name.Local == "presetSubtype" { parsed, err := strconv.ParseInt(attr.Value, 10, 32) if err != nil { return err } // SPECIAL pt := int32(parsed) m.PresetSubtypeAttr = &pt } if attr.Name.Local == "dur" { parsed, err := ParseUnionST_TLTime(attr.Value) if err != nil { return err } m.DurAttr = &parsed } if attr.Name.Local == "repeatCount" { parsed, err := ParseUnionST_TLTime(attr.Value) if err != nil { return err } m.RepeatCountAttr = &parsed } if attr.Name.Local == "repeatDur" { parsed, err := ParseUnionST_TLTime(attr.Value) if err != nil { return err } m.RepeatDurAttr = &parsed } if attr.Name.Local == "spd" { parsed, err := ParseUnionST_Percentage(attr.Value) if err != nil { return err } m.SpdAttr = &parsed } if attr.Name.Local == "accel" { parsed, err := ParseUnionST_PositiveFixedPercentage(attr.Value) if err != nil { return err } m.AccelAttr = &parsed } if attr.Name.Local == "decel" { parsed, err := ParseUnionST_PositiveFixedPercentage(attr.Value) if err != nil { return err } m.DecelAttr = &parsed } if attr.Name.Local == "autoRev" { parsed, err := strconv.ParseBool(attr.Value) if err != nil { return err } m.AutoRevAttr = &parsed } if attr.Name.Local == "restart" { m.RestartAttr.UnmarshalXMLAttr(attr) } if attr.Name.Local == "fill" { m.FillAttr.UnmarshalXMLAttr(attr) } if attr.Name.Local == "syncBehavior" { m.SyncBehaviorAttr.UnmarshalXMLAttr(attr) } if attr.Name.Local == "tmFilter" { parsed, err := attr.Value, error(nil) if err != nil { return err } m.TmFilterAttr = &parsed } if attr.Name.Local == "evtFilter" { parsed, err := attr.Value, error(nil) if err != nil { return err } m.EvtFilterAttr = &parsed } if attr.Name.Local == "display" { parsed, err := strconv.ParseBool(attr.Value) if err != nil { return err } m.DisplayAttr = &parsed } if attr.Name.Local == "masterRel" { m.MasterRelAttr.UnmarshalXMLAttr(attr) } if attr.Name.Local == "bldLvl" { parsed, err := strconv.ParseInt(attr.Value, 10, 32) if err != nil { return err } // SPECIAL pt := int32(parsed) m.BldLvlAttr = &pt } if attr.Name.Local == "grpId" { parsed, err := strconv.ParseUint(attr.Value, 10, 32) if err != nil { return err } // SPECIAL pt := uint32(parsed) m.GrpIdAttr = &pt } if attr.Name.Local == "afterEffect" { parsed, err := strconv.ParseBool(attr.Value) if err != nil { return err } m.AfterEffectAttr = &parsed } if attr.Name.Local == "nodeType" { m.NodeTypeAttr.UnmarshalXMLAttr(attr) } if attr.Name.Local == "nodePh" { parsed, err := strconv.ParseBool(attr.Value) if err != nil { return err } m.NodePhAttr = &parsed } } lCT_TLCommonTimeNodeData: for { tok, err := d.Token() if err != nil { return err } switch el := tok.(type) { case xml.StartElement: switch el.Name.Local { case "stCondLst": m.StCondLst = NewCT_TLTimeConditionList() if err := d.DecodeElement(m.StCondLst, &el); err != nil { return err } case "endCondLst": m.EndCondLst = NewCT_TLTimeConditionList() if err := d.DecodeElement(m.EndCondLst, &el); err != nil { return err } case "endSync": m.EndSync = NewCT_TLTimeCondition() if err := d.DecodeElement(m.EndSync, &el); err != nil { return err } case "iterate": m.Iterate = NewCT_TLIterateData() if err := d.DecodeElement(m.Iterate, &el); err != nil { return err } case "childTnLst": m.ChildTnLst = NewCT_TimeNodeList() if err := d.DecodeElement(m.ChildTnLst, &el); err != nil { return err } case "subTnLst": m.SubTnLst = NewCT_TimeNodeList() if err := d.DecodeElement(m.SubTnLst, &el); err != nil { return err } default: log.Printf("skipping unsupported element %v", el.Name) if err := d.Skip(); err != nil { return err } } case xml.EndElement: break lCT_TLCommonTimeNodeData case xml.CharData: } } return nil } func (m *CT_TLCommonTimeNodeData) Validate() error { return m.ValidateWithPath("CT_TLCommonTimeNodeData") } func (m *CT_TLCommonTimeNodeData) ValidateWithPath(path string) error { if err := m.PresetClassAttr.ValidateWithPath(path + "/PresetClassAttr"); err != nil { return err } if m.DurAttr != nil { if err := m.DurAttr.ValidateWithPath(path + "/DurAttr"); err != nil { return err } } if m.RepeatCountAttr != nil { if err := m.RepeatCountAttr.ValidateWithPath(path + "/RepeatCountAttr"); err != nil { return err } } if m.RepeatDurAttr != nil { if err := m.RepeatDurAttr.ValidateWithPath(path + "/RepeatDurAttr"); err != nil { return err } } if m.SpdAttr != nil { if err := m.SpdAttr.ValidateWithPath(path + "/SpdAttr"); err != nil { return err } } if m.AccelAttr != nil { if err := m.AccelAttr.ValidateWithPath(path + "/AccelAttr"); err != nil { return err } } if m.DecelAttr != nil { if err := m.DecelAttr.ValidateWithPath(path + "/DecelAttr"); err != nil { return err } } if err := m.RestartAttr.ValidateWithPath(path + "/RestartAttr"); err != nil { return err } if err := m.FillAttr.ValidateWithPath(path + "/FillAttr"); err != nil { return err } if err := m.SyncBehaviorAttr.ValidateWithPath(path + "/SyncBehaviorAttr"); err != nil { return err } if err := m.MasterRelAttr.ValidateWithPath(path + "/MasterRelAttr"); err != nil { return err } if err := m.NodeTypeAttr.ValidateWithPath(path + "/NodeTypeAttr"); err != nil { return err } if m.StCondLst != nil { if err := m.StCondLst.ValidateWithPath(path + "/StCondLst"); err != nil { return err } } if m.EndCondLst != nil { if err := m.EndCondLst.ValidateWithPath(path + "/EndCondLst"); err != nil { return err } } if m.EndSync != nil { if err := m.EndSync.ValidateWithPath(path + "/EndSync"); err != nil { return err } } if m.Iterate != nil { if err := m.Iterate.ValidateWithPath(path + "/Iterate"); err != nil { return err } } if m.ChildTnLst != nil { if err := m.ChildTnLst.ValidateWithPath(path + "/ChildTnLst"); err != nil { return err } } if m.SubTnLst != nil { if err := m.SubTnLst.ValidateWithPath(path + "/SubTnLst"); err != nil { return err } } return nil }