156 lines
3.2 KiB
C++
156 lines
3.2 KiB
C++
// wmmixer - A mixer designed for WindowMaker
|
|
//
|
|
// Release 1.5
|
|
// Copyright (C) 1998 Sam Hawker <shawkie@geocities.com>
|
|
// Copyright (C) 2002 Gordon Fraser <gordon@debian.org>
|
|
// This software comes with ABSOLUTELY NO WARRANTY
|
|
// This software is free software, and you are welcome to redistribute it
|
|
// under certain conditions
|
|
// See the COPYING file for details.
|
|
|
|
|
|
#ifndef __xhandler_h__
|
|
#define __xhandler_h__
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
// X-Windows includes - standard
|
|
#include <X11/X.h>
|
|
#include <X11/Xlib.h>
|
|
#include <X11/Xutil.h>
|
|
#include <X11/Xproto.h>
|
|
#include <X11/xpm.h>
|
|
#include <X11/extensions/shape.h>
|
|
|
|
#include <iostream>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include "common.h"
|
|
|
|
// Xpm images - standard
|
|
#include "XPM/wmmixer.xpm"
|
|
#include "XPM/tile.xpm"
|
|
|
|
// Xpm images - custom
|
|
#include "XPM/icons.xpm"
|
|
#include "XPM/norec.xpm"
|
|
|
|
//--------------------------------------------------------------------
|
|
#define BTN_LEFT_X 5
|
|
#define BTN_LEFT_Y 34
|
|
|
|
#define BTN_RIGHT_X 17
|
|
#define BTN_RIGHT_Y 34
|
|
|
|
#define BTN_MUTE_X 17
|
|
#define BTN_MUTE_Y 47
|
|
|
|
#define BTN_REC_X 5
|
|
#define BTN_REC_Y 47
|
|
|
|
#define BTN_WIDTH 12
|
|
#define BTN_HEIGHT 11
|
|
|
|
#define BTNNEXT 1
|
|
#define BTNPREV 2
|
|
#define BTNREC 4
|
|
#define BTNMUTE 8
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
class XHandler
|
|
{
|
|
protected:
|
|
int button_state_;
|
|
int window_size_;
|
|
|
|
bool is_wmaker_;
|
|
bool is_ushape_;
|
|
bool is_astep_;
|
|
|
|
unsigned *icon_list_;
|
|
|
|
Display *display_default_;
|
|
Window window_icon_;
|
|
Window window_main_;
|
|
Window window_root_;
|
|
|
|
GC graphics_context_;
|
|
unsigned long colors_[4];
|
|
unsigned long shade_colors_[25];
|
|
|
|
char display_name_[256];
|
|
char position_name_[256];
|
|
char ledcolor_name_[256];
|
|
char ledcolor_high_name_[256];
|
|
char backcolor_name_[256];
|
|
char window_class_[256];
|
|
|
|
Pixel back_pix;
|
|
Pixel fore_pix;
|
|
|
|
// Pixmaps - standard
|
|
Pixmap pixmap_main;
|
|
Pixmap pixmap_tile;
|
|
Pixmap pixmap_disp;
|
|
Pixmap pixmap_mask;
|
|
|
|
// Pixmaps - custom
|
|
Pixmap pixmap_icon;
|
|
Pixmap pixmap_nrec;
|
|
|
|
// X-Windows basics - standard
|
|
Atom _XA_GNUSTEP_WM_FUNC;
|
|
Atom deleteWin;
|
|
|
|
|
|
unsigned long getColor(char*);
|
|
unsigned long mixColor(char*, int, char*, int);
|
|
void drawButton(int, int, int, int, bool);
|
|
void initPixmaps(int);
|
|
void initWindow(int, char**);
|
|
void initGraphicsContext();
|
|
void initMask();
|
|
void initColors();
|
|
void initIcons(int);
|
|
|
|
int flush_expose(Window);
|
|
|
|
public:
|
|
XHandler();
|
|
virtual ~XHandler();
|
|
void init(int, char**, int);
|
|
|
|
void repaint();
|
|
void update(unsigned);
|
|
void drawLeft(unsigned);
|
|
void drawRight(unsigned);
|
|
void drawBtns(int, bool);
|
|
void drawMono(unsigned);
|
|
|
|
bool isLeftButton(int, int);
|
|
bool isRightButton(int, int);
|
|
bool isMuteButton(int, int);
|
|
bool isRecButton(int, int);
|
|
bool isVolumeBar(int, int);
|
|
|
|
Display* getDisplay() {return display_default_;}
|
|
int getButtonState();
|
|
void setButtonState(int);
|
|
void setDisplay(char* arg);
|
|
void setPosition(char* arg);
|
|
void setLedColor(char* arg);
|
|
void setLedHighColor(char* arg);
|
|
void setBackColor(char* arg);
|
|
void setWindowClass(char* arg);
|
|
void setUnshaped();
|
|
void setWindowMaker();
|
|
void setAfterStep();
|
|
int getWindowSize();
|
|
Atom getDeleteWin();
|
|
|
|
};
|
|
|
|
#endif //__xhandler_h__
|