⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dgnlib.h

📁 GIS系统支持库Geospatial Data Abstraction Library代码.GDAL is a translator library for raster geospatial dat
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** * $Id: dgnlib.h,v 1.37 2003/11/25 15:47:56 warmerda Exp $ * * Project:  Microstation DGN Access Library * Purpose:  Definitions of public structures and API of DGN Library. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 2000, Avenza Systems Inc, http://www.avenza.com/ * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************** * * $Log: dgnlib.h,v $ * Revision 1.37  2003/11/25 15:47:56  warmerda * Added surface type for complex headers: Marius * * Revision 1.36  2003/11/21 16:17:33  warmerda * fix missing handling of min/max Z in DGNCreateMultiPointElem() * * Revision 1.35  2003/11/19 05:26:19  warmerda * added DGNElemTypeHasDispHdr * * Revision 1.34  2003/11/07 13:59:45  warmerda * added DGNLoadTCB() * * Revision 1.33  2003/08/19 20:15:53  warmerda * Added support for Cone (23), 3D surface (18) and 3D solid (19) elements. * Added functions DGNQuaternionToMatrix() and DGNCreateConeElem(). *   Marius Kintel * * Revision 1.32  2003/05/21 03:42:01  warmerda * Expanded tabs * * Revision 1.31  2003/05/15 14:47:24  warmerda * implement quaternion support on write * * Revision 1.30  2003/05/12 18:48:57  warmerda * added preliminary 3D write support * * Revision 1.29  2003/01/20 20:07:06  warmerda * added cell header writing api * * Revision 1.28  2002/11/13 21:28:23  warmerda * fix declaration order * * Revision 1.27  2002/11/13 21:26:32  warmerda * added more documentation * * Revision 1.26  2002/11/12 19:44:32  warmerda * added DGNViewInfo support * * Revision 1.25  2002/11/11 20:36:51  warmerda * fix justification list, added create related definitions * * Revision 1.24  2002/10/20 01:50:20  warmerda * added new write prototypes * * Revision 1.23  2002/10/07 13:14:18  warmerda * added association id support * * Revision 1.22  2002/10/07 12:56:04  warmerda * Added DGN_ASSOC_ID. * * Revision 1.21  2002/05/31 03:40:22  warmerda * added improved support for parsing attribute linkages * * Revision 1.20  2002/04/22 20:44:40  warmerda * added (partial) cell library support * * Revision 1.19  2002/03/14 21:38:52  warmerda * added DGNWriteElement, DGNResizeElement, make offset/size manditory * * Revision 1.18  2002/03/12 17:07:26  warmerda * added tagset and tag value element support * * Revision 1.17  2002/02/06 20:33:02  warmerda * preliminary addition of tagset support * * Revision 1.16  2002/01/21 20:50:12  warmerda * added SetSpatialFilter function * * Revision 1.15  2002/01/15 06:38:18  warmerda * added DGNGetShapeFillInfo * * Revision 1.14  2001/12/19 15:29:56  warmerda * added preliminary cell header support * * Revision 1.13  2001/08/21 03:01:39  warmerda * added raw_data support * * Revision 1.12  2001/06/25 15:07:51  warmerda * Added support for DGNElemComplexHeader * Don't include elements with the complex bit (such as shared cell definition * elements) in extents computation for fear they are in a different coord sys. * * Revision 1.11  2001/03/18 16:54:39  warmerda * added use of DGNTestOpen, remove extention test * * Revision 1.10  2001/03/07 19:29:46  warmerda * added support for stroking curves * * Revision 1.9  2001/03/07 13:56:44  warmerda * updated copyright to be held by Avenza Systems * * Revision 1.8  2001/03/07 13:48:59  warmerda * added DGNEIF_DELETED * * Revision 1.7  2001/02/02 22:20:15  warmerda * document DGNElemText, length/height_mult now double * * Revision 1.6  2001/01/16 21:17:28  warmerda * added justification enum * * Revision 1.5  2001/01/16 18:12:02  warmerda * added arc support, color lookup * * Revision 1.4  2001/01/10 16:11:33  warmerda * added lots of documentation, and extents api * * Revision 1.3  2000/12/28 21:28:43  warmerda * added element index support * * Revision 1.2  2000/12/14 17:10:57  warmerda * implemented TCB, Ellipse, TEXT * * Revision 1.1  2000/11/28 19:03:47  warmerda * New * */#ifndef _DGNLIB_H_INCLUDED#define _DGNLIB_H_INCLUDED#include "cpl_conv.h"CPL_C_START#define CPLE_DGN_ERROR_BASE#define CPLE_ElementTooBig              CPLE_DGN_ERROR_BASE+1/** * \file dgnlib.h * * Definitions of public structures and API of DGN Library. *//** * DGN Point structure. * * Note that the DGNReadElement() function transforms points into "master" * coordinate system space when they are in the file in UOR (units of * resolution) coordinates.  */typedef struct {    double x;   /*!< X (normally eastwards) coordinate. */    double y;   /*!< y (normally northwards) coordinate. */    double z;   /*!< z, up coordinate.  Zero for 2D objects. */} DGNPoint;/** * Element summary information. * * Minimal information kept about each element if an element summary * index is built for a file by DGNGetElementIndex(). */typedef struct {    unsigned char       level;   /*!< Element Level: 0-63 */    unsigned char       type;    /*!< Element type (DGNT_*) */    unsigned char       stype;   /*!< Structure type (DGNST_*) */    unsigned char       flags;   /*!< Other flags */    long                offset;  /*!< Offset within file (private) */} DGNElementInfo;  /** * Core element structure.  * * Core information kept about each element that can be read from a DGN * file.  This structure is the first component of each specific element  * structure (like DGNElemMultiPoint).  Normally the DGNElemCore.stype * field would be used to decide what specific structure type to case the * DGNElemCore pointer to.  * */typedef struct {    int         offset;    int         size;    int         element_id;     /*!< Element number (zero based) */    int         stype;          /*!< Structure type: (DGNST_*) */    int         level;          /*!< Element Level: 0-63 */    int         type;           /*!< Element type (DGNT_) */    int         complex;        /*!< Is element complex? */    int         deleted;        /*!< Is element deleted? */    int         graphic_group;  /*!< Graphic group number */    int         properties;     /*!< Properties: ORing of DGNPF_ flags */    int         color;          /*!< Color index (0-255) */    int         weight;         /*!< Line Weight (0-31) */    int         style;          /*!< Line Style: One of DGNS_* values */    int         attr_bytes;     /*!< Bytes of attribute data, usually zero. */    unsigned char *attr_data;   /*!< Raw attribute data */    int         raw_bytes;      /*!< Bytes of raw data, usually zero. */    unsigned char *raw_data;    /*!< All raw element data including header. */} DGNElemCore;/**  * Multipoint element  * * The core.stype code is DGNST_MULTIPOINT. * * Used for: DGNT_LINE(3), DGNT_LINE_STRING(4), DGNT_SHAPE(6), DGNT_CURVE(11), * DGNT_BSPLINE(21) */typedef struct {  DGNElemCore   core;  int           num_vertices;  /*!< Number of vertices in "vertices" */  DGNPoint      vertices[2];   /*!< Array of two or more vertices */} DGNElemMultiPoint;    /**  * Ellipse element  * * The core.stype code is DGNST_ARC. * * Used for: DGNT_ELLIPSE(15), DGNT_ARC(16) */typedef struct {  DGNElemCore   core;  DGNPoint      origin;         /*!< Origin of ellipse */  double        primary_axis;   /*!< Primary axis length */  double        secondary_axis; /*!< Secondary axis length */  double        rotation;       /*!< Counterclockwise rotation in degrees */  int           quat[4];  double        startang;       /*!< Start angle (degrees counterclockwise of primary axis) */  double        sweepang;       /*!< Sweep angle (degrees) */} DGNElemArc;/**  * Text element  * * The core.stype code is DGNST_TEXT. * * NOTE: Currently we are not capturing the "editable fields" information. * * Used for: DGNT_TEXT(17). */typedef struct {    DGNElemCore core;        int         font_id;       /*!< Microstation font id, no list available*/    int         justification; /*!< Justification, see DGNJ_* */    double      length_mult;   /*!< Char width in master (if square) */    double      height_mult;   /*!< Char height in master units */    double      rotation;      /*!< Counterclockwise rotation in degrees */    DGNPoint    origin;        /*!< Bottom left corner of text. */    char        string[1];     /*!< Actual text (length varies, \0 terminated*/} DGNElemText;/**  * Complex header element  * * The core.stype code is DGNST_COMPLEX_HEADER. * * Used for: DGNT_COMPLEX_CHAIN_HEADER(12), DGNT_COMPLEX_SHAPE_HEADER(14), *   DGNT_3DSURFACE_HEADER(18) and DGNT_3DSOLID_HEADER(19). */typedef struct {    DGNElemCore core;        int         totlength;     /*!< Total length of surface */    int         numelems;      /*!< # of elements in surface */    int         surftype;      /*!< surface/solid type (only used for 3D surface/solid). One of  DGNSUT_* or DGNSOT_*. */} DGNElemComplexHeader;/**  * Color table. * * The core.stype code is DGNST_COLORTABLE. * * Returned for DGNT_GROUP_DATA(5) elements, with a level number of  * DGN_GDL_COLOR_TABLE(1). */typedef struct {  DGNElemCore   core;  int           screen_flag;  GByte         color_info[256][3]; /*!< Color table, 256 colors by red (0), green(1) and blue(2) component. */} DGNElemColorTable;typedef struct {    int           flags;    unsigned char levels[8];    DGNPoint      origin;    DGNPoint      delta;    double        transmatrx[9];    double        conversion;    unsigned long activez;} DGNViewInfo;/**  * Terminal Control Block (header). * * The core.stype code is DGNST_TCB. * * Returned for DGNT_TCB(9). * * The first TCB in the file is used to determine the dimension (2D vs. 3D), * and transformation from UOR (units of resolution) to subunits, and subunits * to master units.  This is handled transparently within DGNReadElement(), so * it is not normally necessary to handle this element type at the application * level, though it can be useful to get the sub_units, and master_units names. */typedef struct {    DGNElemCore core;    int         dimension;         /*!< Dimension (2 or 3) */    double      origin_x;       /*!< X origin of UOR space in master units(?)*/    double      origin_y;       /*!< Y origin of UOR space in master units(?)*/    double      origin_z;       /*!< Z origin of UOR space in master units(?)*/        long        uor_per_subunit;   /*!< UOR per subunit. */    char        sub_units[3];      /*!< User name for subunits (2 chars)*/    long        subunits_per_master; /*!< Subunits per master unit. */    char        master_units[3];   /*!< User name for master units (2 chars)*/    DGNViewInfo views[8];} DGNElemTCB;/**  * Cell Header. * * The core.stype code is DGNST_CELL_HEADER. * * Returned for DGNT_CELL_HEADER(2). */typedef struct {    DGNElemCore core;    int         totlength;         /*!< Total length of cell */    char        name[7];           /*!< Cell name */ unsigned short cclass;            /*!< Class bitmap */ unsigned short levels[4];         /*!< Levels used in cell */        DGNPoint    rnglow;            /*!< X/Y/Z minimums for cell */    DGNPoint    rnghigh;           /*!< X/Y/Z maximums for cell */        double      trans[9];          /*!< 2D/3D Transformation Matrix */    DGNPoint    origin;            /*!< Cell Origin */    double      xscale;    double      yscale;    double      rotation;} DGNElemCellHeader;/**  * Cell Library. * * The core.stype code is DGNST_CELL_LIBRARY. * * Returned for DGNT_CELL_LIBRARY(1). */typedef struct {    DGNElemCore core;    short       celltype;          /*!< Cell type. */    short       attindx;           /*!< Attribute linkage. */    char        name[7];           /*!< Cell name */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -