MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / ValidateUserpicCache

Function ValidateUserpicCache

Telegram/SourceFiles/ui/userpic_view.cpp:24–84  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22}
23
24void ValidateUserpicCache(
25 PeerUserpicView &view,
26 const QImage *cloud,
27 const EmptyUserpic *empty,
28 int size,
29 PeerUserpicShape shape) {
30 Expects(cloud != nullptr || empty != nullptr);
31
32 const auto full = QSize(size, size);
33 const auto version = style::PaletteVersion();
34 const auto shapeValue = static_cast<uint32>(shape) & 3;
35 const auto regenerate = (view.cached.size() != QSize(size, size))
36 || (view.shape != shapeValue)
37 || (cloud && !view.empty.null())
38 || (empty && empty != view.empty.get())
39 || (empty && view.paletteVersion != version);
40 if (!regenerate) {
41 return;
42 }
43 view.empty = empty;
44 view.shape = shapeValue;
45 view.paletteVersion = version;
46
47 if (cloud) {
48 view.cached = cloud->scaled(
49 full,
50 Qt::IgnoreAspectRatio,
51 Qt::SmoothTransformation);
52 if (shape == PeerUserpicShape::Monoforum) {
53 view.cached = Ui::ApplyMonoforumShape(std::move(view.cached));
54 } else if (shape == PeerUserpicShape::Forum) {
55 view.cached = Images::Round(
56 std::move(view.cached),
57 Images::CornersMask(size
58 * Ui::ForumUserpicRadiusMultiplier()
59 / style::DevicePixelRatio()));
60 } else {
61 view.cached = Images::Circle(std::move(view.cached));
62 }
63 } else {
64 if (view.cached.size() != full) {
65 view.cached = QImage(full, QImage::Format_ARGB32_Premultiplied);
66 }
67 view.cached.fill(Qt::transparent);
68
69 auto p = QPainter(&view.cached);
70 if (shape == PeerUserpicShape::Monoforum) {
71 empty->paintMonoforum(p, 0, 0, size, size);
72 } else if (shape == PeerUserpicShape::Forum) {
73 empty->paintRounded(
74 p,
75 0,
76 0,
77 size,
78 size,
79 size * Ui::ForumUserpicRadiusMultiplier());
80 } else {
81 empty->paintCircle(p, 0, 0, size, size);

Callers 2

paintUserpicMethod · 0.85
paintCustomUserpicMethod · 0.85

Calls 13

ApplyMonoforumShapeFunction · 0.85
nullMethod · 0.80
scaledMethod · 0.80
paintMonoforumMethod · 0.80
paintRoundedMethod · 0.80
paintCircleMethod · 0.80
RoundFunction · 0.70
QImageClass · 0.50
QPainterClass · 0.50
sizeMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected