@@ -841,15 +841,19 @@ bool QgsSimpleMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitSc
841
841
}
842
842
843
843
// color
844
- QColor c = mPen .color ();
845
- if ( mPen .style () == Qt::NoPen )
846
- {
847
- c = mBrush .color ();
848
- }
844
+ QColor pc = mPen .color ();
845
+ QColor bc = mBrush .color ();
846
+
849
847
QgsExpression* colorExpression = expression ( " color" );
850
848
if ( colorExpression )
851
849
{
852
- c = QgsSymbolLayerV2Utils::decodeColor ( colorExpression->evaluate ( *f ).toString () );
850
+ bc = QgsSymbolLayerV2Utils::decodeColor ( colorExpression->evaluate ( *f ).toString () );
851
+ }
852
+
853
+ QgsExpression* outlinecolorExpression = expression ( " outline_color" );
854
+ if ( outlinecolorExpression )
855
+ {
856
+ pc = QgsSymbolLayerV2Utils::decodeColor ( outlinecolorExpression->evaluate ( *f ).toString () );
853
857
}
854
858
855
859
// offset
@@ -884,78 +888,133 @@ bool QgsSimpleMarkerSymbolLayerV2::writeDxf( QgsDxfExport& e, double mmMapUnitSc
884
888
885
889
if ( mName == " circle" )
886
890
{
887
- e.writeCircle ( layerName, c, QgsPoint ( shift.x (), shift.y () ), halfSize );
891
+ if ( mBrush .style () != Qt::NoBrush )
892
+ e.writeFilledCircle ( layerName, bc, QgsPoint ( shift.x (), shift.y () ), halfSize );
893
+ if ( mPen .style () != Qt::NoPen )
894
+ e.writeCircle ( layerName, pc, QgsPoint ( shift.x (), shift.y () ), halfSize, " CONTINUOUS" , outlineWidth );
888
895
}
889
896
else if ( mName == " square" || mName == " rectangle" )
890
897
{
898
+ // pt1 pt2
899
+ // pt3 pt4
891
900
QPointF pt1 = t.map ( QPointF ( -halfSize, -halfSize ) );
892
901
QPointF pt2 = t.map ( QPointF ( halfSize, -halfSize ) );
893
902
QPointF pt3 = t.map ( QPointF ( -halfSize, halfSize ) );
894
903
QPointF pt4 = t.map ( QPointF ( halfSize, halfSize ) );
895
- e.writeSolid ( layerName, c, QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt4.x (), pt4.y () ) );
904
+
905
+ if ( mBrush .style () != Qt::NoBrush )
906
+ e.writeSolid ( layerName, bc, QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt4.x (), pt4.y () ) );
907
+
908
+ if ( mPen .style () != Qt::NoPen )
909
+ {
910
+ e.writeLine ( pt1, pt2, layerName, " CONTINUOUS" , pc, outlineWidth );
911
+ e.writeLine ( pt2, pt4, layerName, " CONTINUOUS" , pc, outlineWidth );
912
+ e.writeLine ( pt4, pt3, layerName, " CONTINUOUS" , pc, outlineWidth );
913
+ e.writeLine ( pt3, pt1, layerName, " CONTINUOUS" , pc, outlineWidth );
914
+ }
896
915
}
897
916
else if ( mName == " diamond" )
898
917
{
899
918
QPointF pt1 = t.map ( QPointF ( -halfSize, 0 ) );
900
919
QPointF pt2 = t.map ( QPointF ( 0 , -halfSize ) );
901
920
QPointF pt3 = t.map ( QPointF ( 0 , halfSize ) );
902
921
QPointF pt4 = t.map ( QPointF ( halfSize, 0 ) );
903
- e.writeSolid ( layerName, c, QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt4.x (), pt4.y () ) );
922
+
923
+ if ( mBrush .style () != Qt::NoBrush )
924
+ e.writeSolid ( layerName, bc, QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt4.x (), pt4.y () ) );
925
+
926
+ if ( mPen .style () != Qt::NoPen )
927
+ {
928
+ e.writeLine ( pt1, pt2, layerName, " CONTINUOUS" , pc, outlineWidth );
929
+ e.writeLine ( pt2, pt3, layerName, " CONTINUOUS" , pc, outlineWidth );
930
+ e.writeLine ( pt3, pt4, layerName, " CONTINUOUS" , pc, outlineWidth );
931
+ e.writeLine ( pt4, pt1, layerName, " CONTINUOUS" , pc, outlineWidth );
932
+ }
904
933
}
905
934
else if ( mName == " triangle" )
906
935
{
907
936
QPointF pt1 = t.map ( QPointF ( -halfSize, -halfSize ) );
908
937
QPointF pt2 = t.map ( QPointF ( halfSize, -halfSize ) );
909
938
QPointF pt3 = t.map ( QPointF ( 0 , halfSize ) );
910
- e.writeSolid ( layerName, c, QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt3.x (), pt3.y () ) );
939
+
940
+ if ( mBrush .style () != Qt::NoBrush )
941
+ e.writeSolid ( layerName, bc, QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt3.x (), pt3.y () ) );
942
+
943
+ if ( mPen .style () != Qt::NoPen )
944
+ {
945
+ e.writeLine ( pt1, pt2, layerName, " CONTINUOUS" , pc, outlineWidth );
946
+ e.writeLine ( pt2, pt3, layerName, " CONTINUOUS" , pc, outlineWidth );
947
+ e.writeLine ( pt3, pt1, layerName, " CONTINUOUS" , pc, outlineWidth );
948
+ }
911
949
}
912
- /* else if( mName == "equilateral_triangle" )
950
+ #if 0
951
+ else if ( mName == "equilateral_triangle" )
913
952
{
914
953
915
- }*/
954
+ }
955
+ #endif
916
956
else if ( mName == " line" )
917
957
{
918
958
QPointF pt1 = t.map ( QPointF ( 0 , halfSize ) );
919
959
QPointF pt2 = t.map ( QPointF ( 0 , -halfSize ) );
920
- e.writeLine ( QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), layerName, " CONTINUOUS" , c, outlineWidth );
960
+
961
+ if ( mPen .style () != Qt::NoPen )
962
+ e.writeLine ( QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), layerName, " CONTINUOUS" , pc, outlineWidth );
921
963
}
922
- else if ( mName == " coss " )
964
+ else if ( mName == " cross " )
923
965
{
924
966
QPointF pt1 = t.map ( QPointF ( -halfSize, 0 ) );
925
967
QPointF pt2 = t.map ( QPointF ( halfSize, 0 ) );
926
968
QPointF pt3 = t.map ( QPointF ( 0 , -halfSize ) );
927
969
QPointF pt4 = t.map ( QPointF ( 0 , halfSize ) );
928
- e.writeLine ( QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), layerName, " CONTINUOUS" , c, outlineWidth );
929
- e.writeLine ( QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt4.x (), pt4.y () ), layerName, " CONTINUOUS" , c, outlineWidth );
970
+
971
+ if ( mPen .style () != Qt::NoPen )
972
+ {
973
+ e.writeLine ( QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), layerName, " CONTINUOUS" , pc, outlineWidth );
974
+ e.writeLine ( QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt4.x (), pt4.y () ), layerName, " CONTINUOUS" , pc, outlineWidth );
975
+ }
930
976
}
931
977
else if ( mName == " x" || mName == " cross2" )
932
978
{
933
979
QPointF pt1 = t.map ( QPointF ( -halfSize, -halfSize ) );
934
980
QPointF pt2 = t.map ( QPointF ( halfSize, halfSize ) );
935
981
QPointF pt3 = t.map ( QPointF ( -halfSize, halfSize ) );
936
982
QPointF pt4 = t.map ( QPointF ( halfSize, -halfSize ) );
937
- e.writeLine ( QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), layerName, " CONTINUOUS" , c, outlineWidth );
938
- e.writeLine ( QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt4.x (), pt4.y () ), layerName, " CONTINUOUS" , c, outlineWidth );
983
+
984
+ if ( mPen .style () != Qt::NoPen )
985
+ {
986
+ e.writeLine ( QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), layerName, " CONTINUOUS" , pc, outlineWidth );
987
+ e.writeLine ( QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt4.x (), pt4.y () ), layerName, " CONTINUOUS" , pc, outlineWidth );
988
+ }
939
989
}
940
990
else if ( mName == " arrowhead" )
941
991
{
942
992
QPointF pt1 = t.map ( QPointF ( -halfSize, halfSize ) );
943
993
QPointF pt2 = t.map ( QPointF ( 0 , 0 ) );
944
994
QPointF pt3 = t.map ( QPointF ( -halfSize, -halfSize ) );
945
- e.writeLine ( QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), layerName, " CONTINUOUS" , c, outlineWidth );
946
- e.writeLine ( QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt2.x (), pt2.y () ), layerName, " CONTINUOUS" , c, outlineWidth );
995
+
996
+ if ( mPen .style () != Qt::NoPen )
997
+ {
998
+ e.writeLine ( QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), layerName, " CONTINUOUS" , pc, outlineWidth );
999
+ e.writeLine ( QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt2.x (), pt2.y () ), layerName, " CONTINUOUS" , pc, outlineWidth );
1000
+ }
947
1001
}
948
1002
else if ( mName == " filled_arrowhead" )
949
1003
{
950
1004
QPointF pt1 = t.map ( QPointF ( -halfSize, halfSize ) );
951
1005
QPointF pt2 = t.map ( QPointF ( 0 , 0 ) );
952
1006
QPointF pt3 = t.map ( QPointF ( -halfSize, -halfSize ) );
953
- e.writeSolid ( layerName, c, QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt3.x (), pt3.y () ) );
1007
+
1008
+ if ( mBrush .style () != Qt::NoBrush )
1009
+ {
1010
+ e.writeSolid ( layerName, bc, QgsPoint ( pt1.x (), pt1.y () ), QgsPoint ( pt2.x (), pt2.y () ), QgsPoint ( pt3.x (), pt3.y () ), QgsPoint ( pt3.x (), pt3.y () ) );
1011
+ }
954
1012
}
955
1013
else
956
1014
{
957
1015
return false ;
958
1016
}
1017
+
959
1018
return true ;
960
1019
}
961
1020
0 commit comments