28package com.jogamp.opengl.demos.graph.ui;
30import java.io.IOException;
32import com.jogamp.common.os.Clock;
33import com.jogamp.graph.curve.Region;
34import com.jogamp.graph.font.Font;
35import com.jogamp.graph.font.FontFactory;
36import com.jogamp.graph.font.FontSet;
37import com.jogamp.graph.ui.Group;
38import com.jogamp.graph.ui.Scene;
39import com.jogamp.graph.ui.Shape;
40import com.jogamp.graph.ui.layout.Alignment;
41import com.jogamp.graph.ui.layout.Gap;
42import com.jogamp.graph.ui.layout.GridLayout;
43import com.jogamp.graph.ui.shapes.Button;
44import com.jogamp.math.Recti;
45import com.jogamp.math.geom.AABBox;
46import com.jogamp.math.util.PMVMatrix4f;
47import com.jogamp.newt.event.WindowAdapter;
48import com.jogamp.newt.event.WindowEvent;
49import com.jogamp.newt.opengl.GLWindow;
50import com.jogamp.opengl.GL;
51import com.jogamp.opengl.GLCapabilities;
52import com.jogamp.opengl.demos.util.CommandlineOptions;
53import com.jogamp.opengl.util.Animator;
55import jogamp.graph.ui.TreeTool;
67 public static void main(
final String[] args)
throws IOException {
68 if( 0 != args.length ) {
69 final int[] idx = { 0 };
70 for (idx[0] = 0; idx[0] < args.length; ++idx[0]) {
71 if( options.
parse(args, idx) ) {
76 System.err.println(options);
79 System.out.println(
"Requested: " + reqCaps);
95 groupA0.
scale(1/8f, 1/8f, 1);
97 System.err.println(
"Group-A0 "+groupA0);
98 System.err.println(
"Group-A0 Layout "+groupA0.
getLayout());
99 TreeTool.forAll(groupA0, (shape) -> { System.err.println(
"Shape... "+shape);
return false; });
120 public void windowDestroyNotify(
final WindowEvent e) {
128 animator.
add(window);
138 System.err.println(
"SceneBox "+sceneBox);
139 System.err.println(
"Group-A0 "+groupA0);
140 TreeTool.forAll(groupA0, (shape) -> { System.err.println(
"Shape... "+shape);
return false; });
142 try { Thread.sleep(1000); }
catch (
final InterruptedException e1) { }
144 final Shape mobileShape = groupA0;
150 final float min_obj = sceneBox.
getMinX();
157 final float dist_px = scene.
getWidth() - shapeSizePx[0];
158 final float dist_m = dist_px/pixPerMM/1e3f;
159 final float velocity = 50/1e3f;
160 final float velocity_px = velocity * 1e3f * pixPerMM;
161 final float velovity_obj = velocity_px / pixPerShapeUnit[0];
162 final float exp_dur_s = dist_m / velocity;
164 System.err.println();
165 System.err.printf(
"Shape: %d x %d [pixel], %.4f px/shape_unit%n", shapeSizePx[0], shapeSizePx[1], pixPerShapeUnit[0]);
166 System.err.printf(
"Shape: %s%n", mobileShape);
167 System.err.println();
168 System.err.printf(
"Distance: %.0f pixel @ %.3f px/mm, %.3f mm%n", dist_px, pixPerMM, dist_m*1e3f);
169 System.err.printf(
"Velocity: %.3f mm/s, %.3f px/s, %.6f obj/s, expected travel-duration %.3f s%n",
170 velocity*1e3f, velocity_px, velovity_obj, exp_dur_s);
172 final long t0_us = Clock.currentNanos() / 1000;
176 final long t2_us = Clock.currentNanos() / 1000;
177 final float dt_s = ( t2_us - t1_us ) / 1e6f;
180 final float dx = velovity_obj * dt_s;
185 window.
invoke(
true, (drawable) -> {
186 mobileShape.
move(dx, 0f, 0f);
191 final float has_dur_s = ( ( Clock.currentNanos() / 1000 ) - t0_us ) / 1e6f;
192 System.err.printf(
"Actual travel-duration %.3f s, delay %.3f s%n", has_dur_s, has_dur_s-exp_dur_s);
193 System.err.println(
"Group-A0 bounds "+groupA0);
194 TreeTool.forAll(groupA0, (shape) -> { System.err.println(
"Shape... "+shape);
return false; });
195 try { Thread.sleep(1000); }
catch (
final InterruptedException e1) { }
201 static class MyPMVMatrixSetup
extends Scene.DefaultPMVMatrixSetup {
204 super.set(pmv, viewport);
208 setPlaneBox(planeBox0, pmv, viewport);
209 final float sx = planeBox0.
getWidth();
211 final float sxy = sx > sy ? sx : sy;
212 pmv.scaleP(sxy, sxy, 1f);
Abstract Outline shape representation define the method an OutlineShape(s) is bound and rendered.
static final int VBAA_RENDERING_BIT
Rendering-Mode bit for Region.
The optional property jogamp.graph.font.ctor allows user to specify the FontConstructor implementatio...
static final FontSet get(final int font)
static final int UBUNTU
Ubuntu is the default font family, {@value}.
Group of Shapes, optionally utilizing a Group.Layout.
void addShape(final Shape s)
Adds a Shape.
Layout getLayout()
Return current Group.Layout.
void addShape(final Shape s)
Adds a Shape.
final void setClearParams(final float[] clearColor, final int clearMask)
Sets the clear parameter for glClearColor(..) and glClear(..) to be issued at display(GLAutoDrawable)...
final void setPMvCullingEnabled(final boolean v)
Enable or disable Project-Modelview (PMv) frustum culling per Shape for this container.
void waitUntilDisplayed()
Blocks until first display(GLAutoDrawable) has completed after construction or dispose(GLAutoDrawable...
final void setPMVMatrixSetup(final PMVMatrixSetup setup)
Set a custom PMVMatrixSetup.
int getWidth()
Returns the getViewport()'s width, set after initial reshape(GLAutoDrawable, int, int,...
AABBox getBounds(final PMVMatrix4f pmv, final Shape shape)
Returns AABBox dimension of given Shape from this container's perspective, i.e.
synchronized void attachInputListenerTo(final GLWindow window)
Generic Shape, potentially using a Graph via GraphShape or other means of representing content.
final Shape move(final float dtx, final float dty, final float dtz)
Move about scaled distance.
final Shape setInteractive(final boolean v)
Set whether this shape is interactive in general, i.e.
final Shape moveTo(final float tx, final float ty, final float tz)
Move to scaled position.
final float getScaledWidth()
Returns the scaled width of the bounding AABBox for this shape.
final Vec3f getPosition()
Returns position Vec3f reference, i.e.
final float[] getPixelPerShapeUnit(final int[] shapeSizePx, final float[] pixPerShape)
Retrieve pixel per scaled shape-coordinate unit, i.e.
final Shape setDragAndResizable(final boolean v)
Set whether this shape is draggable and resizable.
final Shape validate(final GL2ES2 gl)
Validates the shape's underlying GLRegion.
final int[] getSurfaceSize(final PMVMatrix4f pmv, final Recti viewport, final int[] surfaceSize)
Retrieve surface (view) size in pixels of this shape.
final Shape scale(final Vec3f s)
Multiply current scale factor by given scale.
Immutable layout alignment options, including Bit#Fill.
static final Alignment Fill
Bit#Fill alignment constant.
GraphUI CSS property Gap, scaled spacing between (grid) cells not belonging to the cell element.
GraphUI Grid Group.Layout.
Rectangle with x, y, width and height integer components.
Axis Aligned Bounding Box.
PMVMatrix4f implements the basic computer graphics Matrix4f pack using projection (P),...
NEWT Window events are provided for notification purposes ONLY.
An implementation of GLAutoDrawable and Window interface, using a delegated Window instance,...
final int getSurfaceHeight()
Returns the height of this GLDrawable's surface client area in pixel units.
final boolean isNativeValid()
final void setTitle(final String title)
final float[] getPixelsPerMM(final float[] ppmmStore)
Returns the pixels per millimeter of this window's NativeSurface according to the main monitor's curr...
final int getSurfaceWidth()
Returns the width of this GLDrawable's surface client area in pixel units.
final void setSize(final int width, final int height)
Sets the size of the window's client area in window units, excluding decorations.
final void setVisible(final boolean visible)
Calls setVisible(true, visible), i.e.
final void addWindowListener(final WindowListener l)
Appends the given com.jogamp.newt.event.WindowListener to the end of the list.
final void destroy()
Destroys all resources associated with this GLAutoDrawable, inclusive the GLContext.
static GLWindow create(final GLCapabilitiesImmutable caps)
Creates a new GLWindow attaching a new Window referencing a new default Screen and default Display wi...
Specifies a set of OpenGL capabilities.
final GLProfile getGLProfile()
Returns the GL profile you desire or used by the drawable.
Res independent Shapes in a Group using a GridLayout, contained within a Scene attached to GLWindow.
static void main(final String[] args)
GLCapabilities getGLCaps()
int graphAASamples
Sample count for Graph Region AA render-modes: Region#VBAA_RENDERING_BIT or Region#MSAA_RENDERING_BIT...
void parse(final String[] args)
final synchronized void add(final GLAutoDrawable drawable)
Adds a drawable to this animator's list of rendering drawables.
final void setUpdateFPSFrames(final int frames, final PrintStream out)
final synchronized boolean start()
Starts this animator, if not running.
final synchronized boolean stop()
Stops this animator.
static final int FAMILY_LIGHT
Font family LIGHT, {@value}.
Font get(int family, int stylebits)
static final int STYLE_SERIF
SERIF style/family bit flag.
Interface wrapper for font implementation.
String getFullFamilyName()
Shall return the family and subfamily name, separated a dash.
boolean invoke(boolean wait, GLRunnable glRunnable)
Enqueues a one-shot GLRunnable, which will be executed within the next display() call after all regis...
void addGLEventListener(GLEventListener listener)
Adds the given listener to the end of this drawable queue.
static final int GL_DEPTH_BUFFER_BIT
GL_ES_VERSION_2_0, GL_VERSION_1_1, GL_VERSION_1_0, GL_VERSION_ES_1_0 Define "GL_DEPTH_BUFFER_BIT" wit...