Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

winviewoptsdlg.cpp File Reference

#include <windows.h>
#include <commctrl.h>
#include "winviewoptsdlg.h"
#include "..\celengine\render.h"
#include "res/resource.h"

Include dependency graph for winviewoptsdlg.cpp:

Go to the source code of this file.

Functions

static void dlgCheck (HWND hDlg, WORD item, uint32 flags, uint32 f)
static BOOL APIENTRY ViewOptionsProc (HWND hDlg, UINT message, UINT wParam, LONG lParam)

Variables

static const int DistanceSliderRange = 10000
static const float MaxDistanceLimit = 1.0e6f
static const float MinDistanceLimit = 1.0f


Function Documentation

static void dlgCheck HWND  hDlg,
WORD  item,
uint32  flags,
uint32  f
[static]
 

Definition at line 246 of file winviewoptsdlg.cpp.

00247 {
00248     SendDlgItemMessage(hDlg, item, BM_SETCHECK,
00249                        ((flags & f) != 0) ? BST_CHECKED : BST_UNCHECKED, 0);
00250 }

static BOOL APIENTRY ViewOptionsProc HWND  hDlg,
UINT  message,
UINT  wParam,
LONG  lParam
[static]
 

Definition at line 25 of file winviewoptsdlg.cpp.

References ViewOptionsDialog::appCore, BOOL(), DistanceSliderRange, CelestiaCore::getHudDetail(), Renderer::getLabelMode(), Renderer::getOrbitMask(), CelestiaCore::getRenderer(), Renderer::getRenderFlags(), IDC_ASTEROIDORBITS, IDC_COMETORBITS, IDC_EDIT_FILTER_DISTANCE, IDC_INFOTEXT0, IDC_INFOTEXT1, IDC_INFOTEXT2, IDC_LABELASTEROIDS, IDC_LABELCOMETS, IDC_LABELCONSTELLATIONS, IDC_LABELGALAXIES, IDC_LABELMOONS, IDC_LABELNEBULAE, IDC_LABELOPENCLUSTERS, IDC_LABELPLANETS, IDC_LABELSPACECRAFT, IDC_LABELSTARS, IDC_MOONORBITS, IDC_PLANETORBITS, IDC_SHOWATMOSPHERES, IDC_SHOWCELESTIALGRID, IDC_SHOWCLOUDS, IDC_SHOWCOMETTAILS, IDC_SHOWCONSTELLATIONBORDERS, IDC_SHOWCONSTELLATIONS, IDC_SHOWECLIPSESHADOWS, IDC_SHOWGALAXIES, IDC_SHOWMARKERS, IDC_SHOWNEBULAE, IDC_SHOWNIGHTSIDELIGHTS, IDC_SHOWORBITS, IDC_SHOWPLANETS, IDC_SHOWRINGSHADOWS, IDC_SHOWSTARS, IDC_SPACECRAFTORBITS, ViewOptionsDialog::initialHudDetail, ViewOptionsDialog::initialLabelMode, ViewOptionsDialog::initialRenderFlags, MaxDistanceLimit, ViewOptionsDialog::parent, pow(), RefreshItems(), ViewOptionsDialog::RestoreSettings(), ViewOptionsDialog::SetControls(), Renderer::setDistanceLimit(), CelestiaCore::setHudDetail(), Renderer::setLabelMode(), Renderer::setOrbitMask(), and Renderer::setRenderFlags().

Referenced by ViewOptionsDialog::ViewOptionsDialog().

00029 {
00030     ViewOptionsDialog* Dlg = reinterpret_cast<ViewOptionsDialog*>(GetWindowLong(hDlg, DWL_USER));
00031 
00032     switch (message)
00033     {
00034     case WM_INITDIALOG:
00035         {
00036             ViewOptionsDialog* Dlg = reinterpret_cast<ViewOptionsDialog*>(lParam);
00037             if (Dlg == NULL)
00038                 return EndDialog(hDlg, 0);
00039             SetWindowLong(hDlg, DWL_USER, lParam);
00040 
00041             //Read labelMode, renderFlags and hud detail
00042             Dlg->initialRenderFlags = Dlg->appCore->getRenderer()->getRenderFlags();
00043             Dlg->initialLabelMode = Dlg->appCore->getRenderer()->getLabelMode();
00044             Dlg->initialHudDetail = Dlg->appCore->getHudDetail();
00045 
00046             //Set dialog controls to reflect current label and render modes
00047             Dlg->SetControls(hDlg);
00048 
00049             return(TRUE);
00050         }
00051         break;
00052 
00053     case WM_COMMAND:
00054     {
00055         Renderer* renderer = Dlg->appCore->getRenderer();
00056         uint32 renderFlags = renderer->getRenderFlags();
00057         uint32 labelMode = renderer->getLabelMode();
00058         uint32 orbitMask = renderer->getOrbitMask();
00059 
00060         switch (LOWORD(wParam))
00061         {
00062         case IDC_SHOWATMOSPHERES:
00063             renderer->setRenderFlags(renderFlags ^ Renderer::ShowAtmospheres);
00064             break;
00065         case IDC_SHOWCELESTIALGRID:
00066             renderer->setRenderFlags(renderFlags ^ Renderer::ShowCelestialSphere);
00067             break;
00068         case IDC_SHOWCLOUDS:
00069             renderer->setRenderFlags(renderFlags ^ Renderer::ShowCloudMaps);
00070             break;
00071         case IDC_SHOWCONSTELLATIONS:
00072             renderer->setRenderFlags(renderFlags ^ Renderer::ShowDiagrams);
00073             break;
00074         case IDC_SHOWECLIPSESHADOWS:
00075             renderer->setRenderFlags(renderFlags ^ Renderer::ShowEclipseShadows);
00076             break;
00077         case IDC_SHOWGALAXIES:
00078             renderer->setRenderFlags(renderFlags ^ Renderer::ShowGalaxies);
00079             break;
00080         case IDC_SHOWNEBULAE:
00081             renderer->setRenderFlags(renderFlags ^ Renderer::ShowNebulae);
00082             break;
00083         case IDC_SHOWNIGHTSIDELIGHTS:
00084             renderer->setRenderFlags(renderFlags ^ Renderer::ShowNightMaps);
00085             break;
00086         case IDC_SHOWORBITS:
00087             renderer->setRenderFlags(renderFlags ^ Renderer::ShowOrbits);
00088             break;
00089         case IDC_PLANETORBITS:
00090             renderer->setOrbitMask(orbitMask ^ Body::Planet);
00091             break;
00092         case IDC_MOONORBITS:
00093             renderer->setOrbitMask(orbitMask ^ Body::Moon);
00094             break;
00095         case IDC_ASTEROIDORBITS:
00096             renderer->setOrbitMask(orbitMask ^ Body::Asteroid);
00097             break;
00098         case IDC_COMETORBITS:
00099             renderer->setOrbitMask(orbitMask ^ Body::Comet);
00100             break;
00101         case IDC_SPACECRAFTORBITS:
00102             renderer->setOrbitMask(orbitMask ^ Body::Spacecraft);
00103             break;
00104         case IDC_SHOWPLANETS:
00105             renderer->setRenderFlags(renderFlags ^ Renderer::ShowPlanets);
00106             break;
00107         case IDC_SHOWSTARS:
00108             renderer->setRenderFlags(renderFlags ^ Renderer::ShowStars);
00109             break;
00110         case IDC_SHOWCONSTELLATIONBORDERS:
00111             renderer->setRenderFlags(renderFlags ^ Renderer::ShowBoundaries);
00112             break;
00113         case IDC_SHOWRINGSHADOWS:
00114             renderer->setRenderFlags(renderFlags ^ Renderer::ShowRingShadows);
00115             break;
00116         case IDC_SHOWCOMETTAILS:
00117             renderer->setRenderFlags(renderFlags ^ Renderer::ShowCometTails);
00118             break;
00119         case IDC_SHOWMARKERS:
00120             renderer->setRenderFlags(renderFlags ^ Renderer::ShowMarkers);
00121             break;
00122         case IDC_LABELCONSTELLATIONS:
00123             renderer->setLabelMode(labelMode ^ Renderer::ConstellationLabels);
00124             break;
00125         case IDC_LABELGALAXIES:
00126             renderer->setLabelMode(labelMode ^ Renderer::GalaxyLabels);
00127             break;
00128                 case IDC_LABELNEBULAE:
00129                         renderer->setLabelMode(labelMode ^ Renderer::NebulaLabels);
00130                         break;
00131                 case IDC_LABELOPENCLUSTERS:
00132                         renderer->setLabelMode(labelMode ^ Renderer::OpenClusterLabels);
00133                         break;
00134         case IDC_LABELPLANETS:
00135             renderer->setLabelMode(labelMode ^ Renderer::PlanetLabels);
00136             break;
00137         case IDC_LABELMOONS:
00138             renderer->setLabelMode(labelMode ^ Renderer::MoonLabels);
00139             break;
00140         case IDC_LABELSTARS:
00141             renderer->setLabelMode(labelMode ^ Renderer::StarLabels);
00142             break;
00143         case IDC_LABELASTEROIDS:
00144             renderer->setLabelMode(labelMode ^ Renderer::AsteroidLabels);
00145             break;
00146         case IDC_LABELCOMETS:
00147             renderer->setLabelMode(labelMode ^ Renderer::CometLabels);
00148             break;
00149         case IDC_LABELSPACECRAFT:
00150             renderer->setLabelMode(labelMode ^ Renderer::SpacecraftLabels);
00151             break;
00152         case IDC_INFOTEXT0:
00153             Dlg->appCore->setHudDetail(0);
00154             break;
00155         case IDC_INFOTEXT1:
00156             Dlg->appCore->setHudDetail(1);
00157             break;
00158         case IDC_INFOTEXT2:
00159             Dlg->appCore->setHudDetail(2);
00160             break;
00161         case IDOK:
00162             if (Dlg != NULL && Dlg->parent != NULL)
00163             {
00164                 SendMessage(Dlg->parent, WM_COMMAND, IDCLOSE,
00165                             reinterpret_cast<LPARAM>(Dlg));
00166             }
00167             EndDialog(hDlg, 0);
00168             return TRUE;
00169         case IDCANCEL:
00170             if (Dlg != NULL && Dlg->parent != NULL)
00171             {
00172                 // Reset render flags, label mode, and hud detail to
00173                 // initial values
00174                 Dlg->RestoreSettings(hDlg);
00175                 SendMessage(Dlg->parent, WM_COMMAND, IDCLOSE,
00176                             reinterpret_cast<LPARAM>(Dlg));
00177             }
00178             EndDialog(hDlg, 0);
00179             return TRUE;
00180         }
00181         break;
00182     }
00183 
00184     case WM_DESTROY:
00185         if (Dlg != NULL && Dlg->parent != NULL)
00186         {
00187             SendMessage(Dlg->parent, WM_COMMAND, IDCLOSE,
00188                         reinterpret_cast<LPARAM>(Dlg));
00189         }
00190         return TRUE;
00191 
00192     case WM_HSCROLL:
00193         {
00194             WORD sbValue = LOWORD(wParam);
00195             switch (sbValue)
00196             {
00197             case SB_THUMBTRACK:
00198                 // case SB_ENDSCROLL:
00199                 {
00200                     char val[16];
00201                     HWND hwnd = GetDlgItem(hDlg, IDC_EDIT_FILTER_DISTANCE);
00202                     float logDistanceLimit = (float) HIWORD(wParam) /
00203                         (float) DistanceSliderRange;
00204                     float distanceLimit = (float) pow(MaxDistanceLimit, 
00205                                                  logDistanceLimit);
00206                     sprintf(val, "%d", (int) distanceLimit);
00207                     SetWindowText(hwnd, val);
00208                     Dlg->appCore->getRenderer()->setDistanceLimit(distanceLimit);
00209                     break;
00210                 }
00211 
00212             default:
00213                 cout << "Slider msg: " << sbValue << '\n';
00214                 break;
00215 #if 0
00216             case SB_THUMBPOSITION:
00217                 {
00218                     browser->nStars = (int)HIWORD(wParam);
00219                     RefreshItems(hDlg, browser);
00220                     break;
00221                 }
00222 #endif
00223             }
00224         }
00225     }
00226 
00227     return FALSE;
00228 }


Variable Documentation

const int DistanceSliderRange = 10000 [static]
 

Definition at line 21 of file winviewoptsdlg.cpp.

Referenced by ViewOptionsDialog::SetControls(), and ViewOptionsProc().

const float MaxDistanceLimit = 1.0e6f [static]
 

Definition at line 23 of file winviewoptsdlg.cpp.

Referenced by ViewOptionsDialog::SetControls(), and ViewOptionsProc().

const float MinDistanceLimit = 1.0f [static]
 

Definition at line 22 of file winviewoptsdlg.cpp.


Generated on Sat Jan 14 22:32:41 2006 for Celestia by  doxygen 1.4.1