GLBasic forum

Main forum => GLBasic - en => Topic started by: loganite on 2008-Jan-20

Title: Filling a shape
Post by: loganite on 2008-Jan-20
Hello,
Does anyone know of a way fill a shape? I am working on a way of using true type fonts in GLBasic that doesn't require bitmapping and I can produce outlines using the drawline command but I need someway of filling them.
Title: Filling a shape
Post by: PeeJay on 2008-Jan-20
You may find this useful - http://en.wikipedia.org/wiki/Flood_fill
Title: Filling a shape
Post by: loganite on 2008-Jan-20
Thanks for that. Using it I came up with

FUNCTION FILL: x,y,replacementRGB

TYPE POINT
x
y
ENDTYPE

LOCAL points[] AS POINT
LOCAL point AS POINT
LOCAL Epoint AS POINT
LOCAL Wpoint AS POINT
LOCAL Npoint AS POINT
LOCAL Spoint AS POINT

point.x = x;point.y=y
DIMPUSH points[],point
targetRGB=GETPIXEL(x,y)
FOREACH p IN points[]
   SETPIXEL p.x,p.y,replacementRGB
   
   Epoint.x = p.x+1;Epoint.y = p.y
   Wpoint.x = p.x-1;Wpoint.y = p.y
   Npoint.x = p.x;Npoint.y = p.y-1
   Spoint.x = p.x;Spoint.y = p.y+1

   IF GETPIXEL(Epoint.x,Epoint.y)=targetRGB THEN DIMPUSH points[],Epoint
   IF GETPIXEL(Wpoint.x,Wpoint.y)=targetRGB THEN DIMPUSH points[],Wpoint
   IF GETPIXEL(Npoint.x,Npoint.y)=targetRGB THEN DIMPUSH points[],Npoint
   IF GETPIXEL(Spoint.x,Spoint.y)=targetRGB THEN DIMPUSH points[],Spoint


   DELETE p
NEXT


ENDFUNCTION


The problem is now its WAY toooo slooooow. I think I read in the GL documentation about the getpixel being very slow. They wern't kidding. I may just have to stick to outlines.
Title: Filling a shape
Post by: AndyH on 2008-Jan-20
In an ellipse drawing routine Gernot wrote, he used the DRAWLINE command to draw a line from the start X of the shape to the end X of the shape, working down the Y axis line by line.  This is much faster than SETPIXEL for example but does mean you need to be able to calculate the start and end each line segment, and it would get more complicated for irregular shapes such as flood filling an area or drawing a character from the TT font.
Title: Filling a shape
Post by: Kitty Hello on 2008-Jan-22
BTW: Polyvector is now working on GP2X, too.