summaryrefslogtreecommitdiff
path: root/src/cms-helper.h
diff options
context:
space:
mode:
authorRichard Hughes <hughsient@gmail.com>2013-05-09 20:31:09 +0100
committerKristian Høgsberg <krh@bitplanet.net>2013-05-10 12:51:08 -0400
commitb24e48e2ffbc499b940942bbc52b4fe636c14b58 (patch)
tree545ae2d9acdeab65a906e980e53d807e191f5fcd /src/cms-helper.h
parent7b9195f9d6e84308a4a779f171fc7432e415ae10 (diff)
downloadweston-b24e48e2ffbc499b940942bbc52b4fe636c14b58.tar.gz
Add initial color management framework code
ICC profiles can now be specified in weston.ini for each output, or a CMS implementation can optionally loaded from a pluggable module.
Diffstat (limited to 'src/cms-helper.h')
-rw-r--r--src/cms-helper.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/cms-helper.h b/src/cms-helper.h
new file mode 100644
index 00000000..a919a42a
--- /dev/null
+++ b/src/cms-helper.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright © 2013 Richard Hughes
+ *
+ * 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.
+ */
+
+#ifndef _WESTON_CMS_H_
+#define _WESTON_CMS_H_
+
+#include "compositor.h"
+
+/* General overview on how to be a CMS plugin:
+ *
+ * First, some nomenclature:
+ *
+ * CMF: Color management framework, i.e. "Use foo.icc for device $bar"
+ * CMM: Color management module that converts pixel colors, which is
+ * usually lcms2 on any modern OS.
+ * CMS: Color management system that encompasses both a CMF and CMM.
+ * ICC: International Color Consortium, the people that define the
+ * binary encoding of a .icc file.
+ * VCGT: Video Card Gamma Tag. An Apple extension to the ICC specification
+ * that allows the calibration state to be stored in the ICC profile
+ * Output: Physical port with a display attached, e.g. LVDS1
+ *
+ * As a CMF is probably something you don't want or need on an embeded install
+ * these functions will not be called if the icc_profile key is set for a
+ * specific [output] section in weston.ini
+ *
+ * Most desktop environments want the CMF to decide what profile to use in
+ * different situations, so that displays can be profiled and also so that
+ * the ICC profiles can be changed at runtime depending on the task or ambient
+ * environment.
+ *
+ * The CMF can be selected using the 'modules' key in the [core] section.
+ */
+
+struct weston_color_profile {
+ char *filename;
+ void *lcms_handle;
+};
+
+void
+weston_cms_set_color_profile(struct weston_output *o,
+ struct weston_color_profile *p);
+struct weston_color_profile *
+weston_cms_create_profile(const char *filename,
+ void *lcms_profile);
+struct weston_color_profile *
+weston_cms_load_profile(const char *filename);
+void
+weston_cms_destroy_profile(struct weston_color_profile *p);
+
+#endif