Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 86 of file floodfill.c.
Referenced by NtGdiExtFloodFill().
{ ULONG x, y; ULONG BrushColor; FLOODINFO flood = {0, NULL, NULL}; BrushColor = Brush->iSolidColor; x = Origin->x; y = Origin->y; if (FillType == FLOODFILLBORDER) { /* Check if the start pixel has the border color */ if (DibFunctionsForBitmapFormat[DstSurf->iBitmapFormat].DIB_GetPixel(DstSurf, x, y) == ConvColor) { return FALSE; } if (initFlood(&flood, DstRect) == FALSE) { return FALSE; } addItemFlood(&flood, x, y, DstSurf, DstRect, ConvColor, FALSE); while (flood.floodLen != 0) { x = flood.floodStart->x; y = flood.floodStart->y; removeItemFlood(&flood); DibFunctionsForBitmapFormat[DstSurf->iBitmapFormat].DIB_PutPixel(DstSurf, x, y, BrushColor); if (flood.floodStart - 4 < flood.floodData) { DPRINT1("Can't finish flooding!\n"); finalizeFlood(&flood); return FALSE; } addItemFlood(&flood, x, y + 1, DstSurf, DstRect, ConvColor, FALSE); addItemFlood(&flood, x, y - 1, DstSurf, DstRect, ConvColor, FALSE); addItemFlood(&flood, x + 1, y, DstSurf, DstRect, ConvColor, FALSE); addItemFlood(&flood, x - 1, y, DstSurf, DstRect, ConvColor, FALSE); } finalizeFlood(&flood); } else if (FillType == FLOODFILLSURFACE) { /* Check if the start pixel has the surface color */ if (DibFunctionsForBitmapFormat[DstSurf->iBitmapFormat].DIB_GetPixel(DstSurf, x, y) != ConvColor) { return FALSE; } if (initFlood(&flood, DstRect) == FALSE) { return FALSE; } addItemFlood(&flood, x, y, DstSurf, DstRect, ConvColor, TRUE); while (flood.floodLen != 0) { x = flood.floodStart->x; y = flood.floodStart->y; removeItemFlood(&flood); DibFunctionsForBitmapFormat[DstSurf->iBitmapFormat].DIB_PutPixel(DstSurf, x, y, BrushColor); if (flood.floodStart - 4 < flood.floodData) { DPRINT1("Can't finish flooding!\n"); finalizeFlood(&flood); return FALSE; } addItemFlood(&flood, x, y + 1, DstSurf, DstRect, ConvColor, TRUE); addItemFlood(&flood, x, y - 1, DstSurf, DstRect, ConvColor, TRUE); addItemFlood(&flood, x + 1, y, DstSurf, DstRect, ConvColor, TRUE); addItemFlood(&flood, x - 1, y, DstSurf, DstRect, ConvColor, TRUE); } finalizeFlood(&flood); } else { DPRINT1("Unsupported FloodFill type!\n"); return FALSE; } return TRUE; }