Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add quadrant based label DXF alignment support
  • Loading branch information
m-kuhn committed Nov 29, 2019
1 parent 651219f commit 2968fb8
Showing 1 changed file with 58 additions and 1 deletion.
59 changes: 58 additions & 1 deletion src/core/dxf/qgsdxfexport.cpp
Expand Up @@ -1259,6 +1259,63 @@ void QgsDxfExport::writeText( const QString &layer, const QString &text, pal::La
VAlign vali = VAlign::Undefined;

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 ) )
{
hali = HAlign::HLeft;
Expand Down Expand Up @@ -1393,7 +1450,7 @@ void QgsDxfExport::writeText( const QString &layer, const QString &text, const Q
writeGroup( 1, pt ); // Second alignment point
writeGroup( 40, size );
writeGroup( 1, text );
writeGroup( 50, angle );
writeGroup( 50, fmod( angle, 360 ) );
if ( hali != HAlign::Undefined )
writeGroup( 72, static_cast<int>( hali ) );
writeGroup( 7, QStringLiteral( "STANDARD" ) ); // so far only support for standard font
Expand Down

0 comments on commit 2968fb8

Please sign in to comment.