Add automatic wrap scheme detection
This commit is contained in:
parent
5bfba85557
commit
c266e3cbd3
|
|
@ -56,7 +56,7 @@ Node {
|
|||
}
|
||||
|
||||
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;
|
||||
return displays.monitorsToPlacements(fovDetails, screens.map(screen => screen.geometry), monitorSpacing);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,20 @@ QtObject {
|
|||
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 fovRadians = diagonalToCrossFOVs(degreeToRadian(viewportDiagonalFOV), aspect);
|
||||
const defaultDistanceVerticalRadians = 2 * Math.atan(Math.tan(fovRadians.vertical / 2) / displayDistanceDefault());
|
||||
|
|
@ -47,7 +60,7 @@ QtObject {
|
|||
defaultDistanceHorizontalRadians,
|
||||
lensDistancePixels,
|
||||
completeScreenDistancePixels,
|
||||
monitorWrappingScheme: 'horizontal', // or 'vertical' or 'none'
|
||||
monitorWrappingScheme: actualWrapScheme(screens, viewportWidth, viewportHeight),
|
||||
curvedDisplay: false // or true
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue