⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 algorithm.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
字号:
/*    Copyright 2005-2007 Adobe Systems Incorporated       Use, modification and distribution are subject to the Boost Software License,    Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at    http://www.boost.org/LICENSE_1_0.txt).    See http://opensource.adobe.com/gil for most recent version including documentation.*//*************************************************************************************************/#ifndef GIL_DYNAMICIMAGE_ALGORITHM_HPP#define GIL_DYNAMICIMAGE_ALGORITHM_HPP#include "../../algorithm.hpp"#include "any_image.hpp"#include <boost/bind.hpp>/////////////////////////////////////////////////////////////////////////////////////////// \file               /// \brief Some basic STL-style algorithms when applied to runtime type specified image views/// \author Lubomir Bourdev and Hailin Jin \n///         Adobe Systems Incorporated/// \date 2005-2007 \n Last updated on September 24, 2006///////////////////////////////////////////////////////////////////////////////////////////namespace boost { namespace gil {namespace detail {    struct equal_pixels_fn : public binary_operation_obj<equal_pixels_fn,bool> {        template <typename V1, typename V2>        GIL_FORCEINLINE bool apply_compatible(const V1& v1, const V2& v2) const {            return equal_pixels(v1,v2);        }    };} // namespace detail/// \ingroup ImageViewSTLAlgorithmsEqualPixelstemplate <typename Types1,  // Model MPL Random Access Container of models of ImageViewConcept          typename View2>   // Model MutableImageViewConceptbool equal_pixels(const any_image_view<Types1>& src, const View2& dst) {    return apply_operation(src,boost::bind(detail::equal_pixels_fn(), _1, dst));}/// \ingroup ImageViewSTLAlgorithmsEqualPixelstemplate <typename View1,   // Model ImageViewConcept          typename Types2>  // Model MPL Random Access Container of models of MutableImageViewConceptbool equal_pixels(const View1& src, const any_image_view<Types2>& dst) {    return apply_operation(dst,boost::bind(detail::equal_pixels_fn(), src, _1));}/// \ingroup ImageViewSTLAlgorithmsEqualPixelstemplate <typename Types1,  // Model MPL Random Access Container of models of ImageViewConcept          typename Types2>  // Model MPL Random Access Container of models of MutableImageViewConceptbool equal_pixels(const any_image_view<Types1>& src, const any_image_view<Types2>& dst) {    return apply_operation(src,dst,detail::equal_pixels_fn());}namespace detail {    struct copy_pixels_fn : public binary_operation_obj<copy_pixels_fn> {        template <typename View1, typename View2>        GIL_FORCEINLINE void apply_compatible(const View1& src, const View2& dst) const {            copy_pixels(src,dst);        }    };}/// \ingroup ImageViewSTLAlgorithmsCopyPixelstemplate <typename Types1,  // Model MPL Random Access Container of models of ImageViewConcept          typename View2>   // Model MutableImageViewConceptvoid copy_pixels(const any_image_view<Types1>& src, const View2& dst) {    apply_operation(src,boost::bind(detail::copy_pixels_fn(), _1, dst));}/// \ingroup ImageViewSTLAlgorithmsCopyPixelstemplate <typename View1,   // Model ImageViewConcept          typename Types2>  // Model MPL Random Access Container of models of MutableImageViewConceptvoid copy_pixels(const View1& src, const any_image_view<Types2>& dst) {    apply_operation(dst,boost::bind(detail::copy_pixels_fn(), src, _1));}/// \ingroup ImageViewSTLAlgorithmsCopyPixelstemplate <typename Types1,  // Model MPL Random Access Container of models of ImageViewConcept          typename Types2>  // Model MPL Random Access Container of models of MutableImageViewConceptvoid copy_pixels(const any_image_view<Types1>& src, const any_image_view<Types2>& dst) {    apply_operation(src,dst,detail::copy_pixels_fn());}//forward declaration for default_color_converter (see full definition in color_convert.hpp)struct default_color_converter;/// \ingroup ImageViewSTLAlgorithmsCopyAndConvertPixelstemplate <typename Types1,  // Model MPL Random Access Container of models of ImageViewConcept          typename View2,   // Model MutableImageViewConcept          typename CC>      // Model ColorConverterConceptvoid copy_and_convert_pixels(const any_image_view<Types1>& src, const View2& dst, CC cc) {    apply_operation(src,boost::bind(detail::copy_and_convert_pixels_fn<CC>(cc), _1, dst));}/// \ingroup ImageViewSTLAlgorithmsCopyAndConvertPixelstemplate <typename Types1,  // Model MPL Random Access Container of models of ImageViewConcept          typename View2>   // Model MutableImageViewConceptvoid copy_and_convert_pixels(const any_image_view<Types1>& src, const View2& dst) {    apply_operation(src,boost::bind(detail::copy_and_convert_pixels_fn<default_color_converter>(), _1, dst));}/// \ingroup ImageViewSTLAlgorithmsCopyAndConvertPixelstemplate <typename View1,   // Model ImageViewConcept          typename Types2,  // Model MPL Random Access Container of models of MutableImageViewConcept          typename CC>      // Model ColorConverterConceptvoid copy_and_convert_pixels(const View1& src, const any_image_view<Types2>& dst, CC cc) {    apply_operation(dst,boost::bind(detail::copy_and_convert_pixels_fn<CC>(cc), src, _1));}/// \ingroup ImageViewSTLAlgorithmsCopyAndConvertPixelstemplate <typename View1,   // Model ImageViewConcept          typename Types2>  // Model MPL Random Access Container of models of MutableImageViewConceptvoid copy_and_convert_pixels(const View1& src, const any_image_view<Types2>& dst) {    apply_operation(dst,boost::bind(detail::copy_and_convert_pixels_fn<default_color_converter>(), src, _1));}/// \ingroup ImageViewSTLAlgorithmsCopyAndConvertPixelstemplate <typename Types1,  // Model MPL Random Access Container of models of ImageViewConcept          typename Types2,  // Model MPL Random Access Container of models of MutableImageViewConcept          typename CC>      // Model ColorConverterConceptvoid copy_and_convert_pixels(const any_image_view<Types1>& src, const any_image_view<Types2>& dst, CC cc) {    apply_operation(src,dst,detail::copy_and_convert_pixels_fn<CC>(cc));}/// \ingroup ImageViewSTLAlgorithmsCopyAndConvertPixelstemplate <typename Types1,  // Model MPL Random Access Container of models of ImageViewConcept          typename Types2>  // Model MPL Random Access Container of models of MutableImageViewConceptvoid copy_and_convert_pixels(const any_image_view<Types1>& src, const any_image_view<Types2>& dst) {    apply_operation(src,dst,detail::copy_and_convert_pixels_fn<default_color_converter>());}namespace detail {template <bool COMPATIBLE> struct fill_pixels_fn1 {    template <typename V, typename Value> static void apply(const V& src, const Value& val) { fill_pixels(src,val); }};// copy_pixels invoked on incompatible imagestemplate <> struct fill_pixels_fn1<false> {    template <typename V, typename Value> static void apply(const V& src, const Value& val) { throw std::bad_cast();}};template <typename Value>struct fill_pixels_fn {    fill_pixels_fn(const Value& val) : _val(val) {}    typedef void result_type;    template <typename V> result_type operator()(const V& img_view) const {        fill_pixels_fn1<pixels_are_compatible<typename V::value_type, Value>::value>::apply(img_view,_val);    }    Value _val;};}/// \ingroup ImageViewSTLAlgorithmsFillPixels/// \brief fill_pixels for any image view. The pixel to fill with must be compatible with the current viewtemplate <typename Types, // Model MPL Random Access Container of models of MutableImageViewConcept          typename Value>void fill_pixels(const any_image_view<Types>& img_view, const Value& val) {    apply_operation(img_view,detail::fill_pixels_fn<Value>(val));}} }  // namespace boost::gil#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -