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

564cec6af8806f73b8cfeeb27d75e3b61831ede4 — František Boháček 4 years ago 8c582a3
feat: use pheripherals in text viewer
M text-viewer/include/gui_component_text_view.h => text-viewer/include/gui_component_text_view.h +6 -2
@@ 17,9 17,13 @@ typedef struct {
  display_pixel_t color;
} multiline_text_t;

multiline_text_t *gui_multiline_text_create(font_t *font, display_pixel_t color, char *text);
multiline_text_t *gui_multiline_text_create(font_t *font, display_pixel_t color,
                                            char *text);

component_t gui_text_view_create(gui_t *gui, multiline_text_t *text, int16_t x, int16_t y);
component_t gui_text_view_create(gui_t *gui, multiline_text_t *text, int16_t x,
                                 int16_t y);

uint16_t gui_text_view_get_lines_scrolled(component_t *component);

void gui_text_view_scroll(component_t *text_view, int32_t x, int32_t y);
void gui_text_view_reset_scroll(component_t *text_view);

M text-viewer/src/gui_component_text_view.c => text-viewer/src/gui_component_text_view.c +5 -0
@@ 81,6 81,11 @@ void gui_text_view_full_scroll(component_t *text_view) {
  text_view->y = INT16_MIN; 
}

uint16_t gui_text_view_get_lines_scrolled(component_t *component) {
  multiline_text_t *text = (multiline_text_t *)component->state;
  return (-component->y) / (text->font->size + text->font->line_spacing);
}

void gui_text_view_render(container_t *container, component_t *component,
                          gui_t *gui) {
  multiline_text_t *text = (multiline_text_t*)component->state;

M text-viewer/src/main.c => text-viewer/src/main.c +8 -1
@@ 1,5 1,6 @@
#include "font.h"
#include "mzapo_led_strip.h"
#include "mzapo_rgb_led.h"
#include "nonblocking_io.h"
#include "serialize_lock.h"
#include <stdio.h>


@@ 32,17 33,22 @@ int main(int argc, char *argv[]) {
    }
  }

  mzapo_rgb_led_t rgb_leds = mzapo_create_rgb_led();
  rgb_led_clear(&rgb_leds, LED_LEFT);
  rgb_led_clear(&rgb_leds, LED_RIGHT);

  if (argc < 2) {
    logger_info(&logger, __FILE__, __FUNCTION__, __LINE__, "Not enough arguments");
    rgb_led_set_red(&rgb_leds, LED_LEFT);
  }

  display_t display = mzapo_create_display();
  mzapo_rgb_led_t rgb_leds = mzapo_create_rgb_led();
  mzapo_ledstrip_t ledstrip = mzapo_create_ledstrip();
  void* knobs = mzapo_get_knobs_address();

  if (!mzapo_check_pheripherals(&ledstrip, &rgb_leds, &display, &knobs)) {
    logger_error(&logger, __FILE__, __FUNCTION__, __LINE__, "Could not initialize some of the pheripherals.");
    rgb_led_set_red(&rgb_leds, LED_LEFT);
  }

  mzapo_pheripherals_t pheripherals = mzapo_pheripherals_create(&ledstrip, &rgb_leds, &display, &knobs);


@@ 58,6 64,7 @@ int main(int argc, char *argv[]) {
  if (error != FILER_SUCCESS) {
    logger_error(&logger, __FILE__, __FUNCTION__, __LINE__, "Could not load file.");
    return 1;
    rgb_led_set_red(&rgb_leds, LED_RIGHT);
  }

  file_set_nonblocking(STDIN_FILENO, &oldstdin);