]> git.donarmstrong.com Git - samtools.git/commitdiff
works with curses
authorlindenb <plindenbaum@yahoo.fr>
Fri, 25 Jan 2013 08:08:19 +0000 (09:08 +0100)
committerlindenb <plindenbaum@yahoo.fr>
Fri, 25 Jan 2013 08:08:19 +0000 (09:08 +0100)
bam_tview.h
bam_tview_curses.c

index 2f395ff892e2baf75d0f4c444f0658f91b2a765f..c9952c9496f31f865973435e2ee8703b79b3f898 100644 (file)
@@ -29,7 +29,7 @@ typedef struct AbstractTview {
        char *ref;
     khash_t(kh_rg) *rg_hash;
     /* callbacks */
-    void (*destroy)(struct AbstractTview* );
+    void (*my_destroy)(struct AbstractTview* );
     void (*my_mvprintw)(struct AbstractTview* ,int,int,const char*,...);
     void (*my_mvaddch)(struct AbstractTview*,int,int,int);
     void (*my_attron)(struct AbstractTview*,int);
index 0c18ac7834b63b6a97fedb5c21f6ff8cb2e71e88..7ccf64b6aa027324d4da3f2577179c98e957031d 100644 (file)
@@ -1,9 +1,9 @@
 #include "bam_tview_curses.h"
 
 
+#define FROM_TV(ptr) ((curses_tview_t*)ptr)
 
-
-static void curses_tv_destroy(tview_t* base)
+static void curses_destroy(tview_t* base)
        {
        curses_tview_t* tv=(curses_tview_t*)base;
 
@@ -27,22 +27,37 @@ static void curses_tv_destroy(tview_t* base)
 
 static void curses_mvprintw(struct AbstractTview* tv,int y ,int x,const char* fmt,...)
        {
+       unsigned int size=tv->mcol+2;
+       char* str=malloc(size);
+       va_list argptr;
+       va_start(argptr, fmt);
+       vsnprintf(str,size, fmt, argptr);
+       va_end(argptr);
+       mvprintw(y,x,str);
+       free(str);
        }
+
 static void curses_mvaddch(struct AbstractTview* tv,int y,int x,int ch)
-       {
-       }
+       {
+       mvaddch(y,x,ch);
+       }
+       
 static void curses_attron(struct AbstractTview* tv,int flag)
     {
+    attron(flag);
     }
 static void curses_attroff(struct AbstractTview* tv,int flag)
     {
+    attroff(flag);
     }
 static void curses_clear(struct AbstractTview* tv)
     {
+    clear();
     }
     
 static int curses_colorpair(struct AbstractTview* tv,int flag)
     {
+    return COLOR_PAIR(flag);
     }
 
 
@@ -268,7 +283,7 @@ int bam_tview_main(int argc, char *argv[])
     }
        tv_draw_aln(tv, tv->curr_tid, tv->left_pos);
        tv_loop(CTV);
-       tv->destroy(tv);
-       free(tv);
+       tv->my_destroy(tv);
+       
        return 0;
 }