/*
 *  File:        bmtable.h
 *  Purpose:     Declaration of the XForms object bmtable. 
 *  Author:      Alejandro Aguilar Sierra <asierra@servidor.unam.mx> 
 *  Created:     November 1995
 *  Description: A bitmap table uses a single bitmap to simulate a 2d array 
 *               of bitmap buttons. It can be used to build bitmap menus.
 *               
 *  Copyright (C) 1995,1996 Alejandro Aguilar Sierra 
 *
 *  You are free to use and modify this code under the terms of
 *  the GNU General Public Licence version 2 or later. 
 * 
 */ 

#ifndef __BMTABLE_H__
#define __BMTABLE_H__ 

#include "config.h"

#include "forms.h"

#define FL_BMTABLE 1500
#define FL_BMTABLE_FLAT 0        /*  A flat bitmap table */
#define FL_BMTABLE_GRID 1         /* A grided bitmap table */


/*  Same as fl_bitmapbutton */


/*
 *  normal bmtable default
 */
#define FL_BMTABLE_BOXTYPE	FL_UP_BOX

FL_OBJECT *fl_create_bmtable(int, FL_Coord, FL_Coord, 
			     FL_Coord, FL_Coord, const char *);

FL_OBJECT *fl_add_bmtable(int, FL_Coord, FL_Coord, 
			  FL_Coord, FL_Coord, const char *);

int fl_get_bmtable_numb(FL_OBJECT *ob);

void fl_set_bmtable(FL_OBJECT *, int pushed, int pos);

/* Number of columns and rows, and the background bitmap */
void fl_set_bmtable_data(FL_OBJECT *, int, int, int, int , char *);

void fl_set_bmtable_file(FL_OBJECT *, int, int, const char *);

/* Adjust bitmap origin (ox, oy) and cell dimensions (dx, dy) incrementally */
void fl_set_bmtable_adjust(FL_OBJECT *, int ox, int oy, int dx, int dy);

/* The number of items is by default nc x nr, but you can change it */
void fl_set_bmtable_maxitems(FL_OBJECT *, int);

int fl_get_bmtable_maxitems(FL_OBJECT *); 

/* Returns the index of the selected item or -1 if none was selected */
int fl_get_bmtable(FL_OBJECT *);

/* Replacee a item's sub_bitmap at id position */
void fl_replace_bmtable_item(FL_OBJECT *ob, int id, int  cw, int ch, char *data); 

/* Get the sub_bitmap from id position. You must alloc memory for the data. */ 
void fl_get_bmtable_item(FL_OBJECT *ob, int id, int *cw, int *ch, char *data);

/* Returns a pixmap from the table, if available. */
Pixmap fl_get_bmtable_pixmap(FL_OBJECT *);

/* Draws a single item on a drawable */ 
void fl_draw_bmtable_item(FL_OBJECT *ob, int i, Drawable d, int xx, int yy);

#endif  /* __BMTABLE_H__ */

