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); }