MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); m_particleColors = new QActionGroup(this); m_particleColors->addAction(ui.actionParticleBlack); m_particleColors->addAction(ui.actionParticleRed); m_particleColors->addAction(ui.actionParticleGreen); m_particleColors->addAction(ui.actionParticleBlue); m_particleColors->addAction(ui.actionParticleWhite); m_particleColors->addAction(ui.actionParticleHSV); ui.actionParticleHSV->setChecked(true); // QSize gvSize = ui.graphicsView->size(); // ui.graphicsView->setSceneRect(0, 0, gvSize.width(), gvSize.height()); // qDebug() << "Scene Rect: " << ui.graphicsView->sceneRect(); ui.graphicsView->setScene(&gs); ui.graphicsView->setRenderHints( QPainter::Antialiasing | QPainter::SmoothPixmapTransform); ui.graphicsView->scale(2, 2); ui.graphicsView->setBackgroundBrush(QBrush(Qt::black, Qt::SolidPattern)); // addImage(tr("/base/imageParticles/data/12.T2.slice.nrrd")); // addImage(tr("/base/imageParticles/data/13.T2.slice.nrrd")); #ifdef __APPLE__ addImage(tr("/data/2D/circle.jpg")); loadMask(tr("/data/2D/circle-boundary.png")); addImage(tr("/data/2D/circle.jpg")); loadMask(tr("/data/2D/random-boundary.jpg")); #else addImage(tr("/base/imageParticles/data/10.T2.slice.nrrd")); addImage(tr("/base/imageParticles/data/circle.jpg")); loadMask(tr("/base/imageParticles/data/circle-boundary.png")); loadMask(tr("/base/imageParticles/data/random-boundary.jpg")); #endif QObject::connect(&m_Timer, SIGNAL(timeout()), this, SLOT(particleAnimationTimeout())); QObject::connect(ui.actionShowImage, SIGNAL(triggered()), this, SLOT(updateScene())); QObject::connect(ui.actionShowShapeMask, SIGNAL(triggered()), this, SLOT(updateScene())); QObject::connect(ui.actionShowShapeDistanceMap, SIGNAL(triggered()), this, SLOT(updateScene())); QObject::connect(m_particleColors, SIGNAL(triggered(QAction*)), this, SLOT(updateScene())); QObject::connect(ui.actionShowPhantomParticles, SIGNAL(triggered()), this, SLOT(updateScene())); ui.listWidget->setCurrentRow(0); }
void GhostFormSpell::load(const SpellData& bean, LevelMovableGameObject* mob, const sf::Vector2f& target) { MovingBehavior* mb = mob->getMovingBehavior(); float velocityScale = (bean.speed + mb->getMaxVelocityX()) / mb->getMaxVelocityX(); SpellData data(bean); data.speed = 0.f; data.boundingBox = *mob->getBoundingBox(); Spell::load(data, mob, target); loadParticleSystem(bean.speed); mb->setMaxXVelocityScale(velocityScale); mb->setIgnoreDynamicTiles(true); m_mob->addAttributes(getActiveDuration(), m_additionalDamage); m_lastSafePosition = m_mob->getPosition(); loadMask(); }
App::App(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); centralWidget = new QWidget; centralLayout = new QVBoxLayout; contentWidget = new QWidget; contentLayout = new QGridLayout; elapsedTimeLabel = new QLabel("Elapsed time: 0 s"); elapsedTimeLabel->setFixedSize(300, 15); sourceLabel = new QLabel; sourceLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); sourceLabel->setScaledContents(true); contentLayout->addWidget(sourceLabel, 0, 0); maskLabel = new QLabel; maskLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); maskLabel->setScaledContents(true); contentLayout->addWidget(maskLabel, 0, 1); v_disparityLabel = new QLabel; v_disparityLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); v_disparityLabel->setScaledContents(true); contentLayout->addWidget(v_disparityLabel, 0, 2); v_disparity_N_Label = new QLabel; v_disparity_N_Label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); v_disparity_N_Label->setScaledContents(true); contentLayout->addWidget(v_disparity_N_Label, 2, 2); u_disparityLabel = new QLabel; u_disparityLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); u_disparityLabel->setScaledContents(true); contentLayout->addWidget(u_disparityLabel, 2, 1); resultLabel = new QLabel; resultLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); resultLabel->setScaledContents(true); contentLayout->addWidget(resultLabel, 2, 0); contentWidget->setLayout(contentLayout); centralLayout->addWidget(elapsedTimeLabel); centralLayout->addWidget(contentWidget); centralWidget->setLayout(centralLayout); setCentralWidget(centralWidget); connect(ui.action_Load_default, SIGNAL(triggered()), this, SLOT(loadDefault())); connect(ui.action_Load_source, SIGNAL(triggered()), this, SLOT(loadSource())); connect(ui.action_Load_mask, SIGNAL(triggered()), this, SLOT(loadMask())); connect(ui.action_Remove_mask, SIGNAL(triggered()), this, SLOT(removeMask())); connect(ui.action_Save, SIGNAL(triggered()), this, SLOT(saveResult())); connect(ui.actionV_Disparity, SIGNAL(triggered()), this, SLOT(v_disparityCall())); connect(ui.actionU_Disparity, SIGNAL(triggered()), this, SLOT(u_disparityCall())); connect(ui.actionHoughLineV_Disp, SIGNAL(triggered()), this, SLOT(houghLinesV_DispCall())); connect(ui.actionPHoughLineV_Disp, SIGNAL(triggered()), this, SLOT(probabilisticHoughLinesV_DispCall())); connect(ui.actionCudaHoughLineV_Disp, SIGNAL(triggered()), this, SLOT(cudaHoughLinesV_DispCall())); connect(ui.actionCudaPHoughLineV_Disp, SIGNAL(triggered()), this, SLOT(cudaProbabilisticHoughLinesV_DispCall())); }
void maskImageWidget::init(const QImage& image) { setWindowTitle(tr("Mask Editor")); QPixmap load("coral_open32x32.png"); QPixmap save("coral_save32x32.png"); QPixmap undo("coral_undo32x32.png"); QPixmap redo("coral_redo32x32.png"); QPixmap pen("coral_pencil32x32.png"); QPixmap eraser("coral_eraser32x32.png"); QAction *canvasloadmask = new QAction(this); canvasloadmask->setIcon(load); canvasloadmask->setText(tr("&Load Mask")); QAction *canvassavemask = new QAction(this); canvassavemask->setIcon(QIcon(save)); canvassavemask->setText(tr("&Save Mask")); QAction *canvasundo = new QAction(this); canvasundo->setIcon(QIcon(undo)); canvasundo->setText(tr("&Undo")); canvasundo->setShortcut(QKeySequence("Ctrl+Z")); QAction *canvasredo = new QAction(this); canvasredo->setIcon(QIcon(redo)); canvasredo->setText(tr("&Redo")); canvasredo->setShortcut(QKeySequence("Ctrl+Shift+Z")); QAction *canvasclear = new QAction(tr("&Clear"), this); canvasclear->setShortcut(QKeySequence("Ctrl+C")); QAction *canvaspen = new QAction(this); canvaspen->setIcon(QIcon(pen)); canvaspen->setText(tr("&Pen")); QAction *canvaseraser = new QAction(this); canvaseraser->setIcon(QIcon(eraser)); canvaseraser->setText(tr("&Eraser")); QActionGroup *actions(new QActionGroup(this)); actions->addAction(canvaspen); actions->addAction(canvaseraser); canvaspen->setCheckable(true); canvaseraser->setCheckable(true); canvaspen->setChecked(true); actions->setExclusive(true); QAction *canvasOK = new QAction(this); canvasOK->setText("OK"); QAction *canvasCancel = new QAction(this); canvasCancel->setText("Cancel"); QBoxLayout *layout(new QVBoxLayout(this)); // We don't want a real-size image. We will downscale it! QImage image_to_use = image; pimpl_->realwidth_ = image.width(); pimpl_->realheight_ = image.height(); qDebug("maskImageWidget::Init real wxh %i x%i",pimpl_->realwidth_,pimpl_->realheight_); QDesktopWidget *desktop(QApplication::desktop()); if (image.width() > (desktop->width() * .8) || image.height() > (desktop->height() * .8)) { int width(desktop->width()), height(desktop->height()); image_to_use = image.scaled((int)std::floor(width * .75), (int)std::floor(height * .75), Qt::KeepAspectRatio); } pimpl_->render_area_ = new maskRenderWidget(image_to_use, this); QToolBar *canvas_toolbar(new QToolBar(this)); canvas_toolbar->addSeparator(); canvas_toolbar->addAction(canvasloadmask); canvas_toolbar->addAction(canvassavemask); canvas_toolbar->addSeparator(); canvas_toolbar->addAction(canvasundo); canvas_toolbar->addAction(canvasredo); canvas_toolbar->addSeparator(); QSpinBox *pen_width(new QSpinBox(canvas_toolbar)); pen_width->setToolTip(tr("Pen Width")); pen_width->setRange(0, 80); pen_width->setSingleStep(2); pen_width->setValue(16); connect(pen_width, SIGNAL(valueChanged(int)), SLOT(setCanvasPenWidth(int))); canvas_toolbar->addWidget(pen_width); canvas_toolbar->addAction(canvaspen); canvas_toolbar->addAction(canvaseraser); canvas_toolbar->addSeparator(); QSpinBox *gradient(new QSpinBox(canvas_toolbar)); gradient->setToolTip("Gradient Threshold"); gradient->setRange(0, 255); gradient->setValue(pimpl_->threshold_gradient_); connect(gradient, SIGNAL(valueChanged(int)), SLOT(setGradientThreshold(int))); QSpinBox *fixed(new QSpinBox(canvas_toolbar)); fixed->setToolTip("Fixed Threshold"); fixed->setRange(0, 255); fixed->setValue(pimpl_->threshold_fixed_); connect(fixed, SIGNAL(valueChanged(int)), SLOT(setFixedThreshold(int))); canvas_toolbar->addWidget(gradient); canvas_toolbar->addWidget(fixed); canvas_toolbar->addSeparator(); canvas_toolbar->addAction(canvasOK); canvas_toolbar->addAction(canvasCancel); layout->addWidget(canvas_toolbar); layout->addWidget(pimpl_->render_area_); layout->setSizeConstraint(QLayout::SetFixedSize); connect(canvasloadmask, SIGNAL(activated()), SLOT(loadMask())); connect(canvassavemask, SIGNAL(activated()), SLOT(saveMask())); connect(canvasundo, SIGNAL(activated()), pimpl_->render_area_, SLOT(undo())); connect(canvasredo, SIGNAL(activated()), pimpl_->render_area_, SLOT(redo())); connect(canvasclear, SIGNAL(activated()), pimpl_->render_area_, SLOT(clear())); connect(canvaspen, SIGNAL(activated()), SLOT(setCanvasPen())); connect(canvaseraser, SIGNAL(activated()), SLOT(setCanvasEraser())); connect(pimpl_->render_area_, SIGNAL(pointSelected(const QPoint &)), SLOT(automaticMask(const QPoint &))); connect(canvasOK, SIGNAL(activated()), SLOT(accept())); connect(canvasCancel, SIGNAL(activated()), SLOT(reject())); }
void SVImageMainWindow::SVImageMainWindowPrivate::setupActions() { // // "File"-menu // actionLoad = new QAction("&Open", mw); actionLoad->setIcon(QIcon(":icons/document-open.png")); actionLoad->setShortcut(QKeySequence::Open); connect(actionLoad, SIGNAL(triggered()), mw, SLOT(load())); actionReload = new QAction("&Reload", mw); actionReload->setIcon(QIcon(":icons/view-refresh.png")); actionReload->setShortcut(QKeySequence::Refresh); actionReload->setEnabled(false); connect(actionReload, SIGNAL(triggered()), mw, SLOT(reload())); actionPrint = new QAction("&Print", mw); actionPrint->setIcon(QIcon(":icons/document-print.png")); actionPrint->setShortcut(QKeySequence::Print); actionPrint->setEnabled(false); connect(actionPrint, SIGNAL(triggered()), mw, SLOT(print())); actionQuit = new QAction("&Quit", mw); #if QT_VERSION >= 0x040600 actionQuit->setShortcut(QKeySequence::Quit); #else actionQuit->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q)); #endif connect(actionQuit, SIGNAL(triggered()), mw, SLOT(close())); // // "Plot"-menu // actionZoomFit = new QAction("Fit to Window", mw); actionZoomFit->setIcon(QIcon(":icons/zoom-fit-best.png")); actionZoomFit->setEnabled(false); connect(actionZoomFit, SIGNAL(triggered()), mw, SLOT(zoomFit())); actionZoom = new QAction("&Zoom", mw); actionZoom->setIcon(QIcon(":icons/page-zoom.png")); actionZoom->setCheckable(true); actionZoom->setEnabled(false); connect(actionZoom, SIGNAL(toggled(bool)), mw, SLOT(setZoomEnabled(bool))); actionMove = new QAction("&Move", mw); actionMove->setIcon(QIcon(":icons/input-mouse.png")); actionMove->setCheckable(true); actionMove->setChecked(false); actionMove->setEnabled(false); connect(actionMove, SIGNAL(toggled(bool)), mw, SLOT(setMoveEnabled(bool))); actionZoom->setChecked(true); // // "Go"-menu // actionGoFirst = new QAction("&First", mw); actionGoFirst->setShortcut(QKeySequence::MoveToStartOfLine); actionGoFirst->setEnabled(false); connect(actionGoFirst, SIGNAL(triggered()), mw, SLOT(goFirst())); actionGoPrevious = new QAction("&Previous", mw); actionGoPrevious->setShortcut(QKeySequence::MoveToPreviousPage); actionGoPrevious->setIcon(mw->style()->standardIcon(QStyle::SP_MediaSkipBackward)); actionGoPrevious->setEnabled(false); connect(actionGoPrevious, SIGNAL(triggered()), mw, SLOT(goPrevious())); actionGoNext = new QAction("&Next", mw); actionGoNext->setShortcut(QKeySequence::MoveToNextPage); actionGoNext->setIcon(mw->style()->standardIcon(QStyle::SP_MediaSkipForward)); actionGoNext->setEnabled(false); connect(actionGoNext, SIGNAL(triggered()), mw, SLOT(goNext())); actionGoLast = new QAction("&Last", mw); actionGoLast->setShortcut(QKeySequence::MoveToEndOfLine); actionGoLast->setEnabled(false); connect(actionGoLast, SIGNAL(triggered()), mw, SLOT(goLast())); actionWatchLatest = new QAction("&Watch Latest", mw); actionWatchLatest->setCheckable(true); actionWatchLatest->setChecked(false); actionWatchLatest->setEnabled(false); connect(actionWatchLatest, SIGNAL(toggled(bool)), mw, SLOT(setWatchLatest(bool))); // // "Tools"-menu // actionMaskNew = new QAction("&New", mw); actionMaskNew->setEnabled(false); connect(actionMaskNew, SIGNAL(triggered()), mw, SLOT(newMask())); actionMaskLoad = new QAction("&Open", mw); actionMaskLoad->setEnabled(false); connect(actionMaskLoad, SIGNAL(triggered()), mw, SLOT(loadMask())); actionMaskSaveAs = new QAction("&Save As ...", mw); actionMaskSaveAs->setEnabled(false); connect(actionMaskSaveAs, SIGNAL(triggered()), mw, SLOT(saveMaskAs())); actionMaskByThreshold = new QAction("By Threshold ...", mw); actionMaskByThreshold->setEnabled(false); connect(actionMaskByThreshold, SIGNAL(triggered()), mw, SLOT(setMaskByThreshold())); actionMaskAddPoint = new QAction("Add pixel", mw); actionMaskAddPoint->setCheckable(true); actionMaskAddPoint->setChecked(false); actionMaskAddPoint->setEnabled(false); connect(actionMaskAddPoint, SIGNAL(toggled(bool)), mw, SLOT(setMaskAddPointsEnabled(bool))); actionMaskAddPolygon = new QAction("Add polygon", mw); actionMaskAddPolygon->setCheckable(true); actionMaskAddPolygon->setChecked(false); actionMaskAddPolygon->setEnabled(false); connect(actionMaskAddPolygon, SIGNAL(toggled(bool)), mw, SLOT(setMaskAddPolygonEnabled(bool))); actionMaskRemovePoint = new QAction("Remove pixel", mw); actionMaskRemovePoint->setCheckable(true); actionMaskRemovePoint->setChecked(false); actionMaskRemovePoint->setEnabled(false); connect(actionMaskRemovePoint, SIGNAL(toggled(bool)), mw, SLOT(setMaskRemovePointsEnabled(bool))); actionMaskRemovePolygon = new QAction("Remove polygon", mw); actionMaskRemovePolygon->setCheckable(true); actionMaskRemovePolygon->setChecked(false); actionMaskRemovePolygon->setEnabled(false); connect(actionMaskRemovePolygon, SIGNAL(toggled(bool)), mw, SLOT(setMaskRemovePolygonEnabled(bool))); // // "Window"-menu // actionPreviousPlot = new QAction("&Previous Image", mw); actionPreviousPlot->setShortcut(QKeySequence::PreviousChild); connect(actionPreviousPlot, SIGNAL(triggered()), mdiArea, SLOT(activatePreviousSubWindow())); actionNextPlot = new QAction("&Next Image", mw); actionNextPlot->setShortcut(QKeySequence::NextChild); connect(actionNextPlot, SIGNAL(triggered()), mdiArea, SLOT(activateNextSubWindow())); actionCascadePlots = new QAction("C&ascade Images", mw); connect(actionCascadePlots, SIGNAL(triggered()), mdiArea, SLOT(cascadeSubWindows())); actionTilePlots = new QAction("&Tile Images", mw); connect(actionTilePlots, SIGNAL(triggered()), mdiArea, SLOT(tileSubWindows())); actionClosePlot = new QAction("&Close Current Image", mw); actionClosePlot->setShortcut(QKeySequence::Close); connect(actionClosePlot, SIGNAL(triggered()), mdiArea, SLOT(closeActiveSubWindow())); actionCloseAllPlots = new QAction("Close &All Images", mw); connect(actionCloseAllPlots, SIGNAL(triggered()), mdiArea, SLOT(closeAllSubWindows())); // // "Help"-menu // actionAbout = new QAction("&About", mw); connect(actionAbout, SIGNAL(triggered()), mw, SLOT(about())); actionGroupPlotPicker = new QActionGroup(mw); actionGroupPlotPicker->addAction(actionZoom); actionGroupPlotPicker->addAction(actionMove); actionGroupPlotPicker->addAction(actionMaskAddPoint); actionGroupPlotPicker->addAction(actionMaskAddPolygon); actionGroupPlotPicker->addAction(actionMaskRemovePoint); actionGroupPlotPicker->addAction(actionMaskRemovePolygon); }