home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / QuickTime VR / Windows / Interfaces / QD3DMapping.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-03  |  10.0 KB  |  341 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DMapping.h                                             **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Mapping routines                                          **
  7.  **                                                                          **
  8.  **                                                                          **
  9.  **                                                                          **
  10.  **     Copyright (C) 1995 Apple Computer, Inc. All rights reserved.         **    
  11.  **                                                                          **
  12.  **                                                                          **
  13.  *****************************************************************************/
  14.  
  15. #if defined (ESCHER_VER_15) && ESCHER_VER_15
  16.  
  17. #ifndef QD3DMapping_h
  18. #define QD3DMapping_h
  19.  
  20. #if PRAGMA_ONCE
  21.     #pragma once
  22. #endif
  23.  
  24. #if defined(THINK_C) || defined(__SC__)
  25.     #pragma options(!pack_enums, !align_arrays)
  26.     #pragma SC options align=power
  27. #elif defined(__MWERKS__)
  28.     #pragma enumsalwaysint on
  29.     #pragma align_array_members off
  30.     #pragma options align=native
  31. #elif defined(__PPCC__)
  32.     #pragma options align=power
  33. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  34.     #pragma options enum=int
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif    /* __cplusplus */
  40.  
  41. /******************************************************************************
  42.  **                                                                             **
  43.  **                            Mapping Data                                     **
  44.  **                                                                             **
  45.  *****************************************************************************/
  46.  
  47. typedef enum TQ3MappingOrder {
  48.     kQ3ObjectOrderPoint,
  49.     kQ3ObjectOrderCurve,
  50.     kQ3ObjectOrderSurface
  51. } TQ3MappingOrder;
  52.  
  53. typedef enum TQ3MappingInfoMasks {
  54.     kQ3MappingInfoNothingValid        = 0,
  55.     kQ3MappingInfoMaskPosition        = 1<<0,
  56.     kQ3MappingInfoMaskOrientation    = 1<<1,
  57.     kQ3MappingInfoMaskNormal        = 1<<2,
  58.     kQ3MappingInfoMaskObjectID        = 1<<3,
  59.     kQ3MappingInfoMaskOrder            = 1<<4,
  60.     kQ3MappingInfoMaskShapePart        = 1<<5,
  61.     kQ3MappingInfoMaskGuideObject    = 1<<6,
  62.     kQ3MappingInfoMaskNoHit            = 1<<7
  63. } TQ3MappingInfoMasks;
  64.  
  65. typedef unsigned long TQ3MappingInfoMask;
  66.  
  67. typedef struct TQ3MappingInfo {
  68.     TQ3MappingInfoMask            validInfo;
  69.     TQ3Point3D                    position;
  70.     TQ3Quaternion                orientation;
  71.     TQ3Vector3D                    normal;
  72.     unsigned long                 objectID;
  73.     TQ3MappingOrder                order;
  74.     TQ3ShapePartObject            shapePart;
  75.     TQ3GuideObject                guideObject;
  76. } TQ3MappingInfo;
  77.  
  78. typedef struct TQ3MappingData {
  79.     TQ3Boolean        clipToVolume;
  80.     TQ3BoundingBox    clipVolume;
  81.     float            pointTolerance;
  82.     float             lineTolerance;
  83. } TQ3MappingData;
  84.  
  85. /******************************************************************************
  86.  **                                                                             **
  87.  **                            Mapping Routines                                 **
  88.  **                                                                             **
  89.  *****************************************************************************/
  90.  
  91. QD3D_EXPORT TQ3ObjectType Q3Mapping_GetType(
  92.     TQ3MappingObject        mapping);
  93.  
  94. QD3D_EXPORT TQ3Status Q3Mapping_Submit(
  95.     TQ3MappingObject        mapping, 
  96.     TQ3ViewObject            view);
  97.  
  98. QD3D_EXPORT TQ3Status Q3Mapping_SetData(
  99.     TQ3MappingObject        mapping, 
  100.     const TQ3MappingData    *data);
  101.  
  102. QD3D_EXPORT TQ3Status Q3Mapping_GetData(
  103.     TQ3MappingObject        mapping, 
  104.     TQ3MappingData            *data);
  105.  
  106. QD3D_EXPORT TQ3Status Q3Mapping_SetClipToVolume(
  107.     TQ3MappingObject        mapping, 
  108.     TQ3Boolean                clipToVolume);
  109.  
  110. QD3D_EXPORT TQ3Status Q3Mapping_GetClipToVolume(
  111.     TQ3MappingObject        mapping, 
  112.     TQ3Boolean                *clipToVolume);
  113.     
  114. QD3D_EXPORT TQ3Status Q3Mapping_SetClipVolume(
  115.     TQ3MappingObject        mapping, 
  116.     const TQ3BoundingBox    *clipVolume);
  117.  
  118. QD3D_EXPORT TQ3Status Q3Mapping_GetClipVolume(
  119.     TQ3MappingObject        mapping, 
  120.     TQ3BoundingBox            *clipVolume);
  121.  
  122. QD3D_EXPORT TQ3Status Q3Mapping_SetPointTolerance(
  123.     TQ3MappingObject        mapping, 
  124.     float                    pointTolerance);
  125.  
  126. QD3D_EXPORT TQ3Status Q3Mapping_GetPointTolerance(
  127.     TQ3MappingObject        mapping, 
  128.     float                    *pointTolerance);
  129.  
  130. QD3D_EXPORT TQ3Status Q3Mapping_SetLineTolerance(
  131.     TQ3MappingObject        mapping, 
  132.     float                    lineTolerance);
  133.  
  134. QD3D_EXPORT TQ3Status Q3Mapping_GetLineTolerance(
  135.     TQ3MappingObject        mapping, 
  136.     float                    *lineTolerance);
  137.  
  138.  
  139. /******************************************************************************
  140.  **                                                                             **
  141.  **                            PickMapping Data                                 **
  142.  **                                                                             **
  143.  *****************************************************************************/
  144.  
  145. typedef TQ3Status (*TQ3PickMappingMethod)(
  146.     TQ3ViewObject    view,
  147.     long            refCon);
  148.     
  149. typedef struct TQ3PickMappingData {
  150.     TQ3MappingData            mappingData;
  151.     TQ3PickMappingMethod    pickMappingMethod;
  152.     long                    refCon;
  153.     TQ3MappingObject        noHitMapping;
  154. } TQ3PickMappingData;
  155.  
  156.  
  157. /******************************************************************************
  158.  **                                                                             **
  159.  **                            PickMapping Routines                              **
  160.  **                                                                             **
  161.  *****************************************************************************/
  162.  
  163. QD3D_EXPORT TQ3MappingObject Q3PickMapping_New(
  164.     const TQ3PickMappingData     *data);
  165.  
  166. QD3D_EXPORT TQ3Status Q3PickMapping_Submit(
  167.     const TQ3PickMappingData     *data,
  168.     TQ3ViewObject                view);
  169.  
  170. QD3D_EXPORT TQ3Status Q3PickMapping_SetData(
  171.     TQ3MappingObject            mapping, 
  172.     const TQ3PickMappingData    *data);
  173.  
  174. QD3D_EXPORT TQ3Status Q3PickMapping_GetData(
  175.     TQ3MappingObject            mapping,
  176.     TQ3PickMappingData            *data);
  177.  
  178. QD3D_EXPORT TQ3Status Q3PickMapping_GetPickMappingMethod(
  179.     TQ3MappingObject            mapping, 
  180.     TQ3PickMappingMethod        *pickMappingMethod);
  181.  
  182. QD3D_EXPORT TQ3Status Q3PickMapping_SetPickMappingMethod(
  183.     TQ3MappingObject            mapping, 
  184.     const TQ3PickMappingMethod     *pickMappingMethod);
  185.  
  186. QD3D_EXPORT TQ3Status Q3PickMapping_GetRefCon(
  187.     TQ3MappingObject            mapping, 
  188.     long                        *refCon);
  189.  
  190. QD3D_EXPORT TQ3Status Q3PickMapping_SetRefCon(
  191.     TQ3MappingObject            mapping, 
  192.     long                         refCon);
  193.  
  194. QD3D_EXPORT TQ3Status Q3PickMapping_GetPickNoHitMapping(
  195.     TQ3MappingObject            mapping, 
  196.     TQ3MappingObject            *noHitMapping);
  197.  
  198. QD3D_EXPORT TQ3Status Q3PickMapping_SetPickNoHitMapping(
  199.     TQ3MappingObject            mapping, 
  200.     const TQ3MappingObject         noHitMapping);
  201.     
  202.     
  203. /******************************************************************************
  204.  **                                                                             **
  205.  **                            GuideMapping Data                                 **
  206.  **                                                                             **
  207.  *****************************************************************************/
  208.     
  209. typedef struct TQ3GuideMappingData {
  210.     TQ3MappingData            mappingData;
  211.     TQ3GroupObject            guideGroup;
  212. } TQ3GuideMappingData;
  213.  
  214.  
  215. /******************************************************************************
  216.  **                                                                             **
  217.  **                            GuideMapping Routines                              **
  218.  **                                                                             **
  219.  *****************************************************************************/
  220.  
  221. QD3D_EXPORT TQ3MappingObject Q3GuideMapping_New(
  222.     const TQ3GuideMappingData     *data);
  223.  
  224. QD3D_EXPORT TQ3Status Q3GuideMapping_Submit(
  225.     const TQ3GuideMappingData     *data,
  226.     TQ3ViewObject                view);
  227.  
  228. QD3D_EXPORT TQ3Status Q3GuideMapping_SetData(
  229.     TQ3MappingObject            mapping, 
  230.     const TQ3GuideMappingData    *data);
  231.  
  232. QD3D_EXPORT TQ3Status Q3GuideMapping_GetData(
  233.     TQ3MappingObject            mapping,
  234.     TQ3GuideMappingData            *data);
  235.  
  236. QD3D_EXPORT TQ3Status Q3GuideMapping_GetGuideGroup(
  237.     TQ3MappingObject            mapping, 
  238.     TQ3GroupObject                *guideGroup);
  239.  
  240. QD3D_EXPORT TQ3Status Q3GuideMapping_SetGuideGroup(
  241.     TQ3MappingObject            mapping, 
  242.     const TQ3GroupObject         guideGroup);
  243.     
  244.  
  245. /******************************************************************************
  246.  **                                                                             **
  247.  **                            FreeMapping Data                                 **
  248.  **                                                                             **
  249.  *****************************************************************************/
  250.  
  251. typedef struct TQ3FreeMappingData {
  252.     TQ3MappingData            mappingData;
  253. } TQ3FreeMappingData;
  254.  
  255.  
  256. /******************************************************************************
  257.  **                                                                             **
  258.  **                            FreeMapping Routines                              **
  259.  **                                                                             **
  260.  *****************************************************************************/
  261.  
  262. QD3D_EXPORT TQ3MappingObject Q3FreeMapping_New(
  263.     const TQ3FreeMappingData     *data);
  264.  
  265. QD3D_EXPORT TQ3Status Q3FreeMapping_Submit(
  266.     const TQ3FreeMappingData     *data,
  267.     TQ3ViewObject                view);
  268.  
  269. QD3D_EXPORT TQ3Status Q3FreeMapping_SetData(
  270.     TQ3MappingObject            mapping, 
  271.     const TQ3FreeMappingData    *data);
  272.  
  273. QD3D_EXPORT TQ3Status Q3FreeMapping_GetData(
  274.     TQ3MappingObject            mapping,
  275.     TQ3FreeMappingData            *data);
  276.  
  277.  
  278. /******************************************************************************
  279.  **                                                                             **
  280.  **                            AlignMapping Data                                 **
  281.  **                                                                             **
  282.  *****************************************************************************/
  283.  
  284. typedef struct TQ3AlignMappingData {
  285.     TQ3MappingData            mappingData;
  286.     TQ3Point3D                position;
  287.     TQ3Vector3D                normal;
  288. } TQ3AlignMappingData;
  289.  
  290.  
  291. /******************************************************************************
  292.  **                                                                             **
  293.  **                            AlignMapping Routines                              **
  294.  **                                                                             **
  295.  *****************************************************************************/
  296.  
  297. QD3D_EXPORT TQ3MappingObject Q3AlignMapping_New(
  298.     const TQ3AlignMappingData     *data);
  299.  
  300. QD3D_EXPORT TQ3Status Q3AlignMapping_Submit(
  301.     const TQ3AlignMappingData     *data,
  302.     TQ3ViewObject                view);
  303.  
  304. QD3D_EXPORT TQ3Status Q3AlignMapping_SetData(
  305.     TQ3MappingObject            mapping, 
  306.     const TQ3AlignMappingData    *data);
  307.  
  308. QD3D_EXPORT TQ3Status Q3AlignMapping_GetData(
  309.     TQ3MappingObject            mapping,
  310.     TQ3AlignMappingData            *data);
  311.     
  312. QD3D_EXPORT TQ3Status Q3AlignMapping_SetPosition(
  313.     TQ3MappingObject            mapping,
  314.     const TQ3Point3D            *position);
  315.  
  316. QD3D_EXPORT TQ3Status Q3AlignMapping_GetPosition(
  317.     TQ3MappingObject            mapping,
  318.     TQ3Point3D                    *position);
  319.  
  320. QD3D_EXPORT TQ3Status Q3AlignMapping_SetNormal(
  321.     TQ3MappingObject            mapping,
  322.     const TQ3Vector3D            *normal);
  323.  
  324. QD3D_EXPORT TQ3Status Q3AlignMapping_GetNormal(
  325.     TQ3MappingObject            mapping,
  326.     TQ3Vector3D                    *normal);
  327.     
  328. #ifdef __cplusplus
  329. }
  330. #endif    /* __cplusplus */
  331.  
  332. #if defined(__MWERKS__)
  333.     #pragma enumsalwaysint reset
  334. #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
  335.     #pragma options enum=reset
  336. #endif
  337.  
  338. #endif  /*  QD3DMapping_h  */
  339.  
  340. #endif    /* ESCHER_VER_15 */
  341.