#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;
int textClockFreq;
pointer options;
int screen; /* For multi-CRTC cards */
}
GDevRec, *GDevPtr;
typedef struct
{
char *identifier;
char *driver;
pointer commonOptions;
pointer 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;
pointer options;
}
DispRec, *DispPtr;
typedef struct _confxvportrec
{
char *identifier;
pointer options;
}
confXvPortRec, *confXvPortPtr;
typedef struct _confxvadaptrec
{
char *identifier;
int numports;
confXvPortPtr ports;
pointer 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;
pointer 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;
pointer options;
}
serverLayoutRec, *serverLayoutPtr;
/*
* winconfig.c
*/
typedef struct
{
/* Files */
#ifdef XWIN_XF86CONFIG
char *configFile;
#endif
char *fontPath;
char *rgbPath;
/* input devices - keyboard */
#ifdef XWIN_XF86CONFIG
char *keyboard;
#endif
#ifdef XKB
Bool noXkbExtension;
char *xkbMap;
char *xkbRules;
char *xkbModel;
char *xkbLayout;
char *xkbVariant;
char *xkbOptions;
#endif
/* 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 bool;
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_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 (pointer optlist, const char *name, char *deflt);
int winSetBoolOption (pointer optlist, const char *name, int deflt);
int winSetIntOption (pointer optlist, const char *name, int deflt);
double winSetRealOption (pointer 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;
#ifdef XKB
struct
{
Bool disable;
char *rules;
char *model;
char *layout;
char *variant;
char *options;
char *initialMap;
char *keymap;
char *types;
char *compat;
char *keycodes;
char *symbols;
char *geometry;
}
xkb;
#endif
struct
{
Bool emulate3Buttons;
long emulate3Timeout;
}
pointer;
}
winInfoRec, *winInfoPtr;
extern winInfoRec g_winInfo;
#endif
|