Warning, /education/analitza/declarative/qml/Graph2D.qml is written in an unsupported language. File is not indexed.

0001 /*************************************************************************************
0002  *  Copyright (C) 2013-2017 by Aleix Pol <aleixpol@kde.org>                          *
0003  *                                                                                   *
0004  *  This program is free software; you can redistribute it and/or                    *
0005  *  modify it under the terms of the GNU General Public License                      *
0006  *  as published by the Free Software Foundation; either version 2                   *
0007  *  of the License, or (at your option) any later version.                           *
0008  *                                                                                   *
0009  *  This program is distributed in the hope that it will be useful,                  *
0010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of                   *
0011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                    *
0012  *  GNU General Public License for more details.                                     *
0013  *                                                                                   *
0014  *  You should have received a copy of the GNU General Public License                *
0015  *  along with this program; if not, write to the Free Software                      *
0016  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA   *
0017  *************************************************************************************/
0018 
0019 import QtQuick 2.0
0020 import org.kde.analitza 1.0
0021 
0022 Graph2DView {
0023     id: view
0024     anchors.fill: parent
0025 
0026     showGrid: true
0027     ticksShown: true
0028 
0029     PinchArea {
0030         anchors.fill: parent
0031         property double thePreviousScale: 1
0032 
0033         function distance(p1, p2)
0034         {
0035             var w=p2.x-p1.x
0036             var h=p2.y-p1.y
0037             return Math.sqrt(w*w+h*h)
0038         }
0039 
0040         onPinchStarted: thePreviousScale=1
0041 
0042         onPinchUpdated: pinch => {
0043             var currentDistance = distance(pinch.point1, pinch.point2)
0044             if(currentDistance>0) {
0045                 var doScale = thePreviousScale/pinch.scale
0046                 view.scale(doScale, pinch.center.x, pinch.center.y)
0047                 thePreviousScale = pinch.scale
0048             }
0049         }
0050 
0051         MouseArea {
0052             id: mouse
0053             anchors.fill: parent
0054             property int lastX: 0
0055             property int lastY: 0
0056             acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton
0057 
0058             onPressed: mouse => { lastX=mouse.x; lastY=mouse.y }
0059 
0060             onPositionChanged: mouse => {
0061                 view.translate(mouse.x-lastX, mouse.y-lastY)
0062 
0063                 lastX=mouse.x
0064                 lastY=mouse.y
0065             }
0066 
0067             onWheel: wheel => {
0068                 view.scale(wheel.angleDelta.y>0 ? 0.9 : 1.1, wheel.x, wheel.y)
0069             }
0070         }
0071     }
0072 }