diff options
author | Dave Beazley <dave-swig@dabeaz.com> | 2000-02-11 05:37:31 +0000 |
---|---|---|
committer | Dave Beazley <dave-swig@dabeaz.com> | 2000-02-11 05:37:31 +0000 |
commit | a6743ff85ae537dead486d92f624031ad1126623 (patch) | |
tree | 9728821be6c568871a030fafb76118934ddbb351 /Examples/GIFPlot/Python | |
parent | 71a84a784d42335e679e95e6746e13573090ad3d (diff) | |
download | swig-a6743ff85ae537dead486d92f624031ad1126623.tar.gz |
Added GIFPlot example
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@219 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Examples/GIFPlot/Python')
-rw-r--r-- | Examples/GIFPlot/Python/full/Makefile | 23 | ||||
-rw-r--r-- | Examples/GIFPlot/Python/full/README | 8 | ||||
-rw-r--r-- | Examples/GIFPlot/Python/full/cmap | bin | 0 -> 768 bytes | |||
-rw-r--r-- | Examples/GIFPlot/Python/full/gifplot.i | 15 | ||||
-rw-r--r-- | Examples/GIFPlot/Python/full/runme.py | 62 | ||||
-rw-r--r-- | Examples/GIFPlot/Python/simple/Makefile | 23 | ||||
-rw-r--r-- | Examples/GIFPlot/Python/simple/README | 5 | ||||
-rw-r--r-- | Examples/GIFPlot/Python/simple/runme.py | 27 | ||||
-rw-r--r-- | Examples/GIFPlot/Python/simple/simple.i | 38 |
9 files changed, 201 insertions, 0 deletions
diff --git a/Examples/GIFPlot/Python/full/Makefile b/Examples/GIFPlot/Python/full/Makefile new file mode 100644 index 000000000..0a438f117 --- /dev/null +++ b/Examples/GIFPlot/Python/full/Makefile @@ -0,0 +1,23 @@ +TOP = ../../.. +SWIG = $(TOP)/../swig +SWIGOPT = -I../../Include +SRCS = +TARGET = gifplot +INTERFACE = gifplot.i +LIBS = -L../.. -lgifplot +INCLUDE = -I../../Include + +all:: + $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \ + INCLUDE='$(INCLUDE)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \ + TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' python + +static:: + $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \ + INCLUDE='$(INCLUDE)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \ + TARGET='mypython' INTERFACE='$(INTERFACE)' python_static + +clean:: + rm -f *_wrap* *.o *~ *.so mypython *.pyc .~* core *.gif + + diff --git a/Examples/GIFPlot/Python/full/README b/Examples/GIFPlot/Python/full/README new file mode 100644 index 000000000..52971e40a --- /dev/null +++ b/Examples/GIFPlot/Python/full/README @@ -0,0 +1,8 @@ +This example runs the entire gifplot.h header file through SWIG without +any changes. The script 'runme.py' does something a little more +interesting. You'll have to go look at the header file to get a complete +listing of the functions. + + + + diff --git a/Examples/GIFPlot/Python/full/cmap b/Examples/GIFPlot/Python/full/cmap Binary files differnew file mode 100644 index 000000000..a20c331a9 --- /dev/null +++ b/Examples/GIFPlot/Python/full/cmap diff --git a/Examples/GIFPlot/Python/full/gifplot.i b/Examples/GIFPlot/Python/full/gifplot.i new file mode 100644 index 000000000..5a7f5008f --- /dev/null +++ b/Examples/GIFPlot/Python/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/Python/full/runme.py b/Examples/GIFPlot/Python/full/runme.py new file mode 100644 index 000000000..1c73cec69 --- /dev/null +++ b/Examples/GIFPlot/Python/full/runme.py @@ -0,0 +1,62 @@ +# Plot a 3D function +from gifplot import * +from math import * + +# Here is the function to plot +def func(x,y): + return 5*cos(2*sqrt(x*x+y*y))*exp(-0.3*sqrt(x*x+y*y)) + +# Here are some plotting parameters +xmin = -5.0 +xmax = 5.0 +ymin = -5.0 +ymax = 5.0 +zmin = -5.0 +zmax = 5.0 + +# Grid resolution +nxpoints = 60 +nypoints = 60 + +cmap = new_ColorMap("cmap") +frame = new_FrameBuffer(500,500) +FrameBuffer_clear(frame,BLACK) + +p3 = new_Plot3D(frame,xmin,ymin,zmin,xmax,ymax,zmax) +Plot3D_lookat(p3,2*max([xmax-xmin,ymax-ymin,zmax-zmin])) +Plot3D_autoperspective(p3,40) +Plot3D_rotu(p3,60) +Plot3D_rotr(p3,30) +Plot3D_rotd(p3,10) + +def drawsolid(): + Plot3D_clear(p3,BLACK) + Plot3D_start(p3) + dx = 1.0*(xmax-xmin)/nxpoints + dy = 1.0*(ymax-ymin)/nypoints + cscale = 240.0/(zmax-zmin) + x = xmin + for i in xrange(0,nxpoints): + y = ymin + for j in xrange(0,nypoints): + z1 = func(x,y) + z2 = func(x+dx,y) + z3 = func(x+dx,y+dy) + z4 = func(x,y+dy) + c1 = cscale*(z1-zmin) + c2 = cscale*(z2-zmin) + c3 = cscale*(z3-zmin) + c4 = cscale*(z4-zmin) + c = (c1+c2+c3+c4)/4 + if (c < 0) : c = 0 + if c > 239 : c = 239 + Plot3D_solidquad(p3,x,y,z1,x+dx,y,z2,x+dx,y+dy,z3,x,y+dy,z4,c+16) + y = y + dy + x = x + dx + +print "Making a nice 3D plot..." +drawsolid() + +FrameBuffer_writeGIF(frame,cmap,"image.gif") +print "Wrote image.gif" + diff --git a/Examples/GIFPlot/Python/simple/Makefile b/Examples/GIFPlot/Python/simple/Makefile new file mode 100644 index 000000000..93b846684 --- /dev/null +++ b/Examples/GIFPlot/Python/simple/Makefile @@ -0,0 +1,23 @@ +TOP = ../../.. +SWIG = $(TOP)/../swig +SWIGOPT = +SRCS = +TARGET = simple +INTERFACE = simple.i +LIBS = -L../.. -lgifplot +INCLUDE = -I../../Include + +all:: + $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \ + INCLUDE='$(INCLUDE)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \ + TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' python + +static:: + $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \ + INCLUDE='$(INCLUDE)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \ + TARGET='mypython' INTERFACE='$(INTERFACE)' python_static + +clean:: + rm -f *_wrap* *.o *~ *.so mypython *.pyc .~* core *.gif + + diff --git a/Examples/GIFPlot/Python/simple/README b/Examples/GIFPlot/Python/simple/README new file mode 100644 index 000000000..22152c665 --- /dev/null +++ b/Examples/GIFPlot/Python/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. The script 'runme.py' runs the example. + + diff --git a/Examples/GIFPlot/Python/simple/runme.py b/Examples/GIFPlot/Python/simple/runme.py new file mode 100644 index 000000000..dade67767 --- /dev/null +++ b/Examples/GIFPlot/Python/simple/runme.py @@ -0,0 +1,27 @@ +# Draw some simple shapes +print "Drawing some basic shapes" +import simple + +cmap = simple.new_ColorMap() +f = simple.new_FrameBuffer(400,400) + +# Clear the picture +simple.FrameBuffer_clear(f,simple.BLACK) + +# Make a red box +simple.FrameBuffer_box(f,40,40,200,200,simple.RED) + +# Make a blue circle +simple.FrameBuffer_circle(f,200,200,40,simple.BLUE) + +# Make green line +simple.FrameBuffer_line(f,10,390,390,200, simple.GREEN) + +# Write an image out to disk + +simple.FrameBuffer_writeGIF(f,cmap,"image.gif") +print "Wrote image.gif" + +simple.delete_FrameBuffer(f) +simple.delete_ColorMap(cmap) + diff --git a/Examples/GIFPlot/Python/simple/simple.i b/Examples/GIFPlot/Python/simple/simple.i new file mode 100644 index 000000000..457bc4c09 --- /dev/null +++ b/Examples/GIFPlot/Python/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 + + + + + |