static Window createWindow( final Capabilities caps, final int x, final int y, final int width, final int height, final boolean onscreen, final boolean undecorated) throws InterruptedException { final boolean userPos = x >= 0 && y >= 0; // user has specified a position Assert.assertNotNull(caps); caps.setOnscreen(onscreen); // System.out.println("Requested: "+caps); // // Create native windowing resources .. X11/Win/OSX // final Window window = NewtFactory.createWindow(caps); Assert.assertNotNull(window); final Screen screen = window.getScreen(); final Display display = screen.getDisplay(); window.setUndecorated(onscreen && undecorated); if (userPos) { window.setPosition(x, y); } window.setSize(width, height); Assert.assertEquals(false, window.isNativeValid()); Assert.assertEquals(false, window.isVisible()); window.setVisible(true); // System.err.println("************* Created: "+window); Assert.assertEquals(true, display.isNativeValid()); Assert.assertEquals(true, screen.isNativeValid()); Assert.assertEquals(true, window.isVisible()); Assert.assertEquals(true, window.isNativeValid()); Assert.assertEquals(width, window.getWidth()); Assert.assertEquals(height, window.getHeight()); /** * we don't sync on position - unreliable test Point p0 = window.getLocationOnScreen(null); * Assert.assertEquals(p0.getX(), window.getX()); Assert.assertEquals(p0.getY(), window.getY()); * if(userPos) { Assert.assertEquals(x, window.getX()); Assert.assertEquals(y, window.getY()); } */ final CapabilitiesImmutable chosenCapabilities = window.getGraphicsConfiguration().getChosenCapabilities(); Assert.assertNotNull(chosenCapabilities); Assert.assertTrue(chosenCapabilities.getGreenBits() >= 5); Assert.assertTrue(chosenCapabilities.getBlueBits() >= 5); Assert.assertTrue(chosenCapabilities.getRedBits() >= 5); Assert.assertEquals(chosenCapabilities.isOnscreen(), onscreen); return window; }
static void destroyWindow(final Window window, final boolean last) { if (null == window) { return; } final Screen screen = window.getScreen(); final Display display = screen.getDisplay(); window.destroy(); // System.err.println("************* Destroyed: "+window); if (last) { Assert.assertEquals(false, screen.isNativeValid()); Assert.assertEquals(false, display.isNativeValid()); } else { Assert.assertEquals(true, screen.isNativeValid()); Assert.assertEquals(true, display.isNativeValid()); } Assert.assertEquals(false, window.isNativeValid()); Assert.assertEquals(false, window.isVisible()); }
public void setCursor(PImage image, int hotspotX, int hotspotY) { final Display disp = window.getScreen().getDisplay(); disp.createNative(); // BufferedImage jimg = (BufferedImage)image.getNative(); // IntBuffer buf = IntBuffer.wrap(jimg.getRGB(0, 0, jimg.getWidth(), jimg.getHeight(), // null, 0, jimg.getWidth())); // // final PixelRectangle pixelrect = new PixelRectangle.GenericPixelRect(srcFmt, new // Dimension(width, height), // srcStrideBytes, srcIsGLOriented, srcPixels); // // PointerIcon pi = disp.createPointerIcon(PixelRectangle pixelrect, // hotspotX, // hotspotY); // // window.setPointerIcon(pi); }
public SWTEDTUtil( final com.jogamp.newt.Display newtDisplay, org.eclipse.swt.widgets.Display swtDisplay) { this.threadGroup = Thread.currentThread().getThreadGroup(); this.name = Thread.currentThread().getName() + "-SWTDisplay-" + newtDisplay.getFQName() + "-EDT-"; this.dispatchMessages = new Runnable() { public void run() { ((jogamp.newt.DisplayImpl) newtDisplay).dispatchMessages(); } }; this.swtDisplay = swtDisplay; this.nedt = new NewtEventDispatchThread(threadGroup, name); this.nedt.setDaemon(true); // don't stop JVM from shutdown .. }
protected void initScreen() { display = NewtFactory.createDisplay(null); display.addReference(); screen = NewtFactory.createScreen(display, 0); screen.addReference(); monitors = new ArrayList<MonitorDevice>(); GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] awtDevices = environment.getScreenDevices(); List<MonitorDevice> newtDevices = screen.getMonitorDevices(); // AWT and NEWT name devices in different ways, depending on the platform, // and also appear to order them in different ways. The following code // tries to address the differences. if (PApplet.platform == PConstants.LINUX) { for (GraphicsDevice device : awtDevices) { String did = device.getIDstring(); String[] parts = did.split("\\."); String id1 = ""; if (1 < parts.length) { id1 = parts[1].trim(); } MonitorDevice monitor = null; int id0 = newtDevices.size() > 0 ? newtDevices.get(0).getId() : 0; for (int i = 0; i < newtDevices.size(); i++) { MonitorDevice mon = newtDevices.get(i); String mid = String.valueOf(mon.getId() - id0); if (id1.equals(mid)) { monitor = mon; break; } } if (monitor != null) { monitors.add(monitor); } } } else { // All the other platforms... for (GraphicsDevice device : awtDevices) { String did = device.getIDstring(); String[] parts = did.split("Display"); String id1 = ""; if (1 < parts.length) { id1 = parts[1].trim(); } MonitorDevice monitor = null; for (int i = 0; i < newtDevices.size(); i++) { MonitorDevice mon = newtDevices.get(i); String mid = String.valueOf(mon.getId()); if (id1.equals(mid)) { monitor = mon; break; } } if (monitor == null) { // Didn't find a matching monitor, try using less stringent id check for (int i = 0; i < newtDevices.size(); i++) { MonitorDevice mon = newtDevices.get(i); String mid = String.valueOf(mon.getId()); if (-1 < did.indexOf(mid)) { monitor = mon; break; } } } if (monitor != null) { monitors.add(monitor); } } } }