#include "gui.h"
component_t *gui_group_container_add_component(container_t *container,
                                       component_t component) {
  group_container_t group = container->inner.group;
  if (group.count >= group.size) {
    return false;
  }
  group.components[group.count++] = component;
  container->inner.group = group;
  return &group.components[group.count - 1];
}
void gui_group_container_render(gui_t *gui, container_t *container) {
  group_container_t group = container->inner.group;
  for (int i = 0; i < group.size; i++) {
    gui_component_render(gui, container, &group.components[i]);
  }
}
void gui_group_container_update(gui_t *gui, container_t *container) {
  group_container_t group = container->inner.group;
  for (int i = 0; i < group.size; i++) {
    gui_component_update(gui, container, &group.components[i]);
  }
  container->inner.group = group;
}
container_t gui_group_container_create(int16_t x, int16_t y, component_t *components, uint16_t components_size) {
  container_t container = {.x = x,
                           .y = y,
                           .type = CONT_GROUP,
                           .focusable = false,
                           .focused = false,
                           .inner = {.group = {.components = components,
                                               .size = components_size,
                                               .count = 0}}};
  return container;
}