26 #include <dtkGuiSupport/dtkColorButton.h> 
   27 #include <dtkGuiSupport/dtkSplitter.h> 
   31 class axlInspectorObjectEllipsoidPrivate
 
   36     QDoubleSpinBox *center_x;
 
   37     QDoubleSpinBox *center_y;
 
   38     QDoubleSpinBox *center_z;
 
   39     QDoubleSpinBox *semix;
 
   40     QDoubleSpinBox *semix_x;
 
   41     QDoubleSpinBox *semix_y;
 
   42     QDoubleSpinBox *semix_z;
 
   43     QDoubleSpinBox *semiy;
 
   44     QDoubleSpinBox *semiy_x;
 
   45     QDoubleSpinBox *semiy_y;
 
   46     QDoubleSpinBox *semiy_z;
 
   47     QDoubleSpinBox *semiz;
 
   48     QDoubleSpinBox *semiz_x;
 
   49     QDoubleSpinBox *semiz_y;
 
   50     QDoubleSpinBox *semiz_z;
 
   52     dtkColorButton *colorButton;
 
   54     QComboBox *comboBoxShader;
 
   55     QCheckBox *checkBoxShader;
 
   56     QLineEdit *lineEditShader;
 
   57     QPushButton *buttonShader;
 
   59     QSlider *sliderOpacity;
 
   65     d(new axlInspectorObjectEllipsoidPrivate)
 
   83     d->colorButton = NULL;
 
   85     d->comboBoxShader = NULL;
 
   86     d->checkBoxShader = NULL;
 
   87     d->lineEditShader = NULL;
 
   88     d->buttonShader = NULL;
 
   90     d->sliderOpacity = NULL;
 
  102     return QSize(300, 300);
 
  107     d->ellipsoid = ellipsoid;
 
  108     connect(d->ellipsoid, SIGNAL(modifiedGeometry(
void)), 
this, SLOT(
updateValues(
void)));
 
  112 void axlInspectorObjectEllipsoid::initWidget()
 
  114     QVBoxLayout *layoutTop = 
new QVBoxLayout(
this);
 
  115     layoutTop->addWidget(
new QLabel(
"axlInspectorObjectEllipsoid", 
this));
 
  119     d->center_x = 
new QDoubleSpinBox(
this);
 
  120     d->center_x->setRange(-1000, 1000);
 
  121     d->center_x->setValue(d->ellipsoid->center()->x());
 
  122     d->center_x->setSingleStep(0.1);
 
  124     d->center_y = 
new QDoubleSpinBox(
this);
 
  125     d->center_y->setRange(-1000, 1000);
 
  126     d->center_y->setValue(d->ellipsoid->center()->y());
 
  127     d->center_y->setSingleStep(0.1);
 
  129     d->center_z = 
new QDoubleSpinBox(
this);
 
  130     d->center_z->setRange(-1000, 1000);
 
  131     d->center_z->setValue(d->ellipsoid->center()->z());
 
  132     d->center_z->setSingleStep(0.1);
 
  134     QHBoxLayout *layoutCenter_x = 
new QHBoxLayout;
 
  135     layoutCenter_x->addWidget(
new QLabel(
"X",
this));
 
  136     layoutCenter_x->addWidget(d->center_x);
 
  138     QHBoxLayout *layoutCenter_y = 
new QHBoxLayout;
 
  139     layoutCenter_y->addWidget(
new QLabel(
"Y",
this));
 
  140     layoutCenter_y->addWidget(d->center_y);
 
  142     QHBoxLayout *layoutCenter_z = 
new QHBoxLayout;
 
  143     layoutCenter_z->addWidget(
new QLabel(
"Z",
this));
 
  144     layoutCenter_z->addWidget(d->center_z);
 
  146     QVBoxLayout* layoutCenter = 
new QVBoxLayout;
 
  147     layoutCenter->addLayout(layoutCenter_x);
 
  148     layoutCenter->addLayout(layoutCenter_y);
 
  149     layoutCenter->addLayout(layoutCenter_z);
 
  151     QGroupBox* centerGroupBox = 
new QGroupBox(
"Center");
 
  152     centerGroupBox->setLayout(layoutCenter);
 
  156     d->semix = 
new QDoubleSpinBox(
this);
 
  157     d->semix->setRange(-1000, 1000);
 
  158     d->semix->setValue(d->ellipsoid->semiX()->norm());
 
  159     d->semix->setSingleStep(0.1);
 
  161     d->semix_x = 
new QDoubleSpinBox(
this);
 
  162     d->semix_x->setRange(-1000, 1000);
 
  163     d->semix_x->setValue(d->ellipsoid->semiX()->x());
 
  164     d->semix_x->setSingleStep(0.1);
 
  166     d->semix_y = 
new QDoubleSpinBox(
this);
 
  167     d->semix_y->setRange(-1000, 1000);
 
  168     d->semix_y->setValue(d->ellipsoid->semiX()->y());
 
  169     d->semix_y->setSingleStep(0.1);
 
  171     d->semix_z = 
new QDoubleSpinBox(
this);
 
  172     d->semix_z->setRange(-1000, 1000);
 
  173     d->semix_z->setValue(d->ellipsoid->semiX()->z());
 
  174     d->semix_z->setSingleStep(0.1);
 
  176     QHBoxLayout *layoutSemixRadius = 
new QHBoxLayout;
 
  177     layoutSemixRadius->addWidget(
new QLabel(
"X radius", 
this));
 
  178     layoutSemixRadius->addWidget(d->semix);
 
  180     QHBoxLayout *layoutSemix_x = 
new QHBoxLayout;
 
  181     layoutSemix_x->addWidget(
new QLabel(
"X",
this));
 
  182     layoutSemix_x->addWidget(d->semix_x);
 
  184     QHBoxLayout *layoutSemix_y = 
new QHBoxLayout;
 
  185     layoutSemix_y->addWidget(
new QLabel(
"Y",
this));
 
  186     layoutSemix_y->addWidget(d->semix_y);
 
  188     QHBoxLayout *layoutSemix_z = 
new QHBoxLayout;
 
  189     layoutSemix_z->addWidget(
new QLabel(
"Z",
this));
 
  190     layoutSemix_z->addWidget(d->semix_z);
 
  192     QVBoxLayout* layoutSemiX = 
new QVBoxLayout;
 
  193     layoutSemiX->addLayout(layoutSemixRadius);
 
  194     layoutSemiX->addLayout(layoutSemix_x);
 
  195     layoutSemiX->addLayout(layoutSemix_y);
 
  196     layoutSemiX->addLayout(layoutSemix_z);
 
  198     QGroupBox* semiXGroupBox = 
new QGroupBox(
"Semi Axis X");
 
  199     semiXGroupBox->setLayout(layoutSemiX);
 
  203     d->semiy = 
new QDoubleSpinBox(
this);
 
  204     d->semiy->setRange(-1000, 1000);
 
  205     d->semiy->setValue(d->ellipsoid->semiY()->norm());
 
  206     d->semiy->setSingleStep(0.1);
 
  208     d->semiy_x = 
new QDoubleSpinBox(
this);
 
  209     d->semiy_x->setRange(-1000, 1000);
 
  210     d->semiy_x->setValue(d->ellipsoid->semiY()->x());
 
  211     d->semiy_x->setSingleStep(0.1);
 
  213     d->semiy_y = 
new QDoubleSpinBox(
this);
 
  214     d->semiy_y->setRange(-1000, 1000);
 
  215     d->semiy_y->setValue(d->ellipsoid->semiY()->y());
 
  216     d->semiy_y->setSingleStep(0.1);
 
  218     d->semiy_z = 
new QDoubleSpinBox(
this);
 
  219     d->semiy_z->setRange(-1000, 1000);
 
  220     d->semiy_z->setValue(d->ellipsoid->semiY()->z());
 
  221     d->semiy_z->setSingleStep(0.1);
 
  223     QHBoxLayout *layoutSemiyRadius = 
new QHBoxLayout;
 
  224     layoutSemiyRadius->addWidget(
new QLabel(
"Y radius", 
this));
 
  225     layoutSemiyRadius->addWidget(d->semiy);
 
  227     QHBoxLayout *layoutSemiy_x = 
new QHBoxLayout;
 
  228     layoutSemiy_x->addWidget(
new QLabel(
"X",
this));
 
  229     layoutSemiy_x->addWidget(d->semiy_x);
 
  231     QHBoxLayout *layoutSemiy_y = 
new QHBoxLayout;
 
  232     layoutSemiy_y->addWidget(
new QLabel(
"Y",
this));
 
  233     layoutSemiy_y->addWidget(d->semiy_y);
 
  235     QHBoxLayout *layoutSemiy_z = 
new QHBoxLayout;
 
  236     layoutSemiy_z->addWidget(
new QLabel(
"Z",
this));
 
  237     layoutSemiy_z->addWidget(d->semiy_z);
 
  239     QVBoxLayout* layoutSemiY = 
new QVBoxLayout;
 
  240     layoutSemiY->addLayout(layoutSemiyRadius);
 
  241     layoutSemiY->addLayout(layoutSemiy_x);
 
  242     layoutSemiY->addLayout(layoutSemiy_y);
 
  243     layoutSemiY->addLayout(layoutSemiy_z);
 
  245     QGroupBox* semiYGroupBox = 
new QGroupBox(
"Semi Axis Y");
 
  246     semiYGroupBox->setLayout(layoutSemiY);
 
  250     d->semiz = 
new QDoubleSpinBox(
this);
 
  251     d->semiz->setRange(-1000, 1000);
 
  252     d->semiz->setValue(d->ellipsoid->semiZ()->norm());
 
  253     d->semiz->setSingleStep(0.1);
 
  255     d->semiz_x = 
new QDoubleSpinBox(
this);
 
  256     d->semiz_x->setRange(-1000, 1000);
 
  257     d->semiz_x->setValue(d->ellipsoid->semiZ()->x());
 
  258     d->semiz_x->setSingleStep(0.1);
 
  260     d->semiz_y = 
new QDoubleSpinBox(
this);
 
  261     d->semiz_y->setRange(-1000, 1000);
 
  262     d->semiz_y->setValue(d->ellipsoid->semiZ()->y());
 
  263     d->semiz_y->setSingleStep(0.1);
 
  265     d->semiz_z = 
new QDoubleSpinBox(
this);
 
  266     d->semiz_z->setRange(-1000, 1000);
 
  267     d->semiz_z->setValue(d->ellipsoid->semiZ()->z());
 
  268     d->semiz_z->setSingleStep(0.1);
 
  270     QHBoxLayout *layoutSemizRadius = 
new QHBoxLayout;
 
  271     layoutSemizRadius->addWidget(
new QLabel(
"Z radius", 
this));
 
  272     layoutSemizRadius->addWidget(d->semiz);
 
  274     QHBoxLayout *layoutSemiz_x = 
new QHBoxLayout;
 
  275     layoutSemiz_x->addWidget(
new QLabel(
"X",
this));
 
  276     layoutSemiz_x->addWidget(d->semiz_x);
 
  278     QHBoxLayout *layoutSemiz_y = 
new QHBoxLayout;
 
  279     layoutSemiz_y->addWidget(
new QLabel(
"Y",
this));
 
  280     layoutSemiz_y->addWidget(d->semiz_y);
 
  282     QHBoxLayout *layoutSemiz_z = 
new QHBoxLayout;
 
  283     layoutSemiz_z->addWidget(
new QLabel(
"Z",
this));
 
  284     layoutSemiz_z->addWidget(d->semiz_z);
 
  286     QVBoxLayout* layoutSemiZ = 
new QVBoxLayout;
 
  287     layoutSemiZ->addLayout(layoutSemizRadius);
 
  288     layoutSemiZ->addLayout(layoutSemiz_x);
 
  289     layoutSemiZ->addLayout(layoutSemiz_y);
 
  290     layoutSemiZ->addLayout(layoutSemiz_z);
 
  292     QGroupBox* semiZGroupBox = 
new QGroupBox(
"Semi Axis Z");
 
  293     semiZGroupBox->setLayout(layoutSemiZ);
 
  297     d->colorButton = 
new dtkColorButton(
this);
 
  299     QHBoxLayout *layoutColorButton = 
new QHBoxLayout;
 
  300     layoutColorButton->addWidget(
new QLabel(
"Color",
this));
 
  301     layoutColorButton->addWidget(d->colorButton);
 
  302     d->colorButton->setColor(this->initColorValue());
 
  306     d->sliderOpacity = 
new QSlider(Qt::Horizontal, 
this);
 
  308     QHBoxLayout *layoutOpacity = 
new QHBoxLayout;
 
  309     layoutOpacity->addWidget(
new QLabel(
"Opacity",
this));
 
  310     layoutOpacity->addWidget(d->sliderOpacity);
 
  311     d->sliderOpacity->setMaximum(100);
 
  312     d->sliderOpacity->setValue(initOpacityValue());
 
  316     d->comboBoxShader = 
new QComboBox(
this);
 
  317     d->comboBoxShader->setInsertPolicy(QComboBox::InsertAlphabetically);
 
  319     d->checkBoxShader = 
new QCheckBox(
this);
 
  320     d->lineEditShader = 
new QLineEdit(
this);
 
  321     d->buttonShader = 
new QPushButton(
this);
 
  322     d->buttonShader->setText(
"open");
 
  324     d->lineEditShader->setText(this->initShaderValue());
 
  326     this->initComboBoxShaderValue();
 
  328     if(d->lineEditShader->text().isEmpty())
 
  330         d->lineEditShader->setEnabled(
false);
 
  331         d->buttonShader->setEnabled(
false);
 
  332         d->comboBoxShader->setEnabled(
false);
 
  335         d->checkBoxShader->setChecked(
true);
 
  339     QVBoxLayout *layoutShader = 
new QVBoxLayout;
 
  340     QHBoxLayout *layoutShader1 = 
new QHBoxLayout;
 
  342     QLabel *labelShader  = 
new QLabel(
"Shader",
this);
 
  343     layoutShader1->addWidget(labelShader);
 
  344     layoutShader1->addWidget(d->checkBoxShader);
 
  345     layoutShader1->addWidget(d->comboBoxShader);
 
  346     layoutShader1->addWidget(d->buttonShader);
 
  348     layoutShader1->setStretchFactor(labelShader, 2);
 
  349     layoutShader1->setStretchFactor(d->checkBoxShader, 1);
 
  350     layoutShader1->setStretchFactor(d->comboBoxShader, 4);
 
  351     layoutShader1->setStretchFactor(d->buttonShader, 3);
 
  353     layoutShader->addLayout(layoutShader1);
 
  354     layoutShader->addWidget(d->lineEditShader);
 
  356     layoutTop->addWidget(centerGroupBox);
 
  357     layoutTop->addWidget(semiXGroupBox);
 
  358     layoutTop->addWidget(semiYGroupBox);
 
  359     layoutTop->addWidget(semiZGroupBox);
 
  361     layoutTop->addLayout(layoutColorButton);
 
  362     layoutTop->addLayout(layoutOpacity);
 
  363     layoutTop->addLayout(layoutShader);
 
  365     QWidget *top = 
new QWidget(
this);
 
  366     top->setLayout(layoutTop);
 
  367     top->setMaximumWidth(295);
 
  369     dtkSplitter *splitter = 
new dtkSplitter(
this, 
true);
 
  370     splitter->setOrientation(Qt::Vertical);
 
  371     splitter->addWidget(top);
 
  373     QVBoxLayout *layout = 
new QVBoxLayout(
this);
 
  374     layout->setContentsMargins(0, 0, 0, 0);
 
  375     layout->setSpacing(0);
 
  376     layout->addWidget(splitter);
 
  384     connect(d->semix, SIGNAL(valueChanged(
double)), 
this, SLOT(
onUpdateSemix(
double)));
 
  385     connect(d->semiy, SIGNAL(valueChanged(
double)), 
this, SLOT(
onUpdateSemiy(
double)));
 
  386     connect(d->semiz, SIGNAL(valueChanged(
double)), 
this, SLOT(
onUpdateSemiz(
double)));
 
  389     connect(d->semix_x, SIGNAL(valueChanged(
double)), 
this, SLOT(
onSemiXDataChanged(
double)));
 
  390     connect(d->semix_y, SIGNAL(valueChanged(
double)), 
this, SLOT(
onSemiXDataChanged(
double)));
 
  391     connect(d->semix_z, SIGNAL(valueChanged(
double)), 
this, SLOT(
onSemiXDataChanged(
double)));
 
  393     connect(d->semiy_x, SIGNAL(valueChanged(
double)), 
this, SLOT(
onSemiYDataChanged(
double)));
 
  394     connect(d->semiy_y, SIGNAL(valueChanged(
double)), 
this, SLOT(
onSemiYDataChanged(
double)));
 
  395     connect(d->semiy_z, SIGNAL(valueChanged(
double)), 
this, SLOT(
onSemiYDataChanged(
double)));
 
  397     connect(d->semiz_x, SIGNAL(valueChanged(
double)), 
this, SLOT(
onSemiZDataChanged(
double)));
 
  398     connect(d->semiz_y, SIGNAL(valueChanged(
double)), 
this, SLOT(
onSemiZDataChanged(
double)));
 
  399     connect(d->semiz_z, SIGNAL(valueChanged(
double)), 
this, SLOT(
onSemiZDataChanged(
double)));
 
  401     connect(d->colorButton, SIGNAL(colorChanged(QColor)), 
this, SLOT(
onColorChanged(QColor)));
 
  403     connect(d->sliderOpacity, SIGNAL(valueChanged(
int)), 
this, SLOT(
onOpacityChanged(
int)));
 
  404     connect(d->comboBoxShader, SIGNAL(currentIndexChanged(QString)), 
this, SLOT(
onLineEditShaderChanged(QString)));
 
  406     connect(d->buttonShader, SIGNAL(clicked()), 
this, SLOT(
openShader()));
 
  407     connect(d->lineEditShader, SIGNAL(textChanged(QString)), 
this, SLOT(
onShaderChanged(QString)));
 
  414     const QSignalBlocker blockerCenterX(d->center_x);
 
  415     const QSignalBlocker blockerCenterY(d->center_y);
 
  416     const QSignalBlocker blockerCenterZ(d->center_z);
 
  417     const QSignalBlocker blockerSemiX_X(d->semix_x);
 
  418     const QSignalBlocker blockerSemiX_Y(d->semix_y);
 
  419     const QSignalBlocker blockerSemiX_Z(d->semix_z);
 
  420     const QSignalBlocker blockerSemiY_X(d->semiy_x);
 
  421     const QSignalBlocker blockerSemiY_Y(d->semiy_y);
 
  422     const QSignalBlocker blockerSemiY_Z(d->semiy_z);
 
  423     const QSignalBlocker blockerSemiZ_X(d->semiz_x);
 
  424     const QSignalBlocker blockerSemiZ_Y(d->semiz_y);
 
  425     const QSignalBlocker blockerSemiZ_Z(d->semiz_z);
 
  427     d->center_x->setValue(d->ellipsoid->center()->x());
 
  428     d->center_y->setValue(d->ellipsoid->center()->y());
 
  429     d->center_z->setValue(d->ellipsoid->center()->z());
 
  430     d->semix_x->setValue(d->ellipsoid->semiX()->x());
 
  431     d->semix_y->setValue(d->ellipsoid->semiX()->y());
 
  432     d->semix_z->setValue(d->ellipsoid->semiX()->z());
 
  433     d->semiy_x->setValue(d->ellipsoid->semiY()->x());
 
  434     d->semiy_y->setValue(d->ellipsoid->semiY()->y());
 
  435     d->semiy_z->setValue(d->ellipsoid->semiY()->z());
 
  436     d->semiz_x->setValue(d->ellipsoid->semiZ()->x());
 
  437     d->semiz_y->setValue(d->ellipsoid->semiZ()->y());
 
  438     d->semiz_z->setValue(d->ellipsoid->semiZ()->z());
 
  442 void axlInspectorObjectEllipsoid::initComboBoxShaderValue(
void)
 
  444     if(d->comboBoxShader) {
 
  450         QDir dirShader(
":axlShader/shader/");
 
  451         dirShader.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
 
  453         dirShader.setNameFilters(filters);
 
  455         QFileInfoList list = dirShader.entryInfoList();
 
  457         QSettings settings(
"inria", 
"dtk");
 
  459         settings.beginGroup(
"shader");
 
  460         QString defaultPathShader = settings.value(
"path", defaultPath).toString();
 
  461         defaultPathShader.append(
"/");
 
  463         QDir defaultDirShader(defaultPathShader);
 
  464         defaultDirShader.setNameFilters(filters);
 
  465         QFileInfoList list2 = defaultDirShader.entryInfoList();
 
  471         for (
int i = 0; i < list.size(); ++i) {
 
  472             if(!items.contains(list.at(i).fileName()))
 
  473                 items << list.at(i).fileName();
 
  477         int indInitShader = -1;
 
  478         int indCurrentShader = -1;
 
  480         foreach(QString item, items) {
 
  482             d->comboBoxShader->addItem(item);
 
  484             QFileInfo currentFileInfo(d->lineEditShader->text());
 
  486             if(currentFileInfo.exists())
 
  488                 if(item == currentFileInfo.fileName())
 
  489                     indInitShader =indCurrentShader;
 
  494         if(indInitShader != -1)
 
  495             d->comboBoxShader->setCurrentIndex(indInitShader);
 
  501     QDir dirShader( 
":axlShader/shader/");
 
  502     dirShader.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
 
  504     QFileInfo currentFile(dirShader, shader);
 
  506     if(!currentFile.exists()) {
 
  507         QSettings settings(
"inria", 
"dtk");
 
  509         settings.beginGroup(
"shader");
 
  510         QString defaultPathShader = settings.value(
"path", defaultPath).toString();
 
  511         defaultPathShader.append(
"/");
 
  513         QDir defaultDirShader(defaultPathShader);
 
  514         currentFile = QFileInfo(defaultDirShader, shader);
 
  517     d->lineEditShader->setText(currentFile.absoluteFilePath());
 
  520 QString axlInspectorObjectEllipsoid::initShaderValue(
void)
 
  522     return  d->ellipsoid->shader();
 
  525 QColor axlInspectorObjectEllipsoid::initColorValue(
void)
 
  527     return d->ellipsoid->color();
 
  530 int axlInspectorObjectEllipsoid::initOpacityValue(
void)
 
  532     double initOpacity = 0.0;
 
  533     double opacity = d->ellipsoid->opacity();
 
  535     if(opacity > initOpacity)
 
  536         initOpacity = opacity;
 
  538     return 100 * (1.0 - initOpacity);
 
  543     if(d->lineEditShader->isEnabled()) {
 
  545         fileToOpen = QFileDialog::getOpenFileName(
this, tr(
"Open shader"), 
"", tr(
"vs file (*.vs)"));
 
  546         d->lineEditShader->setText(fileToOpen);
 
  552     d->ellipsoid->setShader(shader);
 
  556     d->ellipsoid->touchProperty();
 
  562         d->comboBoxShader->setEnabled(
true);
 
  563         d->lineEditShader->setEnabled(
true);
 
  564         d->buttonShader->setEnabled(
true);
 
  567         d->comboBoxShader->setEnabled(
false);
 
  568         d->lineEditShader->setEnabled(
false);
 
  569         d->buttonShader->setEnabled(
false);
 
  570         d->ellipsoid->setShader(
"");
 
  575     d->ellipsoid->touchProperty();
 
  580     d->ellipsoid->modifyCenterX(x);
 
  581     d->ellipsoid->touchGeometry();
 
  589     d->ellipsoid->modifyCenterY(y);
 
  590     d->ellipsoid->touchGeometry();
 
  598     d->ellipsoid->modifyCenterZ(z);
 
  599     d->ellipsoid->touchGeometry();
 
  607     axlPoint semix(d->semix_x->value(), d->semix_y->value(), d->semix_z->value());
 
  609     d->ellipsoid->modifySemiX(semix.coordinates());
 
  610     d->ellipsoid->calculateYZ();
 
  612     updateDataNoSignals();
 
  614     d->ellipsoid->touchGeometry();
 
  622     axlPoint semiy(d->semiy_x->value(), d->semiy_y->value(), d->semiy_z->value());
 
  624     d->ellipsoid->modifySemiY(semiy.coordinates());
 
  625     d->ellipsoid->calculateXZ();
 
  627     updateDataNoSignals();
 
  629     d->ellipsoid->touchGeometry();
 
  637     axlPoint semiz(d->semiz_x->value(), d->semiz_y->value(), d->semiz_z->value());
 
  639     d->ellipsoid->modifySemiZ(semiz.coordinates());
 
  640     d->ellipsoid->calculateXY();
 
  642     updateDataNoSignals();
 
  644     d->ellipsoid->touchGeometry();
 
  650 void axlInspectorObjectEllipsoid::updateDataNoSignals()
 
  652     this->blockSignals(
true);
 
  654     d->semix->setValue(d->ellipsoid->semiX()->norm());
 
  655     d->semix_x->setValue(d->ellipsoid->semiX()->x());
 
  656     d->semix_y->setValue(d->ellipsoid->semiX()->y());
 
  657     d->semix_z->setValue(d->ellipsoid->semiX()->z());
 
  658     d->semiy->setValue(d->ellipsoid->semiY()->norm());
 
  659     d->semiy_x->setValue(d->ellipsoid->semiY()->x());
 
  660     d->semiy_y->setValue(d->ellipsoid->semiY()->y());
 
  661     d->semiy_z->setValue(d->ellipsoid->semiY()->z());
 
  662     d->semiz->setValue(d->ellipsoid->semiZ()->norm());
 
  663     d->semiz_x->setValue(d->ellipsoid->semiZ()->x());
 
  664     d->semiz_y->setValue(d->ellipsoid->semiZ()->y());
 
  665     d->semiz_z->setValue(d->ellipsoid->semiZ()->z());
 
  667     this->blockSignals(
false);
 
  672     axlPoint semix(d->semix_x->value(), d->semix_y->value(), d->semix_z->value());
 
  677     this->blockSignals(
true);
 
  679     d->semix_x->setValue(semix.x());
 
  680     d->semix_y->setValue(semix.y());
 
  681     d->semix_z->setValue(semix.z());
 
  683     this->blockSignals(
false);
 
  685     d->ellipsoid->modifySemiX(semix.coordinates());
 
  686     d->ellipsoid->touchGeometry();
 
  694     axlPoint semiy(d->semiy_x->value(), d->semiy_y->value(), d->semiy_z->value());
 
  699     this->blockSignals(
true);
 
  701     d->semiy_x->setValue(semiy.x());
 
  702     d->semiy_y->setValue(semiy.y());
 
  703     d->semiy_z->setValue(semiy.z());
 
  705     this->blockSignals(
false);
 
  707     d->ellipsoid->modifySemiY(semiy.coordinates());
 
  708     d->ellipsoid->touchGeometry();
 
  716     axlPoint semiz(d->semiz_x->value(), d->semiz_y->value(), d->semiz_z->value());
 
  721     this->blockSignals(
true);
 
  723     d->semiz_x->setValue(semiz.x());
 
  724     d->semiz_y->setValue(semiz.y());
 
  725     d->semiz_z->setValue(semiz.z());
 
  727     this-> blockSignals(
false);
 
  729     d->ellipsoid->modifySemiZ(semiz.coordinates());
 
  730     d->ellipsoid->touchGeometry();
 
  738     QVariant variant = d->ellipsoid->QObject::property(
"color");
 
  740     if(variant.isValid())
 
  742         d->ellipsoid->setColor(color);
 
  745         d->ellipsoid->touchProperty();
 
  753     double opacity_d = 1.0 - 0.01 * opacity;
 
  755     QVariant variant = d->ellipsoid->QObject::property(
"opacity");
 
  757     if(variant.isValid())
 
  759         d->ellipsoid->setOpacity(opacity_d);
 
  762         d->ellipsoid->touchProperty();
 
~axlInspectorObjectEllipsoid(void)
Class axlPoint defines 3D points. 
void onUpdateSemiz(double radius)
axlInspectorObjectEllipsoid(QWidget *parent=0)
void onColorChanged(QColor color)
void onSemiZDataChanged(double semixz)
void onShaderChanged(QString)
bool caseInsensitiveLessThan(const QString &s1, const QString &s2)
void onLineEditShaderChanged(QString)
void onOpacityChanged(int opacity)
void onSemiXDataChanged(double semixx)
void onUpdateSemix(double radius)
void onSemiYDataChanged(double semixy)
void onCoordDataChanged_x(double x)
void onCoordDataChanged_z(double z)
void onUpdateSemiy(double radius)
QSize sizeHint(void) const 
Class axlEllipsoid defines 3D ellipsoids. 
void onShaderStateChanged(bool isShader)
void onCoordDataChanged_y(double y)
void setData(axlEllipsoid *point)