#include <pake/widgets/fixed-text.hpp>
#include <daguerre/psf.hpp>
#include <pake/window.hpp>

daguerre::fixed_font<bool> *font;

int main(int, char **) {

  font = new daguerre::fixed_font<bool>(
    daguerre::try_load_psf("/assets/terminus/10x18-bold.psf").value());

  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),
      pake::halign::center, pake::valign::center);

  pake::window w(300, 200, "Hello");
  w.set_root(std::unique_ptr<pake::widget>(text));
  w.render_and_send_to_compositor();
  w.show();

  pake::widgets::fixed_text *text2 =
    new pake::widgets::fixed_text("H!", font,
      euler::syscall::encode_color(0xaa, 0xaa, 0xaa),
      euler::syscall::encode_color(0x00, 0x00, 0x00),
      pake::halign::center, pake::valign::center);

  pake::window w2(100, 50, "Hello 2");
  w2.set_root(std::unique_ptr<pake::widget>(text2));
  w2.render_and_send_to_compositor();
  w2.show();

  //TODO: call event loop

  euler::syscall::stream_handle h1, h2;
  euler::syscall::create_private_socket(h1, h2);
  uint8_t byte;
  while (1)
    euler::syscall::read_from_stream(h1, 1, &byte);

}
