[RFC PATCH 1/6] Add colorcorrection protocol

Niels Ole Salscheider niels_ole at salscheider-online.de
Sun Mar 30 04:36:32 PDT 2014


The color correction protocol allows to attach an ICC profile to a
surface. It also tells the client about the blending color space and
the color spaces of all outputs.

Signed-off-by: Niels Ole Salscheider <niels_ole at salscheider-online.de>
---
 Makefile.am                  | 15 ++++++--
 protocol/colorcorrection.xml | 87 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 98 insertions(+), 4 deletions(-)
 create mode 100644 protocol/colorcorrection.xml

diff --git a/Makefile.am b/Makefile.am
index 5ff4f83..ec0a30b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -76,7 +76,9 @@ nodist_weston_SOURCES =					\
 	protocol/workspaces-protocol.c			\
 	protocol/workspaces-server-protocol.h		\
 	protocol/scaler-protocol.c			\
-	protocol/scaler-server-protocol.h
+	protocol/scaler-server-protocol.h		\
+	protocol/colorcorrection-protocol.c		\
+	protocol/colorcorrection-server-protocol.h
 
 BUILT_SOURCES += $(nodist_weston_SOURCES)
 
@@ -426,7 +428,9 @@ nodist_libtoytoolkit_la_SOURCES =			\
 	protocol/workspaces-protocol.c			\
 	protocol/workspaces-client-protocol.h		\
 	protocol/xdg-shell-protocol.c			\
-	protocol/xdg-shell-client-protocol.h
+	protocol/xdg-shell-client-protocol.h		\
+	protocol/colorcorrection-protocol.c		\
+	protocol/colorcorrection-client-protocol.h
 
 BUILT_SOURCES += $(nodist_libtoytoolkit_la_SOURCES)
 
@@ -606,7 +610,9 @@ BUILT_SOURCES +=					\
 	protocol/workspaces-client-protocol.h		\
 	protocol/workspaces-protocol.c			\
 	protocol/xdg-shell-protocol.c			\
-	protocol/xdg-shell-client-protocol.h
+	protocol/xdg-shell-client-protocol.h		\
+	protocol/colorcorrection-protocol.c		\
+	protocol/colorcorrection-client-protocol.h
 
 
 westondatadir = $(datadir)/weston
@@ -920,7 +926,8 @@ EXTRA_DIST +=					\
 	protocol/text-cursor-position.xml	\
 	protocol/wayland-test.xml		\
 	protocol/xdg-shell.xml			\
-	protocol/scaler.xml
+	protocol/scaler.xml			\
+	protocol/colorcorrection.xml
 
 man_MANS = weston.1 weston.ini.5
 
diff --git a/protocol/colorcorrection.xml b/protocol/colorcorrection.xml
new file mode 100644
index 0000000..7986e93
--- /dev/null
+++ b/protocol/colorcorrection.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="colorcorrection">
+
+  <copyright>
+    Copyright © 2014 Niels Ole Salscheider
+
+    Permission to use, copy, modify, distribute, and sell this
+    software and its documentation for any purpose is hereby granted
+    without fee, provided that the above copyright notice appear in
+    all copies and that both that copyright notice and this permission
+    notice appear in supporting documentation, and that the name of
+    the copyright holders not be used in advertising or publicity
+    pertaining to distribution of the software without specific,
+    written prior permission.  The copyright holders make no
+    representations about the suitability of this software for any
+    purpose.  It is provided "as is" without express or implied
+    warranty.
+
+    THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+    SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+    FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+    SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+    AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+    THIS SOFTWARE.
+  </copyright>
+
+  <interface name="wl_colorcorrection" version="1">
+    <description summary="allows to attach a color profile to a wl_surface">
+      This interface allows to attach a color profile to a wl_surface.
+      This is used by the compositor to display the colors correctly.
+      The client is informed by two events about the blending space used
+      by the compositor and the color spaces of the outputs.
+    </description>
+
+    <request name="set_profile">
+      <description summary="set the color profile of a wl_surface">
+	With this request, the color profile of a wl_surface can be set.
+	When mode is set to "profile", an ICC profile can be passed in the
+	"profile_data" argument. In all other cases, "profile_data" is
+	ignored.
+	"mode" should only be set to "uncorrected" for fullscreen applications
+	or applications that really require uncorrected output (e. g. color
+	profiling tools).
+      </description>
+      <arg name="surface" type="object" interface="wl_surface"/>
+      <arg name="mode" type="uint" />
+      <arg name="profile_data" type="array"/>
+    </request>
+
+    <event name="blending_space">
+      <description summary="tell the client what blending space is used">
+	This event will be sent when the blending space of the compositor
+	is changed. A client can use this information to output its surface
+	in the blending space of the compositor so that only one color
+	transform (from blending to output space) has to be performed by the
+	compositor. This can result in better performance.
+      </description>
+      <arg name="profile_data" type="array"/>
+    </event>
+
+    <event name="output_space">
+      <description summary="tell the client what color space an output has">
+	This event will be sent when the color space of an output is changed.
+	A client can use this information e. g. when it sets the mode to
+	"uncorrected".
+      </description>
+      <arg name="output_id" type="uint"/>
+      <arg name="profile_data" type="array"/>
+    </event>
+
+    <enum name="error">
+      <entry name="invalid_mode" value="0"
+	     summary="mode is set to an invalid value"/>
+      <entry name="invalid_profile" value="1"
+	     summary="the passed icc data is invalid"/>
+    </enum>
+
+    <enum name="mode">
+      <entry name="srgb" value="0"/>
+      <entry name="blending_space" value="1"/>
+      <entry name="uncorrected" value="2"/>
+      <entry name="profile" value="3"/>
+    </enum>
+  </interface>
+</protocol>
-- 
1.9.1



More information about the wayland-devel mailing list