Skip to content

Commit b5997c0

Browse files
Marco Bernasocchipka
authored andcommittedJul 5, 2011
Completed Stereo settings support added reset stereo settings to defaults values button
1 parent cb65937 commit b5997c0

File tree

3 files changed

+203
-98
lines changed

3 files changed

+203
-98
lines changed
 

‎src/plugins/globe/globe_plugin_dialog.cpp

Lines changed: 54 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ QgsGlobePluginDialog::QgsGlobePluginDialog( QWidget* parent, Qt::WFlags fl )
3939
: QDialog( parent, fl )
4040
{
4141
setupUi( this );
42-
getStereoConfig(); //default values from OSG
43-
loadStereoConfig();
42+
loadStereoConfig(); //values from settings, default values from OSG
4443
setStereoConfig(); //overwrite with values from QSettings
4544
}
4645

@@ -170,9 +169,18 @@ void QgsGlobePluginDialog::on_buttonBox_rejected()
170169
reject();
171170
}
172171

173-
void QgsGlobePluginDialog::on_comboStereoMode_currentIndexChanged( QString mode )
172+
void QgsGlobePluginDialog::on_resetDefaults_clicked()
174173
{
175-
//showMessageBox("index_changed " + stereoMode);
174+
//http://www.openscenegraph.org/projects/osg/wiki/Support/UserGuides/StereoSettings
175+
comboStereoMode->setCurrentIndex( comboStereoMode->findText("OFF") );
176+
screenDistance->setValue( 0.5 );
177+
screenHeight->setValue( 0.26 );
178+
screenWidth->setValue( 0.325 );
179+
eyeSeparation->setValue( 0.06);
180+
splitStereoHorizontalSeparation->setValue( 42 );
181+
splitStereoVerticalSeparation->setValue( 42 );
182+
splitStereoHorizontalEyeMapping->setCurrentIndex( 0 );
183+
splitStereoVerticalEyeMapping->setCurrentIndex( 0 );
176184
}
177185

178186
void QgsGlobePluginDialog::showMessageBox( QString text )
@@ -182,19 +190,36 @@ void QgsGlobePluginDialog::showMessageBox( QString text )
182190
msgBox.exec();
183191
}
184192

185-
void QgsGlobePluginDialog::getStereoConfig()
193+
void QgsGlobePluginDialog::loadStereoConfig()
186194
{
187-
//stereoMode ignored
188-
189-
screenDistance->setValue( osg::DisplaySettings::instance()->getScreenDistance() );
195+
//TODO: is it ok to default to OFF? or should we implement all of the STEREO_MODES
196+
//and a enable stereo switch?
197+
comboStereoMode->setCurrentIndex( comboStereoMode->findText( settings.value( "/Plugin-Globe/stereoMode",
198+
"OFF" ).toString() ) );
199+
screenDistance->setValue( settings.value( "/Plugin-Globe/screenDistance",
200+
osg::DisplaySettings::instance()->getScreenDistance() ).toDouble() );
201+
screenWidth->setValue( settings.value( "/Plugin-Globe/screenWidth",
202+
osg::DisplaySettings::instance()->getScreenWidth() ).toDouble() );
203+
screenHeight->setValue( settings.value( "/Plugin-Globe/screenHeight",
204+
osg::DisplaySettings::instance()->getScreenHeight() ).toDouble() );
205+
eyeSeparation->setValue( settings.value( "/Plugin-Globe/eyeSeparation",
206+
osg::DisplaySettings::instance()->getEyeSeparation() ).toDouble() );
207+
splitStereoHorizontalSeparation->setValue( settings.value( "/Plugin-Globe/splitStereoHorizontalSeparation",
208+
osg::DisplaySettings::instance()->getSplitStereoHorizontalSeparation() ).toInt() );
209+
splitStereoVerticalSeparation->setValue( settings.value( "/Plugin-Globe/splitStereoVerticalSeparation",
210+
osg::DisplaySettings::instance()->getSplitStereoVerticalSeparation() ).toInt() );
211+
splitStereoHorizontalEyeMapping->setCurrentIndex( settings.value( "/Plugin-Globe/splitStereoHorizontalEyeMapping",
212+
osg::DisplaySettings::instance()->getSplitStereoHorizontalEyeMapping() ).toInt() );
213+
splitStereoVerticalEyeMapping->setCurrentIndex( settings.value( "/Plugin-Globe/splitStereoVerticalEyeMapping",
214+
osg::DisplaySettings::instance()->getSplitStereoVerticalEyeMapping() ).toInt() );
190215
}
191216

192217
void QgsGlobePluginDialog::setStereoConfig()
193218
{
194-
//http://www.openscenegraph.org/projects/osg/wiki/Support/UserGuides/StereoConfig
219+
//http://www.openscenegraph.org/projects/osg/wiki/Support/UserGuides/StereoSettings
195220
//http://www.openscenegraph.org/documentation/OpenSceneGraphReferenceDocs/a00181.html
196221

197-
QString stereoMode = comboStereoMode->currentText();
222+
QString stereoMode = comboStereoMode->currentText() ;
198223
if("OFF" == stereoMode)
199224
{
200225
osg::DisplaySettings::instance()->setStereo( false );
@@ -227,24 +252,30 @@ void QgsGlobePluginDialog::setStereoConfig()
227252
msgBox.exec();
228253
}
229254
}
230-
255+
256+
//SETTING THE VALUES IN THE OEGearth instance
231257
osg::DisplaySettings::instance()->setScreenDistance( screenDistance->value() );
232-
}
233-
234-
void QgsGlobePluginDialog::loadStereoConfig()
235-
{
236-
if ( settings.contains( "/Plugin-Globe/stereoMode" ) )
237-
{
238-
comboStereoMode->setCurrentIndex( comboStereoMode->findText( settings.value( "/Plugin-Globe/stereoMode" ).toString() ) );
239-
}
240-
if ( settings.contains( "/Plugin-Globe/screenDistance" ) )
241-
{
242-
screenDistance->setValue( settings.value( "/Plugin-Globe/screenDistance" ).toDouble() );
243-
}
258+
osg::DisplaySettings::instance()->setScreenWidth( screenWidth->value() );
259+
osg::DisplaySettings::instance()->setScreenHeight( screenHeight->value() );
260+
osg::DisplaySettings::instance()->setEyeSeparation( eyeSeparation->value() );
261+
osg::DisplaySettings::instance()->setSplitStereoHorizontalSeparation( splitStereoHorizontalSeparation->value() );
262+
osg::DisplaySettings::instance()->setSplitStereoVerticalSeparation( splitStereoVerticalSeparation->value() );
263+
osg::DisplaySettings::instance()->setSplitStereoHorizontalEyeMapping(
264+
(osg::DisplaySettings::SplitStereoHorizontalEyeMapping) splitStereoHorizontalEyeMapping->currentIndex() );
265+
osg::DisplaySettings::instance()->setSplitStereoVerticalEyeMapping(
266+
(osg::DisplaySettings::SplitStereoVerticalEyeMapping) splitStereoVerticalEyeMapping->currentIndex() );
267+
244268
}
245269

246270
void QgsGlobePluginDialog::saveStereoConfig()
247271
{
248272
settings.setValue( "/Plugin-Globe/stereoMode", comboStereoMode->currentText() );
249273
settings.setValue( "/Plugin-Globe/screenDistance", screenDistance->value() );
274+
settings.setValue( "/Plugin-Globe/screenWidth", screenWidth->value() );
275+
settings.setValue( "/Plugin-Globe/screenHeight", screenHeight->value() );
276+
settings.setValue( "/Plugin-Globe/eyeSeparation", eyeSeparation->value() );
277+
settings.setValue( "/Plugin-Globe/splitStereoHorizontalSeparation", splitStereoHorizontalSeparation->value() );
278+
settings.setValue( "/Plugin-Globe/splitStereoVerticalSeparation", splitStereoVerticalSeparation->value() );
279+
settings.setValue( "/Plugin-Globe/splitStereoHorizontalEyeMapping", splitStereoHorizontalEyeMapping->currentIndex() );
280+
settings.setValue( "/Plugin-Globe/splitStereoVerticalEyeMapping", splitStereoVerticalEyeMapping->currentIndex() );
250281
}

‎src/plugins/globe/globe_plugin_dialog.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,17 @@ class QgsGlobePluginDialog:public QDialog, private Ui::QgsGlobePluginDialogGuiBa
3838
void restartGlobe();
3939
bool globeRunning();
4040
void showMessageBox( QString text);
41-
//! Init dialog from osg/DisplaySettings
42-
void getStereoConfig();
4341
//! Set osg/DisplaySettings
4442
void setStereoConfig();
45-
//! Init dialog from settings
43+
//! Init dialog from settings using defaults from osg/DisplaySettings
4644
void loadStereoConfig();
4745
//! Save settings
4846
void saveStereoConfig();
4947

5048
private slots:
5149
void on_buttonBox_accepted();
5250
void on_buttonBox_rejected();
53-
void on_comboStereoMode_currentIndexChanged( QString mode );
51+
void on_resetDefaults_clicked();
5452
};
5553

5654
#endif // QGIS_GLOBE_PLUGIN_DIALOG_H

‎src/plugins/globe/globe_plugin_dialog_guibase.ui

Lines changed: 147 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>491</width>
10-
<height>359</height>
9+
<width>547</width>
10+
<height>433</height>
1111
</rect>
1212
</property>
1313
<property name="sizePolicy">
@@ -34,7 +34,7 @@
3434
<item>
3535
<widget class="QTabWidget" name="tabWidget">
3636
<property name="currentIndex">
37-
<number>0</number>
37+
<number>1</number>
3838
</property>
3939
<widget class="QWidget" name="elevation">
4040
<attribute name="title">
@@ -165,23 +165,130 @@
165165
</attribute>
166166
<layout class="QGridLayout" name="gridLayout">
167167
<item row="0" column="0">
168-
<widget class="QLabel" name="label_2">
168+
<widget class="QLabel" name="comboStereoModeLabel">
169169
<property name="text">
170170
<string>Stereo Mode</string>
171171
</property>
172172
</widget>
173173
</item>
174-
<item row="0" column="1" colspan="2">
175-
<widget class="QComboBox" name="comboStereoMode">
176-
<property name="minimumSize">
177-
<size>
178-
<width>300</width>
179-
<height>25</height>
180-
</size>
174+
<item row="4" column="0">
175+
<widget class="QLabel" name="screenDistanceLabel">
176+
<property name="text">
177+
<string>Screen distance (m)</string>
178+
</property>
179+
<property name="buddy">
180+
<cstring>screenDistance</cstring>
181+
</property>
182+
</widget>
183+
</item>
184+
<item row="4" column="2">
185+
<widget class="QDoubleSpinBox" name="screenDistance">
186+
<property name="decimals">
187+
<number>3</number>
188+
</property>
189+
<property name="singleStep">
190+
<double>0.100000000000000</double>
191+
</property>
192+
</widget>
193+
</item>
194+
<item row="7" column="0">
195+
<widget class="QLabel" name="screenWidthLabel">
196+
<property name="text">
197+
<string>Screen width (m)</string>
198+
</property>
199+
</widget>
200+
</item>
201+
<item row="7" column="2">
202+
<widget class="QDoubleSpinBox" name="screenWidth">
203+
<property name="decimals">
204+
<number>3</number>
205+
</property>
206+
<property name="singleStep">
207+
<double>0.010000000000000</double>
208+
</property>
209+
</widget>
210+
</item>
211+
<item row="10" column="0" colspan="2">
212+
<widget class="QLabel" name="splitStereoHorizontalSeparationLabel">
213+
<property name="text">
214+
<string>Split stereo horizontal separation (px)</string>
215+
</property>
216+
</widget>
217+
</item>
218+
<item row="12" column="0" colspan="2">
219+
<widget class="QLabel" name="splitStereoVerticalSeparationLabel">
220+
<property name="text">
221+
<string>Split stereo vertical separation (px)</string>
222+
</property>
223+
</widget>
224+
</item>
225+
<item row="14" column="0" colspan="2">
226+
<widget class="QLabel" name="splitStereoVerticalEyeMappingLabel">
227+
<property name="text">
228+
<string>Split stereo vertical eye mapping</string>
229+
</property>
230+
</widget>
231+
</item>
232+
<item row="14" column="2">
233+
<widget class="QComboBox" name="splitStereoVerticalEyeMapping">
234+
<item>
235+
<property name="text">
236+
<string>LEFT_EYE_TOP_VIEWPORT</string>
237+
</property>
238+
</item>
239+
<item>
240+
<property name="text">
241+
<string>LEFT_EYE_BOTTOM_VIEWPORT</string>
242+
</property>
243+
</item>
244+
</widget>
245+
</item>
246+
<item row="8" column="2">
247+
<widget class="QDoubleSpinBox" name="screenHeight">
248+
<property name="decimals">
249+
<number>3</number>
250+
</property>
251+
<property name="singleStep">
252+
<double>0.010000000000000</double>
253+
</property>
254+
</widget>
255+
</item>
256+
<item row="8" column="0">
257+
<widget class="QLabel" name="screenHeightLabel">
258+
<property name="text">
259+
<string>Screen height (m)</string>
181260
</property>
182-
<property name="maxCount">
183-
<number>200</number>
261+
</widget>
262+
</item>
263+
<item row="13" column="0">
264+
<widget class="QLabel" name="splitStereoHorizontalEyeMappingLabel">
265+
<property name="text">
266+
<string>Split stereo horizontal eye mapping</string>
184267
</property>
268+
</widget>
269+
</item>
270+
<item row="13" column="2">
271+
<widget class="QComboBox" name="splitStereoHorizontalEyeMapping">
272+
<item>
273+
<property name="text">
274+
<string>LEFT_EYE_LEFT_VIEWPORT</string>
275+
</property>
276+
</item>
277+
<item>
278+
<property name="text">
279+
<string>LEFT_EYE_RIGHT_VIEWPORT</string>
280+
</property>
281+
</item>
282+
</widget>
283+
</item>
284+
<item row="12" column="2">
285+
<widget class="QSpinBox" name="splitStereoVerticalSeparation"/>
286+
</item>
287+
<item row="10" column="2">
288+
<widget class="QSpinBox" name="splitStereoHorizontalSeparation"/>
289+
</item>
290+
<item row="0" column="2">
291+
<widget class="QComboBox" name="comboStereoMode">
185292
<item>
186293
<property name="text">
187294
<string>OFF</string>
@@ -209,79 +316,33 @@
209316
</item>
210317
</widget>
211318
</item>
212-
<item row="1" column="0">
213-
<widget class="QLabel" name="label">
214-
<property name="text">
215-
<string>Screen distance</string>
216-
</property>
217-
<property name="buddy">
218-
<cstring>screenDistance</cstring>
219-
</property>
220-
</widget>
221-
</item>
222-
<item row="1" column="2">
223-
<widget class="QDoubleSpinBox" name="screenDistance"/>
224-
</item>
225319
<item row="2" column="0">
226-
<widget class="QLabel" name="label_3">
320+
<widget class="QLabel" name="eyeSeparationLabel">
227321
<property name="text">
228-
<string>SCREEN_WIDTH </string>
322+
<string>Eye separation (m)</string>
229323
</property>
230324
</widget>
231325
</item>
232326
<item row="2" column="2">
233-
<widget class="QDoubleSpinBox" name="xxxx_2"/>
234-
</item>
235-
<item row="3" column="0">
236-
<widget class="QLabel" name="label_4">
237-
<property name="text">
238-
<string>EYE_SEPARATION </string>
327+
<widget class="QDoubleSpinBox" name="eyeSeparation">
328+
<property name="decimals">
329+
<number>3</number>
239330
</property>
240-
</widget>
241-
</item>
242-
<item row="3" column="2">
243-
<widget class="QDoubleSpinBox" name="xxxx_3"/>
244-
</item>
245-
<item row="4" column="0" colspan="2">
246-
<widget class="QLabel" name="label_5">
247-
<property name="text">
248-
<string>SPLIT_STEREO_HORIZONTAL_SEPARATION</string>
331+
<property name="maximum">
332+
<double>10.000000000000000</double>
249333
</property>
250-
</widget>
251-
</item>
252-
<item row="4" column="2">
253-
<widget class="QDoubleSpinBox" name="xxxx_4"/>
254-
</item>
255-
<item row="5" column="0" colspan="2">
256-
<widget class="QLabel" name="label_6">
257-
<property name="text">
258-
<string>SPLIT_STEREO_HORIZONTAL_EYE_MAPPING</string>
334+
<property name="singleStep">
335+
<double>0.001000000000000</double>
259336
</property>
260337
</widget>
261338
</item>
262-
<item row="5" column="2">
263-
<widget class="QDoubleSpinBox" name="xxxx_5"/>
264-
</item>
265-
<item row="6" column="0" colspan="2">
266-
<widget class="QLabel" name="label_7">
339+
<item row="15" column="2">
340+
<widget class="QPushButton" name="resetDefaults">
267341
<property name="text">
268-
<string>SPLIT_STEREO_VERTICAL_SEPARATION </string>
342+
<string>Reset to defaults</string>
269343
</property>
270344
</widget>
271345
</item>
272-
<item row="6" column="2">
273-
<widget class="QDoubleSpinBox" name="xxxx_6"/>
274-
</item>
275-
<item row="7" column="0" colspan="2">
276-
<widget class="QLabel" name="label_8">
277-
<property name="text">
278-
<string>SPLIT_STEREO_VERTICAL_EYE_MAPPING</string>
279-
</property>
280-
</widget>
281-
</item>
282-
<item row="7" column="2">
283-
<widget class="QDoubleSpinBox" name="xxxx_7"/>
284-
</item>
285346
</layout>
286347
</widget>
287348
</widget>
@@ -298,6 +359,21 @@
298359
<layoutdefault spacing="6" margin="11"/>
299360
<tabstops>
300361
<tabstop>buttonBox</tabstop>
362+
<tabstop>tabWidget</tabstop>
363+
<tabstop>comboBox</tabstop>
364+
<tabstop>lineEdit</tabstop>
365+
<tabstop>pushButton</tabstop>
366+
<tabstop>pushButton_2</tabstop>
367+
<tabstop>tableWidget</tabstop>
368+
<tabstop>comboStereoMode</tabstop>
369+
<tabstop>eyeSeparation</tabstop>
370+
<tabstop>screenDistance</tabstop>
371+
<tabstop>screenWidth</tabstop>
372+
<tabstop>screenHeight</tabstop>
373+
<tabstop>splitStereoHorizontalSeparation</tabstop>
374+
<tabstop>splitStereoVerticalSeparation</tabstop>
375+
<tabstop>splitStereoHorizontalEyeMapping</tabstop>
376+
<tabstop>splitStereoVerticalEyeMapping</tabstop>
301377
</tabstops>
302378
<resources/>
303379
<connections>

0 commit comments

Comments
 (0)
Please sign in to comment.