/** * @todo enable eliding (use QFontMetrics::elidedText() ) */ void bicItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyleOptionViewItem opt = option; initStyleOption(&opt, index); // Background QStyle *style = opt.widget ? opt.widget->style() : QApplication::style(); style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget); const int margin = style->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1; const QRect textArea = QRect(opt.rect.x() + margin, opt.rect.y() + margin, opt.rect.width() - 2 * margin, opt.rect.height() - 2 * margin); // Paint name painter->save(); QFont smallFont = getSmallFont(opt); QFontMetrics metrics(opt.font); QFontMetrics smallMetrics(smallFont); QRect nameRect = style->alignedRect(opt.direction, Qt::AlignBottom, QSize(textArea.width(), smallMetrics.lineSpacing()), textArea); painter->setFont(smallFont); style->drawItemText(painter, nameRect, Qt::AlignBottom, QApplication::palette(), true, index.model()->data(index, bicModel::InstitutionNameRole).toString(), option.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Mid); painter->restore(); // Paint BIC painter->save(); QFont normal = painter->font(); normal.setBold(true); painter->setFont(normal); QRect bicRect = style->alignedRect(opt.direction, Qt::AlignTop, QSize(textArea.width(), metrics.lineSpacing()), textArea); const QString bic = index.model()->data(index, Qt::DisplayRole).toString(); style->drawItemText(painter, bicRect, Qt::AlignTop, QApplication::palette(), true, bic, option.state & QStyle::State_Selected ? QPalette::HighlightedText : QPalette::Text); painter->restore(); }
QSize bicItemDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyleOptionViewItem opt = option; initStyleOption(&opt, index); QFontMetrics metrics(option.font); QFontMetrics smallMetrics(getSmallFont(option)); const QStyle *style = opt.widget ? opt.widget->style() : QApplication::style(); const int margin = style->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1; // A bic has maximal 11 characters. So we guess, we want to display 11 characters. The name of the institution has to adapt to what is given return QSize(metrics.width(QLatin1Char('X')) + 2*margin, metrics.lineSpacing() + smallMetrics.lineSpacing() + smallMetrics.leading() + 2*margin); }
void Window::drawFPS() { std::ostringstream fpsText; fpsText << std::setprecision(3) << getFPS() << " FPS"; const util::BitmapFont* font = getSmallFont(); const PixelViewport& pvp = getPixelViewport(); glRasterPos3f( pvp.w - 60.f, pvp.h - 16.f , 0.99f ); glColor3f( .8f, .8f, .8f ); font->draw( fpsText.str( )); }
void Window::drawFPS() { std::ostringstream fpsText; fpsText << std::setprecision(3) << getFPS() << " FPS"; const Font* font = getSmallFont(); const PixelViewport& pvp = getPixelViewport(); glLogicOp( GL_XOR ); glEnable( GL_COLOR_LOGIC_OP ); glRasterPos3f( pvp.w - 60.f, 10.f , 0.99f ); glColor3f( 1.f, 1.f, 1.f ); font->draw( fpsText.str( )); }