@@ -1271,8 +1271,8 @@ namespace QgsWms
1271
1271
1272
1272
QStringList QgsWmsParameters::allStyles () const
1273
1273
{
1274
- QStringList style = value ( ParameterName::STYLE ). toString (). split ( " , " , QString::SkipEmptyParts );
1275
- QStringList styles = value ( ParameterName::STYLES ). toString (). split ( " , " );
1274
+ QStringList style = toStringList ( ParameterName::STYLE );
1275
+ QStringList styles = toStringList ( ParameterName::STYLES );
1276
1276
return style << styles;
1277
1277
}
1278
1278
@@ -1417,6 +1417,134 @@ namespace QgsWms
1417
1417
return toColor ( ParameterName::BGCOLOR );
1418
1418
}
1419
1419
1420
+ QgsWmsParametersComposerMap QgsWmsParameters::composerMapParameters ( int mapId ) const
1421
+ {
1422
+ QgsWmsParametersComposerMap param;
1423
+ param.mId = mapId;
1424
+
1425
+ QString pMapId = " MAP" + QString::number ( mapId );
1426
+
1427
+ // map extent is mandatory
1428
+ if ( !mRequestParameters .contains ( pMapId + " :EXTENT" ) )
1429
+ return param;
1430
+
1431
+ QVariant extentValue ( mRequestParameters [pMapId + " :EXTENT" ] );
1432
+ QString extentStr = extentValue.toString ();
1433
+
1434
+ if ( extentStr.isEmpty () )
1435
+ return param;
1436
+
1437
+ QgsRectangle extent;
1438
+ QStringList corners = extentStr.split ( " ," );
1439
+
1440
+ if ( corners.size () == 4 )
1441
+ {
1442
+ double d[4 ];
1443
+ bool ok;
1444
+
1445
+ for ( int i = 0 ; i < 4 ; i++ )
1446
+ {
1447
+ corners[i].replace ( QLatin1String ( " " ), QLatin1String ( " +" ) );
1448
+ d[i] = corners[i].toDouble ( &ok );
1449
+ if ( !ok )
1450
+ {
1451
+ raiseError ( pMapId + " BBOX ('" + extentStr + " ') cannot be converted into a rectangle" );
1452
+ }
1453
+ }
1454
+
1455
+ extent = QgsRectangle ( d[0 ], d[1 ], d[2 ], d[3 ] );
1456
+ }
1457
+ else
1458
+ {
1459
+ raiseError ( pMapId + " BBOX ('" + extentStr + " ') cannot be converted into a rectangle" );
1460
+ }
1461
+
1462
+ param.mHasExtent = true ;
1463
+ param.mExtent = extent;
1464
+
1465
+ // scale
1466
+ if ( mRequestParameters .contains ( pMapId + " :SCALE" ) )
1467
+ {
1468
+ param.mScale = composerMapParamToDouble ( mapId, " SCALE" , param.mScale );
1469
+ }
1470
+
1471
+ // rotation
1472
+ if ( mRequestParameters .contains ( pMapId + " :ROTATION" ) )
1473
+ {
1474
+ param.mRotation = composerMapParamToDouble ( mapId, " ROTATION" , param.mRotation );
1475
+ }
1476
+
1477
+ // grid space x / y
1478
+ if ( mRequestParameters .contains ( pMapId + " :GRID_INTERVAL_X" ) && mRequestParameters .contains ( pMapId + " :GRID_INTERVAL_Y" ) )
1479
+ {
1480
+ param.mGridX = composerMapParamToDouble ( mapId, " GRID_INTERVAL_X" , param.mGridX );
1481
+ param.mGridY = composerMapParamToDouble ( mapId, " GRID_INTERVAL_Y" , param.mGridY );
1482
+ }
1483
+
1484
+ // layers
1485
+ QList<QgsWmsParametersLayer> parameters;
1486
+ QStringList layers = composerMapParamToStringList ( mapId, " LAYERS" , ' ,' );
1487
+ QStringList styles = composerMapParamToStringList ( mapId, " STYLES" , ' ,' );
1488
+ for ( int i = 0 ; i < layers.size (); i++ )
1489
+ {
1490
+ QString layer = layers[i];
1491
+ QgsWmsParametersLayer param;
1492
+ param.mNickname = layer;
1493
+
1494
+ if ( i < styles.count () )
1495
+ param.mStyle = styles[i];
1496
+
1497
+ parameters.append ( param );
1498
+ }
1499
+ param.mLayers = parameters;
1500
+
1501
+ return param;
1502
+ }
1503
+
1504
+ double QgsWmsParameters::composerMapParamToDouble ( int mapId, QString name, double defaultVal ) const
1505
+ {
1506
+ QString pMapId = " MAP" + QString::number ( mapId );
1507
+ QString paramName = pMapId + " :" + name;
1508
+ double val = defaultVal;
1509
+
1510
+ if ( mRequestParameters .contains ( paramName ) )
1511
+ {
1512
+ QVariant value ( mRequestParameters [paramName] );
1513
+ QString valStr = value.toString ();
1514
+
1515
+ if ( ! valStr.isEmpty () && value.canConvert ( QVariant::Double ) )
1516
+ {
1517
+ bool ok;
1518
+ val = value.toDouble ( &ok );
1519
+
1520
+ if ( !ok )
1521
+ {
1522
+ QString msg = paramName + " ('" + valStr + " ') cannot be converted into a double" ;
1523
+ raiseError ( msg );
1524
+ }
1525
+
1526
+ }
1527
+ }
1528
+
1529
+ return val;
1530
+ }
1531
+
1532
+ QStringList QgsWmsParameters::composerMapParamToStringList ( int mapId, QString name, char delimiter ) const
1533
+ {
1534
+ QString pMapId = " MAP" + QString::number ( mapId );
1535
+ QString paramName = pMapId + " :" + name;
1536
+
1537
+ QString valStr;
1538
+
1539
+ if ( mRequestParameters .contains ( paramName ) )
1540
+ {
1541
+ QVariant value ( mRequestParameters [paramName] );
1542
+ valStr = value.toString ();
1543
+ }
1544
+
1545
+ return valStr.split ( delimiter, QString::SkipEmptyParts );
1546
+ }
1547
+
1420
1548
QString QgsWmsParameters::name ( ParameterName name ) const
1421
1549
{
1422
1550
const QMetaEnum metaEnum ( QMetaEnum::fromType<ParameterName>() );
0 commit comments