Commit graph

134 commits

Author SHA1 Message Date
Seintian
d4a48a07fc feat(ncurses): overhaul renderer with UTF-8, 256-colors, and visual improvements
Significantly enhances the Ncurses renderer capabilities and updates the example application.

Renderer Changes:
- Unicode Support:
  - Implemented automatic UTF-8 locale detection and initialization.
  - Switched to wide-character handling (`wchar_t`, `mvaddnwstr`) for correct rendering of multi-byte characters (e.g., Emojis).
  - Used `wcwidth` for accurate string width measurement.
- Color Support:
  - Upgraded from 3-bit (8 colors) to 256-color support (xterm-256color).
  - Added `Clay_Ncurses_MatchColor` to map arbitrary RGB values to the nearest color in the standard 6x6x6 color cube.
  - Added capability detection to fallback gracefully on simpler terminals.
- Visual Fidelity:
  - Implemented background color inheritance (`Clay_Ncurses_GetBackgroundAt`) to simulate transparency.
  - Text and borders now render on top of existing background colors instead of resetting to the terminal default.
- Build & POSIX:
  - Added `_XOPEN_SOURCE_EXTENDED` and `_XOPEN_SOURCE=700` definitions for standard compliance.

Example Application (clay-ncurses-example):
- Theme:
  - Updated to a modern dark theme (Uniform `{20, 20, 20}` background).
  - Switched to saturated/bright foreground colors for better contrast.
- Fixes:
  - Replaced obsolete `usleep` with POSIX-compliant `nanosleep`.
- Build:
  - Updated CMakeLists.txt to enforce linking against `ncursesw` (wide version).

Verified with `clay-ncurses-example` on Linux (xterm-256color).
2025-12-28 15:19:37 +01:00
Seintian
840606d0c1 feat: Add ncurses renderer and example
- **Renderer**: Implemented `clay_renderer_ncurses.c` supporting rectangles, text, borders, and clipping using standard ncurses plotting.
- **Example**: Added `examples/ncurses-example` demonstrating a scrollable "Social Feed" UI with keyboard navigation.
- **Build**: Added `CLAY_INCLUDE_NCURSES_EXAMPLES` option to root `CMakeLists.txt` and integrated the new example.
- **CompConfig**: Updated `.gitignore` to strictly exclude `build/`, `_deps/`, and other standard CMake artifacts.
2025-12-28 14:01:41 +01:00
TotallyGamerJet
0c8e300524
[Core] Update Clay_OnHover to take void* instead of uintptr_t (#334) 2025-11-26 15:11:34 +11:00
Daniel Mayovskiy
7216815536
Fixed termbox2 demo build, added scroll functionality (#523) 2025-10-23 12:57:11 +11:00
Thomas Anderson
83129995f7
[Examples/official-website] updated paths in build.sh 2025-10-23 12:56:20 +11:00
Daniel Mayovskiy
588b93196c
[Renderers/termbox] Fixing termbox2-image-demo build error (#524)
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
2025-10-02 11:21:11 +10:00
Nic Barker
1cbc56cbf2
[Core] Remove ID from element declaration struct and split clay macro into CLAY and CLAY_WITHID (#492) 2025-09-16 11:39:07 +10:00
Nic Barker
4aa3d75bef [Core] Split base ID hash from index ID hash 2025-07-16 09:30:54 +10:00
Nic Barker
d9d0b6c37b [Core] Fix incorrect percentage sizing of floating elements 2025-07-02 09:37:38 +10:00
Mivirl
a9c1f9a8a7
[Renderers/termbox2] Termbox2 renderer & examples (#419) 2025-06-27 08:26:38 +10:00
wolfee
f97cb9ea10
[Renderers/SDL] Font sizing is ignored (#444) 2025-06-23 09:30:14 +10:00
Nic Barker
74f0ffbe26 [Renderers/Cairo] Fix outdated image API usage in cairo example 2025-06-23 09:16:41 +10:00
Nic Barker
a5e212b8de [Renderers/HTML] Fix a mouse overlap bug with external scroll handling 2025-06-20 10:59:44 +10:00
Nic Barker
13ecd80ee5 [Renderers/SDL3] Fix up outdated API usage in SDL3 example 2025-06-18 09:54:27 +10:00
Nic Barker
6f10bf4b3d [Core] Remove erroneous break statement when using external scroll handling 2025-06-13 10:35:31 +10:00
Nic Barker
adb1bd620a [Examples/clay-official-website] Fix links on official website example 2025-06-13 09:59:07 +10:00
Nic Barker
87575cb7c3 [Core] Fix handling of letter spacing 2025-06-05 10:38:53 +10:00
Nic Barker
80659eda04 [Renderers/Web] Fix clay official website example struct definitions for web renderers 2025-06-04 10:50:35 +10:00
Wes Lord
5eceb52abc
Set CMake FetchContent GIT_TAG for SDL_ttf (#423) 2025-06-02 13:00:45 +10:00
Nic Barker
d6f3957a60
[Core] Split aspect ratio scaling into its own config (#426) 2025-06-02 10:36:58 +10:00
Wes Lord
e80736892d
[Renderers/SDL2] Indent SDL2's CMakeLists.txt consistently (#424) 2025-05-28 09:50:00 +10:00
Emmanuel
65e813d4df
[Renderers/Terminal] Add initial implementation of terminal renderer (#91) 2025-05-22 12:45:52 +12:00
Matt Jennings
e2f94f17f6
[Renderers/Playdate] Playdate console example (#404) 2025-05-19 11:46:39 +12:00
Zordan
eb1d85f2a6
[Renderers/Cairo] Fix cairo renderer and example (#416) 2025-05-19 11:36:08 +12:00
David Delassus
fb4eec93b2
[Renderers/SDL3] Use SDL_Texture instead of SDL_Surface for images (#402) 2025-05-05 12:27:41 +12:00
Nic Barker
90b45f059c [Core] Fix a bug with the implementation of clip .childOffset 2025-05-01 17:21:09 +12:00
Nic Barker
970919e1fb
[Core] Replace .scroll config with .clip (#376) 2025-05-01 14:11:31 +12:00
Nic Barker
313964132c [Renderers/Raylib] Pin raylib version to 5.5 2025-04-29 12:43:44 +12:00
Nic Barker
b33ba4ff62
[Core] Fix a string hash bug with single characters (#384) 2025-04-16 20:16:05 +12:00
Nathan Korth
eb46688b82
[Renderers/Sokol] Sokol renderer & examples (#373) 2025-04-09 13:40:22 +12:00
Philosoph228
87efc49f52
[Renderers/WinGDI] Working on Win32 GDI renderer and example (#344) 2025-04-09 11:31:33 +12:00
Nic Barker
3f635cdd79 [Renderers/Raylib] Fix FLAG_HIGHDPI causing window resize to break 2025-04-01 10:31:40 +13:00
Nic Barker
bee93bc7ba
[Renderers/Raylib] Reuse memory in raylib renderer for temporary string allocations 2025-03-13 09:51:44 +13:00
Nic Barker
008d4d2519
[Renderers/win32_gdi] Create initial WinGDI renderer 2025-03-13 09:27:44 +13:00
hailey
6567f85eb3 Updated rectangle border rendering 2025-03-10 10:29:55 -05:00
hailey
a92ec772e1 [Renderers/Win32_GDI] first pass, fixed build errors and added build script 2025-03-10 09:33:12 -05:00
__hexmaster111
a782df73a1
Added win32 samples (first pass) 2025-03-10 09:23:36 -05:00
__hexmaster111
3a9172ec4c
Merge branch 'nicbarker:main' into main 2025-03-10 09:12:52 -05:00
Jesus Coca
e856136a8e
add resizing while the window is being resized 2025-03-08 17:37:02 -08:00
Nic Barker
22e8cc318c [Bindings/Odin] Update odin bindings for text config userdata pointer 2025-03-08 11:08:04 +13:00
__hexmaster111
cf97539612
Update main.c 2025-03-04 05:57:30 -06:00
__hexmaster111
c49593f1d3
Update main.c 2025-03-04 05:56:20 -06:00
__hexmaster111
c7703b7a50
updated examples to call close 2025-03-04 05:55:30 -06:00
Nic Barker
02bce89d17
[Core] Improve & streamline grow / shrink handling (#296) 2025-03-04 10:56:38 +13:00
Nic Barker
5571c00a21 [Core] Convert capacity from uint32_t to size_t in Clay_CreateArenaWithCapacityAndMemory 2025-03-03 11:36:12 +13:00
Nic Barker
1fa8684e47 [Core] Fix bug where hover state didnt take clip rectangles into account 2025-02-25 08:55:14 +13:00
Nic Barker
a60b977946 [Core] Fix a bug where floating elements would be incorrectly configured 2025-02-18 09:41:06 +13:00
Timothy Hoyt
ee99e5f0f2
[Renderers/SDL2] Opengl, antialiasing, vsync, alpha blending (#264) 2025-02-17 09:15:58 +13:00
Thomas Anderson
28a8f59733
[Renderers/Raylib] Convert Image usage to Texture (#266) 2025-02-17 08:56:26 +13:00
tomat
bc2548e3ec
[Renderers/SDL3] Add image rendering and scissor support to SDL3 renderer (#246) 2025-02-13 10:02:06 +13:00