Next: , Previous: , Up: Part I Defining Forms   [Contents][Index]


3.2 Boxes

The probably simplest type of objects are boxes. Boxes are used to give the forms and objects a nicer appearance. They can be used to visually group other objects together. The background of each form is a box. To add a box to a form you use the routine

FL_OBJECT *fl_add_box(int type, FL_Coord x, FL_Coord y,
                      FL_Coord w, FL_Coord h, const char *label);

where type indicates the shape of the box. The Forms Library at the moment supports the following types of boxes:

FL_NO_BOX

No box at all (it’s transparent), just a label

FL_UP_BOX

A box that comes out of the screen

FL_DOWN_BOX

A box that goes down into the screen

FL_BORDER_BOX

A flat box with a border

FL_SHADOW_BOX

A flat box with a shadow

FL_FRAME_BOX

A flat box with an engraved frame

FL_ROUNDED_BOX

A rounded box

FL_EMBOSSED_BOX

A flat box with an embossed frame

FL_FLAT_BOX

A flat box without a border (normally invisible unless given a different color than the surroundings)

FL_RFLAT_BOX

A rounded box without a border (normally invisible unless given a different color than the surroundings)

FL_RSHADOW_BOX

A rounded box with a shadow

FL_OVAL_BOX

A box shaped like an ellipse

FL_ROUNDED3D_UPBOX

A rounded box coming out of the screen

FL_ROUNDED3D_DOWNBOX

A rounded box going into the screen

FL_OVAL3D_UPBOX

An oval box coming out of the screen

FL_OVAL3D_DOWNBOX

An oval box going into the screen

xforms_images/boxtypes

The arguments x and y in the call of fl_add_box()indicate the upper left corner of the box in the form while w and h are its width and height. label is a text that is placed in the center of the box. If you don’t want a label in the box use an empty string or a NULL pointer. The label can be either one line or multiple lines. To obtain multi-line labels, insert newline characters (\n) in the label string. It is also possible to underline the label or one of the characters in the label. This is accomplished by embedding <CNTRL> H (\010 or '\b') after the letter that needs to be underlined. If the very first character of the label is <Ctrl>H, the entire label is underlined.

The routine fl_add_box() returns a pointer to the box object. (All routines that add objects return a pointer to the object.) This pointer can be used for later references to the object.

It is possible to change the appearance of a box in a form. First of all, it is possible to change the color of the box and secondly, it is possible to change color, size and position of the label inside the box. Details on changing attributes of objects can be found in Changing Attributes. Just a simple example has to suffice here. Assume we want to create a red box, coming out of the screen with the large words "I am a Box" in green in the center:

FL_OBJECT *thebox;

thebox = fl_add_box(FL_UP_BOX, 20, 20, 100, 100, "I am a Box");
fl_set_object_color(thebox, FL_RED, 0 );    /* make box red     */
fl_set_object_lcolor(thebox, FL_GREEN );    /* make label green */
fl_set_object_lsize(thebox, FL_LARGE_SIZE); /* make label large */

Of course, this has to be placed inside a form definition (but the functions for changing the object attributes can also used anywhere else within the program).


Next: , Previous: , Up: Part I Defining Forms   [Contents][Index]