# HG changeset patch # User Sam Lantinga # Date 1291149526 28800 # Node ID f5f70fed2c4c096f5fd8ca9924a8b12c91d47c0e # Parent 7dafe21ca5d469bdb5208414b0cfd896fac92819 Added a Visual Studio project for testgesture diff -r 7dafe21ca5d4 -r f5f70fed2c4c VisualC/SDL_VS2008.sln --- a/VisualC/SDL_VS2008.sln Tue Nov 30 12:04:01 2010 -0800 +++ b/VisualC/SDL_VS2008.sln Tue Nov 30 12:38:46 2010 -0800 @@ -138,7 +138,26 @@ {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgesture", "tests\testgesture\testgesture_VS2008.vcproj", "{79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + EndProjectSection +EndProject Global + GlobalSection(SourceCodeControl) = preSolution + SccNumberOfProjects = 2 + SccProjectUniqueName0 = SDL\\SDL_VS2008.vcproj + SccProjectName0 = Perforce\u0020Project + SccLocalPath0 = .. + SccProvider0 = MSSCCI:Perforce\u0020SCM + SccProjectFilePathRelativizedFromConnection0 = VisualC\\SDL\\ + SccProjectUniqueName1 = SDLmain\\SDLmain_VS2008.vcproj + SccProjectName1 = Perforce\u0020Project + SccLocalPath1 = .. + SccProvider1 = MSSCCI:Perforce\u0020SCM + SccProjectFilePathRelativizedFromConnection1 = VisualC\\SDLmain\\ + EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 @@ -370,6 +389,15 @@ {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Release|Win32.ActiveCfg = Release|Win32 {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Release|Win32.Build.0 = Release|Win32 {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Release|x64.ActiveCfg = Release|Win32 + {79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}.Debug|Win32.ActiveCfg = Debug|Win32 + {79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}.Debug|Win32.Build.0 = Debug|Win32 + {79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}.Debug|x64.ActiveCfg = Debug|Win32 + {79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}.Release_NoSTDIO|Win32.ActiveCfg = Release|Win32 + {79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}.Release_NoSTDIO|Win32.Build.0 = Release|Win32 + {79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}.Release_NoSTDIO|x64.ActiveCfg = Release|Win32 + {79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}.Release|Win32.ActiveCfg = Release|Win32 + {79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}.Release|Win32.Build.0 = Release|Win32 + {79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -397,5 +425,6 @@ {0FFD1A21-11DB-492C-A989-E4F195B0C441} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} {6AF0724B-BAC1-4C9D-AFBF-F63B4A2FB8FB} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {79CEE57E-1BC3-4FF6-90B3-9E39763CDAFF} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} EndGlobalSection EndGlobal diff -r 7dafe21ca5d4 -r f5f70fed2c4c VisualC/tests/testgesture/testgesture_VS2005.vcproj --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/VisualC/tests/testgesture/testgesture_VS2005.vcproj Tue Nov 30 12:38:46 2010 -0800 @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 7dafe21ca5d4 -r f5f70fed2c4c VisualC/tests/testgesture/testgesture_VS2008.vcproj --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/VisualC/tests/testgesture/testgesture_VS2008.vcproj Tue Nov 30 12:38:46 2010 -0800 @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 7dafe21ca5d4 -r f5f70fed2c4c VisualC/tests/testgesture/testgesture_VS2010.vcxproj --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/VisualC/tests/testgesture/testgesture_VS2010.vcxproj Tue Nov 30 12:38:46 2010 -0800 @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + testgesture + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3} + testgesture + + + + Application + false + + + Application + false + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + .\Debug\ + .\Debug\ + true + .\Release\ + .\Release\ + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testgesture.tlb + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + .\Debug/testgesture.pch + .\Debug/ + .\Debug/ + .\Debug/ + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + .\Debug/testgesture.exe + true + true + .\Debug/testgesture.pdb + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testgesture.tlb + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + .\Release/testgesture.pch + .\Release/ + .\Release/ + .\Release/ + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + /MACHINE:I386 %(AdditionalOptions) + .\Release/testgesture.exe + true + .\Release/testgesture.pdb + Windows + + + + + + + + + .\Debug/testgesture.pch + + + + + + diff -r 7dafe21ca5d4 -r f5f70fed2c4c test/testgesture.c --- a/test/testgesture.c Tue Nov 30 12:04:01 2010 -0800 +++ b/test/testgesture.c Tue Nov 30 12:38:46 2010 -0800 @@ -62,7 +62,7 @@ void handler (int sig) { - printf ("\exiting...(%d)\n", sig); + printf ("exiting...(%d)\n", sig); exit (0); } @@ -72,93 +72,96 @@ handler (9); } -void setpix(SDL_Surface *screen, int x, int y, unsigned int col) +void setpix(SDL_Surface *screen, float _x, float _y, unsigned int col) { Uint32 *pixmem32; Uint32 colour; + Uint8 r,g,b; + int x = (int)_x; + int y = (int)_y; + float a; - if((unsigned)x > screen->w) return; - if((unsigned)y > screen->h) return; + if(x > screen->w) return; + if(y > screen->h) return; pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; - Uint8 r,g,b; - float a; - - memcpy(&colour,pixmem32,screen->format->BytesPerPixel); + SDL_memcpy(&colour,pixmem32,screen->format->BytesPerPixel); SDL_GetRGB(colour,screen->format,&r,&g,&b); //r = 0;g = 0; b = 0; - a = (col>>24)&0xFF; + a = (float)((col>>24)&0xFF); if(a == 0) a = 0xFF; //Hack, to make things easier. a /= 0xFF; - r = r*(1-a) + ((col>>16)&0xFF)*(a); - g = g*(1-a) + ((col>> 8)&0xFF)*(a); - b = b*(1-a) + ((col>> 0)&0xFF)*(a); + r = (Uint8)(r*(1-a) + ((col>>16)&0xFF)*(a)); + g = (Uint8)(g*(1-a) + ((col>> 8)&0xFF)*(a)); + b = (Uint8)(b*(1-a) + ((col>> 0)&0xFF)*(a)); colour = SDL_MapRGB( screen->format,r, g, b); *pixmem32 = colour; } -void drawLine(SDL_Surface *screen,int x0,int y0,int x1,int y1,unsigned int col) { +void drawLine(SDL_Surface *screen,float x0,float y0,float x1,float y1,unsigned int col) { float t; - for(t=0;t<1;t+=1.f/SDL_max(abs(x0-x1),abs(y0-y1))) + for(t=0;t<1;t+=(float)(1.f/SDL_max(SDL_fabs(x0-x1),SDL_fabs(y0-y1)))) setpix(screen,x1+t*(x0-x1),y1+t*(y0-y1),col); } -void drawCircle(SDL_Surface* screen,int x,int y,int r,unsigned int c) +void drawCircle(SDL_Surface* screen,float x,float y,float r,unsigned int c) { - int tx,ty; + float tx,ty; float xr; - for(ty = -abs(r);ty <= abs(r);ty++) { - xr = sqrt(r*r - ty*ty); + for(ty = (float)-SDL_fabs(r);ty <= (float)SDL_fabs((int)r);ty++) { + xr = (float)sqrt(r*r - ty*ty); if(r > 0) { //r > 0 ==> filled circle - for(tx=-xr+.5;tx<=xr-.5;tx++) { + for(tx=-xr+.5f;tx<=xr-.5;tx++) { setpix(screen,x+tx,y+ty,c); } } else { - setpix(screen,x-xr+.5,y+ty,c); - setpix(screen,x+xr-.5,y+ty,c); + setpix(screen,x-xr+.5f,y+ty,c); + setpix(screen,x+xr-.5f,y+ty,c); } } } void drawKnob(SDL_Surface* screen,Knob k) { drawCircle(screen,k.p.x*screen->w,k.p.y*screen->h,k.r*screen->w,0xFFFFFF); - drawCircle(screen,(k.p.x+k.r/2*cos(k.ang))*screen->w, - (k.p.y+k.r/2*sin(k.ang))*screen->h,k.r/4*screen->w,0); + drawCircle(screen,(k.p.x+k.r/2*cosf(k.ang))*screen->w, + (k.p.y+k.r/2*sinf(k.ang))*screen->h,k.r/4*screen->w,0); } void DrawScreen(SDL_Surface* screen) { - int x, y; + int x, y, i; if(SDL_MUSTLOCK(screen)) { if(SDL_LockSurface(screen) < 0) return; } for(y = 0;y < screen->h;y++) for(x = 0;x < screen->w;x++) - setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); + setpix(screen,(float)x,(float)y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); - int i; //draw Touch History for(i = SDL_max(0,eventWrite - EVENT_BUF_SIZE);i < eventWrite;i++) { SDL_Event event = events[i&(EVENT_BUF_SIZE-1)]; int age = eventWrite - i - 1; + float x, y; + unsigned int c, col; + if(event.type == SDL_FINGERMOTION || event.type == SDL_FINGERDOWN || event.type == SDL_FINGERUP) { SDL_Touch* inTouch = SDL_GetTouch(event.tfinger.touchId); if(inTouch == NULL) continue; - float x = ((float)event.tfinger.x)/inTouch->xres; - float y = ((float)event.tfinger.y)/inTouch->yres; + x = ((float)event.tfinger.x)/inTouch->xres; + y = ((float)event.tfinger.y)/inTouch->yres; //draw the touch: - unsigned int c = colors[event.tfinger.touchId%7]; - unsigned int col = + c = colors[event.tfinger.touchId%7]; + col = ((unsigned int)(c*(.1+.85))) | ((unsigned int)((0xFF*(1-((float)age)/EVENT_BUF_SIZE))) & 0xFF)<<24; @@ -186,15 +189,13 @@ { SDL_Surface *screen; SDL_Event event; + SDL_bool quitting = SDL_FALSE; + SDL_RWops *src; //gesture variables - knob.r = .1; + knob.r = .1f; knob.ang = 0; - - SDL_bool quitting = SDL_FALSE; - SDL_RWops *src; - if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; if (!(screen = initScreen(WIDTH,HEIGHT))) @@ -244,14 +245,15 @@ return 1; } break; - case SDL_FINGERMOTION: - ; + case SDL_FINGERMOTION: #if VERBOSE printf("Finger: %i,x: %i, y: %i\n",event.tfinger.fingerId, event.tfinger.x,event.tfinger.y); #endif - SDL_Touch* inTouch = SDL_GetTouch(event.tfinger.touchId); - SDL_Finger* inFinger = SDL_GetFinger(inTouch,event.tfinger.fingerId); + { + SDL_Touch* inTouch = SDL_GetTouch(event.tfinger.touchId); + SDL_Finger* inFinger = SDL_GetFinger(inTouch,event.tfinger.fingerId); + } break; case SDL_FINGERDOWN: #if VERBOSE