aviutl2_sys/plugin2.rs
1#![allow(non_snake_case, non_camel_case_types, non_upper_case_globals)]
2
3use crate::common::LPCWSTR;
4use crate::{
5 filter2::FILTER_PLUGIN_TABLE, input2::INPUT_PLUGIN_TABLE, module2::SCRIPT_MODULE_TABLE,
6 output2::OUTPUT_PLUGIN_TABLE,
7};
8use std::ffi::c_void;
9use std::os::raw::c_char;
10
11pub use windows_sys::Win32::Foundation::{HINSTANCE, HWND};
12
13pub type LPCSTR = *const c_char;
14
15/// 汎用プラグイン構造体
16#[repr(C)]
17pub struct COMMON_PLUGIN_TABLE {
18 /// プラグインの名前
19 pub name: LPCWSTR,
20 /// プラグインの情報
21 pub information: LPCWSTR,
22}
23
24/// オブジェクトハンドル
25pub type OBJECT_HANDLE = *mut c_void;
26
27/// エフェクトハンドル
28pub type EFFECT_HANDLE = *mut c_void;
29
30/// レイヤー・フレーム情報構造体
31/// フレーム番号、レイヤー番号が0からの番号になります ※UI表示と異なります
32#[repr(C)]
33pub struct OBJECT_LAYER_FRAME {
34 /// レイヤー番号
35 pub layer: i32,
36 /// 開始フレーム番号
37 pub start: i32,
38 /// 終了フレーム番号
39 pub end: i32,
40}
41
42/// メディア情報構造体
43#[repr(C)]
44pub struct MEDIA_INFO {
45 /// Videoトラック数 ※0ならVideo無し
46 pub video_track_num: i32,
47 /// Audioトラック数 ※0ならAudio無し
48 pub audio_track_num: i32,
49 /// 総時間 ※静止画の場合は0
50 pub total_time: f64,
51 /// 解像度
52 pub width: i32,
53 /// 解像度
54 pub height: i32,
55}
56
57/// モジュール情報構造体
58#[repr(C)]
59pub struct MODULE_INFO {
60 pub r#type: i32,
61 pub name: LPCWSTR,
62 pub information: LPCWSTR,
63}
64
65impl MODULE_INFO {
66 /// フィルタスクリプト
67 pub const TYPE_SCRIPT_FILTER: i32 = 1;
68 /// オブジェクトスクリプト
69 pub const TYPE_SCRIPT_OBJECT: i32 = 2;
70 /// カメラスクリプト
71 pub const TYPE_SCRIPT_CAMERA: i32 = 3;
72 /// トラックバースクリプト
73 pub const TYPE_SCRIPT_TRACK: i32 = 4;
74 /// スクリプトモジュール
75 pub const TYPE_SCRIPT_MODULE: i32 = 5;
76 /// 入力プラグイン
77 pub const TYPE_PLUGIN_INPUT: i32 = 6;
78 /// 出力プラグイン
79 pub const TYPE_PLUGIN_OUTPUT: i32 = 7;
80 /// フィルタプラグイン
81 pub const TYPE_PLUGIN_FILTER: i32 = 8;
82 /// 汎用プラグイン
83 pub const TYPE_PLUGIN_COMMON: i32 = 9;
84}
85
86/// トラックバー情報構造体
87#[repr(C)]
88pub struct TRACK_INFO {
89 /// トラックバーの移動モードの名称 ※移動無しの場合はnullptr
90 pub mode: LPCWSTR,
91 /// トラックバーの設定値の配列へのポインタ ※設定値が無い場合はnullptr
92 pub param: *mut f64,
93 /// トラックバーの設定値の数
94 pub param_num: i32,
95 /// トラックバーの加速度が有効か?
96 pub accelerate: bool,
97 /// トラックバーの減速度が有効か?
98 pub decelerate: bool,
99 /// トラックバーの中間点無視が有効か?
100 pub twopoint: bool,
101 /// トラックバーの時間制御が有効か?
102 pub timecontrol: bool,
103 /// 所属グループのトラックバーの数 ※グループ化されていない場合は1
104 pub group_num: i32,
105 /// 所属グループ内のインデックス
106 pub group_index: i32,
107 /// 所属グループの名称 ※グループ化されていない場合はnullptr
108 pub group_name: LPCWSTR,
109}
110
111/// パレット情報構造体
112#[repr(C)]
113pub struct PALETTE_INFO {
114 pub color: [PALETTE_INFO_COLOR; Self::PALETTE_NUM],
115}
116
117impl PALETTE_INFO {
118 pub const PALETTE_NUM: usize = 64;
119}
120
121/// パレット色情報構造体
122#[repr(C)]
123#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
124pub struct PALETTE_INFO_COLOR {
125 pub r: u8,
126 pub g: u8,
127 pub b: u8,
128 pub a: u8,
129}
130
131/// BPM情報構造体
132#[repr(C)]
133pub struct BPM_INFO {
134 /// テンポ
135 pub tempo: f32,
136 /// 拍子
137 pub beat: i32,
138 /// 開始位置(秒)
139 pub start: f64,
140 /// 拍子オフセット(秒)
141 pub offset: f32,
142}
143
144/// イベント種別
145#[repr(i32)]
146#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
147pub enum EVENT_TYPE {
148 /// オブジェクト情報の更新
149 UPDATE_OBJECT = 1,
150 /// 現在の編集フレームの移動
151 CHANGE_EDIT_FRAME = 2,
152 /// 現在の編集シーンの変更 ※シーン情報の更新も含まれる
153 CHANGE_EDIT_SCENE = 3,
154 /// 選択されているオブジェクトの変更
155 CHANGE_FOCUS_OBJECT = 4,
156 /// 編集状態の変更(プレビュー再生・ファイル出力の開始終了時)
157 CHANGE_EDIT_STATE = 5,
158}
159
160/// オブジェクトフラグ種別
161#[repr(i32)]
162#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
163pub enum OBJECT_FLAG_TYPE {
164 /// グループ制御対象の有効・無効
165 ENABLE_GROUP = 1,
166 /// カメラ制御対象の有効・無効
167 ENABLE_CAMERA = 2,
168 /// クリッピングオブジェクトの有効・無効
169 CLIPPING_OBJECT = 3,
170 /// 上のオブジェクトでクリッピングの有効・無効
171 CLIPPING_UPPER_OBJECT = 4,
172}
173
174#[repr(C)]
175#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
176pub struct EDIT_INFO_COLOR {
177 pub r: u8,
178 pub g: u8,
179 pub b: u8,
180 pub a: u8,
181}
182
183/// 編集情報構造体
184/// フレーム番号、レイヤー番号が0からの番号になります ※UI表示と異なります
185#[repr(C)]
186pub struct EDIT_INFO {
187 /// シーンの解像度
188 pub width: i32,
189 /// シーンの解像度
190 pub height: i32,
191 /// シーンのフレームレート
192 pub rate: i32,
193 /// シーンのフレームレート
194 pub scale: i32,
195 /// シーンのサンプリングレート
196 pub sample_rate: i32,
197 /// 現在のカーソルのフレーム番号
198 pub frame: i32,
199 /// 現在の選択レイヤー番号
200 pub layer: i32,
201 /// オブジェクトが存在する最大のフレーム番号
202 pub frame_max: i32,
203 /// オブジェクトが存在する最大のレイヤー番号
204 pub layer_max: i32,
205 /// レイヤー編集で表示されているフレームの開始番号
206 pub display_frame_start: i32,
207 /// レイヤー編集で表示されているレイヤーの開始番号
208 pub display_layer_start: i32,
209 /// レイヤー編集で表示されているフレーム数 ※厳密ではないです
210 pub display_frame_num: i32,
211 /// レイヤー編集で表示されているレイヤー数 ※厳密ではないです
212 pub display_layer_num: i32,
213 /// フレーム範囲選択の開始フレーム番号 ※未選択の場合は-1
214 pub select_range_start: i32,
215 /// フレーム範囲選択の終了フレーム番号 ※未選択の場合は-1
216 pub select_range_end: i32,
217 /// グリッド(BPM)のテンポ ※先頭のBPM情報
218 pub grid_bpm_tempo: f32,
219 /// グリッド(BPM)の拍子 ※先頭のBPM情報
220 pub grid_bpm_beat: i32,
221 /// グリッド(BPM)の拍子オフセット ※先頭のBPM情報
222 pub grid_bpm_offset: f32,
223 /// シーンのID
224 pub scene_id: i32,
225 /// シーンの背景色
226 pub background: EDIT_INFO_COLOR,
227}
228
229/// 編集セクション構造体
230/// メニュー選択やプロジェクト編集のコールバック関数内で利用出来ます
231/// フレーム番号、レイヤー番号が0からの番号になります ※UI表示と異なります
232#[repr(C)]
233pub struct EDIT_SECTION {
234 /// 編集情報 (call_read_section利用不可)
235 pub info: *mut EDIT_INFO,
236
237 /// 指定の位置にオブジェクトエイリアスを作成します (call_read_section利用不可)
238 /// alias : オブジェクトエイリアスデータ(UTF-8)へのポインタ
239 /// オブジェクトエイリアスファイル(.object)と同じフォーマットになります
240 /// layer : 作成するレイヤー番号
241 /// frame : 作成するフレーム番号
242 /// length : オブジェクトのフレーム数 ※エイリアスデータにフレーム情報がある場合はフレーム情報から長さが設定されます
243 /// フレーム数に0を指定した場合は長さや追加位置が自動調整されます
244 /// 戻り値 : 作成したオブジェクトのハンドル (失敗した場合はnullptrを返却)
245 /// 既に存在するオブジェクトに重なったり、エイリアスデータが不正な場合に失敗します
246 /// 複数オブジェクトのエイリアスデータの場合は先頭のオブジェクトのハンドルが返却されます ※オブジェクトは全て作成されます
247 pub create_object_from_alias:
248 unsafe extern "C" fn(alias: LPCSTR, layer: i32, frame: i32, length: i32) -> OBJECT_HANDLE,
249
250 /// 指定のフレーム番号以降にあるオブジェクトを検索します
251 /// ※フィルタプラグインから呼び出した場合は処理対象のシーンのオブジェクトを検索します
252 /// layer : 検索対象のレイヤー番号
253 /// frame : 検索を開始するフレーム番号
254 /// 戻り値 : 検索したオブジェクトのハンドル (見つからない場合はnullptrを返却)
255 pub find_object: unsafe extern "C" fn(layer: i32, frame: i32) -> OBJECT_HANDLE,
256
257 /// オブジェクトに対象エフェクトが何個存在するかを取得します
258 /// object : オブジェクトのハンドル
259 /// effect : 対象のエフェクト名 (エイリアスファイルのeffect.nameの値)
260 /// 戻り値 : 対象エフェクトの数 ※存在しない場合は0
261 pub count_object_effect: unsafe extern "C" fn(object: OBJECT_HANDLE, effect: LPCWSTR) -> i32,
262
263 /// オブジェクトのレイヤー・フレーム情報を取得します
264 /// object : オブジェクトのハンドル
265 /// 戻り値 : オブジェクトのレイヤー・フレーム情報
266 pub get_object_layer_frame: unsafe extern "C" fn(object: OBJECT_HANDLE) -> OBJECT_LAYER_FRAME,
267
268 /// オブジェクトのエイリアスデータを取得します
269 /// object : オブジェクトのハンドル
270 /// 戻り値 : オブジェクトエイリアスデータ(UTF-8)へのポインタ (取得出来ない場合はnullptrを返却)
271 /// オブジェクトエイリアスファイルと同じフォーマットになります
272 /// ※次に同一スレッドで文字列返却の関数を使うかコールバック処理の終了まで有効
273 pub get_object_alias: unsafe extern "C" fn(object: OBJECT_HANDLE) -> LPCSTR,
274
275 /// オブジェクトの設定項目の値を文字列で取得します
276 /// object : オブジェクトのハンドル
277 /// effect : 対象のエフェクト名 (エイリアスファイルのeffect.nameの値)
278 /// 同じエフェクトが複数ある場合は":n"のサフィックスでインデックス指定出来ます (nは0からの番号)
279 /// get_object_item_value(object, L"ぼかし:1", L"範囲"); // 2個目のぼかしを対象とする
280 /// item : 対象の設定項目の名称 (エイリアスファイルのキーの名称)
281 /// 戻り値 : 取得した設定値(UTF8)へのポインタ (取得出来ない場合はnullptrを返却)
282 /// エイリアスファイルの設定値と同じフォーマットになります
283 /// ※次に同一スレッドで文字列返却の関数を使うかコールバック処理の終了まで有効
284 pub get_object_item_value:
285 unsafe extern "C" fn(object: OBJECT_HANDLE, effect: LPCWSTR, item: LPCWSTR) -> LPCSTR,
286
287 /// オブジェクトの設定項目の値を文字列で設定します (call_read_section利用不可)
288 /// object : オブジェクトのハンドル
289 /// effect : 対象のエフェクト名 (エイリアスファイルのeffect.nameの値)
290 /// 同じエフェクトが複数ある場合は":n"のサフィックスでインデックス指定出来ます (nは0からの番号)
291 /// set_object_item_value(object, L"ぼかし:1", L"範囲", "1"); // 2個目のぼかしを対象とする
292 /// item : 対象の設定項目の名称 (エイリアスファイルのキーの名称)
293 /// value : 設定値(UTF8)
294 /// エイリアスファイルの設定値と同じフォーマットになります
295 /// 戻り値 : 設定出来た場合はtrue (対象が見つからない場合は失敗します)
296 pub set_object_item_value: unsafe extern "C" fn(
297 object: OBJECT_HANDLE,
298 effect: LPCWSTR,
299 item: LPCWSTR,
300 value: LPCSTR,
301 ) -> bool,
302
303 /// オブジェクトを移動します (call_read_section利用不可)
304 /// object : オブジェクトのハンドル
305 /// layer : 移動先のレイヤー番号
306 /// frame : 移動先のフレーム番号
307 /// 戻り値 : 移動した場合はtrue (移動先にオブジェクトが存在する場合は失敗します)
308 pub move_object: unsafe extern "C" fn(object: OBJECT_HANDLE, layer: i32, frame: i32) -> bool,
309
310 /// オブジェクトを削除します (call_read_section利用不可)
311 /// ※同一編集セクション内で作成したオブジェクトは削除しないようにすること
312 /// object : オブジェクトのハンドル
313 pub delete_object: unsafe extern "C" fn(object: OBJECT_HANDLE),
314
315 /// オブジェクト設定ウィンドウで選択されているオブジェクトのハンドルを取得します
316 /// 戻り値 : オブジェクトのハンドル (未選択の場合はnullptrを返却)
317 pub get_focus_object: unsafe extern "C" fn() -> OBJECT_HANDLE,
318
319 /// オブジェクト設定ウィンドウで選択するオブジェクトを設定します (call_read_section利用不可)
320 /// ※コールバック処理の終了時に設定されます
321 /// object : オブジェクトのハンドル (nullptrを指定すると選択を解除します)
322 pub set_focus_object: unsafe extern "C" fn(object: OBJECT_HANDLE),
323
324 /// プロジェクトファイルのポインタを取得します (call_read_section利用不可)
325 /// EDIT_HANDLE : 編集ハンドル
326 /// 戻り値 : プロジェクトファイル構造体へのポインタ
327 /// ※コールバック処理の終了まで有効
328 pub get_project_file: unsafe extern "C" fn(edit: *mut EDIT_HANDLE) -> *mut PROJECT_FILE,
329
330 /// 選択中オブジェクトのハンドルを取得します
331 /// index : 選択中オブジェクトのインデックス(0〜)
332 /// 戻り値 : 指定インデックスのオブジェクトのハンドル (インデックスが範囲外の場合はnullptrを返却)
333 pub get_selected_object: unsafe extern "C" fn(index: i32) -> OBJECT_HANDLE,
334
335 /// 選択中オブジェクトの数を取得します
336 /// 戻り値 : 選択中オブジェクトの数
337 pub get_selected_object_num: unsafe extern "C" fn() -> i32,
338
339 /// マウス座標のレイヤー・フレーム位置を取得します (call_read_section利用不可)
340 /// 最後のマウス移動のウィンドウメッセージの座標から計算します
341 /// ファイルD&D時のコールバック関数内で取得した場合はドロップ位置になります
342 /// layer : レイヤー番号の格納先
343 /// frame : フレーム番号の格納先
344 /// 戻り値 : マウス座標がレイヤー編集上の場合はtrue
345 pub get_mouse_layer_frame: unsafe extern "C" fn(layer: *mut i32, frame: *mut i32) -> bool,
346
347 /// 指定のスクリーン座標のレイヤー・フレーム位置を取得します (call_read_section利用不可)
348 /// x,y : 対象のスクリーン座標
349 /// layer : レイヤー番号の格納先
350 /// frame : フレーム番号の格納先
351 /// 戻り値 : スクリーン座標がレイヤー編集上の場合はtrue
352 pub pos_to_layer_frame:
353 unsafe extern "C" fn(x: i32, y: i32, layer: *mut i32, frame: *mut i32) -> bool,
354
355 /// 指定のメディアファイルがサポートされているかを確認します
356 /// file : メディアファイルのパス
357 /// strict : trueの場合は実際に読み込めるかを確認します
358 /// falseの場合は拡張子が対応しているかを確認します
359 /// 戻り値 : サポートされている場合はtrue
360 pub is_support_media_file: unsafe extern "C" fn(file: LPCWSTR, strict: bool) -> bool,
361
362 /// 指定のメディアファイルの情報を取得します ※動画、音声、画像ファイル以外では取得出来ません
363 /// file : メディアファイルのパス
364 /// info : メディア情報の格納先へのポインタ
365 /// info_size : メディア情報の格納先のサイズ ※MEDIA_INFOと異なる場合はサイズ分のみ取得されます
366 /// 戻り値 : 取得出来た場合はtrue
367 pub get_media_info:
368 unsafe extern "C" fn(file: LPCWSTR, info: *mut MEDIA_INFO, info_size: i32) -> bool,
369
370 /// 指定の位置にメディアファイルからオブジェクトを作成します (call_read_section利用不可)
371 /// file : メディアファイルのパス
372 /// layer : 作成するレイヤー番号
373 /// frame : 作成するフレーム番号
374 /// length : オブジェクトのフレーム数
375 /// フレーム数に0を指定した場合は長さや追加位置が自動調整されます
376 /// 戻り値 : 作成したオブジェクトのハンドル (失敗した場合はnullptrを返却)
377 /// 既に存在するオブジェクトに重なったり、メディアファイルに対応していない場合は失敗します
378 pub create_object_from_media_file:
379 unsafe extern "C" fn(file: LPCWSTR, layer: i32, frame: i32, length: i32) -> OBJECT_HANDLE,
380
381 /// 指定の位置にオブジェクトを作成します (call_read_section利用不可)
382 /// effect : エフェクト名 (エイリアスファイルのeffect.nameの値)
383 /// layer : 作成するレイヤー番号
384 /// frame : 作成するフレーム番号
385 /// length : オブジェクトのフレーム数
386 /// フレーム数に0を指定した場合は長さや追加位置が自動調整されます
387 /// 戻り値 : 作成したオブジェクトのハンドル (失敗した場合はnullptrを返却)
388 /// 既に存在するオブジェクトに重なったり、指定エフェクトに対応していない場合は失敗します
389 pub create_object:
390 unsafe extern "C" fn(effect: LPCWSTR, layer: i32, frame: i32, length: i32) -> OBJECT_HANDLE,
391
392 /// 現在のレイヤー・フレーム位置を設定します (call_read_section利用不可)
393 /// ※設定出来る範囲に調整されます
394 /// layer : レイヤー番号
395 /// frame : フレーム番号
396 pub set_cursor_layer_frame: unsafe extern "C" fn(layer: i32, frame: i32),
397
398 /// レイヤー編集のレイヤー・フレームの表示開始位置を設定します (call_read_section利用不可)
399 /// ※設定出来る範囲に調整されます
400 /// layer : 表示開始レイヤー番号
401 /// frame : 表示開始フレーム番号
402 pub set_display_layer_frame: unsafe extern "C" fn(layer: i32, frame: i32),
403
404 /// フレーム範囲選択を設定します (call_read_section利用不可)
405 /// ※設定出来る範囲に調整されます
406 /// start,end : 開始終了フレーム番号
407 /// 開始終了フレームの両方に-1を指定すると選択を解除します
408 pub set_select_range: unsafe extern "C" fn(start: i32, end: i32),
409
410 /// グリッド(BPM)を設定します (call_read_section利用不可)
411 /// tempo : テンポ
412 /// beat : 拍子
413 /// offset : 基準時間
414 pub set_grid_bpm: unsafe extern "C" fn(tempo: f32, beat: i32, offset: f32),
415
416 /// オブジェクト名を取得します
417 /// object : オブジェクトのハンドル
418 /// 戻り値 : オブジェクト名へのポインタ (標準の名前の場合はnullptrを返却)
419 /// ※オブジェクトの編集をするかコールバック処理の終了まで有効
420 pub get_object_name: unsafe extern "C" fn(object: OBJECT_HANDLE) -> LPCWSTR,
421
422 /// オブジェクト名を設定します (call_read_section利用不可)
423 /// object : オブジェクトのハンドル
424 /// name : オブジェクト名 (nullptrか空文字を指定すると標準の名前になります)
425 pub set_object_name: unsafe extern "C" fn(object: OBJECT_HANDLE, name: LPCWSTR),
426
427 /// レイヤー名を取得します
428 /// layer : レイヤー番号
429 /// 戻り値 : レイヤー名へのポインタ (標準の名前の場合はnullptrを返却)
430 /// ※レイヤーの編集をするかコールバック処理の終了まで有効
431 pub get_layer_name: unsafe extern "C" fn(layer: i32) -> LPCWSTR,
432
433 /// レイヤー名を設定します (call_read_section利用不可)
434 /// layer : レイヤー番号
435 /// name : レイヤー名 (nullptrか空文字を指定すると標準の名前になります)
436 pub set_layer_name: unsafe extern "C" fn(layer: i32, name: LPCWSTR),
437
438 /// シーン名を取得します
439 /// 戻り値 : シーン名へのポインタ
440 /// ※シーンの編集をするかコールバック処理の終了まで有効
441 pub get_scene_name: unsafe extern "C" fn() -> LPCWSTR,
442
443 /// シーン名を設定します (call_read_section利用不可)
444 /// ※シーンの操作は現状Undoに非対応です
445 /// name : シーン名
446 /// ※シーン名は必須になります (nullptrや空文字の場合は変更しません)
447 pub set_scene_name: unsafe extern "C" fn(name: LPCWSTR),
448
449 /// シーンの解像度を設定します (call_read_section利用不可)
450 /// ※シーンの操作は現状Undoに非対応です
451 /// width : 横のサイズ
452 /// height : 縦のサイズ
453 pub set_scene_size: unsafe extern "C" fn(width: i32, height: i32),
454
455 /// シーンのフレームレートを設定します (call_read_section利用不可)
456 /// ※シーンの操作は現状Undoに非対応です
457 /// rate : フレームレート
458 /// scale : フレームレートのスケール
459 pub set_scene_frame_rate: unsafe extern "C" fn(rate: i32, scale: i32),
460
461 /// シーンのサンプリングレートを設定します (call_read_section利用不可)
462 /// ※シーンの操作は現状Undoに非対応です
463 /// sample_rate : サンプリングレート
464 pub set_scene_sample_rate: unsafe extern "C" fn(sample_rate: i32),
465
466 /// レイヤーの表示・非表示状態を取得します
467 /// layer : レイヤー番号
468 /// 戻り値 : レイヤーが表示状態の場合はtrue
469 pub get_layer_enable: unsafe extern "C" fn(layer: i32) -> bool,
470
471 /// レイヤーの表示・非表示状態を設定します (call_read_section利用不可)
472 /// layer : レイヤー番号
473 /// enable : 設定するレイヤーの表示状態
474 pub set_layer_enable: unsafe extern "C" fn(layer: i32, enable: bool),
475
476 /// レイヤーのロック状態を取得します
477 /// layer : レイヤー番号
478 /// 戻り値 : レイヤーがロック状態の場合はtrue
479 pub get_layer_lock: unsafe extern "C" fn(layer: i32) -> bool,
480
481 /// レイヤーのロック状態を設定します (call_read_section利用不可)
482 /// layer : レイヤー番号
483 /// lock : 設定するレイヤーのロック状態
484 pub set_layer_lock: unsafe extern "C" fn(layer: i32, lock: bool),
485
486 /// オブジェクトの区間の数を取得します
487 /// object : オブジェクトのハンドル
488 /// 戻り値 : 区間の数
489 pub get_object_section_num: unsafe extern "C" fn(object: OBJECT_HANDLE) -> i32,
490
491 /// 選択中オブジェクトの区間の位置を取得します
492 /// 戻り値 : 区間の番号 (未選択の場合は-1を返却)
493 pub get_focus_object_section: unsafe extern "C" fn() -> i32,
494
495 /// オブジェクトの区間の開始フレーム番号を取得します
496 /// object : オブジェクトのハンドル
497 /// section : 区間の番号
498 /// 戻り値 : 区間の開始フレーム番号 (取得出来ない場合は-1を返却)
499 pub get_object_section_frame: unsafe extern "C" fn(object: OBJECT_HANDLE, section: i32) -> i32,
500
501 /// 指定フレーム位置でのオブジェクトのトラックバー項目の値を取得します
502 /// ※フィルタプラグインから呼び出した場合は処理対象のシーンのオブジェクトのみ取得出来ます
503 /// object : オブジェクトのハンドル
504 /// effect : 対象のエフェクト名 (エイリアスファイルのeffect.nameの値)
505 /// 同じエフェクトが複数ある場合は":n"のサフィックスでインデックス指定出来ます (nは0からの番号)
506 /// item : 対象のトラックバー項目の名称 (エイリアスファイルのキーの名称)
507 /// frame : 取得対象のフレーム番号 ※小数部でフレーム間の位置を指定出来ます
508 /// value : トラックバー項目の値の格納先へのポインタ
509 /// 戻り値 : 設定出来た場合はtrue (対象が見つからない場合は失敗します)
510 pub get_object_track_value: unsafe extern "C" fn(
511 object: OBJECT_HANDLE,
512 effect: LPCWSTR,
513 item: LPCWSTR,
514 frame: f64,
515 value: *mut f64,
516 ) -> bool,
517
518 /// 指定フレーム位置でのオブジェクトのチェックボックス(セクション毎含む)項目の値を取得します
519 /// object : オブジェクトのハンドル
520 /// effect : 対象のエフェクト名 (エイリアスファイルのeffect.nameの値)
521 /// 同じエフェクトが複数ある場合は":n"のサフィックスでインデックス指定出来ます (nは0からの番号)
522 /// item : 対象のチェックボックス項目の名称 (エイリアスファイルのキーの名称)
523 /// frame : 取得対象のフレーム番号 ※セクション毎チェックボックスの場合に利用
524 /// value : チェックボックス項目の値の格納先へのポインタ
525 /// 戻り値 : 設定出来た場合はtrue (対象が見つからない場合は失敗します)
526 pub get_object_check_value: unsafe extern "C" fn(
527 object: OBJECT_HANDLE,
528 effect: LPCWSTR,
529 item: LPCWSTR,
530 frame: i32,
531 value: *mut bool,
532 ) -> bool,
533
534 /// オブジェクトのトラックバー項目の情報を取得します
535 /// object : オブジェクトのハンドル
536 /// effect : 対象のエフェクト名 (エイリアスファイルのeffect.nameの値)
537 /// 同じエフェクトが複数ある場合は":n"のサフィックスでインデックス指定出来ます (nは0からの番号)
538 /// item : 対象のトラックバー項目の名称 (エイリアスファイルのキーの名称)
539 /// info : トラックバー情報の格納先へのポインタ
540 /// info_size : トラックバー情報の格納先のサイズ ※TRACK_INFOと異なる場合はサイズ分のみ取得されます
541 /// 戻り値 : 取得出来た場合はtrue (対象が見つからない場合は失敗します)
542 pub get_object_track_info: unsafe extern "C" fn(
543 object: OBJECT_HANDLE,
544 effect: LPCWSTR,
545 item: LPCWSTR,
546 info: *mut TRACK_INFO,
547 info_size: i32,
548 ) -> bool,
549
550 /// 現在のパレット名を取得します
551 /// ラベル付きの場合は[ラベル名.パレット名]のフォーマットになります
552 /// 戻り値 : 現在のパレット名 ※コールバック処理の終了まで有効
553 pub get_palette_name: unsafe extern "C" fn() -> LPCWSTR,
554
555 /// 指定のパレットの情報を取得します
556 /// name : パレット名
557 /// info : パレット情報の格納先へのポインタ
558 /// info_size : パレット情報の格納先のサイズ ※PALETTE_INFOと異なる場合はサイズ分のみ取得されます
559 /// 戻り値 : 取得出来た場合はtrue (対象が見つからない場合は失敗します)
560 pub get_palette_info:
561 unsafe extern "C" fn(name: LPCWSTR, info: *mut PALETTE_INFO, info_size: i32) -> bool,
562
563 /// 登録されているフォントのDirectWriteのフォントのポインタを取得する (IDWriteFontのポインタを取得します)
564 /// font : フォント名 ※アプリケーション内の登録名
565 /// 戻り値 : IDWriteFontのポインタ (指定フォントが無い場合はnullptrを返却)
566 pub get_font: unsafe extern "C" fn(font: LPCWSTR) -> *mut c_void,
567
568 /// オブジェクトのトラックバーグループの所属アイテム名を取得します
569 /// object : オブジェクトのハンドル
570 /// effect : 対象のエフェクト名 (エイリアスファイルのeffect.nameの値)
571 /// 同じエフェクトが複数ある場合は":n"のサフィックスでインデックス指定出来ます (nは0からの番号)
572 /// group_name : 対象のトラックバーグループ項目の名称 (エイリアスファイルのキーの名称)
573 /// item_names : 所属アイテム名の格納先へのポインタ
574 /// item_num : 所属アイテム名の格納先の数
575 /// 戻り値 : 取得出来た所属アイテム名の数 (指定グループが無い場合は0を返却)
576 /// item_namesがnullptrの場合は所属アイテム数を返却します
577 pub get_object_track_group_names: unsafe extern "C" fn(
578 object: OBJECT_HANDLE,
579 effect: LPCWSTR,
580 group_name: LPCWSTR,
581 item_names: *mut LPCWSTR,
582 item_num: i32,
583 ) -> i32,
584
585 /// 新しい関数に差し替えるので廃止します
586 #[deprecated = "新しい関数に差し替えるので廃止します"]
587 pub deprecated_get_grid_bpm_list:
588 unsafe extern "C" fn(bpm_list: *mut BPM_INFO, bpm_num: i32) -> i32,
589
590 /// 新しい関数に差し替えるので廃止します
591 #[deprecated = "新しい関数に差し替えるので廃止します"]
592 pub deprecated_set_grid_bpm_list: unsafe extern "C" fn(bpm_list: *mut BPM_INFO, bpm_num: i32),
593
594 /// オブジェクトからエフェクトを検索します
595 /// object : 検索対象のオブジェクトのハンドル
596 /// effect : 検索するエフェクト名 (エイリアスファイルのeffect.nameの値)
597 /// 同じエフェクトが複数ある場合は":n"のサフィックスでインデックス指定出来ます (nは0からの番号)
598 /// nullptrを指定すると先頭のエフェクトを取得します
599 /// 戻り値 : 検索したエフェクトのハンドル (見つからない場合はnullptrを返却)
600 /// ※エフェクトハンドルはエフェクトが破棄されるかコールバック処理の終了まで有効
601 pub find_effect: unsafe extern "C" fn(object: OBJECT_HANDLE, effect: LPCWSTR) -> EFFECT_HANDLE,
602
603 /// オブジェクトからエフェクト一覧を取得します
604 /// object : オブジェクトのハンドル
605 /// effect_list : エフェクトのハンドルリストの格納先へのポインタ
606 /// effect_num : エフェクトのハンドルリストの格納先の数
607 /// 戻り値 : 取得出来たエフェクトハンドルの数 (取得出来ない場合は0を返却)
608 /// effect_listがnullptrの場合は所有しているエフェクトの数を返却します
609 /// ※エフェクトハンドルはエフェクトが破棄されるかコールバック処理の終了まで有効
610 pub get_effect_list: unsafe extern "C" fn(
611 object: OBJECT_HANDLE,
612 effect_list: *mut EFFECT_HANDLE,
613 effect_num: i32,
614 ) -> i32,
615
616 /// エフェクト名を取得します
617 /// effect : エフェクトのハンドル
618 /// 戻り値 : エフェクト名へのポインタ (取得出来ない場合はnullptrを返却)
619 pub get_effect_name: unsafe extern "C" fn(effect: EFFECT_HANDLE) -> LPCWSTR,
620
621 /// エフェクトの有効・無効状態を取得します
622 /// effect : エフェクトのハンドル
623 /// 戻り値 : エフェクトが有効状態の場合はtrue
624 pub get_effect_enable: unsafe extern "C" fn(effect: EFFECT_HANDLE) -> bool,
625
626 /// エフェクトの有効・無効状態を設定します (call_read_section利用不可)
627 /// effect : エフェクトのハンドル
628 /// enable : 設定するエフェクトの有効・無効状態
629 /// ※エフェクトが出力項目(標準描画等)の場合は変更出来ません (常に有効状態)
630 pub set_effect_enable: unsafe extern "C" fn(effect: EFFECT_HANDLE, enable: bool),
631
632 /// エフェクトのロック状態を取得します
633 /// effect : エフェクトのハンドル
634 /// 戻り値 : エフェクトがロック状態の場合はtrue
635 pub get_effect_lock: unsafe extern "C" fn(effect: EFFECT_HANDLE) -> bool,
636
637 /// エフェクトのロック状態を設定します (call_read_section利用不可)
638 /// effect : エフェクトのハンドル
639 /// enable : 設定するエフェクトのロック状態
640 /// ※エフェクトが音声の場合は変更出来ません
641 /// ※エフェクトが出力項目(標準描画等)の場合は変更出来ません (入力項目に同期)
642 pub set_effect_lock: unsafe extern "C" fn(effect: EFFECT_HANDLE, lock: bool),
643
644 /// エフェクトの設定項目の値を文字列で取得します
645 /// effect : エフェクトのハンドル
646 /// item : 対象の設定項目の名称 (エイリアスファイルのキーの名称)
647 /// 戻り値 : 取得した設定値(UTF8)へのポインタ (取得出来ない場合はnullptrを返却)
648 /// エイリアスファイルの設定値と同じフォーマットになります
649 /// ※次に同一スレッドで文字列返却の関数を使うかコールバック処理の終了まで有効
650 pub get_effect_item_value: unsafe extern "C" fn(effect: EFFECT_HANDLE, item: LPCWSTR) -> LPCSTR,
651
652 /// エフェクトの設定項目の値を文字列で設定します (call_read_section利用不可)
653 /// effect : エフェクトのハンドル
654 /// item : 対象の設定項目の名称 (エイリアスファイルのキーの名称)
655 /// value : 設定値(UTF8)
656 /// エイリアスファイルの設定値と同じフォーマットになります
657 /// 戻り値 : 設定出来た場合はtrue (対象が見つからない場合は失敗します)
658 pub set_effect_item_value:
659 unsafe extern "C" fn(effect: EFFECT_HANDLE, item: LPCWSTR, value: LPCSTR) -> bool,
660
661 /// 指定フレーム位置でのエフェクトのトラックバー項目の値を取得します
662 /// ※フィルタプラグインから呼び出した場合は処理対象のシーンのオブジェクトのみ取得出来ます
663 /// effect : エフェクトのハンドル
664 /// item : 対象のトラックバー項目の名称 (エイリアスファイルのキーの名称)
665 /// frame : 取得対象のフレーム番号 ※小数部でフレーム間の位置を指定出来ます
666 /// value : トラックバー項目の値の格納先へのポインタ
667 /// 戻り値 : 設定出来た場合はtrue (対象が見つからない場合は失敗します)
668 pub get_effect_track_value: unsafe extern "C" fn(
669 effect: EFFECT_HANDLE,
670 item: LPCWSTR,
671 frame: f64,
672 value: *mut f64,
673 ) -> bool,
674
675 /// 指定フレーム位置でのエフェクトのチェックボックス(セクション毎含む)項目の値を取得します
676 /// effect : エフェクトのハンドル
677 /// item : 対象のチェックボックス項目の名称 (エイリアスファイルのキーの名称)
678 /// frame : 取得対象のフレーム番号 ※セクション毎チェックボックスの場合に利用
679 /// value : チェックボックス項目の値の格納先へのポインタ
680 /// 戻り値 : 設定出来た場合はtrue (対象が見つからない場合は失敗します)
681 pub get_effect_check_value: unsafe extern "C" fn(
682 effect: EFFECT_HANDLE,
683 item: LPCWSTR,
684 frame: i32,
685 value: *mut bool,
686 ) -> bool,
687
688 /// エフェクトのトラックバー項目の情報を取得します
689 /// effect : エフェクトのハンドル
690 /// item : 対象のトラックバー項目の名称 (エイリアスファイルのキーの名称)
691 /// info : トラックバー情報の格納先へのポインタ
692 /// info_size : トラックバー情報の格納先のサイズ ※TRACK_INFOと異なる場合はサイズ分のみ取得されます
693 /// 戻り値 : 取得出来た場合はtrue (対象が見つからない場合は失敗します)
694 pub get_effect_track_info: unsafe extern "C" fn(
695 effect: EFFECT_HANDLE,
696 item: LPCWSTR,
697 info: *mut TRACK_INFO,
698 info_size: i32,
699 ) -> bool,
700
701 /// グリッド(BPM)のBPM情報一覧を取得します
702 /// bpm_list : BPM情報リストの格納先へのポインタ
703 /// bpm_num : BPM情報リストの格納先の数
704 /// bpm_size : BPM情報構造体のサイズ ※BPM_INFOと異なる場合はサイズ分のみ取得されます
705 /// 戻り値 : 取得出来たBPM情報の数
706 /// bpm_listがnullptrの場合はグリッド(BPM)に設定されているBPM情報の数を返却します
707 pub get_grid_bpm_list:
708 unsafe extern "C" fn(bpm_list: *mut BPM_INFO, bpm_num: i32, bpm_size: i32) -> i32,
709
710 /// グリッド(BPM)のBPM情報一覧を設定します (call_read_section利用不可)
711 /// bpm_list : 設定するBPM情報リストへのポインタ
712 /// bpm_num : 設定するBPM情報リストの要素数
713 /// bpm_size : BPM情報構造体のサイズ ※BPM_INFOと異なる場合はサイズ分のみ設定されます
714 pub set_grid_bpm_list:
715 unsafe extern "C" fn(bpm_list: *mut BPM_INFO, bpm_num: i32, bpm_size: i32),
716
717 /// オブジェクトにエフェクトを追加します (call_read_section利用不可)
718 /// object : エフェクトを追加するオブジェクトのハンドル
719 /// effect : 追加するエフェクト名 (エイリアスファイルのeffect.nameの値)
720 /// : ※エフェクトが入出力項目(図形や標準描画等)の場合は差し替えになります
721 /// 戻り値 : 追加したエフェクトのハンドル (追加出来ない場合はnullptrを返却)
722 /// ※エフェクトハンドルはエフェクトが破棄されるかコールバック処理の終了まで有効
723 pub create_effect:
724 unsafe extern "C" fn(object: OBJECT_HANDLE, effect: LPCWSTR) -> EFFECT_HANDLE,
725
726 /// オブジェクトからエフェクトを削除します (call_read_section利用不可)
727 /// object : エフェクトを削除するオブジェクトのハンドル
728 /// effect : 削除するエフェクトのハンドル
729 /// 戻り値 : 削除出来た場合はtrue
730 pub delete_effect: unsafe extern "C" fn(object: OBJECT_HANDLE, effect: EFFECT_HANDLE) -> bool,
731
732 /// オブジェクトに中間点(区間)を追加します (call_read_section利用不可)
733 /// object : 中間点を追加するオブジェクトのハンドル
734 /// frame : 中間点を追加するフレーム番号
735 /// 戻り値 : 追加出来た場合はtrue
736 pub create_object_section: unsafe extern "C" fn(object: OBJECT_HANDLE, frame: i32) -> bool,
737
738 /// オブジェクトの中間点(区間)を削除します (call_read_section利用不可)
739 /// object : 中間点を削除するオブジェクトのハンドル
740 /// section : 削除する中間点の区間の番号 (開始位置が中間点の区間番号)
741 /// 戻り値 : 削除出来た場合はtrue
742 pub delete_object_section: unsafe extern "C" fn(object: OBJECT_HANDLE, section: i32) -> bool,
743
744 /// オブジェクトの区間の開始位置を移動します (call_read_section利用不可)
745 /// ※移動する区間番号(section)が区間数(最終区間+1)の場合は終了点を移動します
746 /// object : 区間を移動するオブジェクトのハンドル
747 /// section : 移動する区間の番号 (0〜区間数の値)
748 /// frame : 移動先のフレーム番号 ※区間を跨ぐ移動は出来ません
749 /// 戻り値 : 移動出来た場合はtrue
750 pub move_object_section:
751 unsafe extern "C" fn(object: OBJECT_HANDLE, section: i32, frame: i32) -> bool,
752
753 /// エフェクトの順序を移動します (call_read_section利用不可)
754 /// ※エフェクト種別がフィルタ効果の場合に順序を移動出来ます
755 /// object : エフェクトの順序を移動するオブジェクトのハンドル
756 /// effect : 順序を移動するエフェクトのハンドル
757 /// index : 移動目標の順序のインデックス
758 /// 戻り値 : 移動処理後の順序のインデックス (対象が見つからない場合は-1を返却)
759 pub move_effect:
760 unsafe extern "C" fn(object: OBJECT_HANDLE, effect: EFFECT_HANDLE, index: i32) -> i32,
761
762 /// エフェクトの汎用データ項目の値を取得します
763 /// effect : エフェクトのハンドル
764 /// item : 対象の設定項目の名称 (エイリアスファイルのキーの名称)
765 /// data : 汎用データの格納先へのポインタ
766 /// size : 汎用データの格納先のサイズ ※実際のサイズと異なる場合はサイズ分のみ取得されます
767 /// 戻り値 : 取得出来た汎用データのサイズ (取得出来ない場合は0を返却)
768 /// dataがnullptrの場合は汎用データのサイズを返却します
769 pub get_effect_data_value: unsafe extern "C" fn(
770 effect: EFFECT_HANDLE,
771 item: LPCWSTR,
772 data: *mut c_void,
773 size: i32,
774 ) -> i32,
775
776 /// エフェクトの汎用データ項目の値を設定します (call_read_section利用不可)
777 /// effect : エフェクトのハンドル
778 /// item : 対象の設定項目の名称 (エイリアスファイルのキーの名称)
779 /// data : 設定する汎用データへのポインタ
780 /// size : 設定する汎用データのサイズ
781 /// 戻り値 : 設定出来た場合はtrue (対象が見つからない場合は失敗します)
782 pub set_effect_data_value: unsafe extern "C" fn(
783 effect: EFFECT_HANDLE,
784 item: LPCWSTR,
785 data: *mut c_void,
786 size: i32,
787 ) -> bool,
788
789 /// 編集データを編集済み状態に設定する ※通常は自動的に設定されます
790 pub set_edited_state: unsafe extern "C" fn(),
791
792 /// マークされているフレームの一覧を取得します
793 /// frame_list : フレーム番号リストの格納先へのポインタ
794 /// frame_num : フレーム番号リストの格納先の数
795 /// 戻り値 : 取得出来たフレーム番号の数
796 /// frame_listがnullptrの場合はマークされているフレームの数を返却します
797 pub get_mark_frame_list: unsafe extern "C" fn(frame_list: *mut i32, frame_num: i32) -> i32,
798
799 /// 指定フレームのマークのメモを取得します
800 /// frame : マークのメモを取得するフレームの番号
801 /// 戻り値 : マークのメモへのポインタ (取得出来ない場合はnullptrを返却)
802 /// ※マークを編集するかコールバック処理の終了まで有効
803 pub get_mark_frame_memo: unsafe extern "C" fn(frame: i32) -> LPCWSTR,
804
805 /// 指定フレームをマークします (call_read_section利用不可)
806 /// 既にマークされている場合はメモを更新します
807 /// frame : マークを設定するフレームの番号
808 /// memo : マークのメモ (nullptrを指定すると空を設定します)
809 pub set_mark_frame: unsafe extern "C" fn(frame: i32, memo: LPCWSTR),
810
811 /// 指定フレームのマークを解除します (call_read_section利用不可)
812 /// frame : マークを解除するフレームの番号
813 pub clear_mark_frame: unsafe extern "C" fn(frame: i32),
814
815 /// 指定フレームのマークを移動します (call_read_section利用不可)
816 /// frame : マークを移動するフレームの番号
817 /// frame_to : マークの移動先のフレームの番号
818 /// 戻り値 : 移動定出来た場合はtrue (移動元がマーク未設定、移動先がマーク済みの場合は失敗します)
819 pub move_mark_frame: unsafe extern "C" fn(frame: i32, frame_to: i32) -> bool,
820
821 /// 指定のパレットの情報を設定します (call_read_section利用不可)
822 /// ※パレットファイルの保存をします
823 /// name : パレット名
824 /// info : パレット情報へのポインタ
825 /// info_size : パレット情報のサイズ ※PALETTE_INFOのサイズ
826 /// 戻り値 : 設定出来た場合はtrue (対象が見つからない場合は失敗します)
827 pub set_palette_info:
828 unsafe extern "C" fn(name: LPCWSTR, info: *mut PALETTE_INFO, info_size: i32) -> bool,
829
830 /// 指定のオブジェクトフラグの状態を取得します
831 /// object : フラグを取得するオブジェクトのハンドル
832 /// type : オブジェクトフラグの種別
833 /// 戻り値 : フラグが有効か? (取得出来ない場合はfalseを返却)
834 pub get_object_flag:
835 unsafe extern "C" fn(object: OBJECT_HANDLE, r#type: OBJECT_FLAG_TYPE) -> bool,
836
837 /// 指定のオブジェクトフラグの状態を設定します (call_read_section利用不可)
838 /// object : フラグを設定するオブジェクトのハンドル
839 /// type : オブジェクトフラグの種別
840 /// flag : フラグの状態
841 pub set_object_flag:
842 unsafe extern "C" fn(object: OBJECT_HANDLE, r#type: OBJECT_FLAG_TYPE, flag: bool),
843
844 /// オブジェクトIDを取得します
845 /// object : IDを取得するオブジェクトのハンドル
846 /// 戻り値 : オブジェクトID (取得出来ない場合は0を返却)
847 pub get_object_id: unsafe extern "C" fn(object: OBJECT_HANDLE) -> i64,
848
849 /// エフェクトIDを取得します
850 /// effect : IDを取得するエフェクトのハンドル
851 /// 戻り値 : エフェクトID (取得出来ない場合は0を返却)
852 pub get_effect_id: unsafe extern "C" fn(effect: EFFECT_HANDLE) -> i64,
853}
854
855/// 編集ハンドル構造体
856/// get_host_app_window()以外はRegisterPlugin処理内から利用出来ません
857#[repr(C)]
858pub struct EDIT_HANDLE {
859 /// プロジェクトデータの編集をする為のコールバック関数(func_proc_edit)を呼び出します
860 /// 編集情報を排他制御する為に更新ロック状態のコールバック関数内で編集処理をする形になります
861 /// コールバック関数内で編集したオブジェクトは纏めてUndoに登録されます
862 /// コールバック関数はメインスレッドから呼ばれます
863 /// func_proc_edit : 編集処理のコールバック関数
864 /// 戻り値 : trueなら成功
865 /// 編集が出来ない場合(出力中等)に失敗します
866 pub call_edit_section:
867 unsafe extern "C" fn(func_proc_edit: unsafe extern "C" fn(edit: *mut EDIT_SECTION)) -> bool,
868
869 /// call_edit_section()に引数paramを渡せるようにした関数です
870 /// param : 任意のユーザーデータのポインタ
871 pub call_edit_section_param: unsafe extern "C" fn(
872 param: *mut c_void,
873 func_proc_edit: unsafe extern "C" fn(param: *mut c_void, edit: *mut EDIT_SECTION),
874 ) -> bool,
875
876 /// 編集情報を取得します
877 /// 編集情報を排他制御する為に参照ロックします。※同一スレッドで既にロック状態の場合はそのまま取得します。
878 /// info : 編集情報の格納先へのポインタ
879 /// info_size : 編集情報の格納先のサイズ ※EDIT_INFOと異なる場合はサイズ分のみ取得されます
880 pub get_edit_info: unsafe extern "C" fn(info: *mut EDIT_INFO, info_size: i32),
881
882 /// ホストアプリケーションを再起動します
883 pub restart_host_app: unsafe extern "C" fn(),
884
885 /// エフェクト名の一覧をコールバック関数(func_proc_enum_effect)で取得します
886 /// param : 任意のユーザーデータのポインタ
887 /// func_proc_enum_effect : エフェクト名の取得処理のコールバック関数
888 pub enum_effect_name: unsafe extern "C" fn(
889 param: *mut c_void,
890 func_proc_enum_effect: unsafe extern "C" fn(
891 param: *mut c_void,
892 name: LPCWSTR,
893 r#type: i32,
894 flag: i32,
895 ),
896 ),
897
898 /// モジュール情報の一覧をコールバック関数(func_proc_enum_module)で取得します
899 /// param : 任意のユーザーデータのポインタ
900 /// func_proc_enum_module : モジュール情報の取得処理のコールバック関数
901 pub enum_module_info: unsafe extern "C" fn(
902 param: *mut c_void,
903 func_proc_enum_module: unsafe extern "C" fn(param: *mut c_void, info: *mut MODULE_INFO),
904 ),
905
906 /// ホストアプリケーションのメインウィンドウのハンドルを取得します
907 pub get_host_app_window: unsafe extern "C" fn() -> HWND,
908
909 /// 編集状態を取得します
910 pub get_edit_state: unsafe extern "C" fn() -> i32,
911
912 /// プロジェクトデータを参照する為のコールバック関数(func_proc_read_section)を呼び出します
913 /// 参照中にデータが更新されないように参照ロック状態のコールバック関数内で処理をする形になります
914 /// EDIT_SECTIONの更新系の関数等は利用出来ません ※EDIT_SECTIONの各項目に記載しています
915 /// コールバック関数は呼び出し元と同じスレッドで呼ばれます
916 /// func_proc_read_section : コールバック関数
917 /// 戻り値 : trueなら成功
918 /// 参照が出来ない場合(出力中等)に失敗します
919 pub call_read_section: unsafe extern "C" fn(
920 func_proc_read_section: unsafe extern "C" fn(edit: *mut EDIT_SECTION),
921 ) -> bool,
922
923 /// call_read_section()に引数paramを渡せるようにした関数です
924 /// param : 任意のユーザーデータのポインタ
925 pub call_read_section_param: unsafe extern "C" fn(
926 param: *mut c_void,
927 func_proc_read_section: unsafe extern "C" fn(param: *mut c_void, edit: *mut EDIT_SECTION),
928 ) -> bool,
929
930 /// エフェクトの設定項目の一覧をコールバック関数(func_proc_enum_effect_item)で取得します
931 /// effect : 対象のエフェクト名 (エイリアスファイルのeffect.nameの値)
932 /// param : 任意のユーザーデータのポインタ
933 /// func_proc_enum_effect_item : エフェクトの設定項目の取得処理のコールバック関数
934 /// 戻り値 : 取得出来た場合はtrue (対象が見つからない場合は失敗します)
935 pub enum_effect_item: unsafe extern "C" fn(
936 effect: LPCWSTR,
937 param: *mut c_void,
938 func_proc_enum_effect_item: unsafe extern "C" fn(
939 param: *mut c_void,
940 name: LPCWSTR,
941 r#type: i32,
942 ),
943 ) -> bool,
944
945 /// 現在のシーンの映像のレンダリングをします
946 /// この関数はレンダリングのタスクを追加するのみで完了します
947 /// レンダリング完了時はイベント通知スレッドからコールバック関数が呼ばれます
948 /// frame : レンダリング対象のフレーム番号
949 /// param : 任意のユーザーデータのポインタ
950 /// func_proc_rendering_video : レンダリング完了時に呼ばれるコールバック関数
951 /// buffer : レンダリングした画像データへのポインタ ※PIXEL_RGBA形式
952 /// width,height : レンダリングした画像サイズ
953 /// pitch : レンダリングした画像データの横1ラインのバイト数
954 /// 戻り値 : レンダリング要求が成功した場合はtrue (出力中等は失敗します)
955 pub rendering_scene_video: unsafe extern "C" fn(
956 frame: i32,
957 param: *mut c_void,
958 func_proc_rendering_video: unsafe extern "C" fn(
959 param: *mut c_void,
960 frame: i32,
961 buffer: *const c_void,
962 width: i32,
963 height: i32,
964 pitch: i32,
965 ),
966 ) -> bool,
967
968 /// 現在のシーンの音声のレンダリングをします
969 /// この関数はレンダリングのタスクを追加するのみで完了します
970 /// レンダリング完了時はイベント通知スレッドからコールバック関数が呼ばれます
971 /// frame : レンダリング対象のフレーム番号
972 /// param : 任意のユーザーデータのポインタ
973 /// func_proc_rendering_audio : レンダリング完了時に呼ばれるコールバック関数
974 /// buffer0 : レンダリングした音声データ(左チャンネル)へのポインタ ※PCM(float)32bit形式
975 /// buffer1 : レンダリングした音声データ(右チャンネル)へのポインタ ※PCM(float)32bit形式
976 /// sample_num : レンダリングした音声のサンプル数
977 /// 戻り値 : レンダリング要求が成功した場合はtrue (出力中等は失敗します)
978 pub rendering_scene_audio: unsafe extern "C" fn(
979 frame: i32,
980 param: *mut c_void,
981 func_proc_rendering_audio: unsafe extern "C" fn(
982 param: *mut c_void,
983 frame: i32,
984 buffer0: *const f32,
985 buffer1: *const f32,
986 sample_num: i32,
987 ),
988 ) -> bool,
989
990 /// レンダリング中のタスクが全て完了するまで待機します
991 /// ※参照ロック、編集ロック状態で呼び出すとデッドロックする可能性があります
992 pub wait_rendering_task: unsafe extern "C" fn(),
993
994 /// フォント名の一覧をコールバック関数(func_proc_enum_font)で取得します
995 /// param : 任意のユーザーデータのポインタ
996 /// func_proc_enum_font : フォント名の取得処理のコールバック関数
997 pub enum_font_name: unsafe extern "C" fn(
998 param: *mut c_void,
999 func_proc_enum_font: unsafe extern "C" fn(param: *mut c_void, name: LPCWSTR),
1000 ),
1001
1002 /// パレット名の一覧をコールバック関数(func_proc_enum_palette)で取得します
1003 /// パレット情報を排他制御する為に参照ロックします。※同一スレッドで既にロック状態の場合はそのまま取得します。
1004 /// param : 任意のユーザーデータのポインタ
1005 /// func_proc_enum_palette : パレット名の取得処理のコールバック関数
1006 pub enum_palette_name: unsafe extern "C" fn(
1007 param: *mut c_void,
1008 func_proc_enum_palette: unsafe extern "C" fn(param: *mut c_void, name: LPCWSTR),
1009 ),
1010
1011 /// 指定のオブジェクトの映像のレンダリングをします
1012 /// この関数はレンダリングのタスクを追加するのみで完了します
1013 /// レンダリング完了時はイベント通知スレッドからコールバック関数が呼ばれます
1014 /// object : レンダリング対象のオブジェクトのハンドル
1015 /// frame : レンダリング対象のフレーム番号
1016 /// apply_effect : 追加のフィルタ効果を反映するか? ※グループ制御の追加効果は反映されません
1017 /// param : 任意のユーザーデータのポインタ
1018 /// func_proc_rendering_video : レンダリング完了時に呼ばれるコールバック関数
1019 /// buffer : レンダリングした画像データへのポインタ ※PIXEL_RGBA形式
1020 /// width,height : レンダリングした画像サイズ
1021 /// pitch : レンダリングした画像データの横1ラインのバイト数
1022 /// 戻り値 : レンダリング要求が成功した場合はtrue (対象外のオブジェクトや出力中等は失敗します)
1023 pub rendering_object_video: unsafe extern "C" fn(
1024 object: OBJECT_HANDLE,
1025 frame: i32,
1026 apply_effect: bool,
1027 param: *mut c_void,
1028 func_proc_rendering_video: unsafe extern "C" fn(
1029 param: *mut c_void,
1030 frame: i32,
1031 buffer: *const c_void,
1032 width: i32,
1033 height: i32,
1034 pitch: i32,
1035 ),
1036 ) -> bool,
1037
1038 /// 指定のオブジェクトの音声のレンダリングをします
1039 /// この関数はレンダリングのタスクを追加するのみで完了します
1040 /// レンダリング完了時はイベント通知スレッドからコールバック関数が呼ばれます
1041 /// object : レンダリング対象のオブジェクトのハンドル
1042 /// frame : レンダリング対象のフレーム番号
1043 /// apply_effect : 追加のフィルタ効果を反映するか? ※グループ制御の追加効果は反映されません
1044 /// param : 任意のユーザーデータのポインタ
1045 /// func_proc_rendering_audio : レンダリング完了時に呼ばれるコールバック関数
1046 /// buffer0 : レンダリングした音声データ(左チャンネル)へのポインタ ※PCM(float)32bit形式
1047 /// buffer1 : レンダリングした音声データ(右チャンネル)へのポインタ ※PCM(float)32bit形式
1048 /// sample_num : レンダリングした音声のサンプル数
1049 /// 戻り値 : レンダリング要求が成功した場合はtrue (出力中等は失敗します)
1050 pub rendering_object_audio: unsafe extern "C" fn(
1051 object: OBJECT_HANDLE,
1052 frame: i32,
1053 apply_effect: bool,
1054 param: *mut c_void,
1055 func_proc_rendering_audio: unsafe extern "C" fn(
1056 param: *mut c_void,
1057 frame: i32,
1058 buffer0: *const f32,
1059 buffer1: *const f32,
1060 sample_num: i32,
1061 ),
1062 ) -> bool,
1063
1064 /// 指定の設定項目が所属するグループの所属アイテム名を取得します
1065 /// グループ項目を直接指定することも出来ます (item_indexにはnullptrを指定します)
1066 /// effect : 対象のエフェクト名 (エイリアスファイルのeffect.nameの値)
1067 /// item : 対象の設定項目の名称 (エイリアスファイルのキーの名称)
1068 /// item_names : グループの所属アイテム名の格納先へのポインタ
1069 /// item_num : グループの所属アイテム名の格納先の数
1070 /// item_index : 対象の設定項目のグループ内のインデックスの格納先へのポインタ (nullptrの場合は格納しません)
1071 /// 戻り値 : 取得出来た所属アイテム名の数 (グループに所属していない場合は0を返却)
1072 /// item_namesがnullptrの場合は所属アイテム数を返却します
1073 pub get_effect_item_group_names: unsafe extern "C" fn(
1074 effect: LPCWSTR,
1075 item: LPCWSTR,
1076 item_names: *mut LPCWSTR,
1077 item_num: i32,
1078 item_index: *mut i32,
1079 ) -> i32,
1080
1081 /// シーン名の一覧をコールバック関数(func_proc_enum_scene)で取得します
1082 /// シーン情報を排他制御する為に参照ロックします。※同一スレッドで既にロック状態の場合はそのまま取得します。
1083 /// param : 任意のユーザーデータのポインタ
1084 /// func_proc_enum_scene : シーン名の取得処理のコールバック関数
1085 pub enum_scene_name: unsafe extern "C" fn(
1086 param: *mut c_void,
1087 func_proc_enum_scene: unsafe extern "C" fn(param: *mut c_void, name: LPCWSTR, scene_id: i32),
1088 ),
1089
1090 /// 指定のシーンに切り替えます
1091 /// 参照ロック、編集ロック状態では利用出来ません
1092 /// scene_id : シーンのID
1093 /// 戻り値 : 成功した場合はtrue (シーンが存在しない場合や出力中等は失敗します)
1094 pub select_scene: unsafe extern "C" fn(scene_id: i32) -> bool,
1095
1096 /// シーンを作成します (作成したシーンに切り替わります)
1097 /// 参照ロック、編集ロック状態では利用出来ません
1098 /// name : シーン名
1099 /// label : シーンのラベル (nullptrか空文字を指定するとラベル無し)
1100 /// width, height : シーンの解像度
1101 /// rate, scale : シーンのフレームレート
1102 /// sample_rate : シーンのサンプリングレート
1103 /// background : シーンの背景色 (background.aが255以外の場合は透明色)
1104 /// 戻り値 : 成功した場合はtrue (出力中等は失敗します)
1105 pub create_scene: unsafe extern "C" fn(
1106 name: LPCWSTR,
1107 label: LPCWSTR,
1108 width: i32,
1109 height: i32,
1110 rate: i32,
1111 scale: i32,
1112 sample_rate: i32,
1113 background: EDIT_INFO_COLOR,
1114 ) -> bool,
1115
1116 /// プロジェクトを新規作成します
1117 /// 参照ロック、編集ロック状態では利用出来ません
1118 /// width, height : シーンの解像度
1119 /// rate, scale : シーンのフレームレート
1120 /// sample_rate : シーンのサンプリングレート
1121 /// background : シーンの背景色 (background.aが255以外の場合は透明色)
1122 /// show_confirm : 現在のプロジェクトの保存・キャンセルの確認ダイアログを表示する
1123 /// 戻り値 : 成功した場合はtrue (出力中等は失敗します)
1124 pub create_project: unsafe extern "C" fn(
1125 width: i32,
1126 height: i32,
1127 rate: i32,
1128 scale: i32,
1129 sample_rate: i32,
1130 background: EDIT_INFO_COLOR,
1131 show_confirm: bool,
1132 ) -> bool,
1133
1134 /// 指定のプロジェクトファイルを開きます
1135 /// 参照ロック、編集ロック状態では利用出来ません
1136 /// file : プロジェクトファイルのパス
1137 /// show_confirm : 現在のプロジェクトの保存・キャンセルの確認ダイアログを表示する
1138 /// 戻り値 : 成功した場合はtrue (出力中等は失敗します)
1139 pub open_project_file: unsafe extern "C" fn(file: LPCWSTR, show_confirm: bool) -> bool,
1140
1141 /// 指定のプロジェクトファイルへ保存します (自動バックアップと同じ処理で保存されます)
1142 /// 参照ロック、編集ロック状態では利用出来ません
1143 /// file : プロジェクトファイルのパス
1144 /// 戻り値 : 成功した場合はtrue (出力中等は失敗します)
1145 pub save_project_file: unsafe extern "C" fn(file: LPCWSTR) -> bool,
1146
1147 /// 現在のシーンを出力プラグインでファイル出力します
1148 /// この関数はファイル出力を開始するのみで完了します
1149 /// 参照ロック、編集ロック状態では利用出来ません
1150 /// file : 出力ファイルのパス
1151 /// output_plugin : 出力プラグイン名
1152 /// func_project_config : 出力開始時にプロジェクトのファイル出力設定を反映させるコールバック関数 (nullptrなら呼ばれません)
1153 /// ※出力プラグインのFLAG_PROJECT_CONFIGが有効の場合にfunc_save_project_config()と同じ設定をすることで反映出来ます
1154 /// 戻り値 : 成功した場合はtrue (出力中等は失敗します)
1155 pub output_file: unsafe extern "C" fn(
1156 file: LPCWSTR,
1157 output_plugin: LPCWSTR,
1158 param: *mut c_void,
1159 func_project_config: Option<
1160 unsafe extern "C" fn(param: *mut c_void, project: *mut PROJECT_FILE),
1161 >,
1162 ) -> bool,
1163}
1164
1165impl EDIT_HANDLE {
1166 /// エフェクト種別 ※今後追加される可能性があります
1167 /// フィルタ効果
1168 pub const EFFECT_TYPE_FILTER: i32 = 1;
1169 /// メディア入力
1170 pub const EFFECT_TYPE_INPUT: i32 = 2;
1171 /// シーンチェンジ
1172 pub const EFFECT_TYPE_TRANSITION: i32 = 3;
1173 /// オブジェクト制御
1174 pub const EFFECT_TYPE_CONTROL: i32 = 4;
1175 /// メディア出力
1176 /// エフェクトフラグ ※今後追加される可能性があります
1177 pub const EFFECT_TYPE_OUTPUT: i32 = 5;
1178 /// 画像をサポート
1179 pub const EFFECT_FLAG_VIDEO: i32 = 1;
1180 /// 音声をサポート
1181 pub const EFFECT_FLAG_AUDIO: i32 = 2;
1182 /// フィルタオブジェクトをサポート
1183 pub const EFFECT_FLAG_FILTER: i32 = 4;
1184 /// カメラ効果をサポート
1185 pub const EFFECT_FLAG_CAMERA: i32 = 8;
1186 /// 編集中
1187 pub const EDIT_STATE_EDIT: i32 = 0;
1188 /// プレビュー再生中
1189 pub const EDIT_STATE_PLAY: i32 = 1;
1190 /// ファイル出力中
1191 pub const EDIT_STATE_SAVE: i32 = 2;
1192 /// 設定項目種別 ※今後追加される可能性があります
1193 /// 整数
1194 pub const EFFECT_ITEM_TYPE_INTEGER: i32 = 1;
1195 /// 数値(トラックバー)
1196 pub const EFFECT_ITEM_TYPE_NUMBER: i32 = 2;
1197 /// チェックボックス
1198 pub const EFFECT_ITEM_TYPE_CHECK: i32 = 3;
1199 /// テキスト
1200 pub const EFFECT_ITEM_TYPE_TEXT: i32 = 4;
1201 /// 文字列
1202 pub const EFFECT_ITEM_TYPE_STRING: i32 = 5;
1203 /// ファイル
1204 pub const EFFECT_ITEM_TYPE_FILE: i32 = 6;
1205 /// 色
1206 pub const EFFECT_ITEM_TYPE_COLOR: i32 = 7;
1207 /// リスト選択
1208 pub const EFFECT_ITEM_TYPE_SELECT: i32 = 8;
1209 /// シーン
1210 pub const EFFECT_ITEM_TYPE_SCENE: i32 = 9;
1211 /// レイヤー範囲
1212 pub const EFFECT_ITEM_TYPE_RANGE: i32 = 10;
1213 /// リストと文字の複合
1214 pub const EFFECT_ITEM_TYPE_COMBO: i32 = 11;
1215 /// マスク
1216 pub const EFFECT_ITEM_TYPE_MASK: i32 = 12;
1217 /// フォント
1218 pub const EFFECT_ITEM_TYPE_FONT: i32 = 13;
1219 /// 図形
1220 pub const EFFECT_ITEM_TYPE_FIGURE: i32 = 14;
1221 /// データ
1222 pub const EFFECT_ITEM_TYPE_DATA: i32 = 15;
1223 /// フォルダ
1224 pub const EFFECT_ITEM_TYPE_FOLDER: i32 = 16;
1225 /// 数値(トラックバー)グループ
1226 pub const EFFECT_ITEM_TYPE_NUMBER_GROUP: i32 = 17;
1227 /// 設定グループ(明示的なグループのみ) ※設定値無し
1228 pub const EFFECT_ITEM_TYPE_GROUP: i32 = 18;
1229 /// セパレーター ※設定値無し
1230 pub const EFFECT_ITEM_TYPE_SEPARATOR: i32 = 19;
1231}
1232
1233/// プロジェクトファイル構造体
1234/// プロジェクトファイルのロード、セーブのコールバックや編集のコールバック関数内で利用出来ます
1235/// プロジェクトの保存データはプラグイン毎のデータ領域になります
1236#[repr(C)]
1237pub struct PROJECT_FILE {
1238 /// プロジェクトに保存されている文字列(UTF-8)を取得します
1239 /// key : キー名(UTF-8)
1240 /// 戻り値 : 取得した文字列へのポインタ (未設定の場合はnullptr)
1241 /// ※コールバック処理の終了まで有効
1242 pub get_param_string: unsafe extern "C" fn(key: LPCSTR) -> LPCSTR,
1243 /// プロジェクトに文字列(UTF-8)を保存します
1244 /// key : キー名(UTF-8)
1245 /// value : 保存する文字列(UTF-8)
1246 pub set_param_string: unsafe extern "C" fn(key: LPCSTR, value: LPCSTR),
1247 /// プロジェクトに保存されているバイナリデータを取得します
1248 /// key : キー名(UTF-8)
1249 /// data : 取得するデータの格納先へのポインタ
1250 /// size : 取得するデータのサイズ (保存されているサイズと異なる場合は失敗します)
1251 /// 戻り値 : 正しく取得出来た場合はtrue
1252 pub get_param_binary: unsafe extern "C" fn(key: LPCSTR, data: *mut c_void, size: i32) -> bool,
1253 /// プロジェクトにバイナリデータを保存します
1254 /// key : キー名(UTF-8)
1255 /// data : 保存するデータへのポインタ
1256 /// size : 保存するデータのサイズ (4096バイト以下)
1257 pub set_param_binary: unsafe extern "C" fn(key: LPCSTR, data: *mut c_void, size: i32),
1258 /// プロジェクトに保存されているデータを全て削除します
1259 pub clear_params: unsafe extern "C" fn(),
1260
1261 /// プロジェクトファイルのパスを取得します
1262 /// key : キー名(UTF-8)
1263 /// 戻り値 : プロジェクトファイルパスへのポインタ (ファイルパスは未設定の場合があります)
1264 /// ※コールバック処理の終了まで有効
1265 pub get_project_file_path: unsafe extern "C" fn() -> LPCWSTR,
1266}
1267
1268/// ホストアプリケーション構造体
1269#[repr(C)]
1270pub struct HOST_APP_TABLE {
1271 /// プラグインの情報を設定する
1272 /// information : プラグインの情報
1273 /// ※現在はGetCommonPluginTable()を利用する方法が推奨になります
1274 #[deprecated(note = "現在はGetCommonPluginTable()を利用する方法が推奨になります")]
1275 pub set_plugin_information: unsafe extern "C" fn(information: LPCWSTR),
1276
1277 /// 入力プラグインを登録する
1278 /// input_plugin_table : 入力プラグイン構造体
1279 pub register_input_plugin: unsafe extern "C" fn(input_plugin_table: *mut INPUT_PLUGIN_TABLE),
1280 /// 出力プラグインを登録する
1281 /// output_plugin_table : 出力プラグイン構造体
1282 pub register_output_plugin: unsafe extern "C" fn(output_plugin_table: *mut OUTPUT_PLUGIN_TABLE),
1283 /// フィルタプラグインを登録する
1284 /// filter_plugin_table : フィルタプラグイン構造体
1285 /// ※FLAG_USERDATAを利用する場合は編集リソースが破棄されてからUninitializePlugin()が呼ばれます
1286 pub register_filter_plugin: unsafe extern "C" fn(filter_plugin_table: *mut FILTER_PLUGIN_TABLE),
1287 /// スクリプトモジュールを登録する
1288 /// script_module_table : スクリプトモジュール構造体
1289 pub register_script_module: unsafe extern "C" fn(script_module_table: *mut SCRIPT_MODULE_TABLE),
1290
1291 /// インポートメニューを登録する (ウィンドウメニューのファイルに追加されます)
1292 /// name : インポートメニューの名称
1293 /// func_proc_import : インポートメニュー選択時のコールバック関数
1294 pub register_import_menu: unsafe extern "C" fn(
1295 name: LPCWSTR,
1296 func_proc_import: unsafe extern "C" fn(*mut EDIT_SECTION),
1297 ),
1298 /// エクスポートメニューを登録する (ウィンドウメニューのファイルに追加されます)
1299 /// name : エクスポートメニューの名称
1300 /// func_proc_export : エクスポートメニュー選択時のコールバック関数
1301 pub register_export_menu: unsafe extern "C" fn(
1302 name: LPCWSTR,
1303 func_proc_export: unsafe extern "C" fn(*mut EDIT_SECTION),
1304 ),
1305
1306 /// ウィンドウクライアントを登録する
1307 /// name : ウィンドウの名称
1308 /// hwnd : ウィンドウハンドル
1309 /// ウィンドウにはWS_CHILDが追加され親ウィンドウが設定されます ※WS_POPUPは削除されます
1310 pub register_window_client: unsafe extern "C" fn(name: LPCWSTR, hwnd: HWND),
1311
1312 /// プロジェクトデータ編集用のハンドルを取得します
1313 /// 戻り値 : 編集ハンドル
1314 pub create_edit_handle: unsafe extern "C" fn() -> *mut EDIT_HANDLE,
1315
1316 /// プロジェクトファイルをロードした直後に呼ばれる関数を登録する ※プロジェクトの初期化時にも呼ばれます
1317 /// func_project_load : プロジェクトファイルのロード時のコールバック関数
1318 pub register_project_load_handler:
1319 unsafe extern "C" fn(func_project_load: unsafe extern "C" fn(*mut PROJECT_FILE)),
1320 /// プロジェクトファイルをセーブする直前に呼ばれる関数を登録する
1321 /// func_project_save : プロジェクトファイルのセーブ時のコールバック関数
1322 pub register_project_save_handler:
1323 unsafe extern "C" fn(func_project_save: unsafe extern "C" fn(*mut PROJECT_FILE)),
1324
1325 /// レイヤーメニューを登録する (レイヤー編集でオブジェクト未選択時の右クリックメニューに追加されます)
1326 /// name : レイヤーメニューの名称 ※名称に'\'を入れると表示を複数階層に出来ます
1327 /// func_proc_layer_menu : レイヤーメニュー選択時のコールバック関数
1328 pub register_layer_menu: unsafe extern "C" fn(
1329 name: LPCWSTR,
1330 func_proc_layer_menu: unsafe extern "C" fn(*mut EDIT_SECTION),
1331 ),
1332
1333 /// オブジェクトメニューを登録する (レイヤー編集でオブジェクト選択時の右クリックメニューに追加されます)
1334 /// name : オブジェクトメニューの名称 ※名称に'\'を入れると表示を複数階層に出来ます
1335 /// func_proc_object_menu : オブジェクトメニュー選択時のコールバック関数
1336 pub register_object_menu: unsafe extern "C" fn(
1337 name: LPCWSTR,
1338 func_proc_object_menu: unsafe extern "C" fn(*mut EDIT_SECTION),
1339 ),
1340
1341 /// 設定メニューを登録する
1342 /// 設定メニューの登録後にウィンドウクライアントを登録するとシステムメニューに「設定」が追加されます
1343 /// name : 設定メニューの名称
1344 /// func_config : 設定メニュー選択時のコールバック関数
1345 pub register_config_menu:
1346 unsafe extern "C" fn(name: LPCWSTR, func_config: unsafe extern "C" fn(HWND, HINSTANCE)),
1347
1348 /// 編集メニューを登録する
1349 /// name : 編集メニューの名称 ※名称に'\'を入れると表示を階層に出来ます
1350 /// func_proc_edit_menu : 編集メニュー選択時のコールバック関数
1351 pub register_edit_menu: unsafe extern "C" fn(
1352 name: LPCWSTR,
1353 func_proc_edit_menu: unsafe extern "C" fn(*mut EDIT_SECTION),
1354 ),
1355
1356 /// キャッシュを破棄の操作時に呼ばれる関数を登録する
1357 /// func_proc_clear_cache : キャッシュの破棄時のコールバック関数
1358 pub register_clear_cache_handler:
1359 unsafe extern "C" fn(func_proc_clear_cache: unsafe extern "C" fn(*mut EDIT_SECTION)),
1360
1361 /// シーンを変更した直後に呼ばれる関数を登録する ※シーンの設定情報が更新された時にも呼ばれます
1362 /// func_proc_change_scene : シーン変更時のコールバック関数
1363 pub register_change_scene_handler:
1364 unsafe extern "C" fn(func_proc_change_scene: unsafe extern "C" fn(*mut EDIT_SECTION)),
1365
1366 /// インポートメニューを登録する (ウィンドウメニューのファイルに追加されます)
1367 /// 引数paramを渡して編集セクションにしないでコールバックを呼び出します
1368 /// name : インポートメニューの名称
1369 /// param : 任意のユーザーデータのポインタ
1370 /// func_proc_import : インポートメニュー選択時のコールバック関数
1371 pub register_import_menu_param: unsafe extern "C" fn(
1372 name: LPCWSTR,
1373 param: *mut c_void,
1374 func_proc_import: unsafe extern "C" fn(param: *mut c_void),
1375 ),
1376
1377 /// エクスポートメニューを登録する (ウィンドウメニューのファイルに追加されます)
1378 /// 引数paramを渡して編集セクションにしないでコールバックを呼び出します
1379 /// name : エクスポートメニューの名称
1380 /// param : 任意のユーザーデータのポインタ
1381 /// func_proc_export : エクスポートメニュー選択時のコールバック関数
1382 pub register_export_menu_param: unsafe extern "C" fn(
1383 name: LPCWSTR,
1384 param: *mut c_void,
1385 func_proc_export: unsafe extern "C" fn(param: *mut c_void),
1386 ),
1387
1388 /// レイヤーメニューを登録する (レイヤー編集でオブジェクト未選択時の右クリックメニューに追加されます)
1389 /// 引数paramを渡して編集セクションにしないでコールバックを呼び出します
1390 /// name : レイヤーメニューの名称 ※名称に'\'を入れると表示を複数階層に出来ます
1391 /// param : 任意のユーザーデータのポインタ
1392 /// func_proc_layer_menu : レイヤーメニュー選択時のコールバック関数
1393 pub register_layer_menu_param: unsafe extern "C" fn(
1394 name: LPCWSTR,
1395 param: *mut c_void,
1396 func_proc_layer_menu: unsafe extern "C" fn(param: *mut c_void),
1397 ),
1398
1399 /// オブジェクトメニューを登録する (レイヤー編集でオブジェクト選択時の右クリックメニューに追加されます)
1400 /// 引数paramを渡して編集セクションにしないでコールバックを呼び出します
1401 /// name : オブジェクトメニューの名称 ※名称に'\'を入れると表示を複数階層に出来ます
1402 /// param : 任意のユーザーデータのポインタ
1403 /// func_proc_object_menu : オブジェクトメニュー選択時のコールバック関数
1404 pub register_object_menu_param: unsafe extern "C" fn(
1405 name: LPCWSTR,
1406 param: *mut c_void,
1407 func_proc_object_menu: unsafe extern "C" fn(param: *mut c_void),
1408 ),
1409
1410 /// 編集メニューを登録する
1411 /// 引数paramを渡して編集セクションにしないでコールバックを呼び出します
1412 /// name : 編集メニューの名称 ※名称に'\'を入れると表示を階層に出来ます
1413 /// param : 任意のユーザーデータのポインタ
1414 /// func_proc_edit_menu : 編集メニュー選択時のコールバック関数
1415 pub register_edit_menu_param: unsafe extern "C" fn(
1416 name: LPCWSTR,
1417 param: *mut c_void,
1418 func_proc_edit_menu: unsafe extern "C" fn(param: *mut c_void),
1419 ),
1420
1421 /// ファイルをD&Dした時に呼ばれる関数を登録する
1422 /// name : ドラッグ時のツールチップや入力プラグインの設定で表示する名称
1423 /// filefilter : D&Dに対応するファイルフィルタ
1424 /// func_proc_file_drop : ファイルをD&Dした時のコールバック関数
1425 pub register_file_drop_handler: unsafe extern "C" fn(
1426 name: LPCWSTR,
1427 filefilter: LPCWSTR,
1428 func_proc_file_drop: unsafe extern "C" fn(edit_section: *mut EDIT_SECTION, file: LPCWSTR),
1429 ),
1430
1431 /// ファイルをD&Dした時に呼ばれる関数を登録する
1432 /// 引数paramを渡して編集セクションにしないでコールバックを呼び出します
1433 /// name : ドラッグ時のツールチップや入力プラグインの設定で表示する名称
1434 /// filefilter : D&Dに対応するファイルフィルタ
1435 /// param : 任意のユーザーデータのポインタ
1436 /// func_proc_file_drop : ファイルをD&Dした時のコールバック関数
1437 pub register_file_drop_param_handler: unsafe extern "C" fn(
1438 name: LPCWSTR,
1439 filefilter: LPCWSTR,
1440 param: *mut c_void,
1441 func_proc_file_drop: unsafe extern "C" fn(param: *mut c_void, file: LPCWSTR),
1442 ),
1443
1444 /// オブジェクト編集の設定項目メニューを登録する (オブジェクト編集の右クリックメニューに追加されます)
1445 /// name : 設定項目メニューの名称 ※名称に'\'を入れると表示を複数階層に出来ます
1446 /// allow_effect_only : エフェクトのみを許可するか? ※trueの場合はitemがnullptrで呼ばれるケースを許可します
1447 /// func_proc_item_menu : 設定項目メニュー選択時のコールバック関数
1448 /// ※コールバック関数の引数はget_object_item_value()の引数と同じ形式になります
1449 pub register_object_item_menu: unsafe extern "C" fn(
1450 name: LPCWSTR,
1451 allow_effect_only: bool,
1452 func_proc_item_menu: unsafe extern "C" fn(
1453 edit: *mut EDIT_SECTION,
1454 object: OBJECT_HANDLE,
1455 effect: LPCWSTR,
1456 item: LPCWSTR,
1457 ),
1458 ),
1459
1460 /// オブジェクト編集の設定項目メニューを登録する (オブジェクト編集の右クリックメニューに追加されます)
1461 /// 引数paramを渡して編集セクションにしないでコールバックを呼び出します
1462 /// name : 設定項目メニューの名称 ※名称に'\'を入れると表示を複数階層に出来ます
1463 /// allow_effect_only : エフェクトのみを許可するか? ※trueの場合はitemがnullptrで呼ばれるケースを許可します
1464 /// param : 任意のユーザーデータのポインタ
1465 /// func_proc_item_menu : 設定項目メニュー選択時のコールバック関数
1466 /// ※コールバック関数の引数はget_object_item_value()の引数と同じ形式になります
1467 pub register_object_item_menu_param: unsafe extern "C" fn(
1468 name: LPCWSTR,
1469 allow_effect_only: bool,
1470 param: *mut c_void,
1471 func_proc_item_menu: unsafe extern "C" fn(
1472 param: *mut c_void,
1473 object: OBJECT_HANDLE,
1474 effect: LPCWSTR,
1475 item: LPCWSTR,
1476 ),
1477 ),
1478
1479 /// スクリプトモジュールをモジュール名を指定して登録する
1480 /// script_module_table : スクリプトモジュール構造体
1481 /// module_name : モジュール名
1482 pub register_script_module_name:
1483 unsafe extern "C" fn(script_module_table: *mut SCRIPT_MODULE_TABLE, module_name: LPCWSTR),
1484
1485 /// フォントコレクションを登録する
1486 /// collection : フォントコレクション (IDWriteFontCollectionのポインタ)
1487 /// ※DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED)から作成したものが利用出来ると思います
1488 pub register_font_collection: unsafe extern "C" fn(collection: *mut std::ffi::c_void),
1489
1490 /// 指定のイベントのコールバック関数を登録する
1491 /// コールバック関数はイベント通知スレッドから呼ばれます
1492 /// イベント処理からcall_edit_section()は利用出来ません
1493 /// event : イベント種別
1494 /// func_proc_event : イベント処理のコールバック関数
1495 pub register_event_listener: unsafe extern "C" fn(
1496 r#type: EVENT_TYPE,
1497 param: *mut c_void,
1498 func_proc_event: unsafe extern "C" fn(param: *mut c_void),
1499 ),
1500}