Skip to content

Commit

Permalink
Fix conversion of text alignment
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Sep 14, 2020
1 parent 0685c5e commit c116080
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions src/core/vectortile/qgsmapboxglstyleconverter.cpp
Expand Up @@ -1142,6 +1142,54 @@ void QgsMapBoxGlStyleConverter::parseSymbolLayer( const QVariantMap &jsonLayer,
}
}

if ( jsonLayout.contains( QStringLiteral( "text-justify" ) ) )
{
const QVariant jsonTextJustify = jsonLayout.value( QStringLiteral( "text-justify" ) );

// default is center
QString textAlign = QStringLiteral( "center" );

const QVariantMap conversionMap
{
{ QStringLiteral( "left" ), QStringLiteral( "left" ) },
{ QStringLiteral( "center" ), QStringLiteral( "center" ) },
{ QStringLiteral( "right" ), QStringLiteral( "right" ) },
{ QStringLiteral( "auto" ), QStringLiteral( "follow" ) }
};

switch ( jsonTextJustify.type() )
{
case QVariant::String:
textAlign = jsonTextJustify.toString();
break;

case QVariant::List:
ddLabelProperties.setProperty( QgsPalLayerSettings::OffsetQuad, QgsProperty::fromExpression( parseStringStops( jsonTextJustify.toList(), context, conversionMap, &textAlign ) ) );
break;

case QVariant::Map:
ddLabelProperties.setProperty( QgsPalLayerSettings::OffsetQuad, parseInterpolateStringByZoom( jsonTextJustify.toMap(), context, conversionMap, &textAlign ) );
break;

default:
context.pushWarning( QObject::tr( "Skipping non-implemented text-anchor expression" ) );
break;
}

if ( textAlign == QLatin1String( "left" ) )
labelSettings.multilineAlign = QgsPalLayerSettings::MultiLeft;
else if ( textAlign == QLatin1String( "right" ) )
labelSettings.multilineAlign = QgsPalLayerSettings::MultiRight;
else if ( textAlign == QLatin1String( "center" ) )
labelSettings.multilineAlign = QgsPalLayerSettings::MultiCenter;
else if ( textAlign == QLatin1String( "follow" ) )
labelSettings.multilineAlign = QgsPalLayerSettings::MultiFollowPlacement;
}
else
{
labelSettings.multilineAlign = QgsPalLayerSettings::MultiCenter;
}

if ( labelSettings.placement == QgsPalLayerSettings::OverPoint )
{
if ( jsonLayout.contains( QStringLiteral( "text-anchor" ) ) )
Expand Down

0 comments on commit c116080

Please sign in to comment.