mi32/rvccad.h

Go to the documentation of this file.
00001 /**
00002  * \file rvccad.h <mi32/rvccad.h>
00003  * \brief CAD object descriptions Version 2.0      (RVCCAD format)
00004  *
00005  * \if NODOC
00006  * $Id: rvccad.h_v 1.97 2005/09/07 19:51:44 scowan Exp $
00007  *
00008  * $Log: rvccad.h_v $
00009  * Revision 1.97  2005/09/07 19:51:44  scowan
00010  * Removed unused structure.
00011  *
00012  * Revision 1.96  2005/02/11 15:42:52  mju
00013  * Remove legacy object selection functions as no longer used.
00014  *
00015  * Revision 1.95  2005/01/03 15:57:16  mju
00016  * No_Depr for legacy object selection dlgs.
00017  *
00018  * Revision 1.94  2004/09/02 16:15:32  scowan
00019  * Removed prototypes and an include file.
00020  *
00021  * Revision 1.93  2004/09/01 22:54:20  scowan
00022  * Most functions removed or moved to private include file.
00023  *
00024  * Revision 1.92  2004/08/24 22:09:04  scowan
00025  * Added total line length field to header.
00026  *
00027  * Revision 1.91  2004/08/10 21:27:12  scowan
00028  * *** empty log message ***
00029  *
00030  * Revision 1.90  2004/08/10 21:10:10  scowan
00031  * Removed now unused prototypes.
00032  *
00033  * Revision 1.89  2004/06/14 16:20:42  scowan
00034  * Added baseline flags.
00035  *
00036  * Revision 1.88  2004/06/03 22:10:54  scowan
00037  * Removed archived prototype.
00038  *
00039  * Revision 1.87  2004/05/18 21:59:57  scowan
00040  * Adde dmore fields to cad text.
00041  *
00042  * Revision 1.86  2004/05/17 23:30:07  scowan
00043  * Added many items to text structure.
00044  *
00045  * Revision 1.85  2004/04/13 16:01:18  scowan
00046  * Fixed invalid style flag value in cad objects.
00047  *
00048  * Revision 1.84  2004/03/10 22:47:14  mju
00049  * Remove getCADObjectSet, deprecate other getCADObject inlines.
00050  *
00051  * Revision 1.83  2003/10/15 17:39:00  mju
00052  * Deprecate groupkey.
00053  *
00054  * Revision 1.82  2003/10/13 17:05:45  scowan
00055  * Removed unused structre.
00056  *
00057  * Revision 1.81  2003/10/13 17:03:58  scowan
00058  * Removed unused function prototypes and inlines.
00059  *
00060  * Revision 1.80  2003/09/15 13:49:56  fileserver!dwilliss
00061  * Doxygen
00062  *
00063  * Revision 1.79  2003/08/27 21:31:17  scowan
00064  * Removed function to get linked file.
00065  *
00066  * Revision 1.78  2003/02/06 21:30:21  scowan
00067  * Removed some functions.
00068  *
00069  * Revision 1.77  2002/12/26 16:23:40  scowan
00070  * Fixed invalid extents handling.
00071  *
00072  * Revision 1.76  2002/09/09 13:54:00  mju
00073  * Use prevent_memfunc.
00074  *
00075  * Revision 1.75  2002/08/21 20:38:49  scowan
00076  * Deprecated old object name define.
00077  *
00078  * Revision 1.74  2002/08/20 15:08:39  mju
00079  * Remove deprecated dialog defines.
00080  *
00081  * Revision 1.73  2002/03/08 18:48:10  scowan
00082  * Added clear method.
00083  * delrecate mem.. functions using info struct.
00084  *
00085  * Revision 1.72  2002/01/03 22:51:29  scowan
00086  * Added methods to manage extents.
00087  *
00088  * Revision 1.71  2001/09/14 14:58:03  mju
00089  * No Mdlg in win32native.
00090  *
00091  * Revision 1.70  2001/07/18 21:04:09  scowan
00092  * Added TAB file linking.
00093  *
00094  * Revision 1.69  2001/07/11 16:07:34  scowan
00095  * Added encoding for link creation.
00096  *
00097  * Revision 1.68  2001/07/10 17:42:14  scowan
00098  * Mored CAD object linking to private include file.
00099  *
00100  * Revision 1.67  2001/06/18 15:40:47  mju
00101  * Convert RasterToCADBoundary now takes GENINFO reference.
00102  * ConvertVectorToCAD now takes geninfo reference.
00103  *
00104  * Revision 1.66  2001/05/29 21:11:28  scowan
00105  * Added functions to assist in wrapper classes.
00106  *
00107  * Revision 1.65  2000/09/06 16:39:41  scowan
00108  * Added read open header function.
00109  *
00110  * Revision 1.64  2000/07/13 21:30:42  mju
00111  * Deprecated old MfGet...UC #defines.
00112  *
00113  * Revision 1.63  2000/04/21 15:02:19  scowan
00114  * Added assignment operator.
00115  *
00116  * Revision 1.62  2000/03/21 23:14:32  scowan
00117  * More const.
00118  *
00119  * Revision 1.60  2000/01/03 20:09:26  scowan
00120  * More inline methods.
00121  *
00122  * Revision 1.59  1999/12/29 16:53:59  scowan
00123  * Move cad element definition.
00124  *
00125  * Revision 1.58  1999/12/23 16:31:24  scowan
00126  * Definition of new CAD element class.
00127  *
00128  * Revision 1.57  1999/12/17 18:11:21  scowan
00129  * More const.
00130  *
00131  * Revision 1.54  1999/10/05 22:45:08  scowan
00132  * Change headeer to Inheritance.
00133  *
00134  * Revision 1.53  1999/08/06 17:11:35  dwilliss
00135  * Just added a comment to clarify something.
00136  *
00137  * Revision 1.52  1999/07/26 19:37:08  scowan
00138  * Added function to return linked to file.
00139  *
00140  * Revision 1.49  1999/06/11  16:09:19  mju
00141  * In obj sel dlg add defaults for filter+filtdata.
00142  *
00143  * Revision 1.48  1999/06/11  14:45:09  mju
00144  * Obj sel dlg.
00145  *
00146  * Revision 1.47  1999/06/10  22:10:42  mju
00147  * Object selection dialog update.
00148  *
00149  * Revision 1.46  1999/05/07  21:22:06  mju
00150  * Header restruct.
00151  *
00152  *
00153  * By Steve Cowan    9-19-90
00154  * \endif
00155 **/
00156 
00157 #ifndef INC_MI32_RVCCAD_H
00158 #define INC_MI32_RVCCAD_H
00159 
00160 #ifndef  INC_MI32_RVCDEFNS_H
00161    #include <mi32/rvcdefns.h>
00162 #endif
00163 
00164 #ifndef  INC_MI32_COLOR_H
00165    #include <mi32/color.h>
00166 #endif
00167 
00168 #ifndef  INC_MI32_ELEMSTYL_H
00169    #include <mi32/elemstyl.h>
00170 #endif
00171 
00172 struct RVCCADINFO : public RVCGENINFO {
00173    DPOINT3D_OLD minval;    //!< 24  Min coord values for the entire CADobj 
00174    DPOINT3D_OLD maxval;    //!< 24  Max coord values for the entire CADobj 
00175    UINT16 PointType;       //!< 2   RVC CAD point types 
00176    UINT16 LinkType;        //!< 2   Type of link (DXF, MIF, ...) 
00177    UINT16 ElemHdrSize;     //!< 2   Size of CADELEMHDR  (set by MfMakeCAD routine) 
00178    UINT16 CAD_BlockSize;   //!< 2   Size of CADBLOCK    (set by MfMakeCAD routine) 
00179    UINT32 MaxSize;         //!< 4   Maximum Size of an CAD object element  (set by MfUpdateCAD routine) 
00180    UINT32 NumBlocks;       //!< 4   Number of CAD object Block Headers 
00181    DOUBLE xscale;          //!< 8   Scale between CAD object and ground distances 
00182    DOUBLE yscale;          //!< 8   Scale between CAD object and ground distances 
00183    DOUBLE zscale;          //!< 8   Scale between CAD object and ground distances 
00184    INT32 NextElemID;       //!< 4   Next element ID variable 
00185    INT32 m_EditBlockNum;   //!< 4   In memory field only
00186    DOUBLE m_TotalLineLength;
00187    
00188    RVCCADINFO (
00189       ) {Clear();}
00190    
00191    RVCCADINFO (
00192       const RVCGENINFO& ginfo
00193       ) {Clear();*static_cast<RVCGENINFO*>(this) = ginfo;}
00194    
00195    RVCCADINFO& operator= (
00196       const RVCGENINFO& ginfo
00197       ) {*static_cast<RVCGENINFO*>(this) = ginfo; return (*this);}
00198       
00199    void Clear (
00200       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00201    
00202    //! Get extents of CAD object.
00203    //! @return extents of CAD object
00204    DRECT3D GetExtents (
00205       ) const {
00206       DRECT3D rect;
00207       rect.xinit = minval.x;     
00208       rect.yinit = minval.y;     
00209       rect.zinit = minval.z;     
00210       rect.xlast = maxval.x;
00211       rect.ylast = maxval.y;
00212       rect.zlast = maxval.z;
00213       return (rect);
00214       }
00215 
00216    //! Set extents of CAD object.
00217    void SetExtents (
00218       const DRECT3D& rect
00219       ) {
00220       minval.x = rect.xinit;     
00221       minval.y = rect.yinit;     
00222       minval.z = rect.zinit;     
00223       maxval.x = rect.xlast;
00224       maxval.y = rect.ylast;
00225       maxval.z = rect.zlast;
00226       return;
00227       }
00228 
00229    };
00230 
00231 
00232 /* If structure size changes, geom.dll will need to be changed */
00233 struct CADBLOCK {
00234    RVC::OBJECTNAME name;   //!< 32 Name of Block 
00235    RVC::OBJECTDESC desc;   //!< 128 Description of a block 
00236    DPOINT3D BasePt;        //!< 24 Base point for the block 
00237    DPOINT3D GridPt;        //!< 24 Base point of snap grid 
00238    DPOINT3D minval;        //!< 24 Minimum coordinate values for the block 
00239    DPOINT3D maxval;        //!< 24 Maximum coordinate values for the block 
00240    DOUBLE xscale;          //!<  8 Scale between CAD block and ground distances (x scale) 
00241    DOUBLE yscale;          //!<  8 Scale between CAD block and ground distances (y scale) 
00242    DOUBLE zscale;          //!<  8 Scale between CAD block and ground distances (z scale) 
00243    DOUBLE xsize;           //!<  8 X direction size in CAD units (snap grid) 
00244    DOUBLE ysize;           //!<  8 Y direction size in CAD units (snap grid) 
00245    DOUBLE zsize;           //!<  8 Z direction size in CAD units (snap grid) 
00246    COLOR GridColor;        //!<  8 Grid snap point color - XColor format 
00247    UINT32 NumElem;            //!<  4 Total number of elements in block 
00248    INT32 dbrecord;            //!<  4 Pointer to dblist entry (set by editor) 
00249    FLOAT rotate;           //!<  4 Rotation angle (snap grid) 
00250    UINT32 flags;           //!<  4 Flags defined below 
00251    UINT16 LinkType;        //!<  2 Type of link (DXF, MIF, ...) 
00252    UINT16 space;           //!<  2 Spare bytes 
00253    UINT32 LinkOffset;         //!<  4 File offset to linked data 
00254    
00255    CADBLOCK (
00256       ) {Clear();}
00257    
00258    void Clear (
00259       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00260    
00261    //! Get extents of CAD block
00262    //! @return extents of CAD block
00263    DRECT3D GetExtents (
00264       ) const {
00265       DRECT3D rect;
00266       rect.xinit = minval.x;     
00267       rect.yinit = minval.y;     
00268       rect.zinit = minval.z;     
00269       rect.xlast = maxval.x;
00270       rect.ylast = maxval.y;
00271       rect.zlast = maxval.z;
00272       return (rect);
00273       }
00274 
00275    void SetExtents (
00276       const DRECT3D& rect
00277       ) {
00278       minval.x = rect.xinit;     
00279       minval.y = rect.yinit;     
00280       minval.z = rect.zinit;     
00281       maxval.x = rect.xlast;
00282       maxval.y = rect.ylast;
00283       maxval.z = rect.zlast;
00284       return;
00285       }
00286 
00287    };
00288 
00289 //! Disallow memset/memcpy.
00290 PREVENT_MEMFUNC(RVCCADINFO)
00291 PREVENT_MEMFUNC(CADBLOCK)
00292 
00293 #define RVCCAD_MaxLink     5
00294 #define RVCCAD_Internal    0
00295 #define RVCCAD_MIF         1     //!< Mapinfo .MIF format
00296 #define RVCCAD_AGF         2     //!< Atlas GIS 3.0 internal format
00297 #define RVCCAD_SHP         3     //!< Arc/Info Shapefile format
00298 #define RVCCAD_TAB         4     //!< MapInfo TAB format
00299 
00300 #define CADBLOCK_HasGrid      (0x00000001)
00301 #define CADBLOCK_DrawGridPts  (0x00000002)
00302 #define CADBLOCK_DrawLast     (0x00000004)
00303 
00304 
00305 struct CADELEMHDR {
00306    INT32 ElemSize;                  //!<  Entire size of CAD element stored (set by MfUpdateCADElem()) 
00307    UINT16 ElemType;              //!<  Type of CADobj element stored (see below) 
00308    UINT8 NumAttrib;              //!<  Number of attributes in data (set by MfWriteCADElem()) 
00309    UINT8 NumExtra;               //!<  Number of extra attributes in extra (set by MfUpdateCADElem()) 
00310    };
00311 
00312 /*--- Defined CAD elements ---*/
00313 
00314 #define CAD_INSERT         0
00315 #define CAD_POINT          1     //!<  Has no structure 
00316 #define CAD_CIRCLE         2
00317 #define CAD_ARC            3
00318 #define CAD_ARCCHORD       4     //!<  Uses CADARC structure 
00319 #define CAD_TEXT           5
00320 #define CAD_BLOCKTEXT      6     //!<  Uses CADTEXT structure  N.I.Y. 
00321 #define CAD_LINE           7
00322 #define CAD_RBOX           8     //!<  An easy way to define a rectangle 
00323 #define CAD_POLYGON        9
00324 #define CAD_MESH           10
00325 #define CAD_ELLIPSE        11
00326 #define CAD_EARC           12
00327 #define CAD_POLYNOMIAL     13    //!<                          N.I.Y. 
00328 #define CAD_ARCWEDGE       14    //!<  Uses CADARC structure 
00329 #define CAD_EARCWEDGE      15    //!<  Uses CADEARC structure 
00330 #define CAD_EARCCHORD      16    //!<  Uses CADEARC structure 
00331 #define CAD_MULTILINE      17
00332 #define CAD_MULTIPOINT     18
00333 #define CAD_MULTIPOLYGON   19
00334 #define CAD_LAST           20
00335 
00336 /*#define CAD_PARABOLA     21    not defined yet*/
00337 /*#define CAD_HYPERBOLA    22    not defined yet*/
00338 /*#define CAD_VARITEXT     23    not defined yet*/
00339 
00340 /**
00341 * Any addition to the list "MUST" be noted in _rvcCADInit() (rvccad.c)
00342 * and in StyleQueryEvalCAD (dbqstyle.c)
00343 * and in hdrdesc.ref (see person in charge of RVC).
00344 * If structure size changes, geom.dll will need to be changed
00345 **/
00346 
00347 struct CADELEMOPT {
00348    COLOR color;                  //!<  8  Color - XColor format 
00349    COLOR FillColor;              //!<  8  Fill color - XColor format 
00350    INT32 dbrecord;               //!<  4  Pointer to dblist entry 
00351    INT32 LinePatt;               //!<  4  Line Pattern index 
00352    INT32 FillPatt;               //!<  4  Fill Pattern index 
00353    INT32 Symbol;                 //!<  4  Point Symbol index 
00354    FLOAT Angle;                  //!<  4  Angle of point symbol 
00355    FLOAT width;                  //!<  4  Width of element in CAD coordinates!, also X-Width for points 
00356    FLOAT ywidth;                 //!<  4  Y-Width for points 
00357    UINT32 StyleFlags;            //!<  4  See STDDEFNS.H for flag definitions 
00358    DPOINT3D Extrusion;           /* 24 X, Y, or Z coordinate used in VPOINT_3D?? coords.
00359                                        For planar data, this is the normal vector to the plane that the element is placed on. */
00360    INT32 HyperLink;              //!<  4  Index to hyperindex shape definition 
00361    UINT16 WidthUnits;            //!<  2  Units that width field is in 
00362    UINT16 Space;                 //!<  2  Reserved for future use 
00363    DOUBLE MapScale;              //!<  8  MapScale to use given scales at 
00364    COLOR m_LineDrawColor;
00365    COLOR m_PolyBorderColor;
00366    COLOR m_PolyFillColor;
00367 
00368    CADELEMOPT (
00369       ) {
00370       memset(this, 0, sizeof(CADELEMOPT));
00371       }
00372 
00373    CADELEMOPT& operator= (
00374       const CADELEMOPT& rhs
00375       ) {
00376       if (this != &rhs) memcpy(this, &rhs, sizeof(CADELEMOPT));
00377       return (*this);
00378       }
00379 
00380    void GetStyle (
00381       LINESTYLE& line
00382       ) const {
00383       line.StyleFlags = StyleFlags;
00384       line.PatternNum = LinePatt;
00385       line.DrawColor = color;
00386       line.MapScale = MapScale;
00387       line.Scale = width;
00388       return;
00389       }
00390 
00391    void GetStyle (
00392       POINTSTYLE& point
00393       ) const {
00394       point.StyleFlags = StyleFlags;
00395       point.SymbolNum = Symbol;
00396       point.DrawColor = color;
00397       point.Angle = Angle;
00398       point.ScaleX = width;
00399       point.ScaleY = ywidth;
00400       point.MapScale = MapScale;
00401       return;
00402       }
00403 
00404    void GetStyle (
00405       POLYSTYLE& poly
00406       ) const {
00407       poly.StyleFlags = StyleFlags;
00408       poly.FillPatternNum = FillPatt;
00409       poly.BorderPatternNum = LinePatt;
00410       poly.BorderColor = color;
00411       poly.FillColor = FillColor;
00412       poly.MapScale = MapScale;
00413       poly.BorderScale = width;
00414       return;
00415       }
00416 
00417    void GetStyle (
00418       TEXTSTYLE& text
00419       ) const {
00420       text.FGColor = color;
00421       text.BGColor = FillColor;
00422       text.StyleFlags = StyleFlags;
00423       text.StyleFlags &= ~STYLEFLAG_TextUseStyleHeight;
00424       text.MapScale = MapScale;
00425       return;
00426       }
00427 
00428    void SetStyle (
00429       const LINESTYLE& line
00430       ) {
00431       StyleFlags = line.StyleFlags;
00432       LinePatt = line.PatternNum;
00433       color = line.DrawColor;
00434       MapScale = line.MapScale;
00435       width = static_cast<float>(line.Scale);
00436       return;
00437       }
00438 
00439    void SetStyle (
00440       const POINTSTYLE& point
00441       ) {
00442       StyleFlags = point.StyleFlags;
00443       Symbol = point.SymbolNum;
00444       color = point.DrawColor;
00445       Angle = static_cast<float>(point.Angle);
00446       width = static_cast<float>(point.ScaleX);
00447       ywidth = static_cast<float>(point.ScaleY);
00448       MapScale = point.MapScale;
00449       return;
00450       }
00451 
00452    void SetStyle (
00453       const POLYSTYLE& poly
00454       ) {
00455       StyleFlags = poly.StyleFlags;
00456       FillPatt = poly.FillPatternNum;
00457       LinePatt = poly.BorderPatternNum;
00458       color = poly.BorderColor;
00459       FillColor = poly.FillColor;
00460       MapScale = poly.MapScale;
00461       width = static_cast<float>(poly.BorderScale);
00462       return;
00463       }
00464 
00465    void SetStyle (
00466       const TEXTSTYLE& text
00467       ) {
00468       color = text.FGColor;
00469       FillColor = text.BGColor;
00470       StyleFlags = text.StyleFlags;
00471       StyleFlags &= ~STYLEFLAG_TextUseStyleHeight;
00472       MapScale = text.MapScale;
00473       return;
00474       }
00475 
00476    };
00477 
00478 /**
00479 * Any addition to CADELEMOPT "MUST" be noted in _rvcCADInit() (rvccad.c)
00480 * and in headers.def (see person in charge of RVC).
00481 **/
00482 
00483 /*--- Structure definitions for CAD elements */
00484 
00485 struct CADCIRCLE {      /* Size = 32 */
00486    DPOINT2D_OLD center;          //!<  Center point of circle 
00487    DOUBLE radius;                //!<  Radius of circle 
00488    DOUBLE m_zvalue;              //!< Z value of center point
00489    };
00490 
00491 
00492 struct CADARC {         /* Size = 48 */
00493    DPOINT2D_OLD center;          //!<  Center point of arc 
00494    DOUBLE radius;                //!<  Radius of arc 
00495    DOUBLE start;                 //!<  Start angle of arc 
00496    DOUBLE end;                   //!<  End angle of arc 
00497    DOUBLE m_zvalue;              //!< Z value of center point
00498    };
00499 
00500 
00501 struct CADTEXT {        /* Size = 128 */
00502    UINT32 NumPoints;             //!< Number of points 
00503    UINT16 NumChars;              //!< Number of charaters in text string 
00504    UINT16 CharSize;              //!< Number of bytes per character (1 or 2) 
00505    FLOAT height;                 //!< Height of text in CAD coordinates 
00506    FLOAT rotate;                 //!< Rotation angle of string 
00507    FLOAT shear;                  //!< Shear angle 
00508    FLOAT textrotate;             //!< Rotation angle of each character in the string 
00509    FLOAT xscale;                 //!< X Scale factor relative to height (default 1.0) 
00510    INT32 font;                   //!< Font number 
00511    UINT32 FontFlags;             //!< Text style bits 
00512    UINT8 m_ShadowRelative;       //!< true if shadow angle relative to baseline angle
00513    UINT8 m_BaselineFlags;        //!< Baseline flags
00514    UINT8 m_bCartoonBalloonLeaders;
00515    UINT8 m_Predefined;              //!< Predefined label styles
00516    
00517    //!< From TEXTSTYLE
00518    FLOAT m_LineSpace;            //!< Line spacing in CAD units
00519    FLOAT m_StrokeWidth;          //!< Stroke width in % of glyph height (1.0 = 100%)
00520    FLOAT m_EnhanceWidth;         //!< Enhanced width in % of glyph height (1.0 = 100%)
00521    FLOAT m_BoldnessWidth;        //!< Boldness width in % of glyph height (1.0 = 100%) Ignored unless FONTSTYLE_Bold is set
00522    FLOAT m_UnderlineWidth;       //!< Underline with in % of glyph height (1.0 = 100%)
00523    FLOAT m_UnderlineOffset;      //!< Underline Offset from baseline in % (1.0 = 100%)
00524    FLOAT m_ShadowOffset;         //!< Drop shadow offset in % (1.0 = 100%) Ignored unless FONTSTYLE_Shadow is set
00525    FLOAT m_ShadowAngle;          //!< Drop shadow angle in radians
00526    FLOAT m_ClipWidth;            //!< Clip extended area around text in TextAddToClip()
00527    
00528    //!< From LABELFRAMEPARMS
00529    FLOAT m_Margin;               //!< Units: % of font ascent 
00530    FLOAT m_TMargin;              //!< Units: % of font ascent
00531    FLOAT m_BMargin;              //!< Units: % of font ascent
00532    FLOAT m_LMargin;              //!< Units: % of font ascent
00533    FLOAT m_RMargin;              //!< Units: % of font ascent
00534    UINT32 m_FrameShape;
00535    UINT32 m_LineStyleFlags;
00536    UINT32 m_PolyStyleFlags;
00537    FLOAT m_LineScale;            //!< Width of line (usually in millimeters) or pattern zoom factor
00538    FLOAT m_PolyBorderScale;      //!< Width of border (usually in millimeters) or pattern zoom factor
00539    UINT32 m_Arrow;
00540 
00541    UINT32 m_NumLeaderLines;
00542    UINT8 spare2[4];
00543 // FLOAT m_HatchAngle;           //!< Use CADELEMOPT::Angle: Rotation angle for hatch patterns (was spare[8])
00544 // INT32 PatternNum;             //!< Use CADELEMOPT::LinePatt
00545 // INT32 FillPatternNum;         //!< Use CADELEMOPT::FillPatt
00546 // INT32 BorderPatternNum;       //!< Use CADELEMOPT::Symbol
00547    };                            /* Followed by the actual points then the number of characters */
00548 
00549 #define CADBASELINEFLAG_Straight    0x00
00550 #define CADBASELINEFLAG_Exact       0x01
00551 #define CADBASELINEFLAG_Spline      0x02
00552 #define CADBASELINEFLAG_ClipUnder   0x04
00553 
00554 struct CADINSERT {               /* Size = 72 */
00555    DPOINT3D_OLD InsertPt;        //!<  Point where to insert the block 
00556    INT32 BlockNum;               //!<  Index of block to insert 
00557    FLOAT rotate;                 //!<  Rotation angle 
00558    DOUBLE xscale;                //!<  X Scale factor          (default 1.0) 
00559    DOUBLE yscale;                //!<  Y Scale factor          (default 1.0) 
00560    DOUBLE zscale;                //!<  Z Scale factor          (default 1.0) 
00561    UINT16 numlins;               //!<  Number of lines         (default 1) 
00562    UINT16 numcols;               //!<  Number of columns       (default 1) 
00563    FLOAT linspace;               //!<  Spacing between lines 
00564    FLOAT colspace;               //!<  Spacing between columns 
00565    UINT32 space;
00566    };
00567 
00568 
00569 struct CADRBOX {        /* Size = 8 */
00570    FLOAT rotate;                 //!<  Rotation of box 
00571    UINT32 space;
00572    };
00573 
00574 
00575 struct CADLINE {        /* Size = 8 */
00576    UINT32 NumPoints;             //!<  Number of points in polyline 
00577    UINT32 CurveFit;              //!<  Type of curve fitting used 
00578    };                            /* Followed by the point data */
00579 
00580 
00581 struct CADPOLY {        /* Size = 16 */
00582    UINT32 NumPoints;             //!<  Number of points in first polygon. 
00583    UINT32 NumIslands;            //!<  Number of islands in polygon.  0 if none. 
00584    UINT32 CurveFit;              //!<  Type of curve fitting used 
00585    UINT32 space;
00586    };                            /*
00587                                  * Followed by the "number of points per island" buffer and the point data for the
00588                                  * polygon and islands.  If NumIslands == 0 then only the polygon is stored.
00589                                  */
00590 
00591 struct CADMESH {        /* Size = 16 */
00592    UINT32 xverts;                //!<  Number of X vertices for mesh 
00593    UINT32 yverts;                //!<  Number of Y vertices for mesh 
00594    UINT16 CurveFit;              //!<  Type of curve fitting used 
00595    UINT16 flags;                 //!<  1 = Closed in x verts: 2 = Closed in y verts 
00596    UINT32 space;
00597    };                            /* Followed by the point data in the form of array[xverts][yverts]. */
00598 
00599 
00600 struct CADELLIPSE {     /* Size = 48 */
00601    DPOINT2D_OLD center;             //!<  Center of ellipse 
00602    DOUBLE xsize;                 //!<  Relative X width of ellipse 
00603    DOUBLE ysize;                 //!<  Relative Y width of ellipse 
00604    FLOAT rotate;                 //!<  Rotation of ellipse X axis with respect to the the world X axis 
00605    UINT32 space;
00606    DOUBLE m_zvalue;              //!< Z value of center point
00607    };
00608 
00609 
00610 struct CADEARC {        /* Size = 64 */
00611    DPOINT2D_OLD center;          //!<  Center of ellipse 
00612    DOUBLE start;                 //!<  Start angle of elliptical arc 
00613    DOUBLE end;                   //!<  End angle of elliptical arc 
00614    DOUBLE xsize;                 //!<  Relative X width of ellipse 
00615    DOUBLE ysize;                 //!<  Relative Y width of ellipse 
00616    FLOAT rotate;                 //!<  Rotation of ellipse X axis with respect to the 
00617                                  /* the world X axis*/
00618    UINT32 space;
00619    DOUBLE m_zvalue;              //!< Z value of center point
00620    };
00621 
00622 
00623 struct CADMULTIPOINT {
00624    UINT32 NumPoints;             //!<  Number of points, duh 
00625    UINT32 space;
00626    };                            /* Followed by the point data */
00627 
00628 
00629 struct CADMULTILINE {
00630    UINT32 NumLines;              //!<  Number of lines, duh 
00631    UINT32 CurveFit;              //!<  Type of curve fitting used 
00632    };                            /* Followed by the number of points array then followed by the point data */
00633 
00634 
00635 struct CADMULTIPOLY {