+qboolean VID_InitMode(viddef_mode_t *mode);
+// allocates and opens an appropriate OpenGL context (and its window)
+
+
+// sets hardware gamma correction, returns false if the device does not
+// support gamma control
+// (ONLY called by VID_UpdateGamma and VID_RestoreSystemGamma)
+int VID_SetGamma(unsigned short *ramps, int rampsize);
+// gets hardware gamma correction, returns false if the device does not
+// support gamma control
+// (ONLY called by VID_UpdateGamma and VID_RestoreSystemGamma)
+int VID_GetGamma(unsigned short *ramps, int rampsize);
+// makes sure ramp arrays are big enough and calls VID_GetGamma/VID_SetGamma
+// (ONLY to be called from VID_Finish!)
+void VID_UpdateGamma(qboolean force, int rampsize);
+// turns off hardware gamma ramps immediately
+// (called from various shutdown/deactivation functions)
+void VID_RestoreSystemGamma(void);
+
+qboolean VID_HasScreenKeyboardSupport(void);
+void VID_ShowKeyboard(qboolean show);
+qboolean VID_ShowingKeyboard(void);
+
+void VID_SetMouse (qboolean fullscreengrab, qboolean relative, qboolean hidecursor);
+void VID_Finish (void);
+
+void VID_Restart_f(void);
+
+void VID_Start(void);
+void VID_Stop(void);
+
+extern unsigned int vid_gammatables_serial; // so other subsystems can poll if gamma parameters have changed; this starts with 0 and gets increased by 1 each time the gamma parameters get changed and VID_BuildGammaTables should be called again
+extern qboolean vid_gammatables_trivial; // this is set to true if all color control values are at default setting, and it therefore would make no sense to use the gamma table
+void VID_BuildGammaTables(unsigned short *ramps, int rampsize); // builds the current gamma tables into an array (needs 3*rampsize items)
+
+typedef struct
+{
+ int width, height, bpp, refreshrate;
+ int pixelheight_num, pixelheight_denom;
+}
+vid_mode_t;
+vid_mode_t *VID_GetDesktopMode(void);
+size_t VID_ListModes(vid_mode_t *modes, size_t maxcount);
+size_t VID_SortModes(vid_mode_t *modes, size_t count, qboolean usebpp, qboolean userefreshrate, qboolean useaspect);
+void VID_Soft_SharedSetup(void);
+
+#endif
+