mirror-chatterino2/word.h

209 lines
3.9 KiB
C
Raw Normal View History

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"
#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 &copytext,
const QString &tooltip, const Link &link = Link());
explicit Word(const QString &m_text, Type type, const QColor &color,
const QString &copytext, 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
{
return *m_image;
2017-01-05 16:07:20 +01:00
}
2017-01-11 18:52:09 +01:00
const QString &
getText() const
{
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
{
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
{
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;
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;
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