Update of /cvsroot/artoolkit/artoolkit/examples/paddle
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25628
Added Files:
paddle.c paddleTest.dsp paddleTest.c Makefile.in paddle.h
paddleTest.vcproj
Log Message:
Added new examples.
--- NEW FILE: paddleTest.dsp ---
# Microsoft Developer Studio Project File - Name="paddleTest" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=paddleTest - 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 "paddleTest.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 "paddleTest.mak" CFG="paddleTest - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "paddleTest - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "paddleTest - 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)" == "paddleTest - 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/paddleTest.exe" /libpath:"..\..\lib"
# SUBTRACT LINK32 /nodefaultlib
!ELSEIF "$(CFG)" == "paddleTest - 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/paddleTestd.exe" /pdbtype:sept /libpath:"..\..\lib"
# SUBTRACT LINK32 /nodefaultlib
!ENDIF
# Begin Target
# Name "paddleTest - Win32 Release"
# Name "paddleTest - 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=.\paddleTest.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
--- 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: 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: 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)/paddleTest
$(BIN_DIR)/paddleTest: paddleTest.o $(OBJS)
cc -o $(BIN_DIR)/paddleTest paddleTest.o $(OBJS) $(LDFLAG) $(LIBS)
paddleTest.o: paddleTest.c $(HEADDERS)
cc -c $(CFLAG) paddleTest.c
paddle.o: paddle.c $(HEADDERS)
cc -c $(CFLAG) paddle.c
clean:
rm -f *.o
rm -f $(BIN_DIR)/paddleTest
allclean:
rm -f *.o
rm -f $(BIN_DIR)/paddleTest
rm -f Makefile
--- NEW FILE: paddleTest.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/ar.h>
#include <AR/video.h>
#include <AR/arMulti.h>
#include "paddle.h"
int draw_paddle( ARPaddleInfo *paddleInfo );
int xsize, ysize;
int thresh = 100;
int count = 0;
char *cparam_name = "Data/camera_para.dat";
ARParam cparam;
/* set video capture configuration */
/*****************************************************************************/
// 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
/*****************************************************************************/
char *config_name = "Data/multi/marker.dat";
ARMultiMarkerInfoT *config;
//MB - paddle information
int marker_flag[AR_SQUARE_MAX];
ARPaddleInfo *paddleInfo;
char *paddle_name = "Data/paddle_data";
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( double trans1[3][4], double trans2[3][4], int mode );
int main()
{
//initialize application
init();
arVideoCapStart();
//start the main event loop
argMainLoop( NULL, keyEvent, mainLoop );
return 0;
}
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);
}
/* 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;
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();
//MB - multiple marker tracking
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 */
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 the multimarker pattern */
for( i = 0; i < config->marker_num; i++ ) {
if( config->marker[i].visible >= 0 )
draw( config->trans, config->marker[i].trans, 0 );
else
draw( config->trans, config->marker[i].trans, 1 );
}
argSwapBuffers();
}
static void init( void )
{
ARParam wparam;
/* 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");
/* open the graphics window */
// argInit( &cparam, 2.0, 0, 2, 1, 0 );
argInit( &cparam, 1.0, 0, 0, 0, 0 );
}
/* cleanup function called when program exits */
static void cleanup(void)
{
arVideoCapStop();
arVideoClose();
argCleanup();
}
static void draw( double trans1[3][4], double trans2[3][4], int mode )
{
double gl_para[16];
GLfloat mat_ambient[] = {0.0, 0.0, 1.0, 1.0};
GLfloat mat_ambient1[] = {1.0, 0.0, 0.0, 1.0};
GLfloat mat_flash[] = {0.0, 0.0, 1.0, 1.0};
GLfloat mat_flash1[] = {1.0, 0.0, 0.0, 1.0};
GLfloat mat_flash_shiny[] = {50.0};
GLfloat mat_flash_shiny1[]= {50.0};
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};
argDrawMode3D();
argDraw3dCamera( 0, 0 );
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
/* load the camera transformation matrix */
glMatrixMode(GL_MODELVIEW);
argConvGlpara(trans1, gl_para);
glLoadMatrixd( gl_para );
argConvGlpara(trans2, gl_para);
glMultMatrixd( gl_para );
if( mode == 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);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_flash);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_flash_shiny);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
}
else {
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_flash1);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_flash_shiny1);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient1);
}
glMatrixMode(GL_MODELVIEW);
glTranslatef( 0.0, 0.0, 25.0 );
if( !arDebug ) glutSolidCube(50.0);
else glutWireCube(50.0);
glDisable( GL_LIGHTING );
glDisable( GL_DEPTH_TEST );
argDrawMode2D();
}
/* draw the paddle - using a stencil buffer */
int draw_paddle( ARPaddleInfo *paddleInfo )
{
double gl_para[16];
int i;
argDrawMode3D();
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
argDraw3dCamera( 0, 0 );
argConvGlpara(paddleInfo->trans, gl_para);
glMatrixMode(GL_MODELVIEW);
glLoadMatrixd( gl_para );
/* draw the paddle graphics */
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();
/* start drawing the stencil */
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;
}
--- NEW FILE: paddleTest.vcproj ---
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="paddleTest"
ProjectGUID="{FDE263E5-1713-4E16-8199-663CAECA981E}">
<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="paddleTest.c">
</File>
<File
RelativePath="paddle.c">
</File>
<File
RelativePath="paddle.h">
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
|