/** * Returns the {@link MonitorDevice} with the highest {@link MonitorDevice#getViewportInWindowUnits() viewport} * {@link RectangleImmutable#coverage(RectangleImmutable) coverage} of the given rectangle in window units. * <p> * If no coverage is detected the first {@link MonitorDevice} is returned. * </p> * @param r arbitrary rectangle in window units */ public final MonitorDevice getMainMonitor(final RectangleImmutable r) { MonitorDevice res = null; float maxCoverage = Float.MIN_VALUE; final List<MonitorDevice> monitors = getMonitorDevices(); for(int i=monitors.size()-1; i>=0; i--) { final MonitorDevice monitor = monitors.get(i); final float coverage = monitor.getViewportInWindowUnits().coverage(r); if( coverage > maxCoverage ) { maxCoverage = coverage; res = monitor; } } if( maxCoverage > 0.0f && null != res ) { return res; } return monitors.get(0); }
/** * Returns the {@link MonitorDevice} with the highest {@link MonitorDevice#getViewportInWindowUnits() viewport} * {@link RectangleImmutable#coverage(RectangleImmutable) coverage} of the given rectangle in window units, * which is not a {@link MonitorDevice#isClone() clone}. * <p> * If no coverage is detected the first {@link MonitorDevice} is returned. * </p> * @param r arbitrary rectangle in window units */ public final MonitorDevice getMainMonitor(final RectangleImmutable r) { MonitorDevice res = null; float maxCoverage = Float.MIN_VALUE; final List<MonitorDevice> monitors = getMonitorDevices(); final int monitorCount = monitors.size(); for(int i=0; i<monitorCount; i++) { final MonitorDevice monitor = monitors.get(i); if( !monitor.isClone() ) { final float coverage = monitor.getViewportInWindowUnits().coverage(r); if( coverage > maxCoverage ) { maxCoverage = coverage; res = monitor; } } } if( maxCoverage > 0.0f && null != res ) { return res; } return monitors.get(0); }
final RectangleImmutable viewWU = monitors.get(i).getViewportInWindowUnits(); x1WU = Math.min(x1WU, viewWU.getX()); x2WU = Math.max(x2WU, viewWU.getX() + viewWU.getWidth());
final RectangleImmutable viewWU = monitors.get(i).getViewportInWindowUnits(); x1WU = Math.min(x1WU, viewWU.getX()); x2WU = Math.max(x2WU, viewWU.getX() + viewWU.getWidth());
data[idx++] = monitorDevice.getViewport().getWidth(); data[idx++] = monitorDevice.getViewport().getHeight(); data[idx++] = monitorDevice.getViewportInWindowUnits().getX(); data[idx++] = monitorDevice.getViewportInWindowUnits().getY(); data[idx++] = monitorDevice.getViewportInWindowUnits().getWidth(); data[idx++] = monitorDevice.getViewportInWindowUnits().getHeight(); data[idx++] = monitorDevice.getCurrentMode().getId(); data[idx++] = monitorDevice.getCurrentMode().getRotation();
data[idx++] = monitorDevice.getViewport().getWidth(); data[idx++] = monitorDevice.getViewport().getHeight(); data[idx++] = monitorDevice.getViewportInWindowUnits().getX(); data[idx++] = monitorDevice.getViewportInWindowUnits().getY(); data[idx++] = monitorDevice.getViewportInWindowUnits().getWidth(); data[idx++] = monitorDevice.getViewportInWindowUnits().getHeight(); data[idx++] = monitorDevice.getCurrentMode().getId(); data[idx++] = monitorDevice.getCurrentMode().getRotation();