本文整理汇总了C++中GetView函数的典型用法代码示例。如果您正苦于以下问题:C++ GetView函数的具体用法?C++ GetView怎么用?C++ GetView使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetView函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetView
// If the button in the command bar is clicked, then this function will be called
// virtual
BOOL S2_CrvLineSegCmd::OnExecute()
{
// Initialize
FW_Cmd::OnExecute();
// Get active view
FW_View* pView = GetView();
if(!pView)
return FALSE;
// Get root node
GR_DLNode* pDLNode = pView->GetDLNode();
if(!pDLNode)
return FALSE;
m_pDLNodeSketch2D = GR_DLNodeSketch2D::GetActive(pDLNode);
if(!m_pDLNodeSketch2D)
return FALSE;
m_pPtPrevious = NULL;
m_pDLCrvPreview = NULL;
return TRUE;
}
示例2: pt
LRESULT CSimpleGraph::OnMouseHover(WPARAM, LPARAM lp)
{
CPoint pt(LOWORD(lp), HIWORD(lp)); // client window coords
CHexEditView *pv = GetView();
ASSERT(pv != NULL);
m_bar = get_bar(pt);
if (m_bar > -1 && !m_tip.IsWindowVisible())
{
// Update the tip info
m_tip.Clear();
CString ss;
if (theApp.hex_ucase_)
ss.Format("Byte: %d [%02.2Xh] %s", m_bar, m_bar, pv->DescChar(m_bar));
else
ss.Format("Byte: %d [%02.2xh] %s", m_bar, m_bar, pv->DescChar(m_bar));
m_tip.AddString(ss);
char buf[32]; // used with sprintf (CString::Format can't handle __int64)
sprintf(buf, "%I64d", m_val[m_bar]);
ss = buf;
AddCommas(ss);
m_tip.AddString("Count: " +ss);
// Work out the tip window display position and move the tip window there
CPoint tip_pt = pt + CSize(16, 16);
ClientToScreen(&tip_pt);
m_tip.Move(tip_pt, false);
m_tip.Show();
track_mouse(TME_LEAVE);
return 0; // return 0 to say we processed it
}
return 1;
}
示例3: GetView
//-----------------------------------------------------------------------------
// Purpose: Sets view parameters for level overview mode
// Input : *rect -
//-----------------------------------------------------------------------------
void CViewRender::SetUpOverView()
{
static int oldCRC = 0;
CViewSetup &view = GetView ( STEREO_EYE_MONO );
view.m_bOrtho = true;
float aspect = (float)view.width/(float)view.height;
int size_y = 1024.0f * cl_leveloverview.GetFloat(); // scale factor, 1024 = OVERVIEW_MAP_SIZE
int size_x = size_y * aspect; // standard screen aspect
view.origin.x -= size_x / 2;
view.origin.y += size_y / 2;
view.m_OrthoLeft = 0;
view.m_OrthoTop = -size_y;
view.m_OrthoRight = size_x;
view.m_OrthoBottom = 0;
view.angles = QAngle( 90, 90, 0 );
// simple movement detector, show position if moved
int newCRC = view.origin.x + view.origin.y + view.origin.z;
if ( newCRC != oldCRC )
{
Msg( "Overview: scale %.2f, pos_x %.0f, pos_y %.0f\n", cl_leveloverview.GetFloat(),
view.origin.x, view.origin.y );
oldCRC = newCRC;
}
CMatRenderContextPtr pRenderContext( materials );
pRenderContext->ClearColor4ub( 0, 255, 0, 255 );
// render->DrawTopView( true );
}
示例4: GetView
Ray Camera::GetScreenRay(float x, float y) const
{
Ray ret;
// If projection is invalid, just return a ray pointing forward
if (!IsProjectionValid())
{
ret.origin_ = node_ ? node_->GetWorldPosition() : Vector3::ZERO;
ret.direction_ = node_ ? node_->GetWorldDirection() : Vector3::FORWARD;
return ret;
}
Matrix4 viewProjInverse = (GetProjection(false) * GetView()).Inverse();
// The parameters range from 0.0 to 1.0. Expand to normalized device coordinates (-1.0 to 1.0) & flip Y axis
x = 2.0f * x - 1.0f;
y = 1.0f - 2.0f * y;
Vector3 near(x, y, 0.0f);
Vector3 far(x, y, 1.0f);
ret.origin_ = viewProjInverse * near;
ret.direction_ = ((viewProjInverse * far) - ret.origin_).Normalized();
return ret;
}
示例5: GetView
BOOL DTransformScale::OnSetActive()
{
// return DTransformScale::OnSetActive();
GView *view = GetView();
// make translation event handler active
GMoveTransformHandler *h = new GMoveTransformHandler(view);
h->SetMapMode(m_type);
h->SetTransformMode(GMoveTransformHandler::MODE_SCALE);
h->SetDialog(this);
h->SetAxes(GetAxes());
h->scaleUniform = m_uniform;
h->ref();
m_pView->Message("Select and drag scales object");
m_handler = h;
view->PushEventHandler(h);
return CPropertyPage::OnSetActive();
}
示例6: GetView
// Sends the bitmap extracted from the View window to a printer of your choice
// This function provides a useful reference for printing bitmaps in general
void CDoc::Print()
{
// Get the dimensions of the View window
CRect rcView = GetView().GetClientRect();
int Width = rcView.Width();
int Height = rcView.Height();
// Copy the bitmap from the View window
CClientDC ViewDC(GetView());
CMemDC MemDC(ViewDC);
CBitmap bmView;
bmView.CreateCompatibleBitmap(ViewDC, Width, Height);
MemDC.SelectObject(bmView);
MemDC.BitBlt(0, 0, Width, Height, ViewDC, 0, 0, SRCCOPY);
CPrintDialog PrintDlg;
try
{
// Bring up a dialog to choose the printer
if (PrintDlg.DoModal(GetView()) == IDOK) // throws exception if there is no default printer
{
// Zero and then initialize the members of a DOCINFO structure.
DOCINFO di;
memset(&di, 0, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = _T("Scribble Printout");
di.lpszOutput = (LPTSTR)NULL;
di.lpszDatatype = (LPTSTR)NULL;
di.fwType = 0;
// Begin a print job by calling the StartDoc function.
CDC dcPrint = PrintDlg.GetPrinterDC();
if (SP_ERROR == StartDoc(dcPrint, &di))
throw CUserException(_T("Failed to start print job"));
// Inform the driver that the application is about to begin sending data.
if (0 > StartPage(dcPrint))
throw CUserException(_T("StartPage failed"));
BITMAPINFOHEADER bi;
ZeroMemory(&bi, sizeof(BITMAPINFOHEADER));
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biHeight = Height;
bi.biWidth = Width;
bi.biPlanes = 1;
bi.biBitCount = 24;
bi.biCompression = BI_RGB;
// Note: BITMAPINFO and BITMAPINFOHEADER are the same for 24 bit bitmaps
// Get the size of the image data
MemDC.GetDIBits(bmView, 0, Height, NULL, reinterpret_cast<BITMAPINFO*>(&bi), DIB_RGB_COLORS);
// Retrieve the image data
std::vector<byte> vBits(bi.biSizeImage, 0); // a vector to hold the byte array
byte* pByteArray = &vBits.front();
MemDC.GetDIBits(bmView, 0, Height, pByteArray, reinterpret_cast<BITMAPINFO*>(&bi), DIB_RGB_COLORS);
// Determine the scaling factors required to print the bitmap and retain its original proportions.
float fLogPelsX1 = (float)ViewDC.GetDeviceCaps(LOGPIXELSX);
float fLogPelsY1 = (float)ViewDC.GetDeviceCaps(LOGPIXELSY);
float fLogPelsX2 = (float)GetDeviceCaps(dcPrint, LOGPIXELSX);
float fLogPelsY2 = (float)GetDeviceCaps(dcPrint, LOGPIXELSY);
float fScaleX = MAX(fLogPelsX1, fLogPelsX2) / MIN(fLogPelsX1, fLogPelsX2);
float fScaleY = MAX(fLogPelsY1, fLogPelsY2) / MIN(fLogPelsY1, fLogPelsY2);
// Compute the coordinates of the upper left corner of the centered bitmap.
int cWidthPels = GetDeviceCaps(dcPrint, HORZRES);
int xLeft = ((cWidthPels / 2) - ((int)(((float)Width) * fScaleX)) / 2);
int cHeightPels = GetDeviceCaps(dcPrint, VERTRES);
int yTop = ((cHeightPels / 2) - ((int)(((float)Height) * fScaleY)) / 2);
// Use StretchDIBits to scale the bitmap and maintain its original proportions
if (GDI_ERROR == (UINT)StretchDIBits(dcPrint, xLeft, yTop, (int)((float)Width * fScaleX),
(int)((float)Height * fScaleY), 0, 0, Width, Height, pByteArray, reinterpret_cast<BITMAPINFO*>(&bi), DIB_RGB_COLORS, SRCCOPY))
{
throw CUserException(_T("Failed to resize image for printing"));
}
// Inform the driver that the page is finished.
if (0 > EndPage(dcPrint))
throw CUserException(_T("EndPage failed"));
// Inform the driver that document has ended.
if (0 > EndDoc(dcPrint))
throw CUserException(_T("EndDoc failed"));
}
}
catch (const CException& e)
{
// Display a message box indicating why printing failed.
CString strMsg = CString(e.GetText()) + CString("\n") + e.GetErrorString();
CString strType = CString(e.what());
::MessageBox(NULL, strMsg, strType, MB_ICONWARNING);
}
}
示例7: UpdateViewVisibility
void CGUIViewControl::SetCurrentView(int viewMode, bool bRefresh /* = false */)
{
// grab the previous control
CGUIControl *previousView = NULL;
if (m_currentView >= 0 && m_currentView < (int)m_visibleViews.size())
previousView = m_visibleViews[m_currentView];
UpdateViewVisibility();
// viewMode is of the form TYPE << 16 | ID
VIEW_TYPE type = (VIEW_TYPE)(viewMode >> 16);
int id = viewMode & 0xffff;
// first find a view that matches this view, if possible...
int newView = GetView(type, id);
if (newView < 0) // no suitable view that matches both id and type, so try just type
newView = GetView(type, 0);
if (newView < 0 && type == VIEW_TYPE_BIG_ICON) // try icon view if they want big icon
newView = GetView(VIEW_TYPE_ICON, 0);
if (newView < 0 && type == VIEW_TYPE_BIG_INFO)
newView = GetView(VIEW_TYPE_INFO, 0);
if (newView < 0) // try a list view
newView = GetView(VIEW_TYPE_LIST, 0);
if (newView < 0) // try anything!
newView = GetView(VIEW_TYPE_NONE, 0);
if (newView < 0)
return;
m_currentView = newView;
CGUIControl *pNewView = m_visibleViews[m_currentView];
// make only current control visible...
for (ciViews view = m_allViews.begin(); view != m_allViews.end(); ++view)
(*view)->SetVisible(false);
pNewView->SetVisible(true);
if (!bRefresh && pNewView == previousView)
return; // no need to actually update anything (other than visibility above)
// CLog::Log(LOGDEBUG,"SetCurrentView: Oldview: %i, Newview :%i", m_currentView, viewMode);
bool hasFocus(false);
int item = -1;
if (previousView)
{ // have an old view - let's clear it out and hide it.
hasFocus = previousView->HasFocus();
item = GetSelectedItem(previousView);
CGUIMessage msg(GUI_MSG_LABEL_RESET, m_parentWindow, previousView->GetID());
previousView->OnMessage(msg);
}
// Update it with the contents
UpdateContents(pNewView, item);
// and focus if necessary
if (hasFocus)
{
CGUIMessage msg(GUI_MSG_SETFOCUS, m_parentWindow, pNewView->GetID(), 0);
g_windowManager.SendMessage(msg, m_parentWindow);
}
UpdateViewAsControl(((IGUIContainer *)pNewView)->GetLabel());
}
示例8: Draw
void GameObject::Draw(){
//ゲームステージが無効ならリターン
if (m_GameStgae.expired()){
return;
}
//デバイスの取得
auto Dev = App::GetApp()->GetDeviceResources();
auto pDx11Device = Dev->GetD3DDevice();
auto pID3D11DeviceContext = Dev->GetD3DDeviceContext();
//ステータスのポインタ
auto RenderStatePtr = Dev->GetRenderState();
auto Stage = m_GameStgae.lock();
auto ViewPtr = Stage->GetView();
//ビューからカメラを取り出す
auto PtrCamera = ViewPtr->GetCamera();
//カメラの取得
Matrix4X4 View, Proj;
View = PtrCamera->GetViewMatrix();
Proj = PtrCamera->GetProjMatrix();
//コンスタントバッファの設定
Texture3DConstantBuffer cb1;
//行列の設定(転置する)
cb1.Model = Matrix4X4EX::Transpose(m_WorldMatrix);
cb1.View = Matrix4X4EX::Transpose(View);
cb1.Projection = Matrix4X4EX::Transpose(Proj);
//ライトの設定
//ステージから0番目のライトを取り出す
auto PtrLight = ViewPtr->GetMultiLight()->GetLight(0);
cb1.LightDir = PtrLight->GetDirectional();
cb1.LightDir.w = 1.0f;
//コンスタントバッファの更新
pID3D11DeviceContext->UpdateSubresource(CBTexture3D::GetPtr()->GetBuffer(), 0, nullptr, &cb1, 0, 0);
//ストライドとオフセット
UINT stride = sizeof(VertexPositionNormalTexture);
UINT offset = 0;
//頂点バッファの設定
pID3D11DeviceContext->IASetVertexBuffers(0, 1, m_VertexBuffer.GetAddressOf(), &stride, &offset);
//インデックスバッファのセット
pID3D11DeviceContext->IASetIndexBuffer(m_IndexBuffer.Get(), DXGI_FORMAT_R16_UINT, 0);
//描画方法(3角形)
pID3D11DeviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
//透明処理
pID3D11DeviceContext->OMSetBlendState(RenderStatePtr->GetAlphaBlendEx(), nullptr, 0xffffffff);
//デプスステンシルは使用する
pID3D11DeviceContext->OMSetDepthStencilState(RenderStatePtr->GetDepthDefault(), 0);
//シェーダの設定
pID3D11DeviceContext->VSSetShader(VSTexture3D::GetPtr()->GetShader(), nullptr, 0);
pID3D11DeviceContext->PSSetShader(PSTexture3D::GetPtr()->GetShader(), nullptr, 0);
//リニアサンプラーを設定
ID3D11SamplerState* samplerState = RenderStatePtr->GetLinearClamp();
pID3D11DeviceContext->PSSetSamplers(0, 1, &samplerState);
for (auto& m : m_Materials){
//テクスチャを設定
pID3D11DeviceContext->PSSetShaderResources(0, 1, m.m_ShaderResView.GetAddressOf());
//インプットレイアウトの設定
pID3D11DeviceContext->IASetInputLayout(VSTexture3D::GetPtr()->GetInputLayout());
//コンスタントバッファの設定
ID3D11Buffer* pConstantBuffer = CBTexture3D::GetPtr()->GetBuffer();
pID3D11DeviceContext->VSSetConstantBuffers(0, 1, &pConstantBuffer);
pID3D11DeviceContext->PSSetConstantBuffers(0, 1, &pConstantBuffer);
//レンダリングステート
pID3D11DeviceContext->RSSetState(RenderStatePtr->GetCullFront());
//描画
pID3D11DeviceContext->DrawIndexed(m.m_IndexCount, m.m_StartIndex, 0);
//レンダリングステート
pID3D11DeviceContext->RSSetState(RenderStatePtr->GetCullBack());
//描画
pID3D11DeviceContext->DrawIndexed(m.m_IndexCount, m.m_StartIndex,0);
}
//後始末
Dev->InitializeStates(RenderStatePtr);
}
示例9: IsModified
BOOL CWordPadDoc::DoSave(LPCTSTR pszPathName, BOOL bReplace /*=TRUE*/)
// Save the document data to a file
// pszPathName = path name where to save document file
// if pszPathName is NULL then the user will be prompted (SaveAs)
// note: pszPathName can be different than 'm_strPathName'
// if 'bReplace' is TRUE will change file name if successful (SaveAs)
// if 'bReplace' is FALSE will not change path name (SaveCopyAs)
{
CString newName = pszPathName;
int nOrigDocType = m_nDocType; //saved in case of SaveCopyAs or failure
// newName bWrite type result
// empty TRUE - SaveAs dialog
// empty FALSE - SaveAs dialog
// notempty TRUE - nothing
// notempty FALSE W6 warn (change to wordpad, save as, cancel)
// notempty FALSE other warn (save as, cancel)
BOOL bModified = IsModified();
ScanForConverters();
BOOL bSaveAs = FALSE;
if (newName.IsEmpty())
bSaveAs = TRUE;
else if (!doctypes[m_nDocType].bWrite)
{
if (m_nDocType == RD_WINWORD6)
{
// DWORD nHelpIDs[] =
// {
// 0, 0
// };
int nRes = CButtonDialog::DisplayMessageBox(
MAKEINTRESOURCE(IDS_WORD6_WARNING), AfxGetAppName(),
MAKEINTRESOURCE(IDS_WORD6_WARNING_BUTTONS),
MB_ICONQUESTION, 1, 2);
if (nRes == 0) // Save
SetDocType(RD_WORDPAD, TRUE);
else if (nRes == 2) // Cancel
return FALSE;
else
bSaveAs = TRUE;
// else save as
}
else //
{
if (AfxMessageBox(IDS_SAVE_UNSUPPORTED,
MB_YESNO | MB_ICONQUESTION) != IDYES)
{
return FALSE;
}
else
bSaveAs = TRUE;
}
}
if (m_lpRootStg == NULL && IsTextType(m_nDocType) &&
!GetView()->IsFormatText())
{
// formatting changed in plain old text file
DWORD nHelpIDs[] =
{
0, IDH_WORDPAD_WORD6FILE,
0, IDH_WORDPAD_FORMATTED,
0, IDH_WORDPAD_TEXTFILE,
0, 0
};
CString str;
AfxFormatString1(str, IDS_SAVE_FORMAT_TEXT, GetTitle());
int nRes = CButtonDialog::DisplayMessageBox(str,
MAKEINTRESOURCE(AFX_IDS_APP_TITLE),
MAKEINTRESOURCE(IDS_TF_BUTTONS), MB_ICONQUESTION, 0, 3, nHelpIDs);
if (nRes == 3)
return FALSE;
int nDocType = (nRes == 0) ? RD_DEFAULT: //Word 6
(nRes == 1) ? RD_RICHTEXT : //RTF
RD_TEXT; //text
if (IsTextType(m_nDocType) && nDocType != RD_TEXT)
SetDocType(nDocType, TRUE);
if (nDocType != RD_TEXT)
bSaveAs = TRUE;
}
GetView()->GetParentFrame()->RecalcLayout();
if (bSaveAs)
{
newName = m_strPathName;
if (bReplace && newName.IsEmpty())
{
newName = m_strTitle;
int iBad = newName.FindOneOf(_T(" #%;/\\")); // dubious filename
if (iBad != -1)
newName.ReleaseBuffer(iBad);
// append the default suffix if there is one
newName += GetExtFromType(m_nDocType);
}
int nDocType = m_nDocType;
//.........这里部分代码省略.........
示例10: VPROF_
// This is called by cdll_client_int to setup view model origins. This has to be done before
// simulation so entities can access attachment points on view models during simulation.
void CViewRender::OnRenderStart()
{
VPROF_("CViewRender::OnRenderStart", 2, VPROF_BUDGETGROUP_OTHER_UNACCOUNTED, false, 0);
IterateRemoteSplitScreenViewSlots_Push( true );
FOR_EACH_VALID_SPLITSCREEN_PLAYER( hh )
{
ACTIVE_SPLITSCREEN_PLAYER_GUARD_VGUI( hh );
// This will fill in one of the m_UserView[ hh ] slots
SetUpView();
// Adjust mouse sensitivity based upon the current FOV
C_BasePlayer *player = C_BasePlayer::GetLocalPlayer();
if ( player )
{
default_fov.SetValue( player->m_iDefaultFOV );
//Update our FOV, including any zooms going on
int iDefaultFOV = default_fov.GetInt();
int localFOV = player->GetFOV();
int min_fov = player->GetMinFOV();
// Don't let it go too low
localFOV = MAX( min_fov, localFOV );
GetHud().m_flFOVSensitivityAdjust = 1.0f;
#ifndef _XBOX
if ( GetHud().m_flMouseSensitivityFactor )
{
GetHud().m_flMouseSensitivity = sensitivity.GetFloat() * GetHud().m_flMouseSensitivityFactor;
}
else
#endif
{
// No override, don't use huge sensitivity
if ( localFOV == iDefaultFOV )
{
#ifndef _XBOX
// reset to saved sensitivity
GetHud().m_flMouseSensitivity = 0;
#endif
}
else
{
// Set a new sensitivity that is proportional to the change from the FOV default and scaled
// by a separate compensating factor
if ( iDefaultFOV == 0 )
{
Assert(0); // would divide by zero, something is broken with iDefatulFOV
iDefaultFOV = 1;
}
GetHud().m_flFOVSensitivityAdjust =
((float)localFOV / (float)iDefaultFOV) * // linear fov downscale
zoom_sensitivity_ratio.GetFloat(); // sensitivity scale factor
#ifndef _XBOX
GetHud().m_flMouseSensitivity = GetHud().m_flFOVSensitivityAdjust * sensitivity.GetFloat(); // regular sensitivity
#endif
}
}
}
}
// Setup the frustum cache for this frame.
m_bAllowViewAccess = true;
FOR_EACH_VALID_SPLITSCREEN_PLAYER( iSlot )
{
const CViewSetup &view = GetView( iSlot );
FrustumCache()->Add( &view, iSlot );
}
FrustumCache()->SetUpdated();
m_bAllowViewAccess = false;
IterateRemoteSplitScreenViewSlots_Pop();
}
示例11: UNUSED
//.........这里部分代码省略.........
m_pInput->GetMouse()->MouseDownCallback( EMouseButton_Middle, VECTOR( xPos, yPos ) );
return TRUE;
}
case WM_MBUTTONUP:
{
INT xPos = GET_X_LPARAM(lParam);
INT yPos = GET_Y_LPARAM(lParam);
m_pInput->GetMouse()->MouseUpCallback( EMouseButton_Middle, VECTOR( xPos, yPos ) );
return TRUE;
}
case WM_MOUSEMOVE:
{
INT xPos = GET_X_LPARAM(lParam);
INT yPos = GET_Y_LPARAM(lParam);
m_pInput->GetMouse()->MouseMoveCallback( VECTOR( xPos, yPos ) );
return TRUE;
}
case WM_MOUSEWHEEL:
{
INT zDelta = GET_WHEEL_DELTA_WPARAM(wParam);
INT nMove = zDelta / WHEEL_DELTA;
if ( nMove > 0 )
{
GetView()->DecreaseZoom();
}
else
{
GetView()->IncreaseZoom();
}
return TRUE;
}
case WM_SIZE: // Resize The OpenGL Window
{
m_pView->Resize(LOWORD(lParam),HIWORD(lParam)); // LoWord=Width, HiWord=Height
return TRUE; // Jump Back
}
case WM_COMMAND:
{
std::list<CMenuCallback*>::iterator it;
for ( it = m_MenuCallbacks.begin() ; it != m_MenuCallbacks.end(); it++ )
{
(*it)->MenuSelected( LOWORD(wParam) );
}
switch( LOWORD(wParam) )
{
case ID_CONTROLLER_XBOX:
{
m_pGameSettings->SetKeyConfig( EKeyConfig_Xbox );
}
break;
示例12: Assert
//-----------------------------------------------------------------------------
// Purpose: Render current view into specified rectangle
// Input : *rect - is computed by CVideoMode_Common::GetClientViewRect()
//-----------------------------------------------------------------------------
void CViewRender::Render( vrect_t *rect )
{
Assert(s_DbgSetupOrigin == m_View.origin);
Assert(s_DbgSetupAngles == m_View.angles);
VPROF_BUDGET( "CViewRender::Render", "CViewRender::Render" );
tmZone( TELEMETRY_LEVEL0, TMZF_NONE, "%s", __FUNCTION__ );
vrect_t vr = *rect;
// Stub out the material system if necessary.
CMatStubHandler matStub;
engine->EngineStats_BeginFrame();
// Assume normal vis
m_bForceNoVis = false;
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
// Set for console commands, etc.
render->SetMainView ( m_View.origin, m_View.angles );
for( StereoEye_t eEye = GetFirstEye(); eEye <= GetLastEye(); eEye = (StereoEye_t)(eEye+1) )
{
CViewSetup &view = GetView( eEye );
#if 0 && defined( CSTRIKE_DLL )
const bool bPlayingBackReplay = g_pEngineClientReplay && g_pEngineClientReplay->IsPlayingReplayDemo();
if ( pPlayer && !bPlayingBackReplay )
{
C_BasePlayer *pViewTarget = pPlayer;
if ( pPlayer->IsObserver() && pPlayer->GetObserverMode() == OBS_MODE_IN_EYE )
{
pViewTarget = dynamic_cast<C_BasePlayer*>( pPlayer->GetObserverTarget() );
}
if ( pViewTarget )
{
float targetFOV = (float)pViewTarget->m_iFOV;
if ( targetFOV == 0 )
{
// FOV of 0 means use the default FOV
targetFOV = g_pGameRules->DefaultFOV();
}
float deltaFOV = view.fov - m_flLastFOV;
float FOVDirection = targetFOV - pViewTarget->m_iFOVStart;
// Clamp FOV changes to stop FOV oscillation
if ( ( deltaFOV < 0.0f && FOVDirection > 0.0f ) ||
( deltaFOV > 0.0f && FOVDirection < 0.0f ) )
{
view.fov = m_flLastFOV;
}
// Catch case where FOV overshoots its target FOV
if ( ( view.fov < targetFOV && FOVDirection <= 0.0f ) ||
( view.fov > targetFOV && FOVDirection >= 0.0f ) )
{
view.fov = targetFOV;
}
m_flLastFOV = view.fov;
}
}
#endif
static ConVarRef sv_restrict_aspect_ratio_fov( "sv_restrict_aspect_ratio_fov" );
float aspectRatio = engine->GetScreenAspectRatio() * 0.75f; // / (4/3)
float limitedAspectRatio = aspectRatio;
if ( ( sv_restrict_aspect_ratio_fov.GetInt() > 0 && engine->IsWindowedMode() && gpGlobals->maxClients > 1 ) ||
sv_restrict_aspect_ratio_fov.GetInt() == 2 )
{
limitedAspectRatio = MIN( aspectRatio, 1.85f * 0.75f ); // cap out the FOV advantage at a 1.85:1 ratio (about the widest any legit user should be)
}
view.fov = ScaleFOVByWidthRatio( view.fov, limitedAspectRatio );
view.fovViewmodel = ScaleFOVByWidthRatio( view.fovViewmodel, aspectRatio );
// Let the client mode hook stuff.
g_pClientMode->PreRender(&view);
g_pClientMode->AdjustEngineViewport( vr.x, vr.y, vr.width, vr.height );
ToolFramework_AdjustEngineViewport( vr.x, vr.y, vr.width, vr.height );
float flViewportScale = mat_viewportscale.GetFloat();
view.m_nUnscaledX = vr.x;
view.m_nUnscaledY = vr.y;
view.m_nUnscaledWidth = vr.width;
view.m_nUnscaledHeight = vr.height;
//.........这里部分代码省略.........
示例13: WXUNUSED
void csCanvas::OnLeftClick(double x, double y, int WXUNUSED(keys))
{
csEditorToolPalette *palette = wxGetApp().GetDiagramPalette();
if (palette->GetSelection() == PALETTE_ARROW)
{
GetView()->SelectAll(false);
wxClientDC dc(this);
PrepareDC(dc);
Redraw(dc);
return;
}
if (palette->GetSelection() == PALETTE_TEXT_TOOL)
{
wxString newLabel;
#if wxUSE_WX_RESOURCES
// Ask for a label and create a new free-floating text region
csLabelEditingDialog* dialog = new csLabelEditingDialog(GetParent());
dialog->SetShapeLabel( wxEmptyString );
dialog->SetTitle(_T("New text box"));
if (dialog->ShowModal() == wxID_CANCEL)
{
dialog->Destroy();
return;
}
newLabel = dialog->GetShapeLabel();
dialog->Destroy();
#endif // wxUSE_WX_RESOURCES
wxShape* shape = new csTextBoxShape;
shape->AssignNewIds();
shape->SetEventHandler(new csEvtHandler(shape, shape, newLabel));
wxComboBox* comboBox = wxGetApp().GetPointSizeComboBox();
wxString str(comboBox->GetValue());
long pointSize;
str.ToLong( &pointSize );
wxFont* newFont = wxTheFontList->FindOrCreateFont(pointSize,
shape->GetFont()->GetFamily(),
shape->GetFont()->GetStyle(),
shape->GetFont()->GetWeight(),
shape->GetFont()->GetUnderlined(),
shape->GetFont()->GetFaceName());
shape->SetFont(newFont);
shape->SetX(x);
shape->SetY(y);
csDiagramCommand* cmd = new csDiagramCommand(_T("Text box"),
(csDiagramDocument *)GetView()->GetDocument(),
new csCommandState(ID_CS_ADD_SHAPE, shape, NULL));
GetView()->GetDocument()->GetCommandProcessor()->Submit(cmd);
palette->SetSelection(PALETTE_ARROW);
return;
}
csSymbol* symbol = wxGetApp().GetSymbolDatabase()->FindSymbol(palette->GetSelection());
if (symbol)
{
wxShape* theShape = symbol->GetShape()->CreateNewCopy();
wxComboBox* comboBox = wxGetApp().GetPointSizeComboBox();
wxString str(comboBox->GetValue());
long pointSize;
str.ToLong( &pointSize );
wxFont* newFont = wxTheFontList->FindOrCreateFont(pointSize,
symbol->GetShape()->GetFont()->GetFamily(),
symbol->GetShape()->GetFont()->GetStyle(),
symbol->GetShape()->GetFont()->GetWeight(),
symbol->GetShape()->GetFont()->GetUnderlined(),
symbol->GetShape()->GetFont()->GetFaceName());
theShape->SetFont(newFont);
theShape->AssignNewIds();
theShape->SetX(x);
theShape->SetY(y);
csDiagramCommand* cmd = new csDiagramCommand(symbol->GetName(),
(csDiagramDocument *)GetView()->GetDocument(),
new csCommandState(ID_CS_ADD_SHAPE, theShape, NULL));
GetView()->GetDocument()->GetCommandProcessor()->Submit(cmd);
palette->SetSelection(PALETTE_ARROW);
}
}
示例14: VPROF_BUDGET
void CViewRender::Render( vrect_t *rect )
{
VPROF_BUDGET( "CViewRender::Render", "CViewRender::Render" );
m_bAllowViewAccess = true;
CUtlVector< vgui::Panel * > roots;
VGui_GetPanelList( roots );
// Stub out the material system if necessary.
CMatStubHandler matStub;
engine->EngineStats_BeginFrame();
// Assume normal vis
m_bForceNoVis = false;
float flViewportScale = mat_viewportscale.GetFloat();
vrect_t engineRect = *rect;
// The tool framework wants to adjust the entire 3d viewport, not the per-split screen one from below
ToolFramework_AdjustEngineViewport( engineRect.x, engineRect.y, engineRect.width, engineRect.height );
IterateRemoteSplitScreenViewSlots_Push( true );
FOR_EACH_VALID_SPLITSCREEN_PLAYER( hh )
{
ACTIVE_SPLITSCREEN_PLAYER_GUARD_VGUI( hh );
CViewSetup &view = GetView( hh );
float engineAspectRatio = engine->GetScreenAspectRatio( view.width, view.height );
Assert( s_DbgSetupOrigin[ hh ] == view.origin );
Assert( s_DbgSetupAngles[ hh ] == view.angles );
// Using this API gives us a chance to "inset" the 3d views as needed for splitscreen
int insetX, insetY;
VGui_GetEngineRenderBounds( hh, view.x, view.y, view.width, view.height, insetX, insetY );
float aspectRatio = engineAspectRatio * 0.75f; // / (4/3)
view.fov = ScaleFOVByWidthRatio( view.fov, aspectRatio );
view.fovViewmodel = ScaleFOVByWidthRatio( view.fovViewmodel, aspectRatio );
// Let the client mode hook stuff.
GetClientMode()->PreRender( &view );
GetClientMode()->AdjustEngineViewport( view.x, view.y, view.width, view.height );
view.width *= flViewportScale;
view.height *= flViewportScale;
if ( IsX360() )
{
// view must be compliant to resolve restrictions
view.width = AlignValue( view.width, GPU_RESOLVE_ALIGNMENT );
view.height = AlignValue( view.height, GPU_RESOLVE_ALIGNMENT );
}
view.m_flAspectRatio = ( engineAspectRatio > 0.0f ) ? engineAspectRatio : ( (float)view.width / (float)view.height );
int nClearFlags = VIEW_CLEAR_DEPTH | VIEW_CLEAR_STENCIL;
if ( gl_clear_randomcolor.GetBool() )
{
CMatRenderContextPtr pRenderContext( materials );
pRenderContext->ClearColor3ub( rand()%256, rand()%256, rand()%256 );
pRenderContext->ClearBuffers( true, false, false );
pRenderContext->Release();
}
else if ( gl_clear.GetBool() )
{
nClearFlags |= VIEW_CLEAR_COLOR;
}
// Determine if we should draw view model ( client mode override )
bool drawViewModel = GetClientMode()->ShouldDrawViewModel();
// Apply any player specific overrides
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
if ( pPlayer )
{
// Override view model if necessary
if ( !pPlayer->m_Local.m_bDrawViewmodel )
{
drawViewModel = false;
}
}
if ( cl_leveloverview.GetFloat() > 0 )
{
SetUpOverView();
nClearFlags |= VIEW_CLEAR_COLOR;
drawViewModel = false;
}
render->SetMainView( view.origin, view.angles );
int flags = (pPlayer == NULL) ? 0 : RENDERVIEW_DRAWHUD;
if ( drawViewModel )
{
flags |= RENDERVIEW_DRAWVIEWMODEL;
}
//.........这里部分代码省略.........
示例15: pRenderContext
void CViewRender::WriteSaveGameScreenshotOfSize( const char *pFilename, int width, int height )
{
CMatRenderContextPtr pRenderContext( materials );
pRenderContext->MatrixMode( MATERIAL_PROJECTION );
pRenderContext->PushMatrix();
pRenderContext->MatrixMode( MATERIAL_VIEW );
pRenderContext->PushMatrix();
g_bRenderingScreenshot = true;
m_bAllowViewAccess = true;
// Push back buffer on the stack with small viewport
pRenderContext->PushRenderTargetAndViewport( NULL, 0, 0, width, height );
// render out to the backbuffer
CViewSetup viewSetup = GetView();
viewSetup.x = 0;
viewSetup.y = 0;
viewSetup.width = width;
viewSetup.height = height;
viewSetup.fov = ScaleFOVByWidthRatio( GetView().fov, ( (float)width / (float)height ) / ( 4.0f / 3.0f ) );
viewSetup.m_bRenderToSubrectOfLargerScreen = true;
// draw out the scene
// Don't draw the HUD or the viewmodel
RenderView( viewSetup, viewSetup, VIEW_CLEAR_DEPTH | VIEW_CLEAR_COLOR, 0 );
// get the data from the backbuffer and save to disk
// bitmap bits
unsigned char *pImage = ( unsigned char * )malloc( width * 3 * height );
// Get Bits from the material system
pRenderContext->ReadPixels( 0, 0, width, height, pImage, IMAGE_FORMAT_RGB888 );
// allocate a buffer to write the tga into
int iMaxTGASize = 1024 + (width * height * 4);
void *pTGA = malloc( iMaxTGASize );
CUtlBuffer buffer( pTGA, iMaxTGASize );
if( !TGAWriter::WriteToBuffer( pImage, buffer, width, height, IMAGE_FORMAT_RGB888, IMAGE_FORMAT_RGB888 ) )
{
Error( "Couldn't write bitmap data snapshot.\n" );
}
free( pImage );
// async write to disk (this will take ownership of the memory)
char szPathedFileName[_MAX_PATH];
Q_snprintf( szPathedFileName, sizeof(szPathedFileName), "//MOD/%s", pFilename );
filesystem->AsyncWrite( szPathedFileName, buffer.Base(), buffer.TellPut(), true );
// restore our previous state
pRenderContext->PopRenderTargetAndViewport();
pRenderContext->MatrixMode( MATERIAL_PROJECTION );
pRenderContext->PopMatrix();
pRenderContext->MatrixMode( MATERIAL_VIEW );
pRenderContext->PopMatrix();
g_bRenderingScreenshot = false;
m_bAllowViewAccess = false;
}