| 334 | } |
| 335 | |
| 336 | void draw(DebugLine &dl, u16 window_width, u16 window_height) |
| 337 | { |
| 338 | if (!_visible) |
| 339 | return; |
| 340 | |
| 341 | sample_with_filter(profiler_globals::buffer_begin(), profiler_globals::buffer_end()); |
| 342 | |
| 343 | auto remap = [](f32 x, f32 in_min, f32 in_max, f32 out_min, f32 out_max) -> f32 { |
| 344 | return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; |
| 345 | }; |
| 346 | |
| 347 | const f32 margin_padding = 32.0; // Pixels of padding inside window margins. |
| 348 | const f32 window_width_padded = f32(window_width) - margin_padding; |
| 349 | const f32 window_height_padded = f32(window_height) - margin_padding; |
| 350 | |
| 351 | // Margins in window-coordinates. |
| 352 | const f32 margin_right = window_width_padded / 2.0f; |
| 353 | const f32 margin_left = -margin_right; |
| 354 | const f32 margin_top = window_height_padded / 2.0f; |
| 355 | const f32 margin_bottom = -margin_top; |
| 356 | |
| 357 | f32 x_start; |
| 358 | f32 x_step; |
| 359 | f32 y_min; |
| 360 | f32 y_max; |
| 361 | switch (_layout) { |
| 362 | case LEFT: |
| 363 | x_start = margin_left; |
| 364 | x_step = f32(margin_right - margin_left) / f32(_num_samples - 1) / 2.0f; |
| 365 | y_min = margin_bottom; |
| 366 | y_max = margin_top; |
| 367 | break; |
| 368 | |
| 369 | case RIGHT: |
| 370 | x_start = 0.0f; |
| 371 | x_step = f32(margin_right - margin_left) / f32(_num_samples - 1) / 2.0f; |
| 372 | y_min = margin_bottom; |
| 373 | y_max = margin_top; |
| 374 | break; |
| 375 | |
| 376 | case BOTTOM: |
| 377 | x_start = margin_left; |
| 378 | x_step = f32(margin_right - margin_left) / f32(_num_samples - 1); |
| 379 | y_min = margin_bottom; |
| 380 | y_max = 0.0f; |
| 381 | break; |
| 382 | |
| 383 | case TOP: |
| 384 | x_start = margin_left; |
| 385 | x_step = f32(margin_right - margin_left) / f32(_num_samples - 1); |
| 386 | y_min = 0.0f; |
| 387 | y_max = margin_top; |
| 388 | break; |
| 389 | |
| 390 | case FILL: |
| 391 | default: |
| 392 | x_start = margin_left; |
| 393 | x_step = f32(margin_right - margin_left) / f32(_num_samples - 1); |
no test coverage detected