[gtk/matthiasc/color-profile-rebased: 9/43] gtk-demo: Add a color profile demo
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/color-profile-rebased: 9/43] gtk-demo: Add a color profile demo
- Date: Sun, 8 May 2022 19:01:15 +0000 (UTC)
commit 9267fdd0209f40ccefd9578404343e8d6d3c8766
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Sep 23 01:22:05 2021 -0400
gtk-demo: Add a color profile demo
This is using test images from http://displaycal.net/.
...Rendering-Intent-Test-expected-result-no-cm.png | Bin 0 -> 24543 bytes
demos/gtk-demo/ICC-Rendering-Intent-Test.jpg | Bin 0 -> 297456 bytes
demos/gtk-demo/ICC-Rendering-Intent-Test.png | Bin 0 -> 123151 bytes
demos/gtk-demo/ICC-Rendering-Intent-Test.tif | Bin 0 -> 216166 bytes
demos/gtk-demo/colorprofiles.c | 86 +++++++++++++++++++
demos/gtk-demo/colorprofiles.ui | 94 +++++++++++++++++++++
demos/gtk-demo/demo.gresource.xml | 12 +++
demos/gtk-demo/meson.build | 1 +
demos/gtk-demo/sRGB_Gray-expected-result-no-cm.png | Bin 0 -> 5283 bytes
demos/gtk-demo/sRGB_Gray.jpg | Bin 0 -> 36854 bytes
demos/gtk-demo/sRGB_Gray.png | Bin 0 -> 4531 bytes
demos/gtk-demo/sRGB_Gray.tif | Bin 0 -> 9104 bytes
12 files changed, 193 insertions(+)
---
diff --git a/demos/gtk-demo/ICC-Rendering-Intent-Test-expected-result-no-cm.png
b/demos/gtk-demo/ICC-Rendering-Intent-Test-expected-result-no-cm.png
new file mode 100644
index 0000000000..efafad94bf
Binary files /dev/null and b/demos/gtk-demo/ICC-Rendering-Intent-Test-expected-result-no-cm.png differ
diff --git a/demos/gtk-demo/ICC-Rendering-Intent-Test.jpg b/demos/gtk-demo/ICC-Rendering-Intent-Test.jpg
new file mode 100644
index 0000000000..7f318cd73b
Binary files /dev/null and b/demos/gtk-demo/ICC-Rendering-Intent-Test.jpg differ
diff --git a/demos/gtk-demo/ICC-Rendering-Intent-Test.png b/demos/gtk-demo/ICC-Rendering-Intent-Test.png
new file mode 100644
index 0000000000..27819f0dd5
Binary files /dev/null and b/demos/gtk-demo/ICC-Rendering-Intent-Test.png differ
diff --git a/demos/gtk-demo/ICC-Rendering-Intent-Test.tif b/demos/gtk-demo/ICC-Rendering-Intent-Test.tif
new file mode 100644
index 0000000000..fe1030ca0f
Binary files /dev/null and b/demos/gtk-demo/ICC-Rendering-Intent-Test.tif differ
diff --git a/demos/gtk-demo/colorprofiles.c b/demos/gtk-demo/colorprofiles.c
new file mode 100644
index 0000000000..7df623fa87
--- /dev/null
+++ b/demos/gtk-demo/colorprofiles.c
@@ -0,0 +1,86 @@
+/* Color Profiles
+ *
+ * Demonstrates support for color profiles.
+ *
+ * The test images used here are taken from http://displaycal.net/icc-color-management-test/
+ * and are licensed under the Creative Commons BY-SA 4.0 International License
+ */
+
+#include <gtk/gtk.h>
+
+static GtkWidget *jpeg;
+static GtkWidget *png;
+static GtkWidget *tiff;
+static GtkWidget *noprofile;
+static GtkWidget *test1;
+static GtkWidget *test2;
+
+static void
+on_changed (GtkCheckButton *button,
+ gpointer user_data)
+{
+ GdkTexture *texture;
+ const char *extension = NULL;
+ char *path;
+
+ if (!gtk_check_button_get_active (GTK_CHECK_BUTTON (button)))
+ return;
+
+ if (gtk_check_button_get_active (GTK_CHECK_BUTTON (jpeg)))
+ extension = ".jpg";
+ else if (gtk_check_button_get_active (GTK_CHECK_BUTTON (png)))
+ extension = ".png";
+ else if (gtk_check_button_get_active (GTK_CHECK_BUTTON (tiff)))
+ extension = ".tif";
+ else if (gtk_check_button_get_active (GTK_CHECK_BUTTON (noprofile)))
+ extension = "-expected-result-no-cm.png";
+
+ path = g_strconcat ("/colorprofiles/sRGB_Gray", extension, NULL);
+ texture = gdk_texture_new_from_resource (path);
+ gtk_picture_set_paintable (GTK_PICTURE (test1), GDK_PAINTABLE (texture));
+ g_object_unref (texture);
+
+ path = g_strconcat ("/colorprofiles/ICC-Rendering-Intent-Test", extension, NULL);
+ texture = gdk_texture_new_from_resource (path);
+ gtk_picture_set_paintable (GTK_PICTURE (test2), GDK_PAINTABLE (texture));
+ g_object_unref (texture);
+}
+
+GtkWidget*
+do_colorprofiles (GtkWidget *do_widget)
+{
+ static GtkWidget *window;
+
+ if (!window)
+ {
+ GtkBuilder *builder;
+ GtkBuilderScope *scope;
+
+ scope = gtk_builder_cscope_new ();
+ gtk_builder_cscope_add_callback_symbol (GTK_BUILDER_CSCOPE (scope),
+ "on_changed", G_CALLBACK (on_changed));
+
+ builder = gtk_builder_new ();
+ gtk_builder_set_scope (builder, scope);
+ gtk_builder_add_from_resource (builder, "/colorprofiles/colorprofiles.ui", NULL);
+ window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
+ jpeg = GTK_WIDGET (gtk_builder_get_object (builder, "jpeg"));
+ png = GTK_WIDGET (gtk_builder_get_object (builder, "png"));
+ tiff = GTK_WIDGET (gtk_builder_get_object (builder, "tiff"));
+ noprofile = GTK_WIDGET (gtk_builder_get_object (builder, "noprofile"));
+ test1 = GTK_WIDGET (gtk_builder_get_object (builder, "test1"));
+ test2 = GTK_WIDGET (gtk_builder_get_object (builder, "test2"));
+ gtk_window_set_display (GTK_WINDOW (window),
+ gtk_widget_get_display (do_widget));
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
+ g_object_unref (builder);
+ g_object_unref (scope);
+ }
+
+ if (!gtk_widget_get_visible (window))
+ gtk_widget_show (window);
+ else
+ gtk_window_destroy (GTK_WINDOW (window));
+
+ return window;
+}
diff --git a/demos/gtk-demo/colorprofiles.ui b/demos/gtk-demo/colorprofiles.ui
new file mode 100644
index 0000000000..05416e51c8
--- /dev/null
+++ b/demos/gtk-demo/colorprofiles.ui
@@ -0,0 +1,94 @@
+<interface>
+ <object class="GtkWindow" id="window">
+ <property name="default-width">660</property>
+ <property name="default-height">660</property>
+ <property name="resizable">false</property>
+ <property name="title">Color Profiles</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="margin-start">10</property>
+ <property name="margin-end">10</property>
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">File format:</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="jpeg">
+ <property name="label">JPEG</property>
+ <property name="active">1</property>
+ <signal name="notify::active" handler="on_changed"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="png">
+ <property name="label">PNG</property>
+ <property name="group">jpeg</property>
+ <signal name="notify::active" handler="on_changed"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="tiff">
+ <property name="label">TIFF</property>
+ <property name="group">png</property>
+ <signal name="notify::active" handler="on_changed"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="noprofile">
+ <property name="label">No profile</property>
+ <property name="group">tiff</property>
+ <signal name="notify::active" handler="on_changed"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Test 1: Matrix-based profile</property>
+ <style>
+ <class name="title-3"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkPicture" id="test1">
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <property name="can-shrink">1</property>
+ <property name="keep-aspect-ratio">1</property>
+ <property name="file">resource:///colorprofiles/sRGB_Gray.jpg</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Test 2: Lookup table-based profile</property>
+ <style>
+ <class name="title-3"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkPicture" id="test2">
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <property name="can-shrink">1</property>
+ <property name="keep-aspect-ratio">1</property>
+ <property name="file">resource:///colorprofiles/ICC-Rendering-Intent-Test.jpg</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml
index f1caed2b8d..67fb4ade67 100644
--- a/demos/gtk-demo/demo.gresource.xml
+++ b/demos/gtk-demo/demo.gresource.xml
@@ -19,6 +19,17 @@
<file>demoimage.c</file>
<file>demoimage.h</file>
</gresource>
+ <gresource prefix="/colorprofiles">
+ <file>colorprofiles.ui</file>
+ <file>sRGB_Gray.jpg</file>
+ <file>sRGB_Gray.png</file>
+ <file>sRGB_Gray.tif</file>
+ <file>sRGB_Gray-expected-result-no-cm.png</file>
+ <file>ICC-Rendering-Intent-Test.png</file>
+ <file>ICC-Rendering-Intent-Test.jpg</file>
+ <file>ICC-Rendering-Intent-Test.tif</file>
+ <file>ICC-Rendering-Intent-Test-expected-result-no-cm.png</file>
+ </gresource>
<gresource prefix="/constraints_builder">
<file>constraints_builder.ui</file>
</gresource>
@@ -255,6 +266,7 @@
<file>assistant.c</file>
<file>builder.c</file>
<file>clipboard.c</file>
+ <file>colorprofiles.c</file>
<file>combobox.c</file>
<file>constraints.c</file>
<file>constraints_interactive.c</file>
diff --git a/demos/gtk-demo/meson.build b/demos/gtk-demo/meson.build
index 1347baf2aa..4eefbf4ec5 100644
--- a/demos/gtk-demo/meson.build
+++ b/demos/gtk-demo/meson.build
@@ -5,6 +5,7 @@ demos = files([
'assistant.c',
'builder.c',
'clipboard.c',
+ 'colorprofiles.c',
'combobox.c',
'constraints.c',
'constraints_interactive.c',
diff --git a/demos/gtk-demo/sRGB_Gray-expected-result-no-cm.png
b/demos/gtk-demo/sRGB_Gray-expected-result-no-cm.png
new file mode 100644
index 0000000000..cc9873f283
Binary files /dev/null and b/demos/gtk-demo/sRGB_Gray-expected-result-no-cm.png differ
diff --git a/demos/gtk-demo/sRGB_Gray.jpg b/demos/gtk-demo/sRGB_Gray.jpg
new file mode 100644
index 0000000000..fe58ddbf8c
Binary files /dev/null and b/demos/gtk-demo/sRGB_Gray.jpg differ
diff --git a/demos/gtk-demo/sRGB_Gray.png b/demos/gtk-demo/sRGB_Gray.png
new file mode 100644
index 0000000000..b13816b427
Binary files /dev/null and b/demos/gtk-demo/sRGB_Gray.png differ
diff --git a/demos/gtk-demo/sRGB_Gray.tif b/demos/gtk-demo/sRGB_Gray.tif
new file mode 100644
index 0000000000..6685ac6402
Binary files /dev/null and b/demos/gtk-demo/sRGB_Gray.tif differ
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]