Moved from Php to Php4 to fix naming kludge

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5033 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2003-09-01 14:37:40 +00:00
commit 29f9755c9d
13 changed files with 313 additions and 2 deletions

View file

@ -1,3 +1 @@
Makefile
Php4.lnk
Php4

View file

@ -0,0 +1,3 @@
# see top-level Makefile.in
full
simple

View file

@ -0,0 +1,19 @@
TOP = ../../..
SWIG = $(TOP)/../swig
SWIGOPT = -I../../Include -noproxy
SRCS =
TARGET = php_gifplot
INTERFACE = gifplot.i
LIBS = -L../.. -lgifplot -lm
INCLUDES = -I../../Include
all::
$(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \
INCLUDES='$(INCLUDES)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \
TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' php4
clean::
$(MAKE) -f $(TOP)/Makefile php4_clean
rm -f *.gif
check: all

View file

@ -0,0 +1,4 @@
This example runs the entire gifplot.h header file through SWIG without
any changes. The script 'runme.php3' does something a little more
interesting. You'll have to go look at the header file to get a complete
listing of the functions.

View file

@ -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

View file

@ -0,0 +1,78 @@
<?
# Plot a 3D function
require "gifplot.php";
# Here is the function to plot
function 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*($zmax-$zmin));
Plot3D_autoperspective($p3, 40);
Plot3D_rotu($p3, 60);
Plot3D_rotr($p3, 30);
Plot3D_rotd($p3, 10);
function drawsolid() {
global $p3;
global $xmax;
global $xmin;
global $ymax;
global $ymin;
global $zmin;
global $zmax;
global $nxpoints;
global $nypoints;
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 = 0; $i < $nxpoints; $i++) {
$y = $ymin;
for ($j = 0; $j < $nypoints; $j++) {
$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...\n";
drawsolid();
FrameBuffer_writeGIF($frame, $cmap,"image.gif");
print "Wrote image.gif\n";
?>

View file

@ -0,0 +1,19 @@
TOP = ../../..
SWIG = $(TOP)/../swig
SWIGOPT = -I../../Interface
SRCS =
TARGET = php_gifplot
INTERFACE = gifplot.i
LIBS = -L../.. -lgifplot -lm
INCLUDES = -I../../Include
all::
$(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \
INCLUDES='$(INCLUDES)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \
TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' php4
clean::
$(MAKE) -f $(TOP)/Makefile php4_clean
rm -f *.gif
check: all

View file

@ -0,0 +1,2 @@
This example use the file in ../../Interface/gifplot.i to build
an interface with shadow classes. Run the script 'runme.php3'.

View file

@ -0,0 +1,79 @@
<?
# Plot a 3D function
include("gifplot.php");
# Here is the function to plot
function 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);
$frame->clear(BLACK);
$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);
function drawsolid() {
global $xmax;
global $xmin;
global $ymax;
global $ymin;
global $zmin;
global $zmax;
global $nxpoints;
global $nypoints;
global $p3;
$p3->clear(BLACK);
$p3->start();
$dx = 1.0*($xmax-$xmin)/$nxpoints;
$dy = 1.0*($ymax-$ymin)/$nypoints;
$cscale = 240.0/($zmax-$zmin);
$x = $xmin;
for ($i = 0; $i < $nxpoints; $i++) {
$y = $ymin;
for ($j = 0; $j < $nypoints; $j++) {
$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; }
$p3->solidquad($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...\n";
drawsolid();
$frame->writeGIF($cmap,"image.gif");
print "Wrote image.gif\n";
?>

View file

@ -0,0 +1,19 @@
TOP = ../../..
SWIG = $(TOP)/../swig
SWIGOPT = -noproxy
SRCS =
TARGET = php_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)' php4
clean::
$(MAKE) -f $(TOP)/Makefile php4_clean
rm -f *.gif
check: all

View file

@ -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.pl' runs the example.

View file

@ -0,0 +1,32 @@
<?
# Draw some simple shapes
print "Drawing some basic shapes\n";
require "simple.php";
$cmap = new_ColorMap();
$f = new_FrameBuffer(400,400);
# Clear the picture
FrameBuffer_clear($f,BLACK);
# Make a red box
FrameBuffer_box($f,40,40,200,200,RED);
# Make a blue circle
FrameBuffer_circle($f,200,200,40,BLUE);
# Make green line
FrameBuffer_line($f,10,390,390,200, GREEN);
# Write an image out to disk
FrameBuffer_writeGIF($f,$cmap,"image.gif");
print "Wrote image.gif\n";
delete_FrameBuffer($f);
delete_ColorMap($cmap);
?>

View file

@ -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