コード例 #1
0
ファイル: chat_opts.cpp プロジェクト: Ganster41/miranda-ng
void SetIndentSize()
{
	if (g_Settings->bShowTime) {
		LOGFONT lf;
		LoadMsgDlgFont(0, &lf, NULL);
		HFONT hFont = CreateFontIndirect(&lf);
		int iText = GetTextPixelSize(MakeTimeStamp(g_Settings->pszTimeStamp, time(NULL)), hFont, TRUE);
		DeleteObject(hFont);
		g_Settings->LogTextIndent = iText * 12 / 10;
	}
	else g_Settings->LogTextIndent = 0;
}
コード例 #2
0
int Chat_FontsChanged(WPARAM wParam,LPARAM lParam)
{
	LoadLogFonts();
	{
		LOGFONT lf;
		HFONT hFont;
		int iText;

		LoadMsgDlgFont(0, &lf, NULL);
		hFont = CreateFontIndirect(&lf);
		iText = GetTextPixelSize(MakeTimeStamp(g_Settings.pszTimeStamp, time(NULL)),hFont, TRUE);
		DeleteObject(hFont);
		g_Settings.LogTextIndent = iText;
		g_Settings.LogTextIndent = g_Settings.LogTextIndent*12/10;
		g_Settings.LogIndentEnabled = (DBGetContactSettingByte(NULL, "Chat", "LogIndentEnabled", 1) != 0)?TRUE:FALSE;
	}
	MM_FontsChanged();
	MM_FixColors();
	SM_BroadcastMessage(NULL, GC_SETWNDPROPS, 0, 0, TRUE);
	return 0;
}
コード例 #3
0
char* Log_CreateRTF(LOGSTREAMDATA *streamData)
{
	MODULEINFO *mi = ci.MM_FindModule(streamData->si->pszModule);

	// guesstimate amount of memory for the RTF
	size_t bufferEnd = 0, bufferAlloced = streamData->bRedraw ? 1024 * (streamData->si->iEventCount + 2) : 2048;
	char *buffer = (char *)mir_alloc(bufferAlloced);
	buffer[0] = '\0';

	// ### RTF HEADER
	char *header = mi->pszHeader;
	if (header)
		Log_Append(buffer, bufferEnd, bufferAlloced, header);

	// ### RTF BODY (one iteration per event that should be streamed in)
	for (LOGINFO *lin = streamData->lin; lin; lin = lin->prev) {
		// filter
		if (streamData->si->iType == GCW_CHATROOM || streamData->si->iType == GCW_PRIVMESS)
			if (streamData->si->bFilterEnabled && (streamData->si->iLogFilterFlags & lin->iType) == 0)
				continue;

		// create new line, and set font and color
		if (lin->next != NULL)
			Log_Append(buffer, bufferEnd, bufferAlloced, "\\par ");
		Log_Append(buffer, bufferEnd, bufferAlloced, "%s ", Log_SetStyle(0));

		// Insert icon
		if ((lin->iType & g_Settings->dwIconFlags) || lin->bIsHighlighted && (g_Settings->dwIconFlags & GC_EVENT_HIGHLIGHT)) {
			int iIndex = (lin->bIsHighlighted && g_Settings->dwIconFlags & GC_EVENT_HIGHLIGHT) ? ICON_HIGHLIGHT : EventToIcon(lin);
			Log_Append(buffer, bufferEnd, bufferAlloced, "\\f0\\fs14");
			while (bufferAlloced - bufferEnd < logIconBmpSize[0])
				bufferAlloced += 4096;
			buffer = (char *)mir_realloc(buffer, bufferAlloced);
			memcpy(buffer + bufferEnd, pLogIconBmpBits[iIndex], logIconBmpSize[iIndex]);
			bufferEnd += logIconBmpSize[iIndex];
		}

		if (g_Settings->bTimeStampEventColour) {
			LOGFONT &lf = ci.aFonts[0].lf;

			// colored timestamps
			static char szStyle[256];
			if (lin->ptszNick && lin->iType == GC_EVENT_MESSAGE) {
				int iii = lin->bIsHighlighted ? 16 : (lin->bIsMe ? 2 : 1);
				mir_snprintf(szStyle, _countof(szStyle), "\\f0\\cf%u\\ul0\\highlight0\\b%d\\i%d\\fs%u", iii + 1, lf.lfWeight >= FW_BOLD ? 1 : 0, lf.lfItalic, 2 * abs(lf.lfHeight) * 74 / ci.logPixelSY);
				Log_Append(buffer, bufferEnd, bufferAlloced, "%s ", szStyle);
			}
			else {
				int iii = lin->bIsHighlighted ? 16 : EventToIndex(lin);
				mir_snprintf(szStyle, _countof(szStyle), "\\f0\\cf%u\\ul0\\highlight0\\b%d\\i%d\\fs%u", iii + 1, lf.lfWeight >= FW_BOLD ? 1 : 0, lf.lfItalic, 2 * abs(lf.lfHeight) * 74 / ci.logPixelSY);
				Log_Append(buffer, bufferEnd, bufferAlloced, "%s ", szStyle);
			}
		}
		else Log_Append(buffer, bufferEnd, bufferAlloced, "%s ", Log_SetStyle(0));

		if (g_Settings->dwIconFlags)
			Log_Append(buffer, bufferEnd, bufferAlloced, "\\tab ");

		//insert timestamp
		if (g_Settings->bShowTime) {
			TCHAR szTimeStamp[30], szOldTimeStamp[30];

			mir_tstrncpy(szTimeStamp, MakeTimeStamp(g_Settings->pszTimeStamp, lin->time), 30);
			mir_tstrncpy(szOldTimeStamp, MakeTimeStamp(g_Settings->pszTimeStamp, streamData->si->LastTime), 30);
			if (!g_Settings->bShowTimeIfChanged || streamData->si->LastTime == 0 || mir_tstrcmp(szTimeStamp, szOldTimeStamp)) {
				streamData->si->LastTime = lin->time;
				Log_AppendRTF(streamData, TRUE, buffer, bufferEnd, bufferAlloced, _T("%s"), szTimeStamp);
			}
			Log_Append(buffer, bufferEnd, bufferAlloced, "\\tab ");
		}

		// Insert the nick
		if (lin->ptszNick && lin->iType == GC_EVENT_MESSAGE) {
			TCHAR pszTemp[300], *p1;

			Log_Append(buffer, bufferEnd, bufferAlloced, "%s ", Log_SetStyle(lin->bIsMe ? 2 : 1));
			mir_tstrncpy(pszTemp, lin->bIsMe ? g_Settings->pszOutgoingNick : g_Settings->pszIncomingNick, 299);
			p1 = _tcsstr(pszTemp, _T("%n"));
			if (p1)
				p1[1] = 's';

			Log_AppendRTF(streamData, TRUE, buffer, bufferEnd, bufferAlloced, pszTemp, lin->ptszNick);
			Log_Append(buffer, bufferEnd, bufferAlloced, " ");
		}

		// Insert the message
		Log_Append(buffer, bufferEnd, bufferAlloced, "%s ", Log_SetStyle(lin->bIsHighlighted ? 16 : EventToIndex(lin)));
		streamData->lin = lin;
		AddEventToBuffer(buffer, bufferEnd, bufferAlloced, streamData);
	}

	// ### RTF END
	if (streamData->bRedraw)
		Log_Append(buffer, bufferEnd, bufferAlloced, "\\par}");
	else
		Log_Append(buffer, bufferEnd, bufferAlloced, "}");
	return buffer;
}