[v3 PATCH] gdi32: Support Begin/End Path for metafile DCs

Huw Davies huw at codeweavers.com
Tue Feb 16 05:53:35 CST 2016


On Tue, Feb 16, 2016 at 07:38:33PM +0800, Dmitry Timoshkov wrote:
> Huw Davies <huw at codeweavers.com> wrote:
> 
> > > diff --git a/dlls/gdi32/path.c b/dlls/gdi32/path.c
> > > index e09cd0b..166b6b2 100644
> > > --- a/dlls/gdi32/path.c
> > > +++ b/dlls/gdi32/path.c
> > ...
> > > @@ -1513,6 +1523,14 @@ static BOOL pathdrv_ExtTextOut( PHYSDEV dev, INT x, INT y, UINT flags, const REC
> > >      struct path_physdev *physdev = get_path_physdev( dev );
> > >      unsigned int idx, ggo_flags = GGO_NATIVE;
> > >      POINT offset = {0, 0};
> > > +    DWORD type;
> > > +
> > > +    type = GetObjectType(dev->hdc);
> > > +    if (type == OBJ_METADC || type == OBJ_ENHMETADC)
> > > +    {
> > > +        PHYSDEV next = GET_NEXT_PHYSDEV( dev, pExtTextOut );
> > > +        return next->funcs->pExtTextOut( next, x, y, flags, lprc, str, count, dx );
> > > +    }
> > >  
> > >      if (!count) return TRUE;
> > >      if (flags & ETO_GLYPH_INDEX) ggo_flags |= GGO_GLYPH_INDEX;
> > 
> > Why the special treatment for ExtTextOut()?  I can believe we
> > may need to do something with Begin/EndPath, but why this?
> 
> According to the tests a path on metafiles just creates a EMR_EXTTEXTOUT
> record instead of generating a bunch of actual path representation records.

But isn't that just because we only test ExtTextOut()?  For example, we
don't even test the contents of the emf created in test_emf_GetPath().
What I'm wondering is whether we need to do this to more than just
ExtTextOut.

> > Dmitry, is this the reason you don't want to send it?
> 
> No.

That doesn't exactly inspire confidence in this patch...

Huw.



More information about the wine-devel mailing list