mirror of
https://github.com/nicbarker/clay.git
synced 2025-11-01 07:16:17 +00:00
[Renderers/termbox] fixed horizontal text culling bug (#525)
Some checks failed
CMake on multiple platforms / build (Release, cl, cl, windows-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, clang, clang++, ubuntu-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, gcc, g++, ubuntu-latest) (push) Has been cancelled
Odin Bindings Update / check_changes (push) Has been cancelled
Odin Bindings Update / build (macos-latest) (push) Has been cancelled
Odin Bindings Update / build (ubuntu-latest) (push) Has been cancelled
Odin Bindings Update / commit (push) Has been cancelled
Some checks failed
CMake on multiple platforms / build (Release, cl, cl, windows-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, clang, clang++, ubuntu-latest) (push) Has been cancelled
CMake on multiple platforms / build (Release, gcc, g++, ubuntu-latest) (push) Has been cancelled
Odin Bindings Update / check_changes (push) Has been cancelled
Odin Bindings Update / build (macos-latest) (push) Has been cancelled
Odin Bindings Update / build (ubuntu-latest) (push) Has been cancelled
Odin Bindings Update / commit (push) Has been cancelled
This commit is contained in:
parent
7216815536
commit
fd97d8179e
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
Copyright (c) 2025 Mivirl
|
||||
|
||||
altered by Godje (Sep 2025)
|
||||
|
||||
This software is provided 'as-is', without any express or implied warranty.
|
||||
In no event will the authors be held liable for any damages arising from the
|
||||
use of this software.
|
||||
|
|
@ -1616,6 +1618,20 @@ void Clay_Termbox_Render(Clay_RenderCommandArray commands)
|
|||
|
||||
Clay_StringSlice *text = &render_data.stringContents;
|
||||
int32_t i = 0;
|
||||
|
||||
// culling text characters that are outside of the layout
|
||||
int h_clip = 0 - cell_box.x;
|
||||
while(h_clip > 0 && i < text->length){
|
||||
uint32_t ch = ' ';
|
||||
int codepoint_length = tb_utf8_char_to_unicode(&ch, text->chars + i);
|
||||
if (0 > codepoint_length) {
|
||||
clay_tb_assert(false, "Invalid utf8");
|
||||
}
|
||||
i += codepoint_length;
|
||||
h_clip -= 1;
|
||||
}
|
||||
|
||||
// printing the rest of the characters
|
||||
for (int y = box_begin_y; y < box_end_y; ++y) {
|
||||
for (int x = box_begin_x; x < box_end_x;) {
|
||||
uint32_t ch = ' ';
|
||||
|
|
|
|||
Loading…
Reference in a new issue