summaryrefslogtreecommitdiff
path: root/Examples/GIFPlot/Java
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2009-08-18 20:56:02 +0000
committerLorry <lorry@roadtrain.codethink.co.uk>2012-09-25 16:59:08 +0000
commit9f8a09ed743cedd9547bf0661d518647966ab114 (patch)
tree9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/GIFPlot/Java
downloadswig-tarball-master.tar.gz
Imported from /srv/lorry/lorry-area/swig-tarball/swig-1.3.40.tar.gz.HEADswig-1.3.40master
Diffstat (limited to 'Examples/GIFPlot/Java')
-rw-r--r--Examples/GIFPlot/Java/check.list4
-rw-r--r--Examples/GIFPlot/Java/full/Makefile20
-rw-r--r--Examples/GIFPlot/Java/full/README8
-rw-r--r--Examples/GIFPlot/Java/full/cmapbin0 -> 768 bytes
-rw-r--r--Examples/GIFPlot/Java/full/gifplot.i15
-rw-r--r--Examples/GIFPlot/Java/full/runme.java75
-rw-r--r--Examples/GIFPlot/Java/shadow/Makefile21
-rw-r--r--Examples/GIFPlot/Java/shadow/README5
-rw-r--r--Examples/GIFPlot/Java/shadow/cmapbin0 -> 768 bytes
-rw-r--r--Examples/GIFPlot/Java/shadow/runme.java76
-rw-r--r--Examples/GIFPlot/Java/simple/Makefile21
-rw-r--r--Examples/GIFPlot/Java/simple/README5
-rw-r--r--Examples/GIFPlot/Java/simple/runme.java41
-rw-r--r--Examples/GIFPlot/Java/simple/simple.i38
14 files changed, 329 insertions, 0 deletions
diff --git a/Examples/GIFPlot/Java/check.list b/Examples/GIFPlot/Java/check.list
new file mode 100644
index 0000000..13de977
--- /dev/null
+++ b/Examples/GIFPlot/Java/check.list
@@ -0,0 +1,4 @@
+# see top-level Makefile.in
+full
+shadow
+simple
diff --git a/Examples/GIFPlot/Java/full/Makefile b/Examples/GIFPlot/Java/full/Makefile
new file mode 100644
index 0000000..8f16723
--- /dev/null
+++ b/Examples/GIFPlot/Java/full/Makefile
@@ -0,0 +1,20 @@
+TOP = ../../..
+SWIG = $(TOP)/../swig
+SWIGOPT = -I../../Include -noproxy
+SRCS =
+TARGET = gifplot
+INTERFACE = gifplot.i
+LIBS = -L../.. -lgifplot
+INCLUDES = -I../../Include
+
+all::
+ $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \
+ INCLUDES='$(INCLUDES)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \
+ TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' java
+ javac *.java
+
+clean::
+ $(MAKE) -f $(TOP)/Makefile java_clean
+ rm -f *.gif
+
+check: all
diff --git a/Examples/GIFPlot/Java/full/README b/Examples/GIFPlot/Java/full/README
new file mode 100644
index 0000000..93463ea
--- /dev/null
+++ b/Examples/GIFPlot/Java/full/README
@@ -0,0 +1,8 @@
+This example runs the entire gifplot.h header file through SWIG without
+any changes. The program 'runme.java' does something a little more
+interesting. After doing a make, run it using 'java runme'. You'll have to go
+look at the header file to get a complete listing of the functions.
+
+Note the differences in the runme.java files between this example and the
+'full' example. This example does not use shadow classes.
+
diff --git a/Examples/GIFPlot/Java/full/cmap b/Examples/GIFPlot/Java/full/cmap
new file mode 100644
index 0000000..a20c331
--- /dev/null
+++ b/Examples/GIFPlot/Java/full/cmap
Binary files differ
diff --git a/Examples/GIFPlot/Java/full/gifplot.i b/Examples/GIFPlot/Java/full/gifplot.i
new file mode 100644
index 0000000..5a7f500
--- /dev/null
+++ b/Examples/GIFPlot/Java/full/gifplot.i
@@ -0,0 +1,15 @@
+/* Oh what the heck, let's just grab the whole darn header file
+ and see what happens. */
+
+%module gifplot
+%{
+
+/* Note: You still need this part because the %include directive
+ merely causes SWIG to interpret the contents of a file. It doesn't
+ include the right include headers for the resulting C code */
+
+#include "gifplot.h"
+
+%}
+
+%include gifplot.h
diff --git a/Examples/GIFPlot/Java/full/runme.java b/Examples/GIFPlot/Java/full/runme.java
new file mode 100644
index 0000000..c47c1e6
--- /dev/null
+++ b/Examples/GIFPlot/Java/full/runme.java
@@ -0,0 +1,75 @@
+// Plot a 3D function
+import java.lang.Math;
+
+public class runme {
+
+ static {
+ try {
+ System.loadLibrary("gifplot");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
+ System.exit(1);
+ }
+ }
+
+ public static void main(String argv[]) {
+
+ // Here are some plotting parameters
+ double xmin = -5.0;
+ double xmax = 5.0;
+ double ymin = -5.0;
+ double ymax = 5.0;
+ double zmin = -5.0;
+ double zmax = 5.0;
+
+ // Grid resolution
+ int nxpoints = 60;
+ int nypoints = 60;
+
+ SWIGTYPE_p_ColorMap cmap = gifplot.new_ColorMap("cmap");
+ SWIGTYPE_p_FrameBuffer frame = gifplot.new_FrameBuffer(500,500);
+ gifplot.FrameBuffer_clear(frame,(short)gifplot.BLACK);
+
+ SWIGTYPE_p_Plot3D p3 = gifplot.new_Plot3D(frame,xmin,ymin,zmin,xmax,ymax,zmax);
+ gifplot.Plot3D_lookat(p3,2*(zmax-zmin));
+ gifplot.Plot3D_autoperspective(p3,40);
+ gifplot.Plot3D_rotu(p3,60);
+ gifplot.Plot3D_rotr(p3,30);
+ gifplot.Plot3D_rotd(p3,10);
+
+ System.out.println( "Making a nice 3D plot..." );
+ gifplot.Plot3D_clear(p3,(short)gifplot.BLACK);
+ gifplot.Plot3D_start(p3);
+ double dx = 1.0*(xmax-xmin)/nxpoints;
+ double dy = 1.0*(ymax-ymin)/nypoints;
+ double cscale = 240.0/(zmax-zmin);
+ double x = xmin;
+ for (int i = 0; i < nxpoints; i++) {
+ double y = ymin;
+ for (int j = 0; j < nypoints; j++) {
+ double z1 = func(x,y);
+ double z2 = func(x+dx,y);
+ double z3 = func(x+dx,y+dy);
+ double z4 = func(x,y+dy);
+ double c1 = cscale*(z1-zmin);
+ double c2 = cscale*(z2-zmin);
+ double c3 = cscale*(z3-zmin);
+ double c4 = cscale*(z4-zmin);
+ double c = (c1+c2+c3+c4)/4;
+ if (c < 0) c = 0;
+ if (c > 239) c = 239;
+ gifplot.Plot3D_solidquad(p3,x,y,z1,x+dx,y,z2,x+dx,y+dy,z3,x,y+dy,z4,(short)(c+16));
+ y = y + dy;
+ }
+ x = x + dx;
+ }
+
+ gifplot.FrameBuffer_writeGIF(frame,cmap,"image.gif");
+ System.out.println( "Wrote image.gif" );
+ }
+
+ // Here is the function to plot
+ public static double func(double x, double y) {
+ return 5*java.lang.Math.cos(2*java.lang.Math.sqrt(x*x+y*y))*java.lang.Math.exp(-0.3*java.lang.Math.sqrt(x*x+y*y));
+ }
+}
diff --git a/Examples/GIFPlot/Java/shadow/Makefile b/Examples/GIFPlot/Java/shadow/Makefile
new file mode 100644
index 0000000..8062c27
--- /dev/null
+++ b/Examples/GIFPlot/Java/shadow/Makefile
@@ -0,0 +1,21 @@
+TOP = ../../..
+SWIG = $(TOP)/../swig
+SWIGOPT = -outcurrentdir
+SRCS =
+TARGET = gifplot
+INTERFACEDIR = ../../Interface/
+INTERFACE = gifplot.i
+LIBS = -L../.. -lgifplot
+INCLUDES = -I../../Include
+
+all::
+ $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \
+ INCLUDES='$(INCLUDES)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \
+ TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' INTERFACEDIR='$(INTERFACEDIR)' java
+ javac *.java
+
+clean::
+ $(MAKE) -f $(TOP)/Makefile java_clean
+ rm -f *.gif
+
+check: all
diff --git a/Examples/GIFPlot/Java/shadow/README b/Examples/GIFPlot/Java/shadow/README
new file mode 100644
index 0000000..b06c5a8
--- /dev/null
+++ b/Examples/GIFPlot/Java/shadow/README
@@ -0,0 +1,5 @@
+This example uses the file in ../../Interface/gifplot.i to build
+an interface with shadow classes. After doing a make, run the program runme, ie: 'java runme'.
+
+Note the differences in the runme.java files between this example and the
+'full' example. This example uses the shadow classes.
diff --git a/Examples/GIFPlot/Java/shadow/cmap b/Examples/GIFPlot/Java/shadow/cmap
new file mode 100644
index 0000000..a20c331
--- /dev/null
+++ b/Examples/GIFPlot/Java/shadow/cmap
Binary files differ
diff --git a/Examples/GIFPlot/Java/shadow/runme.java b/Examples/GIFPlot/Java/shadow/runme.java
new file mode 100644
index 0000000..91db038
--- /dev/null
+++ b/Examples/GIFPlot/Java/shadow/runme.java
@@ -0,0 +1,76 @@
+// Plot a 3D function
+
+import java.lang.Math;
+
+public class runme {
+
+ static {
+ try {
+ System.loadLibrary("gifplot");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
+ System.exit(1);
+ }
+ }
+
+ public static void main(String argv[]) {
+
+ // Here are some plotting parameters
+ double xmin = -5.0;
+ double xmax = 5.0;
+ double ymin = -5.0;
+ double ymax = 5.0;
+ double zmin = -5.0;
+ double zmax = 5.0;
+
+ // Grid resolution
+ int nxpoints = 60;
+ int nypoints = 60;
+
+ ColorMap cmap = new ColorMap("cmap");
+ FrameBuffer frame = new FrameBuffer(500,500);
+ frame.clear((short)gifplot.BLACK);
+
+ Plot3D p3 = new Plot3D(frame,xmin,ymin,zmin,xmax,ymax,zmax);
+ p3.lookat(2*(zmax-zmin));
+ p3.autoperspective(40);
+ p3.rotu(60);
+ p3.rotr(30);
+ p3.rotd(10);
+
+ System.out.println( "Making a nice 3D plot..." );
+ p3.clear((short)gifplot.BLACK);
+ p3.start();
+ double dx = 1.0*(xmax-xmin)/nxpoints;
+ double dy = 1.0*(ymax-ymin)/nypoints;
+ double cscale = 240.0/(zmax-zmin);
+ double x = xmin;
+ for (int i = 0; i < nxpoints; i++) {
+ double y = ymin;
+ for (int j = 0; j < nypoints; j++) {
+ double z1 = func(x,y);
+ double z2 = func(x+dx,y);
+ double z3 = func(x+dx,y+dy);
+ double z4 = func(x,y+dy);
+ double c1 = cscale*(z1-zmin);
+ double c2 = cscale*(z2-zmin);
+ double c3 = cscale*(z3-zmin);
+ double c4 = cscale*(z4-zmin);
+ double c = (c1+c2+c3+c4)/4;
+ if (c < 0) c = 0;
+ if (c > 239) c = 239;
+ p3.solidquad(x,y,z1,x+dx,y,z2,x+dx,y+dy,z3,x,y+dy,z4,(short)(c+16));
+ y = y + dy;
+ }
+ x = x + dx;
+ }
+
+ frame.writeGIF(cmap,"image.gif");
+ System.out.println( "Wrote image.gif" );
+ }
+
+ // Here is the function to plot
+ public static double func(double x, double y) {
+ return 5*java.lang.Math.cos(2*java.lang.Math.sqrt(x*x+y*y))*java.lang.Math.exp(-0.3*java.lang.Math.sqrt(x*x+y*y));
+ }
+}
diff --git a/Examples/GIFPlot/Java/simple/Makefile b/Examples/GIFPlot/Java/simple/Makefile
new file mode 100644
index 0000000..d707fd4
--- /dev/null
+++ b/Examples/GIFPlot/Java/simple/Makefile
@@ -0,0 +1,21 @@
+TOP = ../../..
+SWIG = $(TOP)/../swig
+SWIGOPT = -noproxy
+SRCS =
+TARGET = simple
+INTERFACE = simple.i
+LIBS = -L../.. -lgifplot
+INCLUDES = -I../../Include
+
+all::
+ $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \
+ INCLUDES='$(INCLUDES)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \
+ TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' java
+ javac *.java
+
+
+clean::
+ $(MAKE) -f $(TOP)/Makefile java_clean
+ rm -f *.gif
+
+check: all
diff --git a/Examples/GIFPlot/Java/simple/README b/Examples/GIFPlot/Java/simple/README
new file mode 100644
index 0000000..13ff496
--- /dev/null
+++ b/Examples/GIFPlot/Java/simple/README
@@ -0,0 +1,5 @@
+This is a very minimalistic example in which just a few functions
+and constants from library are wrapped and used to draw some simple
+shapes. After doing a make, run the java program, ie 'java runme'.
+
+
diff --git a/Examples/GIFPlot/Java/simple/runme.java b/Examples/GIFPlot/Java/simple/runme.java
new file mode 100644
index 0000000..2d8d2bb
--- /dev/null
+++ b/Examples/GIFPlot/Java/simple/runme.java
@@ -0,0 +1,41 @@
+
+public class runme {
+
+ static {
+ try {
+ System.loadLibrary("simple");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
+ System.exit(1);
+ }
+ }
+
+ public static void main(String argv[]) {
+
+ // Draw some simple shapes
+ System.out.println( "Drawing some basic shapes" );
+
+ SWIGTYPE_p_ColorMap cmap = simple.new_ColorMap(null);
+ SWIGTYPE_p_FrameBuffer f = simple.new_FrameBuffer(400,400);
+
+ // Clear the picture
+ simple.FrameBuffer_clear(f,(short)simple.BLACK);
+
+ // Make a red box
+ simple.FrameBuffer_box(f,40,40,200,200,(short)simple.RED);
+
+ // Make a blue circle
+ simple.FrameBuffer_circle(f,200,200,40,(short)simple.BLUE);
+
+ // Make green line
+ simple.FrameBuffer_line(f,10,390,390,200, (short)simple.GREEN);
+
+ // Write an image out to disk
+
+ simple.FrameBuffer_writeGIF(f,cmap,"image.gif");
+ System.out.println( "Wrote image.gif" );
+
+ simple.delete_FrameBuffer(f);
+ simple.delete_ColorMap(cmap);
+ }
+}
diff --git a/Examples/GIFPlot/Java/simple/simple.i b/Examples/GIFPlot/Java/simple/simple.i
new file mode 100644
index 0000000..457bc4c
--- /dev/null
+++ b/Examples/GIFPlot/Java/simple/simple.i
@@ -0,0 +1,38 @@
+/* This example shows a very simple interface wrapping a few
+ primitive declarations */
+
+%module simple
+%{
+#include "gifplot.h"
+%}
+
+typedef unsigned char Pixel;
+
+/* Here are a few useful functions */
+
+ColorMap *new_ColorMap(char *filename = 0);
+void delete_ColorMap(ColorMap *cmap);
+
+FrameBuffer *new_FrameBuffer(unsigned int width, unsigned int height);
+void delete_FrameBuffer(FrameBuffer *frame);
+void FrameBuffer_clear(FrameBuffer *frame, Pixel color);
+void FrameBuffer_line(FrameBuffer *frame, int x1, int y1, int x2, int y2, Pixel color);
+void FrameBuffer_box(FrameBuffer *frame, int x1, int y1, int x2, int y2, Pixel color);
+void FrameBuffer_circle(FrameBuffer *frame, int x1, int y1, int radius, Pixel color);
+int FrameBuffer_writeGIF(FrameBuffer *f, ColorMap *c, char *filename);
+
+/* And some useful constants */
+
+#define BLACK 0
+#define WHITE 1
+#define RED 2
+#define GREEN 3
+#define BLUE 4
+#define YELLOW 5
+#define CYAN 6
+#define MAGENTA 7
+
+
+
+
+