Implemented playback of EMR_POLYBEZIER{TO}16, EMR_POLYLINE16 and
EMR_POLYPOLYLINE.
This commit is contained in:
parent
56f8e274c7
commit
c7acd78070
|
@ -543,7 +543,45 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
|||
HeapFree( GetProcessHeap(), 0, pts );
|
||||
break;
|
||||
}
|
||||
|
||||
case EMR_POLYLINETO16:
|
||||
{
|
||||
PEMRPOLYLINETO16 pPoly = (PEMRPOLYLINETO16) mr;
|
||||
/* Shouldn't use PolylineTo16 since pPoly->cpts is DWORD */
|
||||
POINT *pts = HeapAlloc( GetProcessHeap(), 0,
|
||||
pPoly->cpts * sizeof(POINT) );
|
||||
DWORD i;
|
||||
for(i = 0; i < pPoly->cpts; i++)
|
||||
CONV_POINT16TO32(pPoly->apts + i, pts + i);
|
||||
PolylineTo(hdc, pts, pPoly->cpts);
|
||||
HeapFree( GetProcessHeap(), 0, pts );
|
||||
break;
|
||||
}
|
||||
case EMR_POLYBEZIER16:
|
||||
{
|
||||
PEMRPOLYBEZIER16 pPoly = (PEMRPOLYBEZIER16) mr;
|
||||
/* Shouldn't use PolyBezier16 since pPoly->cpts is DWORD */
|
||||
POINT *pts = HeapAlloc( GetProcessHeap(), 0,
|
||||
pPoly->cpts * sizeof(POINT) );
|
||||
DWORD i;
|
||||
for(i = 0; i < pPoly->cpts; i++)
|
||||
CONV_POINT16TO32(pPoly->apts + i, pts + i);
|
||||
PolyBezier(hdc, pts, pPoly->cpts);
|
||||
HeapFree( GetProcessHeap(), 0, pts );
|
||||
break;
|
||||
}
|
||||
case EMR_POLYBEZIERTO16:
|
||||
{
|
||||
PEMRPOLYBEZIERTO16 pPoly = (PEMRPOLYBEZIERTO16) mr;
|
||||
/* Shouldn't use PolyBezierTo16 since pPoly->cpts is DWORD */
|
||||
POINT *pts = HeapAlloc( GetProcessHeap(), 0,
|
||||
pPoly->cpts * sizeof(POINT) );
|
||||
DWORD i;
|
||||
for(i = 0; i < pPoly->cpts; i++)
|
||||
CONV_POINT16TO32(pPoly->apts + i, pts + i);
|
||||
PolyBezierTo(hdc, pts, pPoly->cpts);
|
||||
HeapFree( GetProcessHeap(), 0, pts );
|
||||
break;
|
||||
}
|
||||
case EMR_POLYPOLYGON16:
|
||||
{
|
||||
PEMRPOLYPOLYGON16 pPolyPoly = (PEMRPOLYPOLYGON16) mr;
|
||||
|
@ -561,6 +599,23 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
|||
HeapFree( GetProcessHeap(), 0, pts );
|
||||
break;
|
||||
}
|
||||
case EMR_POLYPOLYLINE16:
|
||||
{
|
||||
PEMRPOLYPOLYLINE16 pPolyPoly = (PEMRPOLYPOLYLINE16) mr;
|
||||
/* NB POINTS array doesn't start at pPolyPoly->apts it's actually
|
||||
pPolyPoly->aPolyCounts + pPolyPoly->nPolys */
|
||||
|
||||
POINT *pts = HeapAlloc( GetProcessHeap(), 0,
|
||||
pPolyPoly->cpts * sizeof(POINT) );
|
||||
DWORD i;
|
||||
for(i = 0; i < pPolyPoly->cpts; i++)
|
||||
CONV_POINT16TO32((POINTS*) (pPolyPoly->aPolyCounts +
|
||||
pPolyPoly->nPolys) + i, pts + i);
|
||||
|
||||
PolyPolyline(hdc, pts, pPolyPoly->aPolyCounts, pPolyPoly->nPolys);
|
||||
HeapFree( GetProcessHeap(), 0, pts );
|
||||
break;
|
||||
}
|
||||
|
||||
case EMR_STRETCHDIBITS:
|
||||
{
|
||||
|
@ -1107,10 +1162,6 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
|||
case EMR_PLGBLT:
|
||||
case EMR_SETDIBITSTODEVICE:
|
||||
case EMR_EXTTEXTOUTA:
|
||||
case EMR_POLYBEZIER16:
|
||||
case EMR_POLYBEZIERTO16:
|
||||
case EMR_POLYLINETO16:
|
||||
case EMR_POLYPOLYLINE16:
|
||||
case EMR_POLYDRAW16:
|
||||
case EMR_CREATEMONOBRUSH:
|
||||
case EMR_POLYTEXTOUTA:
|
||||
|
|
Loading…
Reference in New Issue