Next Steps for GraphUI in JogAmp & Gamp (I) – Göthel Software Blog (original) (raw)

After the release of JogAmp 2.6.0 and the launch of Gamp earlier with its initial Graph code, I need to recapitulate the existing Graph and GraphUI code base within Jogl to evaluate our next steps including its Gamp implementation.

JogAmp‘s Jogl contains the Java code-base of GraphUI and Gamp shall evolve into its native C++ companion. Both are considered cross-platform, while only Gamp is able to be fully compiled down to the metal and executed w/o virtual machine while still capable of serving web browser via WebAssembly (yes, this involves a virtual machine again).

Jogl’s current Graph Implementation

Jogl’s current GraphUI Implementation

GraphUI’s code base has been designed and implemented in a test- or design-driven manner, step by step – and is subject to be changed.

A Shape represents the basic node, independent from Graph, while GraphShape is its Graph derivation.

A Shape holds its pointer and keyboard listener and owns its dedicated translation, scale, rotation and zoom parameters as well its cached 4×4 counterpart matrix.

Graph Enhancements

The following items are earmarked (but not funded) to be implemented for Graph.

Potential Gamp Implementation of Graph/GraphUI

So far, I have simply translated the existing Java code into C++20 while also flattened certain internal data representations.

The currently existing shape demos demonstrate non-curve glutess tessellation using floats (sub-module) as well as line and curve capable Graph tessellation using Delaunay. This was a first approach to potentially use glutess as an alternative in the next steps forward.

As you can see above, the biggest code-base on the TODO list is the font/type parsing, text and GraphUI segment.

Font/Type Parsing

Test Shaping (Layout)

Java to C++ Source Compiler

I will also double check for a good Java to C++ source code translator (not bytecode), i.e. soothing the typing a little.
However, so far the few existing ones were not sufficient as they either used a bytecode approach, obfuscated the C++ target making the result unreadable really.

It is C++’s high expressiveness which probably simply must be done by hand.
Of course, I used a few sed scripts to shortcut the usual naming replacements.

Conclusion so far…

Lots to do, get something done – day by day.

Funding & Contracting

To continue JogAmp to support its wide range of user applications and to potentially further Gamp, I seek contracting work (best in a related project) or direct project funding by companies and institutions. Please contact me sgothel at jausoft dot com.

(A Gamp Browser-Screenshot)

Post navigation