Skip to content
Snippets Groups Projects
Select Git revision
  • cf00c0afbaf604fdfe215e7f62072c3635eccc91
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • release/201811
  • release/201808
  • releases/beta1
  • packaging
  • native
  • release-0.2.x
  • 1.0.0
  • 0.2.0
  • 0.1.1
  • 0.1.0
25 results

avatargraphicsview.cpp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    avatargraphicsview.cpp 2.21 KiB
    /**************************************************************************
    * Copyright (C) 2018 by Savoir-faire Linux                           *
    * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>                      *
    *                                                                         *
    * This program is free software; you can redistribute it and/or modify    *
    * it under the terms of the GNU General Public License as published by    *
    * the Free Software Foundation; either version 3 of the License, or       *
    * (at your option) any later version.                                     *
    *                                                                         *
    * This program is distributed in the hope that it will be useful,         *
    * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
    * GNU General Public License for more details.                            *
    *                                                                         *
    * You should have received a copy of the GNU General Public License       *
    * along with this program.  If not, see <https://www.gnu.org/licenses/>.   *
    **************************************************************************/
    
    #include "avatargraphicsview.h"
    
    AvatarGraphicsView::AvatarGraphicsView(QWidget* parent)
        : QGraphicsView(parent)
    {
        setDragMode(QGraphicsView::ScrollHandDrag);
    }
    
    void
    AvatarGraphicsView::wheelEvent(QWheelEvent* event)
    {
        QPoint numSteps = event->angleDelta() / (8*15);
    
        if (!numSteps.isNull()) {
            zoomImage(numSteps);
        }
        event->accept();
    }
    
    void
    AvatarGraphicsView::zoomImage(const QPoint& steps)
    {
        steps.y() == 1 ? scale(zoomIncrement_, zoomIncrement_) : scale(1 / zoomIncrement_, 1 / zoomIncrement_);
    }
    
    void
    AvatarGraphicsView::paintEvent(QPaintEvent* e)
    {
        QGraphicsView::paintEvent(e);
        QPainter painter(viewport());
    
        QPainterPath square;
        QPainterPath circle;
    
        square.addRect(0, 0, width(), height());
        circle.addEllipse(QPoint(width() / 2 - 0.5, height() / 2 - 0.5), circleSize_ + 1, circleSize_ + 1);
    
        painter.setOpacity(0.3);
    
        painter.fillPath(square.subtracted(circle), QBrush(QColor(Qt::black)));
    }