void __fastcall TFormSceneInspectorForm::Image1MouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
  if (!imageSet || !marchingCubesScene)
    return;

  if (!marchingCubesScene->getSelectedObject())
    return;

  if (Shift.Contains(ssLeft))
  {
    marchingCubesScene->getSelectedObject()->setThresholdIntensity(imageSet->getSlice(TrackBar1->Position)->getVoxelGray(X,Y));
    displaySlice();
  }
}
示例#2
0
FSplashScreen::FSplashScreen(const QPixmap & pixmap, Qt::WindowFlags f ) : QSplashScreen(pixmap, f)
{
	QFile file(":/resources/images/splash/splash.xml");
    if (!file.open(QFile::ReadOnly | QFile::Text)) {
        DebugDialog::debug("unable to load splash.xml: " + file.errorString());
        return;
    }

    QString errorStr;
    int errorLine;
    int errorColumn;
    QDomDocument domDocument;

    if (!domDocument.setContent(&file, true, &errorStr, &errorLine, &errorColumn)) {
		DebugDialog::debug(QString("unable to parse splash.xml: %1 %2 %3").arg(errorStr).arg(errorLine).arg(errorColumn));
		return;
	}

	QDomElement root = domDocument.documentElement();
	int sliceDelay = root.attribute("sliceDelaySeconds", "0").toInt();
	if (sliceDelay > 0) {
		QTimer::singleShot(sliceDelay * 1000, this, SLOT(displaySlice()));
	}

	QDomElement item = root.firstChildElement("item");
	while (!item.isNull()) {
		QString id = item.attribute("id");
		if (!id.isEmpty()) {
			int x = item.attribute("x", "0").toInt();
			int y = item.attribute("y", "0").toInt();
			int width = item.attribute("width", "0").toInt();
			int height = item.attribute("height", "0").toInt();
			QString colorName = item.attribute("color");
			MessageThing * messageThing = new MessageThing();
			messageThing->rect.setCoords(x, y, x + width, y + height);
			if (colorName.isEmpty()) {
				messageThing->color = QColor(0, 0, 0);
			}
			else {
				messageThing->color.setNamedColor(colorName);
			}
			m_items.insert(id, messageThing);
		}
		item = item.nextSiblingElement("item");
	}
}
//---------------------------------------------------------------------------
void __fastcall TFormSceneInspectorForm::CheckListBox1Click(
      TObject *Sender)
{
  bool wasVisible=FormObjectPropertiesForm->Visible;

  FormObjectPropertiesForm->Visible=false;

  marchingCubesScene->setSelectedObjectAtIndex(CheckListBox1->ItemIndex);
  if (CheckListBox1->Checked[CheckListBox1->ItemIndex])
    marchingCubesScene->getObjectAtIndex(CheckListBox1->ItemIndex)->setVisible(true);
  else
    marchingCubesScene->getObjectAtIndex(CheckListBox1->ItemIndex)->setVisible(false);
  marchingCubesScene->updateScene();

  displaySlice();

  FormObjectPropertiesForm->Visible=wasVisible;
}
//---------------------------------------------------------------------------
void __fastcall TFormSceneInspectorForm::TrackBar1Change(TObject *Sender)
{
  TrackBar1->Hint="Slice "+AnsiString(TrackBar1->Position + 1);

  displaySlice();
}
//---------------------------------------------------------------------------
void __fastcall TFormSceneInspectorForm::Button7Click(TObject *Sender)
{
  OpenDialog1->Execute();

  if (OpenDialog1->FileName!="")
    if (imageSet->loadImage(OpenDialog1->FileName.c_str()))
      imageSetLoaded=true;

  if (imageSetLoaded==true)
  {
    TrackBar1->Max=imageSet->getSliceCount()-1;
    TrackBar1->Position=imageSet->getSliceCount() / 2;

    Image1->Width=imageSet->getWidth();
    Image1->Height=imageSet->getHeight();


    Panel7->Top=Panel6->Top+Panel6->Height+2;
    Panel7->Height=Image1->Top+Image1->Height+4;
    Memo1->Left=2;
    Memo1->Top=Panel7->Top+Panel7->Height+2;
    ClientWidth=Panel1->Width+4;
    ClientHeight=Memo1->Top+Memo1->Height+2;


    Image1->Left=(Panel7->Width-Image1->Width)/2;

    Image1->Picture->Bitmap->Width=imageSet->getWidth();
    Image1->Picture->Bitmap->Height=imageSet->getHeight();


    SpeedButton1->Down=true;
    SpeedButton1->Visible=true;
    SpeedButton2->Visible=true;
//      SpeedButton3->Visible=true;
    SpeedButton4->Visible=true;

    Button1->Visible=true;
    Button2->Visible=true;
    Button8->Visible=true;


    oldPanel->Visible=false;
    Panel2->Visible=true;
    oldPanel=Panel2;

    CheckListBox1->Clear();
    ListBox1->Clear();
    CheckListBox3->Clear();
    FormClippingVolumePropertiesForm->CheckListBox1->Clear();


    displaySlice();
    if (marchingCubesScene==NULL)
    {
      marchingCubesScene=new MarchingCubesScene();

      marchingCubesScene->setImageSet(imageSet);

      FormObjectPropertiesForm->setMarchingCubesScene(marchingCubesScene);
      FormClippingVolumePropertiesForm->setMarchingCubesScene(marchingCubesScene);
      FormTexturedSurfacePropertiesForm->setMarchingCubesScene(marchingCubesScene);

      marchingCubesScene->initializeMarchingCubesScene();
    }
    else
    {
      marchingCubesScene->setImageSet(imageSet);
      marchingCubesScene->reshapeForNewImageSet();

      FormObjectPropertiesForm->Visible=false;
      FormClippingVolumePropertiesForm->Visible=false;
      FormTexturedSurfacePropertiesForm->Visible=false;

      marchingCubesScene->updateScene();
    }

    displaySlice();
  }
}