@@ -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