~ruther/CTU-FEE-B0B35APO-Semestral-project

ref: 8e2364f03eb822b5086732b7f8ceee8e59a874a2 CTU-FEE-B0B35APO-Semestral-project/lib-gui/src/gui.c -rw-r--r-- 1.4 KiB
8e2364f0 — František Boháček feat: add keyboard filter 0 for any key 3 years ago
                                                                                
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "gui.h"
#include "input.h"
#include "logger.h"
#include "renderer.h"
#include <jpeglib.h>

gui_t gui_create(logger_t *logger, commands_t *commands, renderer_t *renderer,
                 mzapo_pheripherals_t *pheripherals) {
  gui_t gui = {
      .pheripherals = pheripherals,
      .renderer = renderer,
      .active_window = NULL,
      .commands = commands,
      .logger = logger,
      .size = {.x = DISPLAY_WIDTH, .y = DISPLAY_HEIGHT},
  };

  return gui;
}

void gui_render(gui_t *gui) {
  renderer_clear(gui->renderer);
  window_t *window = gui->active_window;
  if (window == NULL) {
    logger_warn(gui->logger, __FILE__, __FUNCTION__, __LINE__,
                "No active window");
    return;
  }

  for (int i = 0; i < window->containers_count; i++) {
    gui_container_render(gui, &window->containers[i]);
  }

  renderer_render(gui->renderer);
}

component_t *gui_one_container_get_component(container_t *container) {
  return &container->inner.one.component;
}

void gui_update(gui_t *gui) {
  window_t *window = gui->active_window;
  if (window == NULL) {
    logger_warn(gui->logger, __FILE__, __FUNCTION__, __LINE__,
                "No active window");
    return;
  }

  for (int i = 0; i < window->containers_count; i++) {
    gui_container_update(gui, &window->containers[i]);
  }
}

void gui_set_active_window(gui_t *gui, window_t *window) {
  gui->active_window = window;
}
Do not follow this link