void QgsMultiBandColorRendererWidget::setFromRenderer( const QgsRasterRenderer *r )
{
  const QgsMultiBandColorRenderer *mbcr = dynamic_cast<const QgsMultiBandColorRenderer *>( r );
  if ( mbcr )
  {
    mRedBandComboBox->setBand( mbcr->redBand() );
    mGreenBandComboBox->setBand( mbcr->greenBand() );
    mBlueBandComboBox->setBand( mbcr->blueBand() );

    mDisableMinMaxWidgetRefresh = true;
    setMinMaxValue( mbcr->redContrastEnhancement(), mRedMinLineEdit, mRedMaxLineEdit );
    setMinMaxValue( mbcr->greenContrastEnhancement(), mGreenMinLineEdit, mGreenMaxLineEdit );
    setMinMaxValue( mbcr->blueContrastEnhancement(), mBlueMinLineEdit, mBlueMaxLineEdit );
    mDisableMinMaxWidgetRefresh = false;

    mMinMaxWidget->setFromMinMaxOrigin( mbcr->minMaxOrigin() );
  }
  else
  {
    if ( mRedBandComboBox->findText( tr( "Red" ) ) > -1 && mRedBandComboBox->findText( tr( "Green" ) ) > -1 &&
         mRedBandComboBox->findText( tr( "Blue" ) ) > -1 )
    {
      mRedBandComboBox->setCurrentIndex( mRedBandComboBox->findText( tr( "Red" ) ) );
      mGreenBandComboBox->setCurrentIndex( mGreenBandComboBox->findText( tr( "Green" ) ) );
      mBlueBandComboBox->setCurrentIndex( mBlueBandComboBox->findText( tr( "Blue" ) ) );
    }
    else
    {
      mRedBandComboBox->setCurrentIndex( mRedBandComboBox->count() > 1 ? 1 : 0 );
      mGreenBandComboBox->setCurrentIndex( mRedBandComboBox->count() > 2 ? 2 : 0 );
      mBlueBandComboBox->setCurrentIndex( mRedBandComboBox->count() > 3 ? 3 : 0 );
    }
  }
}
示例#2
0
void TabDialog::hellreset() {
  selImage->brightness=0;
  selImage->contrast=0;
  sliderwechsel();
  setMinMaxValue();
  emit newColtype();
}
示例#3
0
void TabDialog::apply() {
  // min und max in gray value table
  if (strlen(VNewString(tablemin->text()))>0 && strlen(VNewString(tablemax->text()))>0) {
    float ymax = (float)selImage->maxwert;
    float ymin = (float)selImage->minwert;
    float ymaxmin = (float)(ymax - ymin);
    float min1 = atof(strtok(VNewString(tablemin->text())," "));
    float max1 = atof(strtok(VNewString(tablemax->text())," "));
    if (min1 > max1) {
      tablemin->setText(tr("%1").arg(selImage->minwert1));
      tablemax->setText(tr("%1").arg(selImage->maxwert1));
    } else {
      selImage->anamean = min1;
      selImage->anaalpha = (float)255.0/(max1 - selImage->anamean);
      int newbrig = (int)rint(stretch*(ymin - selImage->anamean + (ymaxmin - 255.0/selImage->anaalpha)/2.0)/ymaxmin);
      int newhell = (int)rint(log(selImage->anaalpha*ymaxmin/255.0)/log(stretchfact));

      if ((newbrig>=-100 && newbrig<=100) && (newhell>=-100 && newhell<=100)) {
        brig->setValue(newbrig);
	hell->setValue(newhell);
      } else {
	brig->setEnabled( FALSE );
	hell->setEnabled( FALSE );
	lbrigbr->setEnabled( FALSE );
	lwhit->setEnabled( FALSE );
      }
      setMinMaxValue();
      emit newColtype();
    }
  } else {
    tablemin->setText(tr("%1").arg(selImage->minwert1));
    tablemax->setText(tr("%1").arg(selImage->maxwert1));
  }
  emit newColtype();
}
void QgsMultiBandColorRendererWidget::setFromRenderer( const QgsRasterRenderer* r )
{
  const QgsMultiBandColorRenderer* mbcr = dynamic_cast<const QgsMultiBandColorRenderer*>( r );
  if ( mbcr )
  {
    mRedBandComboBox->setCurrentIndex( mRedBandComboBox->findData( mbcr->redBand() ) );
    mGreenBandComboBox->setCurrentIndex( mGreenBandComboBox->findData( mbcr->greenBand() ) );
    mBlueBandComboBox->setCurrentIndex( mBlueBandComboBox->findData( mbcr->blueBand() ) );

    setMinMaxValue( mbcr->redContrastEnhancement(), mRedMinLineEdit, mRedMaxLineEdit );
    setMinMaxValue( mbcr->greenContrastEnhancement(), mGreenMinLineEdit, mGreenMaxLineEdit );
    setMinMaxValue( mbcr->blueContrastEnhancement(), mBlueMinLineEdit, mBlueMaxLineEdit );
  }
  else
  {
    mRedBandComboBox->setCurrentIndex( mRedBandComboBox->findText( tr( "Red" ) ) );
    mGreenBandComboBox->setCurrentIndex( mGreenBandComboBox->findText( tr( "Green" ) ) );
    mBlueBandComboBox->setCurrentIndex( mBlueBandComboBox->findText( tr( "Blue" ) ) );
  }
}
示例#5
0
void TabDialog::helligkeit(int mean) {
  selImage->brightness=mean;
  float ymax = (float)selImage->maxwert;
  float ymin = (float)selImage->minwert;
  float ymaxmin = (float)(ymax - ymin);
  shift = (float)mean * ymaxmin/stretch;
  selImage->anaalpha = factor * 255.0 / ymaxmin;
  selImage->anamean  = (float)ymin - shift + (ymaxmin - 255.0/selImage->anaalpha)/2.0 ;
  setMinMaxValue();
  emit newColtype();
}
示例#6
0
void TabDialog::contrastl(int alpha) {
  selImage->contrast=alpha;
  float ymax = (float)selImage->maxwert;
  float ymin = (float)selImage->minwert;
  float ymaxmin = (float)(ymax - ymin);
  factor = (float)pow(stretchfact,(double)alpha);
  selImage->anaalpha = factor * 255.0 / ymaxmin;
  selImage->anamean  = (float)ymin - shift + (ymaxmin - 255.0/selImage->anaalpha)/2.0 ;
  setMinMaxValue();
  emit newColtype();
}
示例#7
0
void TabDialog::setupTab5()
{
  QVBox *tab5 = new QVBox( this );
  tab5->setMargin( 5 );

  QButtonGroup *cont;
  cont = new QButtonGroup( 1, QGroupBox::Horizontal, "contrast / brightness", tab5 );

  brig = new QSlider( cont, "mean" );
  brig->setOrientation ( Horizontal );
  brig->setValue ( 0 );
  brig->setRange( -100, 100 );
  brig->setTickInterval ( 100 );
  brig->setTickmarks(QSlider::TickSetting(3));
  QObject::connect( brig, SIGNAL(valueChanged(int)), this, SLOT( helligkeit(int) ) );
  lbrigbr = new QLabel( "brightness", cont );

  hell = new QSlider( cont, "alpha" );
  hell->setOrientation ( Horizontal );
  hell->setValue ( 0 );
  hell->setRange( -100, 100 );
  hell->setTickInterval ( 100 );
  hell->setTickmarks(QSlider::TickSetting(3));
  lwhit = new QLabel( "contrast", cont );

  QObject::connect( hell, SIGNAL(valueChanged(int)), this, SLOT( contrastl(int) ) );

  QButtonGroup *table_minmax = new QButtonGroup( 2, QGroupBox::Horizontal, "Gray value table", cont );

  QButtonGroup *table_min = new QButtonGroup( 1, QGroupBox::Horizontal, "minimum", table_minmax );
  tablemin = new QLineEdit( tr("%1").arg(selImage->minwert1), table_min );
  tablemin->setFocus();

  QButtonGroup *table_max = new QButtonGroup( 1, QGroupBox::Horizontal, "maximum", table_minmax );
  tablemax = new QLineEdit( tr("%1").arg(selImage->maxwert1), table_max );
  tablemax->setFocus();

  setMinMaxValue();
  Reset = new QPushButton ( "Reset", cont );
  
  if (selImage->pixel_repn == VBitRepn) {
    Reset->setEnabled( FALSE );
    lbrigbr->setEnabled( FALSE );
    lwhit->setEnabled( FALSE );
    brig->setEnabled( FALSE );
    hell->setEnabled( FALSE );
  }


  connect( Reset, SIGNAL(clicked()), SLOT(hellreset()) );
  addTab( tab5, "Contrast" );
}