mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-12 00:02:25 -04:00
Add quadrant based label DXF alignment support
This commit is contained in:
parent
651219f390
commit
2968fb86f6
@ -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;
|
||||
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user