Add quadrant based label DXF alignment support

This commit is contained in:
Matthias Kuhn 2019-11-29 17:52:16 +01:00
parent 651219f390
commit 2968fb86f6

View File

@ -1259,6 +1259,63 @@ void QgsDxfExport::writeText( const QString &layer, const QString &text, pal::La
VAlign vali = VAlign::Undefined; VAlign vali = VAlign::Undefined;
const QgsPropertyCollection &props = layerSettings.dataDefinedProperties(); const QgsPropertyCollection &props = layerSettings.dataDefinedProperties();
if ( props.isActive( QgsPalLayerSettings::OffsetQuad ) )
{
const QVariant exprVal = props.value( QgsPalLayerSettings::OffsetQuad, expressionContext );
if ( exprVal.isValid() )
{
int offsetQuad = exprVal.toInt();
lblX -= label->dX();
lblY -= label->dY();
switch ( offsetQuad )
{
case 0: // Above Left
hali = HAlign::HRight;
vali = VAlign::VBottom;
break;
case 1: // Above
hali = HAlign::HCenter;
vali = VAlign::VBottom;
break;
case 2: // Above Right
hali = HAlign::HLeft;
vali = VAlign::VBottom;
break;
case 3: // Left
hali = HAlign::HRight;
vali = VAlign::VMiddle;
break;
case 4: // Over
hali = HAlign::HCenter;
vali = VAlign::VMiddle;
break;
case 5: // Right
hali = HAlign::HLeft;
vali = VAlign::VMiddle;
break;
case 6: // Below Left
hali = HAlign::HRight;
vali = VAlign::VTop;
break;
case 7: // Below
hali = HAlign::HCenter;
vali = VAlign::VTop;
break;
case 8: // Below Right
hali = HAlign::HLeft;
vali = VAlign::VTop;
break;
default: // OverHali
hali = HAlign::HCenter;
vali = VAlign::VTop;
break;
}
}
}
if ( props.isActive( QgsPalLayerSettings::Hali ) ) if ( props.isActive( QgsPalLayerSettings::Hali ) )
{ {
hali = HAlign::HLeft; hali = HAlign::HLeft;
@ -1393,7 +1450,7 @@ void QgsDxfExport::writeText( const QString &layer, const QString &text, const Q
writeGroup( 1, pt ); // Second alignment point writeGroup( 1, pt ); // Second alignment point
writeGroup( 40, size ); writeGroup( 40, size );
writeGroup( 1, text ); writeGroup( 1, text );
writeGroup( 50, angle ); writeGroup( 50, fmod( angle, 360 ) );
if ( hali != HAlign::Undefined ) if ( hali != HAlign::Undefined )
writeGroup( 72, static_cast<int>( hali ) ); writeGroup( 72, static_cast<int>( hali ) );
writeGroup( 7, QStringLiteral( "STANDARD" ) ); // so far only support for standard font writeGroup( 7, QStringLiteral( "STANDARD" ) ); // so far only support for standard font