Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals

# dmxext.h

Go to the documentation of this file.

    00001 /* $XFree86$ */
    00002 /*
    00003  * Copyright 2002-2004 Red Hat Inc., Durham, North Carolina.
    00004  *
    00005  * All Rights Reserved.
    00006  *
    00007  * Permission is hereby granted, free of charge, to any person obtaining
    00008  * a copy of this software and associated documentation files (the
    00009  * "Software"), to deal in the Software without restriction, including
    00010  * without limitation on the rights to use, copy, modify, merge,
    00011  * publish, distribute, sublicense, and/or sell copies of the Software,
    00012  * and to permit persons to whom the Software is furnished to do so,
    00013  * subject to the following conditions:
    00014  *
    00015  * The above copyright notice and this permission notice (including the
    00016  * next paragraph) shall be included in all copies or substantial
    00017  * portions of the Software.
    00018  *
    00019  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    00020  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    00021  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    00022  * NON-INFRINGEMENT.  IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
    00023  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    00024  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    00025  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    00026  * SOFTWARE.
    00027  */
    00028
    00029 /*
    00030  * Authors:
    00031  *   Rickard E. (Rik) Faith <faith@redhat.com>
    00032  *
    00033  */
    00034
    00040 #ifndef _DMXEXT_H_
    00041 #define _DMXEXT_H_
    00042
    00043 /* These values must be larger than LastExtensionError.
    00044    The values in dmxext.h and dmxproto.h *MUST* match. */
    00045 #define DmxBadXinerama         1001
    00046 #define DmxBadValue            1002
    00047 #define DmxBadReply            1003
    00048
    00049 #define DMXScreenWindowWidth   (1L<<0)
    00050 #define DMXScreenWindowHeight  (1L<<1)
    00051 #define DMXScreenWindowXoffset (1L<<2)
    00052 #define DMXScreenWindowYoffset (1L<<3)
    00053 #define DMXRootWindowWidth     (1L<<4)
    00054 #define DMXRootWindowHeight    (1L<<5)
    00055 #define DMXRootWindowXoffset   (1L<<6)
    00056 #define DMXRootWindowYoffset   (1L<<7)
    00057 #define DMXRootWindowXorigin   (1L<<8)
    00058 #define DMXRootWindowYorigin   (1L<<9)
    00059
    00060 #define DMXDesktopWidth        (1L<<0)
    00061 #define DMXDesktopHeight       (1L<<1)
    00062 #define DMXDesktopShiftX       (1L<<2)
    00063 #define DMXDesktopShiftY       (1L<<3)
    00064
    00065 #define DMXInputType           (1L<<0)
    00066 #define DMXInputPhysicalScreen (1L<<1)
    00067 #define DMXInputSendsCore      (1L<<2)
    00068
    00069 #ifndef _DMX_SERVER_
    00070
    00073 typedef struct {
    00074     char         *displayName;
    00075     int          logicalScreen;
    00076
    00077     unsigned int screenWindowWidth;    /* displayName's coordinate system */
    00078     unsigned int screenWindowHeight;   /* displayName's coordinate system */
    00079     int          screenWindowXoffset;  /* displayName's coordinate system */
    00080     int          screenWindowYoffset;  /* displayName's coordinate system */
    00081
    00082     unsigned int rootWindowWidth;      /* screenWindow's coordinate system */
    00083     unsigned int rootWindowHeight;     /* screenWindow's coordinate system */
    00084     int          rootWindowXoffset;    /* screenWindow's coordinate system */
    00085     int          rootWindowYoffset;    /* screenWindow's coordinate system */
    00086
    00087     int          rootWindowXorigin;    /* global coordinate system */
    00088     int          rootWindowYorigin;    /* global coordinate system */
    00089 } DMXScreenAttributes;
    00090
    00093 typedef struct {
    00094     int          screen;
    00095     Window       window;
    00096     XRectangle   pos, vis;
    00097 } DMXWindowAttributes;
    00098
    00101 typedef struct {
    00102     unsigned int width;         /* global coordinate system */
    00103     unsigned int height;        /* global coordinate system */
    00104     int          shiftX;        /* global coordinate system */
    00105     int          shiftY;        /* global coordinate system */
    00106 } DMXDesktopAttributes;
    00107
    00110 typedef enum {
    00111     DMXLocalInputType,
    00112     DMXConsoleInputType,
    00113     DMXBackendInputType
    00114 } DMXInputEnum;
    00115
    00118 typedef struct {
    00119     DMXInputEnum inputType;
    00120     int          physicalScreen;
    00121     int          physicalId;
    00122     Bool         isCore;
    00123     Bool         sendsCore;
    00124     const char   *name;
    00125     Bool         detached;
    00126 } DMXInputAttributes;
    00127
    00128 _XFUNCPROTOBEGIN
    00129
    00130 extern Bool DMXQueryExtension(Display *dpy,
    00131                               int *event_basep, int *error_basep);
    00132 extern Bool DMXQueryVersion(Display *dpy, int *major_version,
    00133                             int *minor_version, int *patch_version);
    00134 extern Bool DMXSync(Display *dpy);
    00135 extern Bool DMXForceWindowCreation(Display *dpy, Window window);
    00136
    00137
    00138 extern Bool DMXGetScreenCount(Display *dpy, int *screen_count);
    00139 extern Bool DMXGetScreenAttributes(Display *dpy,
    00140                                    int screen,
    00141                                    DMXScreenAttributes *attr);
    00142 extern int  DMXChangeScreensAttributes(Display *dpy,
    00143                                        int screen_count,
    00144                                        int *screens,
    00145                                        int mask_count,
    00146                                        unsigned int *masks,
    00147                                        DMXScreenAttributes *attr, /* vector */
    00148                                        int *error_screen);
    00149
    00150 extern Bool DMXAddScreen(Display *dpy,
    00151                          const char *displayName,
    00152                          unsigned int mask,
    00153                          DMXScreenAttributes *attr,
    00154                          int *screen);
    00155 extern Bool DMXRemoveScreen(Display *dpy, int screen);
    00156
    00157 /* Call DMXGetScreenWindowCount and allocate info to that size.  Pass
    00158  * the size in available_count.  This call can generate a large amount
    00159  * of wire traffic and should not be used called with available_count=0
    00160  * just to determine the screen_count value -- use DMXGetScreenCount
    00161  * instead.  NOTE: Also see DMX protocol specification (DMXSpec.txt) for
    00162  * usage of DMXSync to flush pending commands. */
    00163 extern Bool DMXGetWindowAttributes(Display *dpy, Window window,
    00164                                    int *screen_count, int available_count,
    00165                                    DMXWindowAttributes *attr);
    00166
    00167 extern Bool DMXGetDesktopAttributes(Display *dpy, DMXDesktopAttributes *attr);
    00168 extern int  DMXChangeDesktopAttributes(Display *dpy,
    00169                                        unsigned int mask,
    00170                                        DMXDesktopAttributes *attr);
    00171
    00172 extern Bool DMXGetInputCount(Display *dpy, int *input_count);
    00173 extern Bool DMXGetInputAttributes(Display *dpy, int id,
    00174                                   DMXInputAttributes *attr);
    00175
    00176 extern Bool DMXAddInput(Display *dpy,
    00177                         unsigned int mask,
    00178                         DMXInputAttributes *attr,
    00179                         int *id);
    00180 extern Bool DMXRemoveInput(Display *dpy, int id);
    00181
    00182 /* These are helper functions that call DMXAddInput. */
    00183 extern Bool DMXAddBackendInput(Display *dpy, int screen, int sendsCore,
    00184                                int *newId);
    00185 extern Bool DMXAddConsoleInput(Display *dpy, const char *name, int sendsCore,
    00186                                int *newId);
    00187
    00188 _XFUNCPROTOEND
    00189 #endif
    00190 #endif