BackgroundWidget::BackgroundWidget( MasterConfiguration& configuration,
                                    QWidget* parent_ )
    : QDialog(parent_)
    , configuration_(configuration)
{
    setWindowTitle(tr("Background settings"));

    const int frameStyle = QFrame::Sunken | QFrame::Panel;

    // Get current variables

    previousColor_ = configuration_.getBackgroundColor();
    previousBackgroundURI_ = configuration_.getBackgroundUri();

    // Color chooser

    colorLabel_ = new QLabel(previousColor_.name());
    colorLabel_->setFrameStyle(frameStyle);
    colorLabel_->setPalette(QPalette(previousColor_));
    colorLabel_->setAutoFillBackground(true);

    QPushButton *colorButton = new QPushButton(tr("Choose background color..."));
    connect(colorButton, SIGNAL(clicked()), this, SLOT(chooseColor()));


    // Background chooser

    backgroundLabel_ = new QLabel(previousBackgroundURI_);
    backgroundLabel_->setFrameStyle(frameStyle);
    QPushButton *backgroundButton = new QPushButton(tr("Choose background content..."));
    connect(backgroundButton, SIGNAL(clicked()), this, SLOT(openBackgroundContent()));

    QPushButton *backgroundClearButton = new QPushButton(tr("Remove background"));
    connect(backgroundClearButton, SIGNAL(clicked()), this, SLOT(removeBackground()));


    // Standard buttons

    QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                     | QDialogButtonBox::Cancel, Qt::Horizontal, this);

    connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
    connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));


    // Layout

    QGridLayout *gridLayout = new QGridLayout;
    gridLayout->setColumnStretch(1, 1);
    gridLayout->setColumnMinimumWidth(1, 250);
    setLayout(gridLayout);

    gridLayout->addWidget(colorButton, 0, 0);
    gridLayout->addWidget(colorLabel_, 0, 1);
    gridLayout->addWidget(backgroundButton, 1, 0);
    gridLayout->addWidget(backgroundLabel_, 1, 1);
    gridLayout->addWidget(backgroundClearButton, 2, 0);
    gridLayout->addWidget(buttonBox, 2, 1);
}
QGraphicsScene * ClusteredArranger::arrange(SegmentList const & segments) const {
   QGraphicsScene * arrangement = new QGraphicsScene();

   QTime time;
   time.start();

   // determine background
   Segment * background = determineBackground(segments);
   SegmentList segmentsWOBack = removeBackground(segments, background);
   arrangement->setBackgroundBrush(QBrush(QColor(background->color().toQRgb())));
   segmentsWOBack.calculateFeatureVariances();

   // initialize layout
   //initializeLayout(segmentsWOBack, segmentsWOBack.featX(), segmentsWOBack.featY());
   initializeLayout(segmentsWOBack, xAxisBox->currentIndex(), yAxisBox->currentIndex());

   // find clusters
   time.restart();
   QList<SegmentList> clusters = meanShift(segmentsWOBack);
   qDebug("Segments clustered in %f seconds", time.restart()/1000.0);
   qDebug("  %d clusters found", clusters.size());

   // refine clusters
   //int counter = 0;
   foreach (SegmentList cluster, clusters) {
      if (clusterBox->currentIndex() == 0) {
         refineLayoutCircles(cluster);
      }
      else if (clusterBox->currentIndex() == 1) {
         refineLayoutPiles(cluster);
      }

      // debug output
      /*QGraphicsScene scene;
      scene.setBackgroundBrush(QBrush(QColor(255, 255, 255)));
      foreach(Segment * const segment, cluster) {
         scene.addItem(segment->toQGraphicsItem());
         // without the following line QPainter tends to crash
         scene.width();
      }
      ++counter;
      saveScene(&scene, QString("Test%1.png").arg(counter, 2));*/
   }

   // refine layout
   if (clusterBox->currentIndex() == 0) {
      refineLayoutByPlace(clusters);
   }
   else if (clusterBox->currentIndex() == 1) {
      refineLayoutBySize(clusters);
   }

   // convert the segments to QGraphicsItems and add to QGraphicsScene
   foreach(Segment const * const segment, segmentsWOBack) {
      arrangement->addItem(segment->toQGraphicsItem());
      // without the following line QPainter tends to crash
      arrangement->width();
   }
Exemple #3
0
void wyToast::setBackground(wyNode* bg) {
	// remove old bg from scene
	removeBackground();

	// save new bg
	m_bg = bg;
	addBackground();

	// set flag
	m_dirty = true;
	m_useDefaultBg = false;
}
	//------------------------------------------------------------------------
	SkyDef::~SkyDef()
	{
		removeFog();
		removeAllFogControllers();
		removeFarClippingPlane();
		removeAllFarClippingPlaneControllers();
		removeBackground();
		removeAllBackgroundControllers();
		removeAllAtmospheres();
		removeAllAtmosphereControllers();
		removeAllBodies();
		removeAllBodyControllers();
		removeAllCloudLayers();
		removeAllCloudLayerControllers();
		removeAllMaterialControllers();
		removeAllSounds();
		removeAllSoundControllers();
		removeAllOverlays();
		removeAllOverlayControllers();
	}