diff --git a/main/BMP.h b/main/BMP.h index 7e0ba4c..4bf9fa4 100644 --- a/main/BMP.h +++ b/main/BMP.h @@ -5,6 +5,10 @@ #include +#define BMP_RED 2 +#define BMP_GREEN 1 +#define BMP_BLUE 0 + class BMP { public: diff --git a/main/Scene.cc b/main/Scene.cc index 658bc5d..416f95a 100644 --- a/main/Scene.cc +++ b/main/Scene.cc @@ -2,6 +2,7 @@ #include "Scene.h" #include #include +#include "BMP.h" using namespace std; Scene::Scene(map options, @@ -12,14 +13,39 @@ Scene::Scene(map options, m_multisample_level = 1; m_output_file_name = "fart.bmp"; m_verbose = false; + m_data = NULL; load(filename); } +Scene::~Scene() +{ + if (m_data != NULL) + delete m_data; +} + void Scene::load(const char * filename) { } void Scene::render() { + m_data = new unsigned char[m_width * m_height * 3]; + for (int i = 0; i < m_height; i++) + { + for (int j = 0; j < m_width; j++) + { + renderPixel(i, j, &m_data[3 * (m_width * i + j)]); + } + } + + BMP outputImage(m_output_file_name.c_str(), m_width, m_height, m_data); +} + +void Scene::renderPixel(int x, int y, unsigned char * pixel) +{ + // TODO: um... real work + pixel[BMP_RED] = 0; + pixel[BMP_GREEN] = 0; + pixel[BMP_BLUE] = 0; } diff --git a/main/Scene.h b/main/Scene.h index 4750fb4..589cae3 100755 --- a/main/Scene.h +++ b/main/Scene.h @@ -10,16 +10,19 @@ class Scene public: Scene(std::map options, const char * filename); + ~Scene(); void render(); private: void load(const char * filename); + void renderPixel(int x, int y, unsigned char * pixel); int m_width; int m_height; int m_multisample_level; std::string m_output_file_name; bool m_verbose; + unsigned char * m_data; }; #endif diff --git a/main/fart.cc b/main/fart.cc index d9583f4..4c1163d 100644 --- a/main/fart.cc +++ b/main/fart.cc @@ -6,6 +6,7 @@ #include #include #include +#include "Scene.h" using namespace std; void usage(const char * progname) @@ -65,5 +66,7 @@ int main(int argc, char * argv[]) usage(argv[0]); } - cout << "hi" << endl; + Scene scene(scene_options, argv[optind]); + + scene.render(); }