/* 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" );
}