#pragma once #ifndef igs_motion_wind_pixel_h #define igs_motion_wind_pixel_h #include #include "igs_math_random.h" #include "igs_ifx_common.h" /* igs::image::rgba::siz */ #ifndef IGS_MOTION_WIND_EXPORT #define IGS_MOTION_WIND_EXPORT #endif namespace igs { namespace motion_wind { class IGS_MOTION_WIND_EXPORT pixel { public: pixel(const bool blow_dark_sw, const bool blow_alpha_sw , const unsigned long length_random_seed, const double length_min, const double length_max, const double length_bias, const bool length_ref_sw , const unsigned long force_random_seed, const double force_min, const double force_max, const double force_bias, const bool force_ref_sw , const unsigned long density_random_seed, const double density_min, const double density_max, const double density_bias, const bool density_ref_sw); int change(const bool key_reset_sw /***, const int ref_channel , const double *ref_pixel***/ /* ゼロなら参照しない */ , const double ref_val /* ゼロ以上なら有効値、マイナスなら無効 */ , const int channels, double *pixel_tgt); void clear(void); private: std::vector table_; /* 減少テーブル */ igs::math::random length_random_; // default seed is 1 igs::math::random force_random_; // default seed is 1 igs::math::random density_random_; // default seed is 1 const bool blow_dark_sw_, blow_alpha_sw_; /* ref全体をセットするか否かは、参照画像があるかない(NULL)かで決める */ const double length_min_, length_max_; const double length_bias_; const bool length_ref_sw_; const double force_min_, force_max_; const double force_bias_; const bool force_ref_sw_; const double density_min_, density_max_; const double density_bias_; const bool density_ref_sw_; double key_lightness_; double pixel_key_[igs::image::rgba::siz]; long table_len_, table_pos_; double *table_array_; /* copy constructorを無効化 */ pixel(const pixel &); /* 代入演算子を無効化 */ pixel &operator=(const pixel &); }; } } #endif /* !igs_motion_wind_pixel_h */