summaryrefslogtreecommitdiffstats
path: root/src/jogl
Commit message (Collapse)AuthorAgeFilesLines
* Graph Font: getGlyph(char symbol -> int glyph_id), add kerning to ↵Sven Gothel2023-02-145-38/+33
| | | | getPointsBoundsFU(); Glyph: Drop getSymbol()
* Graph OutlineShape: Path2F alike sub-path ctor: Add z coordinate for custom ↵Sven Gothel2023-02-141-12/+19
| | | | plane.
* Graph Type Rendering: Drop pixelSize and use font em-size [0..1] throughout ↵Sven Gothel2023-02-137-398/+157
| | | | | | | | | system. - All pixelSize metrics methods are dropped in Font* - TypecastGlyph.Advance dropped, i.e. dropping prescales glyph advance based on pixelSize - TextRegionUtil produces OutlineShape in font em-size [0..1] added to GLRegion - Adjusted demos
* Graph font/typecast: Adopt to our Typecast updates (see below); Fix kerning; ↵Sven Gothel2023-02-126-99/+195
| | | | | | | | | Use TestTextRendererNEWT01 to produce validation snaps - Move kerning handling from Font to Font.Glyph using binary-search for right-glyph-id on kerning subset from this instance (left) - TextRegionUtil: Kerning must be added before translation as it applies before the current right-glyph. - TestTextRendererNEWT01 produces validation snapshots against LibreOffice print-preview snapshots - GPUTextRendererListenerBase01 added another text for kerning validation, show more font-size details (pt, px, mm)
* Typecast: Table: Use package-protected static final const, remove ↵Sven Gothel2023-02-122-51/+49
| | | | notAvailable String
* Typecast: KernSubtableFormat2: Use package-protectionSven Gothel2023-02-121-2/+2
|
* Typecast: KernSubtable: Remove getKerningTable(..), will be implemented in ↵Sven Gothel2023-02-121-11/+1
| | | | higher API layer w/ binary-search
* GlyfCompositeDescript: Remove useless try { } in ctor; Remove redundant ↵Sven Gothel2023-02-121-27/+21
| | | | variable in range-based for-loops
* Typecast: *Font*: Use constructor instead for static read(). TTFont: Add ↵Sven Gothel2023-02-123-22/+88
| | | | ctor for File and InputStream
* Update included Typecast library to 2019-09-15 commit ↵Sven Gothel2023-02-11127-4361/+4651
| | | | | | | | | | | | | | | 0d55ac0eb4a39a7f8f2a796c7eebd3ea778ba9a7 - Using Typecast's new git repo https://github.com/dcsch/typecast - Preserved our changes - Preserved loading fonts and glyph on input stream w/o font data array copies TODO - Maintain an original branch in Typecast w/ our changes to ease updates. Then we merely need to change the package name. - This also shall help to allow Typecast to use our patches, if so desired.
* Font/Graph, {Font, Glyph}/Typecast: Add kerning and expose values in ↵Sven Gothel2023-02-106-258/+783
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | original font-units (FU) to have them scaled later ( fu * pixelScale / unitsPerEM ) Scaling from font-units (funits, or FU) is now performed by the renderer itself, i.e. applying the scale-factor 'fontPixelSize / font.getMetrics().getUnitsPerEM()' to the PMV matrix to render the whole graph GLRegion. This finally provides proper device and resolution independent font utilization. Further, preliminary kerning has been added. +++ Also ... TypecastFont: - getGlyphID(..) getGlyph(..) enforce symbol mapping to Glyph.ID_SPACE Glyph.ID_CR, as some fonts ave an erroneous cmap (FreeSerif-Regular) - add getKerning(..) TODO: Add binary search - Set TypecastFont.USE_PRESCALED_ADVANCE := false, i.e. dropping all prescaled pixel-sized advance values mapped to font pixel-size as we utilize font-units only for later uniform scaling. - Drop virtual getPixelSize() and add static FontScale.toPixels(..) - Add fullString() for debugging purposed, including some font tables
* Typecase: OTFont: Provide KernTable accessorSven Gothel2023-02-101-0/+8
|
* Typecast: OTGlyph: Maintain the glyphID, add toString()Sven Gothel2023-02-101-3/+21
|
* Typecast: HeadTable: Use 'int' to hold 'uint16' unitsPerEM valueSven Gothel2023-02-101-3/+3
|
* Typecast: Kerning: Use 'int' to cover 'uint16' values; Detail KernSubtable ↵Sven Gothel2023-02-105-10/+88
| | | | and hold a KernSubtableFormat0 ref in KernTable
* Graph: TypecastRenderer: Add comment about TTF Glyph's having Winding.CWSven Gothel2023-02-061-0/+3
|
* Graph: Path2D -> self-contained Path2D (w/ Iterator) fixed; OutlineShape: ↵Sven Gothel2023-02-0612-574/+951
| | | | | | Add Path2F addPath(..), emphasize required Winding.CW GPURegionGLListener01 used by TestRegionRendererNEWT01 covers Path2F CCW and CW (reverse add) methods.
* Graph: OutlineShape: Add positional addVertex() variants for component based ↵Sven Gothel2023-02-051-7/+53
| | | | addVertex methods
* Graph: TypecastRenderer: Simplify addShape*(), use OutlineShape's ↵Sven Gothel2023-02-051-29/+29
| | | | vertexFactory instance
* Graph: Path2D: Remove redundant accessors, comment on append(..)Sven Gothel2023-02-051-7/+11
|
* Graph: OutlineShape: Make class final, getOutlineNumber() -> getOutlineCount()Sven Gothel2023-02-051-18/+17
|
* Graph; Path2D[Iterator]: Add 'fast path' access to points array reference ↵Sven Gothel2023-02-042-80/+113
| | | | and index etc, used to avoid arraycopy (efficancy)
* Graph: Complete move jogamp.graph.plane to public com.jogamp.graph.planeSven Gothel2023-02-0414-20/+14
|
* Graph: Move jogamp.graph.plane to public com.jogamp.graph.planeSven Gothel2023-02-046-0/+0
|
* MacOSXCGLContext: Fix typo in DEBUG outputSven Gothel2023-01-221-10/+10
|
* MacOSXCGLContext: Enable DEBUG1398 explicitly w/o debugAll()Sven Gothel2023-01-221-1/+1
|
* jogl's Debug.class: Add explicit debugNotAll(..) variant to skip debugAll()Sven Gothel2023-01-221-1/+5
|
* MacOSXCGLContext.AttachGLLayerCmd: Allow DetachGLLayerCmd to revoke the ↵Sven Gothel2023-01-211-5/+11
| | | | | | | | attach command, essential if attach hasn't been done yet @ detach Otherwise a pending attach would still pass through after DetachGLLayerCmd releases the sync-lock from AttachGLCmd. DetachGLCmd also tests 0 != nsOpenGLLayer
* Don't import conditional platform specific 'static' code but fully qualify ↵Sven Gothel2023-01-201-11/+5
| | | | names when in use, make Android d8 (Dex'ing) happy
* MacOSXCGLDrawableFactory.canCreateGLPbuffer(): Disabled for MacOS >= 12, ↵Sven Gothel2023-01-181-2/+5
| | | | here > 10.14.0 (Mojave)
* MacOSXCGLContext: Avoid data race on lastSetNSViewCmd, use local copy like ↵Sven Gothel2023-01-181-3/+4
| | | | in madeCurrent
* X11GLXContext.getPlatformExtensionsStringImpl(): Add comment from pull ↵Sven Gothel2023-01-161-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | request regarding GLX extensions https://github.com/sgothel/jogl/pull/107 Return either glXQueryClientString or glXQueryExtensionsString when getting the GLX extensions ndjojo: glXQueryExtensionsString will make a request for glXQueryServerString if needed and will append the necessary client-side extensions. This doc, under the section "Using GLS Extensions", also suggests checking the glXQueryExtensionsString before using GLX extensions. +++ aschleck: For some more context this came up with the release of Mesa 20.3.0, which has client support for GLX_EXT_swap_control but no server support. The current JOGL behavior of appending the client extensions to the server extensions is incorrect. They should instead be intersected (with client-only extensions then appended) as the doc Nicole linked above says, which is precisely what glXQueryExtensionsString does. With the current extension querying behavior JOGL thinks glXSwapIntervalEXT is available under Mesa/llvmpipe even though it is not, causing a segfault at JOGL initialization time. I originally filed this as a Mesa bug (https://gitlab.freedesktop.org/mesa/mesa/-/issues/4128) along with some code that repro'd JOGL's checking behavior but it became apparent that Mesa is fine and the checking behavior is incorrect.
* Merge pull request #107 from ndjojo/platform-extensionsSven Gothel2023-01-161-10/+2
|\ | | | | Return either glXQueryClientString or glXQueryExtensionsString when getting the GLX extensions
| * Update X11GLXContext.javandjojo2021-01-201-10/+2
| |
* | Fix GLProfile GL2 Mapping: Only use GL3bc is available, add additional ↵Sven Gothel2023-01-151-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | GLContext.isGL3bcAvailable() check Julien Gouesse resolved this odd issue, where a requested GL2 profile was mapped to GL3bc but is not implemented, see <https://forum.jogamp.org/InternalError-XXX0-profile-2-GL2-gt-profileImpl-GL3bc-not-mapped-td4041754i20.html#a4042018>. I exploded his patch a little to reuse the GLContext.getAvailableGLProfileName() result and simplify the conditional statement. This might need more testing perhaps, plus analyis why GLContext.getAvailableGLProfileName() offers GL3bc but is not available via GLContext.isGL3bcAvailable() check.
* | Moved GlueGen's PlatformPropsImpl's static OSXVersion to ↵Sven Gothel2023-01-152-6/+29
| | | | | | | | GLContextImpl.MacOSVersion
* | Replace AccessController.doPrivileged() w/ SecurityUtil.doPrivileged() - via ↵Sven Gothel2023-01-141-2/+2
| | | | | | | | GLEmitter
* | Replace AccessController.doPrivileged() w/ SecurityUtil.doPrivileged()Sven Gothel2023-01-1414-34/+35
| |
* | MacOS: MacOSXCGLContext.drawableUpdatedNotify(): Issue updateContext() on ↵Sven Gothel2023-01-142-30/+27
| | | | | | | | | | | | main thread, deferred w/o wait (MacOS >= 13) updateContextRegister() stays in current thread.
* | MacOS: MacOSXCGLContext.NSOpenGLImpl.release(): Don't wait for releasing ↵Sven Gothel2023-01-141-1/+2
| | | | | | | | context view on MacOS >= 10.14 (deadlock)
* | MacOS: MacOSXCGLContext: Simplify version flags, remove Tiger, add Mojave.Sven Gothel2023-01-141-6/+20
|/
* Fix 'typo' in branching, valid config index is >= 0 (not < 0)Sven Gothel2020-06-151-1/+1
| | | | | | | This issue was introduced in commit 0a6a592c04a85d8124aa9d38b67f0caa1d739b75 and the '2nd choice branch' obviously never tested. Thanks to Lathanda finding this issue on 6/14/20.
* Bug 1398: MacOSXCGLContext: Ensure AWT is available before using it when ↵Sven Gothel2020-04-061-5/+12
| | | | | | | query java.awt.EventQueue.isDispatchThread() If AWT is not available, isAWTEventDispatchThread() returns false, otherwise returns java.awt.EventQueue.isDispatchThread().
* Bug 1398: Avoid AWT-AppKit blocking feedback flush deadlock and SetNSViewCmd ↵Sven Gothel2020-04-061-28/+60
| | | | | | | | | | | | | | | | | | | on initial makeCurrent when offscreen makeCurrent shall skip SetNSViewCmd for offscreen, i.e. refine criteria of nsViewChanged. Previous term enforced SetNSViewCmd on initial call as lastNSViewDescr was null. Expand first term to require an actual non null NSView. contextMadeCurrent must avoid blocking to wait for completion of our SetNSViewCmd on AppKit. AWT has procedures running on AppKit under certain situations, where it issues a feedback flush on AWTEDT (from Appkit) blocking. This in turn deadlocks our SetNSViewCmd waiting on the AppKit, as we are blocking the AWTEDT waiting for same command. Further avoiding other potential deadlocks, by adding a 500ms timeout. Also clearing the lastSetNSViewCmd field post wait, regardless, which avoid repeatitive SetNSViewCmd issuance on timeout. Note that the SetNSViewCmd, we failed to wait for eventually gets executed.
* Bug 1398: Ensure CGLContext lock will be acquired before leaving user ↵Sven Gothel2020-03-051-25/+106
| | | | | | | | | | | | | | | | | | | | | | | | makeCurrent() call Command SetNSViewCmd sets NSOpenGLContext's NSView via [NSOpenGLContext setView:] on the main-thread as enforced since XCode 11 using SDK macosx10.15, see Bug 1398. This command is injected into OSX's main-thread @ NSOpenGLImpl.makeCurrent(long) only if required, i.e. issued only for a newly bound NSView and skipped for surface-less or offscreen 'surfaces'. This operation must be performed w/o blocking other tasks locking the NativeSurface on main-thread to complete. Since [NSOpenGLContext setView:] acquires the CGLContext lock on the main-thread, it can't be locked by the calling thread until this task has been completed. Command issuer NSOpenGLImpl.makeCurrent(long) will not acquire the CGLContext lock if this command is pending. contextMadeCurrent(true) cures the potential unlocked CGLContext by issuing a whole GLContext.release() and GLContext.makeCurrent() cycle while waiting for this command to be completed in-between. This GLContext cycle also ensures an unlocked NativeSurface.getLock() in-between, allowing potentially blocked other tasks on the main-thread to complete and hence this queued command to execute. Notable test provoking critical multithreading issues is com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NewtCanvasSWT. Notable test exposing issues with an unlocked CGLContext is com.jogamp.opengl.test.junit.jogl.glsl.TestGLSLShaderState02NEWT.
* Bug 1398: MacOS: Perform [NSOpenGLContext setView:] on main-thread async w/o ↵Sven Gothel2020-02-242-130/+234
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | blocking Set NSOpenGLContext's NSView via [NSOpenGLContext setView:] on the main-thread as enforced since XCode 11 using SDL macosx10.15, using Runnable SetNSViewCmd. This operation must be performed async w/o blocking to allow other tasks locking the NativeSurface on main-thread to complete. Further, since [NSOpenGLContext setView:] acquired the CGLContext lock, it can't be locked until this task has been completed. Worst case scenario for a late [NSOpenGLContext setView:] issuance might be corrupt initial frame(s) displayed. Since all concurrent locking is performed within JOGL, the unlocked CGLContext window risk is only academic. However, if native 3rd party toolkits take share control, we might have a situation. +++ SetNSViewCmd is issued @ makeCurrent() now as opposed to createContext(..) and associateDrawable(true). The latter was actually late as well, as it also happened after makeCurrent when updating the drawable association. It also missed setting a null NSView when detached! release() will also set a null NSView if called after associateDrawable(false). SetNSViewCmd will only be issued if the NSView has been changed, i.e. first makeCurrent() or changing the drawable. If issued, makeCurrent() will not lock the underlying CGLContext and hence allow SetNSViewCmd to perform - see above. +++ NSViewDescriptor class structure replaces the less convenient method 'getNSViewHandle(..)', exposing all collected drawable characteristics as fields. NSViewDescriptor also respects a ProxySurface's OPT_UPSTREAM_SURFACELESS mode, which results in not using any underlying NSView - similar to OPT_UPSTREAM_WINDOW_INVISIBLE. This change ensures that all surfaceless GL operations will not use any NSView.
* Bug 1374: NEWT/AWT: Annotation regarding general High-DPI for even non ↵Sven Gothel2020-01-171-0/+6
| | | | | | | | | | | | | | | native DPI toolkit aware platforms (Linux, Windows) NEWT + NewtCanvasAWT: Maybe create "interface ScalableSurface.Upstream { void pixelScaleChangeNotify(final float[] curPixelScale, final float[] minPixelScale, final float[] maxPixelScale); }" to allow downstream to notify upstream ScalableSurface implementations like NEWT's Window to act accordingly. +++ AWT GLCanvas: Add remark where to add the potential pixel scale.
* SWT GLCanvas: Fix NPE in DEBUG mode; NewtCanvasSWT: Resurect comment in ↵Sven Gothel2020-01-061-1/+3
| | | | setBounds(..)
* Bug 1358: GLCanvas: Call new OSXUtil.SetWindowPixelScale(..) when GLCanvas ↵Sven Gothel2020-01-051-1/+14
| | | | | | gets realized on MacOS This fixes GLCanvas's High-DPI scaled size issue on MacOS of Bug 1358.
* Bug 1420: Add FFMpeg 4.* versioned lib-names and provide optional internal ↵Sven Gothel2020-01-032-59/+153
| | | | | | | | | | | | | | | | | | | | | lib lookup New property 'jogl.ffmpeg.lib' may be set to 'internal', setting PREFER_SYSTEM_LIBS:=false (default it true) Non system internal libraries are named 'internal_<basename>', e.g. 'internal_avutil'. System default libraries are named '<basename>', e.g. 'avutil'. If PREFER_SYSTEM_LIBS is true (default), we lookup the default library first, then the versioned library names and last the internal library. If PREFER_SYSTEM_LIBS is false, we lookup the internal library first, then the versioned library names and last the default library.