GnuDOS library version 1.0: Screen

Next: Strings, Previous: Dialogs, Up: Top [Contents][Index]

## 6 Using the Screen utility

The screen utility provides functions to manipulate the screen colors, clearing the screen, and positioning of the cursor. It also defines values for the screen size. The member variables of the screen utility (defined in screen.h) are:

     int SCREEN_W;
     int SCREEN_H;

Both these variables are filled with values after a call to getScreenSize().

     int FG_COLOR[color_components];
     int BG_COLOR[color_components];

The color_components is a macro defined with a value of 4. The possible values for color_components which is an index into arrays of colors determining what color is assigned to which component (i.e., dialogs, buttons, ...) are:

     COLOR_WINDOW		0
     COLOR_HIGHLIGHT_TEXT	1
     COLOR_BUTTONS	 	2
     COLOR_HBUTTONS		3

You can define the colors in the color arrays by using integer values, although using macro names (as discussed below) is recommended. Initializing the arrays can be done with code like:

      FG_COLOR[COLOR_WINDOW] = 37;
      FG_COLOR[COLOR_HIGHLIGHT_TEXT] = 34;
      FG_COLOR[COLOR_MENU_BAR] = 34;
      FG_COLOR[COLOR_STATUS_BAR] = 34;
      FG_COLOR[COLOR_BUTTONS] = 37;
      FG_COLOR[COLOR_HBUTTONS] = 32;
      BG_COLOR[COLOR_WINDOW] = 44;
      BG_COLOR[COLOR_HIGHLIGHT_TEXT] = 47;
      BG_COLOR[COLOR_MENU_BAR] = 47;
      BG_COLOR[COLOR_STATUS_BAR] = 47;
      BG_COLOR[COLOR_BUTTONS] = 41;
      BG_COLOR[COLOR_HBUTTONS] = 41;

For convenience, the names of colors used in screen utility functions can be retrieved from the array screen_colors[] after a call to getScreenColors():

     getScreenColors();
     for(int i = 0; i < 16; i++)
       printf("%s\n", screen_colors[i]);

To set the screen colors (e.g. before clearing the screen,), use the function:

     void setScreenColors(int FG, int BG);

where FG is the foreground color, BG is the background color. Color values are defined as macros in the (screen.h) file:

     #define BLACK      30      //set black foreground
     #define RED        31      //set red foreground
     #define GREEN      32      //set green foreground
     #define BROWN      33      //set brown foreground
     #define BLUE       34      //set blue foreground
     #define MAGENTA    35      //set magenta foreground
     #define CYAN       36      //set cyan foreground
     #define WHITE      37      //set white foreground
     #define BGBLACK    40      //set black background
     #define BGRED      41      //set red background
     #define BGGREEN    42      //set green background
     #define BGBROWN    43      //set brown background
     #define BGBLUE     44      //set blue background
     #define BGMAGENTA  45      //set magenta background
     #define BGCYAN     46      //set cyan background
     #define BGWHITE    47      //set white background
     #define BGDEFAULT  49      //set default background color

To get the size of screen coordinates, use function:

     void getScreenSize();

which will fill the values into SCREEN_W and SCREEN_H global variables.
The functions

     void clearScreen();
     void clearScreenC(int FG, int BG);

basically do the same thing, except clearScreen() uses whatever colors where passed into previous call of setScreenColors(), and clearScreenC() takes the values of colors to use when clearing the screen. Last color function is

     void loadDefaultColors();

which resets the color arrays into default values.
To reposition the cursor, use:

     void locate(int row, int col);

giving the row and column as int values. Remember the screen has top-left based coordinates, meaning position 1-1 is at the top-left corner, position 25-80 is at the bottom-right (for a 25x80 screen size).

Next: Strings, Previous: Dialogs, Up: Top [Contents][Index]