2017-08-28 20:56:18 -05:00
|
|
|
// 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 drawingml
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/xml"
|
|
|
|
"log"
|
|
|
|
)
|
|
|
|
|
|
|
|
type EG_Effect struct {
|
|
|
|
Cont *CT_EffectContainer
|
|
|
|
Effect *CT_EffectReference
|
|
|
|
AlphaBiLevel *CT_AlphaBiLevelEffect
|
|
|
|
AlphaCeiling *CT_AlphaCeilingEffect
|
|
|
|
AlphaFloor *CT_AlphaFloorEffect
|
|
|
|
AlphaInv *CT_AlphaInverseEffect
|
|
|
|
AlphaMod *CT_AlphaModulateEffect
|
|
|
|
AlphaModFix *CT_AlphaModulateFixedEffect
|
|
|
|
AlphaOutset *CT_AlphaOutsetEffect
|
|
|
|
AlphaRepl *CT_AlphaReplaceEffect
|
|
|
|
BiLevel *CT_BiLevelEffect
|
|
|
|
Blend *CT_BlendEffect
|
|
|
|
Blur *CT_BlurEffect
|
|
|
|
ClrChange *CT_ColorChangeEffect
|
|
|
|
ClrRepl *CT_ColorReplaceEffect
|
|
|
|
Duotone *CT_DuotoneEffect
|
|
|
|
Fill *CT_FillEffect
|
|
|
|
FillOverlay *CT_FillOverlayEffect
|
|
|
|
Glow *CT_GlowEffect
|
|
|
|
Grayscl *CT_GrayscaleEffect
|
|
|
|
Hsl *CT_HSLEffect
|
|
|
|
InnerShdw *CT_InnerShadowEffect
|
|
|
|
Lum *CT_LuminanceEffect
|
|
|
|
OuterShdw *CT_OuterShadowEffect
|
|
|
|
PrstShdw *CT_PresetShadowEffect
|
|
|
|
Reflection *CT_ReflectionEffect
|
|
|
|
RelOff *CT_RelativeOffsetEffect
|
|
|
|
SoftEdge *CT_SoftEdgesEffect
|
|
|
|
Tint *CT_TintEffect
|
|
|
|
Xfrm *CT_TransformEffect
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewEG_Effect() *EG_Effect {
|
|
|
|
ret := &EG_Effect{}
|
|
|
|
return ret
|
|
|
|
}
|
2017-09-01 15:19:23 -05:00
|
|
|
|
2017-08-28 20:56:18 -05:00
|
|
|
func (m *EG_Effect) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
|
|
|
|
if m == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
if m.Cont != nil {
|
|
|
|
secont := xml.StartElement{Name: xml.Name{Local: "a:cont"}}
|
|
|
|
e.EncodeElement(m.Cont, secont)
|
|
|
|
}
|
|
|
|
if m.Effect != nil {
|
|
|
|
seeffect := xml.StartElement{Name: xml.Name{Local: "a:effect"}}
|
|
|
|
e.EncodeElement(m.Effect, seeffect)
|
|
|
|
}
|
|
|
|
if m.AlphaBiLevel != nil {
|
|
|
|
sealphaBiLevel := xml.StartElement{Name: xml.Name{Local: "a:alphaBiLevel"}}
|
|
|
|
e.EncodeElement(m.AlphaBiLevel, sealphaBiLevel)
|
|
|
|
}
|
|
|
|
if m.AlphaCeiling != nil {
|
|
|
|
sealphaCeiling := xml.StartElement{Name: xml.Name{Local: "a:alphaCeiling"}}
|
|
|
|
e.EncodeElement(m.AlphaCeiling, sealphaCeiling)
|
|
|
|
}
|
|
|
|
if m.AlphaFloor != nil {
|
|
|
|
sealphaFloor := xml.StartElement{Name: xml.Name{Local: "a:alphaFloor"}}
|
|
|
|
e.EncodeElement(m.AlphaFloor, sealphaFloor)
|
|
|
|
}
|
|
|
|
if m.AlphaInv != nil {
|
|
|
|
sealphaInv := xml.StartElement{Name: xml.Name{Local: "a:alphaInv"}}
|
|
|
|
e.EncodeElement(m.AlphaInv, sealphaInv)
|
|
|
|
}
|
|
|
|
if m.AlphaMod != nil {
|
|
|
|
sealphaMod := xml.StartElement{Name: xml.Name{Local: "a:alphaMod"}}
|
|
|
|
e.EncodeElement(m.AlphaMod, sealphaMod)
|
|
|
|
}
|
|
|
|
if m.AlphaModFix != nil {
|
|
|
|
sealphaModFix := xml.StartElement{Name: xml.Name{Local: "a:alphaModFix"}}
|
|
|
|
e.EncodeElement(m.AlphaModFix, sealphaModFix)
|
|
|
|
}
|
|
|
|
if m.AlphaOutset != nil {
|
|
|
|
sealphaOutset := xml.StartElement{Name: xml.Name{Local: "a:alphaOutset"}}
|
|
|
|
e.EncodeElement(m.AlphaOutset, sealphaOutset)
|
|
|
|
}
|
|
|
|
if m.AlphaRepl != nil {
|
|
|
|
sealphaRepl := xml.StartElement{Name: xml.Name{Local: "a:alphaRepl"}}
|
|
|
|
e.EncodeElement(m.AlphaRepl, sealphaRepl)
|
|
|
|
}
|
|
|
|
if m.BiLevel != nil {
|
|
|
|
sebiLevel := xml.StartElement{Name: xml.Name{Local: "a:biLevel"}}
|
|
|
|
e.EncodeElement(m.BiLevel, sebiLevel)
|
|
|
|
}
|
|
|
|
if m.Blend != nil {
|
|
|
|
seblend := xml.StartElement{Name: xml.Name{Local: "a:blend"}}
|
|
|
|
e.EncodeElement(m.Blend, seblend)
|
|
|
|
}
|
|
|
|
if m.Blur != nil {
|
|
|
|
seblur := xml.StartElement{Name: xml.Name{Local: "a:blur"}}
|
|
|
|
e.EncodeElement(m.Blur, seblur)
|
|
|
|
}
|
|
|
|
if m.ClrChange != nil {
|
|
|
|
seclrChange := xml.StartElement{Name: xml.Name{Local: "a:clrChange"}}
|
|
|
|
e.EncodeElement(m.ClrChange, seclrChange)
|
|
|
|
}
|
|
|
|
if m.ClrRepl != nil {
|
|
|
|
seclrRepl := xml.StartElement{Name: xml.Name{Local: "a:clrRepl"}}
|
|
|
|
e.EncodeElement(m.ClrRepl, seclrRepl)
|
|
|
|
}
|
|
|
|
if m.Duotone != nil {
|
|
|
|
seduotone := xml.StartElement{Name: xml.Name{Local: "a:duotone"}}
|
|
|
|
e.EncodeElement(m.Duotone, seduotone)
|
|
|
|
}
|
|
|
|
if m.Fill != nil {
|
|
|
|
sefill := xml.StartElement{Name: xml.Name{Local: "a:fill"}}
|
|
|
|
e.EncodeElement(m.Fill, sefill)
|
|
|
|
}
|
|
|
|
if m.FillOverlay != nil {
|
|
|
|
sefillOverlay := xml.StartElement{Name: xml.Name{Local: "a:fillOverlay"}}
|
|
|
|
e.EncodeElement(m.FillOverlay, sefillOverlay)
|
|
|
|
}
|
|
|
|
if m.Glow != nil {
|
|
|
|
seglow := xml.StartElement{Name: xml.Name{Local: "a:glow"}}
|
|
|
|
e.EncodeElement(m.Glow, seglow)
|
|
|
|
}
|
|
|
|
if m.Grayscl != nil {
|
|
|
|
segrayscl := xml.StartElement{Name: xml.Name{Local: "a:grayscl"}}
|
|
|
|
e.EncodeElement(m.Grayscl, segrayscl)
|
|
|
|
}
|
|
|
|
if m.Hsl != nil {
|
|
|
|
sehsl := xml.StartElement{Name: xml.Name{Local: "a:hsl"}}
|
|
|
|
e.EncodeElement(m.Hsl, sehsl)
|
|
|
|
}
|
|
|
|
if m.InnerShdw != nil {
|
|
|
|
seinnerShdw := xml.StartElement{Name: xml.Name{Local: "a:innerShdw"}}
|
|
|
|
e.EncodeElement(m.InnerShdw, seinnerShdw)
|
|
|
|
}
|
|
|
|
if m.Lum != nil {
|
|
|
|
selum := xml.StartElement{Name: xml.Name{Local: "a:lum"}}
|
|
|
|
e.EncodeElement(m.Lum, selum)
|
|
|
|
}
|
|
|
|
if m.OuterShdw != nil {
|
|
|
|
seouterShdw := xml.StartElement{Name: xml.Name{Local: "a:outerShdw"}}
|
|
|
|
e.EncodeElement(m.OuterShdw, seouterShdw)
|
|
|
|
}
|
|
|
|
if m.PrstShdw != nil {
|
|
|
|
seprstShdw := xml.StartElement{Name: xml.Name{Local: "a:prstShdw"}}
|
|
|
|
e.EncodeElement(m.PrstShdw, seprstShdw)
|
|
|
|
}
|
|
|
|
if m.Reflection != nil {
|
|
|
|
sereflection := xml.StartElement{Name: xml.Name{Local: "a:reflection"}}
|
|
|
|
e.EncodeElement(m.Reflection, sereflection)
|
|
|
|
}
|
|
|
|
if m.RelOff != nil {
|
|
|
|
serelOff := xml.StartElement{Name: xml.Name{Local: "a:relOff"}}
|
|
|
|
e.EncodeElement(m.RelOff, serelOff)
|
|
|
|
}
|
|
|
|
if m.SoftEdge != nil {
|
|
|
|
sesoftEdge := xml.StartElement{Name: xml.Name{Local: "a:softEdge"}}
|
|
|
|
e.EncodeElement(m.SoftEdge, sesoftEdge)
|
|
|
|
}
|
|
|
|
if m.Tint != nil {
|
|
|
|
setint := xml.StartElement{Name: xml.Name{Local: "a:tint"}}
|
|
|
|
e.EncodeElement(m.Tint, setint)
|
|
|
|
}
|
|
|
|
if m.Xfrm != nil {
|
|
|
|
sexfrm := xml.StartElement{Name: xml.Name{Local: "a:xfrm"}}
|
|
|
|
e.EncodeElement(m.Xfrm, sexfrm)
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
2017-09-01 15:19:23 -05:00
|
|
|
|
2017-08-28 20:56:18 -05:00
|
|
|
func (m *EG_Effect) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
|
|
|
|
// initialize to default
|
|
|
|
lEG_Effect:
|
|
|
|
for {
|
|
|
|
tok, err := d.Token()
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
switch el := tok.(type) {
|
|
|
|
case xml.StartElement:
|
|
|
|
switch el.Name.Local {
|
|
|
|
case "cont":
|
|
|
|
m.Cont = NewCT_EffectContainer()
|
|
|
|
if err := d.DecodeElement(m.Cont, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "effect":
|
|
|
|
m.Effect = NewCT_EffectReference()
|
|
|
|
if err := d.DecodeElement(m.Effect, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "alphaBiLevel":
|
|
|
|
m.AlphaBiLevel = NewCT_AlphaBiLevelEffect()
|
|
|
|
if err := d.DecodeElement(m.AlphaBiLevel, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "alphaCeiling":
|
|
|
|
m.AlphaCeiling = NewCT_AlphaCeilingEffect()
|
|
|
|
if err := d.DecodeElement(m.AlphaCeiling, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "alphaFloor":
|
|
|
|
m.AlphaFloor = NewCT_AlphaFloorEffect()
|
|
|
|
if err := d.DecodeElement(m.AlphaFloor, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "alphaInv":
|
|
|
|
m.AlphaInv = NewCT_AlphaInverseEffect()
|
|
|
|
if err := d.DecodeElement(m.AlphaInv, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "alphaMod":
|
|
|
|
m.AlphaMod = NewCT_AlphaModulateEffect()
|
|
|
|
if err := d.DecodeElement(m.AlphaMod, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "alphaModFix":
|
|
|
|
m.AlphaModFix = NewCT_AlphaModulateFixedEffect()
|
|
|
|
if err := d.DecodeElement(m.AlphaModFix, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "alphaOutset":
|
|
|
|
m.AlphaOutset = NewCT_AlphaOutsetEffect()
|
|
|
|
if err := d.DecodeElement(m.AlphaOutset, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "alphaRepl":
|
|
|
|
m.AlphaRepl = NewCT_AlphaReplaceEffect()
|
|
|
|
if err := d.DecodeElement(m.AlphaRepl, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "biLevel":
|
|
|
|
m.BiLevel = NewCT_BiLevelEffect()
|
|
|
|
if err := d.DecodeElement(m.BiLevel, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "blend":
|
|
|
|
m.Blend = NewCT_BlendEffect()
|
|
|
|
if err := d.DecodeElement(m.Blend, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "blur":
|
|
|
|
m.Blur = NewCT_BlurEffect()
|
|
|
|
if err := d.DecodeElement(m.Blur, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "clrChange":
|
|
|
|
m.ClrChange = NewCT_ColorChangeEffect()
|
|
|
|
if err := d.DecodeElement(m.ClrChange, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "clrRepl":
|
|
|
|
m.ClrRepl = NewCT_ColorReplaceEffect()
|
|
|
|
if err := d.DecodeElement(m.ClrRepl, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "duotone":
|
|
|
|
m.Duotone = NewCT_DuotoneEffect()
|
|
|
|
if err := d.DecodeElement(m.Duotone, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "fill":
|
|
|
|
m.Fill = NewCT_FillEffect()
|
|
|
|
if err := d.DecodeElement(m.Fill, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "fillOverlay":
|
|
|
|
m.FillOverlay = NewCT_FillOverlayEffect()
|
|
|
|
if err := d.DecodeElement(m.FillOverlay, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "glow":
|
|
|
|
m.Glow = NewCT_GlowEffect()
|
|
|
|
if err := d.DecodeElement(m.Glow, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "grayscl":
|
|
|
|
m.Grayscl = NewCT_GrayscaleEffect()
|
|
|
|
if err := d.DecodeElement(m.Grayscl, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "hsl":
|
|
|
|
m.Hsl = NewCT_HSLEffect()
|
|
|
|
if err := d.DecodeElement(m.Hsl, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "innerShdw":
|
|
|
|
m.InnerShdw = NewCT_InnerShadowEffect()
|
|
|
|
if err := d.DecodeElement(m.InnerShdw, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "lum":
|
|
|
|
m.Lum = NewCT_LuminanceEffect()
|
|
|
|
if err := d.DecodeElement(m.Lum, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "outerShdw":
|
|
|
|
m.OuterShdw = NewCT_OuterShadowEffect()
|
|
|
|
if err := d.DecodeElement(m.OuterShdw, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "prstShdw":
|
|
|
|
m.PrstShdw = NewCT_PresetShadowEffect()
|
|
|
|
if err := d.DecodeElement(m.PrstShdw, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "reflection":
|
|
|
|
m.Reflection = NewCT_ReflectionEffect()
|
|
|
|
if err := d.DecodeElement(m.Reflection, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "relOff":
|
|
|
|
m.RelOff = NewCT_RelativeOffsetEffect()
|
|
|
|
if err := d.DecodeElement(m.RelOff, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "softEdge":
|
|
|
|
m.SoftEdge = NewCT_SoftEdgesEffect()
|
|
|
|
if err := d.DecodeElement(m.SoftEdge, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "tint":
|
|
|
|
m.Tint = NewCT_TintEffect()
|
|
|
|
if err := d.DecodeElement(m.Tint, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
case "xfrm":
|
|
|
|
m.Xfrm = NewCT_TransformEffect()
|
|
|
|
if err := d.DecodeElement(m.Xfrm, &el); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
default:
|
2017-09-01 16:52:12 -05:00
|
|
|
log.Printf("skipping unsupported element on EG_Effect %v", el.Name)
|
2017-08-28 20:56:18 -05:00
|
|
|
if err := d.Skip(); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
case xml.EndElement:
|
|
|
|
break lEG_Effect
|
|
|
|
case xml.CharData:
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
2017-09-01 15:19:23 -05:00
|
|
|
|
|
|
|
// Validate validates the EG_Effect and its children
|
2017-08-28 20:56:18 -05:00
|
|
|
func (m *EG_Effect) Validate() error {
|
|
|
|
return m.ValidateWithPath("EG_Effect")
|
|
|
|
}
|
2017-09-01 15:19:23 -05:00
|
|
|
|
|
|
|
// ValidateWithPath validates the EG_Effect and its children, prefixing error messages with path
|
2017-08-28 20:56:18 -05:00
|
|
|
func (m *EG_Effect) ValidateWithPath(path string) error {
|
|
|
|
if m.Cont != nil {
|
|
|
|
if err := m.Cont.ValidateWithPath(path + "/Cont"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Effect != nil {
|
|
|
|
if err := m.Effect.ValidateWithPath(path + "/Effect"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.AlphaBiLevel != nil {
|
|
|
|
if err := m.AlphaBiLevel.ValidateWithPath(path + "/AlphaBiLevel"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.AlphaCeiling != nil {
|
|
|
|
if err := m.AlphaCeiling.ValidateWithPath(path + "/AlphaCeiling"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.AlphaFloor != nil {
|
|
|
|
if err := m.AlphaFloor.ValidateWithPath(path + "/AlphaFloor"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.AlphaInv != nil {
|
|
|
|
if err := m.AlphaInv.ValidateWithPath(path + "/AlphaInv"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.AlphaMod != nil {
|
|
|
|
if err := m.AlphaMod.ValidateWithPath(path + "/AlphaMod"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.AlphaModFix != nil {
|
|
|
|
if err := m.AlphaModFix.ValidateWithPath(path + "/AlphaModFix"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.AlphaOutset != nil {
|
|
|
|
if err := m.AlphaOutset.ValidateWithPath(path + "/AlphaOutset"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.AlphaRepl != nil {
|
|
|
|
if err := m.AlphaRepl.ValidateWithPath(path + "/AlphaRepl"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.BiLevel != nil {
|
|
|
|
if err := m.BiLevel.ValidateWithPath(path + "/BiLevel"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Blend != nil {
|
|
|
|
if err := m.Blend.ValidateWithPath(path + "/Blend"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Blur != nil {
|
|
|
|
if err := m.Blur.ValidateWithPath(path + "/Blur"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.ClrChange != nil {
|
|
|
|
if err := m.ClrChange.ValidateWithPath(path + "/ClrChange"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.ClrRepl != nil {
|
|
|
|
if err := m.ClrRepl.ValidateWithPath(path + "/ClrRepl"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Duotone != nil {
|
|
|
|
if err := m.Duotone.ValidateWithPath(path + "/Duotone"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Fill != nil {
|
|
|
|
if err := m.Fill.ValidateWithPath(path + "/Fill"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.FillOverlay != nil {
|
|
|
|
if err := m.FillOverlay.ValidateWithPath(path + "/FillOverlay"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Glow != nil {
|
|
|
|
if err := m.Glow.ValidateWithPath(path + "/Glow"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Grayscl != nil {
|
|
|
|
if err := m.Grayscl.ValidateWithPath(path + "/Grayscl"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Hsl != nil {
|
|
|
|
if err := m.Hsl.ValidateWithPath(path + "/Hsl"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.InnerShdw != nil {
|
|
|
|
if err := m.InnerShdw.ValidateWithPath(path + "/InnerShdw"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Lum != nil {
|
|
|
|
if err := m.Lum.ValidateWithPath(path + "/Lum"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.OuterShdw != nil {
|
|
|
|
if err := m.OuterShdw.ValidateWithPath(path + "/OuterShdw"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.PrstShdw != nil {
|
|
|
|
if err := m.PrstShdw.ValidateWithPath(path + "/PrstShdw"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Reflection != nil {
|
|
|
|
if err := m.Reflection.ValidateWithPath(path + "/Reflection"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.RelOff != nil {
|
|
|
|
if err := m.RelOff.ValidateWithPath(path + "/RelOff"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.SoftEdge != nil {
|
|
|
|
if err := m.SoftEdge.ValidateWithPath(path + "/SoftEdge"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Tint != nil {
|
|
|
|
if err := m.Tint.ValidateWithPath(path + "/Tint"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if m.Xfrm != nil {
|
|
|
|
if err := m.Xfrm.ValidateWithPath(path + "/Xfrm"); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|