From 543fb6d7b6714d81aa33d97d122e289d6a113558 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 26 Jul 2018 18:45:49 -0400 Subject: [PATCH] Add a color picker interface This will be used in the color chooser, in subsequent commits. --- gtk/Makefile.am | 2 ++ gtk/gtkcolorpicker.c | 53 ++++++++++++++++++++++++++++ gtk/gtkcolorpickerprivate.h | 69 +++++++++++++++++++++++++++++++++++++ 3 files changed, 124 insertions(+) create mode 100644 gtk/gtkcolorpicker.c create mode 100644 gtk/gtkcolorpickerprivate.h diff --git a/gtk/Makefile.am b/gtk/Makefile.am index eede2c976b..40ec9f4434 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -398,6 +398,7 @@ gtk_private_h_sources = \ gtkclipboardprivate.h \ gtkcolorswatchprivate.h \ gtkcoloreditorprivate.h \ + gtkcolorpickerprivate.h \ gtkcolorplaneprivate.h \ gtkcolorscaleprivate.h \ gtkcolorchooserprivate.h \ @@ -675,6 +676,7 @@ gtk_base_c_sources = \ gtkcolorchooserwidget.c \ gtkcolorchooserdialog.c \ gtkcoloreditor.c \ + gtkcolorpicker.c \ gtkcolorplane.c \ gtkcolorscale.c \ gtkcolorswatch.c \ diff --git a/gtk/gtkcolorpicker.c b/gtk/gtkcolorpicker.c new file mode 100644 index 0000000000..230761ec34 --- /dev/null +++ b/gtk/gtkcolorpicker.c @@ -0,0 +1,53 @@ +/* GTK - The GIMP Toolkit + * Copyright (C) 2018, Red Hat, Inc + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#include "config.h" + +#include "gtkcolorpickerprivate.h" +#include + + +G_DEFINE_INTERFACE_WITH_CODE (GtkColorPicker, gtk_color_picker, G_TYPE_OBJECT, + g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_INITABLE);) + +static void +gtk_color_picker_default_init (GtkColorPickerInterface *iface) +{ +} + +void +gtk_color_picker_pick (GtkColorPicker *picker, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GTK_COLOR_PICKER_GET_INTERFACE (picker)->pick (picker, callback, user_data); +} + +GdkRGBA * +gtk_color_picker_pick_finish (GtkColorPicker *picker, + GAsyncResult *res, + GError **error) +{ + return GTK_COLOR_PICKER_GET_INTERFACE (picker)->pick_finish (picker, res, error); +} + +GtkColorPicker * +gtk_color_picker_new (void) +{ + return NULL; +} + diff --git a/gtk/gtkcolorpickerprivate.h b/gtk/gtkcolorpickerprivate.h new file mode 100644 index 0000000000..305d868519 --- /dev/null +++ b/gtk/gtkcolorpickerprivate.h @@ -0,0 +1,69 @@ +/* + * GTK - The GIMP Toolkit + * Copyright (C) 2018 Red Hat, Inc. + * All rights reserved. + * + * This Library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library. If not, see . + */ + +#ifndef __GTK_COLOR_PICKER_H__ +#define __GTK_COLOR_PICKER_H__ + + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + + +#define GTK_TYPE_COLOR_PICKER (gtk_color_picker_get_type ()) +#define GTK_COLOR_PICKER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_COLOR_PICKER, GtkColorPicker)) +#define GTK_IS_COLOR_PICKER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_COLOR_PICKER)) +#define GTK_COLOR_PICKER_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GTK_TYPE_COLOR_PICKER, GtkColorPickerInterface)) + + +typedef struct _GtkColorPicker GtkColorPicker; +typedef struct _GtkColorPickerInterface GtkColorPickerInterface; + +struct _GtkColorPickerInterface { + GTypeInterface g_iface; + + void (* pick) (GtkColorPicker *picker, + GAsyncReadyCallback callback, + gpointer user_data); + + GdkRGBA * (* pick_finish) (GtkColorPicker *picker, + GAsyncResult *res, + GError **error); +}; + +GDK_AVAILABLE_IN_ALL +GType gtk_color_picker_get_type (void) G_GNUC_CONST; +GDK_AVAILABLE_IN_ALL +GtkColorPicker * gtk_color_picker_new (void); +GDK_AVAILABLE_IN_ALL +void gtk_color_picker_pick (GtkColorPicker *picker, + GAsyncReadyCallback callback, + gpointer user_data); +GDK_AVAILABLE_IN_ALL +GdkRGBA * gtk_color_picker_pick_finish (GtkColorPicker *picker, + GAsyncResult *res, + GError **error); + +G_END_DECLS + +#endif /* __GTK_COLOR_PICKER_H__ */