summaryrefslogtreecommitdiff
path: root/applications/hello/source/main.cpp
blob: 3f132c63b87b56b5d1b63b9fd8df6bc672f62c2d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <goldman/protocol.hpp>
#include <daguerre/psf.hpp>

template <class color_t>
void overlay(color_t &to, const bool &from, const color_t &param) {
  if (from)
    to = param;
}

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);

  auto font = daguerre::try_load_psf("/assets/terminus-bold-18x10.psf");
  image.render_text(*font, fg, 10, 10, "Hello, world!", &overlay);

  euler::syscall::stream_handle s;
  euler::syscall::connect_to_socket("hilbert.compositor", s);

  goldman::protocol::send_open_window(s, 300, 200);

  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();

}