#ifndef MATERIAL_H #define MATERIAL_H #include "Image.h" #include "Algebra.h" class Color { public: Color() { r_ = 255; g_ = 255; b_ = 255; }; Color(unsigned char r, unsigned char g, unsigned char b) { r_ = r; g_ = g; b_ = b; }; unsigned char getR() { return r_; }; unsigned char getG() { return g_; }; unsigned char getB() { return b_; }; void setR(unsigned char r) { r_ = r; }; void setG(unsigned char g) { g_ = g; }; void setB(unsigned char b) { b_ = b; }; void setRGB(unsigned char r, unsigned char g, unsigned char b) { r_ = r; g_ = g; b_ = b; }; protected: unsigned char r_; unsigned char g_; unsigned char b_; }; class Material { public: Material(); Material(Color color, real ka, real kd, real ks); Material(unsigned char r, unsigned char g, unsigned char b, real ka, real kd, real ks); virtual void getColorInfo( real xTexture, real yTexture, Color& color, real& ka, real& kd, real& ks); protected: Color color_; real ka_; real kd_; real ks_; }; class ImageTexture : public Material { public: ImageTexture(const char *file_name, real ka, real kd, real ks); virtual void getColorInfo( real xTexture, real yTexture, Color& color, real& ka, real& kd, real& ks); protected: Image image_; int width_; int height_; bool hasImage_; private: bool loadImage(const char *file_name); }; #endif