diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:17:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:21:24 +0300 |
commit | e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch) | |
tree | 8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/freestyle/intern/image/ImagePyramid.cpp | |
parent | b3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff) |
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211.
For details on usage and instructions for migrating branches
without conflicts, see:
https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/freestyle/intern/image/ImagePyramid.cpp')
-rw-r--r-- | source/blender/freestyle/intern/image/ImagePyramid.cpp | 216 |
1 files changed, 110 insertions, 106 deletions
diff --git a/source/blender/freestyle/intern/image/ImagePyramid.cpp b/source/blender/freestyle/intern/image/ImagePyramid.cpp index 5683b282a9d..caf469328b5 100644 --- a/source/blender/freestyle/intern/image/ImagePyramid.cpp +++ b/source/blender/freestyle/intern/image/ImagePyramid.cpp @@ -32,152 +32,156 @@ namespace Freestyle { #if 0 ImagePyramid::ImagePyramid(const GrayImage& level0, unsigned nbLevels) { - BuildPyramid(level0,nbLevels); + BuildPyramid(level0,nbLevels); } #endif -ImagePyramid::ImagePyramid(const ImagePyramid& /*iBrother*/) +ImagePyramid::ImagePyramid(const ImagePyramid & /*iBrother*/) { - if (!_levels.empty()) { - for (vector<GrayImage*>::iterator im = _levels.begin(), imend = _levels.end(); im != imend; ++im) { - _levels.push_back(new GrayImage(**im)); - } - } + if (!_levels.empty()) { + for (vector<GrayImage *>::iterator im = _levels.begin(), imend = _levels.end(); im != imend; + ++im) { + _levels.push_back(new GrayImage(**im)); + } + } } ImagePyramid::~ImagePyramid() { - if (!_levels.empty()) { - for (vector<GrayImage*>::iterator im = _levels.begin(), imend = _levels.end(); im != imend; ++im) { - delete (*im); - } - _levels.clear(); - } + if (!_levels.empty()) { + for (vector<GrayImage *>::iterator im = _levels.begin(), imend = _levels.end(); im != imend; + ++im) { + delete (*im); + } + _levels.clear(); + } } GrayImage *ImagePyramid::getLevel(int l) { - return _levels[l]; + return _levels[l]; } float ImagePyramid::pixel(int x, int y, int level) { - GrayImage *img = _levels[level]; - if (0 == level) { - return img->pixel(x, y); - } - unsigned int i = 1 << level; - unsigned int sx = x >> level; - unsigned int sy = y >> level; - if (sx >= img->width()) - sx = img->width() - 1; - if (sy >= img->height()) - sy = img->height() - 1; - - // bilinear interpolation - float A = i * (sx + 1) - x; - float B = x - i * sx; - float C = i * (sy + 1) - y; - float D = y - i * sy; - - float P1(0), P2(0); - P1 = A * img->pixel(sx, sy); - if (sx < img->width() - 1) { - if (x % i != 0) - P1 += B * img->pixel(sx + 1, sy); - } - else { - P1 += B * img->pixel(sx, sy); - } - if (sy < img->height() - 1) { - if (y % i != 0) { - P2 = A * img->pixel(sx, sy + 1); - if (sx < img->width() - 1) { - if (x % i != 0) - P2 += B * img->pixel(sx + 1, sy + 1); - } - else { - P2 += B * img->pixel(sx, sy + 1); - } - } - } - else { - P2 = P1; - } - return (1.0f / (float)(1 << (2 * level))) * (C * P1 + D * P2); + GrayImage *img = _levels[level]; + if (0 == level) { + return img->pixel(x, y); + } + unsigned int i = 1 << level; + unsigned int sx = x >> level; + unsigned int sy = y >> level; + if (sx >= img->width()) + sx = img->width() - 1; + if (sy >= img->height()) + sy = img->height() - 1; + + // bilinear interpolation + float A = i * (sx + 1) - x; + float B = x - i * sx; + float C = i * (sy + 1) - y; + float D = y - i * sy; + + float P1(0), P2(0); + P1 = A * img->pixel(sx, sy); + if (sx < img->width() - 1) { + if (x % i != 0) + P1 += B * img->pixel(sx + 1, sy); + } + else { + P1 += B * img->pixel(sx, sy); + } + if (sy < img->height() - 1) { + if (y % i != 0) { + P2 = A * img->pixel(sx, sy + 1); + if (sx < img->width() - 1) { + if (x % i != 0) + P2 += B * img->pixel(sx + 1, sy + 1); + } + else { + P2 += B * img->pixel(sx, sy + 1); + } + } + } + else { + P2 = P1; + } + return (1.0f / (float)(1 << (2 * level))) * (C * P1 + D * P2); } int ImagePyramid::width(int level) { - return _levels[level]->width(); + return _levels[level]->width(); } int ImagePyramid::height(int level) { - return _levels[level]->height(); + return _levels[level]->height(); } -GaussianPyramid::GaussianPyramid(const GrayImage& level0, unsigned nbLevels, float iSigma) : ImagePyramid() +GaussianPyramid::GaussianPyramid(const GrayImage &level0, unsigned nbLevels, float iSigma) + : ImagePyramid() { - _sigma = iSigma; - BuildPyramid(level0, nbLevels); + _sigma = iSigma; + BuildPyramid(level0, nbLevels); } -GaussianPyramid::GaussianPyramid(GrayImage *level0, unsigned nbLevels, float iSigma) : ImagePyramid() +GaussianPyramid::GaussianPyramid(GrayImage *level0, unsigned nbLevels, float iSigma) + : ImagePyramid() { - _sigma = iSigma; - BuildPyramid(level0, nbLevels); + _sigma = iSigma; + BuildPyramid(level0, nbLevels); } -GaussianPyramid::GaussianPyramid(const GaussianPyramid& iBrother) : ImagePyramid(iBrother) +GaussianPyramid::GaussianPyramid(const GaussianPyramid &iBrother) : ImagePyramid(iBrother) { - _sigma = iBrother._sigma; + _sigma = iBrother._sigma; } -void GaussianPyramid::BuildPyramid(const GrayImage& level0, unsigned nbLevels) +void GaussianPyramid::BuildPyramid(const GrayImage &level0, unsigned nbLevels) { - GrayImage *pLevel = new GrayImage(level0); - BuildPyramid(pLevel, nbLevels); + GrayImage *pLevel = new GrayImage(level0); + BuildPyramid(pLevel, nbLevels); } void GaussianPyramid::BuildPyramid(GrayImage *level0, unsigned nbLevels) { - GrayImage *pLevel = level0; - _levels.push_back(pLevel); - GaussianFilter gf(_sigma); - // build the nbLevels: - unsigned w = pLevel->width(); - unsigned h = pLevel->height(); - if (nbLevels != 0) { - for (unsigned int i = 0; i < nbLevels; ++i) { //soc - w = pLevel->width() >> 1; - h = pLevel->height() >> 1; - GrayImage *img = new GrayImage(w, h); - for (unsigned int y = 0; y < h; ++y) { - for (unsigned int x = 0; x < w; ++x) { - float v = gf.getSmoothedPixel<GrayImage>(pLevel, 2 * x, 2 * y); - img->setPixel(x, y, v); - } - } - _levels.push_back(img); - pLevel = img; - } - } - else { - while ((w > 1) && (h > 1)) { - w = pLevel->width() >> 1; - h = pLevel->height() >> 1; - GrayImage *img = new GrayImage(w, h); - for (unsigned int y = 0; y < h; ++y) { - for (unsigned int x = 0; x < w; ++x) { - float v = gf.getSmoothedPixel<GrayImage>(pLevel, 2 * x, 2 * y); - img->setPixel(x, y, v); - } - } - _levels.push_back(img); - pLevel = img; - } - } + GrayImage *pLevel = level0; + _levels.push_back(pLevel); + GaussianFilter gf(_sigma); + // build the nbLevels: + unsigned w = pLevel->width(); + unsigned h = pLevel->height(); + if (nbLevels != 0) { + for (unsigned int i = 0; i < nbLevels; ++i) { //soc + w = pLevel->width() >> 1; + h = pLevel->height() >> 1; + GrayImage *img = new GrayImage(w, h); + for (unsigned int y = 0; y < h; ++y) { + for (unsigned int x = 0; x < w; ++x) { + float v = gf.getSmoothedPixel<GrayImage>(pLevel, 2 * x, 2 * y); + img->setPixel(x, y, v); + } + } + _levels.push_back(img); + pLevel = img; + } + } + else { + while ((w > 1) && (h > 1)) { + w = pLevel->width() >> 1; + h = pLevel->height() >> 1; + GrayImage *img = new GrayImage(w, h); + for (unsigned int y = 0; y < h; ++y) { + for (unsigned int x = 0; x < w; ++x) { + float v = gf.getSmoothedPixel<GrayImage>(pLevel, 2 * x, 2 * y); + img->setPixel(x, y, v); + } + } + _levels.push_back(img); + pLevel = img; + } + } } } /* namespace Freestyle */ |