All pastes #973965 Raw Edit

Something

public text v1 · immutable
·published 2008-04-06 13:27 UTC
rendered paste body
void InvertFill(const SeedStack & points, const S_RGBA & color)
{
    S_Point bodA;
	S_Point bodB;
	char invert=0;
	float deltax=0,deltay=0,pomocnyx=0,rust=0;
	unsigned int i=0;
	
	
	//nulovani masky
	if(fill_buffer != NULL)
    for(int i=0;i!=frame_w*frame_h;i++)
     fill_buffer[i]=0;
	//pruchod body
	for (i=0;i<points.size();i++)
	{
	  bodA=points[i];
	  bodB=points[(i+1)%points.size()];
      if(bodA.y>bodB.y)
	  {
		SWAP(bodA.x, bodB.x);
		SWAP(bodA.y, bodB.y);
	  }
	  
	  deltax=(float)bodA.x-(float)bodB.x;
	  // mozna jeste obratit aby nebyl zaporny
	  deltay=(float)bodA.y-(float)bodB.y;
	  rust=deltax/deltay;
	  pomocnyx=bodA.x-rust;
	  
	  for(int y=bodA.y;y<bodB.y;y++)
	  {
	    
		  pomocnyx+=rust;
	    int sazenix=ROUND(pomocnyx);
		
		if(y<=frame_h && y>=0 )
		{
	    while(sazenix<=frame_w)
	    {	
	
		  invert=fill_buffer[sazenix+(y)*frame_w];
		  if (invert==0)
	      fill_buffer[sazenix+(y)*frame_w]=1;
		  else
		  fill_buffer[sazenix+(y)*frame_w]=0;
		  
		  sazenix++;
	    }
		}
	  }
	}
for(int i=0;i!=frame_w*frame_h;i++)
 {
	 if(fill_buffer[i]==1)
	 {
	 PutPixel(i%frame_w,i/frame_w,*tile_buffer);
	 }
}


for (i=0;i<points.size();i++)
	{
	  bodA=points[i];
	  bodB=points[(i+1)%points.size()];
      if(bodA.y>bodB.y)
	  {
		SWAP(bodA.x, bodB.x);
		SWAP(bodA.y, bodB.y);
	  }
	  Bresenham(bodA.x, bodA.y, bodB.x, bodB.y, color); 
	}


}