void InitializeOneFont (HFONT * theFont, const TCHAR FontRegKey[] , LOGFONT autoLogFont, LOGFONT * LogFontUsed) { LOGFONT logfont; if (GetObjectType(*theFont) == OBJ_FONT) { DeleteObject(*theFont); // RLD the EditFont screens use the Delete } memset ((char *)&logfont, 0, sizeof (LOGFONT)); if (UseCustomFonts) { propGetFontSettings((TCHAR * )FontRegKey, &logfont); if (!IsNullLogFont(logfont)) { *theFont = CreateFontIndirect (&logfont); if (GetObjectType(*theFont) == OBJ_FONT) { if (LogFontUsed != NULL) *LogFontUsed = logfont; // RLD save for custom font GUI } } } if (GetObjectType(*theFont) != OBJ_FONT) { if (!IsNullLogFont(autoLogFont)) { ApplyClearType(&autoLogFont); ApplyFontSize(&autoLogFont); *theFont = CreateFontIndirect (&autoLogFont); if (GetObjectType(*theFont) == OBJ_FONT) { if (LogFontUsed != NULL) *LogFontUsed = autoLogFont; // RLD save for custom font GUI } } } }
void InitializeOneFont (LKFont& theFont, LOGFONT logfont) { theFont.Release(); ApplyClearType(&logfont); ApplyFontSize(&logfont); theFont.Create(&logfont); }
void propGetFontSettingsFromString(const TCHAR *Buffer1, LOGFONT* lplf) { #define propGetFontSettingsMAX_SIZE 128 TCHAR Buffer[propGetFontSettingsMAX_SIZE+1]; // RLD need a buffer (not sz) for strtok_r w/ gcc optimized ARM920 TCHAR *pWClast, *pToken; LOGFONT lfTmp; LK_tcsncpy(Buffer, Buffer1, propGetFontSettingsMAX_SIZE); // FontDescription of format: // typical font entry // 26,0,0,0,700,1,0,0,0,0,0,4,2,<fontname> //FW_THIN 100 //FW_NORMAL 400 //FW_MEDIUM 500 //FW_BOLD 700 //FW_HEAVY 900 LKASSERT(lplf != NULL); memset ((void *)&lfTmp, 0, sizeof (LOGFONT)); if ((pToken = _tcstok_r(Buffer, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfHeight = _tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfWidth = _tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfEscapement = _tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfOrientation = _tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfWeight = _tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfItalic = (unsigned char)_tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfUnderline = (unsigned char)_tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfStrikeOut = (unsigned char)_tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfCharSet = (unsigned char)_tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfOutPrecision = (unsigned char)_tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfClipPrecision = (unsigned char)_tcstol(pToken, NULL, 10); // FIXFONTS possible multiplier for FT_Set_Pixel in place of Set_Char_Size // double mulp=(8.7 / 10.0)*100; // lfTmp.lfHeight = (int)((lfTmp.lfHeight*mulp)/100.0); // DEFAULT_QUALITY 0 // RASTER_FONTTYPE 0x0001 // DRAFT_QUALITY 1 // NONANTIALIASED_QUALITY 3 // ANTIALIASED_QUALITY 4 // CLEARTYPE_QUALITY 5 // CLEARTYPE_COMPAT_QUALITY 6 if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; ApplyClearType(&lfTmp); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; lfTmp.lfPitchAndFamily = (unsigned char)_tcstol(pToken, NULL, 10); if ((pToken = _tcstok_r(NULL, TEXT(","), &pWClast)) == NULL) return; _tcscpy(lfTmp.lfFaceName, pToken); memcpy((void *)lplf, (void *)&lfTmp, sizeof (LOGFONT)); return; }
void LoadGUI() { #define MAX_ENUM 10 IsInitialized=false; int i=0; WndProperty* wp; wp = (WndProperty*)wf->FindByName(TEXT("prpFontName")); if (wp) { DataFieldEnum* dfe; dfe = (DataFieldEnum*)wp->GetDataField(); if (dfe) { for (i=0 ;i < MAX_ENUM ; i++) { dfe->Dec(); } // rewind bool bFound=false; for (i=0 ;i < MAX_ENUM ; i++ ) { if (_tcsncmp(dfe->GetAsString(), NewLogFont.lfFaceName, LF_FACESIZE) == 0) { bFound=true; break; } dfe->Inc(); } if (!bFound) { dfe->addEnumText(NewLogFont.lfFaceName); for (i=0 ;i < MAX_ENUM ; i++) { dfe->Dec(); } // rewind for (i=0 ;i < MAX_ENUM ; i++ ) { if (_tcsncmp(dfe->GetAsString(), NewLogFont.lfFaceName,LF_FACESIZE) == 0) { break; } dfe->Inc(); } } } wp->RefreshDisplay(); } wp = (WndProperty*)wf->FindByName(TEXT("prpFontHeight")); if (wp) { DataFieldInteger * dfi; dfi = (DataFieldInteger*)wp->GetDataField(); if (dfi) { dfi->Set(NewLogFont.lfHeight); } wp->RefreshDisplay(); } wp = (WndProperty*)wf->FindByName(TEXT("prpFontWeight")); if (wp) { DataFieldInteger* dfi; dfi = (DataFieldInteger*)wp->GetDataField(); if (dfi) { dfi->Set(NewLogFont.lfWeight); } wp->RefreshDisplay(); } wp = (WndProperty*)wf->FindByName(TEXT("prpFontItalic")); if (wp) { DataFieldBoolean* dfb; dfb = (DataFieldBoolean*)wp->GetDataField(); if (dfb) { dfb->Set(NewLogFont.lfItalic); } wp->RefreshDisplay(); } wp = (WndProperty*)wf->FindByName(TEXT("prpFontPitchAndFamily")); if (wp) { DataFieldEnum * dfe; dfe = (DataFieldEnum*)wp->GetDataField(); if (dfe) { dfe->SetAsInteger(NewLogFont.lfPitchAndFamily); } wp->RefreshDisplay(); } // This is useless, because we ApplyClearType later on. We always use a general common quality. ApplyClearType(&NewLogFont); IsInitialized=true; RedrawSampleFont(); }