00001 00005 #ifndef Light_h 00006 #define Light_h 00007 00008 class Color; 00009 class Point; 00010 class Ray; 00011 class RenderContext; 00012 class Vector; 00013 00014 class Light { 00015 public: 00016 Light(); 00017 virtual ~Light(); 00018 00019 virtual void preprocess(); 00020 virtual double getLight(Color& light_color, Vector& light_direction, 00021 const RenderContext& context, const Point& pos) const = 0; 00022 00023 private: 00024 Light(const Light&); 00025 Light& operator=(const Light&); 00026 }; 00027 00028 #endif 00029