mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
[FEATURE][labeling] Add "overrun distance" setting for line labels
This setting allows users to specify the maximal allowable distance a label may run past the end (or start) of line features. It works for both curved and parallel label modes, and supports distances in mm/map units/pixels/etc, and data-defined distances. Fixes #15846
This commit is contained in:
parent
3484a0246d
commit
4a97d5e4c4
@ -273,6 +273,10 @@ void QgsLabelingGui::setLayer( QgsMapLayer *mapLayer )
|
||||
mRepeatDistanceUnitWidget->setUnit( mSettings.repeatDistanceUnit );
|
||||
mRepeatDistanceUnitWidget->setMapUnitScale( mSettings.repeatDistanceMapUnitScale );
|
||||
|
||||
mOverrunDistanceSpinBox->setValue( mSettings.overrunDistance );
|
||||
mOverrunDistanceUnitWidget->setUnit( mSettings.overrunDistanceUnit );
|
||||
mOverrunDistanceUnitWidget->setMapUnitScale( mSettings.overrunDistanceMapUnitScale );
|
||||
|
||||
mPrioritySlider->setValue( mSettings.priority );
|
||||
mChkNoObstacle->setChecked( mSettings.obstacle );
|
||||
mObstacleFactorSlider->setValue( mSettings.obstacleFactor * 50 );
|
||||
@ -470,6 +474,10 @@ QgsPalLayerSettings QgsLabelingGui::layerSettings()
|
||||
lyr.repeatDistanceUnit = mRepeatDistanceUnitWidget->unit();
|
||||
lyr.repeatDistanceMapUnitScale = mRepeatDistanceUnitWidget->getMapUnitScale();
|
||||
|
||||
lyr.overrunDistance = mOverrunDistanceSpinBox->value();
|
||||
lyr.overrunDistanceUnit = mOverrunDistanceUnitWidget->unit();
|
||||
lyr.overrunDistanceMapUnitScale = mOverrunDistanceUnitWidget->getMapUnitScale();
|
||||
|
||||
lyr.priority = mPrioritySlider->value();
|
||||
lyr.obstacle = mChkNoObstacle->isChecked() || mMode == ObstaclesOnly;
|
||||
lyr.obstacleFactor = mObstacleFactorSlider->value() / 50.0;
|
||||
|
@ -151,7 +151,8 @@ void QgsTextFormatWidget::initWidget()
|
||||
<< QgsUnitTypes::RenderPoints << QgsUnitTypes::RenderInches );
|
||||
mRepeatDistanceUnitWidget->setUnits( QgsUnitTypes::RenderUnitList() << QgsUnitTypes::RenderMillimeters << QgsUnitTypes::RenderMetersInMapUnits << QgsUnitTypes::RenderMapUnits << QgsUnitTypes::RenderPixels
|
||||
<< QgsUnitTypes::RenderPoints << QgsUnitTypes::RenderInches );
|
||||
|
||||
mOverrunDistanceUnitWidget->setUnits( QgsUnitTypes::RenderUnitList() << QgsUnitTypes::RenderMillimeters << QgsUnitTypes::RenderMetersInMapUnits << QgsUnitTypes::RenderMapUnits << QgsUnitTypes::RenderPixels
|
||||
<< QgsUnitTypes::RenderPoints << QgsUnitTypes::RenderInches );
|
||||
mFontLineHeightSpinBox->setClearValue( 1.0 );
|
||||
mShapeRotationDblSpnBx->setClearValue( 0.0 );
|
||||
mShapeOffsetXSpnBx->setClearValue( 0.0 );
|
||||
@ -387,6 +388,8 @@ void QgsTextFormatWidget::initWidget()
|
||||
<< mPrioritySlider
|
||||
<< mRepeatDistanceSpinBox
|
||||
<< mRepeatDistanceUnitWidget
|
||||
<< mOverrunDistanceSpinBox
|
||||
<< mOverrunDistanceUnitWidget
|
||||
<< mScaleBasedVisibilityChkBx
|
||||
<< mMaxScaleWidget
|
||||
<< mMinScaleWidget
|
||||
@ -712,6 +715,7 @@ void QgsTextFormatWidget::populateDataDefinedButtons()
|
||||
registerDataDefinedButton( mMaxCharAngleDDBtn, QgsPalLayerSettings::CurvedCharAngleInOut );
|
||||
registerDataDefinedButton( mRepeatDistanceDDBtn, QgsPalLayerSettings::RepeatDistance );
|
||||
registerDataDefinedButton( mRepeatDistanceUnitDDBtn, QgsPalLayerSettings::RepeatDistanceUnit );
|
||||
registerDataDefinedButton( mOverrunDistanceDDBtn, QgsPalLayerSettings::OverrunDistance );
|
||||
|
||||
// data defined-only
|
||||
QString ddPlaceInfo = tr( "In edit mode, layer's relevant labeling map tool is:<br>"
|
||||
@ -1234,6 +1238,7 @@ void QgsTextFormatWidget::updatePlacementWidgets()
|
||||
mPlacementRotationFrame->setVisible( showRotationFrame );
|
||||
mPlacementRepeatDistanceFrame->setVisible( curWdgt == pageLine || ( curWdgt == pagePolygon &&
|
||||
( radPolygonPerimeter->isChecked() || radPolygonPerimeterCurved->isChecked() ) ) );
|
||||
mPlacementOverrunDistanceFrame->setVisible( curWdgt == pageLine );
|
||||
mPlacementMaxCharAngleFrame->setVisible( showMaxCharAngleFrame );
|
||||
|
||||
mMultiLinesFrame->setEnabled( enableMultiLinesFrame );
|
||||
|
@ -615,7 +615,7 @@
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="mLabelStackedWidget">
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>6</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="mLabelPage_Text">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
@ -644,8 +644,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>283</width>
|
||||
<height>240</height>
|
||||
<width>775</width>
|
||||
<height>405</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,1">
|
||||
@ -1227,7 +1227,7 @@ font-style: italic;</string>
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>290</width>
|
||||
<width>758</width>
|
||||
<height>509</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -2102,8 +2102,8 @@ font-style: italic;</string>
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>233</width>
|
||||
<height>248</height>
|
||||
<width>775</width>
|
||||
<height>405</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_12">
|
||||
@ -2448,7 +2448,7 @@ font-style: italic;</string>
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>375</width>
|
||||
<width>758</width>
|
||||
<height>633</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -3209,8 +3209,8 @@ font-style: italic;</string>
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>268</width>
|
||||
<height>366</height>
|
||||
<width>775</width>
|
||||
<height>405</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_22">
|
||||
@ -3784,9 +3784,9 @@ font-style: italic;</string>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>335</width>
|
||||
<height>884</height>
|
||||
<y>-263</y>
|
||||
<width>758</width>
|
||||
<height>932</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_11">
|
||||
@ -4993,6 +4993,73 @@ font-style: italic;</string>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="mPlacementOverrunDistanceFrame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_44">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_46">
|
||||
<property name="text">
|
||||
<string>Overrun feature</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QgsDoubleSpinBox" name="mOverrunDistanceSpinBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="specialValueText">
|
||||
<string>No overrun</string>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>999999999.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QgsPropertyOverrideButton" name="mOverrunDistanceDDBtn">
|
||||
<property name="text">
|
||||
<string>…</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QgsUnitSelectionWidget" name="mOverrunDistanceUnitWidget" native="true">
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::StrongFocus</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QFrame" name="mPlacementMaxCharAngleFrame">
|
||||
<layout class="QGridLayout" name="gridLayout_22">
|
||||
@ -5493,7 +5560,7 @@ font-style: italic;</string>
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>302</width>
|
||||
<width>758</width>
|
||||
<height>674</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
Loading…
x
Reference in New Issue
Block a user