예제 #1
0
bool RS232Console::handleEvent(Dashboard *dash, SDL_Event *event)
{
    int width, height, dummy;
    
    getMetrics(dash, width, dummy, height);
    
    bool hit_test = (event->button.x >= x) &&
                    (event->button.y >= y) &&
                    (event->button.x < x + width) &&
                    (event->button.y < y + height);
    
    switch (event->type) {
        case SDL_MOUSEBUTTONDOWN:
            if (event->button.button == SDL_BUTTON_LEFT)
                focused = hit_test;
            break;
        case SDL_MOUSEBUTTONUP:
            if (!hit_test)
                break;
            
            if (event->button.button == SDL_BUTTON_WHEELDOWN) {
                scroll_position = min(scroll_position + 2, maxScrollPosition());
                scrollbar_persist_frames = SCROLLBAR_PERSIST_TIME_MSEC / Dashboard::FRAME_INTERVAL_MSEC;
            } else if (event->button.button == SDL_BUTTON_WHEELUP) {
                scroll_position = max(scroll_position - 2, 0);
                scrollbar_persist_frames = SCROLLBAR_PERSIST_TIME_MSEC / Dashboard::FRAME_INTERVAL_MSEC;
            }
            break;
    }
    
    return false;
}
예제 #2
0
void RS232Console::render(Dashboard *dash, SDLColor color, SDLColor bg_color,
    int font_size)
{
    int char_width, char_height, height, width, mid_height;
    
    getCharMetrics(dash, char_width, char_height);
    getMetrics(dash, width, mid_height, height);
    
    rectangleColor(dash->screen, x, y,  x + width - 1, y + height - 1,
        color.toUInt32());
    lineColor(dash->screen, x, y + mid_height - 1, x + width - 1, y + mid_height - 1, color.toUInt32());
    
    int current_y = y + 2;
    int to_line = min((int)stored_text.size(), scroll_position + rows);
    
    for (int i = scroll_position; i < to_line; i++) {
        dash->putMonoText(x + 2, current_y, stored_text[i].substr(0, columns),
            font_size + 2, color);
        current_y += char_height;
    }
    
    if (scrollbar_persist_frames) {
        drawScrollbar(dash, color);
        scrollbar_persist_frames--;
    }
}
예제 #3
0
void RS232Console::drawScrollbar(Dashboard *dash, SDLColor color)
{
    const int PADDING = 6;
    const int BAR_WIDTH = 12;
    
    if ((int)stored_text.size() <= rows)
        return;
    
    int height, width, mid_height;
    
    getMetrics(dash, width, mid_height, height);
    
    int bar_x = x + width - PADDING - BAR_WIDTH;
    int bar_y = y + PADDING;
    int bar_w = BAR_WIDTH;
    int bar_h = mid_height - 2 * PADDING;
    
    int thumb_y = bar_y + bar_h * scroll_position / stored_text.size();
    int thumb_h = bar_h * rows / stored_text.size();
    
    rectangleColor(dash->screen, bar_x, bar_y, bar_x + bar_w - 1, bar_y + bar_h - 1,
        color.toUInt32());
    boxColor(dash->screen, bar_x, thumb_y, bar_x + bar_w - 1, thumb_y + thumb_h - 1,
        color.toUInt32());
}
예제 #4
0
파일: spinbox2.cpp 프로젝트: KDE/kdepim
QSize SpinBox2::minimumSizeHint() const
{
    getMetrics();
    QSize size = mSpinbox->minimumSizeHint();
    size.setWidth(size.width() - wSpinboxHide + wUpdown2);
    return size;
}
void
ApplicationImpl::generateLoad(uint32_t nAccounts, uint32_t nTxs,
                              uint32_t txRate, bool autoRate)
{
    getMetrics().NewMeter({"loadgen", "run", "start"}, "run").Mark();
    getLoadGenerator().generateLoad(*this, nAccounts, nTxs, txRate, autoRate);
}
예제 #6
0
    void PerformanceTest::writeMetrics(const string &suiteName, const string &caseName, const string& fileName)
    {
        Metrics metrics = getMetrics();

        // For thousands separation
        setlocale(LC_ALL, "");
        if (!fileName.empty())
        {
            FILE* f = fopen(fileName.c_str(), "a+");

            fprintf(f,
                "%s;%s;%zu;%zu;%lu;%f;%f;%f;%f\n",
                suiteName.c_str(),
                caseName.c_str(),
                m_repeatsCount,
                m_threadsCount,
                metrics.executedOperations,
                metrics.operationsPerSecond,
                metrics.avgOperationDuration,
                metrics.iterationDuration,
                metrics.repeatDuration);
            fclose(f);

        }
        printf("Operations/sec:\t\t\t%'f\n"
               "Avg. operation duration:\t%f nsec\n"
               "Iteration duration:\t\t%f sec\n"
               "Repeat duration:\t\t%f sec\n",
            metrics.operationsPerSecond,
            metrics.avgOperationDuration,
            metrics.iterationDuration,
            metrics.repeatDuration);
    }
예제 #7
0
파일: spinbox2.cpp 프로젝트: KDE/kdepim
/******************************************************************************
* Set the positions and sizes of all the child widgets.
*/
void SpinBox2::arrange()
{
    getMetrics();
    mUpdown2->move(-mUpdown2->width(), 0);   // keep completely hidden
    QRect arrowRect = style()->visualRect((mRightToLeft ? Qt::RightToLeft : Qt::LeftToRight), rect(), QRect(0, 0, wUpdown2, height()));
    QRect r(wUpdown2, 0, width() - wUpdown2, height());
    if (mRightToLeft)
        r.moveLeft(0);
    mSpinboxFrame->setGeometry(r);
    mSpinbox->setGeometry(mRightToLeft ? 0 : -wSpinboxHide, 0, mSpinboxFrame->width() + wSpinboxHide, height());
//    qCDebug(KALARM_LOG) << "arrowRect="<<arrowRect<<", mUpdown2="<<mUpdown2->geometry()<<", mSpinboxFrame="<<mSpinboxFrame->geometry()<<", mSpinbox="<<mSpinbox->geometry()<<", width="<<width();

    mSpinMirror->resize(wUpdown2, mUpdown2->height());
    mSpinMirror->setGeometry(arrowRect);
    mSpinMirror->setButtonPos(mButtonPos);
    mSpinMirror->setButtons();
}
예제 #8
0
파일: eval.cpp 프로젝트: medyakovvit/litiv
void litiv::IDatasetEvaluator_<litiv::eDatasetEval_BinaryClassifier>::writeEvalReport() const {
    if(getBatches(false).empty() || !isUsingEvaluator()) {
        IDatasetEvaluator_<litiv::eDatasetEval_None>::writeEvalReport();
        return;
    }
    for(const auto& pGroupIter : getBatches(true))
        pGroupIter->shared_from_this_cast<const IDataReporter_<eDatasetEval_BinaryClassifier>>(true)->IDataReporter_<eDatasetEval_BinaryClassifier>::writeEvalReport();
    IMetricsCalculatorConstPtr pMetrics = getMetrics(true);
    lvAssert(pMetrics.get());
    const BinClassifMetricsCalculator& oMetrics = dynamic_cast<const BinClassifMetricsCalculator&>(*pMetrics.get());
    std::cout << CxxUtils::clampString(getName(),12) << " => Rcl=" << std::fixed << std::setprecision(4) << oMetrics.dRecall << " Prc=" << oMetrics.dPrecision << " FM=" << oMetrics.dFMeasure << " MCC=" << oMetrics.dMCC << std::endl;
    std::ofstream oMetricsOutput(getOutputPath()+"/overall.txt");
    if(oMetricsOutput.is_open()) {
        oMetricsOutput << std::fixed;
        oMetricsOutput << "Video segmentation evaluation report for dataset '" << getName() << "' :\n\n";
        oMetricsOutput << "            |     Rcl    |     Spc    |     FPR    |     FNR    |     PBC    |     Prc    |     FM     |     MCC    \n";
        oMetricsOutput << "------------|------------|------------|------------|------------|------------|------------|------------|------------\n";
        size_t nOverallPacketCount = 0;
        double dOverallTimeElapsed = 0.0;
        for(const auto& pGroupIter : getBatches(true)) {
            oMetricsOutput << pGroupIter->shared_from_this_cast<const IDataReporter_<eDatasetEval_BinaryClassifier>>(true)->IDataReporter_<eDatasetEval_BinaryClassifier>::writeInlineEvalReport(0);
            nOverallPacketCount += pGroupIter->getTotPackets();
            dOverallTimeElapsed += pGroupIter->getProcessTime();
        }
        oMetricsOutput << "------------|------------|------------|------------|------------|------------|------------|------------|------------\n";
        oMetricsOutput << "     overall|" <<
                          std::setw(12) << oMetrics.dRecall << "|" <<
                          std::setw(12) << oMetrics.dSpecificity << "|" <<
                          std::setw(12) << oMetrics.dFPR << "|" <<
                          std::setw(12) << oMetrics.dFNR << "|" <<
                          std::setw(12) << oMetrics.dPBC << "|" <<
                          std::setw(12) << oMetrics.dPrecision << "|" <<
                          std::setw(12) << oMetrics.dFMeasure << "|" <<
                          std::setw(12) << oMetrics.dMCC << "\n";
        oMetricsOutput << "\nHz: " << nOverallPacketCount/dOverallTimeElapsed << "\n";
        oMetricsOutput << CxxUtils::getLogStamp();
    }
}
예제 #9
0
파일: eval.cpp 프로젝트: medyakovvit/litiv
std::string litiv::IDataReporter_<litiv::eDatasetEval_BinaryClassifier>::writeInlineEvalReport(size_t nIndentSize) const {
    if(!getTotPackets())
        return std::string();
    const size_t nCellSize = 12;
    std::stringstream ssStr;
    ssStr << std::fixed;
    if(isGroup() && !isBare())
        for(const auto& pBatch : getBatches(true))
            ssStr << pBatch->shared_from_this_cast<const IDataReporter_<eDatasetEval_BinaryClassifier>>(true)->IDataReporter_<eDatasetEval_BinaryClassifier>::writeInlineEvalReport(nIndentSize+1);
    IMetricsCalculatorConstPtr pMetrics = getMetrics(true);
    lvAssert(pMetrics.get());
    const BinClassifMetricsCalculator& oMetrics = dynamic_cast<const BinClassifMetricsCalculator&>(*pMetrics.get());
    ssStr << CxxUtils::clampString((std::string(nIndentSize,'>')+' '+getName()),nCellSize) << "|" <<
             std::setw(nCellSize) << oMetrics.dRecall << "|" <<
             std::setw(nCellSize) << oMetrics.dSpecificity << "|" <<
             std::setw(nCellSize) << oMetrics.dFPR << "|" <<
             std::setw(nCellSize) << oMetrics.dFNR << "|" <<
             std::setw(nCellSize) << oMetrics.dPBC << "|" <<
             std::setw(nCellSize) << oMetrics.dPrecision << "|" <<
             std::setw(nCellSize) << oMetrics.dFMeasure << "|" <<
             std::setw(nCellSize) << oMetrics.dMCC << "\n";
    return ssStr.str();
}
예제 #10
0
파일: eval.cpp 프로젝트: medyakovvit/litiv
void litiv::IDataReporter_<litiv::eDatasetEval_BinaryClassifier>::writeEvalReport() const {
    if(!getTotPackets() || !getDatasetInfo()->isUsingEvaluator()) {
        IDataReporter_<litiv::eDatasetEval_None>::writeEvalReport();
        return;
    }
    else if(isGroup() && !isBare())
        for(const auto& pBatch : getBatches(true))
            pBatch->writeEvalReport();
    IMetricsCalculatorConstPtr pMetrics = getMetrics(true);
    lvAssert(pMetrics.get());
    const BinClassifMetricsCalculator& oMetrics = dynamic_cast<const BinClassifMetricsCalculator&>(*pMetrics.get());;
    std::cout << "\t" << CxxUtils::clampString(std::string(size_t(!isGroup()),'>')+getName(),12) << " => Rcl=" << std::fixed << std::setprecision(4) << oMetrics.dRecall << " Prc=" << oMetrics.dPrecision << " FM=" << oMetrics.dFMeasure << " MCC=" << oMetrics.dMCC << std::endl;
    std::ofstream oMetricsOutput(PlatformUtils::AddDirSlashIfMissing(getOutputPath())+"../"+getName()+".txt");
    if(oMetricsOutput.is_open()) {
        oMetricsOutput << std::fixed;
        oMetricsOutput << "Video segmentation evaluation report for '" << getName() << "' :\n\n";
        oMetricsOutput << "            |     Rcl    |     Spc    |     FPR    |     FNR    |     PBC    |     Prc    |     FM     |     MCC    \n";
        oMetricsOutput << "------------|------------|------------|------------|------------|------------|------------|------------|------------\n";
        oMetricsOutput << IDataReporter_<eDatasetEval_BinaryClassifier>::writeInlineEvalReport(0);
        oMetricsOutput << "\nHz: " << getTotPackets()/getProcessTime() << "\n";
        oMetricsOutput << CxxUtils::getLogStamp();
    }
}
예제 #11
0
HTMLMarqueeElement::AnimationParameters
HTMLMarqueeElement::getAnimationParameters() {
    AnimationParameters parameters;
    Metrics metrics = getMetrics();

    double totalWidth = metrics.marqueeWidth + metrics.contentWidth;
    double totalHeight = metrics.marqueeHeight + metrics.contentHeight;

    double innerWidth = metrics.marqueeWidth - metrics.contentWidth;
    double innerHeight = metrics.marqueeHeight - metrics.contentHeight;

    switch (getBehavior()) {
    case kAlternate:
        switch (getDirection()) {
        case kRight:
            parameters.transformBegin =
                createTransform(innerWidth >= 0 ? 0 : innerWidth);
            parameters.transformEnd =
                createTransform(innerWidth >= 0 ? innerWidth : 0);
            parameters.distance = std::abs(innerWidth);
            break;
        case kUp:
            parameters.transformBegin =
                createTransform(innerHeight >= 0 ? innerHeight : 0);
            parameters.transformEnd =
                createTransform(innerHeight >= 0 ? 0 : innerHeight);
            parameters.distance = std::abs(innerHeight);
            break;
        case kDown:
            parameters.transformBegin =
                createTransform(innerHeight >= 0 ? 0 : innerHeight);
            parameters.transformEnd =
                createTransform(innerHeight >= 0 ? innerHeight : 0);
            parameters.distance = std::abs(innerHeight);
            break;
        case kLeft:
        default:
            parameters.transformBegin =
                createTransform(innerWidth >= 0 ? innerWidth : 0);
            parameters.transformEnd =
                createTransform(innerWidth >= 0 ? 0 : innerWidth);
            parameters.distance = std::abs(innerWidth);
        }

        if (m_loopCount % 2)
            std::swap(parameters.transformBegin, parameters.transformEnd);
        break;
    case kSlide:
        switch (getDirection()) {
        case kRight:
            parameters.transformBegin = createTransform(-metrics.contentWidth);
            parameters.transformEnd = createTransform(innerWidth);
            parameters.distance = metrics.marqueeWidth;
            break;
        case kUp:
            parameters.transformBegin = createTransform(metrics.marqueeHeight);
            parameters.transformEnd = "translateY(0)";
            parameters.distance = metrics.marqueeHeight;
            break;
        case kDown:
            parameters.transformBegin = createTransform(-metrics.contentHeight);
            parameters.transformEnd = createTransform(innerHeight);
            parameters.distance = metrics.marqueeHeight;
            break;
        case kLeft:
        default:
            parameters.transformBegin = createTransform(metrics.marqueeWidth);
            parameters.transformEnd = "translateX(0)";
            parameters.distance = metrics.marqueeWidth;
        }
        break;
    case kScroll:
    default:
        switch (getDirection()) {
        case kRight:
            parameters.transformBegin = createTransform(-metrics.contentWidth);
            parameters.transformEnd = createTransform(metrics.marqueeWidth);
            parameters.distance = totalWidth;
            break;
        case kUp:
            parameters.transformBegin = createTransform(metrics.marqueeHeight);
            parameters.transformEnd = createTransform(-metrics.contentHeight);
            parameters.distance = totalHeight;
            break;
        case kDown:
            parameters.transformBegin = createTransform(-metrics.contentHeight);
            parameters.transformEnd = createTransform(metrics.marqueeHeight);
            parameters.distance = totalHeight;
            break;
        case kLeft:
        default:
            parameters.transformBegin = createTransform(metrics.marqueeWidth);
            parameters.transformEnd = createTransform(-metrics.contentWidth);
            parameters.distance = totalWidth;
        }
        break;
    }

    return parameters;
}
예제 #12
0
void MenuButton::layoutSubviews() {
	auto height = 48.0f;

	auto menu = getMenu();
	if (!menu) {
		return;
	}
	auto menuMetrics = menu->getMetrics();

	auto font = (menuMetrics == MenuMetrics::Navigation)?FontType::Body_1:FontType::Subhead;

	_menuNameLabel->setFont(font);
	_menuValueLabel->setFont(font);

	_menuNameLabel->setVisible(false);
	_menuValueLabel->setVisible(false);
	_menuNameIcon->setVisible(false);
	_menuValueIcon->setVisible(false);

	if (_source) {
		bool enabled = (_source->getCallback() != nullptr || _source->getNextMenu() != nullptr);
		float namePos = metrics::menuFirstLeftKeyline(menuMetrics);
		auto nameIcon = _source->getNameIcon();
		if (nameIcon != IconName::None) {
			_menuNameIcon->setIconName(nameIcon);
			_menuNameIcon->setPosition(cocos2d::Vec2(namePos, height / 2));
			_menuNameIcon->setVisible(true);
			_menuNameIcon->setOpacity((enabled) ? 222 : 138);

			namePos = metrics::menuSecondLeftKeyline(menuMetrics);
		} else {
			_menuNameIcon->setVisible(false);
		}

		auto name = _source->getName();
		if (!name.empty()) {
			_menuNameLabel->setString(name);
			_menuNameLabel->setPosition(cocos2d::Vec2(namePos, height / 2));
			_menuNameLabel->setVisible(true);
			_menuNameLabel->setOpacity((enabled) ? 222 : 138);
		} else {
			_menuNameLabel->setVisible(false);
		}

		if (_source->getNextMenu()) {
			_menuValueIcon->setIconName(IconName::Navigation_arrow_drop_down);
			_menuValueIcon->setPosition(cocos2d::Vec2(_contentSize.width - 8, height / 2));
			_menuValueIcon->setVisible(true);
			_menuValueIcon->setRotated(true);
		} else {
			_menuValueIcon->setVisible(false);
			_menuValueIcon->setRotated(false);
		}

		if (!_source->getValue().empty() && !_menuValueIcon->isVisible()) {
			_menuValueLabel->setVisible(true);
			_menuValueLabel->setString(_source->getValue());
			_menuValueLabel->setPosition(cocos2d::Vec2(_contentSize.width - 16, height / 2));
			_menuValueLabel->setOpacity((enabled) ? 222 : 138);
		} else {
			_menuValueLabel->setVisible(false);
		}

		if (_source->getValueIcon() != IconName::Empty && _source->getValueIcon() != IconName::None
			&& !_menuValueLabel->isVisible() && !_menuValueIcon->isVisible()) {

			_menuValueIcon->setIconName(_source->getValueIcon());
			_menuValueIcon->setPosition(cocos2d::Vec2(_contentSize.width - 16, height / 2));
			_menuValueIcon->setVisible(true);
			_menuValueIcon->setOpacity((enabled) ? 222 : 138);
		}

		if (_source->isSelected()) {
			setSelected(true, true);
		} else {
			setSelected(false);
		}

		setEnabled(enabled && _menu->isEnabled());
	}
}
예제 #13
0
void Font::renderString(
    const std::wstring & str,
    glm::vec2 & cursor,
    float fontSize,
    float maxWidth) {
  float scale = Text::Font::DTP_TO_METERS * fontSize / mFontSize;
  bool wrap = (maxWidth == maxWidth);
  if (wrap) {
    maxWidth /= scale;
  }

  gl::MatrixStack & mv = gl::Stacks::modelview();
  size_t mvDepth = mv.size();

  glm::vec4 aspectTest = gl::Stacks::projection().top() * glm::vec4(1, 1, 0, 1);
  float aspect = std::abs(aspectTest.x / aspectTest.y);
  mv.push().translate(cursor).translate(glm::vec2(0, scale * -mAscent));

  // scale the modelview from into font units
  mv.scale(scale);
  gl::ProgramPtr program = GlUtils::getProgram(
      Resource::SHADERS_TEXT_VS,
      Resource::SHADERS_TEXT_FS);

  program->use();
  program->setUniform("Color", glm::vec4(1));
  program->setUniform("Font", 0);
  program->setUniform4x4f("Projection",
      gl::Stacks::projection().top());

  mTexture->bind();
  mGeometry->bindVertexArray();

  std::vector<std::wstring> tokens = Tokenize(str);

  // Stores how far we've moved from the start of the string, in DTP units
  glm::vec2 advance;
  static std::wstring SPACE = toUtf16(" ");
  for_each(tokens.begin(), tokens.end(), [&](const std::wstring & token) {
    float tokenWidth = measureWidth(token, fontSize) ;
    if (wrap && 0 != advance.x && (advance.x + tokenWidth) > maxWidth) {
      advance.x = 0;
      advance.y -= (mAscent + mDescent);
    }

    for_each(token.begin(), token.end(), [&](::uint16_t id) {
      if ('\n' == id) {
        advance.x = 0;
        advance.y -= (mAscent + mDescent);
        return;
      }

      if (!contains(id)) {
        id = '?';
      }

      // get metrics for this character to speed up measurements
      const Font::Metrics & m = getMetrics(id);

      if (wrap && ((advance.x + m.d) > maxWidth)) {
        advance.x = 0;
        advance.y -= (mAscent + mDescent);
      }

      // We create an offset vec2 to hold the local offset of this character
      // This includes compensating for the inverted Y axis of the font
      // coordinates
      glm::vec2 offset(advance);
      offset.y -= m.size.y;
      // Bind the new position
      mv.push().translate(offset).apply(program).pop();
      // Render the item
      glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, (void*)(m.indexOffset * sizeof(GLuint)));
      advance.x += m.d;//+ m.offset.x;// font->getAdvance(m, mFontSize);
    });
    advance.x += getMetrics(' ').d;
  });

  gl::VertexArray::unbind();
  gl::Texture2d::unbind();
  gl::Program::clear();
  mv.pop();
  //cursor.x += advance * scale;
}