[API] Automatic Module Names (#105)
* Initial implementation of Automatic Module Names * Fix using java 17 for publishing * Roll build back to jdk 1.8 * Fix package name for imgui.lwjgl3 module * Reworking package change to prevent breaking backwards compatability
This commit is contained in:
1 parent
6f48a70564
commit
8c1ef209ad
9 files changed
+52
-11
No files matched your search
@@ -121,6 +121,10 @@ dependencies {
|
||||
3. Add the jar to your classpath.
|
||||
</details>
|
||||
|
||||
#### Java Module System
|
||||
If using Java 9 modules, you will need to require the `imgui.app` module.
|
||||
|
||||
|
||||
## Binding
|
||||
Using binding without the wrapper requires to "attach" it to your application manually.
|
||||
You can refer to [imgui-app](https://github.com/SpaiR/imgui-java/blob/v1.86.0/imgui-app) module and see how things are done there.
|
||||
@@ -247,6 +251,16 @@ dependencies {
|
||||
4. Provide a VM option: `imgui.library.path` or `java.library.path`. It should point to the folder where you've placed downloaded native libraries.
|
||||
</details>
|
||||
|
||||
#### Java Module System
|
||||
If using Java 9 modules, imgui-java has Automatic Module Names:
|
||||
|
||||
| Package | Module |
|
||||
|--------------------|---------------|
|
||||
| imgui-java-app | imgui.app |
|
||||
| imgui-java-binding | imgui.binding |
|
||||
| imgui-java-lwjgl3 | imgui.lwjgl3 |
|
||||
| imgui-java-natives | imgui.natives |
|
||||
|
||||
## Extensions
|
||||
- [ImNodes](https://github.com/Nelarius/imnodes/tree/857cc860af05ac0f6a4039c2af33d982377b6cf4) | [Example](https://github.com/SpaiR/imgui-java/blob/v1.86.0/example/src/main/java/ExampleImNodes.java) <br>
|
||||
A small, dependency-free node editor for dear imgui. (A good choice for simple start.)
|
||||
|
||||
@@ -37,6 +37,9 @@ jar {
|
||||
include 'imgui-java64.dll'
|
||||
into 'io/imgui/java/native-bin/'
|
||||
}
|
||||
manifest {
|
||||
attributes 'Automatic-Module-Name': 'imgui.app'
|
||||
}
|
||||
}
|
||||
|
||||
shadowJar {
|
||||
|
||||
@@ -4,7 +4,7 @@ package imgui.app;
|
||||
* Application class from which ImGui applications extend.
|
||||
* Serves as an abstraction layer to hide all low-level details about window creation and rendering routine.
|
||||
*
|
||||
* <h3>Life-cycle</h3>
|
||||
* <h2>Life-cycle</h2>
|
||||
* <p>The entry point for ImGui applications is the Application class and {@link #launch(Application)} method.
|
||||
* It initializes application instance and starts the main application loop.
|
||||
*
|
||||
|
||||
@@ -38,6 +38,9 @@ jar {
|
||||
include "$libName" // this is fine
|
||||
into 'io/imgui/java/native-bin/'
|
||||
}
|
||||
manifest {
|
||||
attributes 'Automatic-Module-Name': 'imgui.natives'
|
||||
}
|
||||
}
|
||||
|
||||
apply from: "$rootDir/publish.gradle"
|
||||
|
||||
@@ -22,3 +22,9 @@ tasks.register('generateLibs', GenerateLibs) {
|
||||
|
||||
apply from: "$rootDir/publish.gradle"
|
||||
configurePublishing('imgui-java-binding', 'JNI based binding for Dear ImGui')
|
||||
|
||||
jar {
|
||||
manifest {
|
||||
attributes 'Automatic-Module-Name': 'imgui.binding'
|
||||
}
|
||||
}
|
||||
+11
-5
@@ -1,6 +1,6 @@
|
||||
package imgui.glfw;
|
||||
package imgui.lwjgl3.glfw;
|
||||
|
||||
final class ImGuiImplGlfwNative {
|
||||
public final class ImGuiImplGlfwNative {
|
||||
private ImGuiImplGlfwNative() {
|
||||
}
|
||||
|
||||
@@ -10,9 +10,15 @@ final class ImGuiImplGlfwNative {
|
||||
#endif
|
||||
*/
|
||||
|
||||
// GLFW hack: Hide icon from task bar
|
||||
// Applied only for windows
|
||||
static native void win32hideFromTaskBar(long hwndPtr); /*
|
||||
/**
|
||||
* GLFW hack: Hide icon from task bar
|
||||
* Applied only for windows
|
||||
*
|
||||
* Internal Use Only.
|
||||
* FIXME: Once Java Module System has been implemented, this function should only be exported
|
||||
* to the imgui.lwjgl module.
|
||||
*/
|
||||
public static native void win32hideFromTaskBar(long hwndPtr); /*
|
||||
#if defined(_WIN32)
|
||||
HWND hwnd = (HWND)hwndPtr;
|
||||
LONG ex_style = ::GetWindowLong(hwnd, GWL_EXSTYLE);
|
||||
@@ -17,3 +17,9 @@ dependencies {
|
||||
|
||||
apply from: "$rootDir/publish.gradle"
|
||||
configurePublishing('imgui-java-lwjgl3', 'Backend LWJGL3 implementation for imgui-java')
|
||||
|
||||
jar {
|
||||
manifest {
|
||||
attributes 'Automatic-Module-Name': 'imgui.lwjgl3'
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ import imgui.flag.ImGuiMouseButton;
|
||||
import imgui.flag.ImGuiMouseCursor;
|
||||
import imgui.flag.ImGuiNavInput;
|
||||
import imgui.flag.ImGuiViewportFlags;
|
||||
import imgui.lwjgl3.glfw.ImGuiImplGlfwNative;
|
||||
import org.lwjgl.PointerBuffer;
|
||||
import org.lwjgl.glfw.GLFWCharCallback;
|
||||
import org.lwjgl.glfw.GLFWCursorEnterCallback;
|
||||
|
||||
+7
-5
@@ -58,10 +58,12 @@ ext.configurePublishing = { packageName, packageDesc ->
|
||||
}
|
||||
}
|
||||
}
|
||||
signing {
|
||||
def signingKeyId = System.getenv('SIGNING_KEY_ID')
|
||||
def signingKey = System.getenv('SIGNING_KEY')
|
||||
useInMemoryPgpKeys(signingKeyId, signingKey, '')
|
||||
sign publishing.publications.mavenJava
|
||||
if (System.getenv('SIGNING_KEY_ID') != null) {
|
||||
signing {
|
||||
def signingKeyId = System.getenv('SIGNING_KEY_ID')
|
||||
def signingKey = System.getenv('SIGNING_KEY')
|
||||
useInMemoryPgpKeys(signingKeyId, signingKey, '')
|
||||
sign publishing.publications.mavenJava
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user