/* Example of an OADL equivalent to Hoverware graphic object definitions */ class GraphBase { public var Rows, Columns, Color = {1.0, 1.0, 1.0}, Scale = {1.0, 1.0, 1.0}, Rotate = {0.0, 0.0, 0.0}, Position = {0.0, 0.0, 0.0}, ClassName = "GraphBase"; public proc create() { say( "GraphBase.create; parent = ", self.parent.ClassName, "\n" ); } operator {} () { say( "GraphBase.complete; parent = ", self.parent.ClassName, "\n" ); } } class hwSphere(GraphBase) { public var ClassName = "hwSphere", Radius = 1.0, LatRange = {-90.0, 90.0}, LonRange = {0.0, 360.0}; } class hwRing(GraphBase) { public var ClassName = "hwRing", Radius = {0.5, 1.0}, LonRange = {0.0, 360.0}; } class hwCone(GraphBase) { public var ClassName = "hwCone", Radius = {0.0, 1.0}, Height = 1.0, LonRange = {0.0, 360.0}; } class hwTorus(GraphBase) { public var ClassName = "hwTorus", Radius = {0.5, 1.0}, LatRange = {0.0, 360.0}, LonRange = {0.0, 360.0}; } class hwMesh(GraphBase) { public var ClassName = "hwMesh", Data; } class hwPolygon(GraphBase) { public var ClassName = "hwPolygon", Data; } class hwPolyline(GraphBase) { public var ClassName = "hwPolyline", Data; } class hwPolymarker(GraphBase) { public var ClassName = "hwPolymarker", Data; } class hwBox(GraphBase) { public var ClassName = "hwBox", Corners = {0,0,0,1,1,1}; } class hwSurfRev(GraphBase) { public var ClassName = "hwSurfRev", Sweep = {360.0}, Data; } class hwGroup(GraphBase) { public var ClassName = "hwGroup", Data; } class hwAltMesh(GraphBase) { public var ClassName = "hwAltMesh", Data; } class hwString(GraphBase) { public var ClassName = "hwString", Data; } hwGroup Hack { Data = { /*new*/ hwSphere { Color = {1.0, 0.0, 0.0} Radius = 100.0 }, /*new*/ hwRing { Color = {0.0, 1.0, 0.0} Radius = {150.0, 200.0} } } } proc main() { say( "hwSphere.parent = ", hwSphere.parent.ClassName, "\n" ); say( "Hack.parent = ", Hack.parent.ClassName, "\n" ); }