Example #1
0
void S9xFixColourBrightness (void)
{
	IPPU.XB = mul_brightness[PPU.Brightness];

	for (int i = 0; i < 256; i++)
	{
		IPPU.Red[i]   = IPPU.XB[(PPU.CGDATA[i])       & 0x1f];
		IPPU.Green[i] = IPPU.XB[(PPU.CGDATA[i] >>  5) & 0x1f];
		IPPU.Blue[i]  = IPPU.XB[(PPU.CGDATA[i] >> 10) & 0x1f];
		IPPU.ScreenColors[i] = BUILD_PIXEL(IPPU.Red[i], IPPU.Green[i], IPPU.Blue[i]);
	}
}
PIXEL oily_png_color_interpolate_quick(PIXEL fg, PIXEL bg, int alpha) {
  BYTE a_com, new_r, new_g, new_b, new_a;

  if (alpha >= 255) return fg;
  if (alpha <= 0) return bg;

  a_com = 255 - alpha;
  new_r = INT8_MULTIPLY(alpha, R_BYTE(fg)) + INT8_MULTIPLY(a_com, R_BYTE(bg));
  new_g = INT8_MULTIPLY(alpha, G_BYTE(fg)) + INT8_MULTIPLY(a_com, G_BYTE(bg));
  new_b = INT8_MULTIPLY(alpha, B_BYTE(fg)) + INT8_MULTIPLY(a_com, B_BYTE(bg));
  new_a = INT8_MULTIPLY(alpha, A_BYTE(fg)) + INT8_MULTIPLY(a_com, A_BYTE(bg));

  return BUILD_PIXEL(new_r, new_g, new_b, new_a);
}
Example #3
0
PIXEL oily_png_compose_color(PIXEL fg, PIXEL bg) {
  
  // Check for simple cases first
  if ((A_BYTE(fg) == 0xff) || (A_BYTE(bg) == 0x00)) return fg;
  if (A_BYTE(fg) == 0x00) return bg;

  // Calculate the new values using fast 8-bit multiplication
  BYTE a_com = INT8_MULTIPLY(0xff - A_BYTE(fg), A_BYTE(bg));
  BYTE new_r = INT8_MULTIPLY(A_BYTE(fg), R_BYTE(fg)) + INT8_MULTIPLY(a_com, R_BYTE(bg));
  BYTE new_g = INT8_MULTIPLY(A_BYTE(fg), G_BYTE(fg)) + INT8_MULTIPLY(a_com, G_BYTE(bg));
  BYTE new_b = INT8_MULTIPLY(A_BYTE(fg), B_BYTE(fg)) + INT8_MULTIPLY(a_com, B_BYTE(bg));
  BYTE new_a = A_BYTE(fg) + a_com;
  
  return BUILD_PIXEL(new_r, new_g, new_b, new_a);
}
Example #4
0
VALUE Color_s_rgba(VALUE self, VALUE r, VALUE g, VALUE b, VALUE a) {
  return UINT2NUM(BUILD_PIXEL(FIX2INT(r),
                              FIX2INT(g),
                              FIX2INT(b),
                              FIX2INT(a)));
}
Example #5
0
VALUE Color_s_rgb(VALUE self, VALUE r, VALUE g, VALUE b) {
  return UINT2NUM(BUILD_PIXEL(FIX2INT(r),
                              FIX2INT(g),
                              FIX2INT(b),
                              0xFF));
}