+ return atan (((height/width)/vid_pixelaspect.value)*tan(fov_x/360.0*M_PI))*360.0/M_PI;
+}
+
+int r_stereo_side;
+
+void SCR_DrawScreen (void)
+{
+ for (r_showtrispass = 0;r_showtrispass <= (r_showtris.value > 0);r_showtrispass++)
+ {
+ R_Mesh_Start();
+
+ R_TimeReport("setup");
+
+ if (r_showtrispass)
+ {
+ rmeshstate_t m;
+ r_showtrispass = 0;
+ GL_BlendFunc(GL_ONE, GL_ONE);
+ GL_DepthTest(GL_FALSE);
+ GL_DepthMask(GL_FALSE);
+ memset(&m, 0, sizeof(m));
+ R_Mesh_State(&m);
+ GL_ShowTrisColor(0.2,0.2,0.2,1);
+ r_showtrispass = 1;
+ }
+
+ if (scr_conlines < vid.conheight && cls.signon == SIGNONS)
+ {
+ float size;
+
+ size = scr_viewsize.value * (1.0 / 100.0);
+ size = min(size, 1);
+
+ if (r_stereo_sidebyside.integer)
+ {
+ r_refdef.width = vid.realwidth * size / 2.5;
+ r_refdef.height = vid.realheight * size / 2.5 * (1 - bound(0, r_letterbox.value, 100) / 100);
+ r_refdef.x = (vid.realwidth - r_refdef.width * 2.5) * 0.5;
+ r_refdef.y = (vid.realheight - r_refdef.height)/2;
+ if (r_stereo_side)
+ r_refdef.x += r_refdef.width * 1.5;
+ }
+ else
+ {
+ r_refdef.width = vid.realwidth * size;
+ r_refdef.height = vid.realheight * size * (1 - bound(0, r_letterbox.value, 100) / 100);
+ r_refdef.x = (vid.realwidth - r_refdef.width)/2;
+ r_refdef.y = (vid.realheight - r_refdef.height)/2;
+ }
+
+ // LordHavoc: viewzoom (zoom in for sniper rifles, etc)
+ r_refdef.fov_x = scr_fov.value * cl.viewzoom * r_refdef.fovscale_x;
+ r_refdef.fov_y = CalcFov (r_refdef.fov_x, r_refdef.width, r_refdef.height) * r_refdef.fovscale_y;
+
+ R_RenderView();
+
+ if (scr_zoomwindow.integer)
+ {
+ float sizex = bound(10, scr_zoomwindow_viewsizex.value, 100) / 100.0;
+ float sizey = bound(10, scr_zoomwindow_viewsizey.value, 100) / 100.0;
+ r_refdef.width = vid.realwidth * sizex;
+ r_refdef.height = vid.realheight * sizey;
+ r_refdef.x = (vid.realwidth - r_refdef.width)/2;
+ r_refdef.y = 0;
+ r_refdef.fov_x = scr_zoomwindow_fov.value * r_refdef.fovscale_x;
+ r_refdef.fov_y = CalcFov(r_refdef.fov_x, r_refdef.width, r_refdef.height) * r_refdef.fovscale_y;
+
+ R_RenderView();
+ }
+ }
+
+ if (!r_stereo_sidebyside.integer)
+ {
+ r_refdef.width = vid.realwidth;
+ r_refdef.height = vid.realheight;
+ r_refdef.x = 0;
+ r_refdef.y = 0;
+ }
+
+ // draw 2D stuff
+ R_DrawQueue();
+
+ R_Mesh_Finish();
+
+ R_TimeReport("meshfinish");
+ }