blob: 18d1a7d2f1791660a9b6cc353042c8dba23fe133 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
/**
* @module cpixelformat
* @author Guenther Neuwirth (0626638), Manuel Mausz (0728348)
* @brief Abstract class for handling different color bitcount of Bitmaps.
* Needed for generic use in CBitmap.
* @date 18.04.2009
*/
#ifndef CPIXELFORMAT_H
#define CPIXELFORMAT_H
#include <fstream>
#include <stdexcept>
class CBitmap;
/**
* @class CPixelFormat
* @brief Abstract class for handling different color bitcount of Bitmaps.
*
* Needed for generic use in CBitmap.
*
* On error throw PixelFormatError.
*/
class CPixelFormat
{
public:
/**
* @class PixelFormatError
* @brief Exception thrown by implemententations of CPixelFormat
*/
class PixelFormatError : public std::invalid_argument {
public:
/**
* @method PixelFormatError
* @brief Default exception ctor
* @param what message to pass along
* @return -
* @globalvars none
* @exception none
* @conditions none
*/
PixelFormatError(const std::string& what)
: std::invalid_argument(what)
{}
};
/**
* @method CPixelFormat
* @brief Default ctor
* @param bitmap pointer to CBitmap instance
* @return -
* @globalvars none
* @exception none
* @conditions none
*/
CPixelFormat(CBitmap *bitmap)
: m_bitmap(bitmap)
{}
/**
* @method ~CPixelFormat
* @brief Default dtor (virtual)
* @param -
* @return -
* @globalvars none
* @exception none
* @conditions none
*/
virtual ~CPixelFormat()
{};
/**
* @brief RGB Pixel structure
*/
typedef struct
{
/** red */
uint32_t red;
/** green */
uint32_t green;
/** blue */
uint32_t blue;
} RGBPIXEL;
/**
* @method getPixel
* @brief Get pixel at coordinates x, y
* @param pixel reference to pixel data
* @param x x-coordinate
* @param y y-coordinate
* @return -
* @globalvars none
* @exception PixelFormatError
* @conditions none
*/
virtual void getPixel(RGBPIXEL& pixel, const uint32_t x, const uint32_t y) = 0;
/**
* @method setPixel
* @brief Modifies pixel at coordinates x, y
* @param pixel reference to new pixel data
* @param x x-coordinate
* @param y y-coordinate
* @return -
* @globalvars none
* @exception PixelFormatError
* @conditions none
*/
virtual void setPixel(const RGBPIXEL& pixel, const uint32_t x, const uint32_t y) = 0;
/**
* @method getBitCount
* @brief returns color bitcount supported by this class
* @param -
* @return color bitcount supported by this class
* @globalvars none
* @exception none
* @conditions none
*/
virtual uint32_t getBitCount() = 0;
/**
* @method getMaxColor
* @brief Get maximum values for RGB pixel
* @param pixel reference to pixel struct
* @return -
* @globalvars none
* @exception none
* @conditions none
*/
virtual void getMaxColor(RGBPIXEL& pixel) = 0;
protected:
/* members */
/** pointer to CBitmap instance */
CBitmap *m_bitmap;
};
#endif
/* vim: set et sw=2 ts=2: */
|