2017-01-05 16:07:20 +01:00
|
|
|
#ifndef WORD_H
|
|
|
|
#define WORD_H
|
|
|
|
|
|
|
|
#include "fonts.h"
|
2017-01-11 18:52:09 +01:00
|
|
|
#include "lazyloadedimage.h"
|
2017-01-05 20:49:33 +01:00
|
|
|
#include "link.h"
|
2017-01-05 17:02:05 +01:00
|
|
|
|
|
|
|
#include <QRect>
|
|
|
|
#include <QString>
|
2017-01-05 16:07:20 +01:00
|
|
|
|
|
|
|
class Word
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum Type : long int {
|
|
|
|
None = 0,
|
|
|
|
Misc = 1,
|
|
|
|
Text = 2,
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
TimestampNoSeconds = 4,
|
2017-01-05 16:07:20 +01:00
|
|
|
TimestampWithSeconds = 8,
|
|
|
|
|
|
|
|
TwitchEmoteImage = 0x10,
|
|
|
|
TwitchEmoteText = 0x20,
|
|
|
|
BttvEmoteImage = 0x40,
|
|
|
|
BttvEmoteText = 0x80,
|
|
|
|
BttvGifEmoteImage = 0x100,
|
|
|
|
BttvGifEmoteText = 0x200,
|
|
|
|
FfzEmoteImage = 0x400,
|
|
|
|
FfzEmoteText = 0x800,
|
2017-01-11 18:52:09 +01:00
|
|
|
EmoteImages = TwitchEmoteImage | BttvEmoteImage | BttvGifEmoteImage |
|
|
|
|
FfzEmoteImage,
|
2017-01-05 16:07:20 +01:00
|
|
|
|
|
|
|
Bits = 0x1000,
|
|
|
|
BitsAnimated = 0x2000,
|
|
|
|
|
|
|
|
BadgeStaff = 0x4000,
|
|
|
|
BadgeAdmin = 0x8000,
|
|
|
|
BadgeGlobalMod = 0x10000,
|
|
|
|
BadgeModerator = 0x20000,
|
|
|
|
BadgeTurbo = 0x40000,
|
|
|
|
BadgeBroadcaster = 0x80000,
|
|
|
|
BadgePremium = 0x100000,
|
|
|
|
BadgeChatterino = 0x200000,
|
2017-01-05 20:49:33 +01:00
|
|
|
BadgeCheer = 0x400000,
|
2017-01-11 18:52:09 +01:00
|
|
|
Badges = BadgeStaff | BadgeAdmin | BadgeGlobalMod | BadgeModerator |
|
|
|
|
BadgeTurbo | BadgeBroadcaster | BadgePremium |
|
|
|
|
BadgeChatterino | BadgeCheer,
|
2017-01-05 20:49:33 +01:00
|
|
|
|
|
|
|
Username = 0x800000,
|
2017-01-07 20:43:55 +01:00
|
|
|
BitsAmount = 0x1000000,
|
2017-01-05 20:49:33 +01:00
|
|
|
|
2017-01-15 16:38:30 +01:00
|
|
|
ButtonBan = 0x2000000,
|
|
|
|
ButtonTimeout = 0x4000000,
|
|
|
|
|
|
|
|
EmojiImage = 0x8000000,
|
|
|
|
EmojiText = 0x10000000,
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
Default = TimestampNoSeconds | Badges | Username | Bits |
|
|
|
|
FfzEmoteImage | BttvEmoteImage | BttvGifEmoteImage |
|
2017-01-15 16:38:30 +01:00
|
|
|
TwitchEmoteImage | BitsAmount | Text | ButtonBan |
|
|
|
|
ButtonTimeout
|
2017-01-05 16:07:20 +01:00
|
|
|
};
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
explicit Word(LazyLoadedImage *m_image, Type type, const QString ©text,
|
|
|
|
const QString &tooltip, const Link &link = Link());
|
|
|
|
explicit Word(const QString &m_text, Type type, const QColor &color,
|
|
|
|
const QString ©text, const QString &tooltip,
|
|
|
|
const Link &link = Link());
|
2017-01-05 16:07:20 +01:00
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
LazyLoadedImage &
|
|
|
|
getImage() const
|
|
|
|
{
|
2017-01-05 16:54:34 +01:00
|
|
|
return *m_image;
|
2017-01-05 16:07:20 +01:00
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
const QString &
|
|
|
|
getText() const
|
|
|
|
{
|
2017-01-05 16:54:34 +01:00
|
|
|
return m_text;
|
2017-01-05 16:07:20 +01:00
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
int
|
|
|
|
width() const
|
|
|
|
{
|
2017-01-05 16:07:20 +01:00
|
|
|
return m_width;
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
int
|
|
|
|
height() const
|
|
|
|
{
|
2017-01-05 16:07:20 +01:00
|
|
|
return m_height;
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
void
|
|
|
|
setSize(int width, int height)
|
|
|
|
{
|
2017-01-11 01:08:20 +01:00
|
|
|
m_width = width;
|
|
|
|
m_height = height;
|
2017-01-05 16:07:20 +01:00
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
bool
|
|
|
|
isImage() const
|
|
|
|
{
|
2017-01-05 16:07:20 +01:00
|
|
|
return m_isImage;
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
bool
|
|
|
|
isText() const
|
|
|
|
{
|
2017-01-11 01:08:20 +01:00
|
|
|
return !m_isImage;
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
const QString &
|
|
|
|
copyText() const
|
|
|
|
{
|
2017-01-05 16:53:13 +01:00
|
|
|
return m_copyText;
|
2017-01-05 16:07:20 +01:00
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
bool
|
|
|
|
hasTrailingSpace() const
|
|
|
|
{
|
2017-01-05 16:07:20 +01:00
|
|
|
return m_hasTrailingSpace;
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
QFont &
|
|
|
|
getFont() const
|
|
|
|
{
|
2017-01-05 16:07:20 +01:00
|
|
|
return Fonts::getFont(m_font);
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
QFontMetrics &
|
|
|
|
getFontMetrics() const
|
|
|
|
{
|
2017-01-11 01:08:20 +01:00
|
|
|
return Fonts::getFontMetrics(m_font);
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
Type
|
|
|
|
type() const
|
|
|
|
{
|
2017-01-05 16:07:20 +01:00
|
|
|
return m_type;
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
const QString &
|
|
|
|
tooltip() const
|
|
|
|
{
|
2017-01-05 16:53:13 +01:00
|
|
|
return m_tooltip;
|
2017-01-05 16:07:20 +01:00
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
const QColor &
|
|
|
|
color() const
|
|
|
|
{
|
2017-01-05 20:49:33 +01:00
|
|
|
return m_color;
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
const Link &
|
|
|
|
link() const
|
|
|
|
{
|
2017-01-05 20:49:33 +01:00
|
|
|
return m_link;
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
int
|
|
|
|
xOffset() const
|
|
|
|
{
|
2017-01-11 01:08:20 +01:00
|
|
|
return m_xOffset;
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
int
|
|
|
|
yOffset() const
|
|
|
|
{
|
2017-01-11 01:08:20 +01:00
|
|
|
return m_yOffset;
|
|
|
|
}
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
void
|
|
|
|
setOffset(int xOffset, int yOffset)
|
|
|
|
{
|
2017-01-11 01:08:20 +01:00
|
|
|
m_xOffset = std::max(0, xOffset);
|
|
|
|
m_yOffset = std::max(0, yOffset);
|
|
|
|
}
|
|
|
|
|
2017-01-15 16:38:30 +01:00
|
|
|
std::vector<short> &
|
|
|
|
characterWidthCache()
|
|
|
|
{
|
|
|
|
return m_characterWidthCache;
|
|
|
|
}
|
|
|
|
|
2017-01-05 16:07:20 +01:00
|
|
|
private:
|
2017-01-11 18:52:09 +01:00
|
|
|
LazyLoadedImage *m_image;
|
2017-01-05 16:54:34 +01:00
|
|
|
QString m_text;
|
2017-01-05 20:49:33 +01:00
|
|
|
QColor m_color;
|
2017-01-05 16:07:20 +01:00
|
|
|
bool m_isImage;
|
|
|
|
|
|
|
|
Type m_type;
|
2017-01-05 16:53:13 +01:00
|
|
|
QString m_copyText;
|
|
|
|
QString m_tooltip;
|
2017-01-11 01:08:20 +01:00
|
|
|
|
2017-01-13 18:59:11 +01:00
|
|
|
int m_width = 16;
|
|
|
|
int m_height = 16;
|
|
|
|
int m_xOffset = 0;
|
|
|
|
int m_yOffset = 0;
|
2017-01-11 01:08:20 +01:00
|
|
|
|
2017-01-05 16:07:20 +01:00
|
|
|
bool m_hasTrailingSpace;
|
|
|
|
Fonts::Type m_font = Fonts::Medium;
|
2017-01-05 20:49:33 +01:00
|
|
|
Link m_link;
|
2017-01-15 16:38:30 +01:00
|
|
|
|
|
|
|
std::vector<short> m_characterWidthCache;
|
2017-01-05 16:07:20 +01:00
|
|
|
};
|
|
|
|
|
2017-01-11 18:52:09 +01:00
|
|
|
#endif // WORD_H
|