All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
HeatmapImage.h
1 #pragma once
2 
3 #include "HeatmapShapes.h"
4 #include "Types.h"
5 #include "Graphics.h"
6 
7 #include <vector>
8 
9 namespace Eegeo
10 {
11  namespace Shapes
12  {
13  namespace Heatmaps
14  {
16  {
17  public:
18  HeatmapImage();
19 
20  HeatmapImage(int width,int height);
21 
22  HeatmapImage(const HeatmapImage& other);
23 
24  HeatmapImage& operator=(const HeatmapImage& other);
25 
26  int GetWidth() const { return m_width; }
27  int GetHeight() const { return m_height; }
28  const std::vector<float>& GetImageData() const { return m_imageData; }
29 
30  inline float GetPixel(int x, int y) const;
31  inline void SetPixel(int x, int y, float value);
32  inline bool Contains(int x, int y) const;
33  void Fill(float value);
34  float GetMin() const;
35  float GetMax() const;
36  void Multiply(float value);
37  void MultiplyAdd(float scale, float sum);
38  float GetPixelAtIndex(int index) const { return m_imageData[index]; }
39  inline int IndexOf(int x, int y) const;
40  void SetPixelAtIndex(int index, float value) { m_imageData[index] = value; }
41  void SumPixelAtIndex(int index, float value) { m_imageData[index] += value; }
42 
43  private:
44 
45  int m_width;
46  int m_height;
47  std::vector<float> m_imageData;
48  };
49 
50  inline float HeatmapImage::GetPixel(int x, int y) const
51  {
52  const int index = IndexOf(x, y);
53  return m_imageData[index];
54  }
55 
56  inline void HeatmapImage::SetPixel(int x, int y, float value)
57  {
58  const int index = IndexOf(x, y);
59  m_imageData[index] = value;
60  }
61 
62  inline bool HeatmapImage::Contains(int x, int y) const
63  {
64  return x >= 0 && x < m_width && y >= 0 && y < m_height;
65  }
66 
67  inline int HeatmapImage::IndexOf(int x, int y) const
68  {
69  if (!Contains(x, y))
70  {
71  return -1;
72  }
73  return (y*m_width) + x;
74  }
75 
76  }
77  }
78 }