Warning, /education/gcompris/src/activities/tangram/RotateMouseArea.qml is written in an unsupported language. File is not indexed.
0001 /* GCompris - tangram.qml
0002 *
0003 * SPDX-FileCopyrightText: 2016 Bruno Coudoin <bruno.coudoin@gcompris.net>
0004 *
0005 * Authors:
0006 * Yves Combe / Philippe Banwarth (GTK+ version)
0007 * Bruno Coudoin <bruno.coudoin@gcompris.net> (Qt Quick port)
0008 *
0009 * SPDX-License-Identifier: GPL-3.0-or-later
0010 */
0011 import QtQuick 2.12
0012 import QtGraphicalEffects 1.0
0013 import GCompris 1.0
0014
0015 import "../../core"
0016 import "tangram.js" as Activity
0017
0018 MouseArea {
0019 id: rotateArea
0020 anchors.fill: parent
0021 enabled: items.selectedItem && items.selectedItem.selected && items.selectedItem.rotable
0022 property double prevRotation: 0
0023 onPositionChanged: {
0024 var backPoint = background.mapFromItem(parent, mouseX, mouseY)
0025 // Calc the angle touch / object center
0026 var rotation = Activity.getAngleOfLineBetweenTwoPoints(
0027 items.selectedItem.x + items.selectedItem.width / 2, items.selectedItem.y +
0028 items.selectedItem.height / 2,
0029 backPoint.x, backPoint.y) * (180 / Math.PI)
0030 if(prevRotation) {
0031 items.selectedItem.rotation += rotation - prevRotation
0032 }
0033 prevRotation = rotation
0034 }
0035 onReleased: {
0036 prevRotation = 0
0037 // Force a modulo 45 rotation
0038 items.selectedItem.rotation = Math.floor((items.selectedItem.rotation + 45 / 2) / 45) * 45
0039 items.selectedItem.selected = false
0040 background.checkWin()
0041 }
0042 }