From 510c9a95fb5f3f4a40a19ce66c95344c2013085f Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sun, 12 Apr 2009 15:41:29 +0000 Subject: Change argument order of dmnsn_set_pixel; write C++ canvas wrapper. --- libdimension-png/png.c | 8 ++++---- libdimension/canvas.c | 4 ++-- libdimension/dimension/canvas.h | 4 ++-- libdimensionxx/canvas.cpp | 8 ++++++++ libdimensionxx/dimensionxx/canvas.hpp | 22 ++++++++++++++++++++++ tests/png.c | 6 +++--- 6 files changed, 41 insertions(+), 11 deletions(-) diff --git a/libdimension-png/png.c b/libdimension-png/png.c index 2eb6a7d..9bd22be 100644 --- a/libdimension-png/png.c +++ b/libdimension-png/png.c @@ -231,7 +231,7 @@ dmnsn_png_read_canvas(dmnsn_canvas **canvas, FILE *file) color = dmnsn_color_from_sRGB(sRGB); color.trans = ((double)((png_pixel[6] << UINT16_C(8)) + png_pixel[7]))/UINT16_MAX; - dmnsn_set_pixel(*canvas, color, x, height - y - 1); + dmnsn_set_pixel(*canvas, x, height - y - 1, color); } } } else { @@ -247,7 +247,7 @@ dmnsn_png_read_canvas(dmnsn_canvas **canvas, FILE *file) /UINT16_MAX; color = dmnsn_color_from_sRGB(sRGB); - dmnsn_set_pixel(*canvas, color, x, height - y - 1); + dmnsn_set_pixel(*canvas, x, height - y - 1, color); } } } @@ -264,7 +264,7 @@ dmnsn_png_read_canvas(dmnsn_canvas **canvas, FILE *file) color = dmnsn_color_from_sRGB(sRGB); color.trans = ((double)png_pixel[3])/UINT8_MAX; - dmnsn_set_pixel(*canvas, color, x, height - y - 1); + dmnsn_set_pixel(*canvas, x, height - y - 1, color); } } } else { @@ -277,7 +277,7 @@ dmnsn_png_read_canvas(dmnsn_canvas **canvas, FILE *file) sRGB.B = ((double)png_pixel[2])/UINT8_MAX; color = dmnsn_color_from_sRGB(sRGB); - dmnsn_set_pixel(*canvas, color, x, height - y - 1); + dmnsn_set_pixel(*canvas, x, height - y - 1, color); } } } diff --git a/libdimension/canvas.c b/libdimension/canvas.c index 257f1a9..49096fc 100644 --- a/libdimension/canvas.c +++ b/libdimension/canvas.c @@ -111,8 +111,8 @@ dmnsn_get_pixel(const dmnsn_canvas *canvas, unsigned int x, unsigned int y) } void -dmnsn_set_pixel(dmnsn_canvas *canvas, dmnsn_color color, - unsigned int x, unsigned int y) +dmnsn_set_pixel(dmnsn_canvas *canvas, + unsigned int x, unsigned int y, dmnsn_color color) { dmnsn_wrlock_pixel(canvas, x, y); canvas->pixels[y*canvas->x + x] = color; diff --git a/libdimension/dimension/canvas.h b/libdimension/dimension/canvas.h index 9a70327..4449403 100644 --- a/libdimension/dimension/canvas.h +++ b/libdimension/dimension/canvas.h @@ -46,8 +46,8 @@ void dmnsn_delete_canvas(dmnsn_canvas *canvas); /* These handle the rwlocks correctly */ dmnsn_color dmnsn_get_pixel(const dmnsn_canvas *canvas, unsigned int x, unsigned int y); -void dmnsn_set_pixel(dmnsn_canvas *canvas, dmnsn_color color, - unsigned int x, unsigned int y); +void dmnsn_set_pixel(dmnsn_canvas *canvas, + unsigned int x, unsigned int y, dmnsn_color color); /* Manual locking */ void dmnsn_rdlock_pixel(const dmnsn_canvas *canvas, diff --git a/libdimensionxx/canvas.cpp b/libdimensionxx/canvas.cpp index 8b90fe9..2340066 100644 --- a/libdimensionxx/canvas.cpp +++ b/libdimensionxx/canvas.cpp @@ -19,3 +19,11 @@ *************************************************************************/ #include "dimensionxx.hpp" + +namespace Dimension +{ + Canvas::~Canvas() + { + dmnsn_delete_canvas(m_canvas); + } +} diff --git a/libdimensionxx/dimensionxx/canvas.hpp b/libdimensionxx/dimensionxx/canvas.hpp index e2e493a..f51aa75 100644 --- a/libdimensionxx/dimensionxx/canvas.hpp +++ b/libdimensionxx/dimensionxx/canvas.hpp @@ -23,6 +23,28 @@ namespace Dimension { + class Canvas + { + public: + Canvas(unsigned int x, unsigned int y) + : m_canvas(dmnsn_new_canvas(x, y)) { } + virtual ~Canvas(); + + Color pixel(unsigned int x, unsigned int y) const + { return Color(dmnsn_get_pixel(m_canvas, x, y)); } + void pixel(unsigned int x, unsigned int y, const Color& c) + { dmnsn_set_pixel(m_canvas, x, y, c.dmnsn()); } + + dmnsn_canvas* dmnsn() { return m_canvas; } + const dmnsn_canvas* dmnsn() const { return m_canvas; } + + private: + dmnsn_canvas* m_canvas; + + // Copying prohibited + Canvas(const Canvas&); + Canvas& operator=(const Canvas&); + }; } #endif /* DIMENSIONXX_CANVAS_HPP */ diff --git a/tests/png.c b/tests/png.c index 2b3bf5b..b7edd95 100644 --- a/tests/png.c +++ b/tests/png.c @@ -67,7 +67,7 @@ int main() { color.trans = 0.5; } - dmnsn_set_pixel(canvas, color, i, j); + dmnsn_set_pixel(canvas, i, j, color); /* * CIE Lab colorspace @@ -85,7 +85,7 @@ int main() { color.trans = 0.5; } - dmnsn_set_pixel(canvas, color, i + x, j); + dmnsn_set_pixel(canvas, i + x, j, color); /* * CIE Luv colorspace @@ -103,7 +103,7 @@ int main() { color.trans = 0.5; } - dmnsn_set_pixel(canvas, color, i + 2*x, j); + dmnsn_set_pixel(canvas, i + 2*x, j, color); } } -- cgit v1.2.3