QList<QLineF> Snapper::findSnappingLines(const SnapLineMap &snappingLineMap, Qt::Orientation orientation, double snapLine, double lowerLimit, double upperLimit, QList<QRectF> *boundingRects) const { QList<QLineF> lineList; SnapLineMapIterator snappingLineIterator(snappingLineMap); while (snappingLineIterator.hasNext()) { snappingLineIterator.next(); if (compareLines(snapLine, snappingLineIterator.key())) { // near distance snapping lines lineList += createSnapLine(orientation, snappingLineIterator.key(), lowerLimit, upperLimit, snappingLineIterator.value().first); if (boundingRects != 0) boundingRects->append(snappingLineIterator.value().first); } } return lineList; }
void QgsLayoutView::setCurrentLayout( QgsLayout *layout ) { setScene( layout ); connect( layout->pageCollection(), &QgsLayoutPageCollection::changed, this, &QgsLayoutView::viewChanged ); connect( layout, &QgsLayout::selectedItemChanged, this, &QgsLayoutView::itemFocused ); viewChanged(); mSnapMarker.reset( new QgsLayoutViewSnapMarker() ); mSnapMarker->hide(); layout->addItem( mSnapMarker.get() ); mHorizontalSnapLine.reset( createSnapLine() ); mHorizontalSnapLine->hide(); layout->addItem( mHorizontalSnapLine.get() ); mVerticalSnapLine.reset( createSnapLine() ); mVerticalSnapLine->hide(); layout->addItem( mVerticalSnapLine.get() ); if ( mHorizontalRuler ) { connect( &layout->guides(), &QAbstractItemModel::dataChanged, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::rowsInserted, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::modelReset, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } ); } if ( mVerticalRuler ) { connect( &layout->guides(), &QAbstractItemModel::dataChanged, mVerticalRuler, [ = ] { mVerticalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::rowsInserted, mVerticalRuler, [ = ] { mVerticalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, mVerticalRuler, [ = ] { mVerticalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::modelReset, mVerticalRuler, [ = ] { mVerticalRuler->update(); } ); } //emit layoutSet, so that designer dialogs can update for the new layout emit layoutSet( layout ); }
QList<QLineF> Snapper::findSnappingOffsetLines(const SnapLineMap &snappingOffsetMap, Qt::Orientation orientation, double snapLine, double lowerLimit, double upperLimit, QList<QRectF> *boundingRects) const { QList<QLineF> lineList; SnapLineMapIterator snappingOffsetIterator(snappingOffsetMap); while (snappingOffsetIterator.hasNext()) { snappingOffsetIterator.next(); const QRectF &formEditorItemRect(snappingOffsetIterator.value().first); double formEditorItemRectLowerLimit; double formEditorItemRectUpperLimit; if (orientation == Qt::Horizontal) { formEditorItemRectLowerLimit = formEditorItemRect.left(); formEditorItemRectUpperLimit = formEditorItemRect.right(); } else { formEditorItemRectLowerLimit = formEditorItemRect.top(); formEditorItemRectUpperLimit = formEditorItemRect.bottom(); } if (qFuzzyCompare(snapLine, snappingOffsetIterator.key()) && !(lowerLimit > formEditorItemRectUpperLimit || upperLimit < formEditorItemRectLowerLimit)) { lineList += createSnapLine(orientation, snapLine, lowerLimit, upperLimit, formEditorItemRect); if (boundingRects != 0) boundingRects->append(snappingOffsetIterator.value().first); } } return lineList; }