Skip to content

Commit 2ab422a

Browse files
feat: added axis gridlines
1 parent 2f0adae commit 2ab422a

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

src/core/Core/Application.cpp

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -138,41 +138,44 @@ ExitStatus App::Application::run() {
138138
const auto canvas_p1 = ImVec2(canvas_p0.x + canvas_sz.x, canvas_p0.y + canvas_sz.y);
139139
const ImVec2 origin(canvas_p0.x + canvas_sz.x * 0.5f, canvas_p0.y + canvas_sz.y * 0.5f);
140140
float lineThickness = 6.0f;
141-
draw_list->AddLine(ImVec2(canvas_p0.x, origin.y), ImVec2(canvas_p1.x, origin.y), IM_COL32(0, 0, 0, 255), lineThickness);
142-
draw_list->AddLine(ImVec2(origin.x, canvas_p0.y), ImVec2(origin.x, canvas_p1.y), IM_COL32(0, 0, 0, 255), lineThickness);
143-
141+
144142
// --- Thin integer gridlines with adaptive spacing ---
145143
const ImU32 gridColor = IM_COL32(200, 200, 200, 255); // light gray
146144
const float gridThickness = 1.0f; // thin lines
147145
const float minPixelSpacing = 20.0f; // minimum spacing in pixels
148-
146+
149147
// Dynamic step based on zoom
150148
float step = 1.0f;
151149
while (step * zoom < minPixelSpacing)
152-
step *= 2.0f;
153-
154-
// Draw vertical gridlines
150+
step *= 2.0f;
151+
152+
153+
// Vertical gridlines
155154
for (float x = 0; origin.x + x * zoom < canvas_p1.x; x += step) {
155+
if (x != 0) {
156156
draw_list->AddLine(ImVec2(origin.x + x * zoom, canvas_p0.y),
157-
ImVec2(origin.x + x * zoom, canvas_p1.y),
158-
gridColor, gridThickness);
159-
if (x != 0)
160-
draw_list->AddLine(ImVec2(origin.x - x * zoom, canvas_p0.y),
161-
ImVec2(origin.x - x * zoom, canvas_p1.y),
162-
gridColor, gridThickness);
157+
ImVec2(origin.x + x * zoom, canvas_p1.y),
158+
gridColor, gridThickness);
159+
draw_list->AddLine(ImVec2(origin.x - x * zoom, canvas_p0.y),
160+
ImVec2(origin.x - x * zoom, canvas_p1.y),
161+
gridColor, gridThickness);
162+
}
163163
}
164-
165-
// Draw horizontal gridlines
164+
165+
// Horizontal gridlines
166166
for (float y = 0; origin.y + y * zoom < canvas_p1.y; y += step) {
167+
if (y != 0) {
167168
draw_list->AddLine(ImVec2(canvas_p0.x, origin.y + y * zoom),
168-
ImVec2(canvas_p1.x, origin.y + y * zoom),
169-
gridColor, gridThickness);
170-
if (y != 0)
171-
draw_list->AddLine(ImVec2(canvas_p0.x, origin.y - y * zoom),
172-
ImVec2(canvas_p1.x, origin.y - y * zoom),
173-
gridColor, gridThickness);
169+
ImVec2(canvas_p1.x, origin.y + y * zoom),
170+
gridColor, gridThickness);
171+
draw_list->AddLine(ImVec2(canvas_p0.x, origin.y - y * zoom),
172+
ImVec2(canvas_p1.x, origin.y - y * zoom),
173+
gridColor, gridThickness);
174+
}
174175
}
175-
176+
177+
draw_list->AddLine(ImVec2(canvas_p0.x, origin.y), ImVec2(canvas_p1.x, origin.y), IM_COL32(0, 0, 0, 255), lineThickness);
178+
draw_list->AddLine(ImVec2(origin.x, canvas_p0.y), ImVec2(origin.x, canvas_p1.y), IM_COL32(0, 0, 0, 255), lineThickness);
176179
std::vector<ImVec2> points;
177180

178181
// (f(t), g(t))

0 commit comments

Comments
 (0)