- Standalone NativeWindow getScale/convert method w/o window creation. Here a given rectangular area shall be used to query the return the monitor/screen index with highest coverage and its pixel-scale. - Use fractional scale - Figure out how to receive pixel accurate mouse coordinates from mouse events on (OSX, AWT + NEWT) - Figure out how to round a fractional scale conversion and avoid distortion scaling pixel-viewport <-> window-viewport
(In reply to comment #0) > - Standalone NativeWindow getScale/convert method w/o window creation. > Here a given rectangular area shall be used to query the > return the monitor/screen index with highest coverage > and its pixel-scale. > > - Use fractional scale > > - Figure out how to receive pixel accurate mouse coordinates > from mouse events on (OSX, AWT + NEWT) > > - Figure out how to round a fractional scale conversion > and avoid distortion scaling pixel-viewport <-> window-viewport - Also ensure a change of pixel-size will be propagated to AWT elements. Note: On NEWT this feature already works.
1341fe0216e4f12d7243e98290cc97824b1c0b5c Add OSXUtil.GetPixelScale(final RectangleImmutable r, final int[] screenIndexOut)
commit 6516a52d3da5cced924db63b64af911d55355325: - Use float[2] for pixel-scale. Utilize simple integer rounding: int-pixel-units = (int) ( int-window-units * pixel-scale + 0.5f ) - Provide minimum and maximum allowed pixel-scale values to be set by platform, supporting generic pixel-scale validation. - Remove 'OSXUtil.GetPixelScale(final RectangleImmutable r, final int[] screenIndexOut)', implementation for all platforms would cause huge redundancy of Screen and MonitorDevice code (duplication of NEWT). - instead, add 'float[2] pixelScale' to NEWT's MonitorDevice - Detect change of pixel-scale and propagate accordingly. This allows GLCanvas, GLJPanel and NewtCanvasAWT instances to be dragged between monitor devices w/ different pixel-scale. - OSX: Handle native triggered reshape events off-thread to avoid EDT congestion due to locked window when consuming deferred events on EDT.