Logo Search packages:      
Sourcecode: saga version File versions  Download package

dl_entities.h

/****************************************************************************
** $Id: dl_entities.h,v 1.2 2009/05/13 15:26:31 oconrad Exp $
**
** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
**
** This file is part of the dxflib project.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** Licensees holding valid dxflib Professional Edition licenses may use 
** this file in accordance with the dxflib Commercial License
** Agreement provided with the Software.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.ribbonsoft.com for further details.
**
** Contact info@ribbonsoft.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/

#ifndef DL_ENTITIES_H
#define DL_ENTITIES_H


#include <string>
using std::string;

/**
 * Layer Data.
 *
 * @author Andrew Mustun
 */
00039 struct DL_LayerData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00044     DL_LayerData(const string& lName,
                 int lFlags) {
        name = lName;
        flags = lFlags;
    }

    /** Layer name. */
00051     string name;
    /** Layer flags. (1 = frozen, 2 = frozen by default, 4 = locked) */
00053     int flags;
};



/**
 * Block Data.
 *
 * @author Andrew Mustun
 */
00063 struct DL_BlockData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00068     DL_BlockData(const string& bName,
                 int bFlags,
                 double bbpx, double bbpy, double bbpz) {
        name = bName;
        flags = bFlags;
        bpx = bbpx;
        bpy = bbpy;
        bpz = bbpz;
    }

    /** Block name. */
00079     string name;
    /** Block flags. (not used currently) */
00081     int flags;
    /** X Coordinate of base point. */
00083     double bpx;
    /** Y Coordinate of base point. */
00085     double bpy;
    /** Z Coordinate of base point. */
00087     double bpz;
};



/**
 * Line Type Data.
 *
 * @author Andrew Mustun
 */
00097 struct DL_LineTypeData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00102     DL_LineTypeData(const string& lName,
                    int lFlags) {
        name = lName;
        flags = lFlags;
    }

    /** Line type name. */
00109     string name;
    /** Line type flags. */
00111     int flags;
};



/**
 * Point Data.
 *
 * @author Andrew Mustun
 */
00121 struct DL_PointData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00126     DL_PointData(double px=0.0, double py=0.0, double pz=0.0) {
        x = px;
        y = py;
        z = pz;
    }

    /*! X Coordinate of the point. */
00133     double x;
    /*! Y Coordinate of the point. */
00135     double y;
    /*! Z Coordinate of the point. */
00137     double z;
};



/**
 * Line Data.
 *
 * @author Andrew Mustun
 */
00147 struct DL_LineData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00152     DL_LineData(double lx1, double ly1, double lz1,
                double lx2, double ly2, double lz2) {
        x1 = lx1;
        y1 = ly1;
        z1 = lz1;

        x2 = lx2;
        y2 = ly2;
        z2 = lz2;
    }

    /*! X Start coordinate of the point. */
00164     double x1;
    /*! Y Start coordinate of the point. */
00166     double y1;
    /*! Z Start coordinate of the point. */
00168     double z1;

    /*! X End coordinate of the point. */
00171     double x2;
    /*! Y End coordinate of the point. */
00173     double y2;
    /*! Z End coordinate of the point. */
00175     double z2;
};



/**
 * Arc Data.
 *
 * @author Andrew Mustun
 */
00185 struct DL_ArcData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00190     DL_ArcData(double acx, double acy, double acz,
               double aRadius,
               double aAngle1, double aAngle2) {

        cx = acx;
        cy = acy;
        cz = acz;
        radius = aRadius;
        angle1 = aAngle1;
        angle2 = aAngle2;
    }

    /*! X Coordinate of center point. */
00203     double cx;
    /*! Y Coordinate of center point. */
00205     double cy;
    /*! Z Coordinate of center point. */
00207     double cz;

    /*! Radius of arc. */
00210     double radius;
    /*! Startangle of arc in degrees. */
00212     double angle1;
    /*! Endangle of arc in degrees. */
00214     double angle2;
};



/**
 * Circle Data.
 *
 * @author Andrew Mustun
 */
00224 struct DL_CircleData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00229     DL_CircleData(double acx, double acy, double acz,
                  double aRadius) {

        cx = acx;
        cy = acy;
        cz = acz;
        radius = aRadius;
    }

    /*! X Coordinate of center point. */
00239     double cx;
    /*! Y Coordinate of center point. */
00241     double cy;
    /*! Z Coordinate of center point. */
00243     double cz;

    /*! Radius of arc. */
00246     double radius;
};



/**
 * Polyline Data.
 *
 * @author Andrew Mustun
 */
00256 struct DL_PolylineData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00261     DL_PolylineData(int pNumber, int pMVerteces, int pNVerteces, int pFlags) {
        number = pNumber;
        m = pMVerteces;
        n = pNVerteces;
        flags = pFlags;
    }

    /*! Number of vertices in this polyline. */
00269     unsigned int number;

    /*! Number of vertices in m direction if polyline is a polygon mesh. */
00272     unsigned int m;

    /*! Number of vertices in n direction if polyline is a polygon mesh. */
00275     unsigned int n;

    /*! Flags */
00278     int flags;
};



/**
 * Vertex Data.
 *
 * @author Andrew Mustun
 */
00288 struct DL_VertexData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00293     DL_VertexData(double px=0.0, double py=0.0, double pz=0.0,
                  double pBulge=0.0) {
        x = px;
        y = py;
        z = pz;
        bulge = pBulge;
    }

    /*! X Coordinate of the vertex. */
00302     double x;
    /*! Y Coordinate of the vertex. */
00304     double y;
    /*! Z Coordinate of the vertex. */
00306     double z;
    /*! Bulge of vertex.
     * (The tangent of 1/4 of the arc angle or 0 for lines) */
00309     double bulge;
};


/**
 * Trace Data / solid data / 3d face data.
 *
 * @author Andrew Mustun
 */
00318 struct DL_TraceData {
    DL_TraceData() {
        thickness = 0.0;
        for (int i=0; i<4; i++) {
            x[i] = 0.0;
            y[i] = 0.0;
            z[i] = 0.0;
        }
    }
    
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00332     DL_TraceData(double sx1, double sy1, double sz1,
                double sx2, double sy2, double sz2,
                double sx3, double sy3, double sz3,
                double sx4, double sy4, double sz4,
                double sthickness=0.0) {

        thickness = sthickness;

        x[0] = sx1;
        y[0] = sy1;
        z[0] = sz1;

        x[1] = sx2;
        y[1] = sy2;
        z[1] = sz2;
        
        x[2] = sx3;
        y[2] = sy3;
        z[2] = sz3;
        
        x[3] = sx4;
        y[3] = sy4;
        z[3] = sz4;
    }

    /*! Thickness */
00358     double thickness;
    
    /*! Points */
00361     double x[4];
    double y[4];
    double z[4];
};





/**
 * Solid Data.
 *
 * @author AHM
 */
typedef DL_TraceData DL_SolidData;


/**
 * 3dface Data.
 */
typedef DL_TraceData DL_3dFaceData;


/**
 * Spline Data.
 *
 * @author Andrew Mustun
 */
00389 struct DL_SplineData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00394     DL_SplineData(int pDegree, int pNKnots, int pNControl, int pFlags) {
            degree = pDegree;
            nKnots = pNKnots;
            nControl = pNControl;
        flags = pFlags;
    }

    /*! Degree of the spline curve. */
00402     unsigned int degree;

    /*! Number of knots. */
00405     unsigned int nKnots;

    /*! Number of control points. */
00408     unsigned int nControl;

    /*! Flags */
00411     int flags;
};



/**
 * Spline knot data.
 *
 * @author Andrew Mustun
 */
00421 struct DL_KnotData {
    DL_KnotData() {}
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00427     DL_KnotData(double pk) {
        k = pk;
    }

    /*! Knot value. */
00432     double k;
};



/**
 * Spline control point data.
 *
 * @author Andrew Mustun
 */
00442 struct DL_ControlPointData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00447     DL_ControlPointData(double px, double py, double pz) {
        x = px;
        y = py;
        z = pz;
    }

    /*! X coordinate of the control point. */
00454     double x;
    /*! Y coordinate of the control point. */
00456     double y;
    /*! Z coordinate of the control point. */
00458     double z;
};


/**
 * Ellipse Data.
 *
 * @author Andrew Mustun
 */
00467 struct DL_EllipseData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00472     DL_EllipseData(double ecx, double ecy, double ecz,
                   double emx, double emy, double emz,
                   double eRatio,
                   double eAngle1, double eAngle2) {

        cx = ecx;
        cy = ecy;
        cz = ecz;
        mx = emx;
        my = emy;
        mz = emz;
        ratio = eRatio;
        angle1 = eAngle1;
        angle2 = eAngle2;
    }

    /*! X Coordinate of center point. */
00489     double cx;
    /*! Y Coordinate of center point. */
00491     double cy;
    /*! Z Coordinate of center point. */
00493     double cz;

    /*! X coordinate of the endpoint of the major axis. */
00496     double mx;
    /*! Y coordinate of the endpoint of the major axis. */
00498     double my;
    /*! Z coordinate of the endpoint of the major axis. */
00500     double mz;

    /*! Ratio of minor axis to major axis.. */
00503     double ratio;
    /*! Startangle of ellipse in rad. */
00505     double angle1;
    /*! Endangle of ellipse in rad. */
00507     double angle2;
};



/**
 * Insert Data.
 *
 * @author Andrew Mustun
 */
00517 struct DL_InsertData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00522     DL_InsertData(const string& iName,
                  double iipx, double iipy, double iipz,
                  double isx, double isy, double isz,
                  double iAngle,
                  int iCols, int iRows,
                  double iColSp, double iRowSp) {
        name = iName;
        ipx = iipx;
        ipy = iipy;
        ipz = iipz;
        sx = isx;
        sy = isy;
        sz = isz;
        angle = iAngle;
        cols = iCols;
        rows = iRows;
        colSp = iColSp;
        rowSp = iRowSp;
    }

    /*! Name of the referred block. */
00543     string name;
    /*! X Coordinate of insertion point. */
00545     double ipx;
    /*! Y Coordinate of insertion point. */
00547     double ipy;
    /*! Z Coordinate of insertion point. */
00549     double ipz;
    /*! X Scale factor. */
00551     double sx;
    /*! Y Scale factor. */
00553     double sy;
    /*! Z Scale factor. */
00555     double sz;
    /*! Rotation angle in rad. */
00557     double angle;
    /*! Number of colums if we insert an array of the block or 1. */
00559     int cols;
    /*! Number of rows if we insert an array of the block or 1. */
00561     int rows;
    /*! Values for the spacing between cols. */
00563     double colSp;
    /*! Values for the spacing between rows. */
00565     double rowSp;
};



/**
 * MText Data.
 *
 * @author Andrew Mustun
 */
00575 struct DL_MTextData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00580     DL_MTextData(double tipx, double tipy, double tipz,
                 double tHeight, double tWidth,
                 int tAttachmentPoint,
                 int tDrawingDirection,
                 int tLineSpacingStyle,
                 double tLineSpacingFactor,
                 const string& tText,
                 const string& tStyle,
                 double tAngle) {
        ipx = tipx;
        ipy = tipy;
        ipz = tipz;

        height = tHeight;
        width = tWidth;
        attachmentPoint = tAttachmentPoint;
        drawingDirection = tDrawingDirection;
        lineSpacingStyle = tLineSpacingStyle;
        lineSpacingFactor = tLineSpacingFactor;
        text = tText;
        style = tStyle;
        angle = tAngle;
    }

    /*! X Coordinate of insertion point. */
00605     double ipx;
    /*! Y Coordinate of insertion point. */
00607     double ipy;
    /*! Z Coordinate of insertion point. */
00609     double ipz;
    /*! Text height */
00611     double height;
    /*! Width of the text box. */
00613     double width;
    /**
     * Attachment point.
     *
     * 1 = Top left, 2 = Top center, 3 = Top right,
     * 4 = Middle left, 5 = Middle center, 6 = Middle right,
     * 7 = Bottom left, 8 = Bottom center, 9 = Bottom right
     */
00621     int attachmentPoint;
    /**
     * Drawing direction.
     *
     * 1 = left to right, 3 = top to bottom, 5 = by style
     */
00627     int drawingDirection;
    /**
     * Line spacing style.
     *
     * 1 = at least, 2 = exact
     */
00633     int lineSpacingStyle;
    /**
     * Line spacing factor. 0.25 .. 4.0  
     */
00637     double lineSpacingFactor;
    /*! Text string. */
00639     string text;
    /*! Style string. */
00641     string style;
    /*! Rotation angle. */
00643     double angle;
};



/**
 * Text Data.
 *
 * @author Andrew Mustun
 */
00653 struct DL_TextData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00658     DL_TextData(double tipx, double tipy, double tipz,
                double tapx, double tapy, double tapz,
                double tHeight, double tXScaleFactor,
                int tTextGenerationFlags,
                int tHJustification,
                int tVJustification,
                const string& tText,
                const string& tStyle,
                double tAngle) {
        ipx = tipx;
        ipy = tipy;
        ipz = tipz;

        apx = tapx;
        apy = tapy;
        apz = tapz;

        height = tHeight;
        xScaleFactor = tXScaleFactor;
        textGenerationFlags = tTextGenerationFlags;
        hJustification = tHJustification;
        vJustification = tVJustification;
        text = tText;
        style = tStyle;
        angle = tAngle;
    }

    /*! X Coordinate of insertion point. */
00686     double ipx;
    /*! Y Coordinate of insertion point. */
00688     double ipy;
    /*! Z Coordinate of insertion point. */
00690     double ipz;

    /*! X Coordinate of alignment point. */
00693     double apx;
    /*! Y Coordinate of alignment point. */
00695     double apy;
    /*! Z Coordinate of alignment point. */
00697     double apz;

    /*! Text height */
00700     double height;
    /*! Relative X scale factor. */
00702     double xScaleFactor;
    /*! 0 = default, 2 = Backwards, 4 = Upside down */
00704     int textGenerationFlags;
    /**
     * Horizontal justification.
     * 
     * 0 = Left (default), 1 = Center, 2 = Right,
     * 3 = Aligned, 4 = Middle, 5 = Fit
     * For 3, 4, 5 the vertical alignment has to be 0.
     */
00712     int hJustification;
    /**
     * Vertical justification. 
     *
     * 0 = Baseline (default), 1 = Bottom, 2 = Middle, 3= Top
     */
00718     int vJustification;
    /*! Text string. */
00720     string text;
    /*! Style (font). */
00722     string style;
    /*! Rotation angle of dimension text away from default orientation. */
00724     double angle;
};



/**
 * Generic Dimension Data.
 *
 * @author Andrew Mustun
 */
00734 struct DL_DimensionData {
    /**
    * Constructor.
    * Parameters: see member variables.
    */
00739     DL_DimensionData(double ddpx, double ddpy, double ddpz,
                     double dmpx, double dmpy, double dmpz,
                     int dType,
                     int dAttachmentPoint,
                     int dLineSpacingStyle,
                     double dLineSpacingFactor,
                     const string& dText,
                     const string& dStyle,
                     double dAngle) {

        dpx = ddpx;
        dpy = ddpy;
        dpz = ddpz;

        mpx = dmpx;
        mpy = dmpy;
        mpz = dmpz;

        type = dType;

        attachmentPoint = dAttachmentPoint;
        lineSpacingStyle = dLineSpacingStyle;
        lineSpacingFactor = dLineSpacingFactor;
        text = dText;
        style = dStyle;
        angle = dAngle;
    }

    /*! X Coordinate of definition point. */
00768     double dpx;
    /*! Y Coordinate of definition point. */
00770     double dpy;
    /*! Z Coordinate of definition point. */
00772     double dpz;
    /*! X Coordinate of middle point of the text. */
00774     double mpx;
    /*! Y Coordinate of middle point of the text. */
00776     double mpy;
    /*! Z Coordinate of middle point of the text. */
00778     double mpz;
    /**
     * Dimension type.
     *
     * 0   Rotated, horizontal, or vertical            
     * 1   Aligned                                     
     * 2   Angular                                     
     * 3   Diametric                                    
     * 4   Radius                                      
     * 5   Angular 3-point                             
     * 6   Ordinate                                    
     * 64  Ordinate type. This is a bit value (bit 7)  
     *     used only with integer value 6. If set,     
     *     ordinate is X-type; if not set, ordinate is 
     *     Y-type                                      
     * 128 This is a bit value (bit 8) added to the    
     *     other group 70 values if the dimension text 
     *     has been positioned at a user-defined       
     *    location rather than at the default location
     */
00798     int type;
    /**
     * Attachment point.
     *
     * 1 = Top left, 2 = Top center, 3 = Top right,
     * 4 = Middle left, 5 = Middle center, 6 = Middle right,
     * 7 = Bottom left, 8 = Bottom center, 9 = Bottom right,
     */
00806     int attachmentPoint;
    /**
     * Line spacing style.
     *
     * 1 = at least, 2 = exact
     */
00812     int lineSpacingStyle;
    /**
     * Line spacing factor. 0.25 .. 4.0  
     */
00816     double lineSpacingFactor;
    /**
     * Text string. 
     *
     * Text string entered explicitly by user or null
     * or "<>" for the actual measurement or " " (one blank space).
     * for supressing the text.
     */
00824     string text;
    /*! Dimension style (font name). */
00826     string style;
    /**
    * Rotation angle of dimension text away from
     * default orientation.
    */
00831     double angle;
};



/**
 * Aligned Dimension Data.
 *
 * @author Andrew Mustun
 */
00841 struct DL_DimAlignedData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00846     DL_DimAlignedData(double depx1, double depy1, double depz1,
                      double depx2, double depy2, double depz2) {

        epx1 = depx1;
        epy1 = depy1;
        epz1 = depz1;

        epx2 = depx2;
        epy2 = depy2;
        epz2 = depz2;
    }

    /*! X Coordinate of Extension point 1. */
00859     double epx1;
    /*! Y Coordinate of Extension point 1. */
00861     double epy1;
    /*! Z Coordinate of Extension point 1. */
00863     double epz1;

    /*! X Coordinate of Extension point 2. */
00866     double epx2;
    /*! Y Coordinate of Extension point 2. */
00868     double epy2;
    /*! Z Coordinate of Extension point 2. */
00870     double epz2;
};



/**
 * Linear Dimension Data.
 *
 * @author Andrew Mustun
 */
00880 struct DL_DimLinearData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00885     DL_DimLinearData(double ddpx1, double ddpy1, double ddpz1,
                     double ddpx2, double ddpy2, double ddpz2,
                     double dAngle, double dOblique) {

        dpx1 = ddpx1;
        dpy1 = ddpy1;
        dpz1 = ddpz1;

        dpx2 = ddpx2;
        dpy2 = ddpy2;
        dpz2 = ddpz2;

        angle = dAngle;
        oblique = dOblique;
    }

    /*! X Coordinate of Extension point 1. */
00902     double dpx1;
    /*! Y Coordinate of Extension point 1. */
00904     double dpy1;
    /*! Z Coordinate of Extension point 1. */
00906     double dpz1;

    /*! X Coordinate of Extension point 2. */
00909     double dpx2;
    /*! Y Coordinate of Extension point 2. */
00911     double dpy2;
    /*! Z Coordinate of Extension point 2. */
00913     double dpz2;

    /*! Rotation angle (angle of dimension line) in degrees. */
00916     double angle;
    /*! Oblique angle in degrees. */
00918     double oblique;
};



/**
 * Radial Dimension Data.
 *
 * @author Andrew Mustun
 */
00928 struct DL_DimRadialData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00933     DL_DimRadialData(double ddpx, double ddpy, double ddpz, double dleader) {
        dpx = ddpx;
        dpy = ddpy;
        dpz = ddpz;

        leader = dleader;
    }

    /*! X Coordinate of definition point. */
00942     double dpx;
    /*! Y Coordinate of definition point. */
00944     double dpy;
    /*! Z Coordinate of definition point. */
00946     double dpz;

    /*! Leader length */
00949     double leader;
};



/**
 * Diametric Dimension Data.
 *
 * @author Andrew Mustun
 */
00959 struct DL_DimDiametricData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00964     DL_DimDiametricData(double ddpx, double ddpy, double ddpz, double dleader) {
        dpx = ddpx;
        dpy = ddpy;
        dpz = ddpz;

        leader = dleader;
    }

    /*! X Coordinate of definition point. */
00973     double dpx;
    /*! Y Coordinate of definition point. */
00975     double dpy;
    /*! Z Coordinate of definition point. */
00977     double dpz;

    /*! Leader length */
00980     double leader;
};



/**
 * Angular Dimension Data.
 *
 * @author Andrew Mustun
 */
00990 struct DL_DimAngularData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00995     DL_DimAngularData(double ddpx1, double ddpy1, double ddpz1,
                      double ddpx2, double ddpy2, double ddpz2,
                      double ddpx3, double ddpy3, double ddpz3,
                      double ddpx4, double ddpy4, double ddpz4) {

        dpx1 = ddpx1;
        dpy1 = ddpy1;
        dpz1 = ddpz1;

        dpx2 = ddpx2;
        dpy2 = ddpy2;
        dpz2 = ddpz2;

        dpx3 = ddpx3;
        dpy3 = ddpy3;
        dpz3 = ddpz3;

        dpx4 = ddpx4;
        dpy4 = ddpy4;
        dpz4 = ddpz4;
    }

    /*! X Coordinate of definition point 1. */
01018     double dpx1;
    /*! Y Coordinate of definition point 1. */
01020     double dpy1;
    /*! Z Coordinate of definition point 1. */
01022     double dpz1;

    /*! X Coordinate of definition point 2. */
01025     double dpx2;
    /*! Y Coordinate of definition point 2. */
01027     double dpy2;
    /*! Z Coordinate of definition point 2. */
01029     double dpz2;

    /*! X Coordinate of definition point 3. */
01032     double dpx3;
    /*! Y Coordinate of definition point 3. */
01034     double dpy3;
    /*! Z Coordinate of definition point 3. */
01036     double dpz3;

    /*! X Coordinate of definition point 4. */
01039     double dpx4;
    /*! Y Coordinate of definition point 4. */
01041     double dpy4;
    /*! Z Coordinate of definition point 4. */
01043     double dpz4;
};


/**
 * Angular Dimension Data (3 points version).
 *
 * @author Andrew Mustun
 */
01052 struct DL_DimAngular3PData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01057     DL_DimAngular3PData(double ddpx1, double ddpy1, double ddpz1,
                        double ddpx2, double ddpy2, double ddpz2,
                        double ddpx3, double ddpy3, double ddpz3) {

        dpx1 = ddpx1;
        dpy1 = ddpy1;
        dpz1 = ddpz1;

        dpx2 = ddpx2;
        dpy2 = ddpy2;
        dpz2 = ddpz2;

        dpx3 = ddpx3;
        dpy3 = ddpy3;
        dpz3 = ddpz3;
    }

    /*! X Coordinate of definition point 1. */
01075     double dpx1;
    /*! Y Coordinate of definition point 1. */
01077     double dpy1;
    /*! Z Coordinate of definition point 1. */
01079     double dpz1;

    /*! X Coordinate of definition point 2. */
01082     double dpx2;
    /*! Y Coordinate of definition point 2. */
01084     double dpy2;
    /*! Z Coordinate of definition point 2. */
01086     double dpz2;

    /*! X Coordinate of definition point 3. */
01089     double dpx3;
    /*! Y Coordinate of definition point 3. */
01091     double dpy3;
    /*! Z Coordinate of definition point 3. */
01093     double dpz3;
};



/**
 * Ordinate Dimension Data.
 *
 * @author Andrew Mustun
 */
01103 struct DL_DimOrdinateData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01108     DL_DimOrdinateData(double ddpx1, double ddpy1, double ddpz1,
                      double ddpx2, double ddpy2, double ddpz2,
                      bool dxtype) {

        dpx1 = ddpx1;
        dpy1 = ddpy1;
        dpz1 = ddpz1;

        dpx2 = ddpx2;
        dpy2 = ddpy2;
        dpz2 = ddpz2;

        xtype = dxtype;
    }

    /*! X Coordinate of definition point 1. */
01124     double dpx1;
    /*! Y Coordinate of definition point 1. */
01126     double dpy1;
    /*! Z Coordinate of definition point 1. */
01128     double dpz1;

    /*! X Coordinate of definition point 2. */
01131     double dpx2;
    /*! Y Coordinate of definition point 2. */
01133     double dpy2;
    /*! Z Coordinate of definition point 2. */
01135     double dpz2;

    /*! True if the dimension indicates the X-value, false for Y-value */
01138     bool xtype;
};



/**
 * Leader (arrow).
 *
 * @author Andrew Mustun
 */
01148 struct DL_LeaderData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01153     DL_LeaderData(int lArrowHeadFlag,
                  int lLeaderPathType,
                  int lLeaderCreationFlag,
                  int lHooklineDirectionFlag,
                  int lHooklineFlag,
                  double lTextAnnotationHeight,
                  double lTextAnnotationWidth,
                  int lNumber) {

        arrowHeadFlag = lArrowHeadFlag;
        leaderPathType = lLeaderPathType;
        leaderCreationFlag = lLeaderCreationFlag;
        hooklineDirectionFlag = lHooklineDirectionFlag;
        hooklineFlag = lHooklineFlag;
        textAnnotationHeight = lTextAnnotationHeight;
        textAnnotationWidth = lTextAnnotationWidth;
        number = lNumber;
    }

    /*! Arrow head flag (71). */
01173     int arrowHeadFlag;
    /*! Leader path type (72). */
01175     int leaderPathType;
    /*! Leader creation flag (73). */
01177     int leaderCreationFlag;
    /*! Hookline direction flag (74). */
01179     int hooklineDirectionFlag;
    /*! Hookline flag (75) */
01181     int hooklineFlag;
    /*! Text annotation height (40). */
01183     double textAnnotationHeight;
    /*! Text annotation width (41) */
01185     double textAnnotationWidth;
    /*! Number of vertices in leader (76). */
01187     int number;
};



/**
 * Leader Vertex Data.
 *
 * @author Andrew Mustun
 */
01197 struct DL_LeaderVertexData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01202     DL_LeaderVertexData(double px=0.0, double py=0.0, double pz=0.0) {
        x = px;
        y = py;
        z = pz;
    }

    /*! X Coordinate of the vertex. */
01209     double x;
    /*! Y Coordinate of the vertex. */
01211     double y;
    /*! Z Coordinate of the vertex. */
01213     double z;
};



/**
 * Hatch data.
 */
01221 struct DL_HatchData {
    /**
     * Default constructor.
     */
01225     DL_HatchData() {}

    /**
     * Constructor.
     * Parameters: see member variables.
     */
01231     DL_HatchData(int hNumLoops,
                 bool hSolid,
                 double hScale,
                 double hAngle,
                 const string& hPattern) {
        numLoops = hNumLoops;
        solid = hSolid;
        scale = hScale;
        angle = hAngle;
        pattern = hPattern;
    }

    /*! Number of boundary paths (loops). */
01244     int numLoops;
    /*! Solid fill flag (true=solid, false=pattern). */
01246     bool solid;
    /*! Pattern scale or spacing */
01248     double scale;
    /*! Pattern angle */
01250     double angle;
    /*! Pattern name. */
01252     string pattern;
};



/**
 * Hatch boundary path (loop) data.
 */
01260 struct DL_HatchLoopData {
    /**
     * Default constructor.
     */
01264     DL_HatchLoopData() {}
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01269     DL_HatchLoopData(int hNumEdges) {
        numEdges = hNumEdges;
    }

    /*! Number of edges in this loop. */
01274     int numEdges;
};



/**
 * Hatch edge data.
 */
01282 struct DL_HatchEdgeData {
    /**
     * Default constructor.
     */
01286     DL_HatchEdgeData() {
        defined = false;
    }

    /**
     * Constructor for a line edge.
     * Parameters: see member variables.
     */
01294     DL_HatchEdgeData(double lx1, double ly1,
                     double lx2, double ly2) {
        x1 = lx1;
        y1 = ly1;
        x2 = lx2;
        y2 = ly2;
        type = 1;
        defined = true;
    }

    /**
     * Constructor for an arc edge.
     * Parameters: see member variables.
     */
01308     DL_HatchEdgeData(double acx, double acy,
                     double aRadius,
                     double aAngle1, double aAngle2,
                     bool aCcw) {
        cx = acx;
        cy = acy;
        radius = aRadius;
        angle1 = aAngle1;
        angle2 = aAngle2;
        ccw = aCcw;
        type = 2;
        defined = true;
    }

    /**
     * Edge type. 1=line, 2=arc.
     */
01325     int type;

    /**
     * Set to true if this edge is fully defined.
     */
01330     bool defined;

    /*! Start point (X). */
01333     double x1;
    /*! Start point (Y). */
01335     double y1;
    /*! End point (X). */
01337     double x2;
    /*! End point (Y). */
01339     double y2;
    /*! Center point of arc (X). */
01341     double cx;
    /*! Center point of arc (Y). */
01343     double cy;
    /*! Arc radius. */
01345     double radius;
    /*! Start angle. */
01347     double angle1;
    /*! End angle. */
01349     double angle2;
    /*! Counterclockwise flag. */
01351     bool ccw;
};



/**
 * Image Data.
 *
 * @author Andrew Mustun
 */
01361 struct DL_ImageData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01366     DL_ImageData(const string& iref,
                  double iipx, double iipy, double iipz,
                          double iux, double iuy, double iuz,
                          double ivx, double ivy, double ivz,
                          int iwidth, int iheight,
                          int ibrightness, int icontrast, int ifade) {
        ref = iref;
        ipx = iipx;
        ipy = iipy;
        ipz = iipz;
            ux = iux;
            uy = iuy;
            uz = iuz;
            vx = ivx;
            vy = ivy;
            vz = ivz;
            width = iwidth;
            height = iheight;
            brightness = ibrightness;
            contrast = icontrast;
            fade = ifade;
    }

    /*! Reference to the image file 
          (unique, used to refer to the image def object). */
01391     string ref;
    /*! X Coordinate of insertion point. */
01393     double ipx;
    /*! Y Coordinate of insertion point. */
01395     double ipy;
    /*! Z Coordinate of insertion point. */
01397     double ipz;
      /*! X Coordinate of u vector along bottom of image. */
01399       double ux;
      /*! Y Coordinate of u vector along bottom of image. */
01401       double uy;
      /*! Z Coordinate of u vector along bottom of image. */
01403       double uz;
      /*! X Coordinate of v vector along left side of image. */
01405       double vx;
      /*! Y Coordinate of v vector along left side of image. */
01407       double vy;
      /*! Z Coordinate of v vector along left side of image. */
01409       double vz;
      /*! Width of image in pixel. */
01411       int width;
      /*! Height of image in pixel. */
01413       int height;
      /*! Brightness (0..100, default = 50). */
01415       int brightness;
      /*! Contrast (0..100, default = 50). */
01417       int contrast;
      /*! Fade (0..100, default = 0). */
01419       int fade;
};



/**
 * Image Definition Data.
 *
 * @author Andrew Mustun
 */
01429 struct DL_ImageDefData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01434     DL_ImageDefData(const string& iref,
                         const string& ifile) {
        ref = iref;
            file = ifile;
    }

    /*! Reference to the image file 
          (unique, used to refer to the image def object). */
01442     string ref;

      /*! Image file */
01445       string file;
};

#endif

// EOF


Generated by  Doxygen 1.6.0   Back to index