Exemplo n.º 1
0
static void
extract_yellowk (const guchar  *src,
		 gint           bpp,
		 gint           numpix,
		 guchar       **dst)

{
  register const guchar *rgb_src = src;
  register guchar *yellow_dst = dst[0];
  register gint count = numpix, offset = bpp-3;
  GimpCMYK gcmyk;

  gimp_cmyk_set (&gcmyk, 0,0,0,0);

  while (count-- > 0)
    {
      GimpRGB grgb;
      guchar  r, g, b;

      r = *rgb_src++;
      g = *rgb_src++;
      b = *rgb_src++;

      gimp_rgb_set_uchar (&grgb, r,g,b);
      gimp_rgb_to_cmyk (&grgb, 1.0, &gcmyk);
      gimp_cmyk_get_uchar (&gcmyk, NULL, NULL, yellow_dst++, NULL);

      rgb_src += offset;
    }
}
Exemplo n.º 2
0
static VALUE
rb_gimp_rgb_to_cmyk (VALUE self,
                     VALUE rgb,
                     VALUE pullout)
{
  GimpCMYK cmyk;
  gimp_rgb_to_cmyk(rb2GimpRGBPtr(rgb),
                   (gdouble)NUM2DBL(pullout),
                   &cmyk);

  return GimpCMYK2rb(&cmyk);
}
Exemplo n.º 3
0
static void
colorsel_cmyk_set_color (GimpColorSelector *selector,
                         const GimpRGB     *rgb,
                         const GimpHSV     *hsv)
{
  ColorselCmyk *module = COLORSEL_CMYK (selector);
  gdouble       values[4];
  gint          i;

  if (module->rgb2cmyk)
    {
      gdouble rgb_values[3];
      gdouble cmyk_values[4];

      rgb_values[0] = rgb->r;
      rgb_values[1] = rgb->g;
      rgb_values[2] = rgb->b;

      cmsDoTransform (module->rgb2cmyk, rgb_values, cmyk_values, 1);

      module->cmyk.c = cmyk_values[0] / 100.0;
      module->cmyk.m = cmyk_values[1] / 100.0;
      module->cmyk.y = cmyk_values[2] / 100.0;
      module->cmyk.k = cmyk_values[3] / 100.0;
    }
  else
    {
      gimp_rgb_to_cmyk (rgb, 1.0, &module->cmyk);
    }

  values[0] = module->cmyk.c * 100.0;
  values[1] = module->cmyk.m * 100.0;
  values[2] = module->cmyk.y * 100.0;
  values[3] = module->cmyk.k * 100.0;

  for (i = 0; i < 4; i++)
    {
      g_signal_handlers_block_by_func (module->adj[i],
                                       colorsel_cmyk_adj_update,
                                       module);

      gtk_adjustment_set_value (module->adj[i], values[i]);

      g_signal_handlers_unblock_by_func (module->adj[i],
                                         colorsel_cmyk_adj_update,
                                         module);
    }
}