disable IntEngGradientFillTriangle because of an endless loop and add a FIXME

svn path=/trunk/; revision=26402
This commit is contained in:
Christoph von Wittich 2007-04-18 19:07:11 +00:00
parent fb3ba4445f
commit f90ddf0d29

View file

@ -318,19 +318,19 @@ IntEngGradientFillTriangle(
{ {
SURFOBJ *OutputObj; SURFOBJ *OutputObj;
PTRIVERTEX v1, v2, v3; PTRIVERTEX v1, v2, v3;
RECT_ENUM RectEnum; //RECT_ENUM RectEnum;
BOOL EnumMore; //BOOL EnumMore;
ULONG i; //ULONG i;
POINTL Translate; POINTL Translate;
INTENG_ENTER_LEAVE EnterLeave; INTENG_ENTER_LEAVE EnterLeave;
RECTL FillRect; RECTL FillRect;
ULONG Color; //ULONG Color;
BOOL sx[NLINES]; //BOOL sx[NLINES];
LONG x[NLINES], dx[NLINES], dy[NLINES], incx[NLINES], ex[NLINES], destx[NLINES]; //LONG x[NLINES], dx[NLINES], dy[NLINES], incx[NLINES], ex[NLINES], destx[NLINES];
LONG c[NLINES][3], dc[NLINES][3], ec[NLINES][3], ic[NLINES][3]; /* colors on lines */ //LONG c[NLINES][3], dc[NLINES][3], ec[NLINES][3], ic[NLINES][3]; /* colors on lines */
LONG g, gx, gxi, gc[3], gd[3], ge[3], gi[3]; /* colors in triangle */ //LONG g, gx, gxi, gc[3], gd[3], ge[3], gi[3]; /* colors in triangle */
LONG sy, y, bt; //LONG sy, y, bt;
v1 = (pVertex + gTriangle->Vertex1); v1 = (pVertex + gTriangle->Vertex1);
v2 = (pVertex + gTriangle->Vertex2); v2 = (pVertex + gTriangle->Vertex2);
@ -353,100 +353,102 @@ IntEngGradientFillTriangle(
} }
DbgPrint("Triangle: (%i,%i) (%i,%i) (%i,%i)\n", v1->x, v1->y, v2->x, v2->y, v3->x, v3->y); DbgPrint("Triangle: (%i,%i) (%i,%i) (%i,%i)\n", v1->x, v1->y, v2->x, v2->y, v3->x, v3->y);
/* FIXME: commented out because of an endless loop - fix triangles first */
DbgPrint("FIXME: IntEngGradientFillTriangle is broken");
if(!IntEngEnter(&EnterLeave, psoDest, &FillRect, FALSE, &Translate, &OutputObj)) if(!IntEngEnter(&EnterLeave, psoDest, &FillRect, FALSE, &Translate, &OutputObj))
{ {
return FALSE; return FALSE;
} }
if(VCMPCLRS(v1, v2, v3)) //if(VCMPCLRS(v1, v2, v3))
{ //{
CLIPOBJ_cEnumStart(pco, FALSE, CT_RECTANGLES, CD_RIGHTDOWN, 0); // CLIPOBJ_cEnumStart(pco, FALSE, CT_RECTANGLES, CD_RIGHTDOWN, 0);
do // do
{ // {
EnumMore = CLIPOBJ_bEnum(pco, (ULONG) sizeof(RectEnum), (PVOID) &RectEnum); // EnumMore = CLIPOBJ_bEnum(pco, (ULONG) sizeof(RectEnum), (PVOID) &RectEnum);
for (i = 0; i < RectEnum.c && RectEnum.arcl[i].top <= prclExtents->bottom; i++) // for (i = 0; i < RectEnum.c && RectEnum.arcl[i].top <= prclExtents->bottom; i++)
{ // {
if(IntGdiIntersectRect((PRECT)&FillRect, (PRECT)&RectEnum.arcl[i], (PRECT)prclExtents)) // if(IntGdiIntersectRect((PRECT)&FillRect, (PRECT)&RectEnum.arcl[i], (PRECT)prclExtents))
{ // {
BOOL InY; // BOOL InY;
DOINIT(v1, v3, 0); // DOINIT(v1, v3, 0);
DOINIT(v1, v2, 1); // DOINIT(v1, v2, 1);
DOINIT(v2, v3, 2); // DOINIT(v2, v3, 2);
y = v1->y; // y = v1->y;
sy = v1->y + pptlDitherOrg->y; // sy = v1->y + pptlDitherOrg->y;
bt = min(v3->y + pptlDitherOrg->y, FillRect.bottom); // bt = min(v3->y + pptlDitherOrg->y, FillRect.bottom);
while(sy < bt) // while(sy < bt)
{ // {
InY = !(sy < FillRect.top || sy >= FillRect.bottom); // InY = !(sy < FillRect.top || sy >= FillRect.bottom);
GOLINE(v1, v3, 0); // GOLINE(v1, v3, 0);
DOLINE(v1, v3, 0); // DOLINE(v1, v3, 0);
ENDLINE(v1, v3, 0); // ENDLINE(v1, v3, 0);
GOLINE(v1, v2, 1); // GOLINE(v1, v2, 1);
DOLINE(v1, v2, 1); // DOLINE(v1, v2, 1);
FILLLINE(0, 1); // FILLLINE(0, 1);
ENDLINE(v1, v2, 1); // ENDLINE(v1, v2, 1);
GOLINE(v2, v3, 2); // GOLINE(v2, v3, 2);
DOLINE(v2, v3, 2); // DOLINE(v2, v3, 2);
FILLLINE(0, 2); // FILLLINE(0, 2);
ENDLINE(23, v3, 2); // ENDLINE(23, v3, 2);
y++; // y++;
sy++; // sy++;
} // }
} // }
} // }
} while(EnumMore); // } while(EnumMore);
return IntEngLeave(&EnterLeave); // return IntEngLeave(&EnterLeave);
} //}
/* fill triangle with one solid color */ ///* fill triangle with one solid color */
Color = XLATEOBJ_iXlate(pxlo, RGB(v1->Red >> 8, v1->Green >> 8, v1->Blue >> 8)); //Color = XLATEOBJ_iXlate(pxlo, RGB(v1->Red >> 8, v1->Green >> 8, v1->Blue >> 8));
CLIPOBJ_cEnumStart(pco, FALSE, CT_RECTANGLES, CD_RIGHTDOWN, 0); //CLIPOBJ_cEnumStart(pco, FALSE, CT_RECTANGLES, CD_RIGHTDOWN, 0);
do //do
{ //{
EnumMore = CLIPOBJ_bEnum(pco, (ULONG) sizeof(RectEnum), (PVOID) &RectEnum); // EnumMore = CLIPOBJ_bEnum(pco, (ULONG) sizeof(RectEnum), (PVOID) &RectEnum);
for (i = 0; i < RectEnum.c && RectEnum.arcl[i].top <= prclExtents->bottom; i++) // for (i = 0; i < RectEnum.c && RectEnum.arcl[i].top <= prclExtents->bottom; i++)
{ // {
if(IntGdiIntersectRect((PRECT)&FillRect, (PRECT)&RectEnum.arcl[i], (PRECT)prclExtents)) // if(IntGdiIntersectRect((PRECT)&FillRect, (PRECT)&RectEnum.arcl[i], (PRECT)prclExtents))
{ // {
S_INITLINE(v1, v3, 0); // S_INITLINE(v1, v3, 0);
S_INITLINE(v1, v2, 1); // S_INITLINE(v1, v2, 1);
S_INITLINE(v2, v3, 2); // S_INITLINE(v2, v3, 2);
y = v1->y; // y = v1->y;
sy = v1->y + pptlDitherOrg->y; // sy = v1->y + pptlDitherOrg->y;
bt = min(v3->y + pptlDitherOrg->y, FillRect.bottom); // bt = min(v3->y + pptlDitherOrg->y, FillRect.bottom);
while(sy < bt) // while(sy < bt)
{ // {
S_GOLINE(v1, v3, 0); // S_GOLINE(v1, v3, 0);
S_DOLINE(v1, v3, 0); // S_DOLINE(v1, v3, 0);
S_ENDLINE(v1, v3, 0); // S_ENDLINE(v1, v3, 0);
S_GOLINE(v1, v2, 1); // S_GOLINE(v1, v2, 1);
S_DOLINE(v1, v2, 1); // S_DOLINE(v1, v2, 1);
S_FILLLINE(0, 1); // S_FILLLINE(0, 1);
S_ENDLINE(v1, v2, 1); // S_ENDLINE(v1, v2, 1);
S_GOLINE(v2, v3, 2); // S_GOLINE(v2, v3, 2);
S_DOLINE(v2, v3, 2); // S_DOLINE(v2, v3, 2);
S_FILLLINE(0, 2); // S_FILLLINE(0, 2);
S_ENDLINE(23, v3, 2); // S_ENDLINE(23, v3, 2);
y++; // y++;
sy++; // sy++;
} // }
} // }
} // }
} while(EnumMore); //} while(EnumMore);
return IntEngLeave(&EnterLeave); return IntEngLeave(&EnterLeave);
} }