← index
cplusplus17.Examples/examples/filter_design/ac_filter.cpp
Source: cplusplus17.Examples/examples/filter_design/ac_filter.cpp
#include "ac_filter.hpp"

namespace ac {

    unsigned char wrap_cast(double d) {
        unsigned long val = static_cast<unsigned long>(d);
        if(val > 255)
            val = val%255;
        return static_cast<unsigned char>(val);
    }


    AC_Filter::AC_Filter(const std::string &n) : name{n} {
        filters.push_back(this);
        map_filter[n] = this;
    }

    void AC_Filter::exec(cv::Mat &frame) {
       // args.collection.shiftFrames(frame);
        proc(frame, args);
    }

    std::string AC_Filter::get_name() const {
        return name;
    }

    void AC_Filter::setalpha(double d) {
        args.alpha = d;
    }

    void AC_Filter::Args::move_in_out() {
        if(dir == true) {
            alpha += 0.01;
            if(alpha >= 5.0)
                dir = false;
        } else {
            alpha -= 0.01;
            if(alpha <= 1.0)
                dir = true;
        }
    }

    AC_Filter::Args AC_Filter::args;
    std::vector<AC_Filter *> filters;
    std::unordered_map<std::string, AC_Filter *> map_filter;
}