Exemplo n.º 1
0
static long
conv_rgbafloat_linear_rgbu8_gamma (unsigned char *src_char,
                                   unsigned char *dst,
                                   long           samples)
{
  long   n    = samples;
  float *src  = (float*)src_char;

  while (n--)
    {
      if (src[3] < BABL_ALPHA_THRESHOLD)
        {
          dst[0] = 0;
          dst[1] = 0;
          dst[2] = 0;
        }
      else
        {
          dst[0] = conv_float_u8_two_table_map (src[0]);
          dst[1] = conv_float_u8_two_table_map (src[1]);
          dst[2] = conv_float_u8_two_table_map (src[2]);
        }
      src += 4;
      dst += 3;
    }
  return samples;
}
Exemplo n.º 2
0
static long
conv_rgbafloat_linear_rgbau8_gamma (unsigned char *src_char,
                                    unsigned char *dst,
                                    long           samples)
{
  long   n    = samples;
  float *src  = (float*)src_char;

  while (n--)
    {
      if (src[3] <=0)
        {
          dst[0] = 0;
          dst[1] = 0;
          dst[2] = 0;
          dst[3] = 0;
        }
      else
        {
          dst[0] = conv_float_u8_two_table_map (src[0]);
          dst[1] = conv_float_u8_two_table_map (src[1]);
          dst[2] = conv_float_u8_two_table_map (src[2]);
          dst[3] = src[3] * 0xff + 0.5;
        }
      src += 4;
      dst += 4;
    }
  return samples;
}
Exemplo n.º 3
0
static long
conv_rgbfloat_linear_cairo24_le (unsigned char *src_char,
                                 unsigned char *dst,
                                 long           samples)
{
  long   n   = samples;
  float *src = (float*)src_char;

  while (n--)
    {
      dst[0] = conv_float_u8_two_table_map (src[2]);
      dst[1] = conv_float_u8_two_table_map (src[1]);
      dst[2] = conv_float_u8_two_table_map (src[0]);

      src += 3;
      dst += 4;
    }
  return samples;
}
Exemplo n.º 4
0
static long
conv_yfloat_linear_yu8_gamma (unsigned char *src_char,
                              unsigned char *dst,
                              long           samples)
{
  long   n   = samples;
  float *src = (float*)src_char;

  while (n--)
    {
      *dst++ = conv_float_u8_two_table_map (*src++);
    }
  return samples;
}
Exemplo n.º 5
0
static long
conv_yafloat_linear_yau8_gamma (unsigned char *src_char,
                                unsigned char *dst,
                                long           samples)
{
  long   n   = samples;
  float *src = (float*)src_char;

  while (n--)
    {
      long int alpha;
      *dst++ = conv_float_u8_two_table_map (*src++);

      alpha  = rint (*src++ * 255.0);
      *dst++ = (alpha < 0) ? 0 : ((alpha > 255) ? 255 : alpha);
    }
  return samples;
}