virtual void test(void) { int_point test_point(10, 20); test_point -= top_left_point; test_is_equal(test_point, int_point(9, 18)); }
virtual void test(void) { int_point test_point(10, 20); test_point += top_left_point; test_is_equal(test_point, int_point(11, 22)); }
//The update function gets called once per cycle prior to the draw function void bitmapManipulation::update(){ //Updating once every 16 milliseconds corresponds to a rate of approximately 62.5 frames per second if(GetTickCount() - last_tick_count < 16) { return; } else { last_tick_count = GetTickCount(); } processFrame(); std::vector<gwc::PointEvent> point_events = consumePointEvents(); //Hit-test new points to see if they struck one of the logo objects for(std::vector<gwc::PointEvent>::iterator event_it = point_events.begin(); event_it != point_events.end(); event_it++) { if(event_it->status == gwc::TOUCHADDED) { //All new touchpoints must go through hit testing to see if they apply to our bitmap manipulation; since logo1 is always on top, we check it first if( test_point( event_it->position.getX(), event_it->position.getY(), logo1_dimensions.x, logo1_dimensions.y, logo1_dimensions.width, logo1_dimensions.height, logo1_dimensions.rotation, logo1_dimensions.scale) ) { assignTouchPoint("logo1",event_it->point_id); } else if( test_point( event_it->position.getX(), event_it->position.getY(), logo2_dimensions.x, logo2_dimensions.y, logo2_dimensions.width, logo2_dimensions.height, logo2_dimensions.rotation, logo2_dimensions.scale) ) { assignTouchPoint("logo2",event_it->point_id); } } } //Interpret gesture events std::vector<gwc::GestureEvent> gesture_events = consumeGestureEvents(); for(std::vector<gwc::GestureEvent>::iterator gesture_it = gesture_events.begin(); gesture_it != gesture_events.end(); gesture_it++) { if(gesture_it->target == "logo1") { if(gesture_it->gesture_id == "n-drag") { float new_x = logo1_dimensions.x + gesture_it->values["drag_dx"]; float new_y = logo1_dimensions.y + gesture_it->values["drag_dy"]; logo1_dimensions.x = new_x; logo1_dimensions.y = new_y; } else if(gesture_it->gesture_id == "n-rotate") { //Rotation is about a specific point, so we need to do a coordinate transform and adjust //not only the object's rotation, but it's x and y values as well float temp_x; float temp_y; float rotation_angle = degreesToRads(gesture_it->values["rotate_dtheta"]); //If we have points down, move the box; if there are no points, this is from gesture inertia and there is no //center about which to rotate if(gesture_it->n != 0) { float temp_x = rotateAboutCenterX( logo1_dimensions.x, logo1_dimensions.y, gesture_it->x, gesture_it->y, rotation_angle); float temp_y = rotateAboutCenterY( logo1_dimensions.x, logo1_dimensions.y, gesture_it->x, gesture_it->y, rotation_angle); } logo1_dimensions.rotation = logo1_dimensions.rotation + rotation_angle; } else if(gesture_it->gesture_id == "n-scale") { logo1_dimensions.scale = logo1_dimensions.scale + gesture_it->values["scale_dsx"]; } } else if(gesture_it->target == "logo2") { if(gesture_it->gesture_id == "n-drag") { float new_x = logo2_dimensions.x + gesture_it->values["drag_dx"]; float new_y = logo2_dimensions.y + gesture_it->values["drag_dy"]; logo2_dimensions.x = new_x; logo2_dimensions.y = new_y; } else if(gesture_it->gesture_id == "n-rotate") { //Rotation is about a specific point, so we need to do a coordinate transform and adjust //not only the object's rotation, but it's x and y values as well float rotation_angle = degreesToRads(gesture_it->values["rotate_dtheta"]); float temp_x = rotateAboutCenterX( logo2_dimensions.x, logo2_dimensions.y, gesture_it->x, gesture_it->y, rotation_angle); float temp_y = rotateAboutCenterY( logo2_dimensions.x, logo2_dimensions.y, gesture_it->x, gesture_it->y, rotation_angle); logo2_dimensions.rotation = logo2_dimensions.rotation + rotation_angle; } else if(gesture_it->gesture_id == "n-scale") { logo2_dimensions.scale = logo2_dimensions.scale + gesture_it->values["scale_dsx"]; } } } }
virtual void test(void) { int_point test_point(top_left_point); test_is_equal(test_point, int_point(1, 2)); }
int main(int argc, char *argv[]) { timer t; t.set_print_mode(HMS_MODE); bencrypt=false; bdecrypt=false; bgen_pk=false; bfind_point=false; btest_point=false; bwipe_file=false; bhelp=false; bfile=false; buser=false; bversion=false; bks=false; for(int i=1;i<argc;i++) { if((strcmp(argv[i],"-e")==0) || (strcmp(argv[i],"--encrypt")==0)) { if (i+1 < argc) if(!is_option(argv[i+1])) { bencrypt=true; filename=argv[i+1]; bfile=true; i++; continue; } banner(); cerr<<"\nAZTECC ERROR : No filename given."<<endl; exit(1); } if((strcmp(argv[i],"-d")==0) || (strcmp(argv[i],"--decrypt")==0)) { if (i+1 < argc) if(!is_option(argv[i+1])) { bdecrypt=true; filename=argv[i+1]; bfile=true; i++; continue; } banner(); cerr<<"\nAZTECC ERROR : No filename given."<<endl; exit(1); } if((strcmp(argv[i],"-g")==0) || (strcmp(argv[i],"--genkey")==0)) bgen_pk=true; if((strcmp(argv[i],"-k")==0) || (strcmp(argv[i],"--keysize")==0)) { if (i+1 < argc) if(!is_option(argv[i+1])) { bks=true; keysize=argv[i+1]; i++; continue; } banner(); cerr<<"\nAZTECC ERROR : No valid keysize given."<<endl; exit(1); } if((strcmp(argv[i],"-u")==0) || (strcmp(argv[i],"--user")==0)) { if (i+1 < argc) if(!is_option(argv[i+1])) { username=argv[i+1]; buser=true; i++; continue; } banner(); cerr<<"\nAZTECC ERROR : No valid username given."<<endl; exit(1); } if((strcmp(argv[i],"-pk")==0) || (strcmp(argv[i],"--pubkey")==0)) { if(!is_option(argv[i+1])) { pubkey=argv[i+1]; i++; continue; } banner(); cerr<<"\nAZTECC ERROR : No public key filename given."<<endl; exit(1); } // find and test point if((strcmp(argv[i],"-f")==0) || (strcmp(argv[i],"--find")==0)) bfind_point=true; if((strcmp(argv[i],"-t")==0) || (strcmp(argv[i],"--test")==0)) btest_point=true; if((strcmp(argv[i],"-h")==0) || (strcmp(argv[i],"--help")==0)) bhelp=true; if((strcmp(argv[i],"-v")==0) || (strcmp(argv[i],"--version")==0)) bversion=true; if((strcmp(argv[i],"-w")==0) || (strcmp(argv[i],"--wipe")==0)) { if (i+1 < argc) if(!is_option(argv[i+1])) { filename=argv[i+1]; bwipe_file=true; bfile=true; i++; continue; } banner(); cerr<<"\nAZTECC ERROR : No filename given."<<endl; exit(1); } } if((bencrypt) && (buser) && (bfile) && (!bdecrypt) && (!bgen_pk) && (!bfind_point) && (!btest_point) && (!bhelp) && (!bwipe_file) && (!bversion) && (!bks)) { t.start_timer(); encrypt_file(pubkey,username,filename); t.stop_timer(); cout<<"\nElapsed time : "<<t<<endl; exit(0); } if((bdecrypt) && (bfile) && (!buser) && (!bencrypt) && (!bgen_pk) && (!bfind_point) && (!btest_point) && (!bhelp) && (!bwipe_file) && (!bversion) && (!bks)) { t.start_timer(); decrypt_file(pubkey,filename); t.stop_timer(); cout<<"\nElapsed time : "<<t<<endl; exit(0); } if((bgen_pk) && (bks) && (!buser) && (!bencrypt) && (!bdecrypt) && (!bfind_point) && (!btest_point) && (!bhelp) && (!bwipe_file) && (!bversion)) { if(strcmp(keysize,"160")==0) blocksize=20; else if(strcmp(keysize,"192")==0) blocksize=24; else { banner(); cerr<<"\nAZTECC ERROR : Keysize not valid.\n"; exit(1); } gen_pubkey(pubkey,blocksize); exit(0); } if((bfind_point) && (!bencrypt) && (!bdecrypt) && (!bgen_pk) && (!btest_point) && (!bhelp) && (!bwipe_file) && (!bversion) && (!buser) && (!bks)) { find_point(); exit(0); } if((btest_point) && (!bencrypt) && (!bdecrypt) && (!bgen_pk) && (!bfind_point) && (!bhelp) && (!bwipe_file) && (!bversion) && (!buser) && (!bks)) { test_point(); exit(0); } if((bwipe_file) && (bfile) && (!bencrypt) && (!bdecrypt) && (!bgen_pk) && (!bfind_point) && (!btest_point) && (!bhelp) && (!bversion) && (!buser) && (!bks)) { wipe_file(filename); exit(0); } if((bversion) && (!bencrypt) && (!bdecrypt) && (!bgen_pk) && (!bfind_point) && (!btest_point) && (!bhelp) && (!bwipe_file) && (!buser) && (!bks)) { version(); exit(0); } if(bhelp) { usage(); exit(0); } else usage(); return 0; }