From 5b92b341b637633a71720a0647d8fe7700c4a69a Mon Sep 17 00:00:00 2001 From: David Rose Date: Wed, 18 Nov 2009 22:55:52 +0000 Subject: [PATCH] fix roundoff error in fill() --- panda/src/pnmimage/pnmImage.I | 6 ++---- panda/src/pnmimage/pnmImageHeader.cxx | 15 +++++++++++++++ panda/src/pnmimage/pnmImageHeader.h | 2 ++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/panda/src/pnmimage/pnmImage.I b/panda/src/pnmimage/pnmImage.I index 1604c7c6dc..50b587fe08 100644 --- a/panda/src/pnmimage/pnmImage.I +++ b/panda/src/pnmimage/pnmImage.I @@ -116,9 +116,7 @@ from_val(xelval input_value) const { //////////////////////////////////////////////////////////////////// INLINE void PNMImage:: fill(double red, double green, double blue) { - fill_val((xelval)(red * get_maxval()), - (xelval)(green * get_maxval()), - (xelval)(blue * get_maxval())); + fill_val(to_val(red), to_val(green), to_val(blue)); } //////////////////////////////////////////////////////////////////// @@ -150,7 +148,7 @@ fill_val(xelval gray) { //////////////////////////////////////////////////////////////////// INLINE void PNMImage:: alpha_fill(double alpha) { - alpha_fill_val((xelval)(alpha * get_maxval())); + alpha_fill_val(to_val(alpha)); } //////////////////////////////////////////////////////////////////// diff --git a/panda/src/pnmimage/pnmImageHeader.cxx b/panda/src/pnmimage/pnmImageHeader.cxx index 1b1b8b404b..e501d160aa 100644 --- a/panda/src/pnmimage/pnmImageHeader.cxx +++ b/panda/src/pnmimage/pnmImageHeader.cxx @@ -542,3 +542,18 @@ output(ostream &out) const { out << "(" << _red << ", " << _green << ", " << _blue << ", " << _alpha << ")"; } +//////////////////////////////////////////////////////////////////// +// Function: PNMImageHeader::Histogram::write +// Access: Public +// Description: +//////////////////////////////////////////////////////////////////// +void PNMImageHeader::Histogram:: +write(ostream &out) const { + out << "Histogram: {\n"; + PixelCount::const_iterator pi; + for (pi = _pixels.begin(); pi != _pixels.end(); ++pi) { + out << " " << (*pi)._pixel << ": " << (*pi)._count << ",\n"; + } + out << "}\n"; +} + diff --git a/panda/src/pnmimage/pnmImageHeader.h b/panda/src/pnmimage/pnmImageHeader.h index 77e5b7c433..7ae5920a82 100644 --- a/panda/src/pnmimage/pnmImageHeader.h +++ b/panda/src/pnmimage/pnmImageHeader.h @@ -167,6 +167,8 @@ PUBLISHED: INLINE int get_count(const PixelSpec &pixel) const; MAKE_SEQ(get_pixels, get_num_pixels, get_pixel); + void write(ostream &out) const; + public: INLINE void swap(PixelCount &pixels, HistMap &hist_map);