Add automatic wrap scheme detection
This commit is contained in:
parent
5bfba85557
commit
c266e3cbd3
|
|
@ -56,7 +56,7 @@ Node {
|
||||||
}
|
}
|
||||||
|
|
||||||
property var monitorPlacements: {
|
property var monitorPlacements: {
|
||||||
const fovDetails = displays.fovDetails(viewportResolution[0], viewportResolution[1], viewportDiagonalFOVDegrees, effect.lensDistanceRatio);
|
const fovDetails = displays.fovDetails(screens, viewportResolution[0], viewportResolution[1], viewportDiagonalFOVDegrees, effect.lensDistanceRatio);
|
||||||
const monitorSpacing = 0.0;
|
const monitorSpacing = 0.0;
|
||||||
return displays.monitorsToPlacements(fovDetails, screens.map(screen => screen.geometry), monitorSpacing);
|
return displays.monitorsToPlacements(fovDetails, screens.map(screen => screen.geometry), monitorSpacing);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,20 @@ QtObject {
|
||||||
return 1.0;
|
return 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fovDetails(viewportWidth, viewportHeight, viewportDiagonalFOV, lensDistanceRatio) {
|
function actualWrapScheme(screens, viewportWidth, viewportHeight) {
|
||||||
|
const minX = Math.min(...screens.map(screen => screen.geometry.x));
|
||||||
|
const maxX = Math.max(...screens.map(screen => screen.geometry.x + screen.geometry.width));
|
||||||
|
const minY = Math.min(...screens.map(screen => screen.geometry.y));
|
||||||
|
const maxY = Math.max(...screens.map(screen => screen.geometry.y + screen.geometry.height));
|
||||||
|
|
||||||
|
if ((maxX - minX) / viewportWidth >= (maxY - minY) / viewportHeight) {
|
||||||
|
return 'horizontal';
|
||||||
|
} else {
|
||||||
|
return 'vertical';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function fovDetails(screens, viewportWidth, viewportHeight, viewportDiagonalFOV, lensDistanceRatio) {
|
||||||
const aspect = viewportWidth / viewportHeight;
|
const aspect = viewportWidth / viewportHeight;
|
||||||
const fovRadians = diagonalToCrossFOVs(degreeToRadian(viewportDiagonalFOV), aspect);
|
const fovRadians = diagonalToCrossFOVs(degreeToRadian(viewportDiagonalFOV), aspect);
|
||||||
const defaultDistanceVerticalRadians = 2 * Math.atan(Math.tan(fovRadians.vertical / 2) / displayDistanceDefault());
|
const defaultDistanceVerticalRadians = 2 * Math.atan(Math.tan(fovRadians.vertical / 2) / displayDistanceDefault());
|
||||||
|
|
@ -47,7 +60,7 @@ QtObject {
|
||||||
defaultDistanceHorizontalRadians,
|
defaultDistanceHorizontalRadians,
|
||||||
lensDistancePixels,
|
lensDistancePixels,
|
||||||
completeScreenDistancePixels,
|
completeScreenDistancePixels,
|
||||||
monitorWrappingScheme: 'horizontal', // or 'vertical' or 'none'
|
monitorWrappingScheme: actualWrapScheme(screens, viewportWidth, viewportHeight),
|
||||||
curvedDisplay: false // or true
|
curvedDisplay: false // or true
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue