Ray Tracer Common Project
Image rendering program based on the ray tracing technique.
color.hpp
1 
15 #pragma once
16 
17 #include "utils.hpp"
18 #include <algorithm>
19 #include <iostream>
20 
21 struct SDL_PixelFormat;
22 
23 namespace rt{
31  class color{
32  public:
33  static color WHITE;
34  static color GRAY;
35  static color BLACK;
36  static color BLUE;
37  static color GREEN;
38  static color RED;
43  color();
44 
48  color(const color& c);
49 
54  color(double r, double g, double b, double a = 1.0);
55 
59  virtual inline void set_red(double r){
60  _r = std::min(std::max(r, 0.0), 1.0);
61  }
62 
66  virtual inline void set_green(double g){
67  _g = std::min(std::max(g, 0.0), 1.0);
68  }
69 
73  virtual inline void set_blue(double b){
74  _b = std::min(std::max(b, 0.0), 1.0);
75  }
76 
80  virtual inline void set_alpha(double a){
81  _a = std::min(std::max(a, 0.0), 1.0);
82  }
83 
87  inline double red() const{
88  return _r;
89  }
93  inline double green() const{
94  return _g;
95  }
99  inline double blue() const{
100  return _b;
101  }
102 
106  inline double alpha() const{
107  return _a;
108  }
109 
113  virtual bool operator==(const color& c) const;
114 
127  color operator+(const color & c) const;
132  void operator+=(const color & c);
133 
147  color operator*(const color & c) const;
153  void operator*=(const color & c);
154 
160  void operator*=(double f);
161 
168  color operator*(double f) const;
169 
176  virtual operator uint32() const;
177 
183  uint32 map(SDL_PixelFormat *) const;
184 
185  private:
186  double _r, _g, _b, _a;
187  };
188 
192  color operator*(double f, const color & c);
193 
194  std::ostream & operator<<(std::ostream & out, const color & c);
195 }
virtual bool operator==(const color &c) const
Definition: color.cpp:32
static color WHITE
default white color.
Definition: color.hpp:33
virtual void set_green(double g)
Definition: color.hpp:66
Definition: bitmap.cpp:4
color()
Definition: color.cpp:13
static color RED
default red color.
Definition: color.hpp:38
color operator+(const color &c) const
Color addition.
Definition: color.cpp:39
RGBA color representation.
Definition: color.hpp:31
static color GRAY
default gray color.
Definition: color.hpp:34
virtual void set_blue(double b)
Definition: color.hpp:73
double red() const
Definition: color.hpp:87
static color BLUE
default blue color.
Definition: color.hpp:36
virtual void set_red(double r)
Definition: color.hpp:59
void operator*=(const color &c)
Color multiplication.
Definition: color.cpp:54
static color GREEN
default green color.
Definition: color.hpp:37
uint32 map(SDL_PixelFormat *) const
SDL convertion operator.
Definition: color.cpp:79
double blue() const
Definition: color.hpp:99
double green() const
Definition: color.hpp:93
color operator*(const color &c) const
Color multiplication.
Definition: color.cpp:43
virtual void set_alpha(double a)
Definition: color.hpp:80
static color BLACK
default black color.
Definition: color.hpp:35
color operator*(double f, const color &c)
Same as color::operator*(double).
double alpha() const
Definition: color.hpp:106
void operator+=(const color &c)
Color addition See color::operator+ for details.
Definition: color.cpp:47