Ejemplo n.º 1
0
void PhotoView::setZoomFactor( qreal factor )
{
    _zoomFactor = factor;

    if ( qFuzzyCompare( _zoomFactor, 1.0 ) )
	setZoomMode( NoZoom );
    else
	setZoomMode( UseZoomFactor );
}
Ejemplo n.º 2
0
void QgsMapToolZoom::canvasMoveEvent( QgsMapMouseEvent *e )
{
  if ( !( e->buttons() & Qt::LeftButton ) )
    return;

  setZoomMode( e->modifiers().testFlag( Qt::AltModifier ) ^ mNativeZoomOut );

  if ( !mDragging )
  {
    mDragging = true;
    delete mRubberBand;
    mRubberBand = new QgsRubberBand( mCanvas, QgsWkbTypes::PolygonGeometry );
    QColor color( Qt::blue );
    color.setAlpha( 63 );
    mRubberBand->setColor( color );
    mZoomRect.setTopLeft( e->pos() );
  }

  mZoomRect.setBottomRight( e->pos() );
  if ( mRubberBand )
  {
    mRubberBand->setToCanvasRectangle( mZoomRect );
    mRubberBand->show();
  }
}
Ejemplo n.º 3
0
void QgsMapToolZoom::keyPressEvent( QKeyEvent *e )
{
  if ( e->key() == Qt::Key_Alt )
  {
    setZoomMode( !mNativeZoomOut );
  }
}
int QPrintPreviewWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QWidget::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: paintRequested((*reinterpret_cast< QPrinter*(*)>(_a[1]))); break;
        case 1: previewChanged(); break;
        case 2: print(); break;
        case 3: zoomIn((*reinterpret_cast< qreal(*)>(_a[1]))); break;
        case 4: zoomIn(); break;
        case 5: zoomOut((*reinterpret_cast< qreal(*)>(_a[1]))); break;
        case 6: zoomOut(); break;
        case 7: setZoomFactor((*reinterpret_cast< qreal(*)>(_a[1]))); break;
        case 8: setOrientation((*reinterpret_cast< QPrinter::Orientation(*)>(_a[1]))); break;
        case 9: setViewMode((*reinterpret_cast< ViewMode(*)>(_a[1]))); break;
        case 10: setZoomMode((*reinterpret_cast< ZoomMode(*)>(_a[1]))); break;
        case 11: setCurrentPage((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 12: fitToWidth(); break;
        case 13: fitInView(); break;
        case 14: setLandscapeOrientation(); break;
        case 15: setPortraitOrientation(); break;
        case 16: setSinglePageViewMode(); break;
        case 17: setFacingPagesViewMode(); break;
        case 18: setAllPagesViewMode(); break;
        case 19: updatePreview(); break;
        case 20: d_func()->_q_fit(); break;
        case 21: d_func()->_q_updateCurrentPage(); break;
        }
        _id -= 22;
    }
    return _id;
}
Ejemplo n.º 5
0
void PlotZoomer::loadSettings(QSettings &settings)
{
  settings.beginGroup("zoom");

  int zoomMode = settings.value("mode", int(PlotZoomer::ZoomBoth)).toInt();
  setZoomMode(PlotZoomer::ZoomMode(zoomMode));

  int zoomIndex = settings.value("index", -1).toInt();
  int stackSize = settings.beginReadArray("stack");
  QStack<QRectF> stack;
  stack.resize(stackSize);
  for (int i = 0; i < stackSize; ++i)
  {
    settings.setArrayIndex(i);
    read(settings, stack[i]);
  }
  settings.endArray();

  setZoomStack(stack, zoomIndex);

  if (stackSize <= 1)
  {
    zoomToFit(true);
  }

  settings.endGroup();
}
Ejemplo n.º 6
0
void QgsMapToolZoom::keyReleaseEvent( QKeyEvent *e )
{
  // key press events are not caught wile the mouse is pressed
  // this is detected in map canvas move event

  if ( e->key() == Qt::Key_Alt )
  {
    setZoomMode( mNativeZoomOut );
  }
}
Ejemplo n.º 7
0
void PhotoView::setZoomMode()
{
    QAction * action = qobject_cast<QAction *>( sender() );

    if ( action )
    {
        int zoomMode = action->data().toInt();
        setZoomMode( static_cast<ZoomMode>( zoomMode ) );
    }
}
Ejemplo n.º 8
0
QgsMapToolZoom::QgsMapToolZoom( QgsMapCanvas *canvas, bool zoomOut )
  : QgsMapTool( canvas )
  , mZoomOut( zoomOut )
  , mNativeZoomOut( zoomOut )
  , mDragging( false )
  , mZoomOutCursor( QgsApplication::getThemeCursor( QgsApplication::Cursor::ZoomOut ) )
  , mZoomInCursor( QgsApplication::getThemeCursor( QgsApplication::Cursor::ZoomIn ) )

{
  mToolName = tr( "Zoom" );
  setZoomMode( mNativeZoomOut, true );
}
Ejemplo n.º 9
0
void QgsMapToolZoom::canvasReleaseEvent( QgsMapMouseEvent *e )
{
  if ( e->button() != Qt::LeftButton )
    return;

  setZoomMode( e->modifiers().testFlag( Qt::AltModifier ) ^ mNativeZoomOut );

  // We are not really dragging in this case. This is sometimes caused by
  // a pen based computer reporting a press, move, and release, all the
  // one point.
  bool tooShort = ( mZoomRect.topLeft() - mZoomRect.bottomRight() ).manhattanLength() < mMinPixelZoom;
  if ( !mDragging || tooShort )
  {
    mDragging = false;
    delete mRubberBand;
    mRubberBand = nullptr;

    // change to zoom in/out by the default multiple
    mCanvas->zoomWithCenter( e->x(), e->y(), !mZoomOut );
  }
  else
  {
    mDragging = false;
    delete mRubberBand;
    mRubberBand = nullptr;

    // store the rectangle
    mZoomRect.setRight( e->pos().x() );
    mZoomRect.setBottom( e->pos().y() );

    //account for bottom right -> top left dragging
    mZoomRect = mZoomRect.normalized();

    // set center and zoom
    const QSize &zoomRectSize = mZoomRect.size();
    const QgsMapSettings &mapSettings = mCanvas->mapSettings();
    const QSize &canvasSize = mapSettings.outputSize();
    double sfx = static_cast<double>( zoomRectSize.width() ) / canvasSize.width();
    double sfy = static_cast<double>( zoomRectSize.height() ) / canvasSize.height();
    double sf = std::max( sfx, sfy );

    const QgsMapToPixel *m2p = mCanvas->getCoordinateTransform();
    QgsPointXY c = m2p->toMapCoordinates( mZoomRect.center() );

    mCanvas->zoomByFactor( mZoomOut ? 1.0 / sf : sf, &c );

    mCanvas->refresh();
  }
}
Ejemplo n.º 10
0
PhotoView::Actions::Actions( PhotoView * photoView ):
    _photoView( photoView )
{
    //
    // Zoom
    //

    noZoom = createAction( tr( "No Zoom (100% / &1:1)" ), Qt::Key_1, NoZoom );
    CONNECT_ACTION( noZoom, photoView, setZoomMode() );

    zoomIn = createAction( tr( "Zoom In (Enlarge)" ), Qt::Key_Plus );
    CONNECT_ACTION( zoomIn, photoView, zoomIn() );

    zoomOut = createAction( tr( "Zoom Out (Shrink)" ), Qt::Key_Minus );
    CONNECT_ACTION( zoomOut, photoView, zoomOut() );

    zoomFitImage = createAction( tr( "Zoom to &Fit Window" ), Qt::Key_F, ZoomFitImage );
    addShortcut( zoomFitImage, Qt::Key_M );
    CONNECT_ACTION( zoomFitImage, photoView, setZoomMode() );

    zoomFitWidth = createAction( tr( "Zoom to Fit Window &Width" ), Qt::Key_W, ZoomFitWidth );
    CONNECT_ACTION( zoomFitWidth, photoView, setZoomMode() );

    zoomFitHeight = createAction( tr( "Zoom to Fit Window &Height" ), Qt::Key_H, ZoomFitHeight );
    CONNECT_ACTION( zoomFitHeight, photoView, setZoomMode() );

    zoomFitBest = createAction( tr( "&Best Zoom for Window Width or Height" ), Qt::Key_B, ZoomFitBest );
    CONNECT_ACTION( zoomFitBest, photoView, setZoomMode() );

    //
    // Navigation
    //

    loadNext = createAction( tr( "Load &Next Image" ), Qt::Key_Space, NavigateNext );
    addShortcut( loadNext, Qt::Key_PageDown );
    CONNECT_ACTION( loadNext, photoView, navigate() );

    loadPrevious = createAction( tr( "Load &Previous Image" ), Qt::Key_Backspace, NavigatePrevious );
    addShortcut( loadPrevious, Qt::Key_PageUp );
    CONNECT_ACTION( loadPrevious, photoView, navigate() );

    loadFirst = createAction( tr( "Load &First Image" ), Qt::Key_Home, NavigateFirst );
    CONNECT_ACTION( loadFirst, photoView, navigate() );

    loadLast = createAction( tr( "Load &Last Image" ), Qt::Key_End, NavigateLast );
    CONNECT_ACTION( loadLast, photoView, navigate() );


    //
    // Misc
    //

    forceReload = createAction( tr( "Force &Reload" ), Qt::Key_F5 );
    CONNECT_ACTION( forceReload, photoView, forceReload() );

    toggleFullscreen = createAction( tr( "Toggle F&ullscreen" ), Qt::Key_Return );
    CONNECT_ACTION( toggleFullscreen, photoView, toggleFullscreen() );

    quit = createAction( tr ( "&Quit" ), Qt::Key_Q );
    addShortcut( quit, Qt::Key_Escape );
    CONNECT_ACTION( quit, qApp, quit() );
}