From 8d52d9ece02e4b0c86a9d00c23ff64547b3c21b9 Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Sat, 05 Oct 2019 18:51:27 -0400 Subject: screen_*(): New functions --- diff --git a/src/local.mk b/src/local.mk index afd6595..d9142ac 100644 --- a/src/local.mk +++ b/src/local.mk @@ -1,4 +1,6 @@ timeteller_SOURCES += \ %reldir%/main.c \ + %reldir%/screen.c \ + %reldir%/screen.h \ %reldir%/speech.c \ %reldir%/speech.h diff --git a/src/main.c b/src/main.c index 3963e88..673dd24 100644 --- a/src/main.c +++ b/src/main.c @@ -24,6 +24,7 @@ #include #include +#include "screen.h" #include "speech.h" static const char *program_name; @@ -54,6 +55,7 @@ int main(int argc, char **argv) { struct speech *speech; + struct screen *screen; set_program_name(argv[0]); @@ -62,7 +64,12 @@ main(int argc, char **argv) error("Failed to initialize speech synthesis engine"); return EXIT_FAILURE; } + + screen = screen_new(); + speech_play_time(speech); + + screen_destroy(&screen); speech_destroy(&speech); return EXIT_SUCCESS; diff --git a/src/screen.c b/src/screen.c new file mode 100644 index 0000000..d1f74f5 --- /dev/null +++ b/src/screen.c @@ -0,0 +1,67 @@ +/* + * Terminal screen functions + * + * Copyright (C) 2019 Patrick McDermott + * + * This file is part of Timeteller. + * + * Timeteller is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Timeteller is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Timeteller. If not, see . + */ + +#include "screen.h" + +#include +#include +#include + +struct screen { + WINDOW *win; +}; + +struct screen * +screen_new(void) +{ + struct screen *screen; + + screen = calloc(1, sizeof(*screen)); + if (screen == NULL) { + return NULL; + } + + screen->win = initscr(); /* On failure, does not return. */ + if (noecho() == ERR || raw() == ERR) { + return NULL; + } + curs_set(0); /* Ignore errors. */ + + return screen; +} + +void +screen_draw(struct screen *screen) +{ +} + +struct screen * +screen_destroy(struct screen **screen_p) +{ + struct screen *screen; + + assert(screen_p && *screen_p); + + screen = *screen_p; + + free(screen); + return screen = NULL; +} diff --git a/src/screen.h b/src/screen.h new file mode 100644 index 0000000..6eaf430 --- /dev/null +++ b/src/screen.h @@ -0,0 +1,36 @@ +/* + * Terminal screen functions + * + * Copyright (C) 2019 Patrick McDermott + * + * This file is part of Timeteller. + * + * Timeteller is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Timeteller is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Timeteller. If not, see . + */ + +#ifndef SCREEN_H_ +#define SCREEN_H_ + +struct screen; + +struct screen * +screen_new(void); + +void +screen_draw(struct screen *screen); + +struct screen * +screen_destroy(struct screen **screen_p); + +#endif /* SCREEN_H_ */ -- cgit v0.9.1