Skip to content

Commit 8d0a7b5

Browse files
committed
v1.0.5
1 parent c8c7fe6 commit 8d0a7b5

27 files changed

+845
-742
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
(※scriptフォルダ直下に入れないと、ドラッグ&ドロップ機能を使用することができません。)
1212
[Visual C++ 2015/2017/2019/2022 再頒布可能パッケージ (x86)](https://aka.ms/vs/17/release/vc_redist.x86.exe)をインストールしていない場合は、こちらもインストールしてください。
1313

14+
![image](https://user-images.githubusercontent.com/106879397/212220660-598f0b11-a317-42c7-99cb-0795f56af998.png)
15+
1416
## 使用方法
1517
AviUtlを起動後、メインウィンドウの「表示」メニューから「Curve Editorの表示」をクリックすると、Curve Editorのウィンドウが表示されます。
1618

@@ -102,6 +104,7 @@ AviUtl 1.00, 1.10
102104

103105
## その他
104106
当プラグイン・スクリプトは以下のプラグイン・スクリプトを参考にして作成されました:
107+
- [Flow](https://aescripts.com/flow/)
105108
- [ベジェ軌道T](https://www.nicovideo.jp/watch/sm20632293)
106109
- [Aulsグラフエディタ](https://auls.client.jp/)
107110
- [イージング設定時短プラグイン](https://github.com/kumrnm/aviutl-easing-quick-setup)

curve_editor/curve_editor.rc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,6 @@ BEGIN
289289
MENUITEM "�n���h����A��������\tA", ID_MENU_ALIGNHANDLE
290290
MENUITEM "�n���h����\�� \tS", ID_MENU_SHOWHANDLE
291291
MENUITEM "�O���t���t�B�b�g\tHome", ID_MENU_FIT
292-
MENUITEM "�Z�p���[�^�̈ʒu��������", ID_MENU_RESET_SEPARATOR
293292
MENUITEM SEPARATOR
294293
MENUITEM "�ݒ�", ID_MENU_CONFIG
295294
MENUITEM "�w���v", ID_MENU_HELP

curve_editor/cve_bitmap_buffer.cpp

Lines changed: 35 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@ cve::Bitmap_Buffer::Bitmap_Buffer() :
2626

2727

2828
//---------------------------------------------------------------------
29-
// デストラクタ
29+
//
3030
//---------------------------------------------------------------------
31-
cve::Bitmap_Buffer::~Bitmap_Buffer()
31+
void cve::Bitmap_Buffer::exit()
3232
{
33-
DeleteDC(hdc_memory);
34-
DeleteObject(bitmap);
33+
if (hdc_memory)
34+
::DeleteDC(hdc_memory);
35+
if (bitmap)
36+
::DeleteObject(bitmap);
3537

3638
release(&brush);
3739
}
@@ -41,15 +43,16 @@ cve::Bitmap_Buffer::~Bitmap_Buffer()
4143
void cve::Bitmap_Buffer::init(HWND hw)
4244
{
4345
hwnd = hw;
44-
HDC hdc = GetDC(hw);
45-
hdc_memory = CreateCompatibleDC(hdc);
46-
bitmap = CreateCompatibleBitmap(hdc, CVE_MAX_W, CVE_MAX_H);
47-
SelectObject(hdc_memory, bitmap);
48-
ReleaseDC(hw, hdc);
46+
HDC hdc = ::GetDC(hw);
47+
hdc_memory = ::CreateCompatibleDC(hdc);
48+
bitmap = ::CreateCompatibleBitmap(hdc, CVE_MAX_W, CVE_MAX_H);
49+
::SelectObject(hdc_memory, bitmap);
50+
::ReleaseDC(hw, hdc);
4951

52+
resize();
5053

51-
if (g_render_target != nullptr && brush == nullptr)
52-
g_render_target->CreateSolidColorBrush(D2D1::ColorF(0, 0, 0), &brush);
54+
if (g_p_render_target != nullptr && brush == nullptr)
55+
g_p_render_target->CreateSolidColorBrush(D2D1::ColorF(0, 0, 0), &brush);
5356
}
5457

5558

@@ -59,12 +62,12 @@ void cve::Bitmap_Buffer::init(HWND hw)
5962
//---------------------------------------------------------------------
6063
bool cve::Bitmap_Buffer::d2d_setup(COLORREF cr)
6164
{
62-
if (g_render_target != nullptr && g_factory != nullptr) {
63-
g_render_target->BindDC(hdc_memory, &rect);
64-
g_render_target->BeginDraw();
65-
g_render_target->SetTransform(D2D1::Matrix3x2F::Identity());
66-
g_render_target->Clear(D2D1::ColorF(cr));
67-
g_render_target->EndDraw();
65+
if (g_p_render_target != nullptr && g_p_factory != nullptr) {
66+
g_p_render_target->BindDC(hdc_memory, &rect);
67+
g_p_render_target->BeginDraw();
68+
g_p_render_target->SetTransform(D2D1::Matrix3x2F::Identity());
69+
g_p_render_target->Clear(D2D1::ColorF(cr));
70+
g_p_render_target->EndDraw();
6871
return true;
6972
}
7073
else
@@ -79,20 +82,20 @@ bool cve::Bitmap_Buffer::d2d_setup(COLORREF cr)
7982
void cve::Bitmap_Buffer::transfer() const
8083
{
8184
PAINTSTRUCT ps;
82-
HDC hdc = BeginPaint(hwnd, &ps);
83-
BitBlt(hdc, 0, 0, rect.right, rect.bottom, hdc_memory, 0, 0, SRCCOPY);
84-
EndPaint(hwnd, &ps);
85-
DeleteDC(hdc);
85+
HDC hdc = ::BeginPaint(hwnd, &ps);
86+
::BitBlt(hdc, 0, 0, rect.right, rect.bottom, hdc_memory, 0, 0, SRCCOPY);
87+
::EndPaint(hwnd, &ps);
88+
::DeleteDC(hdc);
8689
}
8790

8891

8992

9093
//---------------------------------------------------------------------
9194
// サイズを更新
9295
//---------------------------------------------------------------------
93-
void cve::Bitmap_Buffer::set_size(const RECT& rect_wnd)
96+
void cve::Bitmap_Buffer::resize()
9497
{
95-
rect = rect_wnd;
98+
::GetClientRect(hwnd, &rect);
9699
}
97100

98101

@@ -134,7 +137,7 @@ void cve::Bitmap_Buffer::draw_grid()
134137
thickness = CVE_GR_GRID_TH_B;
135138
else
136139
thickness = CVE_GR_GRID_TH_L;
137-
g_render_target->DrawLine(
140+
g_p_render_target->DrawLine(
138141
D2D1::Point2F(ax + dx * i, 0),
139142
D2D1::Point2F(ax + dx * i, (float)rect.bottom),
140143
brush, thickness, NULL
@@ -148,7 +151,7 @@ void cve::Bitmap_Buffer::draw_grid()
148151
else
149152
thickness = CVE_GR_GRID_TH_L;
150153

151-
g_render_target->DrawLine(
154+
g_p_render_target->DrawLine(
152155
D2D1::Point2F(0, ay + dy * i),
153156
D2D1::Point2F((float)rect.right, ay + dy * i),
154157
brush, thickness, NULL
@@ -187,7 +190,7 @@ void cve::Bitmap_Buffer::draw_rounded_edge(int flag, float radius) {
187190
D2D1::Point2F((float)rect.right - radius, (float)rect.bottom)
188191
};
189192

190-
g_factory->CreatePathGeometry(&edge);
193+
g_p_factory->CreatePathGeometry(&edge);
191194
edge->Open(&sink);
192195

193196
for (int i = 0; i < 4; i++) {
@@ -215,7 +218,7 @@ void cve::Bitmap_Buffer::draw_rounded_edge(int flag, float radius) {
215218
brush->SetColor(D2D1::ColorF(TO_BGR(g_theme[g_config.theme].bg)));
216219

217220
if (edge != nullptr)
218-
g_render_target->FillGeometry(edge, brush, NULL);
221+
g_p_render_target->FillGeometry(edge, brush, NULL);
219222

220223
release(&edge);
221224
release(&sink);
@@ -230,7 +233,7 @@ void cve::Bitmap_Buffer::draw_panel_main(const RECT& rect_sepr)
230233
{
231234
ID2D1StrokeStyle* style = nullptr;
232235

233-
g_factory->CreateStrokeStyle(
236+
g_p_factory->CreateStrokeStyle(
234237
D2D1::StrokeStyleProperties(
235238
D2D1_CAP_STYLE_ROUND,
236239
D2D1_CAP_STYLE_ROUND,
@@ -264,18 +267,18 @@ void cve::Bitmap_Buffer::draw_panel_main(const RECT& rect_sepr)
264267
//Direct2D初期化
265268
d2d_setup(TO_BGR(g_theme[g_config.theme].bg));
266269

267-
if (g_render_target != nullptr) {
268-
g_render_target->BeginDraw();
270+
if (g_p_render_target != nullptr) {
271+
g_p_render_target->BeginDraw();
269272

270273
brush->SetColor(D2D1::ColorF(TO_BGR(g_theme[g_config.theme].sepr)));
271274

272-
if (brush) g_render_target->DrawLine(
275+
if (brush) g_p_render_target->DrawLine(
273276
line_start,
274277
line_end,
275278
brush, CVE_SEPARATOR_LINE_WIDTH, style
276279
);
277280

278-
g_render_target->EndDraw();
281+
g_p_render_target->EndDraw();
279282
}
280283
release(&style);
281284

@@ -293,117 +296,6 @@ void cve::Bitmap_Buffer::draw_panel()
293296
//Direct2D初期化
294297
d2d_setup(TO_BGR(g_theme[g_config.theme].bg));
295298

296-
//ビットマップをバッファから画面に転送
297-
transfer();
298-
}
299-
300-
301-
302-
//---------------------------------------------------------------------
303-
// エディタパネルを描画
304-
//---------------------------------------------------------------------
305-
void cve::Bitmap_Buffer::draw_panel_editor()
306-
{
307-
D2D1_RECT_F rect_left = {
308-
0,
309-
0,
310-
(float)g_view_info.origin.x,
311-
(float)rect.bottom
312-
};
313-
314-
D2D1_RECT_F rect_right = {
315-
(float)(g_view_info.origin.x + g_view_info.scale.x * CVE_GRAPH_RESOLUTION),
316-
0,
317-
(float)rect.right,
318-
(float)rect.bottom,
319-
};
320-
321-
D2D1_RECT_F rect_up = {
322-
(float)g_view_info.origin.x,
323-
0,
324-
(float)(g_view_info.origin.x + g_view_info.scale.x * CVE_GRAPH_RESOLUTION),
325-
to_client(0, (int)(CVE_CURVE_VALUE_MAX_Y * CVE_GRAPH_RESOLUTION)).y
326-
};
327-
328-
D2D1_RECT_F rect_down = {
329-
(float)g_view_info.origin.x,
330-
to_client(0, (int)(CVE_CURVE_VALUE_MIN_Y * CVE_GRAPH_RESOLUTION)).y,
331-
(float)(g_view_info.origin.x + g_view_info.scale.x * CVE_GRAPH_RESOLUTION),
332-
(float)rect.bottom
333-
};
334-
335-
336-
//Direct2D初期化
337-
d2d_setup(TO_BGR(g_theme[g_config.theme].bg_graph));
338-
339-
//描画
340-
if (g_render_target != nullptr && g_factory != nullptr) {
341-
g_render_target->BeginDraw();
342-
343-
//グリッド
344-
draw_grid();
345-
346-
brush->SetColor(D2D1::ColorF(CHANGE_BRIGHTNESS(TO_BGR(g_theme[g_config.theme].bg_graph), CVE_BR_GR_INVALID)));
347-
brush->SetOpacity(0.5f);
348-
if (brush) {
349-
// Xが0未満1より大の部分を暗くする
350-
g_render_target->FillRectangle(&rect_left, brush);
351-
g_render_target->FillRectangle(&rect_right, brush);
352-
// ベジェモードのとき
353-
if (g_config.edit_mode == cve::Mode_Bezier) {
354-
g_render_target->FillRectangle(&rect_up, brush);
355-
g_render_target->FillRectangle(&rect_down, brush);
356-
}
357-
}
358-
brush->SetOpacity(1);
359-
360-
// 編集モード振り分け
361-
switch (g_config.edit_mode) {
362-
// ベジェモードのとき
363-
case Mode_Bezier:
364-
if (g_config.trace)
365-
g_curve_bezier_trace.draw_curve(this, rect, CVE_DRAW_CURVE_TRACE);
366-
367-
g_curve_bezier.draw_curve(this, rect, CVE_DRAW_CURVE_REGULAR);
368-
break;
369-
370-
// ベジェ(複数)モードのとき
371-
case Mode_Bezier_Multi:
372-
if (g_config.trace)
373-
g_curve_bezier_multi_trace.draw_curve(this, rect, CVE_DRAW_CURVE_TRACE);
374-
375-
g_curve_bezier_multi[g_config.current_id.multi - 1].draw_curve(this, rect, CVE_DRAW_CURVE_REGULAR);
376-
break;
377-
378-
// 値指定モードのとき
379-
case Mode_Bezier_Value:
380-
if (g_config.trace)
381-
g_curve_bezier_value_trace.draw_curve(this, rect, CVE_DRAW_CURVE_TRACE);
382-
383-
g_curve_bezier_value[g_config.current_id.value].draw_curve(this, rect, CVE_DRAW_CURVE_REGULAR);
384-
break;
385-
386-
// 振動モードのとき
387-
case Mode_Elastic:
388-
if (g_config.trace)
389-
g_curve_elastic_trace.draw_curve(this, rect, CVE_DRAW_CURVE_TRACE);
390-
391-
g_curve_elastic.draw_curve(this, rect, CVE_DRAW_CURVE_REGULAR);
392-
break;
393-
394-
// バウンスモードのとき
395-
case Mode_Bounce:
396-
if (g_config.trace)
397-
g_curve_bounce_trace.draw_curve(this, rect, CVE_DRAW_CURVE_TRACE);
398-
399-
g_curve_bounce.draw_curve(this, rect, CVE_DRAW_CURVE_REGULAR);
400-
break;
401-
}
402-
403-
g_render_target->EndDraw();
404-
}
405-
406-
407299
//ビットマップをバッファから画面に転送
408300
transfer();
409301
}

0 commit comments

Comments
 (0)