Beispiel #1
0
void Mesh :: parse_face(char buffer[], int i, int* vert_faces)
{
	char* token;
	int pos, pos2, pos3;
	float red, green, blue, speed;
	token = strtok(buffer, " ");
	faces[i] = new int[3];
	pos = atoi(token);
	faces[i][0] = pos;
	token = strtok(NULL, " ");
	pos2 = atoi(token);
	faces[i][1] = pos2;
	token = strtok(NULL, " ");
	pos3 = atoi(token);
	faces[i][2] = pos3;
	face_colors[i] = new float[4];
	token = strtok(NULL, " ");
	face_colors[i][0] = atof(token);
	token = strtok(NULL, " ");
	face_colors[i][1] = atof(token);
	token = strtok(NULL, " ");
	face_colors[i][2] = atof(token);
	token = strtok(NULL, " ");
	face_colors[i][3] = atof(token);
	if(face_colors[i][3] > 0)
	{
		token = strtok(NULL, " ");
		red = atof(token);
		token = strtok(NULL, " ");
		green = atof(token);
		token = strtok(NULL, " ");
		blue = atof(token);
		token = strtok(NULL, " ");
		speed = atof(token);
		set_flashing(i, red, green, blue, speed);
	}
	
	// calculate face normal
	calc_face_normal(i);
	
	// add to vertex normals
	// update vertex face counts
	
	vv_add(v_norms[pos],f_norms[i], v_norms[pos]);
	vert_faces[pos]++;
	
	vv_add(v_norms[pos2], f_norms[i], v_norms[pos2]);
	vert_faces[pos2]++;
	
	vv_add(v_norms[pos3], f_norms[i], v_norms[pos3]);
	vert_faces[pos3]++;
}
/**
 * @brief
 *	 Parses all options given to the programm and call the appropritates
 *	 functions.
 * @param argc The number of arguments.
 * @param argv The array of arguments.
 * @return 0 on success, 1 on error.
 */
int		main(int	argc,
		     char**	argv)
{
	int		cheeky_device;
	int		option_index = 0;
	int		c = 0;


	if (argc < 2) {
		usage();
		return (0);
	}

	cheeky_device = open("/dev/cheeky0", O_RDWR);
	if (cheeky_device == -1) {
		printf("cheeky_device: Unable to open the file /dev/cheeky0. Is your user a member of the cheeky group ?\n");
		return (-1);
	}

	while (1) {
		c = getopt_long(argc,
				argv,
				"b:f:m:n:s:t:v:h",
				long_options,
				&option_index);

		if (c == -1)
			break;

		switch (c) {
		case 'b':
			if (set_brighness(optarg, cheeky_device) == -1)
				return (-1);
			break;
		case 'f':
			if (set_flashing(optarg, cheeky_device) == -1)
				return (-1);
			break;
		case 'm':
			if (set_hmove(optarg, cheeky_device) == -1)
				return (-1);
			break;
		case 'n':
			if (set_negative(optarg, cheeky_device) == -1)
				return (-1);
			break;
		case 's':
			if (set_speed(optarg, cheeky_device) == -1)
				return (-1);
			break;
		case 't':
			if (set_text(optarg, cheeky_device) == -1)
				return (-1);
			break;
		case 'v':
			if (set_vmove(optarg, cheeky_device) == -1)
				return (-1);
			break;
		case 'h':
			usage();
			return (0);
			break;
		default:
			usage();
			return (-1);
			break;
		}
	}

	close(cheeky_device);

	return (0);
}