using System;
using Plugin;
using System.Drawing;
using System.Windows.Forms;
public class OverlayImpeller : IPlugin {
private string m_config;
///
/// フレームに加工を施す関数
///
/// 加工の対象
/// ビデオの先頭からの時刻(秒)
/// エントリの開始時刻
/// エントリの終了時刻
/// エントリの設定値
public void Apply( ref Bitmap frame, float time, float e_begin, float e_end, ref string e_body ) {
double rpm = 11.5821;
int centerx = 135;
int centery = 135;
int impeller_diameter = 153;
int impeller_height_half = 12;
double theta0 = 0.0;
double omega = 2.0 * Math.PI / (60.0 / rpm);
double theta = theta0 + time * omega;
int current_width = Math.Abs( (int)(impeller_diameter * Math.Cos( theta ) / 2.0) );
using ( Graphics g = Graphics.FromImage( frame ) ) {
g.DrawRectangle( new Pen( Color.Black, 2 ), new Rectangle( centerx - current_width, centery - impeller_height_half, current_width * 2, impeller_height_half * 2 ) );
}
}
public void ApplyLanguage( string lang ) {
}
///
/// プラグインの名称
///
public string Name {
get {
return "OverlayImpeller";
}
}
///
/// プラグインの簡潔な説明文。
///
public string Abstract {
get {
return "OverlayImpeller";
}
}
///
/// プラグイン用の設定値を格納した文字列を指定します。
///
///
public string Config {
get {
return m_config;
}
set {
m_config = value;
}
}
public DialogResult BaseSetting() {
return DialogResult.Cancel;
}
public DialogResult EntrySetting( ref string entry_setting ) {
return DialogResult.Cancel;
}
public void Render( Graphics g, Size size, float time, string mouth, string Reserved ) {
}
public ulong Type {
get {
return Constants.LS_NO_EVENT_HANDLER | Constants.LS_ENABLES_ENTRY_SETTING;
}
}
}