Skip to content

Commit dfd7990

Browse files
authored
Merge pull request #17 from ekanshgupta2046/implement-axis-gridlines
feat: implement axis gridlines
2 parents 42684fc + 2ab422a commit dfd7990

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

src/core/Core/Application.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,42 @@ 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+
142+
// --- Thin integer gridlines with adaptive spacing ---
143+
const ImU32 gridColor = IM_COL32(200, 200, 200, 255); // light gray
144+
const float gridThickness = 1.0f; // thin lines
145+
const float minPixelSpacing = 20.0f; // minimum spacing in pixels
146+
147+
// Dynamic step based on zoom
148+
float step = 1.0f;
149+
while (step * zoom < minPixelSpacing)
150+
step *= 2.0f;
151+
152+
153+
// Vertical gridlines
154+
for (float x = 0; origin.x + x * zoom < canvas_p1.x; x += step) {
155+
if (x != 0) {
156+
draw_list->AddLine(ImVec2(origin.x + x * zoom, canvas_p0.y),
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+
}
163+
}
164+
165+
// Horizontal gridlines
166+
for (float y = 0; origin.y + y * zoom < canvas_p1.y; y += step) {
167+
if (y != 0) {
168+
draw_list->AddLine(ImVec2(canvas_p0.x, origin.y + y * zoom),
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+
}
175+
}
176+
141177
draw_list->AddLine(ImVec2(canvas_p0.x, origin.y), ImVec2(canvas_p1.x, origin.y), IM_COL32(0, 0, 0, 255), lineThickness);
142178
draw_list->AddLine(ImVec2(origin.x, canvas_p0.y), ImVec2(origin.x, canvas_p1.y), IM_COL32(0, 0, 0, 255), lineThickness);
143179
std::vector<ImVec2> points;

0 commit comments

Comments
 (0)