empty_userpic.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. #include "base/weak_ptr.h"
  9. namespace Ui {
  10. class EmptyUserpic final : public base::has_weak_ptr {
  11. public:
  12. struct BgColors {
  13. const style::color color1;
  14. const style::color color2;
  15. };
  16. [[nodiscard]] static uint8 ColorIndex(uint64 id);
  17. [[nodiscard]] static EmptyUserpic::BgColors UserpicColor(
  18. uint8 colorIndex);
  19. [[nodiscard]] static QString ExternalName();
  20. [[nodiscard]] static QString InaccessibleName();
  21. EmptyUserpic(const BgColors &colors, const QString &name);
  22. void paintCircle(
  23. QPainter &p,
  24. int x,
  25. int y,
  26. int outerWidth,
  27. int size) const;
  28. void paintRounded(
  29. QPainter &p,
  30. int x,
  31. int y,
  32. int outerWidth,
  33. int size,
  34. int radius = 0) const;
  35. void paintSquare(
  36. QPainter &p,
  37. int x,
  38. int y,
  39. int outerWidth,
  40. int size) const;
  41. [[nodiscard]] QPixmap generate(int size);
  42. [[nodiscard]] std::pair<uint64, uint64> uniqueKey() const;
  43. static void PaintSavedMessages(
  44. QPainter &p,
  45. int x,
  46. int y,
  47. int outerWidth,
  48. int size);
  49. static void PaintSavedMessages(
  50. QPainter &p,
  51. int x,
  52. int y,
  53. int outerWidth,
  54. int size,
  55. QBrush bg,
  56. const style::color &fg);
  57. [[nodiscard]] static QImage GenerateSavedMessages(int size);
  58. static void PaintRepliesMessages(
  59. QPainter &p,
  60. int x,
  61. int y,
  62. int outerWidth,
  63. int size);
  64. static void PaintRepliesMessages(
  65. QPainter &p,
  66. int x,
  67. int y,
  68. int outerWidth,
  69. int size,
  70. QBrush bg,
  71. const style::color &fg);
  72. [[nodiscard]] static QImage GenerateRepliesMessages(int size);
  73. static void PaintHiddenAuthor(
  74. QPainter &p,
  75. int x,
  76. int y,
  77. int outerWidth,
  78. int size);
  79. static void PaintHiddenAuthor(
  80. QPainter &p,
  81. int x,
  82. int y,
  83. int outerWidth,
  84. int size,
  85. QBrush bg,
  86. const style::color &fg);
  87. [[nodiscard]] static QImage GenerateHiddenAuthor(int size);
  88. static void PaintMyNotes(
  89. QPainter &p,
  90. int x,
  91. int y,
  92. int outerWidth,
  93. int size);
  94. static void PaintMyNotes(
  95. QPainter &p,
  96. int x,
  97. int y,
  98. int outerWidth,
  99. int size,
  100. QBrush bg,
  101. const style::color &fg);
  102. [[nodiscard]] static QImage GenerateMyNotes(int size);
  103. static void PaintCurrency(
  104. QPainter &p,
  105. int x,
  106. int y,
  107. int outerWidth,
  108. int size);
  109. static void PaintCurrency(
  110. QPainter &p,
  111. int x,
  112. int y,
  113. int outerWidth,
  114. int size,
  115. QBrush bg,
  116. const style::color &fg);
  117. [[nodiscard]] static QImage GenerateCurrency(int size);
  118. ~EmptyUserpic();
  119. private:
  120. void paint(
  121. QPainter &p,
  122. int x,
  123. int y,
  124. int outerWidth,
  125. int size,
  126. Fn<void()> paintBackground) const;
  127. void fillString(const QString &name);
  128. const BgColors _colors;
  129. QString _string;
  130. };
  131. } // namespace Ui