void paintSelection() { #if 0 SoAnnotation* hudRoot = new SoAnnotation; hudRoot->ref(); SoOrthographicCamera* hudCam = new SoOrthographicCamera(); hudCam->viewportMapping = SoCamera::LEAVE_ALONE; // Set the position in the window. // [0, 0] is in the center of the screen. // SoTranslation* hudTrans = new SoTranslation; hudTrans->translation.setValue(-1.0f, -1.0f, 0.0f); QImage image(100,100,QImage::Format_ARGB32_Premultiplied); image.fill(0x00000000); SoSFImage sfimage; Gui::BitmapFactory().convert(image, sfimage); SoImage* hudImage = new SoImage(); hudImage->image = sfimage; // Assemble the parts... // hudRoot->addChild(hudCam); hudRoot->addChild(hudTrans); hudRoot->addChild(hudImage); Gui::View3DInventorViewer* viewer = this->getViewer(); static_cast<SoGroup*>(viewer->getSceneGraph())->addChild(hudRoot); QWidget* gl = viewer->getGLWidget(); DrawingPlane pln(hudImage->image, viewer, gl); gl->installEventFilter(&pln); QEventLoop loop; QObject::connect(&pln, SIGNAL(emitSelection()), &loop, SLOT(quit())); loop.exec(); static_cast<SoGroup*>(viewer->getSceneGraph())->removeChild(hudRoot); #endif }
void ViewProviderPlacement::attach(App::DocumentObject* pcObject) { ViewProviderGeometryObject::attach(pcObject); SoAnnotation *lineSep = new SoAnnotation(); SoAutoZoomTranslation *zoom = new SoAutoZoomTranslation; SoDrawStyle* style = new SoDrawStyle(); style->lineWidth = 2.0f; SoMaterialBinding* matBinding = new SoMaterialBinding; matBinding->value = SoMaterialBinding::PER_FACE; lineSep->addChild(zoom); lineSep->addChild(style); lineSep->addChild(matBinding); lineSep->addChild(pMat); lineSep->addChild(pCoords); lineSep->addChild(pLines); addDisplayMaskMode(lineSep, "Base"); }
void ViewProviderOriginFeature::attach(App::DocumentObject* pcObject) { ViewProviderGeometryObject::attach(pcObject); float defaultSz = ViewProviderOrigin::defaultSize(); float sz = Size.getValue () / defaultSz; // Create an external separator SoSeparator *sep = new SoSeparator(); // Add material from the base class sep->addChild(pcShapeMaterial); // Bind same material to all part SoMaterialBinding* matBinding = new SoMaterialBinding; matBinding->value = SoMaterialBinding::OVERALL; sep->addChild(matBinding); // Scale feature to the given size pScale->scaleFactor = SbVec3f (sz, sz, sz); sep->addChild (pScale); // Setup font size SoFont *font = new SoFont (); font->size.setValue ( defaultSz/10.); sep->addChild ( font ); // Create the selection node SoFCSelection *highlight = new SoFCSelection (); highlight->applySettings (); if ( !Selectable.getValue() ) { highlight->selectionMode = Gui::SoFCSelection::SEL_OFF; } highlight->objectName = getObject()->getNameInDocument(); highlight->documentName = getObject()->getDocument()->getName(); highlight->style = SoFCSelection::EMISSIVE_DIFFUSE; // Style for normal (visiable) lines SoDrawStyle* style = new SoDrawStyle (); style->lineWidth = 2.0f; highlight->addChild ( style ); // Visible lines highlight->addChild ( pOriginFeatureRoot ); // Hidden features SoAnnotation *hidden = new SoAnnotation (); // Style for hidden lines style = new SoDrawStyle (); style->lineWidth = 2.0f; style->linePattern.setValue ( 0xF000 ); // (dash-skip-skip-skip) hidden->addChild ( style ); // Hidden lines hidden->addChild ( pOriginFeatureRoot ); highlight->addChild ( hidden ); sep->addChild ( highlight ); // Setup the object label as it's text pLabel->string.setValue ( SbString ( pcObject->Label.getValue () ) ); addDisplayMaskMode ( sep, "Base" ); }
void CmdTestImageNode::activated(int iMsg) { QString text = QString::fromAscii("Distance: 2.7jgiorjgor84mm"); QFont font; QFontMetrics fm(font); int w = fm.width(text); int h = fm.height(); QPainterPath roundRectPath; //roundRectPath.moveTo(80.0, 35.0); //roundRectPath.arcTo(70.0, 30.0, 10.0, 10.0, 0.0, 90.0); //roundRectPath.lineTo(25.0, 30.0); //roundRectPath.arcTo(20.0, 30.0, 10.0, 10.0, 90.0, 90.0); //roundRectPath.lineTo(20.0, 65.0); //roundRectPath.arcTo(20.0, 60.0, 10.0, 10.0, 180.0, 90.0); //roundRectPath.lineTo(75.0, 70.0); //roundRectPath.arcTo(70.0, 60.0, 10.0, 10.0, 270.0, 90.0); roundRectPath.moveTo(100.0, 5.0); roundRectPath.arcTo(90.0, 0.0, 10.0, 10.0, 0.0, 90.0); roundRectPath.lineTo(5.0, 0.0); roundRectPath.arcTo(0.0, 0.0, 10.0, 10.0, 90.0, 90.0); roundRectPath.lineTo(0.0, 95.0); roundRectPath.arcTo(0.0, 90.0, 10.0, 10.0, 180.0, 90.0); roundRectPath.lineTo(95.0, 100.0); roundRectPath.arcTo(90.0, 90.0, 10.0, 10.0, 270.0, 90.0); roundRectPath.closeSubpath(); QLabel* l = new QLabel(); //l.setText(QLatin1String("Distance: 2.784mm")); //QPixmap p = QPixmap::grabWidget(&l, 0,0,100,100); //l.show(); //QPixmap p = Gui::BitmapFactory().pixmap("edit-cut"); Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); Gui::View3DInventorViewer* viewer = static_cast<Gui::View3DInventor*>(view)->getViewer(); SoImage* node = new SoImage(); QImage image(w+10,h+10,QImage::Format_ARGB32_Premultiplied);// = p.toImage(); image.fill(0x00000000); QPainter painter(&image); painter.setRenderHint(QPainter::Antialiasing); painter.setPen(QPen(QColor(0,0,127), 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); painter.setBrush(QBrush(QColor(0,85,255), Qt::SolidPattern)); QRectF rectangle(0.0, 0.0, w+10, h+10); painter.drawRoundedRect(rectangle, 5, 5); //painter.drawRect(rectangle); //painter.drawPath(roundRectPath); painter.setPen(QColor(255,255,255)); painter.drawText(5,h+3, text); painter.end(); //l->setPixmap(QPixmap::fromImage(image)); //l->show(); //RenderArea* ra = new RenderArea(roundRectPath); //ra->show(); //QPixmap p = QPixmap::grabWidget(ra, 0,0,100,30); //image = p.toImage(); SoSFImage texture; Gui::BitmapFactory().convert(image, texture); node->image = texture; SoAnnotation* anno = new SoAnnotation(); anno->addChild(node); static_cast<SoGroup*>(viewer->getSceneGraph())->addChild(anno); }
void BCIService::init(BCIControlWindow *bciControlWindow) { ROS_INFO("Initing BCI Service"); bciRenderArea = bciControlWindow->bciWorldView->renderArea; QPushButton * slowButton = new QPushButton("Flex Medium (Next)"); QPushButton * fastButton = new QPushButton("Flex Hard (Select)"); slowButton->setDefault(true); fastButton->setDefault(true); QDialogButtonBox *cursorControlBox = new QDialogButtonBox(Qt::Vertical); cursorControlBox->setCaption(QString("Cursor Control Box")); cursorControlBox->addButton(slowButton, QDialogButtonBox::ActionRole); cursorControlBox->addButton(fastButton, QDialogButtonBox::ActionRole); cursorControlBox->setWindowFlags(Qt::WindowStaysOnTopHint); cursorControlBox->resize(QSize(200,100)); cursorControlBox->show(); QObject::connect(slowButton, SIGNAL(clicked()), this, SLOT(updateControlSceneState1())); QObject::connect(fastButton, SIGNAL(clicked()), this, SLOT(updateControlSceneState2())); endOfExperimentFormat = new QFormLayout(); successFailure = new QComboBox(); successFailure->insertItem("Success"); successFailure->insertItem("Failure"); finalComments = new QTextEdit(); finishedButton = new QPushButton("FINISHED"); endOfExperimentFormat->addRow(tr("&Success or failure: "), successFailure); endOfExperimentFormat->addRow(tr("&Comments: "), finalComments); endOfExperimentFormat->addRow(tr(""), finishedButton); endOfExperiment = new QGroupBox(); endOfExperiment->setLayout(endOfExperimentFormat); QObject::connect(finishedButton, SIGNAL(clicked()), this, SLOT(onFinishedFinalLog())); endOfExperiment->show(); timer = new QTimer; QObject::connect(timer, SIGNAL(timeout()), this, SLOT(updateControlScene())); timer->start(1000 / 30); QObject::connect(this, SIGNAL(goToStateLow()), this, SLOT(updateControlSceneState0())); QObject::connect(this, SIGNAL(goToStateMedium()), this, SLOT(updateControlSceneState1())); QObject::connect(this, SIGNAL(goToStateHigh()), this, SLOT(updateControlSceneState2())); SoAnnotation *hudSeparator = new SoAnnotation; hudSeparator->renderCaching = SoSeparator::OFF; hudSeparator->setName("hud"); graspitCore->getWorld()->getIVRoot()->addChild(hudSeparator); pcam = new SoOrthographicCamera; pcam->position = SbVec3f(0, 0, 10); pcam->nearDistance = 0.1; pcam->farDistance = 11; hudSeparator->addChild(pcam); SoLightModel * hudLightModel = new SoLightModel; hudLightModel->model=SoLightModel::BASE_COLOR; hudSeparator->addChild(hudLightModel); SoCallback * disableZTestNode = new SoCallback(); disableZTestNode->setCallback(ui_tools::disableZCulling); hudSeparator->addChild(disableZTestNode); csm = new ControllerSceneManager(hudSeparator); BCIStateMachine *bciStateMachine = new BCIStateMachine(bciControlWindow,this); connect(this, SIGNAL(plannerUpdated()), bciControlWindow, SLOT(redraw())); connect(GraspManager::getInstance(), SIGNAL(render()), bciControlWindow, SLOT(redraw())); bciStateMachine->start(); ROS_INFO("Finished initing BCI Service"); }