/*
     File:       QD3DGeometry.h
 
     Contains:   Q3Geometry methods
 
     Version:    Technology: Quickdraw 3D 1.6
                 Release:    QuickTime 7.3
 
     Copyright:  (c) 2007 (c) 1995-1999 by Apple Computer, Inc., all rights reserved.
 
     Bugs?:      For bug reports, consult the following page on
                 the World Wide Web:
 
                     http://developer.apple.com/bugreporter/
 
*/
#ifndef __QD3DGEOMETRY__
#define __QD3DGEOMETRY__

#ifndef __QD3D__
#include "QD3D.h"
#endif


#ifndef __QD3DSET__
#include "QD3DSet.h"
#endif




#if PRAGMA_ONCE
#pragma once
#endif

#ifdef __cplusplus
extern "C" {
#endif

#if PRAGMA_IMPORT
#pragma import on
#endif

#if PRAGMA_STRUCT_ALIGN
    #pragma options align=power
#elif PRAGMA_STRUCT_PACKPUSH
    #pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
    #pragma pack(2)
#endif

#if PRAGMA_ENUM_ALWAYSINT
    #if defined(__fourbyteints__) && !__fourbyteints__ 
        #define __QD3DGEOMETRY__RESTORE_TWOBYTEINTS
        #pragma fourbyteints on
    #endif
    #pragma enumsalwaysint on
#elif PRAGMA_ENUM_OPTIONS
    #pragma option enum=int
#elif PRAGMA_ENUM_PACK
    #if __option(pack_enums)
        #define __QD3DGEOMETRY__RESTORE_PACKED_ENUMS
        #pragma options(!pack_enums)
    #endif
#endif

/******************************************************************************
 **                                                                          **
 **                             Geometry Routines                            **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Geometry_GetType()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3ObjectType )
Q3Geometry_GetType(TQ3GeometryObject geometry);


/*
 *  Q3Geometry_GetAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Geometry_GetAttributeSet(
  TQ3GeometryObject   geometry,
  TQ3AttributeSet *   attributeSet);


/*
 *  Q3Geometry_SetAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Geometry_SetAttributeSet(
  TQ3GeometryObject   geometry,
  TQ3AttributeSet     attributeSet);


/*
 *  Q3Geometry_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Geometry_Submit(
  TQ3GeometryObject   geometry,
  TQ3ViewObject       view);




/******************************************************************************
 **                                                                          **
 **                         Box Data Structure Definitions                   **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3BoxData {
  TQ3Point3D          origin;
  TQ3Vector3D         orientation;
  TQ3Vector3D         majorAxis;
  TQ3Vector3D         minorAxis;
  TQ3AttributeSet *   faceAttributeSet;       /* Ordering : Left, right,    */
                                              /*           front, back,   */
                                              /*           top, bottom    */
  TQ3AttributeSet     boxAttributeSet;
};
typedef struct TQ3BoxData               TQ3BoxData;
/******************************************************************************
 **                                                                          **
 **                             Box Routines                                 **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Box_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Box_New(const TQ3BoxData * boxData);


/*
 *  Q3Box_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_Submit(
  const TQ3BoxData *  boxData,
  TQ3ViewObject       view);


/*
 *  Q3Box_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_SetData(
  TQ3GeometryObject   box,
  const TQ3BoxData *  boxData);


/*
 *  Q3Box_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_GetData(
  TQ3GeometryObject   box,
  TQ3BoxData *        boxData);


/*
 *  Q3Box_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_EmptyData(TQ3BoxData * boxData);


/*
 *  Q3Box_SetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_SetOrigin(
  TQ3GeometryObject   box,
  const TQ3Point3D *  origin);


/*
 *  Q3Box_SetOrientation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_SetOrientation(
  TQ3GeometryObject    box,
  const TQ3Vector3D *  orientation);


/*
 *  Q3Box_SetMajorAxis()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_SetMajorAxis(
  TQ3GeometryObject    box,
  const TQ3Vector3D *  majorAxis);


/*
 *  Q3Box_SetMinorAxis()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_SetMinorAxis(
  TQ3GeometryObject    box,
  const TQ3Vector3D *  minorAxis);


/*
 *  Q3Box_GetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_GetOrigin(
  TQ3GeometryObject   box,
  TQ3Point3D *        origin);


/*
 *  Q3Box_GetOrientation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_GetOrientation(
  TQ3GeometryObject   box,
  TQ3Vector3D *       orientation);


/*
 *  Q3Box_GetMajorAxis()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_GetMajorAxis(
  TQ3GeometryObject   box,
  TQ3Vector3D *       majorAxis);


/*
 *  Q3Box_GetMinorAxis()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_GetMinorAxis(
  TQ3GeometryObject   box,
  TQ3Vector3D *       minorAxis);


/*
 *  Q3Box_GetFaceAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_GetFaceAttributeSet(
  TQ3GeometryObject   box,
  unsigned long       faceIndex,
  TQ3AttributeSet *   faceAttributeSet);


/*
 *  Q3Box_SetFaceAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Box_SetFaceAttributeSet(
  TQ3GeometryObject   box,
  unsigned long       faceIndex,
  TQ3AttributeSet     faceAttributeSet);




/******************************************************************************
 **                                                                          **
 **                     Cone Data Structure Definitions                      **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3ConeData {
  TQ3Point3D          origin;
  TQ3Vector3D         orientation;
  TQ3Vector3D         majorRadius;
  TQ3Vector3D         minorRadius;
  float               uMin;
  float               uMax;
  float               vMin;
  float               vMax;
  TQ3EndCap           caps;
  TQ3AttributeSet     interiorAttributeSet;
  TQ3AttributeSet     faceAttributeSet;
  TQ3AttributeSet     bottomAttributeSet;
  TQ3AttributeSet     coneAttributeSet;
};
typedef struct TQ3ConeData              TQ3ConeData;
/******************************************************************************
 **                                                                          **
 **                             Cone Routines                                **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Cone_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Cone_New(const TQ3ConeData * coneData);


/*
 *  Q3Cone_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_Submit(
  const TQ3ConeData *  coneData,
  TQ3ViewObject        view);


/*
 *  Q3Cone_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_SetData(
  TQ3GeometryObject    cone,
  const TQ3ConeData *  coneData);


/*
 *  Q3Cone_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_GetData(
  TQ3GeometryObject   cone,
  TQ3ConeData *       coneData);


/*
 *  Q3Cone_SetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_SetOrigin(
  TQ3GeometryObject   cone,
  const TQ3Point3D *  origin);


/*
 *  Q3Cone_SetOrientation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_SetOrientation(
  TQ3GeometryObject    cone,
  const TQ3Vector3D *  orientation);


/*
 *  Q3Cone_SetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_SetMajorRadius(
  TQ3GeometryObject    cone,
  const TQ3Vector3D *  majorRadius);


/*
 *  Q3Cone_SetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_SetMinorRadius(
  TQ3GeometryObject    cone,
  const TQ3Vector3D *  minorRadius);


/*
 *  Q3Cone_GetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_GetOrigin(
  TQ3GeometryObject   cone,
  TQ3Point3D *        origin);


/*
 *  Q3Cone_GetOrientation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_GetOrientation(
  TQ3GeometryObject   cone,
  TQ3Vector3D *       orientation);


/*
 *  Q3Cone_GetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_GetMajorRadius(
  TQ3GeometryObject   cone,
  TQ3Vector3D *       majorRadius);


/*
 *  Q3Cone_GetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_GetMinorRadius(
  TQ3GeometryObject   cone,
  TQ3Vector3D *       minorRadius);


/*
 *  Q3Cone_SetCaps()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_SetCaps(
  TQ3GeometryObject   cone,
  TQ3EndCap           caps);


/*
 *  Q3Cone_GetCaps()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_GetCaps(
  TQ3GeometryObject   cone,
  TQ3EndCap *         caps);


/*
 *  Q3Cone_SetBottomAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_SetBottomAttributeSet(
  TQ3GeometryObject   cone,
  TQ3AttributeSet     bottomAttributeSet);


/*
 *  Q3Cone_GetBottomAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_GetBottomAttributeSet(
  TQ3GeometryObject   cone,
  TQ3AttributeSet *   bottomAttributeSet);


/*
 *  Q3Cone_SetFaceAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_SetFaceAttributeSet(
  TQ3GeometryObject   cone,
  TQ3AttributeSet     faceAttributeSet);


/*
 *  Q3Cone_GetFaceAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_GetFaceAttributeSet(
  TQ3GeometryObject   cone,
  TQ3AttributeSet *   faceAttributeSet);


/*
 *  Q3Cone_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cone_EmptyData(TQ3ConeData * coneData);





/******************************************************************************
 **                                                                          **
 **                     Cylinder Data Structure Definitions                  **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3CylinderData {
  TQ3Point3D          origin;
  TQ3Vector3D         orientation;
  TQ3Vector3D         majorRadius;
  TQ3Vector3D         minorRadius;
  float               uMin;
  float               uMax;
  float               vMin;
  float               vMax;
  TQ3EndCap           caps;
  TQ3AttributeSet     interiorAttributeSet;
  TQ3AttributeSet     topAttributeSet;
  TQ3AttributeSet     faceAttributeSet;
  TQ3AttributeSet     bottomAttributeSet;
  TQ3AttributeSet     cylinderAttributeSet;
};
typedef struct TQ3CylinderData          TQ3CylinderData;
/******************************************************************************
 **                                                                          **
 **                         Cylinder Routines                                **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Cylinder_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Cylinder_New(const TQ3CylinderData * cylinderData);


/*
 *  Q3Cylinder_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_Submit(
  const TQ3CylinderData *  cylinderData,
  TQ3ViewObject            view);


/*
 *  Q3Cylinder_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_SetData(
  TQ3GeometryObject        cylinder,
  const TQ3CylinderData *  cylinderData);


/*
 *  Q3Cylinder_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_GetData(
  TQ3GeometryObject   cylinder,
  TQ3CylinderData *   cylinderData);


/*
 *  Q3Cylinder_SetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_SetOrigin(
  TQ3GeometryObject   cylinder,
  const TQ3Point3D *  origin);


/*
 *  Q3Cylinder_SetOrientation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_SetOrientation(
  TQ3GeometryObject    cylinder,
  const TQ3Vector3D *  orientation);


/*
 *  Q3Cylinder_SetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_SetMajorRadius(
  TQ3GeometryObject    cylinder,
  const TQ3Vector3D *  majorRadius);


/*
 *  Q3Cylinder_SetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_SetMinorRadius(
  TQ3GeometryObject    cylinder,
  const TQ3Vector3D *  minorRadius);


/*
 *  Q3Cylinder_GetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_GetOrigin(
  TQ3GeometryObject   cylinder,
  TQ3Point3D *        origin);


/*
 *  Q3Cylinder_GetOrientation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_GetOrientation(
  TQ3GeometryObject   cylinder,
  TQ3Vector3D *       orientation);


/*
 *  Q3Cylinder_GetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_GetMajorRadius(
  TQ3GeometryObject   cylinder,
  TQ3Vector3D *       majorRadius);


/*
 *  Q3Cylinder_GetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_GetMinorRadius(
  TQ3GeometryObject   cylinder,
  TQ3Vector3D *       minorRadius);



/*
 *  Q3Cylinder_SetCaps()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_SetCaps(
  TQ3GeometryObject   cylinder,
  TQ3EndCap           caps);


/*
 *  Q3Cylinder_GetCaps()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_GetCaps(
  TQ3GeometryObject   cylinder,
  TQ3EndCap *         caps);



/*
 *  Q3Cylinder_SetTopAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_SetTopAttributeSet(
  TQ3GeometryObject   cylinder,
  TQ3AttributeSet     topAttributeSet);


/*
 *  Q3Cylinder_GetTopAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_GetTopAttributeSet(
  TQ3GeometryObject   cylinder,
  TQ3AttributeSet *   topAttributeSet);


/*
 *  Q3Cylinder_SetBottomAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_SetBottomAttributeSet(
  TQ3GeometryObject   cylinder,
  TQ3AttributeSet     bottomAttributeSet);


/*
 *  Q3Cylinder_GetBottomAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_GetBottomAttributeSet(
  TQ3GeometryObject   cylinder,
  TQ3AttributeSet *   bottomAttributeSet);


/*
 *  Q3Cylinder_SetFaceAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_SetFaceAttributeSet(
  TQ3GeometryObject   cylinder,
  TQ3AttributeSet     faceAttributeSet);


/*
 *  Q3Cylinder_GetFaceAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_GetFaceAttributeSet(
  TQ3GeometryObject   cylinder,
  TQ3AttributeSet *   faceAttributeSet);


/*
 *  Q3Cylinder_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Cylinder_EmptyData(TQ3CylinderData * cylinderData);





/******************************************************************************
 **                                                                          **
 **                     Disk Data Structure Definitions                      **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3DiskData {
  TQ3Point3D          origin;
  TQ3Vector3D         majorRadius;
  TQ3Vector3D         minorRadius;
  float               uMin;
  float               uMax;
  float               vMin;
  float               vMax;
  TQ3AttributeSet     diskAttributeSet;
};
typedef struct TQ3DiskData              TQ3DiskData;
/******************************************************************************
 **                                                                          **
 **                             Disk Routines                                **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Disk_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Disk_New(const TQ3DiskData * diskData);


/*
 *  Q3Disk_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Disk_Submit(
  const TQ3DiskData *  diskData,
  TQ3ViewObject        view);


/*
 *  Q3Disk_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Disk_SetData(
  TQ3GeometryObject    disk,
  const TQ3DiskData *  diskData);


/*
 *  Q3Disk_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Disk_GetData(
  TQ3GeometryObject   disk,
  TQ3DiskData *       diskData);


/*
 *  Q3Disk_SetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Disk_SetOrigin(
  TQ3GeometryObject   disk,
  const TQ3Point3D *  origin);


/*
 *  Q3Disk_SetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Disk_SetMajorRadius(
  TQ3GeometryObject    disk,
  const TQ3Vector3D *  majorRadius);


/*
 *  Q3Disk_SetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Disk_SetMinorRadius(
  TQ3GeometryObject    disk,
  const TQ3Vector3D *  minorRadius);


/*
 *  Q3Disk_GetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Disk_GetOrigin(
  TQ3GeometryObject   disk,
  TQ3Point3D *        origin);


/*
 *  Q3Disk_GetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Disk_GetMajorRadius(
  TQ3GeometryObject   disk,
  TQ3Vector3D *       majorRadius);


/*
 *  Q3Disk_GetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Disk_GetMinorRadius(
  TQ3GeometryObject   disk,
  TQ3Vector3D *       minorRadius);



/*
 *  Q3Disk_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Disk_EmptyData(TQ3DiskData * diskData);





/******************************************************************************
 **                                                                          **
 **                  Ellipse Data Structure Definitions                      **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3EllipseData {
  TQ3Point3D          origin;
  TQ3Vector3D         majorRadius;
  TQ3Vector3D         minorRadius;
  float               uMin;
  float               uMax;
  TQ3AttributeSet     ellipseAttributeSet;
};
typedef struct TQ3EllipseData           TQ3EllipseData;
/******************************************************************************
 **                                                                          **
 **                             Ellipse Routines                             **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Ellipse_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Ellipse_New(const TQ3EllipseData * ellipseData);


/*
 *  Q3Ellipse_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipse_Submit(
  const TQ3EllipseData *  ellipseData,
  TQ3ViewObject           view);


/*
 *  Q3Ellipse_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipse_SetData(
  TQ3GeometryObject       ellipse,
  const TQ3EllipseData *  ellipseData);


/*
 *  Q3Ellipse_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipse_GetData(
  TQ3GeometryObject   ellipse,
  TQ3EllipseData *    ellipseData);


/*
 *  Q3Ellipse_SetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipse_SetOrigin(
  TQ3GeometryObject   ellipse,
  const TQ3Point3D *  origin);


/*
 *  Q3Ellipse_SetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipse_SetMajorRadius(
  TQ3GeometryObject    ellipse,
  const TQ3Vector3D *  majorRadius);


/*
 *  Q3Ellipse_SetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipse_SetMinorRadius(
  TQ3GeometryObject    ellipse,
  const TQ3Vector3D *  minorRadius);


/*
 *  Q3Ellipse_GetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipse_GetOrigin(
  TQ3GeometryObject   ellipse,
  TQ3Point3D *        origin);


/*
 *  Q3Ellipse_GetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipse_GetMajorRadius(
  TQ3GeometryObject   ellipse,
  TQ3Vector3D *       majorRadius);


/*
 *  Q3Ellipse_GetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipse_GetMinorRadius(
  TQ3GeometryObject   ellipse,
  TQ3Vector3D *       minorRadius);



/*
 *  Q3Ellipse_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipse_EmptyData(TQ3EllipseData * ellipseData);





/******************************************************************************
 **                                                                          **
 **                         Ellipsoid Data structures                        **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3EllipsoidData {
  TQ3Point3D          origin;
  TQ3Vector3D         orientation;
  TQ3Vector3D         majorRadius;
  TQ3Vector3D         minorRadius;
  float               uMin;
  float               uMax;
  float               vMin;
  float               vMax;
  TQ3EndCap           caps;
  TQ3AttributeSet     interiorAttributeSet;
  TQ3AttributeSet     ellipsoidAttributeSet;
};
typedef struct TQ3EllipsoidData         TQ3EllipsoidData;
/******************************************************************************
 **                                                                          **
 **                         Ellipsoid Routines                               **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Ellipsoid_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Ellipsoid_New(const TQ3EllipsoidData * ellipsoidData);


/*
 *  Q3Ellipsoid_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_Submit(
  const TQ3EllipsoidData *  ellipsoidData,
  TQ3ViewObject             view);


/*
 *  Q3Ellipsoid_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_SetData(
  TQ3GeometryObject         ellipsoid,
  const TQ3EllipsoidData *  ellipsoidData);


/*
 *  Q3Ellipsoid_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_GetData(
  TQ3GeometryObject   ellipsoid,
  TQ3EllipsoidData *  ellipsoidData);


/*
 *  Q3Ellipsoid_SetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_SetOrigin(
  TQ3GeometryObject   ellipsoid,
  const TQ3Point3D *  origin);


/*
 *  Q3Ellipsoid_SetOrientation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_SetOrientation(
  TQ3GeometryObject    ellipsoid,
  const TQ3Vector3D *  orientation);


/*
 *  Q3Ellipsoid_SetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_SetMajorRadius(
  TQ3GeometryObject    ellipsoid,
  const TQ3Vector3D *  majorRadius);


/*
 *  Q3Ellipsoid_SetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_SetMinorRadius(
  TQ3GeometryObject    ellipsoid,
  const TQ3Vector3D *  minorRadius);


/*
 *  Q3Ellipsoid_GetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_GetOrigin(
  TQ3GeometryObject   ellipsoid,
  TQ3Point3D *        origin);


/*
 *  Q3Ellipsoid_GetOrientation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_GetOrientation(
  TQ3GeometryObject   ellipsoid,
  TQ3Vector3D *       orientation);


/*
 *  Q3Ellipsoid_GetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_GetMajorRadius(
  TQ3GeometryObject   ellipsoid,
  TQ3Vector3D *       majorRadius);


/*
 *  Q3Ellipsoid_GetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_GetMinorRadius(
  TQ3GeometryObject   ellipsoid,
  TQ3Vector3D *       minorRadius);


/*
 *  Q3Ellipsoid_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Ellipsoid_EmptyData(TQ3EllipsoidData * ellipsoidData);





/******************************************************************************
 **                                                                          **
 **                 General Polygon Data Structure Definitions               **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

enum TQ3GeneralPolygonShapeHint {
  kQ3GeneralPolygonShapeHintComplex = 0,
  kQ3GeneralPolygonShapeHintConcave = 1,
  kQ3GeneralPolygonShapeHintConvex = 2
};
typedef enum TQ3GeneralPolygonShapeHint TQ3GeneralPolygonShapeHint;

struct TQ3GeneralPolygonContourData {
  unsigned long       numVertices;
  TQ3Vertex3D *       vertices;
};
typedef struct TQ3GeneralPolygonContourData TQ3GeneralPolygonContourData;
struct TQ3GeneralPolygonData {
  unsigned long       numContours;
  TQ3GeneralPolygonContourData * contours;
  TQ3GeneralPolygonShapeHint  shapeHint;
  TQ3AttributeSet     generalPolygonAttributeSet;
};
typedef struct TQ3GeneralPolygonData    TQ3GeneralPolygonData;
/******************************************************************************
 **                                                                          **
 **                         General polygon Routines                         **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3GeneralPolygon_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3GeneralPolygon_New(const TQ3GeneralPolygonData * generalPolygonData);


/*
 *  Q3GeneralPolygon_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3GeneralPolygon_Submit(
  const TQ3GeneralPolygonData *  generalPolygonData,
  TQ3ViewObject                  view);


/*
 *  Q3GeneralPolygon_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3GeneralPolygon_SetData(
  TQ3GeometryObject              generalPolygon,
  const TQ3GeneralPolygonData *  generalPolygonData);


/*
 *  Q3GeneralPolygon_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3GeneralPolygon_GetData(
  TQ3GeometryObject        polygon,
  TQ3GeneralPolygonData *  generalPolygonData);


/*
 *  Q3GeneralPolygon_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3GeneralPolygon_EmptyData(TQ3GeneralPolygonData * generalPolygonData);


/*
 *  Q3GeneralPolygon_GetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3GeneralPolygon_GetVertexPosition(
  TQ3GeometryObject   generalPolygon,
  unsigned long       contourIndex,
  unsigned long       pointIndex,
  TQ3Point3D *        position);


/*
 *  Q3GeneralPolygon_SetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3GeneralPolygon_SetVertexPosition(
  TQ3GeometryObject   generalPolygon,
  unsigned long       contourIndex,
  unsigned long       pointIndex,
  const TQ3Point3D *  position);


/*
 *  Q3GeneralPolygon_GetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3GeneralPolygon_GetVertexAttributeSet(
  TQ3GeometryObject   generalPolygon,
  unsigned long       contourIndex,
  unsigned long       pointIndex,
  TQ3AttributeSet *   attributeSet);


/*
 *  Q3GeneralPolygon_SetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3GeneralPolygon_SetVertexAttributeSet(
  TQ3GeometryObject   generalPolygon,
  unsigned long       contourIndex,
  unsigned long       pointIndex,
  TQ3AttributeSet     attributeSet);


/*
 *  Q3GeneralPolygon_SetShapeHint()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3GeneralPolygon_SetShapeHint(
  TQ3GeometryObject            generalPolygon,
  TQ3GeneralPolygonShapeHint   shapeHint);


/*
 *  Q3GeneralPolygon_GetShapeHint()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3GeneralPolygon_GetShapeHint(
  TQ3GeometryObject             generalPolygon,
  TQ3GeneralPolygonShapeHint *  shapeHint);





/******************************************************************************
 **                                                                          **
 **                     Line Data Structure Definitions                      **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3LineData {
  TQ3Vertex3D         vertices[2];
  TQ3AttributeSet     lineAttributeSet;
};
typedef struct TQ3LineData              TQ3LineData;
/******************************************************************************
 **                                                                          **
 **                         Line Routines                                    **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Line_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Line_New(const TQ3LineData * lineData);


/*
 *  Q3Line_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Line_Submit(
  const TQ3LineData *  lineData,
  TQ3ViewObject        view);


/*
 *  Q3Line_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Line_GetData(
  TQ3GeometryObject   line,
  TQ3LineData *       lineData);


/*
 *  Q3Line_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Line_SetData(
  TQ3GeometryObject    line,
  const TQ3LineData *  lineData);


/*
 *  Q3Line_GetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Line_GetVertexPosition(
  TQ3GeometryObject   line,
  unsigned long       index,
  TQ3Point3D *        position);


/*
 *  Q3Line_SetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Line_SetVertexPosition(
  TQ3GeometryObject   line,
  unsigned long       index,
  const TQ3Point3D *  position);


/*
 *  Q3Line_GetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Line_GetVertexAttributeSet(
  TQ3GeometryObject   line,
  unsigned long       index,
  TQ3AttributeSet *   attributeSet);


/*
 *  Q3Line_SetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Line_SetVertexAttributeSet(
  TQ3GeometryObject   line,
  unsigned long       index,
  TQ3AttributeSet     attributeSet);


/*
 *  Q3Line_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Line_EmptyData(TQ3LineData * lineData);





/******************************************************************************
 **                                                                          **
 **                     Marker Data Structure Definitions                    **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3MarkerData {
  TQ3Point3D          location;
  long                xOffset;
  long                yOffset;
  TQ3Bitmap           bitmap;
  TQ3AttributeSet     markerAttributeSet;
};
typedef struct TQ3MarkerData            TQ3MarkerData;
/******************************************************************************
 **                                                                          **
 **                             Marker Routines                              **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Marker_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Marker_New(const TQ3MarkerData * markerData);


/*
 *  Q3Marker_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_Submit(
  const TQ3MarkerData *  markerData,
  TQ3ViewObject          view);


/*
 *  Q3Marker_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_SetData(
  TQ3GeometryObject      geometry,
  const TQ3MarkerData *  markerData);


/*
 *  Q3Marker_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_GetData(
  TQ3GeometryObject   geometry,
  TQ3MarkerData *     markerData);


/*
 *  Q3Marker_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_EmptyData(TQ3MarkerData * markerData);


/*
 *  Q3Marker_GetPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_GetPosition(
  TQ3GeometryObject   marker,
  TQ3Point3D *        location);


/*
 *  Q3Marker_SetPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_SetPosition(
  TQ3GeometryObject   marker,
  const TQ3Point3D *  location);


/*
 *  Q3Marker_GetXOffset()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_GetXOffset(
  TQ3GeometryObject   marker,
  long *              xOffset);


/*
 *  Q3Marker_SetXOffset()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_SetXOffset(
  TQ3GeometryObject   marker,
  long                xOffset);


/*
 *  Q3Marker_GetYOffset()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_GetYOffset(
  TQ3GeometryObject   marker,
  long *              yOffset);


/*
 *  Q3Marker_SetYOffset()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_SetYOffset(
  TQ3GeometryObject   marker,
  long                yOffset);


/*
 *  Q3Marker_GetBitmap()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_GetBitmap(
  TQ3GeometryObject   marker,
  TQ3Bitmap *         bitmap);


/*
 *  Q3Marker_SetBitmap()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Marker_SetBitmap(
  TQ3GeometryObject   marker,
  const TQ3Bitmap *   bitmap);





/******************************************************************************
 **                                                                          **
 **                     Mesh Data Structure Definitions                      **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

typedef struct OpaqueTQ3MeshComponent*  TQ3MeshComponent;
typedef struct OpaqueTQ3MeshVertex*     TQ3MeshVertex;
typedef struct OpaqueTQ3MeshFace*       TQ3MeshFace;
typedef struct OpaqueTQ3MeshEdge*       TQ3MeshEdge;
typedef struct OpaqueTQ3MeshContour*    TQ3MeshContour;
/******************************************************************************
 **                                                                          **
 **                         Mesh Routines                                    **
 **                                                                          **
 *****************************************************************************/
/*
 *  Constructors
 */
#if CALL_NOT_IN_CARBON
/*
 *  Q3Mesh_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Mesh_New(void);


/*
 *  Q3Mesh_VertexNew()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_VertexNew(
  TQ3GeometryObject    mesh,
  const TQ3Vertex3D *  vertex);


/*
 *  Q3Mesh_FaceNew()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshFace )
Q3Mesh_FaceNew(
  TQ3GeometryObject      mesh,
  unsigned long          numVertices,
  const TQ3MeshVertex *  vertices,
  TQ3AttributeSet        attributeSet);


/*
 *  Destructors
 */
/*
 *  Q3Mesh_VertexDelete()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_VertexDelete(
  TQ3GeometryObject   mesh,
  TQ3MeshVertex       vertex);


/*
 *  Q3Mesh_FaceDelete()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_FaceDelete(
  TQ3GeometryObject   mesh,
  TQ3MeshFace         face);


/*
 * Methods
 */
/*
 *  Q3Mesh_DelayUpdates()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_DelayUpdates(TQ3GeometryObject mesh);


/*
 *  Q3Mesh_ResumeUpdates()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_ResumeUpdates(TQ3GeometryObject mesh);


/*
 *  Q3Mesh_FaceToContour()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshContour )
Q3Mesh_FaceToContour(
  TQ3GeometryObject   mesh,
  TQ3MeshFace         containerFace,
  TQ3MeshFace         face);


/*
 *  Q3Mesh_ContourToFace()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshFace )
Q3Mesh_ContourToFace(
  TQ3GeometryObject   mesh,
  TQ3MeshContour      contour);


/*
 * Mesh
 */
/*
 *  Q3Mesh_GetNumComponents()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetNumComponents(
  TQ3GeometryObject   mesh,
  unsigned long *     numComponents);


/*
 *  Q3Mesh_GetNumEdges()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetNumEdges(
  TQ3GeometryObject   mesh,
  unsigned long *     numEdges);


/*
 *  Q3Mesh_GetNumVertices()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetNumVertices(
  TQ3GeometryObject   mesh,
  unsigned long *     numVertices);


/*
 *  Q3Mesh_GetNumFaces()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetNumFaces(
  TQ3GeometryObject   mesh,
  unsigned long *     numFaces);


/*
 *  Q3Mesh_GetNumCorners()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetNumCorners(
  TQ3GeometryObject   mesh,
  unsigned long *     numCorners);


/*
 *  Q3Mesh_GetOrientable()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetOrientable(
  TQ3GeometryObject   mesh,
  TQ3Boolean *        orientable);


/*
 * Component
 */
/*
 *  Q3Mesh_GetComponentNumVertices()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetComponentNumVertices(
  TQ3GeometryObject   mesh,
  TQ3MeshComponent    component,
  unsigned long *     numVertices);


/*
 *  Q3Mesh_GetComponentNumEdges()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetComponentNumEdges(
  TQ3GeometryObject   mesh,
  TQ3MeshComponent    component,
  unsigned long *     numEdges);


/*
 *  Q3Mesh_GetComponentBoundingBox()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetComponentBoundingBox(
  TQ3GeometryObject   mesh,
  TQ3MeshComponent    component,
  TQ3BoundingBox *    boundingBox);


/*
 *  Q3Mesh_GetComponentOrientable()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetComponentOrientable(
  TQ3GeometryObject   mesh,
  TQ3MeshComponent    component,
  TQ3Boolean *        orientable);


/*
 * Vertex
 */
/*
 *  Q3Mesh_GetVertexCoordinates()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetVertexCoordinates(
  TQ3GeometryObject   mesh,
  TQ3MeshVertex       vertex,
  TQ3Point3D *        coordinates);


/*
 *  Q3Mesh_GetVertexIndex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetVertexIndex(
  TQ3GeometryObject   mesh,
  TQ3MeshVertex       vertex,
  unsigned long *     index);


/*
 *  Q3Mesh_GetVertexOnBoundary()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetVertexOnBoundary(
  TQ3GeometryObject   mesh,
  TQ3MeshVertex       vertex,
  TQ3Boolean *        onBoundary);


/*
 *  Q3Mesh_GetVertexComponent()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetVertexComponent(
  TQ3GeometryObject   mesh,
  TQ3MeshVertex       vertex,
  TQ3MeshComponent *  component);


/*
 *  Q3Mesh_GetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetVertexAttributeSet(
  TQ3GeometryObject   mesh,
  TQ3MeshVertex       vertex,
  TQ3AttributeSet *   attributeSet);



/*
 *  Q3Mesh_SetVertexCoordinates()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_SetVertexCoordinates(
  TQ3GeometryObject   mesh,
  TQ3MeshVertex       vertex,
  const TQ3Point3D *  coordinates);


/*
 *  Q3Mesh_SetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_SetVertexAttributeSet(
  TQ3GeometryObject   mesh,
  TQ3MeshVertex       vertex,
  TQ3AttributeSet     attributeSet);



/*
 * Face
 */
/*
 *  Q3Mesh_GetFaceNumVertices()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetFaceNumVertices(
  TQ3GeometryObject   mesh,
  TQ3MeshFace         face,
  unsigned long *     numVertices);


/*
 *  Q3Mesh_GetFacePlaneEquation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetFacePlaneEquation(
  TQ3GeometryObject   mesh,
  TQ3MeshFace         face,
  TQ3PlaneEquation *  planeEquation);


/*
 *  Q3Mesh_GetFaceNumContours()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetFaceNumContours(
  TQ3GeometryObject   mesh,
  TQ3MeshFace         face,
  unsigned long *     numContours);


/*
 *  Q3Mesh_GetFaceIndex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetFaceIndex(
  TQ3GeometryObject   mesh,
  TQ3MeshFace         face,
  unsigned long *     index);


/*
 *  Q3Mesh_GetFaceComponent()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetFaceComponent(
  TQ3GeometryObject   mesh,
  TQ3MeshFace         face,
  TQ3MeshComponent *  component);


/*
 *  Q3Mesh_GetFaceAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetFaceAttributeSet(
  TQ3GeometryObject   mesh,
  TQ3MeshFace         face,
  TQ3AttributeSet *   attributeSet);



/*
 *  Q3Mesh_SetFaceAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_SetFaceAttributeSet(
  TQ3GeometryObject   mesh,
  TQ3MeshFace         face,
  TQ3AttributeSet     attributeSet);


/*
 * Edge
 */
/*
 *  Q3Mesh_GetEdgeVertices()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetEdgeVertices(
  TQ3GeometryObject   mesh,
  TQ3MeshEdge         edge,
  TQ3MeshVertex *     vertex1,
  TQ3MeshVertex *     vertex2);


/*
 *  Q3Mesh_GetEdgeFaces()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetEdgeFaces(
  TQ3GeometryObject   mesh,
  TQ3MeshEdge         edge,
  TQ3MeshFace *       face1,
  TQ3MeshFace *       face2);


/*
 *  Q3Mesh_GetEdgeOnBoundary()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetEdgeOnBoundary(
  TQ3GeometryObject   mesh,
  TQ3MeshEdge         edge,
  TQ3Boolean *        onBoundary);


/*
 *  Q3Mesh_GetEdgeComponent()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetEdgeComponent(
  TQ3GeometryObject   mesh,
  TQ3MeshEdge         edge,
  TQ3MeshComponent *  component);


/*
 *  Q3Mesh_GetEdgeAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetEdgeAttributeSet(
  TQ3GeometryObject   mesh,
  TQ3MeshEdge         edge,
  TQ3AttributeSet *   attributeSet);



/*
 *  Q3Mesh_SetEdgeAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_SetEdgeAttributeSet(
  TQ3GeometryObject   mesh,
  TQ3MeshEdge         edge,
  TQ3AttributeSet     attributeSet);


/*
 * Contour
 */
/*
 *  Q3Mesh_GetContourFace()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetContourFace(
  TQ3GeometryObject   mesh,
  TQ3MeshContour      contour,
  TQ3MeshFace *       face);


/*
 *  Q3Mesh_GetContourNumVertices()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetContourNumVertices(
  TQ3GeometryObject   mesh,
  TQ3MeshContour      contour,
  unsigned long *     numVertices);


/*
 * Corner
 */
/*
 *  Q3Mesh_GetCornerAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_GetCornerAttributeSet(
  TQ3GeometryObject   mesh,
  TQ3MeshVertex       vertex,
  TQ3MeshFace         face,
  TQ3AttributeSet *   attributeSet);


/*
 *  Q3Mesh_SetCornerAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Mesh_SetCornerAttributeSet(
  TQ3GeometryObject   mesh,
  TQ3MeshVertex       vertex,
  TQ3MeshFace         face,
  TQ3AttributeSet     attributeSet);



/*
 * Public Mesh Iterators
 */
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3MeshIterator {
  void *              var1;
  void *              var2;
  void *              var3;
  struct {
    void *              field1;
    char                field2[4];
  }                       var4;
};
typedef struct TQ3MeshIterator          TQ3MeshIterator;
#if CALL_NOT_IN_CARBON
/*
 *  Q3Mesh_FirstMeshComponent()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshComponent )
Q3Mesh_FirstMeshComponent(
  TQ3GeometryObject   mesh,
  TQ3MeshIterator *   iterator);


/*
 *  Q3Mesh_NextMeshComponent()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshComponent )
Q3Mesh_NextMeshComponent(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstComponentVertex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_FirstComponentVertex(
  TQ3MeshComponent   component,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextComponentVertex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_NextComponentVertex(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstComponentEdge()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshEdge )
Q3Mesh_FirstComponentEdge(
  TQ3MeshComponent   component,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextComponentEdge()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshEdge )
Q3Mesh_NextComponentEdge(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstMeshVertex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_FirstMeshVertex(
  TQ3GeometryObject   mesh,
  TQ3MeshIterator *   iterator);


/*
 *  Q3Mesh_NextMeshVertex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_NextMeshVertex(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstMeshFace()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshFace )
Q3Mesh_FirstMeshFace(
  TQ3GeometryObject   mesh,
  TQ3MeshIterator *   iterator);


/*
 *  Q3Mesh_NextMeshFace()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshFace )
Q3Mesh_NextMeshFace(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstMeshEdge()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshEdge )
Q3Mesh_FirstMeshEdge(
  TQ3GeometryObject   mesh,
  TQ3MeshIterator *   iterator);


/*
 *  Q3Mesh_NextMeshEdge()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshEdge )
Q3Mesh_NextMeshEdge(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstVertexEdge()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshEdge )
Q3Mesh_FirstVertexEdge(
  TQ3MeshVertex      vertex,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextVertexEdge()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshEdge )
Q3Mesh_NextVertexEdge(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstVertexVertex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_FirstVertexVertex(
  TQ3MeshVertex      vertex,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextVertexVertex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_NextVertexVertex(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstVertexFace()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshFace )
Q3Mesh_FirstVertexFace(
  TQ3MeshVertex      vertex,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextVertexFace()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshFace )
Q3Mesh_NextVertexFace(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstFaceEdge()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshEdge )
Q3Mesh_FirstFaceEdge(
  TQ3MeshFace        face,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextFaceEdge()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshEdge )
Q3Mesh_NextFaceEdge(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstFaceVertex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_FirstFaceVertex(
  TQ3MeshFace        face,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextFaceVertex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_NextFaceVertex(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstFaceFace()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshFace )
Q3Mesh_FirstFaceFace(
  TQ3MeshFace        face,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextFaceFace()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshFace )
Q3Mesh_NextFaceFace(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstFaceContour()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshContour )
Q3Mesh_FirstFaceContour(
  TQ3MeshFace        face,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextFaceContour()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshContour )
Q3Mesh_NextFaceContour(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstContourEdge()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshEdge )
Q3Mesh_FirstContourEdge(
  TQ3MeshContour     contour,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextContourEdge()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshEdge )
Q3Mesh_NextContourEdge(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstContourVertex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_FirstContourVertex(
  TQ3MeshContour     contour,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextContourVertex()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshVertex )
Q3Mesh_NextContourVertex(TQ3MeshIterator * iterator);


/*
 *  Q3Mesh_FirstContourFace()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshFace )
Q3Mesh_FirstContourFace(
  TQ3MeshContour     contour,
  TQ3MeshIterator *  iterator);


/*
 *  Q3Mesh_NextContourFace()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3MeshFace )
Q3Mesh_NextContourFace(TQ3MeshIterator * iterator);



#define    Q3ForEachMeshComponent(m,c,i)                                       \
  for ( (c) = Q3Mesh_FirstMeshComponent((m),(i));                         \
        (c);                                                              \
        (c) = Q3Mesh_NextMeshComponent((i)) )

#define Q3ForEachComponentVertex(c,v,i)                                        \
  for ( (v) = Q3Mesh_FirstComponentVertex((c),(i));                       \
        (v);                                                              \
        (v) = Q3Mesh_NextComponentVertex((i)) )
        
#define Q3ForEachComponentEdge(c,e,i)                                        \
  for ( (e) = Q3Mesh_FirstComponentEdge((c),(i));                         \
        (e);                                                              \
        (e) = Q3Mesh_NextComponentEdge((i)) )

#define Q3ForEachMeshVertex(m,v,i)                                         \
  for ( (v) = Q3Mesh_FirstMeshVertex((m),(i));                            \
        (v);                                                              \
        (v) = Q3Mesh_NextMeshVertex((i)) )

#define Q3ForEachMeshFace(m,f,i)                                          \
  for ( (f) = Q3Mesh_FirstMeshFace((m),(i));                              \
        (f);                                                              \
        (f) = Q3Mesh_NextMeshFace((i)) )

#define Q3ForEachMeshEdge(m,e,i)                                            \
  for ( (e) = Q3Mesh_FirstMeshEdge((m),(i));                              \
        (e);                                                              \
        (e) = Q3Mesh_NextMeshEdge((i)) )

#define Q3ForEachVertexEdge(v,e,i)                                          \
  for ( (e) = Q3Mesh_FirstVertexEdge((v),(i));                            \
        (e);                                                              \
        (e) = Q3Mesh_NextVertexEdge((i)) )


#define Q3ForEachVertexVertex(v,n,i)                                       \
  for ( (n) = Q3Mesh_FirstVertexVertex((v),(i));                          \
        (n);                                                              \
        (n) = Q3Mesh_NextVertexVertex((i)) )

#define Q3ForEachVertexFace(v,f,i)                                          \
  for ( (f) = Q3Mesh_FirstVertexFace((v),(i));                            \
        (f);                                                              \
        (f) = Q3Mesh_NextVertexFace((i)) )

#define Q3ForEachFaceEdge(f,e,i)                                          \
  for ( (e) = Q3Mesh_FirstFaceEdge((f),(i));                              \
        (e);                                                              \
        (e) = Q3Mesh_NextFaceEdge((i)) )

#define Q3ForEachFaceVertex(f,v,i)                                          \
  for ( (v) = Q3Mesh_FirstFaceVertex((f),(i));                            \
        (v);                                                              \
        (v) = Q3Mesh_NextFaceVertex((i)) )
   
#define Q3ForEachFaceFace(f,n,i)                                           \
  for ( (n) = Q3Mesh_FirstFaceFace((f),(i));                              \
        (n);                                                              \
        (n) = Q3Mesh_NextFaceFace((i)) )
       
#define Q3ForEachFaceContour(f,h,i)                                          \
  for ( (h) = Q3Mesh_FirstFaceContour((f),(i));                           \
        (h);                                                              \
        (h) = Q3Mesh_NextFaceContour((i)) )

#define Q3ForEachContourEdge(h,e,i)                                          \
  for ( (e) = Q3Mesh_FirstContourEdge((h),(i));                           \
        (e);                                                              \
        (e) = Q3Mesh_NextContourEdge((i)) )

#define Q3ForEachContourVertex(h,v,i)                                        \
  for ( (v) = Q3Mesh_FirstContourVertex((h),(i));                         \
        (v);                                                              \
        (v) = Q3Mesh_NextContourVertex((i)) )

#define Q3ForEachContourFace(h,f,i)                                            \
  for ( (f) = Q3Mesh_FirstContourFace((h),(i));                           \
        (f);                                                              \
        (f) = Q3Mesh_NextContourFace((i)) )



/******************************************************************************
 **                                                                          **
 **                         Maximum order for NURB Curves                    **
 **                                                                          **
 *****************************************************************************/
#define kQ3NURBCurveMaxOrder    16

/******************************************************************************
 **                                                                          **
 **                     NURB Data Structure Definitions                      **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3NURBCurveData {
  unsigned long       order;
  unsigned long       numPoints;
  TQ3RationalPoint4D * controlPoints;
  float *             knots;
  TQ3AttributeSet     curveAttributeSet;
};
typedef struct TQ3NURBCurveData         TQ3NURBCurveData;
/******************************************************************************
 **                                                                          **
 **                             NURB Curve Routines                          **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3NURBCurve_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3NURBCurve_New(const TQ3NURBCurveData * curveData);


/*
 *  Q3NURBCurve_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBCurve_Submit(
  const TQ3NURBCurveData *  curveData,
  TQ3ViewObject             view);


/*
 *  Q3NURBCurve_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBCurve_SetData(
  TQ3GeometryObject         curve,
  const TQ3NURBCurveData *  nurbCurveData);


/*
 *  Q3NURBCurve_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBCurve_GetData(
  TQ3GeometryObject   curve,
  TQ3NURBCurveData *  nurbCurveData);


/*
 *  Q3NURBCurve_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBCurve_EmptyData(TQ3NURBCurveData * nurbCurveData);


/*
 *  Q3NURBCurve_SetControlPoint()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBCurve_SetControlPoint(
  TQ3GeometryObject           curve,
  unsigned long               pointIndex,
  const TQ3RationalPoint4D *  point4D);


/*
 *  Q3NURBCurve_GetControlPoint()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBCurve_GetControlPoint(
  TQ3GeometryObject     curve,
  unsigned long         pointIndex,
  TQ3RationalPoint4D *  point4D);


/*
 *  Q3NURBCurve_SetKnot()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBCurve_SetKnot(
  TQ3GeometryObject   curve,
  unsigned long       knotIndex,
  float               knotValue);


/*
 *  Q3NURBCurve_GetKnot()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBCurve_GetKnot(
  TQ3GeometryObject   curve,
  unsigned long       knotIndex,
  float *             knotValue);



/******************************************************************************
 **                                                                          **
 **                         Maximum NURB Patch Order                         **
 **                                                                          **
 *****************************************************************************/
#define kQ3NURBPatchMaxOrder    11
/******************************************************************************
 **                                                                          **
 **                     NURB Patch Data Structure Definitions                **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3NURBPatchTrimCurveData {
  unsigned long       order;
  unsigned long       numPoints;
  TQ3RationalPoint3D * controlPoints;
  float *             knots;
};
typedef struct TQ3NURBPatchTrimCurveData TQ3NURBPatchTrimCurveData;
struct TQ3NURBPatchTrimLoopData {
  unsigned long       numTrimCurves;
  TQ3NURBPatchTrimCurveData * trimCurves;
};
typedef struct TQ3NURBPatchTrimLoopData TQ3NURBPatchTrimLoopData;
struct TQ3NURBPatchData {
  unsigned long       uOrder;
  unsigned long       vOrder;
  unsigned long       numRows;
  unsigned long       numColumns;
  TQ3RationalPoint4D * controlPoints;
  float *             uKnots;
  float *             vKnots;
  unsigned long       numTrimLoops;
  TQ3NURBPatchTrimLoopData * trimLoops;
  TQ3AttributeSet     patchAttributeSet;
};
typedef struct TQ3NURBPatchData         TQ3NURBPatchData;
/******************************************************************************
 **                                                                          **
 **                             NURB Patch Routines                          **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3NURBPatch_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3NURBPatch_New(const TQ3NURBPatchData * nurbPatchData);


/*
 *  Q3NURBPatch_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBPatch_Submit(
  const TQ3NURBPatchData *  nurbPatchData,
  TQ3ViewObject             view);


/*
 *  Q3NURBPatch_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBPatch_SetData(
  TQ3GeometryObject         nurbPatch,
  const TQ3NURBPatchData *  nurbPatchData);


/*
 *  Q3NURBPatch_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBPatch_GetData(
  TQ3GeometryObject   nurbPatch,
  TQ3NURBPatchData *  nurbPatchData);


/*
 *  Q3NURBPatch_SetControlPoint()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBPatch_SetControlPoint(
  TQ3GeometryObject           nurbPatch,
  unsigned long               rowIndex,
  unsigned long               columnIndex,
  const TQ3RationalPoint4D *  point4D);


/*
 *  Q3NURBPatch_GetControlPoint()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBPatch_GetControlPoint(
  TQ3GeometryObject     nurbPatch,
  unsigned long         rowIndex,
  unsigned long         columnIndex,
  TQ3RationalPoint4D *  point4D);


/*
 *  Q3NURBPatch_SetUKnot()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBPatch_SetUKnot(
  TQ3GeometryObject   nurbPatch,
  unsigned long       knotIndex,
  float               knotValue);


/*
 *  Q3NURBPatch_SetVKnot()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBPatch_SetVKnot(
  TQ3GeometryObject   nurbPatch,
  unsigned long       knotIndex,
  float               knotValue);


/*
 *  Q3NURBPatch_GetUKnot()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBPatch_GetUKnot(
  TQ3GeometryObject   nurbPatch,
  unsigned long       knotIndex,
  float *             knotValue);


/*
 *  Q3NURBPatch_GetVKnot()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBPatch_GetVKnot(
  TQ3GeometryObject   nurbPatch,
  unsigned long       knotIndex,
  float *             knotValue);


/*
 *  Q3NURBPatch_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3NURBPatch_EmptyData(TQ3NURBPatchData * nurbPatchData);





/******************************************************************************
 **                                                                          **
 **                     Pixmap Marker Data Structure Definitions             **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3PixmapMarkerData {
  TQ3Point3D          position;
  long                xOffset;
  long                yOffset;
  TQ3StoragePixmap    pixmap;
  TQ3AttributeSet     pixmapMarkerAttributeSet;
};
typedef struct TQ3PixmapMarkerData      TQ3PixmapMarkerData;
/******************************************************************************
 **                                                                          **
 **                             Pixmap Marker Routines                       **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3PixmapMarker_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3PixmapMarker_New(const TQ3PixmapMarkerData * pixmapMarkerData);


/*
 *  Q3PixmapMarker_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_Submit(
  const TQ3PixmapMarkerData *  pixmapMarkerData,
  TQ3ViewObject                view);


/*
 *  Q3PixmapMarker_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_SetData(
  TQ3GeometryObject            geometry,
  const TQ3PixmapMarkerData *  pixmapMarkerData);


/*
 *  Q3PixmapMarker_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_GetData(
  TQ3GeometryObject      geometry,
  TQ3PixmapMarkerData *  pixmapMarkerData);


/*
 *  Q3PixmapMarker_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_EmptyData(TQ3PixmapMarkerData * pixmapMarkerData);


/*
 *  Q3PixmapMarker_GetPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_GetPosition(
  TQ3GeometryObject   pixmapMarker,
  TQ3Point3D *        position);


/*
 *  Q3PixmapMarker_SetPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_SetPosition(
  TQ3GeometryObject   pixmapMarker,
  const TQ3Point3D *  position);


/*
 *  Q3PixmapMarker_GetXOffset()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_GetXOffset(
  TQ3GeometryObject   pixmapMarker,
  long *              xOffset);


/*
 *  Q3PixmapMarker_SetXOffset()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_SetXOffset(
  TQ3GeometryObject   pixmapMarker,
  long                xOffset);


/*
 *  Q3PixmapMarker_GetYOffset()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_GetYOffset(
  TQ3GeometryObject   pixmapMarker,
  long *              yOffset);


/*
 *  Q3PixmapMarker_SetYOffset()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_SetYOffset(
  TQ3GeometryObject   pixmapMarker,
  long                yOffset);


/*
 *  Q3PixmapMarker_GetPixmap()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_GetPixmap(
  TQ3GeometryObject   pixmapMarker,
  TQ3StoragePixmap *  pixmap);


/*
 *  Q3PixmapMarker_SetPixmap()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PixmapMarker_SetPixmap(
  TQ3GeometryObject         pixmapMarker,
  const TQ3StoragePixmap *  pixmap);





/******************************************************************************
 **                                                                          **
 **                     Point Data Structure Definitions                     **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3PointData {
  TQ3Point3D          point;
  TQ3AttributeSet     pointAttributeSet;
};
typedef struct TQ3PointData             TQ3PointData;
/******************************************************************************
 **                                                                          **
 **                             Point Routines                               **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Point_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Point_New(const TQ3PointData * pointData);


/*
 *  Q3Point_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Point_Submit(
  const TQ3PointData *  pointData,
  TQ3ViewObject         view);


/*
 *  Q3Point_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Point_GetData(
  TQ3GeometryObject   point,
  TQ3PointData *      pointData);


/*
 *  Q3Point_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Point_SetData(
  TQ3GeometryObject     point,
  const TQ3PointData *  pointData);


/*
 *  Q3Point_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Point_EmptyData(TQ3PointData * pointData);


/*
 *  Q3Point_SetPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Point_SetPosition(
  TQ3GeometryObject   point,
  const TQ3Point3D *  position);


/*
 *  Q3Point_GetPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Point_GetPosition(
  TQ3GeometryObject   point,
  TQ3Point3D *        position);





/******************************************************************************
 **                                                                          **
 **                     Polygon Data Structure Definitions                   **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3PolygonData {
  unsigned long       numVertices;
  TQ3Vertex3D *       vertices;
  TQ3AttributeSet     polygonAttributeSet;
};
typedef struct TQ3PolygonData           TQ3PolygonData;
/******************************************************************************
 **                                                                          **
 **                         Polygon Routines                                 **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Polygon_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Polygon_New(const TQ3PolygonData * polygonData);


/*
 *  Q3Polygon_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polygon_Submit(
  const TQ3PolygonData *  polygonData,
  TQ3ViewObject           view);


/*
 *  Q3Polygon_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polygon_SetData(
  TQ3GeometryObject       polygon,
  const TQ3PolygonData *  polygonData);


/*
 *  Q3Polygon_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polygon_GetData(
  TQ3GeometryObject   polygon,
  TQ3PolygonData *    polygonData);


/*
 *  Q3Polygon_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polygon_EmptyData(TQ3PolygonData * polygonData);


/*
 *  Q3Polygon_GetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polygon_GetVertexPosition(
  TQ3GeometryObject   polygon,
  unsigned long       index,
  TQ3Point3D *        point);


/*
 *  Q3Polygon_SetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polygon_SetVertexPosition(
  TQ3GeometryObject   polygon,
  unsigned long       index,
  const TQ3Point3D *  point);


/*
 *  Q3Polygon_GetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polygon_GetVertexAttributeSet(
  TQ3GeometryObject   polygon,
  unsigned long       index,
  TQ3AttributeSet *   attributeSet);


/*
 *  Q3Polygon_SetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polygon_SetVertexAttributeSet(
  TQ3GeometryObject   polygon,
  unsigned long       index,
  TQ3AttributeSet     attributeSet);





/******************************************************************************
 **                                                                          **
 **                     Polyhedron Data Structure Definitions                **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

enum TQ3PolyhedronEdgeMasks {
  kQ3PolyhedronEdgeNone         = 0,
  kQ3PolyhedronEdge01           = 1 << 0,
  kQ3PolyhedronEdge12           = 1 << 1,
  kQ3PolyhedronEdge20           = 1 << 2,
  kQ3PolyhedronEdgeAll          = kQ3PolyhedronEdge01 | kQ3PolyhedronEdge12 | kQ3PolyhedronEdge20
};
typedef enum TQ3PolyhedronEdgeMasks TQ3PolyhedronEdgeMasks;


typedef unsigned long                   TQ3PolyhedronEdge;
struct TQ3PolyhedronEdgeData {
  unsigned long       vertexIndices[2];
  unsigned long       triangleIndices[2];
  TQ3AttributeSet     edgeAttributeSet;
};
typedef struct TQ3PolyhedronEdgeData    TQ3PolyhedronEdgeData;
struct TQ3PolyhedronTriangleData {
  unsigned long       vertexIndices[3];
  TQ3PolyhedronEdge   edgeFlag;
  TQ3AttributeSet     triangleAttributeSet;
};
typedef struct TQ3PolyhedronTriangleData TQ3PolyhedronTriangleData;
struct TQ3PolyhedronData {
  unsigned long       numVertices;
  TQ3Vertex3D *       vertices;
  unsigned long       numEdges;
  TQ3PolyhedronEdgeData * edges;
  unsigned long       numTriangles;
  TQ3PolyhedronTriangleData * triangles;
  TQ3AttributeSet     polyhedronAttributeSet;
};
typedef struct TQ3PolyhedronData        TQ3PolyhedronData;
/******************************************************************************
 **                                                                          **
 **                             Polyhedron Routines                          **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Polyhedron_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Polyhedron_New(const TQ3PolyhedronData * polyhedronData);


/*
 *  Q3Polyhedron_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_Submit(
  const TQ3PolyhedronData *  polyhedronData,
  TQ3ViewObject              view);


/*
 *  Q3Polyhedron_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_SetData(
  TQ3GeometryObject          polyhedron,
  const TQ3PolyhedronData *  polyhedronData);


/*
 *  Q3Polyhedron_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_GetData(
  TQ3GeometryObject    polyhedron,
  TQ3PolyhedronData *  polyhedronData);


/*
 *  Q3Polyhedron_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_EmptyData(TQ3PolyhedronData * polyhedronData);


/*
 *  Q3Polyhedron_SetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_SetVertexPosition(
  TQ3GeometryObject   polyhedron,
  unsigned long       index,
  const TQ3Point3D *  point);


/*
 *  Q3Polyhedron_GetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_GetVertexPosition(
  TQ3GeometryObject   polyhedron,
  unsigned long       index,
  TQ3Point3D *        point);


/*
 *  Q3Polyhedron_SetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_SetVertexAttributeSet(
  TQ3GeometryObject   polyhedron,
  unsigned long       index,
  TQ3AttributeSet     attributeSet);


/*
 *  Q3Polyhedron_GetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_GetVertexAttributeSet(
  TQ3GeometryObject   polyhedron,
  unsigned long       index,
  TQ3AttributeSet *   attributeSet);


/*
 *  Q3Polyhedron_GetTriangleData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_GetTriangleData(
  TQ3GeometryObject            polyhedron,
  unsigned long                triangleIndex,
  TQ3PolyhedronTriangleData *  triangleData);


/*
 *  Q3Polyhedron_SetTriangleData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_SetTriangleData(
  TQ3GeometryObject                  polyhedron,
  unsigned long                      triangleIndex,
  const TQ3PolyhedronTriangleData *  triangleData);


/*
 *  Q3Polyhedron_GetEdgeData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_GetEdgeData(
  TQ3GeometryObject        polyhedron,
  unsigned long            edgeIndex,
  TQ3PolyhedronEdgeData *  edgeData);


/*
 *  Q3Polyhedron_SetEdgeData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Polyhedron_SetEdgeData(
  TQ3GeometryObject              polyhedron,
  unsigned long                  edgeIndex,
  const TQ3PolyhedronEdgeData *  edgeData);





/******************************************************************************
 **                                                                          **
 **                     PolyLine Data Structure Definitions                  **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3PolyLineData {
  unsigned long       numVertices;
  TQ3Vertex3D *       vertices;
  TQ3AttributeSet *   segmentAttributeSet;
  TQ3AttributeSet     polyLineAttributeSet;
};
typedef struct TQ3PolyLineData          TQ3PolyLineData;
/******************************************************************************
 **                                                                          **
 **                         PolyLine Routines                                **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3PolyLine_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3PolyLine_New(const TQ3PolyLineData * polylineData);


/*
 *  Q3PolyLine_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PolyLine_Submit(
  const TQ3PolyLineData *  polyLineData,
  TQ3ViewObject            view);


/*
 *  Q3PolyLine_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PolyLine_SetData(
  TQ3GeometryObject        polyLine,
  const TQ3PolyLineData *  polyLineData);


/*
 *  Q3PolyLine_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PolyLine_GetData(
  TQ3GeometryObject   polyLine,
  TQ3PolyLineData *   polyLineData);


/*
 *  Q3PolyLine_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PolyLine_EmptyData(TQ3PolyLineData * polyLineData);


/*
 *  Q3PolyLine_GetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PolyLine_GetVertexPosition(
  TQ3GeometryObject   polyLine,
  unsigned long       index,
  TQ3Point3D *        position);


/*
 *  Q3PolyLine_SetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PolyLine_SetVertexPosition(
  TQ3GeometryObject   polyLine,
  unsigned long       index,
  const TQ3Point3D *  position);


/*
 *  Q3PolyLine_GetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PolyLine_GetVertexAttributeSet(
  TQ3GeometryObject   polyLine,
  unsigned long       index,
  TQ3AttributeSet *   attributeSet);


/*
 *  Q3PolyLine_SetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PolyLine_SetVertexAttributeSet(
  TQ3GeometryObject   polyLine,
  unsigned long       index,
  TQ3AttributeSet     attributeSet);


/*
 *  Q3PolyLine_GetSegmentAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PolyLine_GetSegmentAttributeSet(
  TQ3GeometryObject   polyLine,
  unsigned long       index,
  TQ3AttributeSet *   attributeSet);


/*
 *  Q3PolyLine_SetSegmentAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3PolyLine_SetSegmentAttributeSet(
  TQ3GeometryObject   polyLine,
  unsigned long       index,
  TQ3AttributeSet     attributeSet);






/******************************************************************************
 **                                                                          **
 **                     Torus Data Structure Definitions                     **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3TorusData {
  TQ3Point3D          origin;
  TQ3Vector3D         orientation;
  TQ3Vector3D         majorRadius;
  TQ3Vector3D         minorRadius;
  float               ratio;
  float               uMin;
  float               uMax;
  float               vMin;
  float               vMax;
  TQ3EndCap           caps;
  TQ3AttributeSet     interiorAttributeSet;
  TQ3AttributeSet     torusAttributeSet;
};
typedef struct TQ3TorusData             TQ3TorusData;
/******************************************************************************
 **                                                                          **
 **                             Torus Routines                               **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Torus_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Torus_New(const TQ3TorusData * torusData);


/*
 *  Q3Torus_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_Submit(
  const TQ3TorusData *  torusData,
  TQ3ViewObject         view);


/*
 *  Q3Torus_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_SetData(
  TQ3GeometryObject     torus,
  const TQ3TorusData *  torusData);


/*
 *  Q3Torus_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_GetData(
  TQ3GeometryObject   torus,
  TQ3TorusData *      torusData);


/*
 *  Q3Torus_SetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_SetOrigin(
  TQ3GeometryObject   torus,
  const TQ3Point3D *  origin);


/*
 *  Q3Torus_SetOrientation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_SetOrientation(
  TQ3GeometryObject    torus,
  const TQ3Vector3D *  orientation);


/*
 *  Q3Torus_SetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_SetMajorRadius(
  TQ3GeometryObject    torus,
  const TQ3Vector3D *  majorRadius);


/*
 *  Q3Torus_SetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_SetMinorRadius(
  TQ3GeometryObject    torus,
  const TQ3Vector3D *  minorRadius);


/*
 *  Q3Torus_SetRatio()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_SetRatio(
  TQ3GeometryObject   torus,
  float               ratio);


/*
 *  Q3Torus_GetOrigin()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_GetOrigin(
  TQ3GeometryObject   torus,
  TQ3Point3D *        origin);


/*
 *  Q3Torus_GetOrientation()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_GetOrientation(
  TQ3GeometryObject   torus,
  TQ3Vector3D *       orientation);


/*
 *  Q3Torus_GetMajorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_GetMajorRadius(
  TQ3GeometryObject   torus,
  TQ3Vector3D *       majorRadius);


/*
 *  Q3Torus_GetMinorRadius()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_GetMinorRadius(
  TQ3GeometryObject   torus,
  TQ3Vector3D *       minorRadius);


/*
 *  Q3Torus_GetRatio()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_GetRatio(
  TQ3GeometryObject   torus,
  float *             ratio);


/*
 *  Q3Torus_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Torus_EmptyData(TQ3TorusData * torusData);





/******************************************************************************
 **                                                                          **
 **                     Triangle Data Structure Definitions                  **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3TriangleData {
  TQ3Vertex3D         vertices[3];
  TQ3AttributeSet     triangleAttributeSet;
};
typedef struct TQ3TriangleData          TQ3TriangleData;
/******************************************************************************
 **                                                                          **
 **                         Triangle Routines                                **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3Triangle_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3Triangle_New(const TQ3TriangleData * triangleData);


/*
 *  Q3Triangle_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Triangle_Submit(
  const TQ3TriangleData *  triangleData,
  TQ3ViewObject            view);


/*
 *  Q3Triangle_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Triangle_SetData(
  TQ3GeometryObject        triangle,
  const TQ3TriangleData *  triangleData);


/*
 *  Q3Triangle_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Triangle_GetData(
  TQ3GeometryObject   triangle,
  TQ3TriangleData *   triangleData);


/*
 *  Q3Triangle_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Triangle_EmptyData(TQ3TriangleData * triangleData);


/*
 *  Q3Triangle_GetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Triangle_GetVertexPosition(
  TQ3GeometryObject   triangle,
  unsigned long       index,
  TQ3Point3D *        point);


/*
 *  Q3Triangle_SetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Triangle_SetVertexPosition(
  TQ3GeometryObject   triangle,
  unsigned long       index,
  const TQ3Point3D *  point);


/*
 *  Q3Triangle_GetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Triangle_GetVertexAttributeSet(
  TQ3GeometryObject   triangle,
  unsigned long       index,
  TQ3AttributeSet *   attributeSet);


/*
 *  Q3Triangle_SetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3Triangle_SetVertexAttributeSet(
  TQ3GeometryObject   triangle,
  unsigned long       index,
  TQ3AttributeSet     attributeSet);





/******************************************************************************
 **                                                                          **
 **                     TriGrid Data Structure Definitions                   **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3TriGridData {
  unsigned long       numRows;
  unsigned long       numColumns;
  TQ3Vertex3D *       vertices;
  TQ3AttributeSet *   facetAttributeSet;
  TQ3AttributeSet     triGridAttributeSet;
};
typedef struct TQ3TriGridData           TQ3TriGridData;
/******************************************************************************
 **                                                                          **
 **                             TriGrid Routines                             **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3TriGrid_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3TriGrid_New(const TQ3TriGridData * triGridData);


/*
 *  Q3TriGrid_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriGrid_Submit(
  const TQ3TriGridData *  triGridData,
  TQ3ViewObject           view);


/*
 *  Q3TriGrid_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriGrid_SetData(
  TQ3GeometryObject       triGrid,
  const TQ3TriGridData *  triGridData);


/*
 *  Q3TriGrid_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriGrid_GetData(
  TQ3GeometryObject   triGrid,
  TQ3TriGridData *    triGridData);


/*
 *  Q3TriGrid_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriGrid_EmptyData(TQ3TriGridData * triGridData);


/*
 *  Q3TriGrid_GetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriGrid_GetVertexPosition(
  TQ3GeometryObject   triGrid,
  unsigned long       rowIndex,
  unsigned long       columnIndex,
  TQ3Point3D *        position);


/*
 *  Q3TriGrid_SetVertexPosition()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriGrid_SetVertexPosition(
  TQ3GeometryObject   triGrid,
  unsigned long       rowIndex,
  unsigned long       columnIndex,
  const TQ3Point3D *  position);


/*
 *  Q3TriGrid_GetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriGrid_GetVertexAttributeSet(
  TQ3GeometryObject   triGrid,
  unsigned long       rowIndex,
  unsigned long       columnIndex,
  TQ3AttributeSet *   attributeSet);


/*
 *  Q3TriGrid_SetVertexAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriGrid_SetVertexAttributeSet(
  TQ3GeometryObject   triGrid,
  unsigned long       rowIndex,
  unsigned long       columnIndex,
  TQ3AttributeSet     attributeSet);


/*
 *  Q3TriGrid_GetFacetAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriGrid_GetFacetAttributeSet(
  TQ3GeometryObject   triGrid,
  unsigned long       faceIndex,
  TQ3AttributeSet *   facetAttributeSet);


/*
 *  Q3TriGrid_SetFacetAttributeSet()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriGrid_SetFacetAttributeSet(
  TQ3GeometryObject   triGrid,
  unsigned long       faceIndex,
  TQ3AttributeSet     facetAttributeSet);





/******************************************************************************
 **                                                                          **
 **                     TriMesh Data Structure Definitions                   **
 **                                                                          **
 *****************************************************************************/
#endif  /* CALL_NOT_IN_CARBON */

struct TQ3TriMeshTriangleData {
  unsigned long       pointIndices[3];
};
typedef struct TQ3TriMeshTriangleData   TQ3TriMeshTriangleData;
struct TQ3TriMeshEdgeData {
  unsigned long       pointIndices[2];
  unsigned long       triangleIndices[2];
};
typedef struct TQ3TriMeshEdgeData       TQ3TriMeshEdgeData;
struct TQ3TriMeshAttributeData {
  TQ3AttributeType    attributeType;          /* The type of attribute       */
  void *              data;                   /* Pointer to the contiguous     */
                                              /* attribute data.           */
  char *              attributeUseArray;      /* This is only used with custom */
                                              /* attributes                */
};
typedef struct TQ3TriMeshAttributeData  TQ3TriMeshAttributeData;
struct TQ3TriMeshData {
  TQ3AttributeSet     triMeshAttributeSet;

  unsigned long       numTriangles;
  TQ3TriMeshTriangleData * triangles;

  unsigned long       numTriangleAttributeTypes;
  TQ3TriMeshAttributeData * triangleAttributeTypes;

  unsigned long       numEdges;
  TQ3TriMeshEdgeData * edges;

  unsigned long       numEdgeAttributeTypes;
  TQ3TriMeshAttributeData * edgeAttributeTypes;

  unsigned long       numPoints;
  TQ3Point3D *        points;

  unsigned long       numVertexAttributeTypes;
  TQ3TriMeshAttributeData * vertexAttributeTypes;

  TQ3BoundingBox      bBox;
};
typedef struct TQ3TriMeshData           TQ3TriMeshData;
/******************************************************************************
 **                                                                          **
 **                         TriMesh Routines                                 **
 **                                                                          **
 *****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
 *  Q3TriMesh_New()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3GeometryObject )
Q3TriMesh_New(const TQ3TriMeshData * triMeshData);


/*
 *  Q3TriMesh_Submit()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriMesh_Submit(
  const TQ3TriMeshData *  triMeshData,
  TQ3ViewObject           view);


/*
 *  Q3TriMesh_SetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriMesh_SetData(
  TQ3GeometryObject       triMesh,
  const TQ3TriMeshData *  triMeshData);


/*
 *  Q3TriMesh_GetData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriMesh_GetData(
  TQ3GeometryObject   triMesh,
  TQ3TriMeshData *    triMeshData);


/*
 *  Q3TriMesh_EmptyData()
 *  
 *  Availability:
 *    Non-Carbon CFM:   not available
 *    CarbonLib:        not available
 *    Mac OS X:         not available
 */
EXTERN_API_C( TQ3Status )
Q3TriMesh_EmptyData(TQ3TriMeshData * triMeshData);





#endif  /* CALL_NOT_IN_CARBON */


#if PRAGMA_ENUM_ALWAYSINT
    #pragma enumsalwaysint reset
    #ifdef __QD3DGEOMETRY__RESTORE_TWOBYTEINTS
        #pragma fourbyteints off
    #endif
#elif PRAGMA_ENUM_OPTIONS
    #pragma option enum=reset
#elif defined(__QD3DGEOMETRY__RESTORE_PACKED_ENUMS)
    #pragma options(pack_enums)
#endif

#if PRAGMA_STRUCT_ALIGN
    #pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
    #pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
    #pragma pack()
#endif

#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif

#ifdef __cplusplus
}
#endif

#endif /* __QD3DGEOMETRY__ */

