Add line number drawing
This commit is contained in:
@@ -75,7 +75,7 @@ int main() {
|
|||||||
InitArena(&PermArena);
|
InitArena(&PermArena);
|
||||||
float font_size = 64;
|
float font_size = 64;
|
||||||
float font_spacing = 1;
|
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 = {};
|
Array<Window> windows = {};
|
||||||
{
|
{
|
||||||
@@ -419,12 +419,13 @@ int main() {
|
|||||||
|
|
||||||
ForItem(window, windows) {
|
ForItem(window, windows) {
|
||||||
// Draw and layout window overlay
|
// Draw and layout window overlay
|
||||||
Vec2 mouse = GetMousePosition();
|
Vec2 mouse = GetMousePosition();
|
||||||
|
Rect2 line_number_rect = {};
|
||||||
{
|
{
|
||||||
window.rect = window.start_rect;
|
window.rect = window.start_rect;
|
||||||
Rect2 horizontal_bar_rect = CutBottom(&window.rect, 10);
|
Rect2 horizontal_bar_rect = CutBottom(&window.rect, 10);
|
||||||
Rect2 vertical_bar_rect = CutRight(&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);
|
DrawRectangleRec(ToRectangle(window.rect), WHITE);
|
||||||
|
|
||||||
@@ -489,7 +490,9 @@ int main() {
|
|||||||
|
|
||||||
// Mouse selection
|
// Mouse selection
|
||||||
if (!window.mouse_selecting_hori_bar && !window.mouse_selecting_vert_bar) {
|
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) {
|
if (!window.mouse_selecting && mouse_in_window) {
|
||||||
SetMouseCursor(MOUSE_CURSOR_IBEAM);
|
SetMouseCursor(MOUSE_CURSOR_IBEAM);
|
||||||
}
|
}
|
||||||
@@ -648,6 +651,22 @@ int main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EndScissorMode();
|
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();
|
Dbg_Draw();
|
||||||
|
|||||||
Reference in New Issue
Block a user