コード例 #1
0
QgsMapMouseEvent::QgsMapMouseEvent( QgsMapToolAdvancedDigitizing* mapTool, QgsPoint point,
                                    Qt::MouseButton button, Qt::KeyboardModifiers modifiers,
                                    QEvent::Type eventType, SnappingMode mode )
    : QMouseEvent( eventType,
                   mapToPixelCoordinates( mapTool->canvas(), point ),
                   mapTool->canvas()->mapToGlobal( mapToPixelCoordinates( mapTool->canvas(), point ) ),
                   button, button, modifiers )
    , mMapPoint( point )
    , mOriginalPoint( point )
    , mMapTool( mapTool )
    , mSnapMatch( QgsPointLocator::Match() )
    , mSnappingMode( mode )
{
  snapPoint();
}
コード例 #2
0
ファイル: qgsmapmouseevent.cpp プロジェクト: AM7000000/QGIS
QgsPoint QgsMapMouseEvent::snapPoint( SnappingMode snappingMode )
{
  // Use cached result
  if ( mSnappingMode == snappingMode )
    return mMapPoint;

  mSnappingMode = snappingMode;

  if ( snappingMode == NoSnapping )
  {
    mMapPoint = mOriginalMapPoint;
    mPixelPoint = pos();
    return mMapPoint;
  }

  QgsSnappingUtils* snappingUtils = mMapCanvas->snappingUtils();
  QgsSnappingUtils::SnapToMapMode canvasMode = snappingUtils->snapToMapMode();
  if ( snappingMode == SnapAllLayers )
  {
    int type;
    double tolerance;
    QgsTolerance::UnitType unit;
    snappingUtils->defaultSettings( type, tolerance, unit );
    snappingUtils->setSnapToMapMode( QgsSnappingUtils::SnapAllLayers );
    snappingUtils->setDefaultSettings( QgsPointLocator::Vertex | QgsPointLocator::Edge, tolerance, unit );
    mSnapMatch = snappingUtils->snapToMap( mMapPoint );
    snappingUtils->setSnapToMapMode( canvasMode );
    snappingUtils->setDefaultSettings( type, tolerance, unit );
  }
  else
  {
    mSnapMatch = snappingUtils->snapToMap( mMapPoint );
  }

  if ( mSnapMatch.isValid() )
  {
    mMapPoint = mSnapMatch.point();
    mPixelPoint = mapToPixelCoordinates( mMapPoint );
  }
  else
  {
    mMapPoint = mOriginalMapPoint;
    mPixelPoint = pos();
  }

  return mMapPoint;
}
コード例 #3
0
ファイル: qgsmapmouseevent.cpp プロジェクト: AM7000000/QGIS
void QgsMapMouseEvent::setMapPoint( const QgsPoint& point )
{
  mMapPoint = point;
  mPixelPoint = mapToPixelCoordinates( point );
}