/* Copyright (C) 1994, Digital Equipment Corporation                         */
/* Digital Internal Use Only                                                 */
/* All rights reserved.                                                      */
/*                                                                           */
/* Last modified on Thu Oct 12 13:16:26 PDT 1995 by najork                   */
/*       Created on Thu Mar  3 19:12:25 PST 1994 by najork                   */

import ("parseparams")
import ("vbtkit")

Interface ("X_PEX_Base")
Interface ("X_PEX_BaseProxy")
if PLATFORM_SUPPORTS_X and PLATFORM_SUPPORTS_DECPEX
  include_dir ("x-pex")
else
  include_dir ("no-x-pex")
end

Interface ("X_OpenGL_Base")
Interface ("X_OpenGL_BaseProxy")
if PLATFORM_SUPPORTS_X and PLATFORM_SUPPORTS_OPENGL
  include_dir ("x-opengl")
else
  include_dir ("no-x-opengl")
end

Interface ("Win_OpenGL_Base")
Interface ("Win_OpenGL_BaseProxy")
if equal (OS_TYPE, "WIN32") and PLATFORM_SUPPORTS_OPENGL
  include_dir ("win-opengl")
else
  include_dir ("no-win-opengl")
end

Module    ("Mth")
Module    ("AuxG")
Interface ("BSphere")
Module    ("Clock")
Module    ("Anim3D")
Module    ("AnimRequestQueue")
Interface ("AnimRequestQueuePrivate")
Module    ("AnimServer")
Interface ("ProxiedObj")

/* Points, Matrices, Quaternions */

Module    ("Point3")
Module    ("Matrix4")
Module    ("Quaternion")

/* Callback Objects */

Interface ("CB")

Module    ("MouseCB")
Interface ("MouseCBProxy")

Module    ("PositionCB")
Interface ("PositionCBProxy")

Module    ("KeyCB")
Interface ("KeyCBProxy")

/* Callback Stacks */

generic_module ("CBStack")

readonly proc CBStack (elt) is
  build_generic_intf (elt & "Stack", "CBStack", [elt], HIDDEN)
  build_generic_impl (elt & "Stack", "CBStack", [elt])
end

CBStack ("MouseCB")
CBStack ("PositionCB")
CBStack ("KeyCB")

/*** Graphics bases ***/

Module ("GraphicsBase")
interface ("GraphicsBasePrivate")

% Module    ("MK_Base")
% Interface ("MK_BaseProxy")

/*** Property Related Stuff ***/

Module    ("PropList")

/*** Animation Handle ***/

Module    ("AnimHandle")
Interface ("AnimHandlePrivate")
Interface ("AnimHandleProxy")

/*** Property Names and Property Values ***/

Module    ("Prop")
Interface ("PropPrivate")
Interface ("PropProxy")

Module    ("BooleanProp")
Interface ("BooleanPropPrivate")
Interface ("BooleanPropProxy")

Module    ("RealProp")
Interface ("RealPropPrivate")
Interface ("RealPropProxy")

Module    ("PointProp")
Interface ("PointPropPrivate")
Interface ("PointPropProxy")

Module    ("ColorProp")
Interface ("ColorPropPrivate")
Interface ("ColorPropProxy")

Module    ("RasterModeProp")
Interface ("RasterModePropPrivate")
Interface ("RasterModePropProxy")

Module    ("ShadingProp")
Interface ("ShadingPropPrivate")
Interface ("ShadingPropProxy")

Module    ("LineTypeProp")
Interface ("LineTypePropPrivate")
Interface ("LineTypePropProxy")

Module    ("MarkerTypeProp")
Interface ("MarkerTypePropPrivate")
Interface ("MarkerTypePropProxy")

Module    ("TransformProp")
Interface ("TransformPropPrivate")
Interface ("TransformPropProxy")

/*** Geometric Objects ***/

Module    ("GO")
Interface ("GOPrivate")

Module    ("GroupGO")
Interface ("GroupGOPrivate")
Interface ("GroupGOProxy")

Module    ("RootGO")
Interface ("RootGOPrivate")
Interface ("RootGOProxy")

Module    ("LineGO")
Interface ("LineGOProxy")

Module    ("MarkerGO")
Interface ("MarkerGOProxy")

Module    ("SurfaceGO")

Module    ("PolygonGO")
Interface ("PolygonGOProxy")

Module    ("QuadMeshGO")
Interface ("QuadMeshGOProxy")

Module    ("BoxGO")
Interface ("BoxGOProxy")

Module    ("SphereGO")
Interface ("SphereGOProxy")

Module    ("DiskGO")
Interface ("DiskGOProxy")

Module    ("CylinderGO")
Interface ("CylinderGOProxy")

Module    ("ConeGO")
Interface ("ConeGOProxy")

Module    ("TorusGO")
Interface ("TorusGOProxy")

Module    ("LightGO")

Module    ("AmbientLightGO")
Interface ("AmbientLightGOProxy")

Module    ("VectorLightGO")
Interface ("VectorLightGOProxy")

Module    ("PointLightGO")
Interface ("PointLightGOProxy")

Module    ("SpotLightGO")
Interface ("SpotLightGOProxy")

Module    ("CameraGO")
Interface ("CameraGOPrivate")	

Module    ("OrthoCameraGO")
Interface ("OrthoCameraGOProxy")

Module    ("PerspCameraGO")
Interface ("PerspCameraGOProxy")

/*** wrapping things up ***/

Library ("anim3D")
