Liste des Groupes | Revenir à cl c |
On 16/03/2024 04:11, fir wrote:i was slightly thinking a bit of this recursion more generally andi was writing simple editor (something like paint but more custom for>
my eventual needs) for big pixel (low resolution) drawing
>
it showed in a minute i need a click for changing given drawed area of
of one color into another color (becouse if no someone would need to
do it by hand pixel by pixel and the need to change color of given
element is very common)
>
there is very simple method of doing it - i men i click in given color
pixel then replace it by my color and call the same function on
adjacent 4 pixels (only need check if it is in screen at all and if
the color to change is that initial color
>
int RecolorizePixelAndAdjacentOnes(int x, int y, unsigned old_color,
unsigned new_color)
{
if(old_color == new_color) return 0;
>
if(XYIsInScreen( x, y))
if(GetPixelUnsafe(x,y)==old_color)
{
SetPixelSafe(x,y,new_color);
RecolorizePixelAndAdjacentOnes(x+1, y, old_color, new_color);
RecolorizePixelAndAdjacentOnes(x-1, y, old_color, new_color);
RecolorizePixelAndAdjacentOnes(x, y-1, old_color, new_color);
RecolorizePixelAndAdjacentOnes(x, y+1, old_color, new_color);
return 1;
}
>
return 0;
}
>
it work but im not quite sure how to estimate the safety of this -
On my machine, it's OK up to a 400x400 image (starting with all one
colour and filling from the centre with another colour).
>
At 500x500, I get stack overflow. The 400x400 the maximum recursion
depth is 80,000 calls.
>
Les messages affichés proviennent d'usenet.