/*
 * main.h
 *
 * Copyright (C) 1995, 1996, 1997, 1997, 1998, 1999, 2000, 2001, 2002 Kenichi Kourai
 * Copyright (C) 1999, 2000, 2001, 2002 Luiz Blanes
 *
 * 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 blwm; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

#ifndef _MAIN_H_
#define _MAIN_H_

#include "message.h"

class Blwm;
class Rect;
class Event;
class FocusMgr;
class Desktop;
class BlImage;


extern char*		displayName;
extern Display*		display;
extern int		screen;
extern unsigned int	depth;
extern Colormap		colormap;
extern Window		root;
extern Blwm*		rootBlwm;
extern Rect		rcScreen;
extern GC		gc, gcXor, gcTile, gcDash;
extern BlImage		*imgLogo, *imgLargeLogo;
extern Cursor		cursor[9];
extern XFontSet		fsDefault;
extern XFontSet		fsTitle, fsTaskbar, fsBoldTaskbar, fsIcon;
extern XFontSet		fsCtrlMenu, fsCascadeMenu, fsStartMenu, fsDialog;
extern XColor		black, white;
extern XColor		gray, darkGray, grey, darkGrey, blue, lightBlue;
extern XColor		royalBlue, yellow, lightYellow;
extern XColor		gray95, darkGray95, lightGray95, grey95, blue95;
extern XColor		lightBlue95, green95, yellow95;

extern Bool		shapeSupport;
extern char**           blArgv;
extern Bool		start;
extern Bool restart;
extern Bool noParse;
extern Event event;
extern FocusMgr focusMgr;
extern Desktop desktop;

extern Bool enableTaskbar, enablePager;

extern unsigned long* gradPattern;
extern unsigned long* gradActivePattern;

#ifdef USE_XSMP
class Session;
extern Session* session;
#endif

#ifdef ALLOW_RMTCMD
class RemoteCommand;
extern RemoteCommand* remoteCmd;
#endif

extern Atom _XA_WM_CHANGE_STATE;
extern Atom _XA_WM_STATE;
extern Atom _XA_WM_COLORMAP_WINDOWS;
extern Atom _XA_WM_PROTOCOLS;
extern Atom _XA_WM_TAKE_FOCUS;
extern Atom _XA_WM_DELETE_WINDOW;
extern Atom _XA_WM_DESKTOP;
extern Atom _XA_WM_ICON_SIZE;
#ifdef USE_XSMP
extern Atom _XA_WM_CLIENT_LEADER;
extern Atom _XA_SM_CLIENT_ID;
extern Atom _XA_WM_WINDOW_ROLE;
#endif

class Taskbar;
class StartMenu;
class TaskSwitcher;
class Paging;
class Pager;
class Menu;
class ExitDialog;
class ConfirmDialog;
class Timer;
class InfoDisplay;

extern Taskbar*		taskBar;
extern StartMenu*	startMenu;
extern TaskSwitcher*	taskSwitcher;
extern Paging*		paging;
extern Pager*		pager;
extern Menu*		ctrlMenu;
extern ExitDialog*	exitDlg;
extern ConfirmDialog*	confirmDlg;
extern Timer*           timer;
extern InfoDisplay*     infoDisp;

extern void FinishBlwm();
extern void RestartBlwm(Bool minimumRestart = False, int count = 0,
			Bool cleanup = True);

extern Pixmap CreateGradPixmap(unsigned long* pat, int width, Window win);
extern void CreateGradPattern();

#endif // _MAIN_H_


syntax highlighted by Code2HTML, v. 0.9.1