123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- /* Copyright (c) 2002-2012 Croteam Ltd.
- This program is free software; you can redistribute it and/or modify
- it under the terms of version 2 of the GNU General Public License as published by
- the Free Software Foundation
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
- // DlgRenderingPreferences.cpp : implementation file
- //
- #include "stdafx.h"
- #include "DlgRenderingPreferences.h"
- #ifdef _DEBUG
- #undef new
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CDlgRenderingPreferences dialog
- CDlgRenderingPreferences::CDlgRenderingPreferences( INDEX iBuffer, CWnd* pParent /*=NULL*/)
- : CDialog(CDlgRenderingPreferences::IDD, pParent)
- {
- m_iBuffer = iBuffer;
- //{{AFX_DATA_INIT(CDlgRenderingPreferences)
- m_bBoundingBox = FALSE;
- m_bHidenLines = FALSE;
- m_bShadows = FALSE;
- m_bWireFrame = FALSE;
- m_fRenderingRange = 0.0f;
- m_bAutoRenderingRange = FALSE;
- m_bRenderEditorModels = FALSE;
- m_bUseTextureForBcg = FALSE;
- m_bRenderFieldBrushes = FALSE;
- m_bRenderFog = FALSE;
- m_bRenderHaze = FALSE;
- m_bRenderMirrors = FALSE;
- m_strBcgTexture = _T("");
- m_fFarClipPlane = 0.0f;
- m_bApplyFarClipInIsometricProjection = FALSE;
- //}}AFX_DATA_INIT
- m_VertexColors.SetPickerType( CColoredButton::PT_MFC);
- m_EdgesColors.SetPickerType( CColoredButton::PT_MFC);
- m_PolygonColors.SetPickerType( CColoredButton::PT_MFC);
- m_PaperColor.SetPickerType( CColoredButton::PT_MFC);
- m_SelectionColor.SetPickerType( CColoredButton::PT_MFC);
- m_GridColor.SetPickerType( CColoredButton::PT_MFC);
- }
- void CDlgRenderingPreferences::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- CModelRenderPrefs &pmrpPrefs = theApp.m_vpViewPrefs[ m_iBuffer].m_mrpModelRenderPrefs;
- CWorldRenderPrefs &pwrpPrefs = theApp.m_vpViewPrefs[ m_iBuffer].m_wrpWorldRenderPrefs;
- // if dialog is recieving data
- if( (pDX->m_bSaveAndValidate == FALSE) && IsWindow( m_hWnd) &&
- IsWindow( m_VertexFillType.m_hWnd) &&
- IsWindow( m_EdgesFillType.m_hWnd) &&
- IsWindow( m_PolygonFillType.m_hWnd) &&
- IsWindow( m_TextureFillType.m_hWnd) )
- {
- // world rendering preferences
- m_VertexColors.SetColor( pwrpPrefs.GetVerticesInkColor());
- m_EdgesColors.SetColor( pwrpPrefs.GetEdgesInkColor());
- m_PolygonColors.SetColor( pwrpPrefs.GetPolygonsInkColor());
- m_PaperColor.SetColor( theApp.m_vpViewPrefs[ m_iBuffer].m_PaperColor);
- m_SelectionColor.SetColor( theApp.m_vpViewPrefs[ m_iBuffer].m_SelectionColor);
- m_GridColor.SetColor( theApp.m_vpViewPrefs[ m_iBuffer].m_GridColor);
- m_fFarClipPlane=pwrpPrefs.wrp_fFarClipPlane;
- m_bApplyFarClipInIsometricProjection=pwrpPrefs.wrp_bApplyFarClipPlaneInIsometricProjection;
-
- m_strBcgTexture = CTFileName(CTString( theApp.m_vpViewPrefs[ m_iBuffer].m_achrBcgPicture)).FileName();
- // get render editor models flag
- m_bRenderEditorModels = pwrpPrefs.IsEditorModelsOn();
- // get render field brushes flag
- m_bRenderFieldBrushes = pwrpPrefs.IsFieldBrushesOn();
- // get use texture for background flag
- m_bUseTextureForBcg = pwrpPrefs.IsBackgroundTextureOn();
- m_bRenderMirrors = pwrpPrefs.IsMirrorsOn();
- m_bRenderFog = pwrpPrefs.IsFogOn();
- m_bRenderHaze = pwrpPrefs.IsHazeOn();
- // get auto rendering range flag
- m_bAutoRenderingRange = theApp.m_vpViewPrefs[ m_iBuffer].m_bAutoRenderingRange;
- // get rendering range
- m_fRenderingRange = theApp.m_vpViewPrefs[ m_iBuffer].m_fRenderingRange;
- // enable/disable edit render range control depending on auto range flag
- UpdateEditRangeControl();
- // fill values for vertice's combo box
- m_VertexFillType.ResetContent();
- m_VertexFillType.AddString( L"No vertices");
- m_VertexFillType.AddString( L"Vertices ink");
- m_VertexFillType.AddString( L"Polygon color");
- m_VertexFillType.AddString( L"Sector color");
- // fill values for edges's combo box
- m_EdgesFillType.ResetContent();
- m_EdgesFillType.AddString( L"No edges");
- m_EdgesFillType.AddString( L"Edges ink");
- m_EdgesFillType.AddString( L"Polygon color");
- m_EdgesFillType.AddString( L"Sector color");
- // fill values for polygons's combo box
- m_PolygonFillType.ResetContent();
- m_PolygonFillType.AddString( L"No polygons");
- m_PolygonFillType.AddString( L"Polygons ink");
- m_PolygonFillType.AddString( L"Polygon color");
- m_PolygonFillType.AddString( L"Sector color");
- m_PolygonFillType.AddString( L"Texture");
- // fill values for model's texture combo
- m_TextureFillType.ResetContent();
- m_TextureFillType.AddString( L"No fill");
- m_TextureFillType.AddString( L"White color");
- m_TextureFillType.AddString( L"Surface colors");
- m_TextureFillType.AddString( L"On colors");
- m_TextureFillType.AddString( L"Off colors");
- m_TextureFillType.AddString( L"Texture");
- // fill values for flare FX combo
- m_comboFlareFX.ResetContent();
- m_comboFlareFX.AddString( L"None");
- m_comboFlareFX.AddString( L"Single flare");
- m_comboFlareFX.AddString( L"Reflections");
- m_comboFlareFX.AddString( L"Reflections and glare");
-
- INDEX iFillType;
- // set current fill type to vertices combo box
- iFillType = pwrpPrefs.GetVerticesFillType();
- m_VertexFillType.SetCurSel( iFillType);
- // set current fill type to edges combo box
- iFillType = pwrpPrefs.GetEdgesFillType();
- m_EdgesFillType.SetCurSel( iFillType);
- // set current fill type to polygons combo box
- iFillType = pwrpPrefs.GetPolygonsFillType();
- m_PolygonFillType.SetCurSel( iFillType);
- // set currently selected modeler's texture rendering type
- ULONG rtRenderType = pmrpPrefs.GetRenderType();
- iFillType = 0;
- if( (rtRenderType & RT_NO_POLYGON_FILL) != 0) iFillType = 0;
- else if( (rtRenderType & RT_WHITE_TEXTURE) != 0) iFillType = 1;
- else if( (rtRenderType & RT_SURFACE_COLORS) != 0) iFillType = 2;
- else if( (rtRenderType & RT_ON_COLORS) != 0) iFillType = 3;
- else if( (rtRenderType & RT_OFF_COLORS) != 0) iFillType = 4;
- else if( (rtRenderType & RT_TEXTURE) != 0) iFillType = 5;
- m_TextureFillType.SetCurSel( iFillType);
- enum CWorldRenderPrefs::LensFlaresType lftFlareFX = pwrpPrefs.GetLensFlares();
- m_comboFlareFX.SetCurSel( (INDEX) lftFlareFX);
- // set model rendering flags
- m_bBoundingBox = pmrpPrefs.BBoxAllVisible();
- m_bHidenLines = pmrpPrefs.HiddenLines();
- m_bShadows = pmrpPrefs.GetShadowQuality() == 0;
- m_bWireFrame = pmrpPrefs.WireOn();
- }
- //{{AFX_DATA_MAP(CDlgRenderingPreferences)
- DDX_Control(pDX, IDC_FLARE_FX, m_comboFlareFX);
- DDX_Control(pDX, IDC_SELECTION_COLOR, m_SelectionColor);
- DDX_Control(pDX, IDC_GRID_COLOR, m_GridColor);
- DDX_Control(pDX, IDC_PAPER_COLOR, m_PaperColor);
- DDX_Control(pDX, IDC_TEXTURE_FILL_TYPE, m_TextureFillType);
- DDX_Control(pDX, IDC_EDGES_FILL_TYPE, m_EdgesFillType);
- DDX_Control(pDX, IDC_POLYGON_FILL_TYPE, m_PolygonFillType);
- DDX_Control(pDX, IDC_VERTEX_FILL_TYPE, m_VertexFillType);
- DDX_Control(pDX, IDC_VERTEX_COLORS, m_VertexColors);
- DDX_Control(pDX, IDC_POLYGON_COLORS, m_PolygonColors);
- DDX_Control(pDX, IDC_EDGES_COLORS, m_EdgesColors);
- DDX_Check(pDX, IDC_BBOX, m_bBoundingBox);
- DDX_Check(pDX, IDC_HIDEN_LINES, m_bHidenLines);
- DDX_Check(pDX, IDC_SHADOWS, m_bShadows);
- DDX_Check(pDX, IDC_WIRE_FRAME, m_bWireFrame);
- DDX_Text(pDX, IDC_RENDERING_RANGE, m_fRenderingRange);
- DDV_MinMaxFloat(pDX, m_fRenderingRange, 1.f, 10000.f);
- DDX_Check(pDX, IDC_AUTO_RENDERING_RANGE, m_bAutoRenderingRange);
- DDX_Check(pDX, IDC_RENDER_EDITOR_MODELS, m_bRenderEditorModels);
- DDX_Check(pDX, IDC_USE_TEXTURE_FOR_BCG, m_bUseTextureForBcg);
- DDX_Check(pDX, IDC_RENDER_FIELDS, m_bRenderFieldBrushes);
- DDX_Check(pDX, IDC_RENDER_FOG, m_bRenderFog);
- DDX_Check(pDX, IDC_RENDER_HAZE, m_bRenderHaze);
- DDX_Check(pDX, IDC_RENDER_MIRRORS, m_bRenderMirrors);
- DDX_Text(pDX, IDC_BCG_PICTURE_T, m_strBcgTexture);
- DDX_Text(pDX, IDC_FAR_CLIP_PLANE, m_fFarClipPlane);
- DDV_MinMaxFloat(pDX, m_fFarClipPlane, -1.f, 1.e+007f);
- DDX_Check(pDX, IDC_APPLY_CLIP_FOR_ISOMETRIC, m_bApplyFarClipInIsometricProjection);
- //}}AFX_DATA_MAP
- // if dialog is giving data
- if( pDX->m_bSaveAndValidate != FALSE)
- {
- // set auto rendering range flag
- theApp.m_vpViewPrefs[ m_iBuffer].m_bAutoRenderingRange = m_bAutoRenderingRange;
- // set rendering range
- theApp.m_vpViewPrefs[ m_iBuffer].m_fRenderingRange = m_fRenderingRange;
- // set drawing of editor models on or off
- pwrpPrefs.SetEditorModelsOn( m_bRenderEditorModels);
- // set render field brushes flag
- pwrpPrefs.SetFieldBrushesOn( m_bRenderFieldBrushes);
- // set use texture for background flag
- pwrpPrefs.SetBackgroundTextureOn( m_bUseTextureForBcg);
- pwrpPrefs.SetMirrorsOn( m_bRenderMirrors);
- pwrpPrefs.SetFogOn( m_bRenderFog);
- pwrpPrefs.SetHazeOn( m_bRenderHaze);
- // enable/disable edit render range control depending on auto range flag
- UpdateEditRangeControl();
- // set colors
- pwrpPrefs.SetVerticesInkColor( m_VertexColors.GetColor());
- pwrpPrefs.SetEdgesInkColor( m_EdgesColors.GetColor());
- pwrpPrefs.SetPolygonsInkColor( m_PolygonColors.GetColor());
- theApp.m_vpViewPrefs[ m_iBuffer].m_PaperColor = m_PaperColor.GetColor();
- theApp.m_vpViewPrefs[ m_iBuffer].m_GridColor = m_GridColor.GetColor();
- theApp.m_vpViewPrefs[ m_iBuffer].m_SelectionColor = m_SelectionColor.GetColor();
- pwrpPrefs.wrp_fFarClipPlane=m_fFarClipPlane;
- pwrpPrefs.wrp_bApplyFarClipPlaneInIsometricProjection=m_bApplyFarClipInIsometricProjection;
- enum CWorldRenderPrefs::FillType ftFillType;
- // get current fill type from vertices combo box
- ftFillType = (enum CWorldRenderPrefs::FillType) m_VertexFillType.GetCurSel();
- pwrpPrefs.SetVerticesFillType( ftFillType);
- // get current fill type from edges combo box
- ftFillType = (enum CWorldRenderPrefs::FillType) m_EdgesFillType.GetCurSel();
- pwrpPrefs.SetEdgesFillType( ftFillType);
- // get current fill type from polygons combo box
- ftFillType = (enum CWorldRenderPrefs::FillType) m_PolygonFillType.GetCurSel();
- pwrpPrefs.SetPolygonsFillType( ftFillType);
- enum CWorldRenderPrefs::LensFlaresType lftFlares;
- // get type for rendering flares
- lftFlares = (enum CWorldRenderPrefs::LensFlaresType) m_comboFlareFX.GetCurSel();
- pwrpPrefs.SetLensFlaresType( lftFlares);
- // get current model's texturizing type from model's texture combo box
- ULONG ulMdlFillType;
- ulMdlFillType = m_TextureFillType.GetCurSel();
- switch( ulMdlFillType)
- {
- case 0: {
- pmrpPrefs.SetRenderType( RT_NO_POLYGON_FILL);
- break;
- }
- case 1: {
- pmrpPrefs.SetRenderType( RT_WHITE_TEXTURE);
- break;
- }
- case 2: {
- pmrpPrefs.SetRenderType( RT_SURFACE_COLORS);
- break;
- }
- case 3: {
- pmrpPrefs.SetRenderType( RT_ON_COLORS);
- break;
- }
- case 4: {
- pmrpPrefs.SetRenderType( RT_OFF_COLORS);
- break;
- }
- case 5: {
- pmrpPrefs.SetRenderType( RT_TEXTURE);
- break;
- }
- default: {
- ASSERTALWAYS( "Invalid selection found in model's texture combo box");
- }
- }
- // get rest of model's rendering preferences
- pmrpPrefs.SetWire( m_bWireFrame);
- pmrpPrefs.SetHiddenLines( m_bHidenLines);
- pmrpPrefs.BBoxAllShow( m_bBoundingBox);
- if( m_bShadows) {
- pmrpPrefs.SetShadowQuality( 0);
- } else {
- pmrpPrefs.SetShadowQuality( 255);
- }
- }
- }
- BEGIN_MESSAGE_MAP(CDlgRenderingPreferences, CDialog)
- //{{AFX_MSG_MAP(CDlgRenderingPreferences)
- ON_BN_CLICKED(ID_LOAD_PREFERENCES, OnLoadPreferences)
- ON_BN_CLICKED(ID_SAVE_PREFERENCES, OnSavePreferences)
- ON_BN_CLICKED(IDC_AUTO_RENDERING_RANGE, OnAutoRenderingRange)
- ON_BN_CLICKED(IDC_BROWSE_BCG_PICTURE, OnBrowseBcgPicture)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CDlgRenderingPreferences message handlers
- BOOL CDlgRenderingPreferences::OnInitDialog()
- {
- CDialog::OnInitDialog();
- CModelRenderPrefs &pmrpPrefs = theApp.m_vpViewPrefs[ m_iBuffer].m_mrpModelRenderPrefs;
- CWorldRenderPrefs &pwrpPrefs = theApp.m_vpViewPrefs[ m_iBuffer].m_wrpWorldRenderPrefs;
- // we will set window's name so we know on which buffer we are working on
- char chrWndTitle[ 64];
- // create new name
- if( m_iBuffer!=10)
- {
- sprintf( chrWndTitle, "Change rendering preferences of buffer %d.", m_iBuffer+1);
- }
- else
- {
- sprintf( chrWndTitle, "Change rendering preferences");
- }
- // set it as window new title
- SetWindowText( CString(chrWndTitle));
-
- // set dialog data
- UpdateData( FALSE);
- return TRUE; // return TRUE unless you set the focus to a control
- // EXCEPTION: OCX Property Pages should return FALSE
- }
- void CDlgRenderingPreferences::OnLoadPreferences()
- {
- // load world and model's rendering preferences
- theApp.LoadRenderingPreferences();
- // set dialog data
- UpdateData( FALSE);
- }
- void CDlgRenderingPreferences::OnSavePreferences()
- {
- // get data from dialog
- UpdateData( TRUE);
- // load world and model's rendering preferences
- theApp.SaveRenderingPreferences();
- }
- void CDlgRenderingPreferences::UpdateEditRangeControl()
- {
- // get edit rendering range control
- CWnd *pWnd = GetDlgItem( IDC_RENDERING_RANGE);
- // must exists
- ASSERT( pWnd != NULL);
- // if rendering range flag is on
- if( m_bAutoRenderingRange)
- {
- // disable edit rendering range control
- pWnd->EnableWindow( FALSE);
- }
- else
- {
- // otherwise enable it
- pWnd->EnableWindow( TRUE);
- }
- }
- void CDlgRenderingPreferences::OnAutoRenderingRange()
- {
- m_bAutoRenderingRange = !m_bAutoRenderingRange;
- // set dialog data
- UpdateData( TRUE);
- // enable/disable edit range control
- UpdateEditRangeControl();
- }
- void CDlgRenderingPreferences::OnBrowseBcgPicture()
- {
- CTFileName fnBcgPicture = _EngineGUI.FileRequester( "Select background texture",
- "Texture (*.tex)\0*.tex\0" FILTER_TEX FILTER_END, "Background textures", "");
- if( fnBcgPicture == "") return;
- sprintf( theApp.m_vpViewPrefs[ m_iBuffer].m_achrBcgPicture, "%s", fnBcgPicture);
- m_strBcgTexture = fnBcgPicture.FileName();
- UpdateData( FALSE);
- }
|