/* * IPlugin.cs * Copyright (c) 2007, 2008 kbinani * * This file is part of LipSync. * * LipSync is free software; you can redistribute it and/or * modify it under the terms of the BSD License. * * LipSync is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Windows.Forms; namespace Plugin { public class Constants { /// <summary> /// エントリーごとの設定が可能なプラグインであることを表します。 /// </summary> public const ulong LS_ENABLES_ENTRY_SETTING = 1; /// <summary> /// このプラグインが、設定用ウィンドウを持たないことを表します。 /// </summary> public const ulong LS_NO_EVENT_HANDLER = 2; /// <summary> /// このプラグインが、キャラクタ描画用のプラグインであることを表します。 /// </summary> public const ulong LS_TYPE_CHARACTER = 4; } /// <summary> /// メイン画面で使用されている変数へのプロキシを提供 /// </summary> public class Proxy { } /// <summary> /// プラグイン用のインターフェースを定義します /// </summary> public interface IPlugin { /// <summary> /// プラグインの名称 /// </summary> string Name { get; } /// <summary> /// プラグインの簡潔な説明文。 /// </summary> string Abstract { get; } /// <summary> /// フレームに加工を施す関数 /// </summary> /// <param name="frame">加工の対象</param> /// <param name="time">ビデオの先頭からの時刻(秒)</param> /// <param name="e_begin">エントリの開始時刻</param> /// <param name="e_body">エントリの終了時刻</param> /// <param name="e_end">エントリの設定値</param> void Apply( ref Bitmap frame, float time, float e_begin, float e_end, ref string e_body ); /// <summary> /// プラグイン用の設定値を格納した文字列を指定します。 /// </summary> /// <returns></returns> string Config { get; set; } /// <summary> /// メイン画面の言語設定が変更されたとき呼び出されます。 /// </summary> /// <param name="language_code"></param> void ApplyLanguage( string language_code ); /// <summary> /// このプラグインの設定メニューが押された時呼び出されます。 /// </summary> DialogResult BaseSetting(); /// <summary> /// エントリーごとの設定メニューが押された時呼び出されます。 /// エントリーごとの設定は、ぷらぐいん側で任意に設定できます。 /// </summary> /// <param name="entry_config">編集するエントリの設定</param> DialogResult EntrySetting( ref string entry_config ); /// <summary> /// このプラグインのタイプを指定します。 /// </summary> ulong Type { get; } /// <summary> /// キャラクタ描画関数。 /// </summary> /// <param name="g">キャラクタの描画先</param> /// <param name="size">gのサイズ</param> /// <param name="time">ビデオの先頭からの時刻</param> /// <param name="mouth">時刻timeにおける口の形がコンマ区切りで列挙されている</param> /// <param name="Reserved">(予約)</param> void Render( Graphics g, Size size, float time, string mouth, string Reserved ); } }