18 #ifndef QGSDXFEXPORT_H 19 #define QGSDXFEXPORT_H 21 #include "qgis_core.h" 30 #include <QTextStream> 38 #define DXF_HANDSEED 100 39 #define DXF_HANDMAX 9999999 40 #define DXF_HANDPLOTSTYLE 0xf 63 , mLayerOutputAttributeIndex( layerOutputAttributeIndex )
77 int mLayerOutputAttributeIndex = -1;
92 Q_DECLARE_FLAGS( Flags,
Flag )
112 void setFlags( QgsDxfExport::Flags flags );
119 QgsDxfExport::Flags flags()
const;
126 void addLayers(
const QList< QgsDxfExport::DxfLayer > &layers );
134 int writeToFile( QIODevice *d,
const QString &codec );
231 static int closestColorMatch( QRgb color );
239 QString layerName(
const QString &
id,
const QgsFeature &f )
const;
255 void writeGroup(
int code,
int i )
SIP_PYNAME( writeGroupInt );
263 void writeGroup(
int code,
double d )
SIP_PYNAME( writeGroupDouble );
270 void writeGroup(
int code,
const QString &s );
289 void writeGroup(
const QColor &color,
int exactMatch = 62,
int rgbCode = 420,
int transparencyCode = 440 );
295 void writeGroupCode(
int code );
301 void writeInt(
int i );
307 void writeDouble(
double d );
313 void writeString(
const QString &s );
321 int writeHandle(
int code = 5,
int handle = 0 );
333 void writePolyline(
const QgsPointSequence &line,
const QString &layer,
const QString &lineStyleName,
const QColor &color,
double width = -1 )
SIP_SKIP;
344 void writePolygon(
const QgsRingSequence &polygon,
const QString &layer,
const QString &hatchPattern,
const QColor &color )
SIP_SKIP;
350 void writeLine(
const QgsPoint &pt1,
const QgsPoint &pt2,
const QString &layer,
const QString &lineStyleName,
const QColor &color,
double width = -1 );
357 void writePoint(
const QString &layer,
const QColor &color,
const QgsPoint &pt )
SIP_PYNAME( writePointV2 );
364 void writeFilledCircle(
const QString &layer,
const QColor &color,
const QgsPoint &pt,
double radius )
SIP_PYNAME( writeFillCircleV2 );
371 void writeCircle(
const QString &layer,
const QColor &color,
const QgsPoint &pt,
double radius,
const QString &lineStyleName,
double width )
SIP_PYNAME( writeCircleV2 );
378 void writeText(
const QString &layer,
const QString &text,
const QgsPoint &pt,
double size,
double angle,
const QColor &color )
SIP_PYNAME( writeTextV2 );
385 void writeMText(
const QString &layer,
const QString &text,
const QgsPoint &pt,
double width,
double angle,
const QColor &color );
402 void clipValueToMapUnitScale(
double &value,
const QgsMapUnitScale &scale,
double pixelToMMFactor )
const;
405 static QString dxfLayerName(
const QString &name );
408 static QString dxfEncoding(
const QString &name );
411 static QStringList encodings();
429 void registerDxfLayer(
const QString &layerId,
QgsFeatureId fid,
const QString &layer );
435 double mSymbologyScale = 1.0;
438 bool mLayerTitleAsName =
false;
440 QTextStream mTextStream;
442 static int sDxfColors[][3];
443 static const char *DXF_ENCODINGS[][2];
445 int mSymbolLayerCounter = 0;
447 int mBlockCounter = 0;
449 QHash< const QgsSymbolLayer *, QString > mLineStyles;
450 QHash< const QgsSymbolLayer *, QString > mPointSymbolBlocks;
453 void writeHeader(
const QString &codepage );
456 void writeEntities();
464 void writeDefaultLinetypes();
465 void writeSymbolLayerLinetype(
const QgsSymbolLayer *symbolLayer );
482 QString lineStyleFromSymbolLayer(
const QgsSymbolLayer *symbolLayer );
485 static int color_distance( QRgb p1,
int index );
486 static QRgb createRgbEntry( qreal r, qreal g, qreal b );
491 QList< QPair< QgsSymbolLayer *, QgsSymbol * > > symbolLayers(
QgsRenderContext &context );
492 static int nLineTypes(
const QList< QPair< QgsSymbolLayer *, QgsSymbol *> > &symbolLayers );
494 double dashSize()
const;
495 double dotSize()
const;
496 double dashSeparatorSize()
const;
497 double sizeToMapUnits(
double s )
const;
498 static QString lineNameFromPenStyle( Qt::PenStyle style );
499 bool layerIsScaleBasedVisible(
const QgsMapLayer *layer )
const;
501 QHash<QString, int> mBlockHandles;
502 QString mBlockHandle;
505 QMap< QString, QMap<QgsFeatureId, QString> > mDxfLayerNames;
508 QHash<QString, int> mLayerNameAttribute;
509 double mFactor = 1.0;
510 bool mForce2d =
false;
512 QgsDxfExport::Flags mFlags =
nullptr;
516 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsDxfExport::Flags )
518 #endif // QGSDXFEXPORT_H A rectangle specified with double values.
Base class for all map layer types.
double symbologyScale() const
Returns the reference scale for output.
QgsDxfExport::SymbologyExport symbologyExport() const
Gets symbology export mode.
DxfLayer(QgsVectorLayer *vl, int layerOutputAttributeIndex=-1)
Abstract base class for all rendered symbols.
A class to represent a 2D point.
bool force2d()
Retrieve whether the output should be forced to 2d.
void setSymbologyExport(QgsDxfExport::SymbologyExport e)
Set symbology export mode.
QgsVectorLayer * layer() const
Returns the layer.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Layers and optional attribute index to split into multiple layers using attribute value as layer name...
const QgsCoordinateReferenceSystem & crs
double ANALYSIS_EXPORT angle(QgsPoint *p1, QgsPoint *p2, QgsPoint *p3, QgsPoint *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
The QgsMapSettings class contains configuration for rendering of the map.
void setForce2d(bool force2d)
Force 2d output (eg.
Keeps the number of features and export symbology per feature (using the first symbol level) ...
Point geometry type, with support for z-dimension and m-values.
DistanceUnit
Units of distance.
QVector< QgsPoint > QgsPointSequence
QVector< QgsPointSequence > QgsRingSequence
void setSymbologyScale(double scale)
Set reference scale for output.
Contains information about the context of a rendering operation.
QgsRectangle extent() const
Gets extent of area to export.
void setLayerTitleAsName(bool layerTitleAsName)
Enable use of title (where set) instead of layer name, when attribute index of corresponding layer in...
Struct for storing maximum and minimum scales for measurements in map units.
void setExtent(const QgsRectangle &r)
Set extent of area to export.
bool layerTitleAsName()
Retrieve whether layer title (where set) instead of name shall be use.
This class represents a coordinate reference system (CRS).
LabelPosition is a candidate feature label position.
Represents a vector layer which manages a vector based data sets.
RenderUnit
Rendering size units.
int layerOutputAttributeIndex() const
Returns the attribute index used to split into multiple layers.