2017-08-29 15:06:08 -05:00

285 lines
7.3 KiB
Go

// 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 wordprocessingml
import (
"encoding/xml"
"log"
)
type CT_TcPrBase struct {
// Table Cell Conditional Formatting
CnfStyle *CT_Cnf
// Preferred Table Cell Width
TcW *CT_TblWidth
// Grid Columns Spanned by Current Table Cell
GridSpan *CT_DecimalNumber
// Horizontally Merged Cell
HMerge *CT_HMerge
// Vertically Merged Cell
VMerge *CT_VMerge
// Table Cell Borders
TcBorders *CT_TcBorders
// Table Cell Shading
Shd *CT_Shd
// Don't Wrap Cell Content
NoWrap *CT_OnOff
// Single Table Cell Margins
TcMar *CT_TcMar
// Table Cell Text Flow Direction
TextDirection *CT_TextDirection
// Fit Text Within Cell
TcFitText *CT_OnOff
// Table Cell Vertical Alignment
VAlign *CT_VerticalJc
// Ignore End Of Cell Marker In Row Height Calculation
HideMark *CT_OnOff
// Header Cells Associated With Table Cell
Headers *CT_Headers
}
func NewCT_TcPrBase() *CT_TcPrBase {
ret := &CT_TcPrBase{}
return ret
}
func (m *CT_TcPrBase) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if m == nil {
return nil
}
e.EncodeToken(start)
start.Attr = nil
if m.CnfStyle != nil {
secnfStyle := xml.StartElement{Name: xml.Name{Local: "w:cnfStyle"}}
e.EncodeElement(m.CnfStyle, secnfStyle)
}
if m.TcW != nil {
setcW := xml.StartElement{Name: xml.Name{Local: "w:tcW"}}
e.EncodeElement(m.TcW, setcW)
}
if m.GridSpan != nil {
segridSpan := xml.StartElement{Name: xml.Name{Local: "w:gridSpan"}}
e.EncodeElement(m.GridSpan, segridSpan)
}
if m.HMerge != nil {
sehMerge := xml.StartElement{Name: xml.Name{Local: "w:hMerge"}}
e.EncodeElement(m.HMerge, sehMerge)
}
if m.VMerge != nil {
sevMerge := xml.StartElement{Name: xml.Name{Local: "w:vMerge"}}
e.EncodeElement(m.VMerge, sevMerge)
}
if m.TcBorders != nil {
setcBorders := xml.StartElement{Name: xml.Name{Local: "w:tcBorders"}}
e.EncodeElement(m.TcBorders, setcBorders)
}
if m.Shd != nil {
seshd := xml.StartElement{Name: xml.Name{Local: "w:shd"}}
e.EncodeElement(m.Shd, seshd)
}
if m.NoWrap != nil {
senoWrap := xml.StartElement{Name: xml.Name{Local: "w:noWrap"}}
e.EncodeElement(m.NoWrap, senoWrap)
}
if m.TcMar != nil {
setcMar := xml.StartElement{Name: xml.Name{Local: "w:tcMar"}}
e.EncodeElement(m.TcMar, setcMar)
}
if m.TextDirection != nil {
setextDirection := xml.StartElement{Name: xml.Name{Local: "w:textDirection"}}
e.EncodeElement(m.TextDirection, setextDirection)
}
if m.TcFitText != nil {
setcFitText := xml.StartElement{Name: xml.Name{Local: "w:tcFitText"}}
e.EncodeElement(m.TcFitText, setcFitText)
}
if m.VAlign != nil {
sevAlign := xml.StartElement{Name: xml.Name{Local: "w:vAlign"}}
e.EncodeElement(m.VAlign, sevAlign)
}
if m.HideMark != nil {
sehideMark := xml.StartElement{Name: xml.Name{Local: "w:hideMark"}}
e.EncodeElement(m.HideMark, sehideMark)
}
if m.Headers != nil {
seheaders := xml.StartElement{Name: xml.Name{Local: "w:headers"}}
e.EncodeElement(m.Headers, seheaders)
}
e.EncodeToken(xml.EndElement{Name: start.Name})
return nil
}
func (m *CT_TcPrBase) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
// initialize to default
lCT_TcPrBase:
for {
tok, err := d.Token()
if err != nil {
return err
}
switch el := tok.(type) {
case xml.StartElement:
switch el.Name.Local {
case "cnfStyle":
m.CnfStyle = NewCT_Cnf()
if err := d.DecodeElement(m.CnfStyle, &el); err != nil {
return err
}
case "tcW":
m.TcW = NewCT_TblWidth()
if err := d.DecodeElement(m.TcW, &el); err != nil {
return err
}
case "gridSpan":
m.GridSpan = NewCT_DecimalNumber()
if err := d.DecodeElement(m.GridSpan, &el); err != nil {
return err
}
case "hMerge":
m.HMerge = NewCT_HMerge()
if err := d.DecodeElement(m.HMerge, &el); err != nil {
return err
}
case "vMerge":
m.VMerge = NewCT_VMerge()
if err := d.DecodeElement(m.VMerge, &el); err != nil {
return err
}
case "tcBorders":
m.TcBorders = NewCT_TcBorders()
if err := d.DecodeElement(m.TcBorders, &el); err != nil {
return err
}
case "shd":
m.Shd = NewCT_Shd()
if err := d.DecodeElement(m.Shd, &el); err != nil {
return err
}
case "noWrap":
m.NoWrap = NewCT_OnOff()
if err := d.DecodeElement(m.NoWrap, &el); err != nil {
return err
}
case "tcMar":
m.TcMar = NewCT_TcMar()
if err := d.DecodeElement(m.TcMar, &el); err != nil {
return err
}
case "textDirection":
m.TextDirection = NewCT_TextDirection()
if err := d.DecodeElement(m.TextDirection, &el); err != nil {
return err
}
case "tcFitText":
m.TcFitText = NewCT_OnOff()
if err := d.DecodeElement(m.TcFitText, &el); err != nil {
return err
}
case "vAlign":
m.VAlign = NewCT_VerticalJc()
if err := d.DecodeElement(m.VAlign, &el); err != nil {
return err
}
case "hideMark":
m.HideMark = NewCT_OnOff()
if err := d.DecodeElement(m.HideMark, &el); err != nil {
return err
}
case "headers":
m.Headers = NewCT_Headers()
if err := d.DecodeElement(m.Headers, &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_TcPrBase
case xml.CharData:
}
}
return nil
}
func (m *CT_TcPrBase) Validate() error {
return m.ValidateWithPath("CT_TcPrBase")
}
func (m *CT_TcPrBase) ValidateWithPath(path string) error {
if m.CnfStyle != nil {
if err := m.CnfStyle.ValidateWithPath(path + "/CnfStyle"); err != nil {
return err
}
}
if m.TcW != nil {
if err := m.TcW.ValidateWithPath(path + "/TcW"); err != nil {
return err
}
}
if m.GridSpan != nil {
if err := m.GridSpan.ValidateWithPath(path + "/GridSpan"); err != nil {
return err
}
}
if m.HMerge != nil {
if err := m.HMerge.ValidateWithPath(path + "/HMerge"); err != nil {
return err
}
}
if m.VMerge != nil {
if err := m.VMerge.ValidateWithPath(path + "/VMerge"); err != nil {
return err
}
}
if m.TcBorders != nil {
if err := m.TcBorders.ValidateWithPath(path + "/TcBorders"); err != nil {
return err
}
}
if m.Shd != nil {
if err := m.Shd.ValidateWithPath(path + "/Shd"); err != nil {
return err
}
}
if m.NoWrap != nil {
if err := m.NoWrap.ValidateWithPath(path + "/NoWrap"); err != nil {
return err
}
}
if m.TcMar != nil {
if err := m.TcMar.ValidateWithPath(path + "/TcMar"); err != nil {
return err
}
}
if m.TextDirection != nil {
if err := m.TextDirection.ValidateWithPath(path + "/TextDirection"); err != nil {
return err
}
}
if m.TcFitText != nil {
if err := m.TcFitText.ValidateWithPath(path + "/TcFitText"); err != nil {
return err
}
}
if m.VAlign != nil {
if err := m.VAlign.ValidateWithPath(path + "/VAlign"); err != nil {
return err
}
}
if m.HideMark != nil {
if err := m.HideMark.ValidateWithPath(path + "/HideMark"); err != nil {
return err
}
}
if m.Headers != nil {
if err := m.Headers.ValidateWithPath(path + "/Headers"); err != nil {
return err
}
}
return nil
}