82 lines
2 KiB
C++
82 lines
2 KiB
C++
#ifndef igs_motion_wind_pixel_h
|
|
#define igs_motion_wind_pixel_h
|
|
|
|
#include <vector>
|
|
#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<double> 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 */
|