Add line number drawing

This commit is contained in:
Krzosa Karol
2024-07-02 08:56:29 +02:00
parent aa41d9e15b
commit d3c4c4cd02

View File

@@ -75,7 +75,7 @@ int main() {
InitArena(&PermArena);
float font_size = 64;
float font_spacing = 1;
Font font = LoadFontEx("C:/Windows/Fonts/times.ttf", (int)font_size, NULL, 250);
Font font = LoadFontEx("C:/Windows/Fonts/consola.ttf", (int)font_size, NULL, 250);
Array<Window> windows = {};
{
@@ -419,12 +419,13 @@ int main() {
ForItem(window, windows) {
// Draw and layout window overlay
Vec2 mouse = GetMousePosition();
Vec2 mouse = GetMousePosition();
Rect2 line_number_rect = {};
{
window.rect = window.start_rect;
Rect2 horizontal_bar_rect = CutBottom(&window.rect, 10);
Rect2 vertical_bar_rect = CutRight(&window.rect, 10);
Rect2 line_numbers = CutLeft(&window.rect, 50);
line_number_rect = CutLeft(&window.rect, MeasureString(window.font, "1234", window.font_size, window.font_spacing).x);
DrawRectangleRec(ToRectangle(window.rect), WHITE);
@@ -489,7 +490,9 @@ int main() {
// Mouse selection
if (!window.mouse_selecting_hori_bar && !window.mouse_selecting_vert_bar) {
bool mouse_in_window = CheckCollisionPointRec(mouse, ToRectangle(window.rect));
bool mouse_in_window = CheckCollisionPointRec(mouse, ToRectangle(window.rect)) ||
CheckCollisionPointRec(mouse, ToRectangle(line_number_rect));
// @todo: fix scrolling bug when selecting on left outside the frame!!
if (!window.mouse_selecting && mouse_in_window) {
SetMouseCursor(MOUSE_CURSOR_IBEAM);
}
@@ -648,6 +651,22 @@ int main() {
}
EndScissorMode();
// Draw line numbers
{
Rect2 rect = line_number_rect;
BeginScissorMode((int)rect.min.x, (int)rect.min.y, (int)(rect.max.x - rect.min.x), (int)(rect.max.y - rect.min.y));
for (int64_t line = visible_line_range.min; line < visible_line_range.max; line += 1) {
if (line < 0 || line >= window.layout.rows.len) continue;
LayoutRow &row = window.layout.rows[line];
Vec2 pos = {rect.min.x, row.rect.min.y + rect.min.y - window.scroll.y};
String line_num_string = Format(FrameArena, "%lld", (long long)line);
DrawTextEx(font, line_num_string.data, pos, font_size, font_spacing, LIGHTGRAY);
}
EndScissorMode();
}
}
Dbg_Draw();