first commit
This commit is contained in:
84
CS4451/proj5/FileReader.cpp
Normal file
84
CS4451/proj5/FileReader.cpp
Normal file
@@ -0,0 +1,84 @@
|
||||
#include "FileReader.h"
|
||||
#include "Renderer.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
//Initialize the FileReader instance
|
||||
FileReader FileReader::m_instance;
|
||||
|
||||
void FileReader::readFile(char* fileName) {
|
||||
char input[81], *inputPtr; //temp string space
|
||||
std::fstream fs; //File Stream
|
||||
int numTris, numPts; //Number of objects
|
||||
|
||||
//Open file
|
||||
fs.open(fileName, std::fstream::in);
|
||||
|
||||
if (!fs.is_open()) {
|
||||
std::cout << "The file failed to open.\n";
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
//Get the # of vertices and # of triangles
|
||||
fs.getline(input,81);
|
||||
|
||||
//Number of Triangles
|
||||
numTris = strtol(input,&inputPtr,0);
|
||||
//Renderer::getInstance()->triangles->reserve(numTris);
|
||||
|
||||
//Number of points
|
||||
numPts = strtol(inputPtr,NULL,0);
|
||||
//Renderer::getInstance()->points->reserve(numPts);
|
||||
|
||||
//skip over the first newline
|
||||
fs.getline(input,81);
|
||||
|
||||
//Read all triangles
|
||||
for (int i = 0; i < numTris; i++) {
|
||||
readTriangle(&fs, i);
|
||||
}
|
||||
|
||||
//skip over the second newline
|
||||
fs.getline(input,81);
|
||||
|
||||
//Read all Points
|
||||
for (int i = 0; i < numPts; i++) {
|
||||
readPoint(&fs, i);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void FileReader::readTriangle(std::fstream *fs, int index) {
|
||||
char input[81], *inputPtr; //temp string space
|
||||
Triangle t;
|
||||
|
||||
//Read next line
|
||||
fs->getline(input,81);
|
||||
|
||||
t.a1 = strtol(input,&inputPtr,0);
|
||||
t.a2 = strtol(inputPtr,&inputPtr,0);
|
||||
t.a3 = strtol(inputPtr,NULL,0);
|
||||
|
||||
t.normal.i = t.normal.j = t.normal.k = 0;
|
||||
|
||||
Renderer::getInstance()->triangles->push_back(t);
|
||||
}
|
||||
|
||||
void FileReader::readPoint(std::fstream *fs, int index) {
|
||||
char input[81], *inputPtr; //temp string space
|
||||
Point p;
|
||||
|
||||
//Read next line
|
||||
fs->getline(input,81);
|
||||
|
||||
p.x = (float)strtod(input,&inputPtr);
|
||||
p.y = (float)strtod(inputPtr,&inputPtr);
|
||||
p.z = (float)strtod(inputPtr,NULL);
|
||||
|
||||
Renderer::getInstance()->points->push_back(p);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user