xserver

xserver with xephyr scale patch
git clone https://git.neptards.moe/u3shit/xserver.git
Log | Files | Refs | README | LICENSE

xf86Parser.h (15498B)


      1 /*
      2  *
      3  * Copyright (c) 1997  Metro Link Incorporated
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining a
      6  * copy of this software and associated documentation files (the "Software"),
      7  * to deal in the Software without restriction, including without limitation
      8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
      9  * and/or sell copies of the Software, and to permit persons to whom the
     10  * Software is furnished to do so, subject to the following conditions:
     11  *
     12  * The above copyright notice and this permission notice shall be included in
     13  * all copies or substantial portions of the Software.
     14  *
     15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     18  * THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
     19  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
     20  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
     21  * SOFTWARE.
     22  *
     23  * Except as contained in this notice, the name of the Metro Link shall not be
     24  * used in advertising or otherwise to promote the sale, use or other dealings
     25  * in this Software without prior written authorization from Metro Link.
     26  *
     27  */
     28 /*
     29  * Copyright (c) 1997-2003 by The XFree86 Project, Inc.
     30  *
     31  * Permission is hereby granted, free of charge, to any person obtaining a
     32  * copy of this software and associated documentation files (the "Software"),
     33  * to deal in the Software without restriction, including without limitation
     34  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     35  * and/or sell copies of the Software, and to permit persons to whom the
     36  * Software is furnished to do so, subject to the following conditions:
     37  *
     38  * The above copyright notice and this permission notice shall be included in
     39  * all copies or substantial portions of the Software.
     40  *
     41  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     42  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     43  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     44  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
     45  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
     46  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     47  * OTHER DEALINGS IN THE SOFTWARE.
     48  *
     49  * Except as contained in this notice, the name of the copyright holder(s)
     50  * and author(s) shall not be used in advertising or otherwise to promote
     51  * the sale, use or other dealings in this Software without prior written
     52  * authorization from the copyright holder(s) and author(s).
     53  */
     54 
     55 /*
     56  * This file contains the external interfaces for the XFree86 configuration
     57  * file parser.
     58  */
     59 #ifdef HAVE_XORG_CONFIG_H
     60 #include <xorg-config.h>
     61 #endif
     62 
     63 #ifndef _xf86Parser_h_
     64 #define _xf86Parser_h_
     65 
     66 #include <X11/Xdefs.h>
     67 #include "xf86Optrec.h"
     68 #include "list.h"
     69 
     70 #define HAVE_PARSER_DECLS
     71 
     72 typedef struct {
     73     char *file_logfile;
     74     char *file_modulepath;
     75     char *file_fontpath;
     76     char *file_comment;
     77     char *file_xkbdir;
     78 } XF86ConfFilesRec, *XF86ConfFilesPtr;
     79 
     80 /* Values for load_type */
     81 #define XF86_LOAD_MODULE	0
     82 #define XF86_LOAD_DRIVER	1
     83 #define XF86_DISABLE_MODULE	2
     84 
     85 typedef struct {
     86     GenericListRec list;
     87     int load_type;
     88     const char *load_name;
     89     XF86OptionPtr load_opt;
     90     char *load_comment;
     91     int ignore;
     92 } XF86LoadRec, *XF86LoadPtr;
     93 
     94 typedef struct {
     95     XF86LoadPtr mod_load_lst;
     96     XF86LoadPtr mod_disable_lst;
     97     char *mod_comment;
     98 } XF86ConfModuleRec, *XF86ConfModulePtr;
     99 
    100 #define CONF_IMPLICIT_KEYBOARD	"Implicit Core Keyboard"
    101 
    102 #define CONF_IMPLICIT_POINTER	"Implicit Core Pointer"
    103 
    104 #define XF86CONF_PHSYNC    0x0001
    105 #define XF86CONF_NHSYNC    0x0002
    106 #define XF86CONF_PVSYNC    0x0004
    107 #define XF86CONF_NVSYNC    0x0008
    108 #define XF86CONF_INTERLACE 0x0010
    109 #define XF86CONF_DBLSCAN   0x0020
    110 #define XF86CONF_CSYNC     0x0040
    111 #define XF86CONF_PCSYNC    0x0080
    112 #define XF86CONF_NCSYNC    0x0100
    113 #define XF86CONF_HSKEW     0x0200       /* hskew provided */
    114 #define XF86CONF_BCAST     0x0400
    115 #define XF86CONF_VSCAN     0x1000
    116 
    117 typedef struct {
    118     GenericListRec list;
    119     const char *ml_identifier;
    120     int ml_clock;
    121     int ml_hdisplay;
    122     int ml_hsyncstart;
    123     int ml_hsyncend;
    124     int ml_htotal;
    125     int ml_vdisplay;
    126     int ml_vsyncstart;
    127     int ml_vsyncend;
    128     int ml_vtotal;
    129     int ml_vscan;
    130     int ml_flags;
    131     int ml_hskew;
    132     char *ml_comment;
    133 } XF86ConfModeLineRec, *XF86ConfModeLinePtr;
    134 
    135 typedef struct {
    136     GenericListRec list;
    137     const char *vp_identifier;
    138     XF86OptionPtr vp_option_lst;
    139     char *vp_comment;
    140 } XF86ConfVideoPortRec, *XF86ConfVideoPortPtr;
    141 
    142 typedef struct {
    143     GenericListRec list;
    144     const char *va_identifier;
    145     const char *va_vendor;
    146     const char *va_board;
    147     const char *va_busid;
    148     const char *va_driver;
    149     XF86OptionPtr va_option_lst;
    150     XF86ConfVideoPortPtr va_port_lst;
    151     const char *va_fwdref;
    152     char *va_comment;
    153 } XF86ConfVideoAdaptorRec, *XF86ConfVideoAdaptorPtr;
    154 
    155 #define CONF_MAX_HSYNC 8
    156 #define CONF_MAX_VREFRESH 8
    157 
    158 typedef struct {
    159     float hi, lo;
    160 } parser_range;
    161 
    162 typedef struct {
    163     int red, green, blue;
    164 } parser_rgb;
    165 
    166 typedef struct {
    167     GenericListRec list;
    168     const char *modes_identifier;
    169     XF86ConfModeLinePtr mon_modeline_lst;
    170     char *modes_comment;
    171 } XF86ConfModesRec, *XF86ConfModesPtr;
    172 
    173 typedef struct {
    174     GenericListRec list;
    175     const char *ml_modes_str;
    176     XF86ConfModesPtr ml_modes;
    177 } XF86ConfModesLinkRec, *XF86ConfModesLinkPtr;
    178 
    179 typedef struct {
    180     GenericListRec list;
    181     const char *mon_identifier;
    182     const char *mon_vendor;
    183     char *mon_modelname;
    184     int mon_width;              /* in mm */
    185     int mon_height;             /* in mm */
    186     XF86ConfModeLinePtr mon_modeline_lst;
    187     int mon_n_hsync;
    188     parser_range mon_hsync[CONF_MAX_HSYNC];
    189     int mon_n_vrefresh;
    190     parser_range mon_vrefresh[CONF_MAX_VREFRESH];
    191     float mon_gamma_red;
    192     float mon_gamma_green;
    193     float mon_gamma_blue;
    194     XF86OptionPtr mon_option_lst;
    195     XF86ConfModesLinkPtr mon_modes_sect_lst;
    196     char *mon_comment;
    197 } XF86ConfMonitorRec, *XF86ConfMonitorPtr;
    198 
    199 #define CONF_MAXDACSPEEDS 4
    200 #define CONF_MAXCLOCKS    128
    201 
    202 typedef struct {
    203     GenericListRec list;
    204     const char *dev_identifier;
    205     const char *dev_vendor;
    206     const char *dev_board;
    207     const char *dev_chipset;
    208     const char *dev_busid;
    209     const char *dev_card;
    210     const char *dev_driver;
    211     const char *dev_ramdac;
    212     int dev_dacSpeeds[CONF_MAXDACSPEEDS];
    213     int dev_videoram;
    214     unsigned long dev_mem_base;
    215     unsigned long dev_io_base;
    216     const char *dev_clockchip;
    217     int dev_clocks;
    218     int dev_clock[CONF_MAXCLOCKS];
    219     int dev_chipid;
    220     int dev_chiprev;
    221     int dev_irq;
    222     int dev_screen;
    223     XF86OptionPtr dev_option_lst;
    224     char *dev_comment;
    225     char *match_seat;
    226 } XF86ConfDeviceRec, *XF86ConfDevicePtr;
    227 
    228 typedef struct {
    229     GenericListRec list;
    230     const char *mode_name;
    231 } XF86ModeRec, *XF86ModePtr;
    232 
    233 typedef struct {
    234     GenericListRec list;
    235     int disp_frameX0;
    236     int disp_frameY0;
    237     int disp_virtualX;
    238     int disp_virtualY;
    239     int disp_depth;
    240     int disp_bpp;
    241     const char *disp_visual;
    242     parser_rgb disp_weight;
    243     parser_rgb disp_black;
    244     parser_rgb disp_white;
    245     XF86ModePtr disp_mode_lst;
    246     XF86OptionPtr disp_option_lst;
    247     char *disp_comment;
    248 } XF86ConfDisplayRec, *XF86ConfDisplayPtr;
    249 
    250 typedef struct {
    251     XF86OptionPtr flg_option_lst;
    252     char *flg_comment;
    253 } XF86ConfFlagsRec, *XF86ConfFlagsPtr;
    254 
    255 typedef struct {
    256     GenericListRec list;
    257     const char *al_adaptor_str;
    258     XF86ConfVideoAdaptorPtr al_adaptor;
    259 } XF86ConfAdaptorLinkRec, *XF86ConfAdaptorLinkPtr;
    260 
    261 #define CONF_MAXGPUDEVICES 4
    262 typedef struct {
    263     GenericListRec list;
    264     const char *scrn_identifier;
    265     const char *scrn_obso_driver;
    266     int scrn_defaultdepth;
    267     int scrn_defaultbpp;
    268     int scrn_defaultfbbpp;
    269     const char *scrn_monitor_str;
    270     XF86ConfMonitorPtr scrn_monitor;
    271     const char *scrn_device_str;
    272     XF86ConfDevicePtr scrn_device;
    273     XF86ConfAdaptorLinkPtr scrn_adaptor_lst;
    274     XF86ConfDisplayPtr scrn_display_lst;
    275     XF86OptionPtr scrn_option_lst;
    276     char *scrn_comment;
    277     int scrn_virtualX, scrn_virtualY;
    278     char *match_seat;
    279 
    280     int num_gpu_devices;
    281     const char *scrn_gpu_device_str[CONF_MAXGPUDEVICES];
    282     XF86ConfDevicePtr scrn_gpu_devices[CONF_MAXGPUDEVICES];
    283 } XF86ConfScreenRec, *XF86ConfScreenPtr;
    284 
    285 typedef struct {
    286     GenericListRec list;
    287     char *inp_identifier;
    288     char *inp_driver;
    289     XF86OptionPtr inp_option_lst;
    290     char *inp_comment;
    291 } XF86ConfInputRec, *XF86ConfInputPtr;
    292 
    293 typedef struct {
    294     GenericListRec list;
    295     XF86ConfInputPtr iref_inputdev;
    296     char *iref_inputdev_str;
    297     XF86OptionPtr iref_option_lst;
    298 } XF86ConfInputrefRec, *XF86ConfInputrefPtr;
    299 
    300 typedef struct {
    301     Bool set;
    302     Bool val;
    303 } xf86TriState;
    304 
    305 typedef struct {
    306     struct xorg_list entry;
    307     char **values;
    308     Bool is_negated;
    309 } xf86MatchGroup;
    310 
    311 typedef struct {
    312     GenericListRec list;
    313     char *identifier;
    314     char *driver;
    315     struct xorg_list match_product;
    316     struct xorg_list match_vendor;
    317     struct xorg_list match_device;
    318     struct xorg_list match_os;
    319     struct xorg_list match_pnpid;
    320     struct xorg_list match_usbid;
    321     struct xorg_list match_driver;
    322     struct xorg_list match_tag;
    323     struct xorg_list match_layout;
    324     xf86TriState is_keyboard;
    325     xf86TriState is_pointer;
    326     xf86TriState is_joystick;
    327     xf86TriState is_tablet;
    328     xf86TriState is_tablet_pad;
    329     xf86TriState is_touchpad;
    330     xf86TriState is_touchscreen;
    331     XF86OptionPtr option_lst;
    332     char *comment;
    333 } XF86ConfInputClassRec, *XF86ConfInputClassPtr;
    334 
    335 typedef struct {
    336     GenericListRec list;
    337     char *identifier;
    338     char *driver;
    339     char *modulepath;
    340     struct xorg_list match_driver;
    341     XF86OptionPtr option_lst;
    342     char *comment;
    343 } XF86ConfOutputClassRec, *XF86ConfOutputClassPtr;
    344 
    345 /* Values for adj_where */
    346 #define CONF_ADJ_OBSOLETE	-1
    347 #define CONF_ADJ_ABSOLUTE	0
    348 #define CONF_ADJ_RIGHTOF	1
    349 #define CONF_ADJ_LEFTOF		2
    350 #define CONF_ADJ_ABOVE		3
    351 #define CONF_ADJ_BELOW		4
    352 #define CONF_ADJ_RELATIVE	5
    353 
    354 typedef struct {
    355     GenericListRec list;
    356     int adj_scrnum;
    357     XF86ConfScreenPtr adj_screen;
    358     const char *adj_screen_str;
    359     XF86ConfScreenPtr adj_top;
    360     const char *adj_top_str;
    361     XF86ConfScreenPtr adj_bottom;
    362     const char *adj_bottom_str;
    363     XF86ConfScreenPtr adj_left;
    364     const char *adj_left_str;
    365     XF86ConfScreenPtr adj_right;
    366     const char *adj_right_str;
    367     int adj_where;
    368     int adj_x;
    369     int adj_y;
    370     const char *adj_refscreen;
    371 } XF86ConfAdjacencyRec, *XF86ConfAdjacencyPtr;
    372 
    373 typedef struct {
    374     GenericListRec list;
    375     const char *inactive_device_str;
    376     XF86ConfDevicePtr inactive_device;
    377 } XF86ConfInactiveRec, *XF86ConfInactivePtr;
    378 
    379 typedef struct {
    380     GenericListRec list;
    381     const char *lay_identifier;
    382     XF86ConfAdjacencyPtr lay_adjacency_lst;
    383     XF86ConfInactivePtr lay_inactive_lst;
    384     XF86ConfInputrefPtr lay_input_lst;
    385     XF86OptionPtr lay_option_lst;
    386     char *match_seat;
    387     char *lay_comment;
    388 } XF86ConfLayoutRec, *XF86ConfLayoutPtr;
    389 
    390 typedef struct {
    391     GenericListRec list;
    392     const char *vs_name;
    393     const char *vs_identifier;
    394     XF86OptionPtr vs_option_lst;
    395     char *vs_comment;
    396 } XF86ConfVendSubRec, *XF86ConfVendSubPtr;
    397 
    398 typedef struct {
    399     GenericListRec list;
    400     const char *vnd_identifier;
    401     XF86OptionPtr vnd_option_lst;
    402     XF86ConfVendSubPtr vnd_sub_lst;
    403     char *vnd_comment;
    404 } XF86ConfVendorRec, *XF86ConfVendorPtr;
    405 
    406 typedef struct {
    407     const char *dri_group_name;
    408     int dri_group;
    409     int dri_mode;
    410     char *dri_comment;
    411 } XF86ConfDRIRec, *XF86ConfDRIPtr;
    412 
    413 typedef struct {
    414     XF86OptionPtr ext_option_lst;
    415     char *extensions_comment;
    416 } XF86ConfExtensionsRec, *XF86ConfExtensionsPtr;
    417 
    418 typedef struct {
    419     XF86ConfFilesPtr conf_files;
    420     XF86ConfModulePtr conf_modules;
    421     XF86ConfFlagsPtr conf_flags;
    422     XF86ConfVideoAdaptorPtr conf_videoadaptor_lst;
    423     XF86ConfModesPtr conf_modes_lst;
    424     XF86ConfMonitorPtr conf_monitor_lst;
    425     XF86ConfDevicePtr conf_device_lst;
    426     XF86ConfScreenPtr conf_screen_lst;
    427     XF86ConfInputPtr conf_input_lst;
    428     XF86ConfInputClassPtr conf_inputclass_lst;
    429     XF86ConfOutputClassPtr conf_outputclass_lst;
    430     XF86ConfLayoutPtr conf_layout_lst;
    431     XF86ConfVendorPtr conf_vendor_lst;
    432     XF86ConfDRIPtr conf_dri;
    433     XF86ConfExtensionsPtr conf_extensions;
    434     char *conf_comment;
    435 } XF86ConfigRec, *XF86ConfigPtr;
    436 
    437 typedef struct {
    438     int token;                  /* id of the token */
    439     const char *name;           /* pointer to the LOWERCASED name */
    440 } xf86ConfigSymTabRec, *xf86ConfigSymTabPtr;
    441 
    442 /*
    443  * prototypes for public functions
    444  */
    445 extern void xf86initConfigFiles(void);
    446 extern char *xf86openConfigFile(const char *path, const char *cmdline,
    447                                 const char *projroot);
    448 extern char *xf86openConfigDirFiles(const char *path, const char *cmdline,
    449                                     const char *projroot);
    450 extern void xf86setBuiltinConfig(const char *config[]);
    451 extern XF86ConfigPtr xf86readConfigFile(void);
    452 extern void xf86closeConfigFile(void);
    453 extern XF86ConfigPtr xf86allocateConfig(void);
    454 extern void xf86freeConfig(XF86ConfigPtr p);
    455 extern int xf86writeConfigFile(const char *, XF86ConfigPtr);
    456 extern _X_EXPORT XF86ConfDevicePtr xf86findDevice(const char *ident,
    457                                                   XF86ConfDevicePtr p);
    458 extern _X_EXPORT XF86ConfLayoutPtr xf86findLayout(const char *name,
    459                                                   XF86ConfLayoutPtr list);
    460 extern _X_EXPORT XF86ConfMonitorPtr xf86findMonitor(const char *ident,
    461                                                     XF86ConfMonitorPtr p);
    462 extern _X_EXPORT XF86ConfModesPtr xf86findModes(const char *ident,
    463                                                 XF86ConfModesPtr p);
    464 extern _X_EXPORT XF86ConfModeLinePtr xf86findModeLine(const char *ident,
    465                                                       XF86ConfModeLinePtr p);
    466 extern _X_EXPORT XF86ConfScreenPtr xf86findScreen(const char *ident,
    467                                                   XF86ConfScreenPtr p);
    468 extern _X_EXPORT XF86ConfInputPtr xf86findInput(const char *ident,
    469                                                 XF86ConfInputPtr p);
    470 extern _X_EXPORT XF86ConfInputPtr xf86findInputByDriver(const char *driver,
    471                                                         XF86ConfInputPtr p);
    472 extern _X_EXPORT XF86ConfVideoAdaptorPtr xf86findVideoAdaptor(const char *ident,
    473                                                               XF86ConfVideoAdaptorPtr
    474                                                               p);
    475 extern int xf86layoutAddInputDevices(XF86ConfigPtr config,
    476                                      XF86ConfLayoutPtr layout);
    477 
    478 extern _X_EXPORT GenericListPtr xf86addListItem(GenericListPtr head,
    479                                                 GenericListPtr c_new);
    480 extern _X_EXPORT int xf86itemNotSublist(GenericListPtr list_1,
    481                                         GenericListPtr list_2);
    482 
    483 extern _X_EXPORT int xf86pathIsAbsolute(const char *path);
    484 extern _X_EXPORT int xf86pathIsSafe(const char *path);
    485 extern _X_EXPORT char *xf86addComment(char *cur, const char *add);
    486 extern _X_EXPORT Bool xf86getBoolValue(Bool *val, const char *str);
    487 
    488 #endif                          /* _xf86Parser_h_ */