Update of /cvsroot/artoolkit/artoolkit/examples/paddleInteraction
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25405
Added Files:
paddle.h paddleInteractionTest.vcproj paddleInteractionTest.c
paddle.c paddleInteractionTest.dsp Makefile.in
Log Message:
Added new examples.
--- NEW FILE: paddle.h ---
#ifndef PADDLE_H
#define PADDLE_H
#include <AR/ar.h>
#define PADDLE_RADIUS 41.0
typedef struct {
char name[256];
int marker_id;
double width;
double center[2];
double trans[3][4];
double transL[3][4];
double transR[3][4];
int active;
ARMarkerInfo prevInfo;
ARMarkerInfo prevInfoL;
ARMarkerInfo prevInfoR;
int pcount;
int pcountL;
int pcountR;
} ARPaddleInfo;
ARPaddleInfo *paddleInit( char *name );
int paddleGetTrans( ARPaddleInfo *paddleInfo, ARMarkerInfo *markerInfo,
int *flagL, int marker_num, ARParam *cparam );
#endif
--- NEW FILE: Makefile.in ---
INC_DIR= ../../include
LIB_DIR= ../../lib
BIN_DIR= ../../bin
LDFLAG=@LDFLAG@ -L$(LIB_DIR)
LIBS= -lARgsub -lARvideo -lARMulti -lAR @LIBS@
CFLAG= @CFLAG@ -I$(INC_DIR)
OBJS = paddle.o
HEADDERS = paddle.h
all: $(BIN_DIR)/paddleInteractionTest
$(BIN_DIR)/paddleInteractionTest: paddleInteractionTest.o $(OBJS)
cc -o $(BIN_DIR)/paddleInteractionTest paddleInteractionTest.o $(OBJS) $(LDFLAG) $(LIBS)
paddleInteractionTest.o: paddleInteractionTest.c $(HEADDERS)
cc -c $(CFLAG) paddleInteractionTest.c
paddle.o: paddle.c $(HEADDERS)
cc -c $(CFLAG) paddle.c
clean:
rm -f *.o
rm -f $(BIN_DIR)/paddleInteractionTest
allclean:
rm -f *.o
rm -f $(BIN_DIR)/paddleInteractionTest
rm -f Makefile
--- NEW FILE: paddle.c ---
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <AR/ar.h>
#include "paddle.h"
static ARMarkerInfo prevInfoL;
static ARMarkerInfo prevInfoR;
static int pcountL = 0;
static int pcountR = 0;
static char *get_buff( char *buf, int n, FILE *fp );
static int get_marker( ARMarkerInfo *markerInfo, int *markerFlag,
int marker_num, int id,
ARMarkerInfo *prevInfo, int *pcount );
ARPaddleInfo *paddleInit( char *name )
{
FILE *fp;
ARPaddleInfo *paddleInfo;
char buf[256], buf1[256];
if( (fp=fopen(name, "r")) == NULL ) return(0);
arMalloc( paddleInfo, ARPaddleInfo, 1 );
get_buff(buf, 256, fp);
if( sscanf(buf, "%s", paddleInfo->name) != 1 ) {
fclose(fp); free(paddleInfo); return 0;
}
get_buff(buf, 256, fp);
if( sscanf(buf, "%s", buf1) != 1 ) {
fclose(fp); free(paddleInfo); return 0;
}
if( (paddleInfo->marker_id = arLoadPatt(buf1)) < 0 ) {
fclose(fp); free(paddleInfo); return 0;
}
get_buff(buf, 256, fp);
if( sscanf(buf, "%lf", &paddleInfo->width) != 1 ) {
fclose(fp); free(paddleInfo); return 0;
}
paddleInfo->center[0] = 0.0;
paddleInfo->center[1] = 0.0;
paddleInfo->active = 0;
paddleInfo->pcount = 0;
paddleInfo->pcountL = 0;
paddleInfo->pcountR = 0;
fclose(fp);
return paddleInfo;
}
static char *get_buff( char *buf, int n, FILE *fp )
{
char *ret;
for(;;) {
ret = fgets( buf, n, fp );
if( ret == NULL ) return(NULL);
if( buf[0] != '\n' && buf[0] != '#' ) return(ret);
}
}
int paddleGetTrans( ARPaddleInfo *paddleInfo, ARMarkerInfo *markerInfo, int *markerFlag, int marker_num, ARParam *cparam )
{
int id;
id = get_marker( markerInfo, markerFlag, marker_num, paddleInfo->marker_id,
&(paddleInfo->prevInfo), &(paddleInfo->pcount) );
if( id == -1 ) { paddleInfo->active = 0; return 0; }
arGetTransMat(&markerInfo[id],
paddleInfo->center, paddleInfo->width, paddleInfo->trans);
markerFlag[id] = 1;
paddleInfo->active = 1;
return 0;
}
static int get_marker( ARMarkerInfo *markerInfo, int *markerFlag, int marker_num, int id,
ARMarkerInfo *prevInfo, int *pcount )
{
double rlen, rlenmin, rarea, diff, diffmin;
int cid, cdir;
int i, j;
cid = -1;
for( i = 0; i < marker_num; i++ ) {
if( markerInfo[i].id == id && markerFlag[i] == 0 ) {
if( cid == -1 ) cid = i;
else {
if( markerInfo[cid].cf < markerInfo[i].cf ) cid = i;
}
}
}
if( cid == -1 ) {
if( *pcount == 0 ) return -1;
rlenmin = 10.0;
for( i = 0; i < marker_num; i++ ) {
if( markerFlag[i] ) continue;
rarea = (double)prevInfo->area / (double)markerInfo[i].area;
if( rarea < 0.7 || rarea > 1.43 ) continue;
rlen = ( (markerInfo[i].pos[0] - prevInfo->pos[0])
* (markerInfo[i].pos[0] - prevInfo->pos[0])
+ (markerInfo[i].pos[1] - prevInfo->pos[1])
* (markerInfo[i].pos[1] - prevInfo->pos[1]) ) / markerInfo[i].area;
if( rlen < 0.5 && rlen < rlenmin ) {
rlenmin = rlen;
cid = i;
}
}
if( cid >= 0 && markerInfo[cid].cf < prevInfo->cf ) {
markerInfo[cid].cf = prevInfo->cf;
markerInfo[cid].id = prevInfo->id;
diffmin = 10000.0 * 10000.0;
cdir = -1;
for( i = 0; i < 4; i++ ) {
diff = 0.0;
for( j = 0; j < 4; j++ ) {
diff += (prevInfo->vertex[j][0] - markerInfo[cid].vertex[(i+j)%4][0])
* (prevInfo->vertex[j][0] - markerInfo[cid].vertex[(i+j)%4][0])
+ (prevInfo->vertex[j][1] - markerInfo[cid].vertex[(i+j)%4][1])
* (prevInfo->vertex[j][1] - markerInfo[cid].vertex[(i+j)%4][1]);
}
if( diff < diffmin ) {
diffmin = diff;
cdir = (prevInfo->dir - i + 4) % 4;
}
}
markerInfo[cid].dir = cdir;
*prevInfo = markerInfo[cid];
*pcount = 1;
}
else {
*pcount = 0;
return -1;
}
}
else {
*prevInfo = markerInfo[cid];
*pcount = 1;
}
return cid;
}
--- NEW FILE: paddleInteractionTest.c ---
#ifdef _WIN32
#include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <GL/gl.h>
#include <GL/glut.h>
#include <AR/gsub.h>
#include <AR/param.h>
#include <AR/matrix.h>
#include <AR/ar.h>
#include <AR/video.h>
#include <AR/arMulti.h>
#define TOUCHED 1
#define NOT_TOUCHED -1
#define TARGET_NUM 5
#include "paddle.h"
/*****************************************************************************/
// modified by Thomas Pintaric, Vienna University of Technology
#ifdef _WIN32
char *vconf = "flipV,showDlg"; // see video.h for a list of supported parameters
#else
char *vconf = "";
#endif
/*****************************************************************************/
/* define a target struct for the objects that are to be touched */
typedef struct {
int id;
int state;
float pos[3];
} targetInfo;
targetInfo myTarget[TARGET_NUM];
int draw_paddle( ARPaddleInfo *paddleInfo );
int xsize, ysize;
int thresh = 100;
int count = 0;
char *cparam_name = "Data/camera_para.dat";
ARParam cparam;
char *config_name = "Data/multi/marker.dat";
ARMultiMarkerInfoT *config;
/* paddle information */
int marker_flag[AR_SQUARE_MAX];
ARPaddleInfo *paddleInfo;
char *paddle_name = "Data/paddle_data";
GLfloat light_position[] = {100.0,-200.0,200.0,0.0};
GLfloat ambi[] = {0.1, 0.1, 0.1, 0.1};
GLfloat lightZeroColor[] = {0.9, 0.9, 0.9, 0.1};
static void init(void);
static void cleanup(void);
static void keyEvent( unsigned char key, int x, int y);
static void mainLoop(void);
static void draw( targetInfo myTarget, double BaseTrans[3][4]);
int drawGroundGrid( double trans[3][4], int divisions, float x, float y, float height);
static void initTargets(targetInfo myTarget);
static int checkCollision(float Pos1[],float Pos2[], float range);
static void findPaddlePosition(float curPaddlePos[], double card_trans[3][4],double base_trans[3][4]);
int main()
{
//initialize applications
init();
arVideoCapStart();
//start the main event loop
argMainLoop( NULL, keyEvent, mainLoop );
return 0;
}
/* keyboard events */
static void keyEvent( unsigned char key, int x, int y)
{
/* quit if the ESC key is pressed */
if( key == 0x1b ) {
printf("*** %f (frame/sec)\n", (double)count/arUtilTimer());
cleanup();
exit(0);
}
/* change the threshold value when 't' key pressed */
if( key == 't' ) {
printf("Enter new threshold value (default = 100): ");
scanf("%d",&thresh); while( getchar()!='\n' );
printf("\n");
}
/* turn on and off the debug mode with d key */
if( key == 'd' ) {
printf("*** %f (frame/sec)\n", (double)count/arUtilTimer());
arDebug = 1 - arDebug;
if( arDebug == 0 ) {
glClearColor( 0.0, 0.0, 0.0, 0.0 );
glClear(GL_COLOR_BUFFER_BIT);
argSwapBuffers();
glClear(GL_COLOR_BUFFER_BIT);
argSwapBuffers();
}
count = 0;
}
}
/* main loop */
static void mainLoop(void)
{
ARUint8 *dataPtr;
ARMarkerInfo *marker_info;
int marker_num;
float curPaddlePos[3];
int i;
double err;
/* grab a video frame */
if( (dataPtr = (ARUint8 *)arVideoGetImage()) == NULL ) {
arUtilSleep(2);
return;
}
if( count == 0 ) arUtilTimerReset();
count++;
/* detect the markers in the video frame */
if( arDetectMarkerLite(dataPtr, thresh, &marker_info, &marker_num) < 0 ) {
cleanup();
exit(0);
}
argDrawMode2D();
if( !arDebug ) {
argDispImage( dataPtr, 0,0 );
}
else {
argDispImage( dataPtr, 1, 1 );
if( arImageProcMode == AR_IMAGE_PROC_IN_HALF )
argDispHalfImage( arImage, 0, 0 );
else
argDispImage( arImage, 0, 0);
glColor3f( 1.0, 0.0, 0.0 );
glLineWidth( 1.0 );
for( i = 0; i < marker_num; i++ ) {
argDrawSquare( marker_info[i].vertex, 0, 0 );
}
glLineWidth( 1.0 );
}
arVideoCapNext();
for( i = 0; i < marker_num; i++ ) marker_flag[i] = 0;
/* get the paddle position */
paddleGetTrans(paddleInfo, marker_info, marker_flag,
marker_num, &cparam);
/* draw the 3D models */
glClearDepth( 1.0 );
glClear(GL_DEPTH_BUFFER_BIT);
/* draw the paddle, base and menu */
if( paddleInfo->active ){
draw_paddle( paddleInfo);
}
/* get the translation from the multimarker pattern */
if( (err=arMultiGetTransMat(marker_info, marker_num, config)) < 0 ) {
argSwapBuffers();
return;
}
//printf("err = %f\n", err);
if(err > 100.0 ) {
argSwapBuffers();
return;
}
//draw a red ground grid
drawGroundGrid( config->trans, 20, 150.0, 105.0, 0.0);
/* find the paddle position relative to the base */
findPaddlePosition(&curPaddlePos,paddleInfo->trans,config->trans);
/* check for collisions with targets */
for(i=0;i<TARGET_NUM;i++){
myTarget[i].state = NOT_TOUCHED;
if(checkCollision(&curPaddlePos,myTarget[i].pos,20.0))
{
myTarget[i].state = TOUCHED;
fprintf(stderr,"touched !!\n");
}
}
/* draw the targets */
for(i=0;i<TARGET_NUM;i++){
draw(myTarget[i],config->trans);
}
argSwapBuffers();
}
static void init( void )
{
ARParam wparam;
int i;
/* open the video path */
if( arVideoOpen( vconf ) < 0 ) exit(0);
/* find the size of the window */
if( arVideoInqSize(&xsize, &ysize) < 0 ) exit(0);
printf("Image size (x,y) = (%d,%d)\n", xsize, ysize);
/* set the initial camera parameters */
if( arParamLoad(cparam_name, 1, &wparam) < 0 ) {
printf("Camera parameter load error !!\n");
exit(0);
}
arParamChangeSize( &wparam, xsize, ysize, &cparam );
arInitCparam( &cparam );
printf("*** Camera Parameter ***\n");
arParamDisp( &cparam );
/* load the paddle marker file */
if( (paddleInfo = paddleInit(paddle_name)) == NULL ) {
printf("paddleInit error!!\n");
exit(0);
}
printf("Loaded Paddle File\n");
if( (config = arMultiReadConfigFile(config_name)) == NULL ) {
printf("config data load error !!\n");
exit(0);
}
printf("Loaded Multi Marker File\n");
/* initialize the targets */
for (i=0;i<TARGET_NUM;i++){
myTarget[i].pos[0] = 50.0*i;
myTarget[i].pos[1] = -50.0*i;
myTarget[i].pos[2] = 50.0*i;
myTarget[i].state = NOT_TOUCHED;
}
/* open the graphics window */
argInit( &cparam, 1.0, 0, 0, 0, 0 );
}
/* cleanup function called when program exits */
static void cleanup(void)
{
arVideoCapStop();
arVideoClose();
argCleanup();
}
/* find the position of the paddle card relative to the base and set the dropped blob position to this */
static void findPaddlePosition(float curPaddlePos[], double card_trans[3][4],double base_trans[3][4])
{
int i,j;
ARMat *mat_a, *mat_b, *mat_c;
double x, y, z;
/*get card position relative to base pattern */
mat_a = arMatrixAlloc( 4, 4 );
mat_b = arMatrixAlloc( 4, 4 );
mat_c = arMatrixAlloc( 4, 4 );
for( j = 0; j < 3; j++ ) {
for( i = 0; i < 4; i++ ) {
mat_b->m[j*4+i] = base_trans[j][i];
}
}
mat_b->m[3*4+0] = 0.0;
mat_b->m[3*4+1] = 0.0;
mat_b->m[3*4+2] = 0.0;
mat_b->m[3*4+3] = 1.0;
for( j = 0; j < 3; j++ ) {
for( i = 0; i < 4; i++ ) {
mat_a->m[j*4+i] = card_trans[j][i];
}
}
mat_a->m[3*4+0] = 0.0;
mat_a->m[3*4+1] = 0.0;
mat_a->m[3*4+2] = 0.0;
mat_a->m[3*4+3] = 1.0;
arMatrixSelfInv( mat_b );
arMatrixMul( mat_c, mat_b, mat_a );
//x,y,z is card position relative to base pattern
x = mat_c->m[0*4+3];
y = mat_c->m[1*4+3];
z = mat_c->m[2*4+3];
curPaddlePos[0] = x;
curPaddlePos[1] = y;
curPaddlePos[2] = z;
printf("Position: %3.2f %3.2f %3.2f\n",x,-y,z);
arMatrixFree( mat_a );
arMatrixFree( mat_b );
arMatrixFree( mat_c );
}
/* check collision between two points */
static int checkCollision(float pos1[],float pos2[], float range)
{
float xdist,ydist,zdist,dist;
xdist = pos1[0]-pos2[0];
ydist = pos1[1]-pos2[1];
zdist = pos1[2]-pos2[2];
dist = xdist*xdist+ydist*ydist+zdist*zdist;
// fprintf(stderr,"dist=%f\n",dist);
if(dist<(range*range))
return 1;
else
return 0;
}
/* draw the targets */
static void draw( targetInfo myTarget, double BaseTrans[3][4])
{
double gl_para[16];
GLfloat light_position[] = {100.0,-200.0,200.0,0.0};
GLfloat ambi[] = {0.1, 0.1, 0.1, 0.1};
GLfloat lightZeroColor[] = {0.9, 0.9, 0.9, 0.1};
GLfloat mat_ambient2[] = {0.0, 0.0, 1.0, 1.0};
GLfloat mat_ambient[] = {1.0, 0.0, 0.0, 1.0};
GLfloat mat_flash2[] = {0.0, 1.0, 1.0, 1.0};
GLfloat mat_flash_shiny2[]= {50.0};
argDrawMode3D();
argDraw3dCamera( 0, 0 );
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
/* load the camera transformation matrix */
glMatrixMode(GL_MODELVIEW);
argConvGlpara(BaseTrans, gl_para);
glLoadMatrixd( gl_para );
/* set the lighting and the materials */
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambi);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_flash2);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_flash_shiny2);
if(myTarget.state == TOUCHED)
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
else
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient2);
glMatrixMode(GL_MODELVIEW);
glTranslatef( myTarget.pos[0], myTarget.pos[1], myTarget.pos[2] );
glutSolidCube(40.0);
if(myTarget.state == TOUCHED){
glColor3f(1.0,1.0,1.0);
glLineWidth(6.0);
glutWireCube(60.0);
glLineWidth(1.0);
}
glDisable( GL_LIGHTING );
glDisable( GL_DEPTH_TEST );
argDrawMode2D();
}
/* draw the paddle */
int draw_paddle( ARPaddleInfo *paddleInfo )
{
double gl_para[16];
int i;
GLfloat mat_ambient2[] = {0.0, 1.0, 1.0, 1.0};
GLfloat mat_flash2[] = {0.0, 1.0, 1.0, 1.0};
GLfloat mat_flash_shiny2[]= {50.0};
argDrawMode3D();
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
argDraw3dCamera( 0, 0 );
argConvGlpara(paddleInfo->trans, gl_para);
glMatrixMode(GL_MODELVIEW);
glLoadMatrixd( gl_para );
glColor3f( 1.0, 0.0, 0.0 );
glLineWidth(4.0);
glBegin(GL_LINE_LOOP);
glVertex2f( -25.0, -25.0 );
glVertex2f( 25.0, -25.0 );
glVertex2f( 25.0, 25.0 );
glVertex2f( -25.0, 25.0 );
glEnd();
glColor3f( 0.0, 0.0, 1.0);
glBegin(GL_LINE_LOOP);
for( i = 0; i < 16; i++ ) {
double x, y;
x = PADDLE_RADIUS * cos(i*3.141592*2/16);
y = PADDLE_RADIUS * sin(i*3.141592*2/16);
glVertex2d( x, y );
}
glEnd();
glBegin(GL_LINE_LOOP);
glVertex2f( -7.5, 0.0 );
glVertex2f( 7.5, 0.0 );
glVertex2f( 7.5, -105.0 );
glVertex2f( -7.5, -105.0 );
glEnd();
glEnable(GL_BLEND);
glBlendFunc(GL_ZERO,GL_ONE);
glColor4f(1,1,1,0);
glBegin(GL_POLYGON);
for( i = 0; i < 16; i++ ) {
double x, y;
x = 40.0 * cos(i*3.141592*2/16);
y = 40.0 * sin(i*3.141592*2/16);
glVertex2d( x, y );
}
glEnd();
glBegin(GL_POLYGON);
glVertex2f( -7.5, 0.0 );
glVertex2f( 7.5, 0.0 );
glVertex2f( 7.5, -105.0 );
glVertex2f( -7.5, -105.0 );
glEnd();
glDisable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
argDrawMode2D();
return 0;
}
/*************************************************************************************
**
** drawGroundGrid - draws a ground plane
**
***************************************************************************************/
int drawGroundGrid( double trans[3][4], int divisions, float x, float y, float height)
{
double gl_para[16];
int i;
float x0,x1,y0,y1;
float deltaX, deltaY;
argDrawMode3D();
argDraw3dCamera( 0, 0 );
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
/* load the camera transformation matrix */
glMatrixMode(GL_MODELVIEW);
argConvGlpara(trans, gl_para);
glLoadMatrixd( gl_para );
glTranslatef(x/2.,-y/2.,0.);
//draw the grid
glColor3f(1,0,0);
glLineWidth(6.0);
glBegin(GL_LINE_LOOP);
glVertex3f( -x, y, height );
glVertex3f( x, y, height );
glVertex3f( x, -y, height );
glVertex3f( -x, -y, height );
glEnd();
glLineWidth(3.0);
//draw a grid of lines
//X direction
x0 = -x; x1 = -x;
y0 = -y; y1 = y;
deltaX = (2*x)/divisions;
for(i=0;i<divisions;i++){
x0 = x0 + deltaX;
glBegin(GL_LINES);
glVertex3f(x0,y0,height);
glVertex3f(x0,y1,height);
glEnd();
}
x0 = -x; x1 = x;
deltaY = (2*y)/divisions;
for(i=0;i<divisions;i++){
y0 = y0 + deltaY;
glBegin(GL_LINES);
glVertex3f(x0,y0,height);
glVertex3f(x1,y0,height);
glEnd();
}
glLineWidth(1.0);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambi);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor);
glDisable( GL_LIGHTING );
glDisable( GL_DEPTH_TEST );
argDrawMode2D();
return 0;
}
--- NEW FILE: paddleInteractionTest.vcproj ---
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="paddleInteractionTest"
ProjectGUID="{6057A7AF-B6DF-4535-8453-E27EDDDDDD02}">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="1">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(ProjectDir)/../../include"
PreprocessorDefinitions="WIN32;_DEBUG"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
BrowseInformation="1"
WarningLevel="3"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalOptions="/DEBUG"
AdditionalDependencies="libARd.lib libARMultid.lib libARgsubd.lib libARvideod.lib"
OutputFile="$(ProjectDir)/../../bin/$(ProjectName)d.exe"
AdditionalLibraryDirectories=""$(ProjectDir)/../../lib""
GenerateDebugInformation="TRUE"/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="1"
WholeProgramOptimization="TRUE">
<Tool
Name="VCCLCompilerTool"
GlobalOptimizations="TRUE"
InlineFunctionExpansion="1"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories="$(ProjectDir)/../../include"
PreprocessorDefinitions="WIN32;NDEBUG"
RuntimeLibrary="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="libAR.lib libARMulti.lib libARgsub.lib libARvideo.lib"
OutputFile="$(ProjectDir)/../../bin/$(ProjectName).exe"
AdditionalLibraryDirectories=""$(ProjectDir)/../../lib""/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="TRUE"
SuppressStartupBanner="TRUE"
TargetEnvironment="1"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath="paddleInteractionTest.c">
</File>
<File
RelativePath="paddle.c">
</File>
<File
RelativePath="paddle.h">
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
--- NEW FILE: paddleInteractionTest.dsp ---
# Microsoft Developer Studio Project File - Name="paddleInteractionTest" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=paddleInteractionTest - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "paddleInteractionTest.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "paddleInteractionTest.mak" CFG="paddleInteractionTest - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "paddleInteractionTest - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "paddleInteractionTest - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "paddleInteractionTest - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x1409 /d "NDEBUG"
# ADD RSC /l 0x1409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 libAR.lib libARvideo.lib libARgsub.lib libARmulti.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"libc.lib" /out:"../../bin/paddleInteractionTest.exe" /libpath:"..\..\lib"
# SUBTRACT LINK32 /nodefaultlib
!ELSEIF "$(CFG)" == "paddleInteractionTest - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x1409 /d "_DEBUG"
# ADD RSC /l 0x1409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 libARd.lib libARvideod.lib libARgsubd.lib libARmultid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libcd.lib" /out:"../../bin/paddleInteractiond.exe" /pdbtype:sept /libpath:"..\..\lib"
# SUBTRACT LINK32 /nodefaultlib
!ENDIF
# Begin Target
# Name "paddleInteractionTest - Win32 Release"
# Name "paddleInteractionTest - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\paddle.c
# End Source File
# Begin Source File
SOURCE=.\paddleInteractionTest.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\paddle.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project
|