# HG changeset patch # User Jim Grandpre # Date 1279327723 14400 # Node ID 317a151b79ad07935d31d1ec08d046f0e58a9e40 # Parent 3c4e0130c9b126f94b8b72cdd7d79374e979c3a0 Bug fixes, now using RWops instead of File pointers. diff -r 3c4e0130c9b1 -r 317a151b79ad include/SDL_gesture.h --- a/include/SDL_gesture.h Tue Jul 13 18:31:09 2010 -0400 +++ b/include/SDL_gesture.h Fri Jul 16 20:48:43 2010 -0400 @@ -57,7 +57,7 @@ * * */ - extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(FILE *fp); + extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *src); /** * \brief Save a currently loaded Dollar Gesture template @@ -65,7 +65,7 @@ * */ extern DECLSPEC int - SDLCALL SDL_SaveDollarTemplate(unsigned long gestureId,FILE *fp); + SDLCALL SDL_SaveDollarTemplate(unsigned long gestureId,SDL_RWops *src); /** @@ -73,7 +73,7 @@ * * */ - extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(int touchId, FILE *fp); + extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(int touchId, SDL_RWops *src); diff -r 3c4e0130c9b1 -r 317a151b79ad src/events/SDL_gesture.c --- a/src/events/SDL_gesture.c Tue Jul 13 18:31:09 2010 -0400 +++ b/src/events/SDL_gesture.c Fri Jul 16 20:48:43 2010 -0400 @@ -110,40 +110,50 @@ return hash; } -int SaveTemplate(DollarTemplate *templ, FILE *fp) { +int SaveTemplate(DollarTemplate *templ, SDL_RWops * src) { + if(src == NULL) return 0; int i; - fprintf(fp,"%lu ",templ->hash); + + //No Longer storing the Hash, rehash on load + //fprintf(fp,"%lu ",templ->hash); + //if(SDL_RWops.write(src,&(templ->hash),sizeof(templ->hash),1) != 1) return 0; + + /* for(i = 0;i < DOLLARNPOINTS;i++) { fprintf(fp,"%i %i ",(int)templ->path[i].x,(int)templ->path[i].y); } fprintf(fp,"\n"); + */ + if(SDL_RWwrite(src,templ->path,sizeof(templ->path[0]),DOLLARNPOINTS) != DOLLARNPOINTS) return 0; + return 1; } -int SDL_SaveAllDollarTemplates(FILE *fp) { +int SDL_SaveAllDollarTemplates(SDL_RWops *src) { int i,j,rtrn = 0; for(i = 0; i < numGestureTouches; i++) { GestureTouch* touch = &gestureTouch[i]; for(j = 0;j < touch->numDollarTemplates; j++) { - rtrn += SaveTemplate(&touch->dollarTemplate[i],fp); + rtrn += SaveTemplate(&touch->dollarTemplate[i],src); } } return rtrn; } -int SDL_SaveDollarTemplate(unsigned long gestureId, FILE *fp) { +int SDL_SaveDollarTemplate(unsigned long gestureId, SDL_RWops *src) { int i,j; for(i = 0; i < numGestureTouches; i++) { GestureTouch* touch = &gestureTouch[i]; for(j = 0;j < touch->numDollarTemplates; j++) { if(touch->dollarTemplate[i].hash == gestureId) { - return SaveTemplate(&touch->dollarTemplate[i],fp); + return SaveTemplate(&touch->dollarTemplate[i],src); } } } } -int SDL_LoadDollarTemplates(int touchId, FILE *fp) { +int SDL_LoadDollarTemplates(int touchId, SDL_RWops *src) { + if(src == NULL) return 0; int i,loaded = 0; GestureTouch *touch = NULL; if(touchId >= 0) { @@ -153,9 +163,10 @@ if(touch == NULL) return -1; } - while(!feof(fp)) { + while(1) { DollarTemplate templ; - fscanf(fp,"%lu ",&templ.hash); + //fscanf(fp,"%lu ",&templ.hash); + /* for(i = 0;i < DOLLARNPOINTS; i++) { int x,y; if(fscanf(fp,"%i %i ",&x,&y) != 2) break; @@ -163,22 +174,26 @@ templ.path[i].y = y; } fscanf(fp,"\n"); + */ + if(SDL_RWread(src,templ.path,sizeof(templ.path[0]),DOLLARNPOINTS) < DOLLARNPOINTS) break; if(touchId >= 0) { - if(SDL_AddDollarGesture(touch,templ)) loaded++; + printf("Adding loaded gesture to 1 touch\n"); + if(SDL_AddDollarGesture(touch,templ.path)) loaded++; } else { + printf("Adding to: %i touches\n",numGestureTouches); for(i = 0;i < numGestureTouches; i++) { - if(gestureTouch[i].id == touchId) { - touch = &gestureTouch[i]; - SDL_AddDollarGesture(touch,templ); - } + touch = &gestureTouch[i]; + printf("Adding loaded gesture to + touches\n"); + //TODO: What if this fails? + SDL_AddDollarGesture(touch,templ.path); } loaded++; } } - return 1; + return loaded; } diff -r 3c4e0130c9b1 -r 317a151b79ad touchTest/gestureSDLTest.c --- a/touchTest/gestureSDLTest.c Tue Jul 13 18:31:09 2010 -0400 +++ b/touchTest/gestureSDLTest.c Fri Jul 16 20:48:43 2010 -0400 @@ -305,16 +305,21 @@ SDL_RecordGesture(-1); } else if(event.key.keysym.sym == 115) { - FILE *fp; - fp = fopen("gestureSave","w"); - SDL_SaveAllDollarTemplates(fp); - fclose(fp); + SDL_RWops *src; + //fp = fopen("gestureSave","w"); + src = SDL_RWFromFile("gestureSave","w"); + + printf("Wrote %i templates\n",SDL_SaveAllDollarTemplates(src)); + //fclose(fp); + SDL_RWclose(src); } else if(event.key.keysym.sym == 108) { - FILE *fp; - fp = fopen("gestureSave","r"); - printf("Loaded: %i\n",SDL_LoadDollarTemplates(-1,fp)); - fclose(fp); + SDL_RWops *src; + //fp = fopen("gestureSave","r"); + src = SDL_RWFromFile("gestureSave","r"); + printf("Loaded: %i\n",SDL_LoadDollarTemplates(-1,src)); + //fclose(fp); + SDL_RWclose(src); } //keypress = 1;