mirror of
https://github.com/unidoc/unioffice.git
synced 2025-04-29 13:49:10 +08:00
285 lines
7.3 KiB
Go
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
|
|
}
|