void StateVisualiser::operator()() { inputGeneralisedCoordinatesQueue_.subscribe(); model_.setUseVisualizer(true); SimTK::State s(model_.initSystem()); SimTK::Visualizer &viz = model_.updVisualizer().updSimbodyVisualizer(); viz.setShowFrameRate(false); viz.setShutdownWhenDestructed(true); viz.setMode(SimTK::Visualizer::Mode::Sampling); viz.setShutdownWhenDestructed(true); viz.setDesiredBufferLengthInSec(5); viz.setDesiredFrameRate(60); ShowInfo* info = new ShowInfo(); viz.addDecorationGenerator(info); auto start = std::chrono::system_clock::now(); int frameCounter = 0; bool localRunCondition(true); while (localRunCondition) { rtosim::GeneralisedCoordinatesFrame currentCoordinatesFrame(inputGeneralisedCoordinatesQueue_.pop()); if (rtosim::EndOfData::isEod(currentCoordinatesFrame)) localRunCondition = false; else { rtosim::GeneralisedCoordinatesData currentCoordinates(currentCoordinatesFrame.data); auto q(currentCoordinates.getQ()); for (unsigned i(0); i < currentCoordinates.getNCoordinates(); ++i) s.updQ()[i] = q[i]; } viz.report(s); frameCounter++; if ((std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - start)) > std::chrono::milliseconds(1000)) { info->setText("IK FPS: " + std::to_string(frameCounter)); start = std::chrono::system_clock::now(); frameCounter = 0; } } }
TabDrawMap TabSwitcherObject::tabDrawMap() const { TabDrawMap result; NumberMap coordinates = currentCoordinates(); double buttonSize = Design::instance()->size(Design::GraphicButtonDefaultIconSize); double elementSpacing = Design::instance()->size(Design::TabElementSpacing); for (int i = 0; i < m_data.items.count(); i++) { TabDrawInfo item; QUuid uid = m_data.items[i].uid; item.index = i; item.uid = uid; double left = coordinates[uid]; item.tabRect = QRectF(left, rect().top(), currentTabWidth(), rect().height()); item.textRect = QRectF(item.tabRect.left() + elementSpacing, rect().top(), currentTabWidth() - buttonSize - elementSpacing*3.0, rect().height()); item.closeButtonRect = QRectF(item.tabRect.right() - buttonSize - elementSpacing, item.tabRect.center().y() - buttonSize/2.0, buttonSize, buttonSize); item.text = m_data.items[i].label; item.isActive = (i == m_data.currentIndex); item.isMoving = item.isActive && m_isMovingCurrentTab; result[uid] = item; } return result; }
void PlotWidgetLevelDrawingState::treatPaintEvent(QPaintEvent */*event*/) { if (mPlotWidget->axisRectCount() != 0) { int &xCurrent = mXCurrentPosition; int &yCurrent = mYCurrentPosition; for (int axisRectIndex = 0; axisRectIndex < mPlotWidget->axisRectCount(); ++axisRectIndex) { QRect axisRec = mPlotWidget->axisRect(axisRectIndex)->rect(); if (((xCurrent >= axisRec.x()) && (xCurrent <= axisRec.x()+ axisRec.width())) && ((yCurrent >= axisRec.y()) && (yCurrent <= axisRec.y()+ axisRec.height()))) { QPainter painter(mPlotWidget); painter.setPen(QPen(mPlotWidget->mPlotStyle.mColorPref.mGraficalPrimitivesColor)); painter.drawLine(xCurrent, 0, xCurrent, mPlotWidget->height()); painter.drawLine(0, yCurrent, mPlotWidget->width(), yCurrent); double xOut = mPlotWidget->axisRect(axisRectIndex)->axis(QCPAxis::atBottom)->pixelToCoord(xCurrent); double yOut = mPlotWidget->axisRect(axisRectIndex)->axis(QCPAxis::atLeft)->pixelToCoord(yCurrent); emit currentCoordinates(xOut, yOut); drawTracers(painter); break; } } } }