diff options
Diffstat (limited to 'source/blender/freestyle/intern/stroke/AdvancedFunctions0D.cpp')
-rw-r--r-- | source/blender/freestyle/intern/stroke/AdvancedFunctions0D.cpp | 126 |
1 files changed, 68 insertions, 58 deletions
diff --git a/source/blender/freestyle/intern/stroke/AdvancedFunctions0D.cpp b/source/blender/freestyle/intern/stroke/AdvancedFunctions0D.cpp index 0047940a5b7..95d4735ddc4 100644 --- a/source/blender/freestyle/intern/stroke/AdvancedFunctions0D.cpp +++ b/source/blender/freestyle/intern/stroke/AdvancedFunctions0D.cpp @@ -29,81 +29,91 @@ namespace Freestyle { namespace Functions0D { -int DensityF0D::operator()(Interface0DIterator& iter) +int DensityF0D::operator()(Interface0DIterator &iter) { - Canvas *canvas = Canvas::getInstance(); - int bound = _filter.getBound(); - - if ((iter->getProjectedX() - bound < 0) || (iter->getProjectedX() + bound>canvas->width()) || - (iter->getProjectedY() - bound < 0) || (iter->getProjectedY() + bound>canvas->height())) - { - result = 0.0; - return 0; - } - - RGBImage image; - canvas->readColorPixels((int)iter->getProjectedX() - bound, (int)iter->getProjectedY() - bound, - _filter.maskSize(), _filter.maskSize(), image); - result = _filter.getSmoothedPixel<RGBImage>(&image, (int)iter->getProjectedX(), (int)iter->getProjectedY()); - - return 0; + Canvas *canvas = Canvas::getInstance(); + int bound = _filter.getBound(); + + if ((iter->getProjectedX() - bound < 0) || (iter->getProjectedX() + bound > canvas->width()) || + (iter->getProjectedY() - bound < 0) || (iter->getProjectedY() + bound > canvas->height())) { + result = 0.0; + return 0; + } + + RGBImage image; + canvas->readColorPixels((int)iter->getProjectedX() - bound, + (int)iter->getProjectedY() - bound, + _filter.maskSize(), + _filter.maskSize(), + image); + result = _filter.getSmoothedPixel<RGBImage>( + &image, (int)iter->getProjectedX(), (int)iter->getProjectedY()); + + return 0; } - -int LocalAverageDepthF0D::operator()(Interface0DIterator& iter) +int LocalAverageDepthF0D::operator()(Interface0DIterator &iter) { - Canvas *iViewer = Canvas::getInstance(); - int bound = _filter.getBound(); - - if ((iter->getProjectedX() - bound < 0) || (iter->getProjectedX() + bound>iViewer->width()) || - (iter->getProjectedY() - bound < 0) || (iter->getProjectedY() + bound>iViewer->height())) - { - result = 0.0; - return 0; - } - - GrayImage image; - iViewer->readDepthPixels((int)iter->getProjectedX() - bound, (int)iter->getProjectedY() - bound, - _filter.maskSize(), _filter.maskSize(), image); - result = _filter.getSmoothedPixel(&image, (int)iter->getProjectedX(), (int)iter->getProjectedY()); - - return 0; + Canvas *iViewer = Canvas::getInstance(); + int bound = _filter.getBound(); + + if ((iter->getProjectedX() - bound < 0) || (iter->getProjectedX() + bound > iViewer->width()) || + (iter->getProjectedY() - bound < 0) || (iter->getProjectedY() + bound > iViewer->height())) { + result = 0.0; + return 0; + } + + GrayImage image; + iViewer->readDepthPixels((int)iter->getProjectedX() - bound, + (int)iter->getProjectedY() - bound, + _filter.maskSize(), + _filter.maskSize(), + image); + result = _filter.getSmoothedPixel( + &image, (int)iter->getProjectedX(), (int)iter->getProjectedY()); + + return 0; } -int ReadMapPixelF0D::operator()(Interface0DIterator& iter) +int ReadMapPixelF0D::operator()(Interface0DIterator &iter) { - Canvas *canvas = Canvas::getInstance(); - result = canvas->readMapPixel(_mapName, _level, (int)iter->getProjectedX(), (int)iter->getProjectedY()); - return 0; + Canvas *canvas = Canvas::getInstance(); + result = canvas->readMapPixel( + _mapName, _level, (int)iter->getProjectedX(), (int)iter->getProjectedY()); + return 0; } -int ReadSteerableViewMapPixelF0D::operator()(Interface0DIterator& iter) +int ReadSteerableViewMapPixelF0D::operator()(Interface0DIterator &iter) { - SteerableViewMap *svm = Canvas::getInstance()->getSteerableViewMap(); - result = svm->readSteerableViewMapPixel(_orientation, _level, (int)iter->getProjectedX(), - (int)iter->getProjectedY()); - return 0; + SteerableViewMap *svm = Canvas::getInstance()->getSteerableViewMap(); + result = svm->readSteerableViewMapPixel( + _orientation, _level, (int)iter->getProjectedX(), (int)iter->getProjectedY()); + return 0; } -int ReadCompleteViewMapPixelF0D::operator()(Interface0DIterator& iter) +int ReadCompleteViewMapPixelF0D::operator()(Interface0DIterator &iter) { - SteerableViewMap *svm = Canvas::getInstance()->getSteerableViewMap(); - result = svm->readCompleteViewMapPixel(_level, (int)iter->getProjectedX(), (int)iter->getProjectedY()); - return 0; + SteerableViewMap *svm = Canvas::getInstance()->getSteerableViewMap(); + result = svm->readCompleteViewMapPixel( + _level, (int)iter->getProjectedX(), (int)iter->getProjectedY()); + return 0; } -int GetViewMapGradientNormF0D::operator()(Interface0DIterator& iter) +int GetViewMapGradientNormF0D::operator()(Interface0DIterator &iter) { - SteerableViewMap *svm = Canvas::getInstance()->getSteerableViewMap(); - float pxy = svm->readCompleteViewMapPixel(_level, (int)iter->getProjectedX(), (int)iter->getProjectedY()); - float gx = svm->readCompleteViewMapPixel(_level, (int)iter->getProjectedX() + _step, - (int)iter->getProjectedY()) - pxy; - float gy = svm->readCompleteViewMapPixel(_level, (int)iter->getProjectedX(), - (int)iter->getProjectedY() + _step) - pxy; - result = Vec2f(gx, gy).norm(); - return 0; + SteerableViewMap *svm = Canvas::getInstance()->getSteerableViewMap(); + float pxy = svm->readCompleteViewMapPixel( + _level, (int)iter->getProjectedX(), (int)iter->getProjectedY()); + float gx = svm->readCompleteViewMapPixel( + _level, (int)iter->getProjectedX() + _step, (int)iter->getProjectedY()) - + pxy; + float gy = svm->readCompleteViewMapPixel( + _level, (int)iter->getProjectedX(), (int)iter->getProjectedY() + _step) - + pxy; + result = Vec2f(gx, gy).norm(); + return 0; } -} // end of namespace Functions0D +} // end of namespace Functions0D } /* namespace Freestyle */ |