summaryrefslogtreecommitdiff
path: root/src/logger.c
blob: e5d17b88c608d509e972dae13da9263b63633323 (plain)
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
#include <stdarg.h>
#include <stdio.h>

#include "logger.h"
#include "nuklear.h"

static struct logger logger = {0};

struct logger *setup_logger(void) { return &logger; }

void append_log(const char *fmt, ...) {
  va_list ap1;
  va_start(ap1, fmt);
  va_list ap2;
  va_copy(ap2, ap1);
  char buf[vsnprintf(NULL, 0, fmt, ap1) + 1];
  va_end(ap1);
  vsnprintf(buf, sizeof(buf), fmt, ap2);
  va_end(ap2);
  nk_str_append_str_char(&logger.text_edit->string, buf);
  logger.box_lines++;
  logger.scrollbar->y += logger.extend_box ? (logger.font_height + 2) : 0;
  DEBUG_PRINT("scrollbar w: %u, h: %u\n", logger.scrollbar->x,
              logger.scrollbar->y);
}

void clear_log() {
  nk_textedit_delete(logger.text_edit, 0, logger.text_edit->string.len);
  logger.box_lines = 0;
}