mirror of
https://github.com/reactos/reactos.git
synced 2025-05-08 19:27:00 +00:00
disable IntEngGradientFillTriangle because of an endless loop and add a FIXME
svn path=/trunk/; revision=26402
This commit is contained in:
parent
fb3ba4445f
commit
f90ddf0d29
1 changed files with 85 additions and 83 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue