summaryrefslogtreecommitdiffstats
path: root/src/newt/classes/com
Commit message (Collapse)AuthorAgeFilesLines
* Bug 742 HiDPI: [Core API Change] Distinguish window-units and pixel-units: ↵Sven Gothel2014-05-236-40/+79
| | | | | | | | | | | | | | | Refine commit fb57c652fee6be133990cd7afbbd2fdfc084afaa - NEWT Screen, Monitor, MonitorMode, .. - All Units are in pixel units, not window units! - On OSX HiDPI, we report the current scaled monitor resolution, instead of the native pixel sized. Need to filter out those, i.e. report only native unscaled resolutions, since out MonitorMode analogy is per MonitorDevice and not per window! - Fix usage (one by one) of - Screen and Monitor viewport usage
* Bug 742 HiDPI: [Core API Change] Distinguish window-units and pixel-units: ↵Sven Gothel2014-05-228-27/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refine commit f9a00b91dcd146c72a50237b62270f33bd0da98e - Using comment tag 'FIXME HiDPI' to locate remaining issues - Fix remaining 'getPixel*(..)' -> 'getSurface*(..)' - UpstreamSurfaceHook - Fix usage (one by one) of - NativeWindow: getWindowWidth() / getWindowHeight() - NativeSurface/GLDrawable: getSurfaceWidth() / getSurfaceHeight() - mention window- or pixel units in API doc where required - use 'setSurfaceSize(..)' where appropriate to match 'getSurface*()' - GLFBODrawable - GLOffscreenAutoDrawable - UpstreamSurfaceHook.MutableSize - NativeWindow's Point: Add API doc and 'Point scaleInv(..)' - NativeSurface Simplify new conversion methods and use single in-place storage - 'int[] getWindowUnitXY(int[], int[])' -> 'int[] convertToWindowUnits(int[], int[])' - 'int[] getPixelUnitXY(int[], int[])' -> 'int[] convertToPixelUnits(int[], int[])' - NEWT Screen/Monitor - Assume screen/window units - TODO: Refine semantics - Monitor resolution probably is in pixel units ?! - Including the Rectangle/Monitor association etc etc - NEWT Window - Add setSurfaceSize(..) for convenience - Add 'Point convertToWindowUnits(final Point pixelUnitsAndResult)', etc .. - All window ops are using window units (size, pos, ..), but methods operating on the surface/drawable: windowRepaint(..) .. - TODO: Consider changing method names 'window*(..)' to 'surface*(..)' actually operating on surface/drawable - Window.windowRepaint(..) - GLAutoDrawableDelegate.windowResizedOp(..) (maybe all similar methods in here) - NEWT Mouse/Pointer Events - Using pixel units
* Bug 742 HiDPI: [Core API Change] Distinguish window-units and pixel-units; ↵Sven Gothel2014-05-219-48/+115
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add HiDPI for AWT GLCanvas w/ OSX CALayer Core API Change: To support HiDPI thoroughly in JOGL (NativeWindow, JOGL, NEWT) we need to separate window- and pixel units. NativeWindow and NativeSurface now have distinguished access methods for window units and pixel units. NativeWindow: Using window units - getWindowWidth() * NEW Method * - getWindowHeight() * NEW Method * - getX(), getY(), ... NativeSurface: Using pixel units - getWidth() -> getSurfaceWidth() * RENAMED * - getHeight() -> getSurfaceHeight() * RENAMED * GLDrawable: Using pixel units - getWidth() -> getSurfaceWidth() * RENAMED, aligned w/ NativeSurface * - getHeight() -> getSurfaceHeight() * RENAMED, aligned w/ NativeSurface * Above changes also removes API collision w/ other windowing TK, e.g. AWT's getWidth()/getHeight() in GLCanvas and the same method names in GLDrawable before this change. +++ Now preliminary 'working': - AWT GLCanvas - AWT GLJPanel Tested manually on OSX w/ and w/o HiDPI Retina: java com.jogamp.opengl.test.junit.jogl.demos.es2.awt.TestGearsES2AWT -manual -noanim -time 1000000 java com.jogamp.opengl.test.junit.jogl.demos.es2.awt.TestGearsES2GLJPanelAWT -manual -noanim -time 1000000 +++ TODO: - NEWT - Change Window.setSize(..) to use pixel units ? - OSX HiDPI support - Testing .. - API refinement
* Minor edits: Fix comments / API-docsSven Gothel2014-05-191-1/+1
|
* NEWT MouseEvent: Decouple pointerIds from single-pointer button, i.e. always ↵Sven Gothel2014-04-091-23/+9
| | | | | | | | | | | | | | use proper pointerId >= 0 In case of single-pointer mouse events, always use pointerId 0, don't derive from button name. Multiple pointer events still derive button name from the 'action' pointerId. This allows applications to utilize pointerId equally for single and multiple pointer events. Passed all 'junit.run.newt.event' unit tests
* PinchToZoomGesture: Add 'delta' value [-1..1], move 'InputEvent trigger' up ↵Sven Gothel2014-04-092-12/+44
| | | | to GestureHandler
* NEWT Events: Use final .. (minor edit)Sven Gothel2014-04-059-48/+52
|
* NEWT: Minor editsSven Gothel2014-03-161-17/+17
|
* NEWT MonitorDevice: Add convenient getPixelsPerMM(..) method to retrieve the ↵Sven Gothel2014-03-011-1/+27
| | | | pixels-per-millimeter (Requires manual Conversion to dpi)
* Fix whitespaces of commit 78fcb8228d4a391054501aef16eb0462322ba39d and ↵Sven Gothel2014-02-251-6/+6
| | | | WindowImpl comment
* Merge remote-tracking branch 'petros-koutsolampros/master'Sven Gothel2014-02-251-11/+23
|\
| * A more wholesome solution to the windowing problems in OSX. As describedPetros Koutsolampros2014-02-251-11/+23
| | | | | | in bug https://jogamp.org/bugzilla/show_bug.cgi?id=969
* | Bug 937 : Fix regression of commit 071bdd6ce9f8c41ccecdbf8bc74f276ccd7ff651 ↵Sven Gothel2014-02-251-2/+2
|/ | | | | | | | | | (which disables print if !isShowing()) Commit 071bdd6ce9f8c41ccecdbf8bc74f276ccd7ff651 uses 'isShowing' state to determine whether to display or not. It also uses 'isShowing' instead of 'isVisible' for printing, which is a regression, since not showing elements offscreen shall be able to be printed.
* SurfaceUpdatedListener: Order methods in impl. Class; ↵Sven Gothel2014-02-131-20/+20
| | | | SurfaceUpdatedListener: Mark methods final, use volatile 'isEmpty' to bail out early @ surfaceUpdated.
* JOGLNewtApplet3Run: Don't set position if normal child window.v2.1.4Sven Gothel2014-01-311-1/+0
|
* Adapt to new plugin3 / Use browser window's location on screen for top-level ↵Sven Gothel2014-01-312-24/+56
| | | | window.
* NewtFactory: Cleanup / createWindow(..) w/ parentWindow variant shall fall ↵Sven Gothel2014-01-311-11/+6
| | | | back to top-level ctor if parentWindow is null
* NEWT: Add Support for AWT-Less Applet3Sven Gothel2014-01-304-8/+563
| | | | | | - Adding 'plugin3-public' jar and sources for Applet3 support, copied from icedtea-web3 - Added com.jogamp.newt.util.applet.JOGLNewtApplet3Run capable to run Applet3
* NewtFactory: Fix createWindow(..) ctor w/ given native window handle (use ↵Sven Gothel2014-01-301-8/+10
| | | | displayConnection string and screen-idx)
* NEWT Window: Add API Doc for Custom Window IconsSven Gothel2014-01-302-0/+16
|
* JOGLNewtAppletBase: Typo of new PNG icons .. used AE's 'gray' instead of ↵Sven Gothel2014-01-121-1/+1
| | | | | | BE's 'grey', which is used for the filename Same as 42d3b31d1becd8eb8e2847c87e14e47e15e730cd
* Bug 937 - JAWTWindow: Unsatisfying Visibility ComputationSven Gothel2014-01-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Simplify JAWTComponentListener's HierarchyListener: - Don't interfere w/ Component's visibility anymore! This shall reduce sideeffects. Utilize 'isShowing' in each Component specialization, i.e. GLCanvas. - On SHOWING_CHANGED if a parent caused a change of the tracked components showing state, propagate it to the offscreen-layer! - Remove all other complicated states! GLCanvas, GLJPanel: - Instead of 'isVisible()' use 'showing state', since only the 'showing state' reflects 'true' visibility throughout the hierarchy. - Add HierarchyListener and track volatile showing state to be used instead of 'isVisible'. Using a cached showing state is more efficient than quering 'isShowing()' all the time! NewtCanvasAWT: - Use 'isShowing()' instead of 'isVisible(), see above
* Bug 676: Use proper pointer icon images (artwork)Sven Gothel2014-01-091-2/+2
| | | | .. shameless inspired by KDE's Oxgen scheme .. (they are best)
* Bug 935: NEWT PointerIcon: Utilize Toolkit Agnostic PixelFormat and ↵Sven Gothel2014-01-082-22/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conversion Utilities (Allowing 'arbitrary' PointerIcon data input) Commit fe28bc125429b38cdcd016746081f4a6d521c6fd added the notion of toolkit agnostic PixelFormat and conversion utilities, utilized and further tested by this patch. +++ - PointerIcon is a PixelRectangle and hence holds the decoded data. This allows on-the-fly conversion if required as well as recreation w/o PNG re-decoding. - Using array-backed PointerIcon data where possible, allowing better performance when converting PixelFormat etc. - NEWT Display adds 'createPointerIcon(final IOUtil.ClassResources pngResource...' method to support agnostic PointerIcon creation. - NEWT Display adds methods to allow users to avoid PixelFormat and Buffer NIO type forced conversion: - PixelFormat getNativePointerIconPixelFormat() - boolean getNativePointerIconForceDirectNIO() +++ PNGImage -> PNGPixelRect Deleted: com.jogamp.opengl.util.texture.spi.PNGImage Added: com.jogamp.opengl.util.PNGPixelRect (We hope nobody was using PNGImage directly since it was a service-plugin for TextureIO) PNGPixelRect is a PixelRectangle PNGPixelRect actually is implemented OpenGL agnostic, however - since our PNGJ support lives under package 'jogamp.opengl.util.pngj' it cannot be moved up (yet). PNGPixelRect now handles all PixelFormat for the target format and also added support for grayscale+alpha (2 channels). The latter is force-converted to RGB* - similar to paletted. Further more, PNGPixelRect allows simply passing an OutputStream to write the PNG data. Used by: TextureIO and NEWT +++ - OffscreenSurfaceLayer's setCursor(..) uses the agnostic PixelRectangle instead of a PNG resource. - AWTMisc uses the PixelRectangle to produce the AWT Cursor and converts it to the required format. Hence same pixels are used for NEWT and AWT pointer/cursor icon. - TestGearsES2Newt and NewtAWTReparentingKeyAdapter 'tests' iterate over 3 custom PointerIcon when pressed 'c'. - JOGLNewtAppletBase uses the new custom PointerIcon 'newt/data/crosshair-lumina-trans-32x32.png', which is included in NEWT (213 bytes only). -
* JOGLNewtAppletBase Default Key-Action: Add 'j' for setPointerConfined() .. ↵Sven Gothel2014-01-041-0/+9
| | | | i.e. 'jailed'
* Bug 935: NEWT PointerIcon: Refine Spec and Implementation / Fix OSX Crash ↵Sven Gothel2014-01-041-14/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and Issues - Refine Display.PointerIcon: Complete type allowing re-creation - Add associated Display reference - Add used IOUtil.ClassResources reference - Add isValid()/validate() methods for recreation - Refine API doc - Move Display.destroyPointerIcon(PointerIcon) -> PointerIcon.destroy() - Move DisplayImpl.PointerIconImpl -> PointerIconImpl (own source file) - Creation/Destruction and setting of PointerIcon happens on EDT - DisplayImpl.shutdownAll() and Display.destroy() calls destroyAllPointerIconFromList - WindowDriver.setPointerIconImpl: Validates PointerIconImpl (i.e. re-creates if required) - Fix 'initial' window.setPointerIcon(..) before createNative(..), tested w/ TestGearsES2NEWT - OSX Native Code: - Move mouse and pointer-state handling from NewtMacWindow -> NewtView class to retain states (pointer handle, pointer visibility, etc) when reparenting. Reparenting will move an exisiting NewtView into a new NewtMacWindow. - Enable all mouse move events: - NewtView::mouseEnter [nsWin makeFirstResponder: nsView]; - NewtView::mouseExited if( !mouseConfined ) { [nsView resignFirstResponder]; } - NewtView::mouseMoved issued [myCurser set] if required, fixing OSX issue not updating NSCursor properly. - MacWindow: - Test NewtMacWindow, NewtView and NSCursor handles before usage - Fix DBG_PRINT(..) warnings
* Bug 935: NEWT PointerIcon: Add size, hotspot 'getter' and String representationSven Gothel2013-12-311-1/+11
| | | | PointerIcon's size and hotspot maybe be useful for certain user-app calculation.
* Bug 935: NEWT: Expose Pointer Icons Feature in JOGLNewtAppletBase TestsSven Gothel2013-12-311-19/+66
|
* Bug 934, Bug 935: NEWT: Add support for custom Application/Window and ↵Sven Gothel2013-12-314-4/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | Pointer Icons - Utilizing JOGL's PNG decoder for all icons, if available. - Application/window icons: - Providing default application/window icons in 16x16 and 32x32 size - NewtFactory.setWindowIcons(..) or property 'newt.window.icons' maybe used to override default icons. - Using icons at application/window instantiation - Display.PointerIcons: - NativeWindow Win32 WindowClass no more references a default cursor in favor of fine grained cursor control [in NEWT] - Display provides create/destroy methods, where display destruction also releases open PointerIcon references. - Window.setPointerIcon(..) sets custom PointerIcon - Implemented Platforms - X11 - Windows - OSX - Manual Test: TestGearsES2NEWT (Press 'c')
* NEWT Cleanup - Remove Type Casts and OSX Newt/Fmod Workaround (Early ↵Sven Gothel2013-12-312-12/+7
| | | | WindowImpl initialization)
* Bug 922 (2/2): NEWT Window.reparentWindow(..): Use ↵Sven Gothel2013-12-113-8/+9
| | | | REPARENT_HINT_BECOMES_VISIBLE to ensure GL State Preservation ; Add unit test !
* Bug 922 (1/2): NEWT Window.reparentWindow(..): Provide ↵Sven Gothel2013-12-112-1/+29
| | | | | | | | | | | | REPARENT_HINT_BECOMES_VISIBLE hint via new method variant using hints; Deprecate other reparentWindow(..) variants w/o hints. NEWT Window.reparentWindow(..): Provide REPARENT_HINT_BECOMES_VISIBLE hint via new method variant using hints: - Add REPARENT_HINT_FORCE_RECREATION, covering 'old' forceDestroyCreate boolean argument - Add REPARENT_HINT_BECOMES_VISIBLE, Claim window becomes visible after reparenting, which is important for e.g. preserving the GL-states in case window is invisible while reparenting. Deprecate other reparentWindow(..) variants w/o hints. Use only new variant using hints w/o semantical change.
* Bug 904: 'User Vertical Flip' for GLJPanel w/o vertical flip must be ↵Sven Gothel2013-12-101-1/+1
| | | | considered in AWTTilePainter: 'Origin of GL image is still on Bottom'
* Workaround Bug 910 (IcedTea-Web): NewtCanvasAWT shall postpone JAWTWindow ↵Sven Gothel2013-11-252-20/+25
| | | | | | | | | | | | | | | | | destruction via explicit set flag. IcedTea-Web_1.5pre+rbc73a1362e9c still issues NewtCanvasAWT.removeNotify() before before Applet.destroy(), i.e. removes NewtCanvasAWT from the Container ahead of time (Applet protocol destroy()). However, it fixes the non AWT-EDT issue, i.e. calls NewtCanvasAWT.removeNotify() from the actual AWT-EDT - good. Since the root cause still exist, we cannot use heuristics as described in Bug 910 comment 9, but need to set a flag in NewtCanvasAWT to skip JAWT destruction and remove it latter within Applet.destroy(). NewtCanvasAWT.removeNotify.0 - isApplet true @ [AWT-EventQueue-0, isAWT-EDT true]
* Bug 672 (NewtCanvasSWT): Reuse SWTAccessor.isOS_TYPE ; Impl ↵Sven Gothel2013-11-251-18/+24
| | | | | | | | | | | | | | | | | | | | | NW.getLocationOnScreen(..) for X11 and Windows ; Allow unit test to run on all platforms. - Reuse SWTAccessor.isOS_TYPE (public now) - Impl NW.getLocationOnScreen(..) for X11 and Windows reusing existing native code - Allow unit test to run on all platforms. Note: NewtCanvasSWT unit tests require a 'wait for realized' while SWT dispatching. Otherwise the 'sash unit test' will fail since realiziation happens later, at least on X11. Hence extended AWTRobotUtil.waitForRealized(..) to use a 'waitAction' which is used here w/ special SWT dispatch Runnable. AWTRobotUtil.waitForRealized(..) operates on time-delta instead of iteration-counter, allowing above 'waitAction' Runnable. AWTRobotUtil.waitForRealized(..) removed 2nd 'glad.isRealized()' loop ..
* Bug 672 (NewtCanvasSWT ignore windowing offset on OSX').Petros Koutsolampros2013-11-241-1/+6
| | | | | | | | | | | The NewtCanvasSWT is now brought into place by the parent SWT Composite and the super SWT Canvas it extends. Also added two test cases. One with a simple SashForm and the NewtCanvasSWT in the second cell, and another with the NewtCanvasSWT in a Composite, that Composite now in the second cell of the SashForm. The second test is necessary because the NewtCanvasSWT does not receive SWT.Resize events in this configuration, but only SWT.Paint ones (a behaviour inherited from the super SWT Canvas)
* Workaround Bug 910 (IcedTea-Web): NewtCanvasAWT shall postpone JAWTWindow ↵Sven Gothel2013-11-231-29/+88
| | | | destruction if removeNotify() is called from non AWT-EDT
* JOGLNewtAppletBase's add/remove 'reparentHome WindowListener' at start()/stop()Sven Gothel2013-11-231-20/+21
|
* JOGLNewtApplet1Run: Perform AWT Operations on AWT-EDT ; Remove redundant ↵Sven Gothel2013-11-231-32/+54
| | | | explicit call to reparentWindow(null) @ destroy
* JOGLNewtAppletBase's windowDestroyNotify(): Double check 'awtParent' before ↵Sven Gothel2013-11-231-12/+13
| | | | reparenting 'back to parent'
* NewtCanvasAWT: Remove useless block in else branchSven Gothel2013-11-181-6/+3
|
* jogl: push other call to clearGlobalFocus to the AWT EDTHarvey Harrison2013-11-181-1/+1
| | | | | | | | | Follow-on to commit: d544c839f6df10f20977c786a446833f3aa7ef13 (jogl: do the clearGlobalFocusOwner() call on the AWT EDT in NewtCanvasAWT) Likely this won't hurt anything. Signed-off-by: Harvey Harrison <[email protected]>
* jogl: do the clearGlobalFocusOwner() call on the AWT EDT in NewtCanvasAWTHarvey Harrison2013-11-181-1/+9
| | | | | | | Otherwise we can deadlock in the native focusrequest calls from the AWT thread, see bug 879 for the details. Signed-off-by: Harvey Harrison <[email protected]>
* jogl: simplify conditional that repeats test for isOnScreenHarvey Harrison2013-11-181-1/+2
| | | | | | | | | | | | if (isOnscreen) else if (!isOnScreen) change to if (isOnscreen) else Signed-off-by: Harvey Harrison <[email protected]>
* jogl: add missing @Override annotation in NewtCanvasAWTHarvey Harrison2013-11-181-0/+2
| | | | Signed-off-by: Harvey Harrison <[email protected]>
* Fix Bug 893 - NewtCanvasAWT Lifecycle Race Condition (NPE on shutdown ↵Sven Gothel2013-11-181-162/+185
| | | | | | periodically) As suggested: Employ synchronization on lifecycle actions _and_ perform destroyImpl(..) always on AWT-EDT to avoid a deadlock.
* NewtCanvasAWT: Add method of 'isAWTEventPassThrough()', used in unit tests ↵Sven Gothel2013-11-181-0/+14
| | | | to fix event validation for offscreen mode (OSX/CALayer)
* NEWT AWTAdapter*: Don't act if not setup (due to lazy setup mode), refines ↵Sven Gothel2013-11-184-2/+27
| | | | commit 5c6c11abf643013976ecbc0df463a923a1f52696
* NewtCanvasAWT: Use final AWT[Key|Mouse]Adapter and set downstream lazily; ↵Sven Gothel2013-11-181-19/+32
| | | | Consume AWT KeyEvents in downstream mode; Test respects 'consumed' key events.
* NEWT AWTAdapter: Add notion of consuming the AWT InputEvent (will be used ↵Sven Gothel2013-11-184-49/+127
| | | | for key events); Allow AWTAdapter to be lazily setup w/ downstream object.