#include #include "Fl_C.h" #include "Fl_EnumerationsC.h" #include "Fl_Types.h" #include "Fl_Double_WindowC.h" #include "Fl_DrawC.h" #include "Fl_TableC.h" #define MAX_ROWS 30 #define MAX_COLS 26 // A-Z int data[MAX_ROWS][MAX_COLS]; // data array for cells void DrawHeader(fl_Table table,const char *s, int X, int Y, int W, int H){ flc_push_clip(X,Y,W,H); flc_draw_box(FL_THIN_UP_BOX, X,Y,W,H, Fl_Table_row_header_color(table)); flc_set_color(FL_BLACK); flc_draw_with_align(s, X,Y,W,H, FL_ALIGN_CENTER); flc_pop_clip(); } void DrawData(fl_Table table,const char *s, int X, int Y, int W, int H){ flc_push_clip(X,Y,W,H); flc_set_color(FL_WHITE); flc_rectf(X,Y,W,H); flc_set_color(FL_GRAY0); flc_draw_with_align(s, X,Y,W,H, FL_ALIGN_CENTER); flc_set_color(Fl_Table_color(table)); flc_rect(X,Y,W,H); flc_pop_clip(); } void draw_cell(fl_Table table,TableContextC context, int ROW, int COL, int X, int Y, int W, int H){ static char s[40]; switch ( context ) { case CONTEXT_STARTPAGEC: flc_set_font(FL_HELVETICA, 16); return; case CONTEXT_COL_HEADERC: sprintf(s,"%c",'A'+COL); DrawHeader(table,s,X,Y,W,H); return; case CONTEXT_ROW_HEADERC: sprintf(s,"%03d:",ROW); DrawHeader(table,s,X,Y,W,H); return; case CONTEXT_CELLC: sprintf(s,"%d",data[ROW][COL]); DrawData(table,s,X,Y,W,H); return; default: return; } } void initialize_table(fl_Table table){ // Fill data array int r; int c; for (r = 0 ; rdraw_cell = &draw_cell; fl_Double_Window window = (fl_Double_Window)Fl_Double_Window_New_WithLabel(900,400,"Simple Table"); Fl_Double_Window_begin(window); fl_Table table = (fl_Table)Fl_Table_New(10,10,880,380,funcs); initialize_table(table); Fl_Double_Window_set_resizable(window, table); Fl_Double_Window_end(window); Fl_Double_Window_show(window); return (Fl_run()); }