/* =============== SetPal Debugging tool, just flashes the screen =============== */ void SetPal(int i) { #if 0 static int old; byte pal[768]; int c; if (i == old) return; old = i; if (i == 0) VID_SetPalette(host_basepal); else if (i == 1) { for (c = 0; c < 768; c += 3) { pal[c] = 0; pal[c + 1] = 255; pal[c + 2] = 0; } VID_SetPalette(pal); } else { for (c = 0; c < 768; c += 3) { pal[c] = 0; pal[c + 1] = 0; pal[c + 2] = 255; } VID_SetPalette(pal); } #endif }
void VID_Init(unsigned char *palette) { vid.colormap = host_colormap; Check_Gamma(palette); VID_SetPalette(palette); VID_RegisterLatchCvars(); if (!host_initialized) { VID_RegisterCvars(); VID_RegisterCommands(); VID_ParseCmdLine(); } VID_SDL_Init(); // print info if (!host_initialized || r_verbose.integer) { GfxInfo_f(); } VID_UpdateConRes(); GL_Init(); // Real OpenGL stuff, vid_common_gl.c }
static void VID_Gamma_f (void) { float gamma, f, inf; unsigned char palette[768]; int i; if (Cmd_Argc () == 2) { gamma = atof (Cmd_Argv(1)); for (i = 0; i < 768; i++) { f = pow ((host_basepal[i] + 1) / 256.0, gamma); inf = f*255 + 0.5; if (inf < 0) inf = 0; if (inf > 255) inf = 255; palette[i] = inf; } VID_SetPalette (palette); vid.recalc_refdef = 1; /* force a surface cache flush */ } }
void VID_Init (unsigned char *palette) { // Configurating vita2d environment vita2d_set_vblank_wait(0); tex_buffer = vita2d_create_empty_texture_format(widths[3], heights[3], SCE_GXM_TEXTURE_BASE_FORMAT_P8); vid.maxwarpwidth = vid.width = vid.conwidth = widths[3]; vid.maxwarpheight = vid.height = vid.conheight = heights[3]; vid.rowbytes = vid.conrowbytes = widths[3]; vid.aspect = ((float)vid.height / (float)vid.width) * (320.0 / 240.0); vid.numpages = 2; vid.colormap = host_colormap; vid.fullbright = 256 - LittleLong (*((int *)vid.colormap + 2048)); vid.buffer = vid.conbuffer = vid.direct = vita2d_texture_get_datap(tex_buffer); // Set correct palette for the texture VID_SetPalette(palette); // Init Quake Cache d_pzbuffer = zbuffer; surfcache = malloc(SURFCACHE_SIZE); D_InitCaches (surfcache, SURFCACHE_SIZE); sprintf(res_string,"Current Resolution: %ld x %ld", widths[3], heights[3]); Cvar_RegisterVariable (&res_val); Cvar_RegisterVariable(&vid_vsync); }
/* ===================== CL_Disconnect Sends a disconnect message to the server This is also called on Host_Error, so it shouldn't cause any errors ===================== */ void CL_Disconnect(void) { // stop sounds (especially looping!) S_StopAllSounds(true); /* Clear up view, remove palette shift */ scr_centertime_off = 0; cl.cshifts[0].percent = 0; VID_SetPalette(host_basepal); // if running a local server, shut it down if (cls.demoplayback) CL_StopPlayback(); else if (cls.state >= ca_connected) { if (cls.demorecording) CL_Stop_f(); Con_DPrintf("Sending clc_disconnect\n"); SZ_Clear(&cls.message); MSG_WriteByte(&cls.message, clc_disconnect); NET_SendUnreliableMessage(cls.netcon, &cls.message); SZ_Clear(&cls.message); NET_Close(cls.netcon); cls.state = ca_disconnected; if (sv.active) Host_ShutdownServer(false); } cls.demoplayback = false; cls.timedemo = false; cls.signon = 0; cl.intermission = 0; /* FIXME - for SCR_UpdateScreen */ }
void VID_Gamma_f (void) { float g, f, inf; int i; if (Cmd_Argc () == 2) { g = Q_atof (Cmd_Argv(1)); for (i=0 ; i<255 ; i++) { f = pow ((i+1)/256.0, g); inf = f*255 + 0.5; if (inf < 0) inf = 0; if (inf > 255) inf = 255; vid_gamma[i] = inf; } VID_SetPalette (current_palette); vid.recalc_refdef = 1; // force a surface cache flush } }
static int VID_SetMode (int modenum, unsigned char *palette) { Uint32 flags; int is_fullscreen; in_mode_set = true; if (screen) SDL_FreeSurface(screen); flags = (SDL_SWSURFACE|SDL_HWPALETTE); if (vid_config_fscr.integer) flags |= SDL_FULLSCREEN; // Set the mode screen = SDL_SetVideoMode(modelist[modenum].width, modelist[modenum].height, modelist[modenum].bpp, flags); if (!screen) return false; // initial success. adjust vid vars. vid.height = vid.conheight = modelist[modenum].height; vid.width = vid.conwidth = modelist[modenum].width; vid.buffer = vid.conbuffer = vid.direct = (pixel_t *) screen->pixels; vid.rowbytes = vid.conrowbytes = screen->pitch; vid.numpages = 1; vid.aspect = ((float)vid.height / (float)vid.width) * (320.0 / 240.0); if (!VID_AllocBuffers (vid.width, vid.height)) return false; D_InitCaches (vid_surfcache, vid_surfcachesize); // real success. set vid_modenum properly. vid_modenum = modenum; is_fullscreen = (screen->flags & SDL_FULLSCREEN) ? 1 : 0; modestate = (is_fullscreen) ? MS_FULLDIB : MS_WINDOWED; Cvar_SetValue ("vid_config_swx", modelist[vid_modenum].width); Cvar_SetValue ("vid_config_swy", modelist[vid_modenum].height); Cvar_SetValue ("vid_config_fscr", is_fullscreen); IN_HideMouse (); ClearAllStates(); VID_SetPalette (palette); // setup the window manager stuff VID_SetIcon(); SDL_WM_SetCaption(WM_TITLEBAR_TEXT, WM_ICON_TEXT); Con_SafePrintf ("Video Mode: %ux%ux%d\n", vid.width, vid.height, modelist[modenum].bpp); in_mode_set = false; vid.recalc_refdef = 1; return true; }
/* =============== SCR_BringDownConsole Brings the console down and fades the palettes back to normal ================ */ void SCR_BringDownConsole (void) { int i; scr_centertime_off = 0; for (i=0 ; i<20 && scr_conlines != scr_con_current ; i++) SCR_UpdateScreen (); cl.cshifts[0].percent = 0; // no area contents palette on next frame VID_SetPalette (host_basepal); }
void VID_Init(unsigned char *palette) { int err; Q_SDL_InitOnce(); err = SDL_InitSubSystem(SDL_INIT_VIDEO); if (err < 0) Sys_Error("VID: Couldn't load SDL: %s", SDL_GetError()); VID_SetMode(0, palette); VID_SetPalette(palette); }
void VID_Init (unsigned char *palette) { vid.colormap = host_colormap; Check_Gamma(palette); VID_SetPalette(palette); RE_Init(); #ifdef GLSL SHD_Init(); #endif VID_zzz(); GL_Init(); }
void WarpPalette (void) { int i,j; byte newpalette[768]; int basecolor[3]; basecolor[0] = 130; basecolor[1] = 80; basecolor[2] = 50; // pull the colors halfway to bright brown for (i=0 ; i<256 ; i++) { for (j=0 ; j<3 ; j++) { newpalette[i*3+j] = (host_basepal[i*3+j] + basecolor[j])/2; } } VID_SetPalette (newpalette); }
void VID_Init (unsigned char *palette) { vid_buffer = malloc(sizeof(byte) * basewidth * baseheight); zbuffer = malloc(sizeof(short) * basewidth * baseheight); vid.maxwarpwidth = vid.width = vid.conwidth = basewidth; vid.maxwarpheight = vid.height = vid.conheight = baseheight; vid.aspect = ((float)vid.height / (float)vid.width) * (320.0 / 240.0); vid.numpages = 2; vid.colormap = host_colormap; vid.fullbright = 256 - LittleLong (*((int *)vid.colormap + 2048)); vid.buffer = vid.conbuffer = vid.direct = vid_buffer; vid.rowbytes = vid.conrowbytes = basewidth; VID_SetPalette(palette); d_pzbuffer = zbuffer; surfcache = malloc(D_SurfaceCacheForRes(basewidth,baseheight)); D_InitCaches (surfcache, D_SurfaceCacheForRes(basewidth,baseheight)); fb = (u16*)gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); globalcolormap = malloc(sizeof(byte)*(VID_GRADES*256)); }
void VID_Init (unsigned char *palette) { vid.maxwarpwidth = WARP_WIDTH; vid.maxwarpheight = WARP_HEIGHT; vid.width = vid.conwidth = BASEWIDTH; vid.height = vid.conheight = BASEHEIGHT; vid.aspect = 1.0; vid.numpages = 1; vid.colormap = host_colormap; vid.fullbright = 256 - LittleLong (*((int *)vid.colormap + 2048)); vid.buffer = vid.conbuffer = vid_buffer; vid.rowbytes = vid.conrowbytes = BASEWIDTH; Sys_Printf("VID_Init: %dx %d\n", vid.width, vid.height); d_pzbuffer = zbuffer; D_InitCaches (surfcache, sizeof(surfcache)); VID_SetPalette(palette); }
void VID_ShiftPalette (unsigned char *palette) { VID_SetPalette(palette); }
void VID_Open() { int width, height, fullscreen; fullscreen = vid_fullscreen.value; width = vid_width.value; height = vid_height.value; #warning Fix this. #ifndef GLQUAKE if (width > MAXWIDTH) { Com_Printf("VID: Maximum supported width is %d\n", MAXWIDTH); width = MAXWIDTH; } if (height > MAXHEIGHT) { Com_Printf("VID: Maximum supported height is %d\n", MAXHEIGHT); height = MAXHEIGHT; } #endif vid.colormap = host_colormap; vid.aspect = ((float)height / (float)width) * (320.0 / 240.0); #ifndef GLQUAKE vid.maxwarpwidth = WARP_WIDTH; vid.maxwarpheight = WARP_HEIGHT; #endif Sys_Thread_LockMutex(display_mutex); display = Sys_Video_Open(vid_mode.string, width, height, fullscreen, host_basepal); Sys_Thread_UnlockMutex(display_mutex); if (display) { width = Sys_Video_GetWidth(display); height = Sys_Video_GetHeight(display); #ifndef GLQUAKE if (width > MAXWIDTH || height > MAXHEIGHT) Sys_Error("Fullscreen display size (%dx%d) exceeds the maximum allowed display size (%dx%d)\n", width, height, MAXWIDTH, MAXHEIGHT); #endif #ifndef GLQUAKE if (VID_SW_AllocBuffers(width, height)) #endif { vid.numpages = Sys_Video_GetNumBuffers(display); set_up_conwidth_conheight(); #ifndef GLQUAKE vid.rowbytes = Sys_Video_GetBytesPerRow(display); vid.buffer = Sys_Video_GetBuffer(display); #endif if (windowtitle) Sys_Video_SetWindowTitle(display, windowtitle); mouse_grabbed = 2; refresh_mouse_grab_state(); R_Init(); V_UpdatePalette(true); #ifdef GLQUAKE Check_Gamma(host_basepal); VID_SetPalette(host_basepal); vid.recalc_refdef = 1; // force a surface cache flush R_InitGL(); GL_Particles_TextureInit(); #endif Draw_Init(); M_VidInit(); Sbar_Init(); SCR_Init(); CSTC_PictureInit(); Skin_Init(); return; } Sys_Thread_LockMutex(display_mutex); Sys_Video_Close(display); display = 0; Sys_Thread_UnlockMutex(display_mutex); } Sys_Error("VID: Unable to open a display\n"); }
void VID_Init(unsigned char *palette) { int i; int attrib[] = { GLX_RGBA, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, 1, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 1, None }; int width = 640, height = 480; XSetWindowAttributes attr; unsigned long mask; Window root; XVisualInfo *visinfo; #ifdef USE_VMODE qbool fullscreen = true; int MajorVersion, MinorVersion; int actualWidth, actualHeight; #endif Cvar_Register (&vid_ref); Cvar_Register (&vid_mode); Cvar_Register (&vid_hwgammacontrol); Cvar_Register (&_windowed_mouse); Cvar_Register (&m_filter); vid.colormap = host_colormap; // interpret command-line params // fullscreen cmdline check #ifdef USE_VMODE if (COM_CheckParm("-window")) fullscreen = false; #endif // set vid parameters if ((i = COM_CheckParm("-width")) != 0) width = atoi(com_argv[i+1]); if ((i = COM_CheckParm("-height")) != 0) height = atoi(com_argv[i+1]); if ((i = COM_CheckParm("-conwidth")) != 0) vid.width = Q_atoi(com_argv[i+1]); else vid.width = 640; vid.width &= 0xfff8; // make it a multiple of eight if (vid.width < 320) vid.width = 320; // pick a conheight that matches with correct aspect vid.height = vid.width*3 / 4; if ((i = COM_CheckParm("-conheight")) != 0) vid.height = Q_atoi(com_argv[i+1]); if (vid.height < 200) vid.height = 200; if (!(x_disp = XOpenDisplay(NULL))) { fprintf(stderr, "Error couldn't open the X display\n"); exit(1); } scrnum = DefaultScreen(x_disp); root = RootWindow(x_disp, scrnum); #ifdef USE_VMODE // check vmode extensions supported // Get video mode list MajorVersion = MinorVersion = 0; if (!XF86VidModeQueryVersion(x_disp, &MajorVersion, &MinorVersion)) { vidmode_ext = false; } else { Com_Printf("Using XFree86-VidModeExtension Version %d.%d\n", MajorVersion, MinorVersion); vidmode_ext = true; } #endif visinfo = glXChooseVisual(x_disp, scrnum, attrib); if (!visinfo) { fprintf(stderr, "qkHack: Error couldn't get an RGB, Double-buffered, Depth visual\n"); exit(1); } // setup fullscreen size to fit display --> #ifdef USE_VMODE if (vidmode_ext) { int best_fit, best_dist, dist, x, y; XF86VidModeGetAllModeLines(x_disp, scrnum, &num_vidmodes, &vidmodes); // Are we going fullscreen? If so, let's change video mode if (fullscreen) { best_dist = 9999999; best_fit = -1; for (i = 0; i < num_vidmodes; i++) { if (width > vidmodes[i]->hdisplay || height > vidmodes[i]->vdisplay) continue; x = width - vidmodes[i]->hdisplay; y = height - vidmodes[i]->vdisplay; dist = x * x + y * y; if (dist < best_dist) { best_dist = dist; best_fit = i; } } if (best_fit != -1) { actualWidth = vidmodes[best_fit]->hdisplay; actualHeight = vidmodes[best_fit]->vdisplay; // change to the mode XF86VidModeSwitchToMode(x_disp, scrnum, vidmodes[best_fit]); vidmode_active = true; // Move the viewport to top left XF86VidModeSetViewPort(x_disp, scrnum, 0, 0); } else { fullscreen = 0; } } } #endif /* window attributes */ attr.background_pixel = 0; attr.border_pixel = 0; attr.colormap = XCreateColormap(x_disp, root, visinfo->visual, AllocNone); attr.event_mask = X_MASK; mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; // if fullscreen disable window manager decoration #ifdef USE_VMODE if (vidmode_active) { mask = CWBackPixel | CWColormap | CWSaveUnder | CWBackingStore | CWEventMask | CWOverrideRedirect; attr.override_redirect = True; attr.backing_store = NotUseful; attr.save_under = False; } #endif x_win = XCreateWindow(x_disp, root, 0, 0, width, height, 0, visinfo->depth, InputOutput, visinfo->visual, mask, &attr); XStoreName(x_disp, x_win, PROGRAM); XMapWindow(x_disp, x_win); #ifdef USE_VMODE if (vidmode_active) { XRaiseWindow(x_disp, x_win); XWarpPointer(x_disp, None, x_win, 0, 0, 0, 0, 0, 0); XFlush(x_disp); // Move the viewport to top left XF86VidModeSetViewPort(x_disp, scrnum, 0, 0); } #endif XFlush(x_disp); ctx = glXCreateContext(x_disp, visinfo, NULL, True); glXMakeCurrent(x_disp, x_win, ctx); vid.realwidth = width; vid.realheight = height; if (vid.height > height) vid.height = height; if (vid.width > width) vid.width = width; vid.aspect = ((float)vid.height / (float)vid.width) * (320.0 / 240.0); vid.numpages = 2; InitSig(); // trap evil signals GL_Init(); Check_Gamma(palette); VID_SetPalette(palette); InitHWGamma(); Com_Printf ("Video mode %dx%d initialized.\n", width, height); SCR_InvalidateScreen (); }