Changeset 10174 for trunk/src


Ignore:
Timestamp:
Jul 16, 2003, 5:47:37 PM (22 years ago)
Author:
sandervl
Message:

KOM: Fixed GetTextFaceW() to support unicode correctly; Fixed calcDimensions

Location:
trunk/src/gdi32
Files:
2 edited

Legend:

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

    r9975 r10174  
    1 /* $Id: font.cpp,v 1.29 2003-04-02 12:58:58 sandervl Exp $ */
     1/* $Id: font.cpp,v 1.30 2003-07-16 15:47:37 sandervl Exp $ */
    22
    33/*
     
    433433//******************************************************************************
    434434//******************************************************************************
    435 int WIN32API EnumFontsA(HDC hdc, 
    436                         LPCSTR arg2, 
    437                         FONTENUMPROCA arg3, 
     435int WIN32API EnumFontsA(HDC hdc,
     436                        LPCSTR arg2,
     437                        FONTENUMPROCA arg3,
    438438                        LPARAM  arg4)
    439439{
     
    443443//******************************************************************************
    444444//******************************************************************************
    445 int WIN32API EnumFontsW(HDC hdc, 
     445int WIN32API EnumFontsW(HDC hdc,
    446446                        LPCWSTR arg2,
    447447                        FONTENUMPROCW arg3,
     
    499499//******************************************************************************
    500500//******************************************************************************
    501 INT WIN32API EnumFontFamiliesExA(HDC hdc, 
    502                                  LPLOGFONTA arg2, 
    503                                  FONTENUMPROCEXA arg3, 
    504                                  LPARAM arg4, 
     501INT WIN32API EnumFontFamiliesExA(HDC hdc,
     502                                 LPLOGFONTA arg2,
     503                                 FONTENUMPROCEXA arg3,
     504                                 LPARAM arg4,
    505505                                 DWORD dwFlags)
    506506{
     
    520520//******************************************************************************
    521521//******************************************************************************
    522 INT WIN32API EnumFontFamiliesExW(HDC hdc, 
     522INT WIN32API EnumFontFamiliesExW(HDC hdc,
    523523                                 LPLOGFONTW arg2,
    524524                                 FONTENUMPROCEXW arg3,
    525                                  LPARAM arg4, 
     525                                 LPARAM arg4,
    526526                                 DWORD dwFlags)
    527527{
     
    781781int WIN32API GetTextFaceW( HDC hdc, int arg2, LPWSTR  arg3)
    782782{
    783  char *astring = (char *)malloc(arg2+1);
     783 char *astring = NULL;
     784 int   lenA = GetTextFaceA( hdc, 0, NULL );
    784785 int   rc;
    785786
    786787    dprintf(("GDI32: GetTextFaceW"));
    787     *astring = 0;
    788     rc = GetTextFaceA(hdc, arg2, astring);
    789     AsciiToUnicode(astring, arg3);
     788    astring = ( char * )malloc( lenA );
     789    if( astring )
     790        return 0;
     791
     792    rc = GetTextFaceA(hdc, lenA, astring);
     793
     794    if( rc )
     795    {
     796        if( arg3 )
     797        {
     798            AsciiToUnicodeN(astring, arg3, arg2);
     799            rc = lstrlenW( arg3 );
     800        }
     801        else
     802            rc = lstrlenAtoW( astring, -1 );
     803
     804        rc++; // including null-terminator
     805    }
     806
    790807    free(astring);
     808
    791809    return rc;
    792810}
  • trunk/src/gdi32/oslibgpi.cpp

    r9737 r10174  
    1 /* $Id: oslibgpi.cpp,v 1.13 2003-01-28 16:21:48 sandervl Exp $ */
     1/* $Id: oslibgpi.cpp,v 1.14 2003-07-16 15:47:37 sandervl Exp $ */
    22
    33/*
     
    259259  if (box[TXTBOX_BOTTOMLEFT].y == box[TXTBOX_BOTTOMRIGHT].y)
    260260  {
    261     point->y = labs (box[TXTBOX_BOTTOMLEFT].y-box[TXTBOX_TOPLEFT].y);
    262     point->x = labs (box[TXTBOX_BOTTOMRIGHT].x-box[TXTBOX_BOTTOMLEFT].x);
    263 
     261    point->y = labs (box[TXTBOX_BOTTOMLEFT].y-box[TXTBOX_TOPLEFT].y) + 1;
     262    point->x = labs (box[TXTBOX_BOTTOMRIGHT].x-box[TXTBOX_BOTTOMLEFT].x) + 1;
    264263    if (box[TXTBOX_BOTTOMLEFT].x != box[TXTBOX_TOPLEFT].x)
    265264    {
     
    272271  } else
    273272  {
    274     cx = labs (box[TXTBOX_BOTTOMLEFT].x-box[TXTBOX_TOPLEFT].x);
    275     cy = labs (box[TXTBOX_BOTTOMLEFT].y-box[TXTBOX_TOPLEFT].y);
     273    cx = labs (box[TXTBOX_BOTTOMLEFT].x-box[TXTBOX_TOPLEFT].x) + 1;
     274    cy = labs (box[TXTBOX_BOTTOMLEFT].y-box[TXTBOX_TOPLEFT].y) + 1;
    276275    point->y = (ULONG)hypot(cx,cy);
    277276
    278     cx = labs (box[TXTBOX_TOPRIGHT].x-box[TXTBOX_TOPLEFT].x);
    279     cy = labs (box[TXTBOX_TOPRIGHT].y-box[TXTBOX_TOPLEFT].y);
     277    cx = labs (box[TXTBOX_TOPRIGHT].x-box[TXTBOX_TOPLEFT].x) + 1;
     278    cy = labs (box[TXTBOX_TOPRIGHT].y-box[TXTBOX_TOPLEFT].y) + 1;
    280279    point->x  = (ULONG)hypot(cx,cy);
    281280  }
     
    400399
    401400
    402 int OSLibGpiQueryFontMaxHeight(HDC hdc) 
     401int OSLibGpiQueryFontMaxHeight(HDC hdc)
    403402{
    404403  FONTMETRICS metrics;
     
    407406  rc = GpiQueryFontMetrics(hdc, sizeof(metrics), &metrics);
    408407  if(rc) {
    409         return max(metrics.lMaxBaselineExt,
    410                    max(metrics.lMaxAscender+metrics.lMaxDescender, 
     408    return max(metrics.lMaxBaselineExt,
     409                   max(metrics.lMaxAscender+metrics.lMaxDescender,
    411410                       metrics.lInternalLeading+metrics.lEmHeight));
    412411  }
    413412  else {
    414         dprintf(("GpiQueryFontMetrics returned FALSE!!"));
    415         return 0;
     413    dprintf(("GpiQueryFontMetrics returned FALSE!!"));
     414    return 0;
    416415  }
    417416}
     
    425424    if(!pHps)
    426425    {
    427         return;
     426    return;
    428427    }
    429428
Note: See TracChangeset for help on using the changeset viewer.