|
Shinya Kitaoka |
810553 |
#pragma once
|
|
Shinya Kitaoka |
810553 |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
// Iwa_Particle for Marnie
|
|
Toshihiro Shimizu |
890ddd |
// based on ParticlesFx by Digital Video
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef IWA_PARTICLES_H
|
|
Toshihiro Shimizu |
890ddd |
#define IWA_PARTICLES_H
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "tsmartpointer.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tspectrum.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "trandom.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "iwa_particlesengine.h"
|
|
Toshihiro Shimizu |
890ddd |
#include <QList>
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
struct particles_values {
|
|
Toshihiro Shimizu |
890ddd |
int source_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
int bright_thres_val;
|
|
Toshihiro Shimizu |
890ddd |
bool multi_source_val;
|
|
Toshihiro Shimizu |
890ddd |
double x_pos_val;
|
|
Toshihiro Shimizu |
890ddd |
double y_pos_val;
|
|
Toshihiro Shimizu |
890ddd |
int unit_val;
|
|
Toshihiro Shimizu |
890ddd |
double length_val;
|
|
Toshihiro Shimizu |
890ddd |
double height_val;
|
|
Toshihiro Shimizu |
890ddd |
double maxnum_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair lifetime_val;
|
|
Toshihiro Shimizu |
890ddd |
int lifetime_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
int column_lifetime_val;
|
|
Toshihiro Shimizu |
890ddd |
int startpos_val;
|
|
Toshihiro Shimizu |
890ddd |
int randseed_val;
|
|
Toshihiro Shimizu |
890ddd |
double gravity_val;
|
|
Toshihiro Shimizu |
890ddd |
double g_angle_val;
|
|
Toshihiro Shimizu |
890ddd |
int gravity_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
double friction_val;
|
|
Toshihiro Shimizu |
890ddd |
int friction_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
double windint_val;
|
|
Toshihiro Shimizu |
890ddd |
double windangle_val;
|
|
Toshihiro Shimizu |
890ddd |
int swingmode_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair randomx_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair randomy_val;
|
|
Toshihiro Shimizu |
890ddd |
int randomx_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
int randomy_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair swing_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair speed_val;
|
|
Toshihiro Shimizu |
890ddd |
int speed_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair speeda_val;
|
|
Toshihiro Shimizu |
890ddd |
int speeda_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
bool speeda_use_gradient_val;
|
|
Toshihiro Shimizu |
890ddd |
bool speedscale_val;
|
|
Toshihiro Shimizu |
890ddd |
char *levelname_val;
|
|
Toshihiro Shimizu |
890ddd |
int toplayer_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair mass_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair scale_val;
|
|
Toshihiro Shimizu |
890ddd |
int scale_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
bool scale_ctrl_all_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair rot_val;
|
|
Toshihiro Shimizu |
890ddd |
int rot_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair trail_val;
|
|
Toshihiro Shimizu |
890ddd |
double trailstep_val;
|
|
Toshihiro Shimizu |
890ddd |
int rotswingmode_val;
|
|
Toshihiro Shimizu |
890ddd |
double rotspeed_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair rotsca_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair rotswing_val;
|
|
Toshihiro Shimizu |
890ddd |
bool pathaim_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair opacity_val;
|
|
Toshihiro Shimizu |
890ddd |
int opacity_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair trailopacity_val;
|
|
Toshihiro Shimizu |
890ddd |
double mblur_val;
|
|
Toshihiro Shimizu |
890ddd |
DoublePair scalestep_val;
|
|
Toshihiro Shimizu |
890ddd |
int scalestep_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
double fadein_val;
|
|
Toshihiro Shimizu |
890ddd |
double fadeout_val;
|
|
Toshihiro Shimizu |
890ddd |
int animation_val;
|
|
Toshihiro Shimizu |
890ddd |
int step_val;
|
|
Toshihiro Shimizu |
890ddd |
TSpectrum gencol_val;
|
|
Toshihiro Shimizu |
890ddd |
int gencol_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
double gencol_spread_val;
|
|
Toshihiro Shimizu |
890ddd |
double genfadecol_val;
|
|
Toshihiro Shimizu |
890ddd |
TSpectrum fincol_val;
|
|
Toshihiro Shimizu |
890ddd |
int fincol_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
double fincol_spread_val;
|
|
Toshihiro Shimizu |
890ddd |
double finrangecol_val;
|
|
Toshihiro Shimizu |
890ddd |
double finfadecol_val;
|
|
Toshihiro Shimizu |
890ddd |
TSpectrum foutcol_val;
|
|
Toshihiro Shimizu |
890ddd |
int foutcol_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
double foutcol_spread_val;
|
|
Toshihiro Shimizu |
890ddd |
double foutrangecol_val;
|
|
Toshihiro Shimizu |
890ddd |
double foutfadecol_val;
|
|
Toshihiro Shimizu |
890ddd |
TRandom *random_val;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool source_gradation_val;
|
|
Toshihiro Shimizu |
890ddd |
bool reset_random_for_every_frame_val;
|
|
Toshihiro Shimizu |
890ddd |
bool pick_color_for_every_frame_val;
|
|
Toshihiro Shimizu |
890ddd |
bool perspective_distribution_val;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*- 以下、このFxのために追加したパラメータ -*/
|
|
Toshihiro Shimizu |
890ddd |
/*- 計算モード (背景+粒子/粒子/背景/照明された粒子)-*/
|
|
Toshihiro Shimizu |
890ddd |
int iw_rendermode_val;
|
|
Toshihiro Shimizu |
890ddd |
/*- 粒子に貼られる絵の素材 -*/
|
|
Toshihiro Shimizu |
890ddd |
int base_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
/*- カールノイズ的な動きを与える -*/
|
|
Toshihiro Shimizu |
890ddd |
double curl_val;
|
|
Toshihiro Shimizu |
890ddd |
int curl_ctrl_1_val;
|
|
Toshihiro Shimizu |
890ddd |
int curl_ctrl_2_val;
|
|
Toshihiro Shimizu |
890ddd |
/*- 粒子敷き詰め。粒子を正三角形で敷き詰めたときの、
|
|
Toshihiro Shimizu |
890ddd |
正三角形の一辺の長さをインチで指定する -*/
|
|
Toshihiro Shimizu |
890ddd |
double iw_triangleSize;
|
|
Toshihiro Shimizu |
890ddd |
/*- ひらひら回転 -*/
|
|
Toshihiro Shimizu |
890ddd |
int flap_ctrl_val;
|
|
Toshihiro Shimizu |
890ddd |
double iw_flap_velocity_val;
|
|
Toshihiro Shimizu |
890ddd |
double iw_flap_dir_sensitivity_val;
|
|
Toshihiro Shimizu |
890ddd |
/*- ひらひら粒子に照明を当てる。normalize_values()内で Degree → Radian 化する -*/
|
|
Toshihiro Shimizu |
890ddd |
double iw_light_theta_val;
|
|
Toshihiro Shimizu |
890ddd |
double iw_light_phi_val;
|
|
Toshihiro Shimizu |
890ddd |
/*- 読み込みマージン -*/
|
|
Toshihiro Shimizu |
890ddd |
double margin_val;
|
|
Toshihiro Shimizu |
890ddd |
/*- 重力を徐々に与えるためのフレーム長 -*/
|
|
Toshihiro Shimizu |
890ddd |
int iw_gravityBufferFrame_val;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
struct particles_ranges {
|
|
Toshihiro Shimizu |
890ddd |
float swing_range;
|
|
Toshihiro Shimizu |
890ddd |
float randomx_range;
|
|
Toshihiro Shimizu |
890ddd |
float randomy_range;
|
|
Toshihiro Shimizu |
890ddd |
float rot_range;
|
|
Toshihiro Shimizu |
890ddd |
float rotswing_range;
|
|
Toshihiro Shimizu |
890ddd |
float rotsca_range;
|
|
Toshihiro Shimizu |
890ddd |
float lifetime_range;
|
|
Toshihiro Shimizu |
890ddd |
float speed_range;
|
|
Toshihiro Shimizu |
890ddd |
float speeda_range;
|
|
Toshihiro Shimizu |
890ddd |
float mass_range;
|
|
Toshihiro Shimizu |
890ddd |
float scale_range;
|
|
Toshihiro Shimizu |
890ddd |
float scalestep_range;
|
|
Toshihiro Shimizu |
890ddd |
int trail_range;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
struct pos_dummy {
|
|
Toshihiro Shimizu |
890ddd |
float x, y, a;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
typedef struct
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TPixel32 col;
|
|
Toshihiro Shimizu |
890ddd |
int rangecol;
|
|
Toshihiro Shimizu |
890ddd |
double fadecol;
|
|
Toshihiro Shimizu |
890ddd |
} coldata;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class Iwa_Particle
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
double x;
|
|
Toshihiro Shimizu |
890ddd |
float y;
|
|
Toshihiro Shimizu |
890ddd |
float oldx;
|
|
Toshihiro Shimizu |
890ddd |
float oldy;
|
|
Toshihiro Shimizu |
890ddd |
float vx;
|
|
Toshihiro Shimizu |
890ddd |
float vy;
|
|
Toshihiro Shimizu |
890ddd |
float mass;
|
|
Toshihiro Shimizu |
890ddd |
float scale;
|
|
Toshihiro Shimizu |
890ddd |
float angle;
|
|
Toshihiro Shimizu |
890ddd |
float smswingx;
|
|
Toshihiro Shimizu |
890ddd |
float smswingy;
|
|
Toshihiro Shimizu |
890ddd |
float smswinga;
|
|
Toshihiro Shimizu |
890ddd |
int smperiodx;
|
|
Toshihiro Shimizu |
890ddd |
int smperiody;
|
|
Toshihiro Shimizu |
890ddd |
int smperioda;
|
|
Toshihiro Shimizu |
890ddd |
int lifetime; /*- 現在の残り寿命 -*/
|
|
Toshihiro Shimizu |
890ddd |
int genlifetime; /*- 発生時の寿命 -*/
|
|
Toshihiro Shimizu |
890ddd |
int level;
|
|
Toshihiro Shimizu |
890ddd |
int frame;
|
|
Toshihiro Shimizu |
890ddd |
int signx;
|
|
Toshihiro Shimizu |
890ddd |
int trail;
|
|
Toshihiro Shimizu |
890ddd |
coldata gencol;
|
|
Toshihiro Shimizu |
890ddd |
coldata fincol;
|
|
Toshihiro Shimizu |
890ddd |
coldata foutcol;
|
|
Toshihiro Shimizu |
890ddd |
int changesignx;
|
|
Toshihiro Shimizu |
890ddd |
int signy;
|
|
Toshihiro Shimizu |
890ddd |
int changesigny;
|
|
Toshihiro Shimizu |
890ddd |
int signa;
|
|
Toshihiro Shimizu |
890ddd |
int changesigna;
|
|
Toshihiro Shimizu |
890ddd |
bool animswing;
|
|
Toshihiro Shimizu |
890ddd |
TRandom random;
|
|
Toshihiro Shimizu |
890ddd |
int seed;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
float initial_x;
|
|
Toshihiro Shimizu |
890ddd |
float initial_y;
|
|
Toshihiro Shimizu |
890ddd |
float initial_angle;
|
|
Toshihiro Shimizu |
890ddd |
float initial_scale;
|
|
Toshihiro Shimizu |
890ddd |
float curlx;
|
|
Toshihiro Shimizu |
890ddd |
float curly;
|
|
Toshihiro Shimizu |
890ddd |
float curlz;
|
|
Toshihiro Shimizu |
890ddd |
/*- ひらひら動かす回転角(Degree)-*/
|
|
Toshihiro Shimizu |
890ddd |
float flap_theta;
|
|
Toshihiro Shimizu |
890ddd |
float flap_phi;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
Iwa_Particle(int lifetime,
|
|
Toshihiro Shimizu |
890ddd |
int seed,
|
|
Shinya Kitaoka |
3bfa54 |
const std::map<int, TTile *> porttiles,
|
|
Toshihiro Shimizu |
890ddd |
const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
const particles_ranges &ranges,
|
|
Toshihiro Shimizu |
890ddd |
int howmany,
|
|
Toshihiro Shimizu |
890ddd |
int first,
|
|
Toshihiro Shimizu |
890ddd |
int level,
|
|
Toshihiro Shimizu |
890ddd |
int last,
|
|
Toshihiro Shimizu |
890ddd |
float posx, float posy, /*- 座標を指定 -*/
|
|
Toshihiro Shimizu |
890ddd |
bool isUpward, /*- 初期向き -*/
|
|
Toshihiro Shimizu |
890ddd |
int initSourceFrame);
|
|
Toshihiro Shimizu |
890ddd |
//Constructor
|
|
Toshihiro Shimizu |
890ddd |
~Iwa_Particle() {}
|
|
Toshihiro Shimizu |
890ddd |
//Destructor
|
|
Toshihiro Shimizu |
890ddd |
void create_Animation(const particles_values &values, int first, int last);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int check_Swing(const particles_values &values);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void create_Swing(const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
const particles_ranges &ranges,
|
|
Toshihiro Shimizu |
890ddd |
double randomxreference, double randomyreference);
|
|
Toshihiro Shimizu |
890ddd |
void create_Colors(const particles_values &values,
|
|
Shinya Kitaoka |
3bfa54 |
const particles_ranges &ranges, std::map<int, TTile *> porttiles);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
3bfa54 |
void move(const std::map<int, TTile *> porttiles, const particles_values &values, const particles_ranges &ranges, float windx,
|
|
Toshihiro Shimizu |
890ddd |
float windy, float xgravity, float ygravity, float dpi, int lastframe);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void spread_color(TPixel32 &color, double range);
|
|
Toshihiro Shimizu |
890ddd |
void update_Animation(const particles_values &values, int first, int last, int keep);
|
|
Toshihiro Shimizu |
890ddd |
void update_Swing(const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
const particles_ranges &ranges,
|
|
Toshihiro Shimizu |
890ddd |
struct pos_dummy &dummy,
|
|
Toshihiro Shimizu |
890ddd |
double randomxreference, double randomyreference);
|
|
Toshihiro Shimizu |
890ddd |
void update_Scale(const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
const particles_ranges &ranges,
|
|
Toshihiro Shimizu |
890ddd |
double scalereference, double scalestepreference);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
double set_Opacity(std::map<int, TTile *> porttiles,
|
|
Toshihiro Shimizu |
890ddd |
const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
float opacity_range, double dist_frame);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void modify_colors(TPixel32 &color, double &intensity);
|
|
Toshihiro Shimizu |
890ddd |
void modify_colors_and_opacity(const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
float curr_opacity, int dist_frame, TRaster32P raster);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool canHandle(const TRenderSettings &info, double frame) { return false; }
|
|
Toshihiro Shimizu |
890ddd |
void get_image_reference(TTile *ctrl1, const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
float &imagereference, int type);
|
|
Toshihiro Shimizu |
890ddd |
void get_image_reference(TTile *ctrl1, const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
TPixel32 &color);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*- ベクタ長を返す -*/
|
|
Toshihiro Shimizu |
890ddd |
float get_image_gravity(TTile *ctrl1, const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
float &gx, float &gy);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void get_base_image_texture(TTile *ctrl1,
|
|
Toshihiro Shimizu |
890ddd |
const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
TRasterP texRaster,
|
|
Toshihiro Shimizu |
890ddd |
const TRectD &texBBox,
|
|
Toshihiro Shimizu |
890ddd |
const TRenderSettings &ri);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void get_base_image_color(TTile *ctrl1,
|
|
Toshihiro Shimizu |
890ddd |
const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
TRasterP texRaster,
|
|
Toshihiro Shimizu |
890ddd |
const TRectD &texBBox,
|
|
Toshihiro Shimizu |
890ddd |
const TRenderSettings &ri);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*- Control圏内ならtrueを返す -*/
|
|
Toshihiro Shimizu |
890ddd |
bool get_image_curl(TTile *ctrl1,
|
|
Toshihiro Shimizu |
890ddd |
const particles_values &values,
|
|
Toshihiro Shimizu |
890ddd |
float &cx, float &cy);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*- 照明モードのとき、その明るさを色に格納 -*/
|
|
Toshihiro Shimizu |
890ddd |
void set_illuminated_colors(float illuminant, TRasterP texRaster);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class Iwa_ComparebySize
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
bool operator()(const Iwa_Particle &f1,
|
|
Toshihiro Shimizu |
890ddd |
const Iwa_Particle &f2)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if ((f1.scale - f2.scale) > 0)
|
|
Toshihiro Shimizu |
890ddd |
return 1;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
return 0;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class Iwa_ComparebyLifetime
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
bool operator()(const Iwa_Particle &f1,
|
|
Toshihiro Shimizu |
890ddd |
const Iwa_Particle &f2)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if ((f1.lifetime - f1.genlifetime - f2.lifetime + f2.genlifetime) > 0)
|
|
Toshihiro Shimizu |
890ddd |
return 1;
|
|
Toshihiro Shimizu |
890ddd |
return 0;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|