[PATCH 1/2] Implement GdipGetLogFontA (try3)

Adam Petaccia adam at tpetaccia.com
Mon Nov 17 18:47:12 CST 2008


Was there something wrong with this patch series?

On Tue, 2008-11-11 at 11:24 -0500, Adam Petaccia wrote:
> Changelog:
> try3:
>     Only copy the bytes we'll use
>     Toss out bytesWritten
> try2:
>     Fix memcpy() use
>     Add documentation
>     Add testcase
> ---
>  dlls/gdiplus/font.c       |   27 +++++++++++++++++++++++++++
>  dlls/gdiplus/gdiplus.spec |    2 +-
>  include/gdiplusflat.h     |    1 +
>  3 files changed, 29 insertions(+), 1 deletions(-)
> 
> diff --git a/dlls/gdiplus/font.c b/dlls/gdiplus/font.c
> index 32713c7..7f815b6 100644
> --- a/dlls/gdiplus/font.c
> +++ b/dlls/gdiplus/font.c
> @@ -368,6 +368,33 @@ GpStatus WINGDIPAPI GdipGetFontUnit(GpFont *font, Unit *unit)
>  }
>  
>  /*******************************************************************************
> + * GdipGetLogFontA [GDIPLUS.@]
> + *
> + * Converts a font into a LOGFONTA
> + *
> + * PARAMS
> + *  font        [I] GpFont to create LOGFONTA object
> + *  graphics    [I] Current graphics context
> + *  lfa         [O] Resulting LOGFONTA object
> + * RETURNS
> + *  InvalidParameter: font, graphics, or lfa was NULL.
> + *  Ok: otherwise
> + */
> +GpStatus WINGDIPAPI GdipGetLogFontA(GpFont *font, GpGraphics *graphics,
> +    LOGFONTA *lfa)
> +{
> +    /* FIXME: use graphics */
> +    if(!(font && graphics && lfa))
> +        return InvalidParameter;
> +
> +    memcpy(lfa, &font->lfw, FIELD_OFFSET(LOGFONTA, lfFaceName));
> +    WideCharToMultiByte(CP_ACP, 0, font->lfw.lfFaceName, -1,
> +            lfa->lfFaceName, LF_FACESIZE, NULL, NULL);
> +
> +    return Ok;
> +}
> +
> +/*******************************************************************************
>   * GdipGetLogFontW [GDIPLUS.@]
>   */
>  GpStatus WINGDIPAPI GdipGetLogFontW(GpFont *font, GpGraphics *graphics,
> diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
> index c25d4b7..dce558c 100644
> --- a/dlls/gdiplus/gdiplus.spec
> +++ b/dlls/gdiplus/gdiplus.spec
> @@ -311,7 +311,7 @@
>  @ stdcall GdipGetLineSpacing(ptr long ptr)
>  @ stub GdipGetLineTransform
>  @ stdcall GdipGetLineWrapMode(ptr ptr)
> -@ stub GdipGetLogFontA
> +@ stdcall GdipGetLogFontA(ptr ptr ptr)
>  @ stdcall GdipGetLogFontW(ptr ptr ptr)
>  @ stdcall GdipGetMatrixElements(ptr ptr)
>  @ stub GdipGetMetafileDownLevelRasterizationLimit
> diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
> index ea4bec5..a2c6fc9 100644
> --- a/include/gdiplusflat.h
> +++ b/include/gdiplusflat.h
> @@ -81,6 +81,7 @@ GpStatus WINGDIPAPI GdipCreateFontFromDC(HDC,GpFont**);
>  GpStatus WINGDIPAPI GdipCreateFontFromLogfontA(HDC,GDIPCONST LOGFONTA*,GpFont**);
>  GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC,GDIPCONST LOGFONTW*,GpFont**);
>  GpStatus WINGDIPAPI GdipDeleteFont(GpFont*);
> +GpStatus WINGDIPAPI GdipGetLogFontA(GpFont*,GpGraphics*,LOGFONTA*);
>  GpStatus WINGDIPAPI GdipGetLogFontW(GpFont*,GpGraphics*,LOGFONTW*);
>  GpStatus WINGDIPAPI GdipGetFamily(GpFont*, GpFontFamily**);
>  GpStatus WINGDIPAPI GdipGetFontUnit(GpFont*, Unit*);




More information about the wine-devel mailing list