        X3DLayoutNode : X3DChildNode {
}

Layout : X3DLayoutNode {
  MFString [in,out] align       ["CENTER","CENTER"]
    range: TODO: ["LEFT"|"CENTER"|"RIGHT","BOTTOM"|"CENTER"|"TOP"]
    # TODO: enumerated-type: ...
  MFFloat  [in,out] offset      [0,0]
    range: (-Inf,Inf)
  MFString [in,out] offsetUnits ["WORLD","WORLD"]
    range: TODO: ["WORLD","FRACTION","PIXEL"]
    # TODO: enumerated-type: ...
  MFString [in,out] scaleMode   ["NONE","NONE"]
    range: TODO: ["NONE","FRACTION","STRETCH","PIXEL"]
    # TODO: enumerated-type: ...
  MFFloat  [in,out] size        [1,1]
    range: (0,Inf)
  MFString [in,out] sizeUnits   ["WORLD","WORLD"]
    range: TODO: ["WORLD","FRACTION","PIXEL"]
    # TODO: enumerated-type: ...
}

LayoutGroup : X3DGroupingNode {
  SFNode  [in,out] layout         NULL
    range: X3DLayoutNode
  SFNode  [in,out] viewport       NULL
    range: X3DViewportNode
}

LayoutLayer : X3DLayerNode {
  MFNode [in]     addChildren    []
    range: X3DChildNode
  MFNode [in]     removeChildren []
    range: X3DChildNode
  MFNode [in,out] children       []
    range: X3DChildNode
  SFNode [in,out] layout         NULL
    range: X3DLayoutNode
}

ScreenFontStyle : X3DFontStyleNode {
  MFString []       family      ["SERIF"]
  SFBool   []       horizontal  TRUE
  MFString []       justify     ["BEGIN"]
    range: TODO: ["BEGIN","END","FIRST","MIDDLE",""]
    # TODO: enumerated-type: TX3DFontJustify JustifyToString [fjBegin]
  SFString []       language    ""
  SFBool   []       leftToRight TRUE
  SFFloat  []       pointSize   12.0
    range: (0,Inf)
  SFFloat  []       spacing     1.0
    range: [0,Inf)
  SFString []       style       "PLAIN"
    range: ["PLAIN"|"BOLD"|"ITALIC"|"BOLDITALIC"|""]
    enumerated-type: TX3DFontStyle FontStyleNames fsPlain
  SFBool   []       topToBottom TRUE
}

ScreenGroup : X3DGroupingNode {
}
