181 } 182 183 @Override 184 protected Size staticCursor_getBestSize(int width, int height) { 185 NativeCursor cursor = NativePlatformFactory.getNativePlatform().getCursor(); 186 return cursor.getBestSize(); 187 } 188 189 @Override 190 public Pixels createPixels(int width, int height, ByteBuffer data) { 191 return new MonoclePixels(width, height, data); 192 } 193 194 @Override 195 public Pixels createPixels(int width, int height, IntBuffer data) { 196 return new MonoclePixels(width, height, data); 197 } 198 199 @Override 200 public Pixels createPixels(int width, int height, IntBuffer data, 201 float scale) { 202 return new MonoclePixels(width, height, data, scale); 203 } 204 205 @Override 206 protected int staticPixels_getNativeFormat() { 207 return platform.getScreen().getNativeFormat(); 208 } 209 210 @Override 211 public Robot createRobot() { 212 return new MonocleRobot(); 213 } 214 215 @Override 216 protected double staticScreen_getVideoRefreshPeriod() { 217 return 0.0; 218 } 219 220 @Override 221 protected Screen[] staticScreen_getScreens() { 222 Screen screen = null; 223 try { 224 NativeScreen ns = platform.getScreen(); 225 Constructor c = AccessController.doPrivileged( 226 new PrivilegedAction<Constructor>() { 227 @Override 228 public Constructor run() { 229 try { 230 Constructor c = Screen.class.getDeclaredConstructor( 231 Long.TYPE, 232 Integer.TYPE, 233 Integer.TYPE, Integer.TYPE, 234 Integer.TYPE, Integer.TYPE, 235 Integer.TYPE, Integer.TYPE, 236 Integer.TYPE, Integer.TYPE, 237 Integer.TYPE, Integer.TYPE, Float.TYPE); 238 c.setAccessible(true); 239 return c; 240 } catch (Exception e) { 241 e.printStackTrace(); 242 return null; 243 } 244 } 245 }); 246 if (c != null) { 247 screen = (Screen) c.newInstance( 248 1l, // dummy native pointer; 249 ns.getDepth(), 250 0, 0, ns.getWidth(), ns.getHeight(), 251 0, 0, ns.getWidth(), ns.getHeight(), 252 ns.getDPI(), ns.getDPI(), 253 ns.getScale()); 254 // Move the cursor to the middle of the screen 255 MouseState mouseState = new MouseState(); 256 mouseState.setX(ns.getWidth() / 2); 257 mouseState.setY(ns.getHeight() / 2); 258 MouseInput.getInstance().setState(mouseState, false); 259 } 260 } catch (Exception e) { 261 e.printStackTrace(); 262 } catch (UnsatisfiedLinkError e) { 263 e.printStackTrace(); 264 } 265 return new Screen[] { screen }; 266 } 267 268 @Override 269 public Timer createTimer(Runnable runnable) { 270 return new MonocleTimer(runnable); 271 } 272 273 @Override 274 protected int staticTimer_getMinPeriod() { 275 return MonocleTimer.getMinPeriod_impl(); 276 } 277 278 @Override 279 protected int staticTimer_getMaxPeriod() { 280 return MonocleTimer.getMaxPeriod_impl(); 281 } 282 283 public boolean hasWindowManager() { 284 return false; | 181 } 182 183 @Override 184 protected Size staticCursor_getBestSize(int width, int height) { 185 NativeCursor cursor = NativePlatformFactory.getNativePlatform().getCursor(); 186 return cursor.getBestSize(); 187 } 188 189 @Override 190 public Pixels createPixels(int width, int height, ByteBuffer data) { 191 return new MonoclePixels(width, height, data); 192 } 193 194 @Override 195 public Pixels createPixels(int width, int height, IntBuffer data) { 196 return new MonoclePixels(width, height, data); 197 } 198 199 @Override 200 public Pixels createPixels(int width, int height, IntBuffer data, 201 float scalex, float scaley) 202 { 203 return new MonoclePixels(width, height, data, scalex, scaley); 204 } 205 206 @Override 207 protected int staticPixels_getNativeFormat() { 208 return platform.getScreen().getNativeFormat(); 209 } 210 211 @Override 212 public Robot createRobot() { 213 return new MonocleRobot(); 214 } 215 216 @Override 217 protected double staticScreen_getVideoRefreshPeriod() { 218 return 0.0; 219 } 220 221 @Override 222 protected Screen[] staticScreen_getScreens() { 223 NativeScreen ns = platform.getScreen(); 224 Screen screen = new Screen(1l, // dummy native pointer; 225 ns.getDepth(), 226 0, 0, ns.getWidth(), ns.getHeight(), 227 0, 0, ns.getWidth(), ns.getHeight(), 228 0, 0, ns.getWidth(), ns.getHeight(), 229 ns.getDPI(), ns.getDPI(), 230 ns.getScale(), ns.getScale(), 231 ns.getScale(), ns.getScale()); 232 // Move the cursor to the middle of the screen 233 MouseState mouseState = new MouseState(); 234 mouseState.setX(ns.getWidth() / 2); 235 mouseState.setY(ns.getHeight() / 2); 236 MouseInput.getInstance().setState(mouseState, false); 237 return new Screen[] { screen }; 238 } 239 240 @Override 241 public Timer createTimer(Runnable runnable) { 242 return new MonocleTimer(runnable); 243 } 244 245 @Override 246 protected int staticTimer_getMinPeriod() { 247 return MonocleTimer.getMinPeriod_impl(); 248 } 249 250 @Override 251 protected int staticTimer_getMaxPeriod() { 252 return MonocleTimer.getMaxPeriod_impl(); 253 } 254 255 public boolean hasWindowManager() { 256 return false; |