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; }
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; }