Changeset 8342 for trunk/src


Ignore:
Timestamp:
Apr 30, 2002, 12:32:21 PM (23 years ago)
Author:
sandervl
Message:

Font renaming support added to EnumFontFamiliesA/W

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gdi32/font.cpp

    r7721 r8342  
    1 /* $Id: font.cpp,v 1.23 2002-01-02 18:36:00 sandervl Exp $ */
     1/* $Id: font.cpp,v 1.24 2002-04-30 10:32:21 sandervl Exp $ */
    22
    33/*
     
    385385  memset(&textM.ntmeFontSignature, 0, sizeof(textM.ntmeFontSignature));
    386386
    387   dprintf(("EnumFontProcExA %s", logFont.elfLogFont.lfFaceName));
     387  dprintf(("EnumFontProcExA %s height %d", logFont.elfLogFont.lfFaceName, textM.ntmetm.tmHeight));
    388388
    389389  int rc = proc(&logFont, &textM, arg3, lpEnumData->userData);
     
    401401 ENUMLOGFONTEXW LogFont;
    402402 NEWTEXTMETRICEXW textM;
     403 USHORT selTIB = SetWin32TIB(); // save current FS selector and set win32 sel
    403404 int rc;
    404405
     
    435436  memset(&textM.ntmeFontSignature, 0, sizeof(textM.ntmeFontSignature));
    436437
    437   dprintf(("EnumFontProcExW %s", lpLogFont->elfLogFont.lfFaceName));
    438   return proc(&LogFont, &textM, arg3, lpEnumData->userData);
     438  dprintf(("EnumFontProcExW %s height %d", lpLogFont->elfLogFont.lfFaceName, textM.ntmetm.tmHeight));
     439  rc = proc(&LogFont, &textM, arg3, lpEnumData->userData);
     440  SetFS(selTIB);           // switch back to the saved FS selector
     441  return rc;
    439442}
    440443//******************************************************************************
    441444//******************************************************************************
    442445ODINFUNCTION4(int, EnumFontsA,
    443               HDC, arg1,
     446              HDC, hdc,
    444447              LPCSTR, arg2,
    445448              FONTENUMPROCA, arg3,
     
    447450{
    448451  //@@@PH shouldn't this rather be O32_EnumFonts ?
    449   return EnumFontFamiliesA(arg1, arg2, arg3, arg4);
     452  return EnumFontFamiliesA(hdc, arg2, arg3, arg4);
    450453}
    451454//******************************************************************************
    452455//******************************************************************************
    453456ODINFUNCTION4(int, EnumFontsW,
    454               HDC, arg1,
     457              HDC, hdc,
    455458              LPCWSTR, arg2,
    456459              FONTENUMPROCW, arg3,
     
    458461{
    459462  //@@@PH shouldn't this rather be O32_EnumFonts ?
    460   return EnumFontFamiliesW(arg1, arg2, arg3, arg4);
     463  return EnumFontFamiliesW(hdc, arg2, arg3, arg4);
    461464}
    462465//******************************************************************************
    463466//******************************************************************************
    464467ODINFUNCTION4(int, EnumFontFamiliesA,
    465               HDC, arg1,
    466               LPCSTR, arg2,
     468              HDC, hdc,
     469              LPCSTR, lpszFontFamily,
    467470              FONTENUMPROCA, arg3,
    468471              LPARAM, arg4)
    469472{
    470473  ENUMUSERDATA enumData;
     474  CHAR         lpstrFamilyNew[LF_FACESIZE];
    471475  int rc;
    472476
    473   dprintf(("GDI32: EnumFontFamiliesA %s", arg2));
     477  dprintf(("GDI32: EnumFontFamiliesA %s", lpszFontFamily));
     478
     479  iFontRename(lpszFontFamily, lpstrFamilyNew);
    474480
    475481  enumData.userProc = (DWORD)arg3;
    476482  enumData.userData = arg4;
    477483
    478   rc = O32_EnumFontFamilies(arg1, arg2, &EnumFontProcA, (LPARAM)&enumData);
     484  rc = O32_EnumFontFamilies(hdc, lpstrFamilyNew, &EnumFontProcA, (LPARAM)&enumData);
    479485
    480486  return rc;
     
    483489//******************************************************************************
    484490ODINFUNCTION4(int, EnumFontFamiliesW,
    485               HDC, arg1,
    486               LPCWSTR, arg2,
     491              HDC, hdc,
     492              LPCWSTR, lpszFontFamilyW,
    487493              FONTENUMPROCW, arg3,
    488494              LPARAM, arg4)
    489495{
     496  CHAR         lpstrFamilyNew[LF_FACESIZE];
    490497  ENUMUSERDATA enumData;
    491   int rc;
    492   char *astring = UnicodeToAsciiString((LPWSTR)arg2);
    493 
    494   dprintf(("GDI32: EnumFontFamiliesW %s", astring));
     498  int          rc;
     499  char        *lpszFontFamilyA = UnicodeToAsciiString((LPWSTR)lpszFontFamilyW);
     500
     501  dprintf(("GDI32: EnumFontFamiliesW %s", lpszFontFamilyA));
     502
     503  iFontRename(lpszFontFamilyA, lpstrFamilyNew);
    495504
    496505  enumData.userProc = (DWORD)arg3;
    497506  enumData.userData = arg4;
    498507
    499   rc = O32_EnumFontFamilies(arg1, astring, &EnumFontProcW, (LPARAM)&enumData);
    500 
    501   FreeAsciiString(astring);
     508  rc = O32_EnumFontFamilies(hdc, lpstrFamilyNew, &EnumFontProcW, (LPARAM)&enumData);
     509
     510  if(lpszFontFamilyA) FreeAsciiString(lpszFontFamilyA);
    502511  return rc;
    503512}
     
    505514//******************************************************************************
    506515ODINFUNCTION5(INT, EnumFontFamiliesExA,
    507               HDC, arg1,
     516              HDC, hdc,
    508517              LPLOGFONTA, arg2,
    509518              FONTENUMPROCEXA, arg3,
     
    520529  enumData.dwFlags  = dwFlags;
    521530
    522   rc = O32_EnumFontFamilies(arg1, arg2->lfFaceName, &EnumFontProcExA, (LPARAM)&enumData);
     531  rc = O32_EnumFontFamilies(hdc, arg2->lfFaceName, &EnumFontProcExA, (LPARAM)&enumData);
    523532
    524533  return rc;
     
    527536//******************************************************************************
    528537ODINFUNCTION5(INT, EnumFontFamiliesExW,
    529               HDC, arg1,
     538              HDC, hdc,
    530539              LPLOGFONTW, arg2,
    531540              FONTENUMPROCEXW, arg3,
     
    543552  enumData.dwFlags  = dwFlags;
    544553
    545   rc = O32_EnumFontFamilies(arg1, astring, &EnumFontProcExW, (LPARAM)&enumData);
     554  rc = O32_EnumFontFamilies(hdc, astring, &EnumFontProcExW, (LPARAM)&enumData);
    546555
    547556  FreeAsciiString(astring);
     
    723732    switch (flags) {
    724733    case TCI_SRCFONTSIG:
    725   while (!(*lpSrc>>index & 0x0001) && index<MAXTCIINDEX) index++;
     734      while (!(*lpSrc>>index & 0x0001) && index<MAXTCIINDEX) index++;
    726735      break;
    727736    case TCI_SRCCODEPAGE:
     
    740749//******************************************************************************
    741750//******************************************************************************
     751BOOL WIN32API GetTextMetricsA( HDC hdc, LPTEXTMETRICA  pwtm)
     752{
     753 BOOL rc;
     754
     755    rc = O32_GetTextMetrics(hdc, pwtm);
     756    dprintf(("GDI32: GetTextMetricsA %x %x returned %d", hdc, pwtm, rc));
     757    return(rc);
     758}
     759//******************************************************************************
     760//******************************************************************************
     761BOOL WIN32API GetTextMetricsW( HDC hdc, LPTEXTMETRICW pwtm)
     762{
     763 BOOL rc;
     764 TEXTMETRICA atm;
     765
     766    dprintf(("GDI32: GetTextMetricsW"));
     767
     768    rc = O32_GetTextMetrics(hdc, &atm);
     769    pwtm->tmHeight = atm.tmHeight;
     770    pwtm->tmAscent = atm.tmAscent;
     771    pwtm->tmDescent = atm.tmDescent;
     772    pwtm->tmInternalLeading = atm.tmInternalLeading;
     773    pwtm->tmExternalLeading = atm.tmExternalLeading;
     774    pwtm->tmAveCharWidth = atm.tmAveCharWidth;
     775    pwtm->tmMaxCharWidth = atm.tmMaxCharWidth;
     776    pwtm->tmWeight = atm.tmWeight;
     777    pwtm->tmOverhang = atm.tmOverhang;
     778    pwtm->tmDigitizedAspectX = atm.tmDigitizedAspectX;
     779    pwtm->tmDigitizedAspectY = atm.tmDigitizedAspectY;
     780    pwtm->tmFirstChar = atm.tmFirstChar;
     781    pwtm->tmLastChar = atm.tmLastChar;
     782    pwtm->tmDefaultChar = atm.tmDefaultChar;
     783    pwtm->tmBreakChar = atm.tmBreakChar;
     784    pwtm->tmItalic = atm.tmItalic;
     785    pwtm->tmUnderlined = atm.tmUnderlined;
     786    pwtm->tmStruckOut = atm.tmStruckOut;
     787    pwtm->tmPitchAndFamily = atm.tmPitchAndFamily;
     788    pwtm->tmCharSet = atm.tmCharSet;
     789
     790    dprintf(("GDI32: GetTextMetricsW %x %x returned %d", hdc, pwtm, rc));
     791    return(rc);
     792}
     793//******************************************************************************
     794//******************************************************************************
     795int WIN32API GetTextFaceA( HDC hdc, int arg2, LPSTR  arg3)
     796{
     797    dprintf(("GDI32: GetTextFaceA %x %d %x", hdc, arg2, arg3));
     798    return O32_GetTextFace(hdc, arg2, arg3);
     799}
     800//******************************************************************************
     801//******************************************************************************
     802int WIN32API GetTextFaceW( HDC hdc, int arg2, LPWSTR  arg3)
     803{
     804 char *astring = (char *)malloc(arg2+1);
     805 int   rc;
     806
     807    dprintf(("GDI32: GetTextFaceW"));
     808    *astring = 0;
     809    rc = GetTextFaceA(hdc, arg2, astring);
     810    AsciiToUnicode(astring, arg3);
     811    free(astring);
     812    return rc;
     813}
     814//******************************************************************************
     815//******************************************************************************
     816UINT WIN32API GetOutlineTextMetricsA( HDC hdc, UINT arg2, LPOUTLINETEXTMETRICA  arg3)
     817{
     818    dprintf(("GDI32: GetOutlineTextMetricsA %x %x %x", hdc, arg2, arg3));
     819    return O32_GetOutlineTextMetrics(hdc, arg2, arg3);
     820}
     821//******************************************************************************
     822//******************************************************************************
     823UINT WIN32API GetOutlineTextMetricsW( HDC hdc, UINT arg2, LPOUTLINETEXTMETRICW  arg3)
     824{
     825    dprintf(("!ERROR!: GDI32: GetOutlineTextMetricsW STUB"));
     826    // NOTE: This will not work as is (needs UNICODE support)
     827//    return O32_GetOutlineTextMetrics(hdc, arg2, arg3);
     828    return 0;
     829}
     830//******************************************************************************
     831//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.