void CDuiItemBox::UpdateScroll() { CRect rcClient=m_rcWindow; int nPageCols=(rcClient.Width()+m_nSepWid)/(m_nItemWid+m_nSepWid); int nPageRows=(rcClient.Height()+m_nSepHei)/(m_nItemHei+m_nSepHei); if(nPageCols<1) nPageCols=1; int nPageItems=nPageCols*nPageRows; if(nPageItems<GetItemCount()) { rcClient.right-=m_nSbWid; nPageCols=(rcClient.Width()+m_nSepWid)/(m_nItemWid+m_nSepWid); if(nPageCols<1) nPageCols=1; nPageItems=nPageCols*nPageRows; } SCROLLINFO si; si.fMask=SIF_RANGE|SIF_PAGE; si.nPage=(nPageItems<GetItemCount())?rcClient.Height():0; si.nMin=0; si.nMax=(GetItemCount()+nPageCols-1)/nPageCols*(m_nItemHei+m_nSepHei)-m_nSepHei; SetScrollInfo(si,TRUE); SetViewSize(CSize(rcClient.Width(),si.nMax)); if(si.nPage==0) SetViewOrigin(CPoint(0,0)); else SetViewOrigin(CPoint(0,GetScrollPos(TRUE))); }
/* ==================== BindForViewOrigin ==================== */ void idMegaTexture::BindForViewOrigin( const idVec3 viewOrigin ) { SetViewOrigin( viewOrigin ); // borderClamp image goes in texture 0 GL_SelectTexture( 0 ); globalImages->borderClampImage->Bind(); // level images in higher textures, blurriest first for ( int i = 0 ; i < 7 ; i++ ) { GL_SelectTexture( 1+i ); if ( i >= numLevels ) { globalImages->whiteImage->Bind(); static float parms[4] = { -2, -2, 0, 1 }; // no contribution qglProgramLocalParameter4fvARB( GL_VERTEX_PROGRAM_ARB, i, parms ); } else { idTextureLevel *level = &levels[ numLevels-1-i ]; if ( r_showMegaTexture.GetBool() ) { if ( i & 1 ) { globalImages->blackImage->Bind(); } else { globalImages->whiteImage->Bind(); } } else { level->image->Bind(); } qglProgramLocalParameter4fvARB( GL_VERTEX_PROGRAM_ARB, i, level->parms ); } } float parms[4]; parms[0] = 0; parms[1] = 0; parms[2] = 0; parms[3] = 1; qglProgramLocalParameter4fvARB( GL_VERTEX_PROGRAM_ARB, 7, parms ); parms[0] = 1; parms[1] = 1; parms[2] = r_terrainScale.GetFloat(); parms[3] = 1; qglProgramLocalParameter4fvARB( GL_VERTEX_PROGRAM_ARB, 8, parms ); }