return _formatCache.value(formatType | ((quint64)messageLabel << 32), QTextCharFormat());
}
-void UiStyle::setCachedFormat(const QTextCharFormat &format, quint32 formatType, quint32 messageLabel) {
+void UiStyle::setCachedFormat(const QTextCharFormat &format, quint32 formatType, quint32 messageLabel) const {
_formatCache[formatType | ((quint64)messageLabel << 32)] = format;
}
-QFontMetricsF *UiStyle::fontMetrics(quint32 ftype, quint32 label) {
+QFontMetricsF *UiStyle::fontMetrics(quint32 ftype, quint32 label) const {
// QFontMetricsF is not assignable, so we need to store pointers :/
quint64 key = ftype | ((quint64)label << 32);
// NOTE: This and the following functions are intimately tied to the values in FormatType. Don't change this
// until you _really_ know what you do!
-QTextCharFormat UiStyle::format(quint32 ftype, quint32 label_) {
+QTextCharFormat UiStyle::format(quint32 ftype, quint32 label_) const {
if(ftype == Invalid)
return QTextCharFormat();
return fmt;
}
-void UiStyle::mergeFormat(QTextCharFormat &fmt, quint32 ftype, quint64 label) {
+void UiStyle::mergeFormat(QTextCharFormat &fmt, quint32 ftype, quint64 label) const {
mergeSubElementFormat(fmt, ftype & 0x00ff, label);
// TODO: allow combinations for mirc formats and colors (each), e.g. setting a special format for "bold and italic"
}
// Merge a subelement format into an existing message format
-void UiStyle::mergeSubElementFormat(QTextCharFormat& fmt, quint32 ftype, quint64 label) {
+void UiStyle::mergeSubElementFormat(QTextCharFormat& fmt, quint32 ftype, quint64 label) const {
quint64 key = ftype | label;
fmt.merge(format(key & Q_UINT64_C(0x0000ffffffffff00))); // label + subelement
fmt.merge(format(key & Q_UINT64_C(0x0000ffffffffffff))); // label + subelement + msgtype
return _formatCodes.key(ftype);
}
-QList<QTextLayout::FormatRange> UiStyle::toTextLayoutList(const FormatList &formatList, int textLength, quint32 messageLabel) {
+QList<QTextLayout::FormatRange> UiStyle::toTextLayoutList(const FormatList &formatList, int textLength, quint32 messageLabel) const {
QList<QTextLayout::FormatRange> formatRanges;
QTextLayout::FormatRange range;
int i = 0;
static QString mircToInternal(const QString &);
static inline QString timestampFormatString() { return _timestampFormatString; }
- QTextCharFormat format(quint32 formatType, quint32 messageLabel);
- QFontMetricsF *fontMetrics(quint32 formatType, quint32 messageLabel);
+ QTextCharFormat format(quint32 formatType, quint32 messageLabel) const;
+ QFontMetricsF *fontMetrics(quint32 formatType, quint32 messageLabel) const;
- QList<QTextLayout::FormatRange> toTextLayoutList(const FormatList &, int textLength, quint32 messageLabel);
+ QList<QTextLayout::FormatRange> toTextLayoutList(const FormatList &, int textLength, quint32 messageLabel) const;
inline const QBrush &brush(ColorRole role) const { return _uiStylePalette.at((int) role); }
inline void setBrush(ColorRole role, const QBrush &brush) { _uiStylePalette[(int) role] = brush; }
QTextCharFormat format(quint64 key) const;
QTextCharFormat cachedFormat(quint32 formatType, quint32 messageLabel) const;
- void setCachedFormat(const QTextCharFormat &format, quint32 formatType, quint32 messageLabel);
- void mergeFormat(QTextCharFormat &format, quint32 formatType, quint64 messageLabel);
- void mergeSubElementFormat(QTextCharFormat &format, quint32 formatType, quint64 messageLabel);
+ void setCachedFormat(const QTextCharFormat &format, quint32 formatType, quint32 messageLabel) const;
+ void mergeFormat(QTextCharFormat &format, quint32 formatType, quint64 messageLabel) const;
+ void mergeSubElementFormat(QTextCharFormat &format, quint32 formatType, quint64 messageLabel) const;
static FormatType formatType(const QString &code);
static QString formatCode(FormatType);
QVector<QBrush> _uiStylePalette;
QBrush _markerLineBrush;
QHash<quint64, QTextCharFormat> _formats;
- QHash<quint64, QTextCharFormat> _formatCache;
- QHash<quint64, QFontMetricsF *> _metricsCache;
+ mutable QHash<quint64, QTextCharFormat> _formatCache;
+ mutable QHash<quint64, QFontMetricsF *> _metricsCache;
QHash<quint32, QTextCharFormat> _listItemFormats;
static QHash<QString, FormatType> _formatCodes;
static QString _timestampFormatString;