20
20
#include " qgsproject.h"
21
21
#include " qgsvectorlayer.h"
22
22
#include " qgsfontutils.h"
23
+ #include " qgsnullsymbolrenderer.h"
23
24
#include " qgstextrenderer.h"
24
25
#include " qgspallabeling.h"
25
26
#include " qgslabelingengine.h"
@@ -41,10 +42,12 @@ class TestQgsDxfExport : public QObject
41
42
void testLines ();
42
43
void testPolygons ();
43
44
void testMtext ();
45
+ void testMTextNoSymbology (); // tests if label export works if layer has vector renderer type 'no symbols'
44
46
void testText ();
45
47
46
48
private:
47
49
QgsVectorLayer *mPointLayer = nullptr ;
50
+ QgsVectorLayer *mPointLayerNoSymbols = nullptr ;
48
51
QgsVectorLayer *mLineLayer = nullptr ;
49
52
QgsVectorLayer *mPolygonLayer = nullptr ;
50
53
@@ -54,6 +57,7 @@ class TestQgsDxfExport : public QObject
54
57
QString getTempFileName ( const QString &file ) const ;
55
58
56
59
bool fileContainsText ( const QString &path, const QString &text ) const ;
60
+ bool testMtext ( QgsVectorLayer *vlayer, const QString &tempFileName ) const ;
57
61
};
58
62
59
63
void TestQgsDxfExport::initTestCase ()
@@ -75,6 +79,10 @@ void TestQgsDxfExport::init()
75
79
mPointLayer = new QgsVectorLayer ( filename, QStringLiteral ( " points" ), QStringLiteral ( " ogr" ) );
76
80
QVERIFY ( mPointLayer ->isValid () );
77
81
QgsProject::instance ()->addMapLayer ( mPointLayer );
82
+ mPointLayerNoSymbols = new QgsVectorLayer ( filename, QStringLiteral ( " points" ), QStringLiteral ( " ogr" ) );
83
+ QVERIFY ( mPointLayerNoSymbols ->isValid () );
84
+ mPointLayerNoSymbols ->setRenderer ( new QgsNullSymbolRenderer () );
85
+ QgsProject::instance ()->addMapLayer ( mPointLayerNoSymbols );
78
86
filename = QStringLiteral ( TEST_DATA_DIR ) + " /lines.shp" ;
79
87
mLineLayer = new QgsVectorLayer ( filename, QStringLiteral ( " lines" ), QStringLiteral ( " ogr" ) );
80
88
QVERIFY ( mLineLayer ->isValid () );
@@ -176,6 +184,16 @@ void TestQgsDxfExport::testPolygons()
176
184
}
177
185
178
186
void TestQgsDxfExport::testMtext ()
187
+ {
188
+ QVERIFY ( testMtext ( mPointLayer , QStringLiteral ( " mtext_dxf" ) ) );
189
+ }
190
+
191
+ void TestQgsDxfExport::testMTextNoSymbology ()
192
+ {
193
+ QVERIFY ( testMtext ( mPointLayerNoSymbols , QStringLiteral ( " text_no_symbology_dxf" ) ) );
194
+ }
195
+
196
+ void TestQgsDxfExport::testText ()
179
197
{
180
198
QgsPalLayerSettings settings;
181
199
settings.fieldName = QStringLiteral ( " Class" );
@@ -202,20 +220,21 @@ void TestQgsDxfExport::testMtext()
202
220
d.setMapSettings ( mapSettings );
203
221
d.setSymbologyScale ( 1000 );
204
222
d.setSymbologyExport ( QgsDxfExport::FeatureSymbology );
223
+ d.setFlags ( QgsDxfExport::FlagNoMText );
205
224
206
- QString file = getTempFileName ( " mtext_dxf " );
225
+ QString file = getTempFileName ( " text_dxf " );
207
226
QFile dxfFile ( file );
208
227
QCOMPARE ( d.writeToFile ( &dxfFile, QStringLiteral ( " CP1252" ) ), 0 );
209
228
dxfFile.close ();
210
229
211
230
212
- QVERIFY ( fileContainsText ( file, " MTEXT \n "
231
+ QVERIFY ( fileContainsText ( file, " TEXT \n "
213
232
" 5\n "
214
233
" dd\n "
215
234
" 100\n "
216
235
" AcDbEntity\n "
217
236
" 100\n "
218
- " AcDbMText \n "
237
+ " AcDbText \n "
219
238
" 8\n "
220
239
" points\n "
221
240
" 420\n "
@@ -224,21 +243,25 @@ void TestQgsDxfExport::testMtext()
224
243
" **no check**\n "
225
244
" 20\n "
226
245
" **no check**\n "
246
+ " 40\n "
247
+ " **no check**\n "
227
248
" 1\n "
228
- " \\ fQGIS Vera Sans|i0|b1; \\ H3.81136; Biplane\n "
249
+ " Biplane\n "
229
250
" 50\n "
230
251
" 0.0\n "
231
- " 41\n "
232
- " **no check**\n "
233
- " 71\n "
234
- " 7\n "
235
252
" 7\n "
236
253
" STANDARD\n "
237
- " 0" ) );
254
+ " 100\n "
255
+ " AcDbText" ) );
238
256
}
239
257
240
- void TestQgsDxfExport::testText ()
258
+ bool TestQgsDxfExport::testMtext ( QgsVectorLayer *vlayer, const QString &tempFileName ) const
241
259
{
260
+ if ( !vlayer )
261
+ {
262
+ return false ;
263
+ }
264
+
242
265
QgsPalLayerSettings settings;
243
266
settings.fieldName = QStringLiteral ( " Class" );
244
267
QgsTextFormat format;
@@ -247,38 +270,40 @@ void TestQgsDxfExport::testText()
247
270
format.setNamedStyle ( QStringLiteral ( " Bold" ) );
248
271
format.setColor ( QColor ( 200 , 0 , 200 ) );
249
272
settings.setFormat ( format );
250
- mPointLayer ->setLabeling ( new QgsVectorLayerSimpleLabeling ( settings ) );
251
- mPointLayer ->setLabelsEnabled ( true );
273
+ vlayer ->setLabeling ( new QgsVectorLayerSimpleLabeling ( settings ) );
274
+ vlayer ->setLabelsEnabled ( true );
252
275
253
276
QgsDxfExport d;
254
- d.addLayers ( QList< QPair< QgsVectorLayer *, int > >() << qMakePair ( mPointLayer , -1 ) );
277
+ d.addLayers ( QList< QPair< QgsVectorLayer *, int > >() << qMakePair ( vlayer , -1 ) );
255
278
256
279
QgsMapSettings mapSettings;
257
280
QSize size ( 640 , 480 );
258
281
mapSettings.setOutputSize ( size );
259
- mapSettings.setExtent ( mPointLayer ->extent () );
260
- mapSettings.setLayers ( QList<QgsMapLayer *>() << mPointLayer );
282
+ mapSettings.setExtent ( vlayer ->extent () );
283
+ mapSettings.setLayers ( QList<QgsMapLayer *>() << vlayer );
261
284
mapSettings.setOutputDpi ( 96 );
262
- mapSettings.setDestinationCrs ( mPointLayer ->crs () );
285
+ mapSettings.setDestinationCrs ( vlayer ->crs () );
263
286
264
287
d.setMapSettings ( mapSettings );
265
288
d.setSymbologyScale ( 1000 );
266
289
d.setSymbologyExport ( QgsDxfExport::FeatureSymbology );
267
- d.setFlags ( QgsDxfExport::FlagNoMText );
268
290
269
- QString file = getTempFileName ( " text_dxf " );
291
+ QString file = getTempFileName ( tempFileName );
270
292
QFile dxfFile ( file );
271
- QCOMPARE ( d.writeToFile ( &dxfFile, QStringLiteral ( " CP1252" ) ), 0 );
293
+ if ( !d.writeToFile ( &dxfFile, QStringLiteral ( " CP1252" ) ) == 0 )
294
+ {
295
+ return false ;
296
+ }
272
297
dxfFile.close ();
273
298
274
299
275
- QVERIFY ( fileContainsText ( file, " TEXT \n "
300
+ return ( fileContainsText ( file, " MTEXT \n "
276
301
" 5\n "
277
- " dd \n "
302
+ " **no check** \n "
278
303
" 100\n "
279
304
" AcDbEntity\n "
280
305
" 100\n "
281
- " AcDbText \n "
306
+ " AcDbMText \n "
282
307
" 8\n "
283
308
" points\n "
284
309
" 420\n "
@@ -287,16 +312,17 @@ void TestQgsDxfExport::testText()
287
312
" **no check**\n "
288
313
" 20\n "
289
314
" **no check**\n "
290
- " 40\n "
291
- " **no check**\n "
292
315
" 1\n "
293
- " Biplane\n "
316
+ " \\ fQGIS Vera Sans|i0|b1; \\ H3.81136; Biplane\n "
294
317
" 50\n "
295
318
" 0.0\n "
319
+ " 41\n "
320
+ " **no check**\n "
321
+ " 71\n "
322
+ " 7\n "
296
323
" 7\n "
297
324
" STANDARD\n "
298
- " 100\n "
299
- " AcDbText" ) );
325
+ " 0" ) );
300
326
}
301
327
302
328
bool TestQgsDxfExport::fileContainsText ( const QString &path, const QString &text ) const
0 commit comments