static bool CheckFileRename(const TCHAR *ptszOldName, TCHAR *pNewName) { for (int i = 0; i < SIZEOF(renameTable); i++) { if (wildcmpit(ptszOldName, renameTable[i].oldName)) { TCHAR *ptszDest = renameTable[i].newName; if (ptszDest == NULL) *pNewName = 0; else { _tcsncpy_s(pNewName, MAX_PATH, ptszDest, _TRUNCATE); size_t cbLen = _tcslen(ptszDest) - 1; if (pNewName[cbLen] == '*') _tcsncpy_s(pNewName + cbLen, MAX_PATH - cbLen, ptszOldName, _TRUNCATE); } return true; } } return false; }
BOOL IsHighlighted(SESSION_INFO *si, GCEVENT *gce) { if (!g_Settings->bHighlightEnabled || !g_Settings->pszHighlightWords || !gce || !si || !si->pMe) return FALSE; if (gce->ptszText == NULL) return FALSE; TCHAR *buf = RemoveFormatting(NEWTSTR_ALLOCA(gce->ptszText)); int iStart = 0; CMString tszHighlightWords(g_Settings->pszHighlightWords); while (true) { CMString tszToken = tszHighlightWords.Tokenize(_T("\t "), iStart); if (iStart == -1) break; // replace %m with the users nickname if (tszToken == _T("%m")) tszToken = si->pMe->pszNick; if (tszToken.Find('*') == -1) tszToken = '*' + tszToken + '*'; // time to get the next/first word in the incoming text string for (const TCHAR *p = buf; *p != '\0'; p += _tcscspn(p, _T(" "))) { p += _tcsspn(p, _T(" ")); // compare the words, using wildcards if (wildcmpit(p, tszToken)) return TRUE; } } return FALSE; }
void Cache_ProceedAvatarInList(ClcData *dat, ClcContact *contact) { avatarCacheEntry * ace = contact->avatar_data; int old_pos = contact->avatar_pos; if (ace == NULL || ace->dwFlags == AVS_BITMAP_EXPIRED || ace->hbmPic == NULL) { // Avatar was not ready or removed - need to remove it from cache if (old_pos >= 0) { ImageArray_RemoveImage(&dat->avatar_cache, old_pos); // Update all items ExecuteOnAllContacts(dat, ReduceAvatarPosition, (void *)&old_pos); contact->avatar_pos = AVATAR_POS_DONT_HAVE; return; } } else if (contact->avatar_data->hbmPic != NULL) //Lets Add it { // Clipping width and height LONG width_clip = dat->avatars_maxwidth_size ? dat->avatars_maxwidth_size : dat->avatars_maxheight_size; LONG height_clip = dat->avatars_maxheight_size; if (height_clip * ace->bmWidth / ace->bmHeight <= width_clip) width_clip = height_clip * ace->bmWidth / ace->bmHeight; else height_clip = width_clip * ace->bmHeight / ace->bmWidth; if (wildcmpit(contact->avatar_data->szFilename, _T("*.gif"))) { if (old_pos == AVATAR_POS_ANIMATED) AniAva_RemoveAvatar(contact->hContact); int res = AniAva_AddAvatar(contact->hContact, contact->avatar_data->szFilename, width_clip, height_clip); if (res) { contact->avatar_pos = AVATAR_POS_ANIMATED; contact->avatar_size.cy = HIWORD(res); contact->avatar_size.cx = LOWORD(res); return; } } // Create objs void * pt; HDC hdc = CreateCompatibleDC(dat->avatar_cache.hdc); HBITMAP hDrawBmp = ske_CreateDIB32Point(width_clip, height_clip, &pt); HBITMAP oldBmp = (HBITMAP)SelectObject(hdc, hDrawBmp); // need to draw avatar bitmap here DrawAvatarImageWithGDIp(hdc, 0, 0, width_clip, height_clip, ace->hbmPic, 0, 0, ace->bmWidth, ace->bmHeight, ace->dwFlags, 255); SelectObject(hdc, oldBmp); DeleteDC(hdc); // Add to list if (old_pos >= 0) { ImageArray_ChangeImage(&dat->avatar_cache, hDrawBmp, old_pos); contact->avatar_pos = old_pos; } else contact->avatar_pos = ImageArray_AddImage(&dat->avatar_cache, hDrawBmp, -1); if (old_pos == AVATAR_POS_ANIMATED && contact->avatar_pos != AVATAR_POS_ANIMATED) AniAva_RemoveAvatar(contact->hContact); DeleteObject(hDrawBmp); } }