RosettaCodeData/Task/Bitmap-Flood-fill/FBSL/bitmap-flood-fill.fbsl
2026-04-30 12:34:36 -04:00

37 lines
1.1 KiB
Text

#DEFINE WM_LBUTTONDOWN 513
#DEFINE WM_CLOSE 16
FBSLSETTEXT(ME, "Before Flood Fill") ' Set form caption
FBSLSETFORMCOLOR(ME, RGB(0, 255, 255)) ' Cyan: persistent background color
FBSL.GETDC(ME) ' Use volatile FBSL.GETDC below to avoid extra assignments
RESIZE(ME, 0, 0, 220, 220)
CENTER(ME)
SHOW(ME)
DIM Breadth AS INTEGER, Height AS INTEGER
FBSL.GETCLIENTRECT(ME, 0, 0, Breadth, Height)
DrawCircles() ' Initialize circles
BEGIN EVENTS
SELECT CASE CBMSG
CASE WM_LBUTTONDOWN: FillCircles() ' Flood fill circles
CASE WM_CLOSE: FBSL.RELEASEDC(ME, FBSL.GETDC) ' Clean up
END SELECT
END EVENTS
SUB FillCircles()
FILL(FBSL.GETDC, Breadth / 2, Height / 2, &HFFFF) ' Yellow: flood fill using intrinsics
FOR DIM x = 0 TO Breadth / 2 ' Red: flood fill iteratively
FOR DIM y = 0 TO Height / 2
IF NOT POINT(FBSL.GETDC, x, y) THEN PSET(FBSL.GETDC, x, y, &HFF)
NEXT
NEXT
FBSLSETTEXT(ME, "After Flood Fill") ' Reset form caption
END SUB
SUB DrawCircles() ' Concatenate function calls
CIRCLE(FBSL.GETDC, Breadth / 2, Height / 2, 85, &HFFFFFF, 0, 360, 1, TRUE) _ ' White
(FBSL.GETDC, Breadth / 3, Height / 3, 30, 0, 0, 360, 1, TRUE) ' Black
END SUB