dgnlib
dgnlib.h
Go to the documentation of this file.
00001 /******************************************************************************
00002  * $Id: dgnlib.h 10645 2007-01-18 02:22:39Z warmerdam $
00003  *
00004  * Project:  Microstation DGN Access Library
00005  * Purpose:  Definitions of public structures and API of DGN Library.
00006  * Author:   Frank Warmerdam, warmerdam@pobox.com
00007  *
00008  ******************************************************************************
00009  * Copyright (c) 2000, Avenza Systems Inc, http://www.avenza.com/
00010  *
00011  * Permission is hereby granted, free of charge, to any person obtaining a
00012  * copy of this software and associated documentation files (the "Software"),
00013  * to deal in the Software without restriction, including without limitation
00014  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
00015  * and/or sell copies of the Software, and to permit persons to whom the
00016  * Software is furnished to do so, subject to the following conditions:
00017  *
00018  * The above copyright notice and this permission notice shall be included
00019  * in all copies or substantial portions of the Software.
00020  *
00021  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00022  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00023  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
00024  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00025  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00026  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
00027  * DEALINGS IN THE SOFTWARE.
00028  ****************************************************************************/
00029 
00030 #ifndef _DGNLIB_H_INCLUDED
00031 #define _DGNLIB_H_INCLUDED
00032 
00033 #include "cpl_conv.h"
00034 
00035 CPL_C_START
00036 
00037 #define CPLE_DGN_ERROR_BASE
00038 #define CPLE_ElementTooBig              CPLE_DGN_ERROR_BASE+1
00039 
00054 typedef struct {
00055     double x;   
00056     double y;   
00057     double z;   
00058 } DGNPoint;
00059 
00066 typedef struct {
00067     unsigned char       level;   
00068     unsigned char       type;    
00069     unsigned char       stype;   
00070     unsigned char       flags;   
00071     long                offset;  
00072 } DGNElementInfo;  
00073 
00085 typedef struct {
00086     int         offset;
00087     int         size;
00088 
00089     int         element_id;     
00090     int         stype;          
00091     int         level;          
00092     int         type;           
00093     int         complex;        
00094     int         deleted;        
00096     int         graphic_group;  
00097     int         properties;     
00098     int         color;          
00099     int         weight;         
00100     int         style;          
00102     int         attr_bytes;     
00103     unsigned char *attr_data;   
00105     int         raw_bytes;      
00106     unsigned char *raw_data;    
00107 } DGNElemCore;
00108 
00118 typedef struct {
00119   DGNElemCore   core;
00120 
00121   int           num_vertices;  
00122   DGNPoint      vertices[2];   
00124 } DGNElemMultiPoint;    
00125 
00134 typedef struct {
00135   DGNElemCore   core;
00136 
00137   DGNPoint      origin;         
00139   double        primary_axis;   
00140   double        secondary_axis; 
00142   double        rotation;       
00143   int           quat[4];
00144 
00145   double        startang;       
00146   double        sweepang;       
00148 } DGNElemArc;
00149 
00160 typedef struct {
00161     DGNElemCore core;
00162     
00163     int         font_id;       
00164     int         justification; 
00165     double      length_mult;   
00166     double      height_mult;   
00167     double      rotation;      
00168     DGNPoint    origin;        
00169     char        string[1];     
00170 } DGNElemText;
00171 
00183 typedef struct {
00184     DGNElemCore core;
00185     
00186     int         totlength;     
00189     int         numelems;      
00190     int         surftype;      
00193     int         boundelms;     
00195 } DGNElemComplexHeader;
00196 
00206 typedef struct {
00207   DGNElemCore   core;
00208 
00209   int           screen_flag;
00210   GByte         color_info[256][3]; 
00211 } DGNElemColorTable;
00212 
00213 typedef struct {
00214     int           flags;
00215     unsigned char levels[8];
00216     DGNPoint      origin;
00217     DGNPoint      delta;
00218     double        transmatrx[9];
00219     double        conversion;
00220     unsigned long activez;
00221 } DGNViewInfo;
00222 
00237 typedef struct {
00238     DGNElemCore core;
00239 
00240     int         dimension;         
00242     double      origin_x;       
00243     double      origin_y;       
00244     double      origin_z;       
00246     long        uor_per_subunit;   
00247     char        sub_units[3];      
00248     long        subunits_per_master; 
00249     char        master_units[3];   
00251     DGNViewInfo views[8];
00252 
00253 } DGNElemTCB;
00254 
00263 typedef struct {
00264     DGNElemCore core;
00265 
00266     int         totlength;         
00269     char        name[7];           
00270  unsigned short cclass;            
00271  unsigned short levels[4];         
00273     DGNPoint    rnglow;            
00274     DGNPoint    rnghigh;           
00276     double      trans[9];          
00277     DGNPoint    origin;            
00279     double      xscale;
00280     double      yscale;
00281     double      rotation;
00282 
00283 } DGNElemCellHeader;
00284 
00293 typedef struct {
00294     DGNElemCore core;
00295 
00296     short       celltype;          
00297     short       attindx;           
00298     char        name[7];           
00300     int         numwords;          
00302     short       dispsymb;          
00303  unsigned short cclass;            
00304  unsigned short levels[4];         
00306     char        description[28];   
00308 } DGNElemCellLibrary;
00309 
00318 typedef struct {
00319     DGNElemCore core;
00320 
00321     int         totlength;         
00324   // FIXME: Most of the contents of this element type is currently
00325   // unknown. Please get in touch with the authors if you have
00326   // information about how to decode this element.
00327 } DGNElemSharedCellDefn;
00328 
00329 typedef union { char *string; GInt32 integer; double real; } tagValueUnion;
00330 
00339 typedef struct {
00340     DGNElemCore core;
00341 
00342     int         tagType;           
00343     int         tagSet;            
00344     int         tagIndex;          
00345     int         tagLength;         
00346     tagValueUnion tagValue;        
00348 } DGNElemTagValue;
00349 
00355 typedef struct _DGNTagDef {
00356     char        *name;      
00357     int         id;         
00358     char        *prompt;    
00359     int         type;       
00360     tagValueUnion defaultValue; 
00361 } DGNTagDef;
00362 
00363 #define DGNTT_STRING      1
00364 #define DGNTT_INTEGER     3
00365 #define DGNTT_FLOAT       4
00366 
00375 typedef struct {
00376     DGNElemCore core;
00377 
00378     int        tagCount;    
00379     int        tagSet;      
00380     int        flags;       
00381     char       *tagSetName; 
00383     DGNTagDef  *tagList;    
00385 } DGNElemTagSet;
00386 
00394 typedef struct {
00395   DGNElemCore core;
00396 
00397   short unknown;     
00398   int quat[4];      
00399   DGNPoint center_1; 
00400   double radius_1;   
00401   DGNPoint center_2; 
00402   double radius_2;   
00404 } DGNElemCone;
00405 
00406 
00417 typedef struct {
00418   DGNElemCore core;
00419  
00420   int       totlength;          
00422   int       numelems;           
00423   int       node_number;        
00424   short     max_length;         
00425   short     max_used;           
00426   short     font_id;            
00427   short     justification;      
00428   long      line_spacing;       
00429   double    length_mult;        
00430   double    height_mult;        
00431   double    rotation;           
00432   DGNPoint  origin;             
00434 } DGNElemTextNode;
00435 
00436 
00444 typedef struct {
00445   DGNElemCore core;
00446 
00447   long desc_words;               
00450   unsigned char curve_type;      
00451   unsigned char u_order;         
00452   unsigned short u_properties;   
00454   short num_poles_u;             
00455   short num_knots_u;             
00456   short rule_lines_u;            
00458   unsigned char v_order;         
00459   unsigned short v_properties;   
00461   short num_poles_v;             
00462   short num_knots_v;             
00463   short rule_lines_v;            
00465   short num_bounds;              
00466 } DGNElemBSplineSurfaceHeader;
00467 
00475 typedef struct {
00476   DGNElemCore core;
00477 
00478   long desc_words;               
00481   unsigned char order;           
00482   unsigned char properties;      
00483   unsigned char curve_type;      
00484   short num_poles;               
00485   short num_knots;               
00486 } DGNElemBSplineCurveHeader;
00487 
00495 typedef struct {
00496   DGNElemCore core;
00497 
00498   short number;         
00499   short numverts;       
00500   DGNPoint vertices[1]; 
00502 } DGNElemBSplineSurfaceBoundary;
00503 
00511 typedef struct {
00512   DGNElemCore core;
00513 
00514   float array[1];         
00517 } DGNElemKnotWeight;
00518 
00519 
00520 /* -------------------------------------------------------------------- */
00521 /*      Structure types                                                 */
00522 /* -------------------------------------------------------------------- */
00523 
00525 #define DGNST_CORE                 1 
00526 
00528 #define DGNST_MULTIPOINT           2 
00529 
00531 #define DGNST_COLORTABLE           3 
00532 
00534 #define DGNST_TCB                  4 
00535 
00537 #define DGNST_ARC                  5 
00538 
00540 #define DGNST_TEXT                 6 
00541 
00543 #define DGNST_COMPLEX_HEADER       7
00544 
00546 #define DGNST_CELL_HEADER          8
00547 
00549 #define DGNST_TAG_VALUE            9
00550 
00552 #define DGNST_TAG_SET             10
00553 
00555 #define DGNST_CELL_LIBRARY        11
00556 
00558 #define DGNST_CONE                12
00559 
00561 #define DGNST_TEXT_NODE           13
00562 
00564 #define DGNST_BSPLINE_SURFACE_HEADER   14
00565 
00567 #define DGNST_BSPLINE_CURVE_HEADER     15
00568 
00570 #define DGNST_BSPLINE_SURFACE_BOUNDARY 16
00571 
00573 #define DGNST_KNOT_WEIGHT              17
00574 
00576 #define DGNST_SHARED_CELL_DEFN         18
00577 
00578 
00579 /* -------------------------------------------------------------------- */
00580 /*      Element types                                                   */
00581 /* -------------------------------------------------------------------- */
00582 #define DGNT_CELL_LIBRARY              1
00583 #define DGNT_CELL_HEADER               2
00584 #define DGNT_LINE                      3
00585 #define DGNT_LINE_STRING               4
00586 #define DGNT_GROUP_DATA                5
00587 #define DGNT_SHAPE                     6
00588 #define DGNT_TEXT_NODE                 7
00589 #define DGNT_DIGITIZER_SETUP           8
00590 #define DGNT_TCB                       9
00591 #define DGNT_LEVEL_SYMBOLOGY          10
00592 #define DGNT_CURVE                    11
00593 #define DGNT_COMPLEX_CHAIN_HEADER     12
00594 #define DGNT_COMPLEX_SHAPE_HEADER     14
00595 #define DGNT_ELLIPSE                  15
00596 #define DGNT_ARC                      16
00597 #define DGNT_TEXT                     17
00598 #define DGNT_3DSURFACE_HEADER         18
00599 #define DGNT_3DSOLID_HEADER           19
00600 #define DGNT_BSPLINE_POLE             21
00601 #define DGNT_POINT_STRING             22
00602 #define DGNT_BSPLINE_SURFACE_HEADER   24
00603 #define DGNT_BSPLINE_SURFACE_BOUNDARY 25
00604 #define DGNT_BSPLINE_KNOT             26
00605 #define DGNT_BSPLINE_CURVE_HEADER     27
00606 #define DGNT_BSPLINE_WEIGHT_FACTOR    28
00607 #define DGNT_CONE                     23
00608 #define DGNT_SHARED_CELL_DEFN         34
00609 #define DGNT_SHARED_CELL_ELEM         35
00610 #define DGNT_TAG_VALUE                37
00611 #define DGNT_APPLICATION_ELEM         66
00612 
00613 /* -------------------------------------------------------------------- */
00614 /*      Line Styles                                                     */
00615 /* -------------------------------------------------------------------- */
00616 #define DGNS_SOLID              0
00617 #define DGNS_DOTTED             1
00618 #define DGNS_MEDIUM_DASH        2
00619 #define DGNS_LONG_DASH          3
00620 #define DGNS_DOT_DASH           4
00621 #define DGNS_SHORT_DASH         5
00622 #define DGNS_DASH_DOUBLE_DOT    6
00623 #define DGNS_LONG_DASH_SHORT_DASH 7
00624 
00625 /* -------------------------------------------------------------------- */
00626 /*      3D Surface Types                                                */
00627 /* -------------------------------------------------------------------- */
00628 #define DGNSUT_SURFACE_OF_PROJECTION    0
00629 #define DGNSUT_BOUNDED_PLANE            1
00630 #define DGNSUT_BOUNDED_PLANE2           2
00631 #define DGNSUT_RIGHT_CIRCULAR_CYLINDER  3
00632 #define DGNSUT_RIGHT_CIRCULAR_CONE      4
00633 #define DGNSUT_TABULATED_CYLINDER       5
00634 #define DGNSUT_TABULATED_CONE           6
00635 #define DGNSUT_CONVOLUTE                7
00636 #define DGNSUT_SURFACE_OF_REVOLUTION    8
00637 #define DGNSUT_WARPED_SURFACE           9
00638 
00639 /* -------------------------------------------------------------------- */
00640 /*      3D Solid Types                                                  */
00641 /* -------------------------------------------------------------------- */
00642 #define DGNSOT_VOLUME_OF_PROJECTION     0
00643 #define DGNSOT_VOLUME_OF_REVOLUTION     1
00644 #define DGNSOT_BOUNDED_VOLUME           2
00645 
00646 
00647 /* -------------------------------------------------------------------- */
00648 /*      Class                                                           */
00649 /* -------------------------------------------------------------------- */
00650 #define DGNC_PRIMARY                    0
00651 #define DGNC_PATTERN_COMPONENT          1
00652 #define DGNC_CONSTRUCTION_ELEMENT       2
00653 #define DGNC_DIMENSION_ELEMENT          3
00654 #define DGNC_PRIMARY_RULE_ELEMENT       4
00655 #define DGNC_LINEAR_PATTERNED_ELEMENT   5
00656 #define DGNC_CONSTRUCTION_RULE_ELEMENT  6
00657 
00658 /* -------------------------------------------------------------------- */
00659 /*      Group Data level numbers.                                       */
00660 /*                                                                      */
00661 /*      These are symbolic values for the typ 5 (DGNT_GROUP_DATA)       */
00662 /*      level values that have special meanings.                        */
00663 /* -------------------------------------------------------------------- */
00664 #define DGN_GDL_COLOR_TABLE     1
00665 #define DGN_GDL_NAMED_VIEW      3
00666 #define DGN_GDL_REF_FILE        9
00667 
00668 /* -------------------------------------------------------------------- */
00669 /*      Word 17 property flags.                                         */
00670 /* -------------------------------------------------------------------- */
00671 #define DGNPF_HOLE         0x8000
00672 #define DGNPF_SNAPPABLE    0x4000
00673 #define DGNPF_PLANAR       0x2000
00674 #define DGNPF_ORIENTATION  0x1000
00675 #define DGNPF_ATTRIBUTES   0x0800
00676 #define DGNPF_MODIFIED     0x0400
00677 #define DGNPF_NEW          0x0200
00678 #define DGNPF_LOCKED       0x0100
00679 #define DGNPF_CLASS        0x000f
00680 
00681 /* -------------------------------------------------------------------- */
00682 /*      DGNElementInfo flag values.                                     */
00683 /* -------------------------------------------------------------------- */
00684 #define DGNEIF_DELETED     0x01
00685 #define DGNEIF_COMPLEX     0x02
00686 
00687 /* -------------------------------------------------------------------- */
00688 /*      Justifications                                                  */
00689 /* -------------------------------------------------------------------- */
00690 #define DGNJ_LEFT_TOP           0
00691 #define DGNJ_LEFT_CENTER        1
00692 #define DGNJ_LEFT_BOTTOM        2
00693 #define DGNJ_LEFTMARGIN_TOP     3    /* text node header only */
00694 #define DGNJ_LEFTMARGIN_CENTER  4    /* text node header only */
00695 #define DGNJ_LEFTMARGIN_BOTTOM  5    /* text node header only */
00696 #define DGNJ_CENTER_TOP         6
00697 #define DGNJ_CENTER_CENTER      7
00698 #define DGNJ_CENTER_BOTTOM      8
00699 #define DGNJ_RIGHTMARGIN_TOP    9    /* text node header only */
00700 #define DGNJ_RIGHTMARGIN_CENTER 10   /* text node header only */
00701 #define DGNJ_RIGHTMARGIN_BOTTOM 11   /* text node header only */
00702 #define DGNJ_RIGHT_TOP          12
00703 #define DGNJ_RIGHT_CENTER       13
00704 #define DGNJ_RIGHT_BOTTOM       14
00705 
00706 /* -------------------------------------------------------------------- */
00707 /*      DGN file reading options.                                       */
00708 /* -------------------------------------------------------------------- */
00709 #define DGNO_CAPTURE_RAW_DATA   0x01
00710 
00711 /* -------------------------------------------------------------------- */
00712 /*      Known attribute linkage types, including my synthetic ones.     */
00713 /* -------------------------------------------------------------------- */
00714 #define DGNLT_DMRS              0x0000
00715 #define DGNLT_INFORMIX          0x3848
00716 #define DGNLT_ODBC              0x5e62
00717 #define DGNLT_ORACLE            0x6091
00718 #define DGNLT_RIS               0x71FB
00719 #define DGNLT_SYBASE            0x4f58
00720 #define DGNLT_XBASE             0x1971
00721 #define DGNLT_SHAPE_FILL        0x0041
00722 #define DGNLT_ASSOC_ID          0x7D2F
00723 
00724 /* -------------------------------------------------------------------- */
00725 /*      File creation options.                                          */
00726 /* -------------------------------------------------------------------- */
00727 
00728 #define DGNCF_USE_SEED_UNITS              0x01
00729 #define DGNCF_USE_SEED_ORIGIN             0x02
00730 #define DGNCF_COPY_SEED_FILE_COLOR_TABLE  0x04
00731 #define DGNCF_COPY_WHOLE_SEED_FILE        0x08
00732 
00733 /* -------------------------------------------------------------------- */
00734 /*      B-Spline Curve flags. Also used for U-direction of surfaces     */
00735 /* -------------------------------------------------------------------- */
00736 #define DGNBSC_CURVE_DISPLAY              0x10
00737 #define DGNBSC_POLY_DISPLAY               0x20
00738 #define DGNBSC_RATIONAL                   0x40
00739 #define DGNBSC_CLOSED                     0x80
00740 
00741 /* -------------------------------------------------------------------- */
00742 /*      B-Spline Curve flags for V-direction of surfaces.               */
00743 /* -------------------------------------------------------------------- */
00744 #define DGNBSS_ARC_SPACING                0x40
00745 #define DGNBSS_CLOSED                     0x80
00746 
00747 /* -------------------------------------------------------------------- */
00748 /*      API                                                             */
00749 /* -------------------------------------------------------------------- */
00751 typedef void *DGNHandle;
00752 
00753 DGNHandle CPL_DLL    DGNOpen( const char *, int );
00754 void CPL_DLL         DGNSetOptions( DGNHandle, int );
00755 int CPL_DLL          DGNTestOpen( GByte *, int );
00756 const DGNElementInfo CPL_DLL *DGNGetElementIndex( DGNHandle, int * );
00757 int CPL_DLL          DGNGetExtents( DGNHandle, double * );
00758 int CPL_DLL          DGNGetDimension( DGNHandle );
00759 DGNElemCore CPL_DLL *DGNReadElement( DGNHandle );
00760 void CPL_DLL         DGNFreeElement( DGNHandle, DGNElemCore * );
00761 void CPL_DLL         DGNRewind( DGNHandle );
00762 int  CPL_DLL         DGNGotoElement( DGNHandle, int );
00763 void CPL_DLL         DGNClose( DGNHandle );
00764 int  CPL_DLL         DGNLoadTCB( DGNHandle );
00765 int  CPL_DLL         DGNLookupColor( DGNHandle, int, int *, int *, int * );
00766 int  CPL_DLL         DGNGetShapeFillInfo( DGNHandle, DGNElemCore *, int * );
00767 int  CPL_DLL         DGNGetAssocID( DGNHandle, DGNElemCore * );
00768 int  CPL_DLL         DGNGetElementExtents( DGNHandle, DGNElemCore *, 
00769                                            DGNPoint *, DGNPoint * );
00770 
00771 void CPL_DLL         DGNDumpElement( DGNHandle, DGNElemCore *, FILE * );
00772 const char CPL_DLL  *DGNTypeToName( int );
00773 
00774 void CPL_DLL  DGNRotationToQuaternion( double, int * );
00775 void CPL_DLL  DGNQuaternionToMatrix( int *, float * );
00776 int CPL_DLL   DGNStrokeArc( DGNHandle, DGNElemArc *, int, DGNPoint * );
00777 int CPL_DLL   DGNStrokeCurve( DGNHandle, DGNElemMultiPoint*, int, DGNPoint * );
00778 void CPL_DLL  DGNSetSpatialFilter( DGNHandle hDGN, 
00779                                    double dfXMin, double dfYMin, 
00780                                    double dfXMax, double dfYMax );
00781 int  CPL_DLL  DGNGetAttrLinkSize( DGNHandle, DGNElemCore *, int );
00782 unsigned char CPL_DLL *
00783               DGNGetLinkage( DGNHandle hDGN, DGNElemCore *psElement, 
00784                              int iIndex, int *pnLinkageType,
00785                              int *pnEntityNum, int *pnMSLink, int *pnLinkSize);
00786 
00787 /* Write API */
00788     
00789 int  CPL_DLL  DGNWriteElement( DGNHandle, DGNElemCore * );
00790 int  CPL_DLL  DGNResizeElement( DGNHandle, DGNElemCore *, int );
00791 DGNHandle CPL_DLL 
00792       DGNCreate( const char *pszNewFilename, const char *pszSeedFile, 
00793                  int nCreationFlags, 
00794                  double dfOriginX, double dfOriginY, double dfOriginZ,
00795                  int nMasterUnitPerSubUnit, int nUORPerSubUnit, 
00796                  const char *pszMasterUnits, const char *pszSubUnits );
00797 DGNElemCore CPL_DLL *DGNCloneElement( DGNHandle hDGNSrc, DGNHandle hDGNDst, 
00798                                       DGNElemCore *psSrcElement );
00799 int CPL_DLL   DGNUpdateElemCore( DGNHandle hDGN, DGNElemCore *psElement, 
00800                                  int nLevel, int nGraphicGroup, int nColor, 
00801                                  int nWeight, int nStyle );
00802 int CPL_DLL   DGNUpdateElemCoreExtended( DGNHandle hDGN, 
00803                                          DGNElemCore *psElement );
00804 
00805 DGNElemCore CPL_DLL *
00806               DGNCreateMultiPointElem( DGNHandle hDGN, int nType, 
00807                                        int nPointCount, DGNPoint*pasVertices );
00808 DGNElemCore CPL_DLL  *
00809               DGNCreateArcElem2D( DGNHandle hDGN, int nType, 
00810                                   double dfOriginX, double dfOriginY,
00811                                   double dfPrimaryAxis, double dfSecondaryAxis,
00812                                   double dfRotation, 
00813                                   double dfStartAngle, double dfSweepAngle );
00814 
00815 DGNElemCore CPL_DLL  *
00816               DGNCreateArcElem( DGNHandle hDGN, int nType, 
00817                                 double dfOriginX, double dfOriginY,
00818                                 double dfOriginZ, 
00819                                 double dfPrimaryAxis, double dfSecondaryAxis,
00820                                 double dfStartAngle, double dfSweepAngle,
00821                                 double dfRotation, int *panQuaternion );
00822 
00823 DGNElemCore CPL_DLL  *
00824               DGNCreateConeElem( DGNHandle hDGN,
00825                                  double center_1X, double center_1Y,
00826                                  double center_1Z, double radius_1,
00827                                  double center_2X, double center_2Y,
00828                                  double center_2Z, double radius_2,
00829                                  int *panQuaternion );
00830 
00831 DGNElemCore CPL_DLL *
00832              DGNCreateTextElem( DGNHandle hDGN, const char *pszText, 
00833                                 int nFontId, int nJustification, 
00834                                 double dfLengthMult, double dfHeightMult, 
00835                                 double dfRotation, int *panQuaternion,
00836                        double dfOriginX, double dfOriginY, double dfOriginZ );
00837 
00838 DGNElemCore CPL_DLL *
00839             DGNCreateColorTableElem( DGNHandle hDGN, int nScreenFlag, 
00840                                      GByte abyColorInfo[256][3] );
00841 DGNElemCore CPL_DLL *
00842 DGNCreateComplexHeaderElem( DGNHandle hDGN, int nType, 
00843                             int nTotLength, int nNumElems );
00844 DGNElemCore CPL_DLL *
00845 DGNCreateComplexHeaderFromGroup( DGNHandle hDGN, int nType, 
00846                                  int nNumElems, DGNElemCore **papsElems );
00847 
00848 DGNElemCore CPL_DLL *
00849 DGNCreateSolidHeaderElem( DGNHandle hDGN, int nType, int nSurfType, 
00850                           int nBoundElems, int nTotLength, int nNumElems );
00851 DGNElemCore CPL_DLL *
00852 DGNCreateSolidHeaderFromGroup( DGNHandle hDGN, int nType, int nSurfType,
00853                                int nBoundElems, int nNumElems, 
00854                                DGNElemCore **papsElems );
00855 
00856 DGNElemCore CPL_DLL  *
00857 DGNCreateCellHeaderElem( DGNHandle hDGN, int nTotLength, const char *pszName, 
00858                          short nClass, short *panLevels, 
00859                          DGNPoint *psRangeLow, DGNPoint *psRangeHigh, 
00860                          DGNPoint *psOrigin, double dfXScale, double dfYScale,
00861                          double dfRotation );
00862                      
00863 DGNElemCore CPL_DLL *
00864 DGNCreateCellHeaderFromGroup( DGNHandle hDGN, const char *pszName, 
00865                               short nClass, short *panLevels, 
00866                               int nNumElems, DGNElemCore **papsElems,
00867                               DGNPoint *psOrigin,
00868                               double dfXScale, double dfYScale,
00869                               double dfRotation );
00870 
00871 int CPL_DLL DGNAddMSLink( DGNHandle hDGN, DGNElemCore *psElement, 
00872                           int nLinkageType, int nEntityNum, int nMSLink );
00873 
00874 int CPL_DLL DGNAddRawAttrLink( DGNHandle hDGN, DGNElemCore *psElement, 
00875                                int nLinkSize, unsigned char *pabyRawLinkData );
00876 
00877 int CPL_DLL DGNAddShapeFillInfo( DGNHandle hDGN, DGNElemCore *psElement, 
00878                                  int nColor );
00879 
00880 int CPL_DLL DGNElemTypeHasDispHdr( int nElemType );
00881 
00882 CPL_C_END
00883 
00884 #endif /* ndef _DGNLIB_H_INCLUDED */