@@ -26,12 +26,14 @@ cve::Bitmap_Buffer::Bitmap_Buffer() :
26
26
27
27
28
28
// ---------------------------------------------------------------------
29
- // デストラクタ
29
+ //
30
30
// ---------------------------------------------------------------------
31
- cve::Bitmap_Buffer::~Bitmap_Buffer ()
31
+ void cve::Bitmap_Buffer::exit ()
32
32
{
33
- DeleteDC (hdc_memory);
34
- DeleteObject (bitmap);
33
+ if (hdc_memory)
34
+ ::DeleteDC (hdc_memory);
35
+ if (bitmap)
36
+ ::DeleteObject (bitmap);
35
37
36
38
release (&brush);
37
39
}
@@ -41,15 +43,16 @@ cve::Bitmap_Buffer::~Bitmap_Buffer()
41
43
void cve::Bitmap_Buffer::init (HWND hw)
42
44
{
43
45
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);
49
51
52
+ resize ();
50
53
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);
53
56
}
54
57
55
58
@@ -59,12 +62,12 @@ void cve::Bitmap_Buffer::init(HWND hw)
59
62
// ---------------------------------------------------------------------
60
63
bool cve::Bitmap_Buffer::d2d_setup (COLORREF cr)
61
64
{
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 ();
68
71
return true ;
69
72
}
70
73
else
@@ -79,20 +82,20 @@ bool cve::Bitmap_Buffer::d2d_setup(COLORREF cr)
79
82
void cve::Bitmap_Buffer::transfer () const
80
83
{
81
84
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);
86
89
}
87
90
88
91
89
92
90
93
// ---------------------------------------------------------------------
91
94
// サイズを更新
92
95
// ---------------------------------------------------------------------
93
- void cve::Bitmap_Buffer::set_size ( const RECT& rect_wnd )
96
+ void cve::Bitmap_Buffer::resize ( )
94
97
{
95
- rect = rect_wnd ;
98
+ ::GetClientRect (hwnd, &rect) ;
96
99
}
97
100
98
101
@@ -134,7 +137,7 @@ void cve::Bitmap_Buffer::draw_grid()
134
137
thickness = CVE_GR_GRID_TH_B;
135
138
else
136
139
thickness = CVE_GR_GRID_TH_L;
137
- g_render_target ->DrawLine (
140
+ g_p_render_target ->DrawLine (
138
141
D2D1::Point2F (ax + dx * i, 0 ),
139
142
D2D1::Point2F (ax + dx * i, (float )rect.bottom ),
140
143
brush, thickness, NULL
@@ -148,7 +151,7 @@ void cve::Bitmap_Buffer::draw_grid()
148
151
else
149
152
thickness = CVE_GR_GRID_TH_L;
150
153
151
- g_render_target ->DrawLine (
154
+ g_p_render_target ->DrawLine (
152
155
D2D1::Point2F (0 , ay + dy * i),
153
156
D2D1::Point2F ((float )rect.right , ay + dy * i),
154
157
brush, thickness, NULL
@@ -187,7 +190,7 @@ void cve::Bitmap_Buffer::draw_rounded_edge(int flag, float radius) {
187
190
D2D1::Point2F ((float )rect.right - radius, (float )rect.bottom )
188
191
};
189
192
190
- g_factory ->CreatePathGeometry (&edge);
193
+ g_p_factory ->CreatePathGeometry (&edge);
191
194
edge->Open (&sink);
192
195
193
196
for (int i = 0 ; i < 4 ; i++) {
@@ -215,7 +218,7 @@ void cve::Bitmap_Buffer::draw_rounded_edge(int flag, float radius) {
215
218
brush->SetColor (D2D1::ColorF (TO_BGR (g_theme[g_config.theme ].bg )));
216
219
217
220
if (edge != nullptr )
218
- g_render_target ->FillGeometry (edge, brush, NULL );
221
+ g_p_render_target ->FillGeometry (edge, brush, NULL );
219
222
220
223
release (&edge);
221
224
release (&sink);
@@ -230,7 +233,7 @@ void cve::Bitmap_Buffer::draw_panel_main(const RECT& rect_sepr)
230
233
{
231
234
ID2D1StrokeStyle* style = nullptr ;
232
235
233
- g_factory ->CreateStrokeStyle (
236
+ g_p_factory ->CreateStrokeStyle (
234
237
D2D1::StrokeStyleProperties (
235
238
D2D1_CAP_STYLE_ROUND,
236
239
D2D1_CAP_STYLE_ROUND,
@@ -264,18 +267,18 @@ void cve::Bitmap_Buffer::draw_panel_main(const RECT& rect_sepr)
264
267
// Direct2D初期化
265
268
d2d_setup (TO_BGR (g_theme[g_config.theme ].bg ));
266
269
267
- if (g_render_target != nullptr ) {
268
- g_render_target ->BeginDraw ();
270
+ if (g_p_render_target != nullptr ) {
271
+ g_p_render_target ->BeginDraw ();
269
272
270
273
brush->SetColor (D2D1::ColorF (TO_BGR (g_theme[g_config.theme ].sepr )));
271
274
272
- if (brush) g_render_target ->DrawLine (
275
+ if (brush) g_p_render_target ->DrawLine (
273
276
line_start,
274
277
line_end,
275
278
brush, CVE_SEPARATOR_LINE_WIDTH, style
276
279
);
277
280
278
- g_render_target ->EndDraw ();
281
+ g_p_render_target ->EndDraw ();
279
282
}
280
283
release (&style);
281
284
@@ -293,117 +296,6 @@ void cve::Bitmap_Buffer::draw_panel()
293
296
// Direct2D初期化
294
297
d2d_setup (TO_BGR (g_theme[g_config.theme ].bg ));
295
298
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
-
407
299
// ビットマップをバッファから画面に転送
408
300
transfer ();
409
301
}
0 commit comments