Add line number drawing
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user