[Panorama Viewer] Highlight onMouseOver

This commit is contained in:
Thomas Zorroche 2021-01-24 12:29:49 +01:00 committed by Fabien Castan
parent 5755b3517e
commit 16c6244194
2 changed files with 89 additions and 27 deletions

View file

@ -39,6 +39,7 @@ AliceVision.FloatImageViewer {
root.defaultControlPoints();
root.setIdView(idView);
updateSfmPath();
updateMouseAreaPano();
return Image.Ready;
}
@ -81,6 +82,20 @@ AliceVision.FloatImageViewer {
ppRect.y = pp.y;
}
function rotatePanorama(dx, dy) {
//root.setRotationPano(dx, dy);
}
function updateMouseAreaPano() {
var coords = root.getMouseAreaPanoCoords()
console.warn("MOOUSE AREA" + coords)
rectPano.x = coords[0] + 25
rectPano.y = coords[1] + 25
rectPano.width = coords[2] - 25
rectPano.height = coords[3] - 25
}
onIsDistoViewerChanged: {
root.hasDistortion(isDistoViewer);
//Putting states back where they were
@ -135,15 +150,39 @@ AliceVision.FloatImageViewer {
}
clearBeforeLoad: true
property alias containsMouse: mouseArea.containsMouse
property alias mouseX: mouseArea.mouseX
property alias mouseY: mouseArea.mouseY
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
// Do not intercept mouse events, only get the mouse over information
acceptedButtons: Qt.NoButton
// property alias containsMouse: mouseArea.containsMouse
// property alias mouseX: mouseArea.mouseX
// property alias mouseY: mouseArea.mouseY
// MouseArea {
// id: mouseArea
// anchors.fill: parent
// hoverEnabled: true
// // Do not intercept mouse events, only get the mouse over information
// acceptedButtons: Qt.NoButton
// }
function isMouseOver(mx, my) {
return (mx > rectPano.x && mx < rectPano.x + rectPano.width
&& my > rectPano.y && my < rectPano.y + rectPano.height)
}
function getMouseCoordinates(mx, my) {
root.mouseOver(isMouseOver(mx, my))
}
/*
* Target Rectangle For Mouse Area Highlight
*/
Item {
id: containerMouseAreaPano
Rectangle {
id: rectPano
x: 0
y: 0
width: 0
height: 0
visible: false;
}
}
/*
@ -184,6 +223,7 @@ AliceVision.FloatImageViewer {
if (reinit){
points.recalculateCP();
points.generateControlPoints();
root.updateMouseAreaPano()
}
}
}

View file

@ -34,9 +34,9 @@ AliceVision.PanoramaViewer {
channelMode : AliceVision.PanoramaViewer.EChannelMode.RGBA
property alias containsMouse: mouseArea.containsMouse
property alias mouseX: mouseArea.mouseX
property alias mouseY: mouseArea.mouseY
property alias containsMouse: mouseAreaPano.containsMouse
property alias mouseX: mouseAreaPano.mouseX
property alias mouseY: mouseAreaPano.mouseY
property var mouseXClicked : 0
property var mouseYClicked : 0
@ -45,27 +45,49 @@ AliceVision.PanoramaViewer {
property var deltaMouseX: mouseXReleased-mouseXClicked
property var deltaMouseY: mouseYReleased-mouseYClicked
Item {
id: containerPanorama
Rectangle {
width: 3000
height: 1000
//color: mouseAreaPano.containsMouse? "red" : "green"
color: "grey"
MouseArea {
id: mouseAreaPano
anchors.fill: parent
hoverEnabled: true
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
onPositionChanged: {
for (var i = 0; i < repeater.model; i++)
{
repeater.itemAt(i).item.getMouseCoordinates(mouse.x, mouse.y);
}
}
onPressed:{
mouseXClicked=mouse.x
mouseYClicked=mouse.y
onPressed:{
mouseXClicked=mouse.x
mouseYClicked=mouse.y
}
onReleased: {
mouseXReleased=mouse.x
mouseYReleased=mouse.y
for (var i = 0; i < repeater.model; i++)
{
repeater.itemAt(i).item.rotatePanorama(deltaMouseX, deltaMouseY)
}
console.warn("Dx : " + deltaMouseX)
console.warn("Dy : " + deltaMouseY)
}
}
}
onReleased: {
mouseXReleased=mouse.x
mouseYReleased=mouse.y
console.warn("Dx : " + deltaMouseX)
console.warn("Dy : " + deltaMouseY)
}
}
property string sfmPath: ""
function updateSfmPath() {