#ifdef WIN32 #include #define DPYTYPE HDC #define DPYOPEN(dpy) GetDC(dpy) #define DPYCLOSE(dpy, disp) ReleaseDC(dpy, disp) #define DPYGETRAMP(disp, ramp) GetDeviceGammaRamp(disp, ramp) #define DPYSETRAMP(disp, ramp) SetDeviceGammaRamp(disp, ramp) #define True TRUE #define False FALSE #else #include #include #include #define DPYTYPE Display * #define DPYOPEN(dpy) XOpenDisplay(dpy) #define DPYCLOSE(dpy, disp) XCloseDisplay(disp) #define DPYGETRAMP(disp, ramp) XF86VidModeGetGammaRamp(disp, DefaultScreen(disp), GAMMA_RESOLUTION, (ramp)[0], (ramp)[1], (ramp)[2]) #define DPYSETRAMP(disp, ramp) XF86VidModeSetGammaRamp(disp, DefaultScreen(disp), GAMMA_RESOLUTION, (ramp)[0], (ramp)[1], (ramp)[2]) #endif #define GAMMA_COMPONENTS 3 #define GAMMA_RESOLUTION 256 // req'd for win32 /* * Ben Winslow - 9/28/2001 * gcc -o invgamma invgamma.c -L/usr/X11R6/lib -lX11 -lXext -lXxf86vm */ int main(int argc, char *argv[]) { DPYTYPE disp; unsigned short ramp_in[GAMMA_COMPONENTS][GAMMA_RESOLUTION]; unsigned short ramp_out[GAMMA_COMPONENTS][GAMMA_RESOLUTION]; int x, y; if ((disp = DPYOPEN(NULL)) == NULL) { printf("Failed to open display\n"); return 1; } if (DPYGETRAMP(disp, ramp_in) == False) { DPYCLOSE(NULL, disp); printf("Failed to get gamma ramp\n"); return 1; } for (x = 0; x < GAMMA_COMPONENTS; x++) { for (y = 0; y < GAMMA_RESOLUTION; y++) { ramp_out[x][y] = ramp_in[x][(GAMMA_RESOLUTION - 1) - y]; } } if (DPYSETRAMP(disp, ramp_out) == False) { DPYCLOSE(NULL, disp); printf("Failed to set gamma ramp\n"); return 1; } DPYCLOSE(NULL, disp); return 0; }