You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xserver/hw/xwin/winconfig.h

264 lines
6.1 KiB
C

#ifndef __WIN_CONFIG_H__
#define __WIN_CONFIG_H__
/*
*Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
*
*Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
*"Software"), to deal in the Software without restriction, including
*without limitation the rights to use, copy, modify, merge, publish,
*distribute, sublicense, and/or sell copies of the Software, and to
*permit persons to whom the Software is furnished to do so, subject to
*the following conditions:
*
*The above copyright notice and this permission notice shall be
*included in all copies or substantial portions of the Software.
*
*THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
*EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
*MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
*NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR
*ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
*CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
*WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*Except as contained in this notice, the name of the XFree86 Project
*shall not be used in advertising or otherwise to promote the sale, use
*or other dealings in this Software without prior written authorization
*from the XFree86 Project.
*
* Authors: Alexander Gottwald
*/
#include "win.h"
#ifdef XWIN_XF86CONFIG
#include "../xfree86/parser/xf86Parser.h"
#endif
/* These are taken from hw/xfree86/common/xf86str.h */
typedef struct {
CARD32 red, green, blue;
} rgb;
typedef struct {
float red, green, blue;
} Gamma;
typedef struct {
char *identifier;
char *vendor;
char *board;
char *chipset;
char *ramdac;
char *driver;
struct _confscreenrec *myScreenSection;
Bool claimed;
Bool active;
Bool inUse;
int videoRam;
void *options;
int screen; /* For multi-CRTC cards */
} GDevRec, *GDevPtr;
typedef struct {
char *identifier;
char *driver;
void *commonOptions;
void *extraOptions;
} IDevRec, *IDevPtr;
typedef struct {
int frameX0;
int frameY0;
int virtualX;
int virtualY;
int depth;
int fbbpp;
rgb weight;
rgb blackColour;
rgb whiteColour;
int defaultVisual;
char **modes;
void *options;
} DispRec, *DispPtr;
typedef struct _confxvportrec {
char *identifier;
void *options;
} confXvPortRec, *confXvPortPtr;
typedef struct _confxvadaptrec {
char *identifier;
int numports;
confXvPortPtr ports;
void *options;
} confXvAdaptorRec, *confXvAdaptorPtr;
typedef struct _confscreenrec {
char *id;
int screennum;
int defaultdepth;
int defaultbpp;
int defaultfbbpp;
GDevPtr device;
int numdisplays;
DispPtr displays;
int numxvadaptors;
confXvAdaptorPtr xvadaptors;
void *options;
} confScreenRec, *confScreenPtr;
typedef enum {
PosObsolete = -1,
PosAbsolute = 0,
PosRightOf,
PosLeftOf,
PosAbove,
PosBelow,
PosRelative
} PositionType;
typedef struct _screenlayoutrec {
confScreenPtr screen;
char *topname;
confScreenPtr top;
char *bottomname;
confScreenPtr bottom;
char *leftname;
confScreenPtr left;
char *rightname;
confScreenPtr right;
PositionType where;
int x;
int y;
char *refname;
confScreenPtr refscreen;
} screenLayoutRec, *screenLayoutPtr;
typedef struct _serverlayoutrec {
char *id;
screenLayoutPtr screens;
GDevPtr inactives;
IDevPtr inputs;
void *options;
} serverLayoutRec, *serverLayoutPtr;
/*
* winconfig.c
*/
typedef struct {
/* Files */
#ifdef XWIN_XF86CONFIG
char *configFile;
char *configDir;
#endif
char *fontPath;
/* input devices - keyboard */
#ifdef XWIN_XF86CONFIG
char *keyboard;
#endif
char *xkbRules;
char *xkbModel;
char *xkbLayout;
char *xkbVariant;
char *xkbOptions;
/* layout */
char *screenname;
/* mouse settings */
char *mouse;
Bool emulate3buttons;
long emulate3timeout;
} WinCmdlineRec, *WinCmdlinePtr;
extern WinCmdlineRec g_cmdline;
#ifdef XWIN_XF86CONFIG
extern XF86ConfigPtr g_xf86configptr;
#endif
extern serverLayoutRec g_winConfigLayout;
/*
* Function prototypes
*/
Bool winReadConfigfile(void);
Bool winConfigFiles(void);
Bool winConfigOptions(void);
Bool winConfigScreens(void);
Bool winConfigKeyboard(DeviceIntPtr pDevice);
Bool winConfigMouse(DeviceIntPtr pDevice);
typedef struct {
double freq;
int units;
} OptFrequency;
typedef union {
unsigned long num;
char *str;
double realnum;
Bool boolean;
OptFrequency freq;
} ValueUnion;
typedef enum {
OPTV_NONE = 0,
OPTV_INTEGER,
OPTV_STRING, /* a non-empty string */
OPTV_ANYSTR, /* Any string, including an empty one */
OPTV_REAL,
OPTV_BOOLEAN,
OPTV_PERCENT,
OPTV_FREQ
} OptionValueType;
typedef enum {
OPTUNITS_HZ = 1,
OPTUNITS_KHZ,
OPTUNITS_MHZ
} OptFreqUnits;
typedef struct {
int token;
const char *name;
OptionValueType type;
ValueUnion value;
Bool found;
} OptionInfoRec, *OptionInfoPtr;
/*
* Function prototypes
*/
char *winSetStrOption(void *optlist, const char *name, char *deflt);
int winSetBoolOption(void *optlist, const char *name, int deflt);
int winSetIntOption(void *optlist, const char *name, int deflt);
double winSetRealOption(void *optlist, const char *name, double deflt);
double winSetPercentOption(void *optlist, const char *name, double deflt);
#ifdef XWIN_XF86CONFIG
XF86OptionPtr winFindOption(XF86OptionPtr list, const char *name);
char *winFindOptionValue(XF86OptionPtr list, const char *name);
#endif
int winNameCompare(const char *s1, const char *s2);
char *winNormalizeName(const char *s);
typedef struct {
struct {
long leds;
long delay;
long rate;
} keyboard;
XkbRMLVOSet xkb;
struct {
Bool emulate3Buttons;
long emulate3Timeout;
} pointer;
} winInfoRec, *winInfoPtr;
extern winInfoRec g_winInfo;
#endif