summaryrefslogtreecommitdiff
path: root/src/draw/glui.c
diff options
context:
space:
mode:
authorFreeArtMan <dos21h@gmail.com>2016-05-08 16:02:01 +0100
committerFreeArtMan <dos21h@gmail.com>2016-05-08 16:02:01 +0100
commite42911405c4bc2f8c097f47d4598baf8522ef3da (patch)
tree9eb767c5e6a4443e8773b18ea76cf4216f6c8758 /src/draw/glui.c
parent9b95088bddcf1f83e3a8f73f08f49b38ecb0f500 (diff)
downloadradiola-e42911405c4bc2f8c097f47d4598baf8522ef3da.tar.gz
radiola-e42911405c4bc2f8c097f47d4598baf8522ef3da.zip
Moved source to src directoryHEADmaster
Diffstat (limited to 'src/draw/glui.c')
-rw-r--r--src/draw/glui.c174
1 files changed, 174 insertions, 0 deletions
diff --git a/src/draw/glui.c b/src/draw/glui.c
new file mode 100644
index 0000000..0f1e360
--- /dev/null
+++ b/src/draw/glui.c
@@ -0,0 +1,174 @@
+#include "glui.h"
+
+#if def(OS_LINUX)
+
+#define DEFAULT_TITLE "RADIOLA"
+#define SCREEN_X 1024
+#define SCREEN_Y 480
+
+int glui_init( glui_t **t )
+{
+ int ret=-1;
+
+ glui_t *tui = NULL;
+
+ tui = malloc( sizeof(glui_t) );
+ if (tui == NULL)
+ {
+ return -1;
+ }
+
+ memset(tui, 0, sizeof(glui_t));
+
+ if ( SDL_Init(SDL_INIT_VIDEO) != 0)
+ {
+ printf("Cannot init sdl\n");
+ return -1;
+ }
+
+ tui->h = SCREEN_Y;
+ tui->w = SCREEN_X;
+ tui->win = SDL_CreateWindow("Hello World!", tui->w, tui->h, SCREEN_X, SCREEN_Y, SDL_WINDOW_SHOWN);
+ if (tui->win == NULL)
+ {
+ printf("Couldnt create SDL window\n");
+ return -1;
+ }
+
+ *t = tui;
+ ret = 0;
+
+ return ret;
+}
+
+
+//init waterfall
+int glui_waterfall( glui_t **t, glui_waterfall_t **w )
+{
+ int ret=-1;
+
+ glui_waterfall_t *wtf = NULL;
+
+ wtf = malloc( sizeof(glui_waterfall_t) );
+ if ( wtf == NULL )
+ {
+ printf("Cannot alloc waterfall\n");
+ return -1;
+ }
+
+ memset( wtf, 0, sizeof(glui_waterfall_t) );
+
+ wtf->h = (*t)->h;
+ wtf->w = (*t)->w;
+ wtf->cur_h = 5;
+
+
+ wtf->rend = SDL_CreateRenderer( (*t)->win, -1, SDL_RENDERER_ACCELERATED);
+ if ( wtf->rend == NULL )
+ {
+ printf("Canno create SDL Rendered\n");
+ return -1;
+ }
+
+ (*w) = wtf;
+ (*t)->wf = wtf;
+
+ ret = 0;
+
+ return ret;
+}
+
+
+//first draw, draw all buffer
+int glui_waterfall_draw( glui_waterfall_t *w )
+{
+ int ret=-1;
+
+
+
+ return ret;
+}
+
+
+//redraw only changed lines
+int glui_waterfall_redraw( glui_waterfall_t *w )
+{
+ int ret=-1;
+
+
+ return ret;
+}
+
+
+//update params of waterfall and then need to draw not redraw
+int glui_waterfall_update( glui_t *w )
+{
+ int ret=-1;
+
+
+ return ret;
+}
+
+
+//push one line of data to buffer
+int glui_waterfall_data( glui_t *t, int len, uint8_t *buf )
+{
+ int ret=-1;
+ int i;
+ int y;
+ glui_color_t c = glui_waterfall_color(0);
+ SDL_Point *pt = NULL;
+
+ SDL_SetRenderDrawColor( t->wf->rend, c.r, c.g, c.b, c.a );
+
+ y = t->wf->cur_h;
+ t->wf->cur_h += 1;
+ pt = malloc( sizeof(SDL_Point) );
+ for ( i=0; i<len; i++ )
+ {
+ c = glui_waterfall_color(buf[i]);
+ SDL_SetRenderDrawColor( t->wf->rend, c.r, c.g, c.b, c.a );
+ pt[0].x = i;
+ pt[0].y = y;
+ SDL_RenderDrawPoints( t->wf->rend, pt, 1 );
+ }
+
+
+ SDL_RenderPresent( t->wf->rend );
+ ret = 0;
+
+ return ret;
+}
+
+
+//return color
+glui_color_t glui_waterfall_color( uint8_t d )
+{
+ glui_color_t c;
+
+ c.r = d*10;
+ c.g = d*10;
+ c.b = d*10;
+
+ return c;
+}
+
+
+//close terminal ui
+int glui_close( glui_t *t )
+{
+ int ret=0;
+
+
+ if ( t->win != NULL )
+ {
+ SDL_DestroyWindow( t->win );
+ }
+
+ SDL_Quit();
+
+
+ return ret;
+}
+
+#endif