00001
00002
00003
00004
00005 #ifndef MERCATOR_SHADER_H
00006 #define MERCATOR_SHADER_H
00007
00008 #include <string>
00009 #include <map>
00010
00011 namespace Mercator {
00012
00013 class Surface;
00014 class Segment;
00015
00016
00017
00018
00019
00020
00029 class Shader {
00030 private:
00032 const bool m_color;
00034 const bool m_alpha;
00035 protected:
00036 explicit Shader(bool color = false, bool alpha = true);
00037 public:
00038 virtual ~Shader();
00039
00041 bool getColor() const {
00042 return m_color;
00043 }
00044
00046 bool getAlpha() const {
00047 return m_alpha;
00048 }
00049
00050 Surface * newSurface(const Segment &) const;
00051
00057 virtual bool checkIntersect(const Segment &) const = 0;
00058
00060 virtual void shade(Surface &) const = 0;
00061
00063 typedef std::map<std::string, float> Parameters;
00064 };
00065
00066 }
00067
00068 #endif // MERCATOR_SHADER_H