static int sttRegisterFontWorker(FontIDW* font_id, int hLangpack) { if (font_id->cbSize != sizeof(FontIDW) && font_id->cbSize != FontIDW_OLDSIZE) return -1; for (int i=0; i < font_id_list.getCount(); i++) { FontInternal& F = font_id_list[i]; if (!mir_tstrcmp(F.group, font_id->group) && !mir_tstrcmp(F.name, font_id->name) && !(F.flags & FIDF_ALLOWREREGISTER)) return 1; } char idstr[256]; mir_snprintf(idstr, SIZEOF(idstr), "%sFlags", font_id->prefix); db_set_dw(0, font_id->dbSettingsGroup, idstr, font_id->flags); FontInternal* newItem = new FontInternal; memset(newItem, 0, sizeof(FontInternal)); memcpy(newItem, font_id, font_id->cbSize); newItem->hLangpack = hLangpack; if (!mir_tstrcmp(newItem->deffontsettings.szFace, _T("MS Shell Dlg"))) { LOGFONT lf; SystemParametersInfo(SPI_GETICONTITLELOGFONT, sizeof(LOGFONT), &lf, FALSE); mir_tstrncpy(newItem->deffontsettings.szFace, lf.lfFaceName, SIZEOF(newItem->deffontsettings.szFace)); if (!newItem->deffontsettings.size) newItem->deffontsettings.size = lf.lfHeight; } UpdateFontSettings(font_id, &newItem->value); font_id_list.insert(newItem); return 0; }
void CConfig::SaveFontSettings(int iFont) { if(iFont > FONT_SETTINGS -1 || iFont < 0) return; char szSetting[128]; // Height sprintf(szSetting,"Font%dHeight",iFont); DBWriteContactSettingByte(NULL, "MirandaG15", szSetting, m_logfont[iFont].lfHeight); // Style int style = 0; if(m_logfont[iFont].lfWeight == FW_BOLD) style |= FONTF_BOLD; if(m_logfont[iFont].lfItalic) style |= FONTF_ITALIC; sprintf(szSetting,"Font%dStyle",iFont); DBWriteContactSettingByte(NULL, "MirandaG15", szSetting, style); // Charset sprintf(szSetting,"Font%dCharset",iFont); DBWriteContactSettingByte(NULL, "MirandaG15", szSetting, m_logfont[iFont].lfCharSet); // Name sprintf(szSetting,"Font%dName",iFont); DBWriteContactSettingTString(NULL, "MirandaG15", szSetting, m_logfont[iFont].lfFaceName); UpdateFontSettings(iFont); }
void CConfig::LoadFontSettings(int iFont) { if(iFont > FONT_SETTINGS -1 || iFont < 0) return; char szSetting[128]; // Fixed Values m_logfont[iFont].lfOutPrecision = OUT_DEFAULT_PRECIS; m_logfont[iFont].lfClipPrecision = CLIP_DEFAULT_PRECIS; m_logfont[iFont].lfQuality = DEFAULT_QUALITY; m_logfont[iFont].lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; // Height sprintf(szSetting,"Font%dHeight",iFont); m_logfont[iFont].lfHeight = (char) DBGetContactSettingByte(NULL, "MirandaG15", szSetting, -MulDiv(6, 96, 72)); // Style sprintf(szSetting,"Font%dStyle",iFont); int style = DBGetContactSettingByte(NULL, "MirandaG15", szSetting, 0); m_logfont[iFont].lfWeight = style & FONTF_BOLD ? FW_BOLD : FW_NORMAL; m_logfont[iFont].lfItalic = style & FONTF_ITALIC ? 1 : 0; // Charset sprintf(szSetting,"Font%dCharset",iFont); m_logfont[iFont].lfCharSet = DBGetContactSettingByte(NULL, "MirandaG15", szSetting, DEFAULT_CHARSET); // Name sprintf(szSetting,"Font%dName",iFont); DBVARIANT dbv; if (DBGetContactSettingTString(NULL, "MirandaG15", szSetting, &dbv)) lstrcpy(m_logfont[iFont].lfFaceName,_T("Small Fonts")); else { lstrcpy(m_logfont[iFont].lfFaceName, dbv.ptszVal); DBFreeVariant(&dbv); } UpdateFontSettings(iFont); }
void CConfig::SaveFontSettings(int iFont) { if(iFont > FONT_SETTINGS -1 || iFont < 0) return; char szSetting[128]; // Height mir_snprintf(szSetting,SIZEOF(szSetting),"Font%dHeight",iFont); db_set_b(NULL, "MirandaG15", szSetting, m_logfont[iFont].lfHeight); // Style int style = 0; if(m_logfont[iFont].lfWeight == FW_BOLD) style |= FONTF_BOLD; if(m_logfont[iFont].lfItalic) style |= FONTF_ITALIC; mir_snprintf(szSetting,SIZEOF(szSetting),"Font%dStyle",iFont); db_set_b(NULL, "MirandaG15", szSetting, style); // Charset mir_snprintf(szSetting,SIZEOF(szSetting),"Font%dCharset",iFont); db_set_b(NULL, "MirandaG15", szSetting, m_logfont[iFont].lfCharSet); // Name mir_snprintf(szSetting,SIZEOF(szSetting),"Font%dName",iFont); db_set_ts(NULL, "MirandaG15", szSetting, m_logfont[iFont].lfFaceName); UpdateFontSettings(iFont); }