diff options
author | Benji Dial <benji@benjidial.net> | 2024-07-29 19:59:52 -0400 |
---|---|---|
committer | Benji Dial <benji@benjidial.net> | 2024-07-29 19:59:52 -0400 |
commit | e6c3a80b01ffb52079783cddd9be6d392d0f7039 (patch) | |
tree | 148276b9878f287bc81638f90249ec4d7b86eaf0 /applications/hello/source | |
parent | be691582ee12613278af24cb5a824eeb357f6324 (diff) | |
download | hilbert-os-e6c3a80b01ffb52079783cddd9be6d392d0f7039.tar.gz |
redesign compositor protocol, start widget library
Diffstat (limited to 'applications/hello/source')
-rw-r--r-- | applications/hello/source/main.cpp | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/applications/hello/source/main.cpp b/applications/hello/source/main.cpp index 3f132c6..1f45407 100644 --- a/applications/hello/source/main.cpp +++ b/applications/hello/source/main.cpp @@ -1,37 +1,30 @@ -#include <goldman/protocol.hpp> +#include <pake/widgets/fixed-text.hpp> #include <daguerre/psf.hpp> +#include <pake/window.hpp> -template <class color_t> -void overlay(color_t &to, const bool &from, const color_t ¶m) { - if (from) - to = param; -} +daguerre::fixed_font<bool> *font; int main(int, char **) { - auto bg = euler::syscall::encode_color(0xaa, 0xaa, 0xaa); - auto fg = euler::syscall::encode_color(0x00, 0x00, 0x00); - - daguerre::image<daguerre::hilbert_color> image(300, 200); - image.fill(bg); + font = new daguerre::fixed_font<bool>( + daguerre::try_load_psf("/assets/terminus-bold-18x10.psf").value()); - auto font = daguerre::try_load_psf("/assets/terminus-bold-18x10.psf"); - image.render_text(*font, fg, 10, 10, "Hello, world!", &overlay); + pake::widgets::fixed_text *text = + new pake::widgets::fixed_text("Hello, world!", font, + euler::syscall::encode_color(0xaa, 0xaa, 0xaa), + euler::syscall::encode_color(0x00, 0x00, 0x00)); - euler::syscall::stream_handle s; - euler::syscall::connect_to_socket("hilbert.compositor", s); + pake::window w(300, 200, "Hello"); + w.set_root(std::unique_ptr<pake::widget>(text)); + w.render_and_send_to_compositor(); + w.show(); - goldman::protocol::send_open_window(s, 300, 200); + //TODO: call event loop + euler::syscall::stream_handle h1, h2; + euler::syscall::create_private_socket(h1, h2); uint8_t byte; - euler::syscall::read_from_stream(s, 1, &byte); - - auto w = goldman::protocol::get_window_opened_body(s); - - goldman::protocol::send_update_window_region( - s, w, 0, 0, 300, 200, image.buffer, image.buffer_pitch); - - euler::syscall::read_from_stream(s, 1, &byte); - __builtin_unreachable(); + while (1) + euler::syscall::read_from_stream(h1, 1, &byte); } |