Document member badge painting and ignored state flags
This commit is contained in:
1 parent
efe879bfd9
commit
1820128f5b
1 file changed
+14
-8
@@ -1,4 +1,7 @@
|
||||
/* Отрисовка флагов участника и общих значков storage/рации. */
|
||||
/* Чистая отрисовка значков участника/storage/рации, без владения painter/paint device.
|
||||
* p — ненулевой активный QPainter; x/y — верхний левый угол, sz>0 — размер в координатах painter.
|
||||
* Каждый рисунок сохраняет/восстанавливает состояние painter, включая transform/pen/brush.
|
||||
* Состояние участников не меняется; синхронизацию совместного paint device обеспечивает вызывающий. */
|
||||
#ifndef FLAGPAINTER_H
|
||||
#define FLAGPAINTER_H
|
||||
|
||||
@@ -6,17 +9,20 @@
|
||||
#include <QColor>
|
||||
#include <stdint.h>
|
||||
|
||||
#define MEMBER_FLAG_SUPERNODE 0x01
|
||||
#define MEMBER_FLAG_ADMIN 0x02
|
||||
#define MEMBER_FLAG_MODER 0x04
|
||||
#define MEMBER_FLAG_DELETED 0x08
|
||||
#define MEMBER_FLAG_RADIO 0x10
|
||||
// Значения совпадают с CHAT_MEMBER_FLAG_* (src/chat/chat_member.h).
|
||||
#define MEMBER_FLAG_SUPERNODE 0x01 // молния
|
||||
#define MEMBER_FLAG_ADMIN 0x02 // звезда
|
||||
#define MEMBER_FLAG_MODER 0x04 // щит
|
||||
#define MEMBER_FLAG_DELETED 0x08 // draw игнорирует; делегат отдельно зачёркивает имя
|
||||
#define MEMBER_FLAG_RADIO 0x10 // draw игнорирует; делегат отдельно выбирает цвет рации
|
||||
|
||||
class FlagPainter {
|
||||
public:
|
||||
// SUPERNODE -> ADMIN -> MODER, только установленные биты, с промежутком 2 между квадратами sz×sz.
|
||||
// Общая ширина при n>0: n*sz+(n-1)*2; flags без этих битов не рисует ничего.
|
||||
static void draw(QPainter* p, uint8_t flags, int x, int y, int sz);
|
||||
static void drawStorage(QPainter* p, int x, int y, int sz);
|
||||
static void drawRadio(QPainter* p, int x, int y, int sz, const QColor& color);
|
||||
static void drawStorage(QPainter* p, int x, int y, int sz); // серый значок диска в квадрате sz×sz
|
||||
static void drawRadio(QPainter* p, int x, int y, int sz, const QColor& color); // контур рации заданного цвета, без заливки
|
||||
|
||||
private:
|
||||
static void drawLightning(QPainter* p, int x, int y, int sz);
|
||||
|
||||
Reference in new issue
Block a user