HudTargetInfo::HudTargetInfo(const FRect &target_rect) :HudLayer(target_rect), m_hit_chance(0.0f), m_health(1.0f), m_kills(0), m_deaths(0) { m_anim_speed = 10.0f; FRect rect = this->rect(); FRect icon_rect(s_char_icon_size); icon_rect += float2(rect.width() - icon_rect.width() - layer_spacing, rect.center().y - icon_rect.height() * 0.5f); m_char_icon = make_shared<HudCharIcon>(icon_rect); m_char_icon->setEnabled(true, false); attach(m_char_icon); }
void LLPanelInventoryListItemBase::reshapeMiddleWidgets() { LLRect icon_rect(mIconCtrl->getRect()); icon_rect.setLeftTopAndSize(mLeftWidgetsWidth + getWidgetSpacing(), icon_rect.mTop, icon_rect.getWidth(), icon_rect.getHeight()); mIconCtrl->setShape(icon_rect); S32 name_left = icon_rect.mRight + getWidgetSpacing(); S32 name_right = getLocalRect().getWidth() - mRightWidgetsWidth - getWidgetSpacing(); LLRect name_rect(mTitleCtrl->getRect()); name_rect.set(name_left, name_rect.mTop, name_right, name_rect.mBottom); mTitleCtrl->setShape(name_rect); }
//----------------------------------------------------------------------------// void FalagardListView::createRenderGeometry(ListView* list_view) { Rectf items_area(getViewRenderArea()); glm::vec2 item_pos(getItemRenderStartPosition(list_view, items_area)); for (size_t i = 0; i < list_view->getItems().size(); ++i) { ListViewItemRenderingState* item = list_view->getItems().at(i); RenderedString& rendered_string = item->d_string; Sizef size(item->d_size); size.d_width = std::max(items_area.getWidth(), size.d_width); Rectf item_rect; item_rect.left(item_pos.x); item_rect.top(item_pos.y); item_rect.setSize(size); if (!item->d_icon.empty()) { Image& img = ImageManager::getSingleton().get(item->d_icon); Rectf icon_rect(item_rect); icon_rect.setWidth(size.d_height); icon_rect.setHeight(size.d_height); Rectf icon_clipper(icon_rect.getIntersection(items_area)); ImageRenderSettings renderSettings( icon_rect, &icon_clipper, true, ICON_COLOUR_RECT, 1.0f); auto imgGeomBuffers = img.createRenderGeometry(renderSettings); list_view->appendGeometryBuffers(imgGeomBuffers); item_rect.left(item_rect.left() + icon_rect.getWidth()); } Rectf item_clipper(item_rect.getIntersection(items_area)); createRenderGeometryAndAddToItemView(list_view, rendered_string, item_rect, list_view->getFont(), &item_clipper, item->d_isSelected); item_pos.y += size.d_height; } }
void SeafileTabBar::paintEvent(QPaintEvent *event) { QStylePainter p(this); QPainter painter; painter.begin(this); for (int index = 0, total = count(); index < total; index++) { const QRect rect = tabRect(index); // QStyleOptionTabV3 tab; // initStyleOption(&tab, index); // Draw the tab background painter.fillRect(rect, QColor(kTabsBackgroundColor)); // Draw the tab icon in the center QPoint top_left; top_left.setX(rect.topLeft().x() + ((rect.width() - kTabIconSize) / 2)); top_left.setY(rect.topLeft().y() + ((rect.height() - kTabIconSize) / 2)); QIcon icon(currentIndex() == index ? highlighted_icons_[index] : icons_[index]); QRect icon_rect(top_left, QSize(kTabIconSize, kTabIconSize)); // get the device pixel radio from current painter device int scale_factor = 1; #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) scale_factor = painter.device()->devicePixelRatio(); #endif // QT5 QPixmap icon_pixmap(icon.pixmap(QSize(kTabIconSize, kTabIconSize) * scale_factor)); #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) icon_pixmap.setDevicePixelRatio(scale_factor); #endif // QT5 painter.drawPixmap(icon_rect, icon_pixmap); int indicator_width = count() * rect.width() / 8; // Draw the selected tab indicator if (currentIndex() == index) { top_left.setX(rect.bottomLeft().x() + (rect.width() / 2) - (indicator_width / 2)); top_left.setY(rect.bottomLeft().y() - kSelectedTabBorderBottomWidth + 1); QRect border_bottom_rect(top_left, QSize(indicator_width, kSelectedTabBorderBottomWidth)); painter.fillRect(border_bottom_rect, QColor(kSelectedTabBorderBottomColor)); } } }
void OnyxToolBarItem::paintEvent(QPaintEvent *pe) { QPainter p(this); if (state_ == STATE_PRESSED) { p.fillRect(rect(), Qt::black); } QRect icon_rect(QPoint(1, 1), iconSize()); if (action_.isEnabled()) { action_.icon().paint(&p, icon_rect, Qt::AlignCenter, QIcon::Normal, QIcon::On); } else { action_.icon().paint(&p, icon_rect, Qt::AlignCenter, QIcon::Disabled, QIcon::On); } }
void status_item_delegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { //Draw base styled-item(gradient backgroud and other) QStyledItemDelegate::paint(painter, option, index); if (index.data(c_friend_role).toBool()) return; //Rect for drawing icons friend_record sl; const QRect& optr = option.rect; //QRect icon_rect(optr.x() + 2, optr.y() + 2, optr.height() - 4, optr.height() - 4); sl = index.data(c_friend_role).value<friend_record>(); if(sl.is_empty()) return; const LinphoneFriend* lf = sl.frienddata(); LinphoneOnlineStatus status = linphone_friend_get_status(lf); const QPixmap& icon_status = create_status_picture(status); //First icon - status icon if(icon_status.isNull())return; painter->setRenderHint(QPainter::SmoothPixmapTransform, true); //icon_status.height(); QRect icon_rect(optr.right()-icon_status.width()-2, optr.y() + 2, optr.height() - 4, optr.height() - 4); painter->drawPixmap(icon_rect, icon_status); //next_icon(icon_rect); //painter->drawPixmap(icon_rect, icon_passwd); //next_icon(icon_rect); //if (si->get_info("pure", "-1").toInt() == 0) //painter->drawPixmap(icon_rect, QPixmap("icons:user-identity.png")); //next_icon(icon_rect); //if ( !si->forbidden_gears().empty() ) //painter->drawPixmap(icon_rect, QPixmap("icons:weapons/pistol.svg")); }
void Toolbar::on_mouse_move(CL_InputEvent &input_event) { int pos_x = start_x; int pos_y = start_y; for(unsigned int i = 0; i < items.size(); ++i) { CL_Rect icon_rect(pos_x, pos_y, pos_x + items[i].icon.get_width(), pos_y + items[i].icon.get_height()); if(icon_rect.contains(input_event.mouse_pos)) { selected_index = i; request_repaint(); return; } pos_x += offset_x; } clicked_index = -1; selected_index = -1; request_repaint(); }
//----------------------------------------------------------------------------// void FalagardTreeView::renderTreeItem(TreeView* tree_view, const Rectf& items_area, glm::vec2& item_pos, const TreeViewItemRenderingState* item_to_render, size_t depth) { float expander_margin = tree_view->getSubtreeExpanderMargin(); for (size_t i = 0; i < item_to_render->d_renderedChildren.size(); ++i) { TreeViewItemRenderingState* item = item_to_render->d_renderedChildren.at(i); RenderedString& rendered_string = item->d_string; Sizef size(item->d_size); // center the expander compared to the item's height float half_diff = (size.d_height - d_subtreeExpanderImagerySize.d_height) / 2.0f; size.d_width = ceguimax(items_area.getWidth(), size.d_width); float indent = d_subtreeExpanderImagerySize.d_width + expander_margin * 2; if (item->d_totalChildCount > 0) { const ImagerySection* section = item->d_subtreeIsExpanded ? d_subtreeCollapserImagery : d_subtreeExpanderImagery; Rectf button_rect; button_rect.left(item_pos.x + expander_margin); button_rect.top(item_pos.y + (half_diff > 0 ? half_diff : 0)); button_rect.setSize(d_subtreeExpanderImagerySize); Rectf button_clipper(button_rect.getIntersection(items_area)); section->render(*tree_view, button_rect, 0, &button_clipper); indent = button_rect.getWidth() + expander_margin * 2; } Rectf item_rect; item_rect.left(item_pos.x + indent); item_rect.top(item_pos.y + (half_diff < 0 ? -half_diff : 0)); item_rect.setSize(size); if (!item->d_icon.empty()) { Image& img = ImageManager::getSingleton().get(item->d_icon); Rectf icon_rect(item_rect); icon_rect.setWidth(size.d_height); icon_rect.setHeight(size.d_height); Rectf icon_clipper(icon_rect.getIntersection(items_area)); img.render(tree_view->getGeometryBuffers(), icon_rect, &icon_clipper, true, ICON_COLOUR_RECT, 1.0f); item_rect.left(item_rect.left() + icon_rect.getWidth()); } Rectf item_clipper(item_rect.getIntersection(items_area)); renderString(tree_view, rendered_string, item_rect, tree_view->getFont(), &item_clipper, item->d_isSelected); item_pos.y += ceguimax(size.d_height, d_subtreeExpanderImagerySize.d_height); if (item->d_renderedChildren.empty()) continue; item_pos.x += indent; if (item->d_subtreeIsExpanded) { renderTreeItem(tree_view, items_area, item_pos, item, depth + 1); } item_pos.x -= indent; } }
void QuestsItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { // Paint the default background //QStyledItemDelegate::paint(painter, option, index); // Save painter initial state before any modification painter->save(); painter->setRenderHint(QPainter::Antialiasing, true); painter->setRenderHint(QPainter::TextAntialiasing, true); const QRect& global_rect = option.rect; const int padding = 4; const QFont &default_font = option.font; // Retrieve quest info const QVariant& data = index.model()->data(index, Qt::DisplayRole); const QuestsModel::QuestInfo& quest_info = data.value<QuestsModel::QuestInfo>(); // Retrieve info from option QStyle::State state = option.state; const QStyleOptionViewItem::ViewItemFeatures& features = option.features; const QPalette& palette = option.palette; bool active = state.testFlag(QStyle::State_Active); bool enabled = state.testFlag(QStyle::State_Enabled); bool selected = state.testFlag(QStyle::State_Selected); bool alternate_rows = features.testFlag(QStyleOptionViewItem::Alternate); bool should_alternate = alternate_rows && index.row() % 2; //auto focused = state.testFlag(QStyle::State_HasFocus); //auto mouse_over = state.testFlag(QStyle::StateFlag::State_MouseOver); // Compute colors QPalette::ColorGroup color_group = !enabled ? QPalette::Disabled : (active ? QPalette::Active : QPalette::Inactive); QPalette::ColorRole color_role = selected ? QPalette::Highlight : (should_alternate ? QPalette::AlternateBase : QPalette::Light); const QBrush& background = palette.brush(color_group, color_role); // Paint background painter->fillRect(option.rect, background); // Paint icon QRect icon_rect( global_rect.left() + padding * 2, global_rect.top() + (global_rect.height() - _iconSize.height()) / 2, _iconSize.width(), _iconSize.height()); QIcon::Mode icon_mode = enabled ? QIcon::Normal : QIcon::Disabled; const QPixmap& pixmap = quest_info.icon.pixmap(_iconSize, icon_mode, QIcon::On); painter->drawPixmap(icon_rect, pixmap); // Compute title font QFont title_font = default_font; title_font.setPointSize(title_font.pointSize() * 1.25); title_font.setWeight(QFont::DemiBold); // Compute author font QFont author_font = default_font; author_font.setWeight(QFont::Normal); // Set temporarily the font to compute the title text height painter->save(); painter->setFont(title_font); const QFontMetrics& title_font_metrics = painter->fontMetrics(); painter->restore(); // Set temporarily the font to compute the author text height painter->save(); painter->setFont(author_font); const QFontMetrics& author_font_metrics = painter->fontMetrics(); painter->restore(); // Compute author and title text rects int title_rect_left = icon_rect.right() + padding * 3; int title_rect_width = global_rect.width() - title_rect_left - padding; int title_rect_height = title_font_metrics.height(); int author_rect_left = title_rect_left; int author_rect_width = title_rect_width; int author_rect_height = author_font_metrics.height(); QRect title_rect(title_rect_left, 0, title_rect_width, title_rect_height); QRect author_rect(author_rect_left, title_rect_height, author_rect_width, author_rect_height); int global_text_height = author_rect.bottom() - title_rect.top(); int global_text_top = (global_rect.height() - global_text_height) / 2; int y_translate = global_rect.top() + global_text_top; title_rect.translate(0, y_translate); author_rect.translate(0, y_translate); // Compute title text color QPalette::ColorRole pen_color_role = selected ? QPalette::HighlightedText : QPalette::Text; const QColor& title_pen_color = palette.brush(color_group, pen_color_role).color(); // Paint title text const QString& title_text = QString::fromStdString(quest_info.properties.get_title()); if (!title_text.isEmpty()) { QString title_elided_text = title_font_metrics.elidedText(title_text, Qt::ElideRight, title_rect_width); painter->setPen(title_pen_color); painter->setFont(title_font); painter->drawText(title_rect, title_elided_text); } // Compute title text color const QColor& author_pen_color = palette.brush(QPalette::Disabled, pen_color_role).color(); // Paint author text QString separator = QString(" %1 ").arg(QChar(0x2022)); // bullet QStringList secondary_info; QString author_text = QString::fromStdString(quest_info.properties.get_author()); QString date_string = QString::fromStdString(quest_info.properties.get_release_date()); QDate date = QDate::fromString(date_string, "yyyyMMdd"); QString date_text = date.toString("yyyy"); if (!date_text.isEmpty()) { secondary_info << date_text; } if (!author_text.isEmpty()) { secondary_info << author_text; } if (!secondary_info.isEmpty()){ QString secondary_text = secondary_info.join(separator); QString secondary_elided_text = author_font_metrics.elidedText( secondary_text, Qt::ElideRight, author_rect_width); painter->setPen(author_pen_color); painter->setFont(author_font); painter->drawText(author_rect, secondary_elided_text); } // Restore painter initial state painter->restore(); }