/* Emacs style mode select -*- C++ -*- *----------------------------------------------------------------------------- * * * PrBoom a Doom port merged with LxDoom and LSDLDoom * based on BOOM, a modified and improved DOOM engine * Copyright (C) 1999 by * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman * Copyright (C) 1999-2000 by * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * DESCRIPTION: * The status bar widget definitions and prototypes * *-----------------------------------------------------------------------------*/ #ifndef __STLIB__ #define __STLIB__ // We are referring to patches. #include "r_defs.h" #include "v_video.h" // color ranges // // Background and foreground screen numbers // #define BG 4 #define FG 0 // // Typedefs of widgets // // Number widget typedef struct { // upper right-hand corner // of the number (right-justified) int x; int y; // max # of digits in number int width; // last number value int oldnum; // pointer to current value int* num; // pointer to boolean stating // whether to update number boolean* on; // list of patches for 0-9 const patchnum_t* p; // user data int data; } st_number_t; // Percent widget ("child" of number widget, // or, more precisely, contains a number widget.) typedef struct { // number information st_number_t n; // percent sign graphic const patchnum_t* p; } st_percent_t; // Multiple Icon widget typedef struct { // center-justified location of icons int x; int y; // last icon number int oldinum; // pointer to current icon int* inum; // pointer to boolean stating // whether to update icon boolean* on; // list of icons const patchnum_t* p; // user data int data; } st_multicon_t; // Binary Icon widget typedef struct { // center-justified location of icon int x; int y; // last icon value int oldval; // pointer to current icon status boolean* val; // pointer to boolean // stating whether to update icon boolean* on; const patchnum_t* p; // icon int data; // user data } st_binicon_t; // // Widget creation, access, and update routines // // Initializes widget library. // More precisely, initialize STMINUS, // everything else is done somewhere else. // void STlib_init(void); // Number widget routines void STlib_initNum ( st_number_t* n, int x, int y, const patchnum_t* pl, int* num, boolean* on, int width ); void STlib_updateNum ( st_number_t* n, int cm, boolean refresh ); // Percent widget routines void STlib_initPercent ( st_percent_t* p, int x, int y, const patchnum_t* pl, int* num, boolean* on, const patchnum_t* percent ); void STlib_updatePercent ( st_percent_t* per, int cm, int refresh ); // Multiple Icon widget routines void STlib_initMultIcon ( st_multicon_t* mi, int x, int y, const patchnum_t* il, int* inum, boolean* on ); void STlib_updateMultIcon ( st_multicon_t* mi, boolean refresh ); // Binary Icon widget routines void STlib_initBinIcon ( st_binicon_t* b, int x, int y, const patchnum_t* i, boolean* val, boolean* on ); void STlib_updateBinIcon ( st_binicon_t* bi, boolean refresh ); #endif