CTrueTypeFont::CTrueTypeFont(const JsonNode & fontConfig): data(loadData(fontConfig)), font(loadFont(fontConfig), TTF_CloseFont), blended(fontConfig["blend"].Bool()) { assert(font); TTF_SetFontStyle(font.get(), getFontStyle(fontConfig)); }
void lmcMessageLog::appendPublicMessage(QString* lpszUserId, QString* lpszUserName, QString* lpszMessage, QDateTime *pTime, QFont *pFont, QColor *pColor) { QString html = QString::null; bool localUser = (lpszUserId->compare(localId) == 0); decodeMessage(lpszMessage); QString fontStyle = getFontStyle(pFont, pColor, localUser); if(lpszUserId->compare(lastId) != 0) { outStyle = !outStyle; html = outStyle ? themeData.outMsg : themeData.inMsg; // get the avatar image for this user from the cache folder QString filePath = participantAvatars.value(*lpszUserId); // if image not found, use the default avatar image for this user QString iconPath = QFile::exists(filePath) ? QUrl::fromLocalFile(filePath).toString() : "qrc"AVT_DEFAULT; html.replace("%iconpath%", iconPath); html.replace("%sender%", *lpszUserName); html.replace("%time%", getTimeString(pTime)); html.replace("%style%", fontStyle); html.replace("%message%", *lpszMessage); QWebFrame* frame = page()->mainFrame(); QWebElement document = frame->documentElement(); QWebElement body = document.findFirst("body"); body.appendInside(html); } else { html = outStyle ? themeData.outNextMsg : themeData.inNextMsg; html.replace("%time%", getTimeString(pTime)); html.replace("%style%", fontStyle); html.replace("%message%", *lpszMessage); QWebFrame* frame = page()->mainFrame(); QWebElement document = frame->documentElement(); QWebElement body = document.findFirst("body"); QWebElement last = body.lastChild(); QWebElement insert = last.findFirst("div#insert"); insert.replace(html); } hasData = true; }
void RGLView::setFontUseFreeType(bool useFreeType) { setDefaultFont(getFontFamily(), getFontStyle(), getFontCex(), useFreeType); }
void RGLView::setFontCex(double cex) { setDefaultFont(getFontFamily(), getFontStyle(), cex, getFontUseFreeType()); }
void RGLView::setFontFamily(const char *family) { setDefaultFont(family, getFontStyle(), getFontCex(), getFontUseFreeType()); }
void lmcMessageLog::appendMessageLog( MessageType type, QString* lpszUserId, QString* lpszUserName, XmlMessage* pMessage, bool bReload) { if(!pMessage && type != MT_Error) return; QString message; QString html; QString caption; QDateTime time; QFont font; QColor color; QString fontStyle; QString id = QString::null; bool addToLog = true; removeMessageLog("_lmc_statediv"); switch(type) { case MT_Message: time.setMSecsSinceEpoch(pMessage->header(XN_TIME).toLongLong()); message = pMessage->data(XN_MESSAGE); font.fromString(pMessage->data(XN_FONT)); color.setNamedColor(pMessage->data(XN_COLOR)); appendMessage(lpszUserId, lpszUserName, &message, &time, &font, &color); lastId = *lpszUserId; break; case MT_PublicMessage: case MT_GroupMessage: time.setMSecsSinceEpoch(pMessage->header(XN_TIME).toLongLong()); message = pMessage->data(XN_MESSAGE); font.fromString(pMessage->data(XN_FONT)); color.setNamedColor(pMessage->data(XN_COLOR)); appendPublicMessage(lpszUserId, lpszUserName, &message, &time, &font, &color); lastId = *lpszUserId; break; case MT_Broadcast: time.setMSecsSinceEpoch(pMessage->header(XN_TIME).toLongLong()); message = pMessage->data(XN_BROADCAST); appendBroadcast(lpszUserId, lpszUserName, &message, &time); lastId = QString::null; break; case MT_ChatState: message = pMessage->data(XN_CHATSTATE); caption = getChatStateMessage((ChatState) Helper::indexOf(ChatStateNames, CS_Max, message)); if(!caption.isNull()) { html = themeData.stateMsg; html.replace("%iconpath%", "qrc"IDR_BLANK); html.replace("%sender%", caption.arg(*lpszUserName)); html.replace("%message%", ""); appendMessageLog(&html); } addToLog = false; break; case MT_Failed: message = pMessage->data(XN_MESSAGE); font.fromString(pMessage->data(XN_FONT)); color.setNamedColor(pMessage->data(XN_COLOR)); html = themeData.sysMsg; caption = tr("This message was not delivered to %1:"); fontStyle = getFontStyle(&font, &color, true); decodeMessage(&message); html.replace("%iconpath%", "qrc"IDR_CRITICALMSG); html.replace("%sender%", caption.arg(*lpszUserName)); html.replace("%style%", fontStyle); html.replace("%message%", message); appendMessageLog(&html); lastId = QString::null; break; case MT_Error: html = themeData.sysMsg; html.replace("%iconpath%", "qrc"IDR_CRITICALMSG); html.replace("%sender%", tr("Your message was not sent.")); html.replace("%message%", ""); appendMessageLog(&html); lastId = QString::null; addToLog = false; break; case MT_File: case MT_LocalFile: appendFileMessage(type, lpszUserName, pMessage, bReload); id = pMessage->data(XN_TEMPID); pMessage->removeData(XN_TEMPID); lastId = QString::null; break; case MT_Join: case MT_Leave: message = pMessage->data(XN_GROUPMSGOP); caption = getChatRoomMessage((GroupMsgOp) Helper::indexOf(GroupMsgOpNames, GMO_Max, message)); if(!caption.isNull()) { html = themeData.sysMsg; html.replace("%iconpath%", "qrc"IDR_BLANK); html.replace("%sender%", caption.arg(*lpszUserName)); html.replace("%message%", ""); appendMessageLog(&html); } lastId = QString::null; default: break; } if(!bReload && addToLog && pMessage) { XmlMessage xmlMessage = pMessage->clone(); QString userId = lpszUserId ? *lpszUserId : QString::null; QString userName = lpszUserName ? *lpszUserName : QString::null; messageLog.append(SingleMessage(type, userId, userName, xmlMessage, id)); } }