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));
 }
Exemplo n.º 5
0
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;
}