GimpColorDisplayStack *
gimp_display_shell_filter_new (GimpDisplayShell *shell,
                               GimpColorConfig  *config)
{
  g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
  g_return_val_if_fail (GIMP_IS_COLOR_CONFIG (config), NULL);

  if (config->display_module)
    {
      GType type = g_type_from_name (config->display_module);

      if (g_type_is_a (type, GIMP_TYPE_COLOR_DISPLAY))
        {
          GimpColorDisplay      *display;
          GimpColorDisplayStack *stack;

          display = g_object_new (type,
                                  "color-config",  config,
                                  "color-managed", shell,
                                  NULL);

          stack = gimp_color_display_stack_new ();

          gimp_color_display_stack_add (stack, display);
          g_object_unref (display);

          return stack;
        }
    }

  return NULL;
}
Example #2
0
GimpColorDisplayStack *
gimp_color_display_stack_clone (GimpColorDisplayStack *stack)
{
  GimpColorDisplayStack *clone;
  GList                 *list;

  g_return_val_if_fail (GIMP_IS_COLOR_DISPLAY_STACK (stack), NULL);

  clone = g_object_new (GIMP_TYPE_COLOR_DISPLAY_STACK, NULL);

  for (list = stack->filters; list; list = g_list_next (list))
    {
      GimpColorDisplay *display;

      display = gimp_color_display_clone (list->data);

      gimp_color_display_stack_add (clone, display);
      g_object_unref (display);
    }

  return clone;
}