fltkhs-0.1.0.0: c-examples/table-simple.c
#include <stdio.h>
#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 ; r<MAX_ROWS; r++ )
for ( c = 0 ; c<MAX_COLS; c++ )
data[r][c] = 1000+(r*1000)+c;
// Rows
Fl_Table_set_rows(table,MAX_ROWS); // how many rows
Fl_Table_set_row_header(table,1); // enable row headers (along left)
Fl_Table_set_row_height_all(table,20); // default height of rows
Fl_Table_set_row_resize(table,0); // disable row resizing
Fl_Table_set_cols(table,MAX_COLS); // how many columns
Fl_Table_set_col_header(table,1); // enable column headers (along top)
Fl_Table_set_col_width_all(table,80); // default width of columns
Fl_Table_set_col_resize(table,1); // enable column resizing
Fl_Table_end(table); // end the Fl_Table group
}
int main(int argc, char** argv){
fl_Table_Virtual_Funcs* funcs = (fl_Table_Virtual_Funcs*)Fl_Table_default_virtual_funcs();
funcs->draw_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());
}