55#include "SplatCloudRenderingControlPlugin.hh"
65#include <QRadioButton>
75SplatCloudRenderingControlPlugin::SplatCloudRenderingControlPlugin() :
76 toolboxPointsizeScale_ ( 0 ),
77 toolboxDefaultColorR_ ( 0 ),
78 toolboxDefaultColorG_ ( 0 ),
79 toolboxDefaultColorB_ ( 0 ),
80 toolboxDefaultNormalX_ ( 0 ),
81 toolboxDefaultNormalY_ ( 0 ),
82 toolboxDefaultNormalZ_ ( 0 ),
83 toolboxDefaultPointsize_( 0 ),
84 contextScaleAction_ ( nullptr ),
85 contextCullingAction_ ( nullptr ),
86 contextDefaultsAction_ ( nullptr ),
87 contextReloadShadersAction_( nullptr ),
88 contextRebuildVBOAction_ ( nullptr ),
89 toolboxIcon_ ( nullptr ),
90 contextScaleWidget_ ( nullptr ),
91 contextScaleWidgetPointsizeScale_( nullptr ),
92 contextDefaultsWidget_ ( nullptr ),
93 contextDefaultsWidgetDefaultColorR_ ( nullptr ),
94 contextDefaultsWidgetDefaultColorG_ ( nullptr ),
95 contextDefaultsWidgetDefaultColorB_ ( nullptr ),
96 contextDefaultsWidgetDefaultNormalX_ ( nullptr ),
97 contextDefaultsWidgetDefaultNormalY_ ( nullptr ),
98 contextDefaultsWidgetDefaultNormalZ_ ( nullptr ),
99 contextDefaultsWidgetDefaultPointsize_( nullptr )
103SplatCloudRenderingControlPlugin::~SplatCloudRenderingControlPlugin() {
110void SplatCloudRenderingControlPlugin::initializePlugin()
119 toolboxPointsizeScale_ =
new QDoubleSpinBox();
120 toolboxPointsizeScale_->setRange( 0.0, 100.0 );
121 toolboxPointsizeScale_->setDecimals( 4 );
122 toolboxPointsizeScale_->setSingleStep( 0.1 );
123 toolboxPointsizeScale_->setValue( 1.0 );
124 toolboxPointsizeScale_->setToolTip(
"The scaling factor of the pointsizes used during the rendering of objects" );
127 QHBoxLayout *toolboxPointsizeScaleLayout =
new QHBoxLayout();
128 toolboxPointsizeScaleLayout->setSpacing( 6 );
129 toolboxPointsizeScaleLayout->addWidget(
new QLabel(
"Pointsize Scaling Factor:" ) );
130 toolboxPointsizeScaleLayout->addWidget( toolboxPointsizeScale_ );
133 QPushButton *toolboxEnableBackfaceCullingButton =
new QPushButton (
"Enable Backface Culling" );
134 QPushButton *toolboxDisableBackfaceCullingButton =
new QPushButton (
"Disable Backface Culling" );
135 QPushButton *toolboxReloadShadersButton =
new QPushButton (
"Reload Shaders" );
136 QPushButton *toolboxRebuildVBOsButton =
new QPushButton (
"Rebuild VBOs" );
137 QRadioButton *toolboxPointSizeButton =
new QRadioButton(
"Use gl_PointSize" );
138 QRadioButton *toolboxGeometryShaderButton =
new QRadioButton(
"Use Geometry Shader" );
139 toolboxEnableBackfaceCullingButton->setToolTip (
"Enable the culling of backfaces" );
140 toolboxDisableBackfaceCullingButton->setToolTip(
"Disable the culling of backfaces" );
141 toolboxReloadShadersButton->setToolTip (
"Reload all shader files" );
142 toolboxRebuildVBOsButton->setToolTip (
"Rebuild all vertex-buffer-objects" );
143 toolboxPointSizeButton->setToolTip (
"Set gl_PointSize in vertex shader" );
144 toolboxGeometryShaderButton->setToolTip (
"Create quads in geometry shader" );
146 toolboxPointSizeButton->setChecked(
true);
149 QHBoxLayout *toolboxButtonsALayout =
new QHBoxLayout();
150 toolboxButtonsALayout->setSpacing( 6 );
151 toolboxButtonsALayout->addWidget( toolboxEnableBackfaceCullingButton );
152 toolboxButtonsALayout->addWidget( toolboxDisableBackfaceCullingButton );
155 QFrame *toolboxSeparatorFrame =
new QFrame();
156 toolboxSeparatorFrame->setFrameShape( QFrame::HLine );
157 toolboxSeparatorFrame->setFrameShadow( QFrame::Sunken );
160 QHBoxLayout *toolboxButtonsBLayout =
new QHBoxLayout();
161 toolboxButtonsBLayout->setSpacing( 6 );
162 toolboxButtonsBLayout->addWidget( toolboxReloadShadersButton );
163 toolboxButtonsBLayout->addWidget( toolboxRebuildVBOsButton );
166 QFrame *toolboxSeparatorFrameBC =
new QFrame();
167 toolboxSeparatorFrameBC->setFrameShape(QFrame::HLine);
168 toolboxSeparatorFrameBC->setFrameShadow(QFrame::Sunken);
171 QHBoxLayout *toolboxButtonsCLayout =
new QHBoxLayout();
172 toolboxButtonsCLayout->setSpacing(6);
173 toolboxButtonsCLayout->addWidget(toolboxPointSizeButton);
174 toolboxButtonsCLayout->addWidget(toolboxGeometryShaderButton);
177 QVBoxLayout *toolboxOptionsLayout =
new QVBoxLayout();
178 toolboxOptionsLayout->setAlignment( Qt::AlignTop );
179 toolboxOptionsLayout->setSpacing( 6 );
180 toolboxOptionsLayout->addItem ( toolboxPointsizeScaleLayout );
181 toolboxOptionsLayout->addItem ( toolboxButtonsALayout );
182 toolboxOptionsLayout->addItem (
new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding ) );
183 toolboxOptionsLayout->addWidget( toolboxSeparatorFrame );
184 toolboxOptionsLayout->addItem ( toolboxButtonsBLayout );
185 toolboxOptionsLayout->addItem (
new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding ) );
186 toolboxOptionsLayout->addWidget( toolboxSeparatorFrameBC );
187 toolboxOptionsLayout->addItem ( toolboxButtonsCLayout );
190 QWidget *toolboxOptionsWidget =
new QWidget();
191 toolboxOptionsWidget->setLayout( toolboxOptionsLayout );
192 toolboxOptionsWidget->setToolTip(
"Rendering options" );
197 toolboxDefaultColorR_ =
new QSpinBox();
198 toolboxDefaultColorG_ =
new QSpinBox();
199 toolboxDefaultColorB_ =
new QSpinBox();
200 toolboxDefaultColorR_->setRange( 0, 255 );
201 toolboxDefaultColorG_->setRange( 0, 255 );
202 toolboxDefaultColorB_->setRange( 0, 255 );
203 toolboxDefaultColorR_->setSingleStep( 1 );
204 toolboxDefaultColorG_->setSingleStep( 1 );
205 toolboxDefaultColorB_->setSingleStep( 1 );
206 toolboxDefaultColorR_->setValue( 255 );
207 toolboxDefaultColorG_->setValue( 255 );
208 toolboxDefaultColorB_->setValue( 255 );
209 toolboxDefaultColorR_->setToolTip(
"The default red-component of the color used when an object has no colors" );
210 toolboxDefaultColorG_->setToolTip(
"The default green-component of the color used when an object has no colors" );
211 toolboxDefaultColorB_->setToolTip(
"The default blue-component of the color used when an object has no colors" );
214 toolboxDefaultNormalX_ =
new QDoubleSpinBox();
215 toolboxDefaultNormalY_ =
new QDoubleSpinBox();
216 toolboxDefaultNormalZ_ =
new QDoubleSpinBox();
217 toolboxDefaultNormalX_->setRange( -1.0, 1.0 );
218 toolboxDefaultNormalY_->setRange( -1.0, 1.0 );
219 toolboxDefaultNormalZ_->setRange( -1.0, 1.0 );
220 toolboxDefaultNormalX_->setDecimals( 2 );
221 toolboxDefaultNormalY_->setDecimals( 2 );
222 toolboxDefaultNormalZ_->setDecimals( 2 );
223 toolboxDefaultNormalX_->setSingleStep( 0.1 );
224 toolboxDefaultNormalY_->setSingleStep( 0.1 );
225 toolboxDefaultNormalZ_->setSingleStep( 0.1 );
226 toolboxDefaultNormalX_->setValue( 0.0 );
227 toolboxDefaultNormalY_->setValue( 0.0 );
228 toolboxDefaultNormalZ_->setValue( 1.0 );
229 toolboxDefaultNormalX_->setToolTip(
"The default x-component of the normal used when an object has no normals" );
230 toolboxDefaultNormalY_->setToolTip(
"The default y-component of the normal used when an object has no normals" );
231 toolboxDefaultNormalZ_->setToolTip(
"The default z-component of the normal used when an object has no normals" );
234 toolboxDefaultPointsize_ =
new QDoubleSpinBox();
235 toolboxDefaultPointsize_->setRange( 0.0, 1000.0 );
236 toolboxDefaultPointsize_->setDecimals( 3 );
237 toolboxDefaultPointsize_->setSingleStep( 0.01 );
238 toolboxDefaultPointsize_->setValue( 0.1 );
239 toolboxDefaultPointsize_->setToolTip(
"The default pointsize used when an object has no pointsizes" );
242 QHBoxLayout *toolboxDefaultColorLayout =
new QHBoxLayout();
243 toolboxDefaultColorLayout->setSpacing( 6 );
244 toolboxDefaultColorLayout->addWidget( toolboxDefaultColorR_ );
245 toolboxDefaultColorLayout->addWidget( toolboxDefaultColorG_ );
246 toolboxDefaultColorLayout->addWidget( toolboxDefaultColorB_ );
249 QHBoxLayout *toolboxDefaultNormalLayout =
new QHBoxLayout();
250 toolboxDefaultNormalLayout->setSpacing( 6 );
251 toolboxDefaultNormalLayout->addWidget( toolboxDefaultNormalX_ );
252 toolboxDefaultNormalLayout->addWidget( toolboxDefaultNormalY_ );
253 toolboxDefaultNormalLayout->addWidget( toolboxDefaultNormalZ_ );
256 QHBoxLayout *toolboxDefaultPointsizeLayout =
new QHBoxLayout();
257 toolboxDefaultPointsizeLayout->setSpacing( 6 );
258 toolboxDefaultPointsizeLayout->addWidget( toolboxDefaultPointsize_ );
261 QGridLayout *toolboxDefaultsLayout =
new QGridLayout();
262 toolboxDefaultsLayout->setSpacing( 6 );
263 toolboxDefaultsLayout->addWidget(
new QLabel(
"Default Color:" ), 0, 0 );
264 toolboxDefaultsLayout->addWidget(
new QLabel(
"Default Normal:" ), 1, 0 );
265 toolboxDefaultsLayout->addWidget(
new QLabel(
"Default Pointsize:" ), 2, 0 );
266 toolboxDefaultsLayout->addItem ( toolboxDefaultColorLayout, 0, 1 );
267 toolboxDefaultsLayout->addItem ( toolboxDefaultNormalLayout, 1, 1 );
268 toolboxDefaultsLayout->addItem ( toolboxDefaultPointsizeLayout, 2, 1 );
271 QWidget *toolboxDefaultsWidget =
new QWidget();
272 toolboxDefaultsWidget->setLayout( toolboxDefaultsLayout );
273 toolboxDefaultsWidget->setToolTip(
"Default values" );
278 QTabWidget *toolboxTabWidget =
new QTabWidget();
279 toolboxTabWidget->addTab( toolboxOptionsWidget,
"Options" );
280 toolboxTabWidget->addTab( toolboxDefaultsWidget,
"Defaults" );
283 QVBoxLayout *toolboxLayout =
new QVBoxLayout();
284 toolboxLayout->setSpacing( 6 );
285 toolboxLayout->addWidget( toolboxTabWidget );
288 QWidget *toolbox =
new QWidget();
289 toolbox->setLayout( toolboxLayout );
292 toolboxIcon_ =
new QIcon( OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"SplatCloudRenderingControl.png" );
297 connect( toolboxPointsizeScale_, SIGNAL( valueChanged(
double) ),
this, SLOT( slotToolboxPointsizeScaleValueChanged() ) );
298 connect( toolboxDefaultColorR_, SIGNAL( valueChanged(
int) ),
this, SLOT( slotToolboxDefaultColorValueChanged() ) );
299 connect( toolboxDefaultColorG_, SIGNAL( valueChanged(
int) ),
this, SLOT( slotToolboxDefaultColorValueChanged() ) );
300 connect( toolboxDefaultColorB_, SIGNAL( valueChanged(
int) ),
this, SLOT( slotToolboxDefaultColorValueChanged() ) );
301 connect( toolboxDefaultNormalX_, SIGNAL( valueChanged(
double) ),
this, SLOT( slotToolboxDefaultNormalValueChanged() ) );
302 connect( toolboxDefaultNormalY_, SIGNAL( valueChanged(
double) ),
this, SLOT( slotToolboxDefaultNormalValueChanged() ) );
303 connect( toolboxDefaultNormalZ_, SIGNAL( valueChanged(
double) ),
this, SLOT( slotToolboxDefaultNormalValueChanged() ) );
304 connect( toolboxDefaultPointsize_, SIGNAL( valueChanged(
double) ),
this, SLOT( slotToolboxDefaultPointsizeValueChanged() ) );
306 connect( toolboxEnableBackfaceCullingButton, SIGNAL( clicked() ),
this, SLOT( slotToolboxEnableBackfaceCullingButtonClicked() ) );
307 connect( toolboxDisableBackfaceCullingButton, SIGNAL( clicked() ),
this, SLOT( slotToolboxDisableBackfaceCullingButtonClicked() ) );
308 connect( toolboxReloadShadersButton, SIGNAL( clicked() ),
this, SLOT( slotToolboxReloadShadersButtonClicked() ) );
309 connect( toolboxRebuildVBOsButton, SIGNAL( clicked() ),
this, SLOT( slotToolboxRebuildVBOsButtonClicked() ) );
310 connect( toolboxPointSizeButton, SIGNAL( toggled(
bool) ),
this, SLOT( slotToolboxPointSizeButtonClicked() ) );
311 connect( toolboxGeometryShaderButton, SIGNAL( toggled(
bool) ),
this, SLOT( slotToolboxGeometryShaderButtonClicked() ) );
314 emit addToolbox( tr(
"SplatCloud Rendering Control") , toolbox , toolboxIcon_ );
321 contextScaleAction_ =
new QAction( tr(
"Pointsize Scaling Factor..."),
this );
322 contextCullingAction_ =
new QAction( tr(
"Backface Culling" ),
this );
323 contextDefaultsAction_ =
new QAction( tr(
"Defaults..." ),
this );
324 contextReloadShadersAction_ =
new QAction( tr(
"Reload Shaders" ),
this );
325 contextRebuildVBOAction_ =
new QAction( tr(
"Rebuild VBO" ),
this );
326 contextCullingAction_->setCheckable(
true );
329 QMenu *contextMenu =
new QMenu(
"SplatCloud Rendering Control" );
330 contextMenu->setIcon( QIcon( OpenFlipper::Options::iconDirStr() + OpenFlipper::Options::dirSeparator() +
"SplatCloudRenderingControl.png" ) );
331 contextMenu->addAction( contextScaleAction_ );
332 contextMenu->addAction( contextCullingAction_ );
333 contextMenu->addSeparator();
334 contextMenu->addAction( contextDefaultsAction_ );
335 contextMenu->addSeparator();
336 contextMenu->addAction( contextReloadShadersAction_ );
337 contextMenu->addAction( contextRebuildVBOAction_ );
342 connect( contextScaleAction_, SIGNAL( triggered() ),
this, SLOT( slotContextScaleActionTriggered() ) );
343 connect( contextCullingAction_, SIGNAL( triggered() ),
this, SLOT( slotContextCullingActionTriggered() ) );
344 connect( contextDefaultsAction_, SIGNAL( triggered() ),
this, SLOT( slotContextDefaultsActionTriggered() ) );
345 connect( contextReloadShadersAction_, SIGNAL( triggered() ),
this, SLOT( slotContextReloadShadersActionTriggered() ) );
346 connect( contextRebuildVBOAction_, SIGNAL( triggered() ),
this, SLOT( slotContextRebuildVBOActionTriggered() ) );
356 contextScaleWidgetPointsizeScale_ =
new QDoubleSpinBox();
357 contextScaleWidgetPointsizeScale_->setRange( 0.0, 100.0 );
358 contextScaleWidgetPointsizeScale_->setDecimals( 4 );
359 contextScaleWidgetPointsizeScale_->setSingleStep( 0.1 );
360 contextScaleWidgetPointsizeScale_->setToolTip(
"The scaling factor of the pointsizes used during the rendering of the picked object" );
363 QHBoxLayout *contextScaleWidgetPointsizeScaleLayout =
new QHBoxLayout();
364 contextScaleWidgetPointsizeScaleLayout->setSpacing( 6 );
365 contextScaleWidgetPointsizeScaleLayout->addWidget(
new QLabel(
"Pointsize Scaling Factor:" ) );
366 contextScaleWidgetPointsizeScaleLayout->addWidget( contextScaleWidgetPointsizeScale_ );
369 QVBoxLayout *contextScaleWidgetLayout =
new QVBoxLayout();
370 contextScaleWidgetLayout->setAlignment( Qt::AlignTop );
371 contextScaleWidgetLayout->setSpacing( 6 );
372 contextScaleWidgetLayout->addItem( contextScaleWidgetPointsizeScaleLayout );
375 contextScaleWidget_ =
new QWidget();
376 contextScaleWidget_->setWindowTitle(
"Pointsize Scaling Factor" );
377 contextScaleWidget_->setLayout( contextScaleWidgetLayout );
382 connect( contextScaleWidgetPointsizeScale_, SIGNAL( valueChanged(
double) ),
this, SLOT( slotContextScaleWidgetPointsizeScaleValueChanged() ) );
389 contextDefaultsWidgetDefaultColorR_ =
new QSpinBox();
390 contextDefaultsWidgetDefaultColorG_ =
new QSpinBox();
391 contextDefaultsWidgetDefaultColorB_ =
new QSpinBox();
392 contextDefaultsWidgetDefaultColorR_->setRange( 0, 255 );
393 contextDefaultsWidgetDefaultColorG_->setRange( 0, 255 );
394 contextDefaultsWidgetDefaultColorB_->setRange( 0, 255 );
395 contextDefaultsWidgetDefaultColorR_->setSingleStep( 1 );
396 contextDefaultsWidgetDefaultColorG_->setSingleStep( 1 );
397 contextDefaultsWidgetDefaultColorB_->setSingleStep( 1 );
398 contextDefaultsWidgetDefaultColorR_->setToolTip(
"The default red-component of the color used when the picked object has no colors" );
399 contextDefaultsWidgetDefaultColorG_->setToolTip(
"The default green-component of the color used when the picked object has no colors" );
400 contextDefaultsWidgetDefaultColorB_->setToolTip(
"The default blue-component of the color used when the picked object has no colors" );
403 contextDefaultsWidgetDefaultNormalX_ =
new QDoubleSpinBox();
404 contextDefaultsWidgetDefaultNormalY_ =
new QDoubleSpinBox();
405 contextDefaultsWidgetDefaultNormalZ_ =
new QDoubleSpinBox();
406 contextDefaultsWidgetDefaultNormalX_->setRange( -1.0, 1.0 );
407 contextDefaultsWidgetDefaultNormalY_->setRange( -1.0, 1.0 );
408 contextDefaultsWidgetDefaultNormalZ_->setRange( -1.0, 1.0 );
409 contextDefaultsWidgetDefaultNormalX_->setDecimals( 2 );
410 contextDefaultsWidgetDefaultNormalY_->setDecimals( 2 );
411 contextDefaultsWidgetDefaultNormalZ_->setDecimals( 2 );
412 contextDefaultsWidgetDefaultNormalX_->setSingleStep( 0.1 );
413 contextDefaultsWidgetDefaultNormalY_->setSingleStep( 0.1 );
414 contextDefaultsWidgetDefaultNormalZ_->setSingleStep( 0.1 );
415 contextDefaultsWidgetDefaultNormalX_->setToolTip(
"The default x-component of the normal used when the picked object has no normals" );
416 contextDefaultsWidgetDefaultNormalY_->setToolTip(
"The default y-component of the normal used when the picked object has no normals" );
417 contextDefaultsWidgetDefaultNormalZ_->setToolTip(
"The default z-component of the normal used when the picked object has no normals" );
420 contextDefaultsWidgetDefaultPointsize_ =
new QDoubleSpinBox();
421 contextDefaultsWidgetDefaultPointsize_->setRange( 0.0, 1000.0 );
422 contextDefaultsWidgetDefaultPointsize_->setDecimals( 3 );
423 contextDefaultsWidgetDefaultPointsize_->setSingleStep( 0.01 );
424 contextDefaultsWidgetDefaultPointsize_->setToolTip(
"The default pointsize used when the picked object has no pointsizes" );
427 QHBoxLayout *contextDefaultsWidgetDefaultColorLayout =
new QHBoxLayout();
428 contextDefaultsWidgetDefaultColorLayout->setSpacing( 6 );
429 contextDefaultsWidgetDefaultColorLayout->addWidget( contextDefaultsWidgetDefaultColorR_ );
430 contextDefaultsWidgetDefaultColorLayout->addWidget( contextDefaultsWidgetDefaultColorG_ );
431 contextDefaultsWidgetDefaultColorLayout->addWidget( contextDefaultsWidgetDefaultColorB_ );
434 QHBoxLayout *contextDefaultsWidgetDefaultNormalLayout =
new QHBoxLayout();
435 contextDefaultsWidgetDefaultNormalLayout->setSpacing( 6 );
436 contextDefaultsWidgetDefaultNormalLayout->addWidget( contextDefaultsWidgetDefaultNormalX_ );
437 contextDefaultsWidgetDefaultNormalLayout->addWidget( contextDefaultsWidgetDefaultNormalY_ );
438 contextDefaultsWidgetDefaultNormalLayout->addWidget( contextDefaultsWidgetDefaultNormalZ_ );
441 QHBoxLayout *contextDefaultsWidgetDefaultPointsizeLayout =
new QHBoxLayout();
442 contextDefaultsWidgetDefaultPointsizeLayout->setSpacing( 6 );
443 contextDefaultsWidgetDefaultPointsizeLayout->addWidget( contextDefaultsWidgetDefaultPointsize_ );
446 QGridLayout *contextDefaultsWidgetDefaultOptionsLayout =
new QGridLayout();
447 contextDefaultsWidgetDefaultOptionsLayout->setSpacing( 6 );
448 contextDefaultsWidgetDefaultOptionsLayout->addWidget(
new QLabel(
"Default Color:" ), 0, 0 );
449 contextDefaultsWidgetDefaultOptionsLayout->addWidget(
new QLabel(
"Default Normal:" ), 1, 0 );
450 contextDefaultsWidgetDefaultOptionsLayout->addWidget(
new QLabel(
"Default Pointsize:" ), 2, 0 );
451 contextDefaultsWidgetDefaultOptionsLayout->addItem ( contextDefaultsWidgetDefaultColorLayout, 0, 1 );
452 contextDefaultsWidgetDefaultOptionsLayout->addItem ( contextDefaultsWidgetDefaultNormalLayout, 1, 1 );
453 contextDefaultsWidgetDefaultOptionsLayout->addItem ( contextDefaultsWidgetDefaultPointsizeLayout, 2, 1 );
456 QVBoxLayout *contextDefaultsWidgetLayout =
new QVBoxLayout();
457 contextDefaultsWidgetLayout->setAlignment( Qt::AlignTop );
458 contextDefaultsWidgetLayout->setSpacing( 6 );
459 contextDefaultsWidgetLayout->addItem( contextDefaultsWidgetDefaultOptionsLayout );
462 contextDefaultsWidget_ =
new QWidget();
463 contextDefaultsWidget_->setWindowTitle(
"Defaults" );
464 contextDefaultsWidget_->setLayout( contextDefaultsWidgetLayout );
469 connect( contextDefaultsWidgetDefaultColorR_, SIGNAL( valueChanged(
int) ),
this, SLOT( slotContextDefaultsWidgetDefaultColorValueChanged() ) );
470 connect( contextDefaultsWidgetDefaultColorG_, SIGNAL( valueChanged(
int) ),
this, SLOT( slotContextDefaultsWidgetDefaultColorValueChanged() ) );
471 connect( contextDefaultsWidgetDefaultColorB_, SIGNAL( valueChanged(
int) ),
this, SLOT( slotContextDefaultsWidgetDefaultColorValueChanged() ) );
472 connect( contextDefaultsWidgetDefaultNormalX_, SIGNAL( valueChanged(
double) ),
this, SLOT( slotContextDefaultsWidgetDefaultNormalValueChanged() ) );
473 connect( contextDefaultsWidgetDefaultNormalY_, SIGNAL( valueChanged(
double) ),
this, SLOT( slotContextDefaultsWidgetDefaultNormalValueChanged() ) );
474 connect( contextDefaultsWidgetDefaultNormalZ_, SIGNAL( valueChanged(
double) ),
this, SLOT( slotContextDefaultsWidgetDefaultNormalValueChanged() ) );
475 connect( contextDefaultsWidgetDefaultPointsize_, SIGNAL( valueChanged(
double) ),
this, SLOT( slotContextDefaultsWidgetDefaultPointsizeValueChanged() ) );
482 QStringList viewModeToolboxes;
483 viewModeToolboxes +=
"Data Control";
484 viewModeToolboxes +=
"Selections";
485 viewModeToolboxes +=
"SplatCloud Estimator";
486 viewModeToolboxes +=
"SplatCloud Rendering Control";
489 QStringList viewModeToolbars;
490 viewModeToolbars +=
"Main Toolbar";
491 viewModeToolbars +=
"Viewer Toolbar";
492 viewModeToolbars +=
"Color Toolbar";
493 viewModeToolbars +=
"Viewing Directions";
494 viewModeToolbars +=
"Selection Base";
495 viewModeToolbars +=
"Backup Toolbar";
498 QStringList viewModeContextMenus;
499 viewModeContextMenus +=
"DataControl->Material Properties";
500 viewModeContextMenus +=
"DataControl->Object";
501 viewModeContextMenus +=
"SplatCloudEstimatorPlugin->SplatCloud Estimator";
502 viewModeContextMenus +=
"SplatCloudRenderingControlPlugin->SplatCloud Rendering Control";
503 viewModeContextMenus +=
"ViewControl->Visualization";
504 viewModeContextMenus +=
"Backup->&Redo";
505 viewModeContextMenus +=
"Backup->&Undo";
508 emit defineViewModeToolboxes (
"SplatCloud", viewModeToolboxes );
509 emit defineViewModeToolbars (
"SplatCloud", viewModeToolbars );
510 emit defineViewModeContextMenus(
"SplatCloud", viewModeContextMenus );
511 emit defineViewModeIcon (
"SplatCloud",
"SplatCloudType.png" );
518void SplatCloudRenderingControlPlugin::addedEmptyObject(
int _objectId )
520 if( _objectId == -1 )
532 if( splatCloudObject )
543 toolboxDefaultColorG_-> value(),
544 toolboxDefaultColorB_-> value() ) );
546 toolboxDefaultNormalY_-> value(),
547 toolboxDefaultNormalZ_-> value() ) );
548 splatCloudNode->setDefaultPointsize( SplatCloudNode::Pointsize( toolboxDefaultPointsize_->value() ) );
557void SplatCloudRenderingControlPlugin::slotUpdateContextMenu(
int _objectId )
559 if( _objectId == -1 )
571 if( splatCloudObject )
574 contextCullingAction_->setChecked(
splatCloudObject->isBackfaceCullingEnabled() );
582void SplatCloudRenderingControlPlugin::slotToolboxPointsizeScaleValueChanged()
585 double scale = toolboxPointsizeScale_->value();
603void SplatCloudRenderingControlPlugin::slotToolboxDefaultColorValueChanged()
614 toolboxDefaultColorG_->value(),
615 toolboxDefaultColorB_->value() ) );
623void SplatCloudRenderingControlPlugin::slotToolboxDefaultNormalValueChanged()
634 toolboxDefaultNormalY_->value(),
635 toolboxDefaultNormalZ_->value() ) );
643void SplatCloudRenderingControlPlugin::slotToolboxDefaultPointsizeValueChanged()
653 splatCloudNode->setDefaultPointsize( SplatCloudNode::Pointsize( toolboxDefaultPointsize_->value() ) );
656 emit updatedObject( objIter->id(),
UPDATE_ALL );
664void SplatCloudRenderingControlPlugin::slotToolboxEnableBackfaceCullingButtonClicked()
682void SplatCloudRenderingControlPlugin::slotToolboxDisableBackfaceCullingButtonClicked()
700void SplatCloudRenderingControlPlugin::slotToolboxReloadShadersButtonClicked()
720void SplatCloudRenderingControlPlugin::slotToolboxRebuildVBOsButtonClicked()
733 emit updatedObject( objIter->id(),
UPDATE_ALL );
740void SplatCloudRenderingControlPlugin::slotToolboxPointSizeButtonClicked()
757void SplatCloudRenderingControlPlugin::slotToolboxGeometryShaderButtonClicked()
775void SplatCloudRenderingControlPlugin::slotContextScaleActionTriggered()
778 int objectId = contextScaleAction_->data().toInt();
790 if( splatCloudObject )
796 contextScaleWidgetPointsizeScale_->setValue( ps );
799 contextScaleWidget_->move( contextScaleAction_->associatedWidgets()[0]->mapToGlobal( QPoint() ) );
802 contextScaleWidget_->show();
810void SplatCloudRenderingControlPlugin::slotContextScaleWidgetPointsizeScaleValueChanged()
813 int objectId = contextScaleAction_->data().toInt();
825 if( splatCloudObject )
828 double scale = contextScaleWidgetPointsizeScale_->value();
839void SplatCloudRenderingControlPlugin::slotContextDefaultsActionTriggered()
842 int objectId = contextDefaultsAction_->data().toInt();
866 contextDefaultsWidgetDefaultColorR_-> setValue( cr );
867 contextDefaultsWidgetDefaultColorG_-> setValue( cg );
868 contextDefaultsWidgetDefaultColorB_-> setValue( cb );
869 contextDefaultsWidgetDefaultNormalX_-> setValue( nx );
870 contextDefaultsWidgetDefaultNormalY_-> setValue( ny );
871 contextDefaultsWidgetDefaultNormalZ_-> setValue( nz );
872 contextDefaultsWidgetDefaultPointsize_->setValue( ps );
875 contextDefaultsWidget_->move( contextDefaultsAction_->associatedWidgets()[0]->mapToGlobal( QPoint() ) );
878 contextDefaultsWidget_->show();
886void SplatCloudRenderingControlPlugin::slotContextDefaultsWidgetDefaultColorValueChanged()
889 int objectId = contextDefaultsAction_->data().toInt();
905 contextDefaultsWidgetDefaultColorG_->value(),
906 contextDefaultsWidgetDefaultColorB_->value() ) );
917void SplatCloudRenderingControlPlugin::slotContextDefaultsWidgetDefaultNormalValueChanged()
920 int objectId = contextDefaultsAction_->data().toInt();
936 contextDefaultsWidgetDefaultNormalY_->value(),
937 contextDefaultsWidgetDefaultNormalZ_->value() ) );
948void SplatCloudRenderingControlPlugin::slotContextDefaultsWidgetDefaultPointsizeValueChanged()
951 int objectId = contextDefaultsAction_->data().toInt();
966 splatCloudNode->setDefaultPointsize( SplatCloudNode::Pointsize( contextDefaultsWidgetDefaultPointsize_->value() ) );
977void SplatCloudRenderingControlPlugin::slotContextCullingActionTriggered()
980 int objectId = contextCullingAction_->data().toInt();
992 if( splatCloudObject )
995 bool enable = contextCullingAction_->isChecked();
1009void SplatCloudRenderingControlPlugin::slotContextReloadShadersActionTriggered()
1012 int objectId = contextReloadShadersAction_->data().toInt();
1013 if( objectId == -1 )
1024 if( splatCloudObject )
1040void SplatCloudRenderingControlPlugin::slotContextRebuildVBOActionTriggered()
1043 int objectId = contextRebuildVBOAction_->data().toInt();
1044 if( objectId == -1 )
1055 if( splatCloudNode )
SplatCloudNode * splatCloudNode()
Get SplatCloud's scenegraph Node.
void enableGeometryShaderQuads(bool _enable)
Enable or disable quad extrusion in geometry shader (shader pipeline)
void enableBackfaceCulling(bool _enable)
Enable or disable backface culling for all Shaders.
void setPointsizeScale(float _scale)
Set the scaling factor for pointsizes for all Shaders.
void reloadShaders()
Reload standard and picking Shaders from file.
const UpdateType UPDATE_ALL(UpdateTypeSet(1))
Identifier for all updates.
SplatCloudObject * splatCloudObject(BaseObjectData *_object)
Cast an SplatCloudObject to a SplatCloudObject if possible.
DLLEXPORT ObjectIterator objectsEnd()
Return Iterator to Object End.
bool getObject(const int _identifier, BaseObject *&_object)
Get the object which has the given identifier.
SplatCloudNode * splatCloudNode(BaseObjectData *_object)
Get a SplatCloudNode from an object.
const QStringList ALL_OBJECTS
Iterable object range.