Exemplo n.º 1
0
//0,200,200 is nice cyan
//draws an open rectangle
void
rect_open (iImage * dest, int x, int y, int end_x, int end_y, int r, int g,
	   int b)
{
  int i, j;
//top bar
  j = y;
  for (i = x; i < end_x + 1; i++)
    {
      setred (dest, i, j, r);
      setgreen (dest, i, j, g);
      setblue (dest, i, j, b);
      setalpha (dest, i, j, 255);
    }
//bottom bar
  j = end_y;
  for (i = x; i < end_x + 1; i++)
    {
      setred (dest, i, j, r);
      setgreen (dest, i, j, g);
      setblue (dest, i, j, b);
      setalpha (dest, i, j, 255);
    }

  i = x;
  for (j = y; j < end_y + 1; j++)
    {
      setred (dest, i, j, r);
      setgreen (dest, i, j, g);
      setblue (dest, i, j, b);
      setalpha (dest, i, j, 255);
    }

  i = end_x;
  for (j = y; j < end_y + 1; j++)
    {
      setred (dest, i, j, r);
      setgreen (dest, i, j, g);
      setblue (dest, i, j, b);
      setalpha (dest, i, j, 255);
    }


}
Exemplo n.º 2
0
//This Blit conserves the alpha, Blit_merge blends the alphaed color in with background.
void
blit (iImage * source, iImage * dest, int source_startx, int source_starty,
      int destx, int desty, int source_endx, int source_endy)
{
  int x;
  int y;
  int r, g, b;
  int i, j;
  int a;

  x = dest->GetWidth ();
  y = dest->GetHeight ();


  if (source_endx + destx - source_startx >= x)
    source_endx = x - destx + source_startx;


  if (source_endy + desty - source_starty >= y)
    source_endy = y - desty + source_starty;


  i = 0;
  j = 0;
  for (x = source_startx; x < source_endx; x++)
    {
      for (y = source_starty; y < source_endy; y++)
	{
	  r = getred (source, x, y);
	  g = getgreen (source, x, y);
	  b = getblue (source, x, y);
	  a = getalpha (source, x, y);


	  setred (dest, i + destx, j + desty, r);
	  setgreen (dest, i + destx, j + desty, g);
	  setblue (dest, i + destx, j + desty, b);
	  setalpha (dest, i + destx, j + desty, a);
	  j++;
	}
      j = 0;
      i++;
    }



}
Exemplo n.º 3
0
void
allocimages(void)
{
	Rectangle one = Rect(0, 0, 1, 1);

	selected = eallocimage(one, 1, RGBA32, setalpha(DPalebluegreen, 0x5f));
	litbrdr = eallocimage(one, 1, RGBA32, DGreen);
	img = eallocimage(Rect(0, 0, Sizex, Sizey), 0,
		defchan? defchan: screen->chan, DBlack);
	textcol = eallocimage(one, 1, RGBA32, DWhite);

	background = eloadfile(defbackgr);
	replclipr(background, 1, img->r);

	mask = eloadfile(Mask);
	gameover = eloadfile(Gameover);
	tileset = eloadfile(deftileset);
}
Exemplo n.º 4
0
void
clear_image (iImage * dest)
{
  int i, j;


  for (i = 0; i < dest->GetWidth (); i++)
    for (j = 0; j < dest->GetHeight (); j++)
      {
	setred (dest, i, j, 0);
	setgreen (dest, i, j, 0);
	setblue (dest, i, j, 0);
	setalpha (dest, i, j, 0);


      }

}
Exemplo n.º 5
0
//draws a rectangle_filled with colors r,g,b
void
rect (iImage * dest, int x, int y, int end_x, int end_y, int r, int g, int b)
{
  int i, j;
//float bright;
//int r3,g3,b3;

  for (i = x; i < end_x + 1; i++)
    for (j = y; j < end_y + 1; j++)
      {

	setred (dest, i, j, r);
	setgreen (dest, i, j, g);
	setblue (dest, i, j, b);
	setalpha (dest, i, j, 255);


      }

}
Exemplo n.º 6
0
ulong
tkrgba(int r, int g, int b, int a)
{
	ulong p;

	if(r < 0)
		r = 0;
	else if(r > 255)
		r = 255;
	if(g < 0)
		g = 0;
	else if(g > 255)
		g = 255;
	if(b < 0)
		b = 0;
	else if(b > 255)
		b = 255;
	p = (r<<24)|(g<<16)|(b<<8)|0xFF;
	if(a == 255)
		return p;
	return setalpha(p, a);
}
Exemplo n.º 7
0
void
blit_transparent (iImage * source, iImage * dest, int source_startx,
		  int source_starty, int destx, int desty, int source_endx,
		  int source_endy, int r0, int g0, int b0, int range)
{
  int x;
  int y;
  int r, g, b;
  int i, j;

  int r2, g2, b2;
  x = dest->GetWidth ();
  y = dest->GetHeight ();


  if (source_endx + destx - source_startx >= x)
    source_endx = x - destx + source_startx;


  if (source_endy + desty - source_starty >= y)
    source_endy = y - desty + source_starty;



  i = 0;
  j = 0;
  for (x = source_startx; x < source_endx; x++)
    {
      for (y = source_starty; y < source_endy; y++)
	{
	  r = getred (source, x, y);
	  g = getgreen (source, x, y);
	  b = getblue (source, x, y);

	  r2 = abs (r0 - r);
	  g2 = abs (g0 - g);
	  b2 = abs (b0 - b);


	  if (r2 < range && g2 < range && b2 < range)
	    {
	      r = r0;
	      setalpha (dest, i + destx, j + desty, 0);
	    }
	  else
	    {
	      setred (dest, i + destx, j + desty, r);
	      setgreen (dest, i + destx, j + desty, g);
	      setblue (dest, i + destx, j + desty, b);
	      setalpha (dest, i + destx, j + desty, 255);

	    }
	  j++;
	}
      j = 0;
      i++;
    }



}