本文整理汇总了C++中Painter::drawText方法的典型用法代码示例。如果您正苦于以下问题:C++ Painter::drawText方法的具体用法?C++ Painter::drawText怎么用?C++ Painter::drawText使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Painter
的用法示例。
在下文中一共展示了Painter::drawText方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: singleChar
void RoundButton::Numbers::paint(Painter &p, int x, int y, int outerWidth) {
auto digitsCount = _digits.size();
if (!digitsCount) return;
auto progress = anim::easeOutCirc(1., _a_ready.current(1.));
auto width = anim::interpolate(_fromWidth, _toWidth, progress);
QString singleChar('0');
if (rtl()) x = outerWidth - x - width;
x += width - _digits.size() * _digitWidth;
auto fromTop = anim::interpolate(0, _st.font->height, progress) * (_growing ? 1 : -1);
auto toTop = anim::interpolate(_st.font->height, 0, progress) * (_growing ? -1 : 1);
for (auto i = 0; i != digitsCount; ++i) {
auto &digit = _digits[i];
auto from = digit.from;
auto to = digit.to;
if (from.unicode()) {
p.setOpacity(1. - progress);
singleChar[0] = from;
p.drawText(x + (_digitWidth - digit.fromWidth) / 2, y + fromTop + _st.font->ascent, singleChar);
}
if (to.unicode()) {
p.setOpacity(progress);
singleChar[0] = to;
p.drawText(x + (_digitWidth - digit.toWidth) / 2, y + toTop + _st.font->ascent, singleChar);
}
x += _digitWidth;
}
p.setOpacity(1.);
}
示例2: draw
void CustomStyle::draw(Painter &p, const std::u16string &text, Style::TextElement elt,
const WidgetState& st, const Rect &r, const Style::Extra &extra) const {
const Margin& m = extra.margin;
p.setFont (font);
p.translate(r.x,r.y);
const Sprite& icon = iconSprite(extra.icon,st,r);
int dX=0;
if( !icon.size().isEmpty() && elt!=TE_CheckboxTitle ){
p.setColor(Color(1.f));
p.setTexture( icon );
if( text.empty() ) {
p.drawRect( (r.w-icon.w())/2, (r.h-icon.h())/2, icon.w(), icon.h() );
} else {
p.drawRect( m.left, (r.h-icon.h())/2, icon.w(), icon.h() );
}
}
switch( elt ){
case TE_LabelTitle:
case TE_CheckboxTitle:
p.setColor(Color(0,0,0,1));
break;
default:
p.setColor(extra.fontColor);
}
const Size txtSz=extra.font.textSize(text);
p.drawText( m.left+dX+(r.w-dX-m.xMargin()-txtSz.w)/2, (r.h-txtSz.h)/2, r.w-m.xMargin(), txtSz.h, text, AlignBottom );
p.translate(-r.x,-r.y);
}
示例3: hq
void CalendarBox::Inner::paintRows(Painter &p, QRect clip) {
p.setFont(st::calendarDaysFont);
auto ms = getms();
auto y = rowsTop();
auto index = -_context->daysShift();
auto highlightedIndex = _context->highlightedIndex();
for (auto row = 0, rowsCount = _context->rowsCount(), daysCount = _context->daysCount()
; row != rowsCount
; ++row, y += st::calendarCellSize.height()) {
auto x = rowsLeft();
if (!myrtlrect(x, y, st::calendarCellSize.width() * kDaysInWeek, st::calendarCellSize.height()).intersects(clip)) {
index += kDaysInWeek;
continue;
}
for (auto col = 0; col != kDaysInWeek; ++col, ++index, x += st::calendarCellSize.width()) {
auto rect = myrtlrect(x, y, st::calendarCellSize.width(), st::calendarCellSize.height());
auto grayedOut = (index < 0 || index >= daysCount || !rect.intersects(clip));
auto highlighted = (index == highlightedIndex);
auto enabled = _context->isEnabled(index);
auto innerLeft = x + (st::calendarCellSize.width() - st::calendarCellInner) / 2;
auto innerTop = y + (st::calendarCellSize.height() - st::calendarCellInner) / 2;
if (highlighted) {
PainterHighQualityEnabler hq(p);
p.setPen(Qt::NoPen);
p.setBrush(grayedOut ? st::windowBgOver : st::dialogsBgActive);
p.drawEllipse(myrtlrect(innerLeft, innerTop, st::calendarCellInner, st::calendarCellInner));
p.setBrush(Qt::NoBrush);
}
auto it = _ripples.find(index);
if (it != _ripples.cend()) {
auto colorOverride = [highlighted, grayedOut] {
if (highlighted) {
return grayedOut ? st::windowBgRipple : st::dialogsRippleBgActive;
}
return st::windowBgOver;
};
it->second->paint(p, innerLeft, innerTop, width(), ms, &(colorOverride()->c));
if (it->second->empty()) {
_ripples.erase(it);
}
}
if (highlighted) {
p.setPen(grayedOut ? st::windowSubTextFg : st::dialogsNameFgActive);
} else if (enabled) {
p.setPen(grayedOut ? st::windowSubTextFg : st::boxTextFg);
} else {
p.setPen(st::windowSubTextFg);
}
p.drawText(rect, _context->labelFromIndex(index), style::al_center);
}
}
}
示例4: rowsLeft
void CalendarBox::Inner::paintDayNames(Painter &p, QRect clip) {
p.setFont(st::calendarDaysFont);
p.setPen(st::calendarDaysFg);
auto y = st::calendarPadding.top();
auto x = rowsLeft();
if (!myrtlrect(x, y, st::calendarCellSize.width() * kDaysInWeek, st::calendarDaysHeight).intersects(clip)) {
return;
}
for (auto i = 0; i != kDaysInWeek; ++i, x += st::calendarCellSize.width()) {
auto rect = myrtlrect(x, y, st::calendarCellSize.width(), st::calendarDaysHeight);
if (!rect.intersects(clip)) {
continue;
}
p.drawText(rect, langDayOfWeek(i + 1), style::al_top);
}
}
示例5: paintInlineItems
void Inner::paintInlineItems(Painter &p, const QRect &r) {
if (_restrictedLabel) {
return;
}
if (_rows.isEmpty() && !_switchPmButton) {
p.setFont(st::normalFont);
p.setPen(st::noContactsColor);
p.drawText(QRect(0, 0, width(), (height() / 3) * 2 + st::normalFont->height), lang(lng_inline_bot_no_results), style::al_center);
return;
}
auto gifPaused = _controller->isGifPausedAtLeastFor(Window::GifPauseReason::InlineResults);
InlineBots::Layout::PaintContext context(getms(), false, gifPaused, false);
auto top = st::stickerPanPadding;
if (_switchPmButton) {
top += _switchPmButton->height() + st::inlineResultsSkip;
}
auto fromx = rtl() ? (width() - r.x() - r.width()) : r.x();
auto tox = rtl() ? (width() - r.x()) : (r.x() + r.width());
for (auto row = 0, rows = _rows.size(); row != rows; ++row) {
auto &inlineRow = _rows[row];
if (top >= r.top() + r.height()) break;
if (top + inlineRow.height > r.top()) {
auto left = st::inlineResultsLeft - st::buttonRadius;
if (row == rows - 1) context.lastRow = true;
for (int col = 0, cols = inlineRow.items.size(); col < cols; ++col) {
if (left >= tox) break;
auto item = inlineRow.items.at(col);
auto w = item->width();
if (left + w > fromx) {
p.translate(left, top);
item->paint(p, r.translated(-left, -top), &context);
p.translate(-left, -top);
}
left += w;
if (item->hasRightSkip()) {
left += st::inlineResultsSkip;
}
}
}
top += inlineRow.height;
}
}
示例6: paint
void UnreadBar::paint(Painter &p, int y, int w) const {
const auto bottom = y + height();
y += marginTop();
p.fillRect(
0,
y,
w,
height() - marginTop() - st::lineWidth,
st::historyUnreadBarBg);
p.fillRect(
0,
bottom - st::lineWidth,
w,
st::lineWidth,
st::historyUnreadBarBorder);
p.setFont(st::historyUnreadBarFont);
p.setPen(st::historyUnreadBarFg);
int left = st::msgServiceMargin.left();
int maxwidth = w;
if (Adaptive::ChatWide()) {
maxwidth = qMin(
maxwidth,
st::msgMaxWidth
+ 2 * st::msgPhotoSkip
+ 2 * st::msgMargin.left());
}
w = maxwidth;
const auto skip = st::historyUnreadBarHeight
- 2 * st::lineWidth
- st::historyUnreadBarFont->height;
p.drawText(
(w - width) / 2,
y + (skip / 2) + st::historyUnreadBarFont->ascent,
text);
}
示例7: paintImportantSwitch
void paintImportantSwitch(Painter &p, Mode current, int fullWidth, bool selected, bool onlyBackground) {
p.fillRect(0, 0, fullWidth, st::dialogsImportantBarHeight, selected ? st::dialogsBgOver : st::dialogsBg);
if (onlyBackground) {
return;
}
p.setFont(st::semiboldFont);
p.setPen(st::dialogsNameFg);
int unreadTop = (st::dialogsImportantBarHeight - st::dialogsUnreadHeight) / 2;
bool mutedHidden = (current == Dialogs::Mode::Important);
QString text = lang(mutedHidden ? lng_dialogs_show_all_chats : lng_dialogs_hide_muted_chats);
int textBaseline = unreadTop + (st::dialogsUnreadHeight - st::dialogsUnreadFont->height) / 2 + st::dialogsUnreadFont->ascent;
p.drawText(st::dialogsPadding.x(), textBaseline, text);
if (mutedHidden) {
if (int32 unread = App::histories().unreadMutedCount()) {
int unreadRight = fullWidth - st::dialogsPadding.x();
UnreadBadgeStyle st;
st.muted = true;
paintUnreadCount(p, QString::number(unread), unreadRight, unreadTop, st, nullptr);
}
}
}
示例8: paintUnreadCount
void paintUnreadCount(Painter &p, const QString &text, int x, int y, const UnreadBadgeStyle &st, int *outUnreadWidth) {
int unreadWidth = st.font->width(text);
int unreadRectWidth = unreadWidth + 2 * st.padding;
int unreadRectHeight = st.size;
accumulate_max(unreadRectWidth, unreadRectHeight);
int unreadRectLeft = x;
if ((st.align & Qt::AlignHorizontal_Mask) & style::al_center) {
unreadRectLeft = (x - unreadRectWidth) / 2;
} else if ((st.align & Qt::AlignHorizontal_Mask) & style::al_right) {
unreadRectLeft = x - unreadRectWidth;
}
int unreadRectTop = y;
if (outUnreadWidth) {
*outUnreadWidth = unreadRectWidth;
}
paintUnreadBadge(p, QRect(unreadRectLeft, unreadRectTop, unreadRectWidth, unreadRectHeight), st);
auto textTop = st.textTop ? st.textTop : (unreadRectHeight - st.font->height) / 2;
p.setFont(st.font);
p.setPen(st.active ? st::dialogsUnreadFgActive : (st.selected ? st::dialogsUnreadFgOver : st::dialogsUnreadFg));
p.drawText(unreadRectLeft + (unreadRectWidth - unreadWidth) / 2, unreadRectTop + textTop + st.font->ascent, text);
}