MCPcopy Create free account
hub / github.com/chrxh/alien / drawCursor

Method drawCursor

source/Gui/SimulationInteractionController.cpp:333–423  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

331}
332
333void SimulationInteractionController::drawCursor()
334{
335 auto mousePos = ImGui::GetMousePos();
336 ImDrawList* drawList = ImGui::GetBackgroundDrawList();
337
338 if (!ImGui::GetIO().WantCaptureMouse) {
339 ImGui::SetMouseCursor(ImGuiMouseCursor_None);
340 }
341
342 // position selection cursor
343 if (_modes.positionSelectionMode) {
344 auto cursorSize = scale(CursorRadius);
345
346 // shadow
347 drawList->AddRectFilled(
348 {mousePos.x - scale(2.0f), mousePos.y - cursorSize}, {mousePos.x + scale(2.0f), mousePos.y - cursorSize / 2}, Const::CursorShadowColor);
349 drawList->AddRectFilled(
350 {mousePos.x - scale(2.0f), mousePos.y + cursorSize / 2}, {mousePos.x + scale(2.0f), mousePos.y + cursorSize}, Const::CursorShadowColor);
351 drawList->AddRectFilled(
352 {mousePos.x - cursorSize, mousePos.y - scale(2.0f)}, {mousePos.x - cursorSize / 2, mousePos.y + scale(2.0f)}, Const::CursorShadowColor);
353 drawList->AddRectFilled(
354 {mousePos.x + cursorSize / 2, mousePos.y - scale(2.0f)}, {mousePos.x + cursorSize, mousePos.y + scale(2.0f)}, Const::CursorShadowColor);
355
356 // foreground
357 drawList->AddRectFilled(
358 {mousePos.x - scale(1.0f), mousePos.y - cursorSize}, {mousePos.x + scale(1.0f), mousePos.y - cursorSize / 2}, Const::CursorColor);
359 drawList->AddRectFilled(
360 {mousePos.x - scale(1.0f), mousePos.y + cursorSize / 2}, {mousePos.x + scale(1.0f), mousePos.y + cursorSize}, Const::CursorColor);
361 drawList->AddRectFilled(
362 {mousePos.x - cursorSize, mousePos.y - scale(1.0f)}, {mousePos.x - cursorSize / 2, mousePos.y + scale(1.0f)}, Const::CursorColor);
363 drawList->AddRectFilled(
364 {mousePos.x + cursorSize / 2, mousePos.y - scale(1.0f)}, {mousePos.x + cursorSize, mousePos.y + scale(1.0f)}, Const::CursorColor);
365 return;
366 }
367
368 // editing cursors
369 if (_modes.editMode) {
370 if (!_modes.drawMode || _simulationFacade->isSimulationRunning()) {
371 auto cursorSize = scale(CursorRadius);
372
373 // shadow
374 drawList->AddRectFilled(
375 {mousePos.x - scale(2.0f), mousePos.y - cursorSize}, {mousePos.x + scale(2.0f), mousePos.y - cursorSize / 2}, Const::CursorShadowColor);
376 drawList->AddRectFilled(
377 {mousePos.x - scale(2.0f), mousePos.y + cursorSize / 2}, {mousePos.x + scale(2.0f), mousePos.y + cursorSize}, Const::CursorShadowColor);
378 drawList->AddRectFilled(
379 {mousePos.x - cursorSize, mousePos.y - scale(2.0f)}, {mousePos.x - cursorSize / 2, mousePos.y + scale(2.0f)}, Const::CursorShadowColor);
380 drawList->AddRectFilled(
381 {mousePos.x + cursorSize / 2, mousePos.y - scale(2.0f)}, {mousePos.x + cursorSize, mousePos.y + scale(2.0f)}, Const::CursorShadowColor);
382
383 // foreground
384 drawList->AddRectFilled(
385 {mousePos.x - scale(1.0f), mousePos.y - cursorSize}, {mousePos.x + scale(1.0f), mousePos.y - cursorSize / 2}, Const::CursorColor);
386 drawList->AddRectFilled(
387 {mousePos.x - scale(1.0f), mousePos.y + cursorSize / 2}, {mousePos.x + scale(1.0f), mousePos.y + cursorSize}, Const::CursorColor);
388 drawList->AddRectFilled(
389 {mousePos.x - cursorSize, mousePos.y - scale(1.0f)}, {mousePos.x - cursorSize / 2, mousePos.y + scale(1.0f)}, Const::CursorColor);
390 drawList->AddRectFilled(

Callers

nothing calls this directly

Calls 5

scaleFunction · 0.85
getZoomFactorMethod · 0.80
getPencilWidthMethod · 0.80
getDefaultColorCodeMethod · 0.80
isSimulationRunningMethod · 0.45

Tested by

no test coverage detected