Assignments
Assignments
image.h
Go to the documentation of this file.
1#ifndef IMAGE_INCLUDED
2#define IMAGE_INCLUDED
3
4#include <stdio.h>
5#include <string>
6#include <stdexcept>
7#include <Util/geometry.h>
8#include "lineSegments.h"
9
10namespace Image
11{
13 class Pixel32
14 {
15 public:
17 unsigned char r;
18
20 unsigned char g;
21
23 unsigned char b;
24
26 unsigned char a;
27
29 Pixel32( void );
30 };
31
32
34 class Image32
35 {
38
41
43 void _assertInBounds( int x , int y ) const;
44 public:
45
47 struct iterator
48 {
49 using iterator_category = std::forward_iterator_tag;
50 using reference = Pixel32 &;
51 using pointer = Pixel32 *;
53 using difference_type = std::ptrdiff_t;
54
55 iterator( void ) : _p(NULL) {}
56 iterator( Pixel32 *p ) : _p(p) {}
57 bool operator == ( const iterator &it ) const { return _p==it._p; }
58 bool operator != ( const iterator &it ) const { return _p!=it._p; }
59 iterator operator ++( int ) const { iterator it = *this ; it._p++ ; return it; }
60 iterator &operator ++( void ){ _p++ ; return *this; }
61 Pixel32 &operator * ( void ){ return *_p; }
62 protected:
63 friend Image32;
65 };
66 iterator begin( void ){ return iterator( _pixels ); }
67 iterator end( void ){ return iterator( _pixels+_width*_height ); }
68
70 Image32( void );
71
73 Image32( const Image32& img );
74
76 Image32( Image32&& img );
77
79 Image32& operator = ( const Image32& img );
80
82 Image32& operator = ( Image32&& img );
83
85 ~Image32( void );
86
88 void setSize( int width , int height );
89
91 int width( void ) const;
92
94 int height( void ) const;
95
98 Pixel32& operator() ( int x , int y );
99
102 const Pixel32& operator() ( int x , int y ) const;
103
105 void read( std::string fileName );
106
108 void write( std::string fileName ) const;
109
113 Image32 addRandomNoise( double noise ) const;
114
117 Image32 brighten( double brightness ) const;
118
120 Image32 luminance( void ) const;
121
124 Image32 contrast( double contrast ) const;
125
128 Image32 saturate( double saturation ) const;
129
133 Image32 quantize( int bits ) const;
134
138 Image32 randomDither( int bits ) const;
139
143 Image32 orderedDither2X2( int bits ) const;
144
148 Image32 floydSteinbergDither( int bits ) const;
149
151 Image32 blur3X3( void ) const;
152
154 Image32 edgeDetect3X3( void ) const;
155
159 Image32 scaleNearest( double scaleFactor ) const;
160
163 Image32 scaleBilinear( double scaleFactor ) const;
164
167 Image32 scaleGaussian( double scaleFactor ) const;
168
171 Image32 rotateNearest( double angle ) const;
172
175 Image32 rotateBilinear( double angle ) const;
176
179 Image32 rotateGaussian( double angle ) const;
180
183 void setAlpha( const Image32& matte );
184
187 Image32 composite( const Image32& overlay ) const;
188
191 Image32 crop( int x1 , int y1 , int x2 , int y2 ) const;
192
194 Image32 funFilter( void ) const;
195
199 static Image32 BeierNeelyMorph( const Image32& source , const Image32& destination , const OrientedLineSegmentPairs& olsp , double timeStep );
200
202 Image32 warp( const OrientedLineSegmentPairs& olsp ) const;
203
207 static Image32 CrossDissolve( const Image32& source , const Image32& destination , double blendWeight );
208
212
216
219 Pixel32 gaussianSample( Util::Point2D p , double variance , double radius ) const;
220 };
221}
222#endif // IMAGE_INCLUDED
223
Definition: image.h:35
Image32 composite(const Image32 &overlay) const
Definition: image.todo.cpp:174
Image32 & operator=(const Image32 &img)
Definition: image.cpp:29
Image32 blur3X3(void) const
Definition: image.todo.cpp:94
Image32 brighten(double brightness) const
Definition: image.todo.cpp:22
Pixel32 * _pixels
Definition: image.h:40
~Image32(void)
Definition: image.cpp:52
Image32 scaleNearest(double scaleFactor) const
Definition: image.todo.cpp:112
Image32 scaleGaussian(double scaleFactor) const
Definition: image.todo.cpp:130
Image32 orderedDither2X2(int bits) const
Definition: image.todo.cpp:76
Image32 randomDither(int bits) const
Definition: image.todo.cpp:67
int height(void) const
Definition: image.cpp:89
void _assertInBounds(int x, int y) const
Definition: image.cpp:70
void setAlpha(const Image32 &matte)
Definition: image.todo.cpp:166
Image32 rotateBilinear(double angle) const
Definition: image.todo.cpp:148
Image32 warp(const OrientedLineSegmentPairs &olsp) const
Definition: image.todo.cpp:192
int _height
Definition: image.h:37
int _width
Definition: image.h:37
Image32 contrast(double contrast) const
Definition: image.todo.cpp:40
Image32 scaleBilinear(double scaleFactor) const
Definition: image.todo.cpp:121
Pixel32 bilinearSample(Util::Point2D p) const
Definition: image.todo.cpp:228
void read(std::string fileName)
Definition: image.cpp:118
Image32 crop(int x1, int y1, int x2, int y2) const
Definition: image.todo.cpp:210
Image32 funFilter(void) const
Definition: image.todo.cpp:201
Image32 addRandomNoise(double noise) const
Definition: image.todo.cpp:13
Pixel32 & operator()(int x, int y)
Definition: image.cpp:75
Image32 luminance(void) const
Definition: image.todo.cpp:31
Image32 edgeDetect3X3(void) const
Definition: image.todo.cpp:103
Image32 quantize(int bits) const
Definition: image.todo.cpp:58
Pixel32 gaussianSample(Util::Point2D p, double variance, double radius) const
Definition: image.todo.cpp:237
int width(void) const
Definition: image.cpp:87
static Image32 BeierNeelyMorph(const Image32 &source, const Image32 &destination, const OrientedLineSegmentPairs &olsp, double timeStep)
Definition: image.cpp:91
void setSize(int width, int height)
Definition: image.cpp:54
Pixel32 nearestSample(Util::Point2D p) const
Definition: image.todo.cpp:219
Image32 floydSteinbergDither(int bits) const
Definition: image.todo.cpp:85
void write(std::string fileName) const
Definition: image.cpp:126
Image32(void)
Definition: image.cpp:21
iterator begin(void)
Definition: image.h:66
Image32 rotateGaussian(double angle) const
Definition: image.todo.cpp:157
Image32 rotateNearest(double angle) const
Definition: image.todo.cpp:139
Image32 saturate(double saturation) const
Definition: image.todo.cpp:49
static Image32 CrossDissolve(const Image32 &source, const Image32 &destination, double blendWeight)
Definition: image.todo.cpp:183
iterator end(void)
Definition: image.h:67
Definition: lineSegments.h:63
Definition: image.h:14
Pixel32(void)
Definition: image.cpp:16
unsigned char r
Definition: image.h:17
unsigned char a
Definition: image.h:26
unsigned char b
Definition: image.h:23
unsigned char g
Definition: image.h:20
Definition: geometry.h:52
Definition: bmp.cpp:142
Definition: image.h:48
friend Image32
Definition: image.h:63
bool operator!=(const iterator &it) const
Definition: image.h:58
Pixel32 * _p
Definition: image.h:64
Pixel32 & operator*(void)
Definition: image.h:61
iterator(void)
Definition: image.h:55
iterator & operator++(void)
Definition: image.h:60
iterator(Pixel32 *p)
Definition: image.h:56
std::forward_iterator_tag iterator_category
Definition: image.h:49
std::ptrdiff_t difference_type
Definition: image.h:53
bool operator==(const iterator &it) const
Definition: image.h:57