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

dl_entities.h

/****************************************************************************
** $Id: dl_entities.h,v 1.9 2004/08/07 08:19:25 andrew 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;
};



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

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

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

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

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



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

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



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

    /*! X coordinate of the control point. */
00384     double x;
    /*! Y coordinate of the control point. */
00386     double y;
    /*! Z coordinate of the control point. */
00388     double z;
};


/**
 * Ellipse Data.
 *
 * @author Andrew Mustun
 */
00397 struct DL_EllipseData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00402     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. */
00419     double cx;
    /*! Y Coordinate of center point. */
00421     double cy;
    /*! Z Coordinate of center point. */
00423     double cz;

    /*! X coordinate of the endpoint of the major axis. */
00426     double mx;
    /*! Y coordinate of the endpoint of the major axis. */
00428     double my;
    /*! Z coordinate of the endpoint of the major axis. */
00430     double mz;

    /*! Ratio of minor axis to major axis.. */
00433     double ratio;
    /*! Startangle of ellipse in rad. */
00435     double angle1;
    /*! Endangle of ellipse in rad. */
00437     double angle2;
};



/**
 * Insert Data.
 *
 * @author Andrew Mustun
 */
00447 struct DL_InsertData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00452     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. */
00473     string name;
    /*! X Coordinate of insertion point. */
00475     double ipx;
    /*! Y Coordinate of insertion point. */
00477     double ipy;
    /*! Z Coordinate of insertion point. */
00479     double ipz;
    /*! X Scale factor. */
00481     double sx;
    /*! Y Scale factor. */
00483     double sy;
    /*! Z Scale factor. */
00485     double sz;
    /*! Rotation angle in rad. */
00487     double angle;
    /*! Number of colums if we insert an array of the block or 1. */
00489     int cols;
    /*! Number of rows if we insert an array of the block or 1. */
00491     int rows;
    /*! Values for the spacing between cols. */
00493     double colSp;
    /*! Values for the spacing between rows. */
00495     double rowSp;
};



/**
 * MText Data.
 *
 * @author Andrew Mustun
 */
00505 struct DL_MTextData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00510     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. */
00535     double ipx;
    /*! Y Coordinate of insertion point. */
00537     double ipy;
    /*! Z Coordinate of insertion point. */
00539     double ipz;
    /*! Text height */
00541     double height;
    /*! Width of the text box. */
00543     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
     */
00551     int attachmentPoint;
    /**
     * Drawing direction.
     *
     * 1 = left to right, 3 = top to bottom, 5 = by style
     */
00557     int drawingDirection;
    /**
     * Line spacing style.
     *
     * 1 = at least, 2 = exact
     */
00563     int lineSpacingStyle;
    /**
     * Line spacing factor. 0.25 .. 4.0  
     */
00567     double lineSpacingFactor;
    /*! Text string. */
00569     string text;
    /*! Style string. */
00571     string style;
    /*! Rotation angle. */
00573     double angle;
};



/**
 * Text Data.
 *
 * @author Andrew Mustun
 */
00583 struct DL_TextData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00588     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. */
00616     double ipx;
    /*! Y Coordinate of insertion point. */
00618     double ipy;
    /*! Z Coordinate of insertion point. */
00620     double ipz;

    /*! X Coordinate of alignment point. */
00623     double apx;
    /*! Y Coordinate of alignment point. */
00625     double apy;
    /*! Z Coordinate of alignment point. */
00627     double apz;

    /*! Text height */
00630     double height;
    /*! Relative X scale factor. */
00632     double xScaleFactor;
    /*! 0 = default, 2 = Backwards, 4 = Upside down */
00634     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.
     */
00642     int hJustification;
    /**
     * Vertical justification. 
     *
     * 0 = Baseline (default), 1 = Bottom, 2 = Middle, 3= Top
     */
00648     int vJustification;
    /*! Text string. */
00650     string text;
    /*! Style (font). */
00652     string style;
    /*! Rotation angle of dimension text away from default orientation. */
00654     double angle;
};



/**
 * Generic Dimension Data.
 *
 * @author Andrew Mustun
 */
00664 struct DL_DimensionData {
    /**
    * Constructor.
    * Parameters: see member variables.
    */
00669     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. */
00698     double dpx;
    /*! Y Coordinate of definition point. */
00700     double dpy;
    /*! Z Coordinate of definition point. */
00702     double dpz;
    /*! X Coordinate of middle point of the text. */
00704     double mpx;
    /*! Y Coordinate of middle point of the text. */
00706     double mpy;
    /*! Z Coordinate of middle point of the text. */
00708     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
     */
00728     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,
     */
00736     int attachmentPoint;
    /**
     * Line spacing style.
     *
     * 1 = at least, 2 = exact
     */
00742     int lineSpacingStyle;
    /**
     * Line spacing factor. 0.25 .. 4.0  
     */
00746     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.
     */
00754     string text;
    /*! Dimension style (font name). */
00756     string style;
    /**
    * Rotation angle of dimension text away from
     * default orientation.
    */
00761     double angle;
};



/**
 * Aligned Dimension Data.
 *
 * @author Andrew Mustun
 */
00771 struct DL_DimAlignedData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00776     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. */
00789     double epx1;
    /*! Y Coordinate of Extension point 1. */
00791     double epy1;
    /*! Z Coordinate of Extension point 1. */
00793     double epz1;

    /*! X Coordinate of Extension point 2. */
00796     double epx2;
    /*! Y Coordinate of Extension point 2. */
00798     double epy2;
    /*! Z Coordinate of Extension point 2. */
00800     double epz2;
};



/**
 * Linear Dimension Data.
 *
 * @author Andrew Mustun
 */
00810 struct DL_DimLinearData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00815     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. */
00832     double dpx1;
    /*! Y Coordinate of Extension point 1. */
00834     double dpy1;
    /*! Z Coordinate of Extension point 1. */
00836     double dpz1;

    /*! X Coordinate of Extension point 2. */
00839     double dpx2;
    /*! Y Coordinate of Extension point 2. */
00841     double dpy2;
    /*! Z Coordinate of Extension point 2. */
00843     double dpz2;

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



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

        leader = dleader;
    }

    /*! X Coordinate of definition point. */
00872     double dpx;
    /*! Y Coordinate of definition point. */
00874     double dpy;
    /*! Z Coordinate of definition point. */
00876     double dpz;

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



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

        leader = dleader;
    }

    /*! X Coordinate of definition point. */
00903     double dpx;
    /*! Y Coordinate of definition point. */
00905     double dpy;
    /*! Z Coordinate of definition point. */
00907     double dpz;

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



/**
 * Angular Dimension Data.
 *
 * @author Andrew Mustun
 */
00920 struct DL_DimAngularData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00925     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. */
00948     double dpx1;
    /*! Y Coordinate of definition point 1. */
00950     double dpy1;
    /*! Z Coordinate of definition point 1. */
00952     double dpz1;

    /*! X Coordinate of definition point 2. */
00955     double dpx2;
    /*! Y Coordinate of definition point 2. */
00957     double dpy2;
    /*! Z Coordinate of definition point 2. */
00959     double dpz2;

    /*! X Coordinate of definition point 3. */
00962     double dpx3;
    /*! Y Coordinate of definition point 3. */
00964     double dpy3;
    /*! Z Coordinate of definition point 3. */
00966     double dpz3;

    /*! X Coordinate of definition point 4. */
00969     double dpx4;
    /*! Y Coordinate of definition point 4. */
00971     double dpy4;
    /*! Z Coordinate of definition point 4. */
00973     double dpz4;
};


/**
 * Angular Dimension Data (3 points version).
 *
 * @author Andrew Mustun
 */
00982 struct DL_DimAngular3PData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
00987     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. */
01005     double dpx1;
    /*! Y Coordinate of definition point 1. */
01007     double dpy1;
    /*! Z Coordinate of definition point 1. */
01009     double dpz1;

    /*! X Coordinate of definition point 2. */
01012     double dpx2;
    /*! Y Coordinate of definition point 2. */
01014     double dpy2;
    /*! Z Coordinate of definition point 2. */
01016     double dpz2;

    /*! X Coordinate of definition point 3. */
01019     double dpx3;
    /*! Y Coordinate of definition point 3. */
01021     double dpy3;
    /*! Z Coordinate of definition point 3. */
01023     double dpz3;
};



/**
 * Leader (arrow).
 *
 * @author Andrew Mustun
 */
01033 struct DL_LeaderData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01038     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). */
01058     int arrowHeadFlag;
    /*! Leader path type (72). */
01060     int leaderPathType;
    /*! Leader creation flag (73). */
01062     int leaderCreationFlag;
    /*! Hookline direction flag (74). */
01064     int hooklineDirectionFlag;
    /*! Hookline flag (75) */
01066     int hooklineFlag;
    /*! Text annotation height (40). */
01068     double textAnnotationHeight;
    /*! Text annotation width (41) */
01070     double textAnnotationWidth;
    /*! Number of vertices in leader (76). */
01072     int number;
};



/**
 * Leader Vertex Data.
 *
 * @author Andrew Mustun
 */
01082 struct DL_LeaderVertexData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01087     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. */
01094     double x;
    /*! Y Coordinate of the vertex. */
01096     double y;
    /*! Z Coordinate of the vertex. */
01098     double z;
};



/**
 * Hatch data.
 */
01106 struct DL_HatchData {
    /**
     * Default constructor.
     */
01110     DL_HatchData() {}

    /**
     * Constructor.
     * Parameters: see member variables.
     */
01116     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). */
01129     int numLoops;
    /*! Solid fill flag (true=solid, false=pattern). */
01131     bool solid;
    /*! Pattern scale or spacing */
01133     double scale;
    /*! Pattern angle */
01135     double angle;
    /*! Pattern name. */
01137     string pattern;
};



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

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



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

    /**
     * Constructor for a line edge.
     * Parameters: see member variables.
     */
01179     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.
     */
01193     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.
     */
01210     int type;

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

    /*! Start point (X). */
01218     double x1;
    /*! Start point (Y). */
01220     double y1;
    /*! End point (X). */
01222     double x2;
    /*! End point (Y). */
01224     double y2;
    /*! Center point of arc (X). */
01226     double cx;
    /*! Center point of arc (Y). */
01228     double cy;
    /*! Arc radius. */
01230     double radius;
    /*! Start angle. */
01232     double angle1;
    /*! End angle. */
01234     double angle2;
    /*! Counterclockwise flag. */
01236     bool ccw;
};



/**
 * Image Data.
 *
 * @author Andrew Mustun
 */
01246 struct DL_ImageData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01251     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). */
01276     string ref;
    /*! X Coordinate of insertion point. */
01278     double ipx;
    /*! Y Coordinate of insertion point. */
01280     double ipy;
    /*! Z Coordinate of insertion point. */
01282     double ipz;
      /*! X Coordinate of u vector along bottom of image. */
01284       double ux;
      /*! Y Coordinate of u vector along bottom of image. */
01286       double uy;
      /*! Z Coordinate of u vector along bottom of image. */
01288       double uz;
      /*! X Coordinate of v vector along left side of image. */
01290       double vx;
      /*! Y Coordinate of v vector along left side of image. */
01292       double vy;
      /*! Z Coordinate of v vector along left side of image. */
01294       double vz;
      /*! Width of image in pixel. */
01296       int width;
      /*! Height of image in pixel. */
01298       int height;
      /*! Brightness (0..100, default = 50). */
01300       int brightness;
      /*! Contrast (0..100, default = 50). */
01302       int contrast;
      /*! Fade (0..100, default = 0). */
01304       int fade;
};



/**
 * Image Definition Data.
 *
 * @author Andrew Mustun
 */
01314 struct DL_ImageDefData {
    /**
     * Constructor.
     * Parameters: see member variables.
     */
01319     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). */
01327     string ref;

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

#endif

// EOF


Generated by  Doxygen 1.6.0   Back to index