summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backlight.py2
-rw-r--r--src/blackbody.py4
-rw-r--r--src/colour.py40
-rw-r--r--src/monitor.py3
-rw-r--r--src/solar.py3
-rw-r--r--src/weather.py2
6 files changed, 30 insertions, 24 deletions
diff --git a/src/backlight.py b/src/backlight.py
index be5265b..cee3af6 100644
--- a/src/backlight.py
+++ b/src/backlight.py
@@ -15,6 +15,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# This module implements support for backlight control.
+
import os
import sys
from subprocess import Popen
diff --git a/src/blackbody.py b/src/blackbody.py
index bd29318..41c6fe5 100644
--- a/src/blackbody.py
+++ b/src/blackbody.py
@@ -14,6 +14,10 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This module implements support for colour temperature based
+# calculation of white points
+
import math
from colour import *
diff --git a/src/colour.py b/src/colour.py
index e0cc490..e2bbc01 100644
--- a/src/colour.py
+++ b/src/colour.py
@@ -15,6 +15,9 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# This module implements functions from convertions between colour spaces
+# and comparion of colours
+
def linear_to_standard(*colour):
'''
@@ -57,11 +60,8 @@ def ciexyz_to_ciexyy(X, Y, Z):
@param Z:float The Z parameter
@return :[float, float, float] The x, y and Y parameters
'''
- if X + Y + Z == 0:
- return [0, 0, 0]
- y = Y / (X + Y + Z)
- x = X / (X + Y + Z)
- return [x, y, Y]
+ s = X + Y + Z
+ return [X / s, Y / s, Y] if not s == 0 else [0, 0, 0]
def matrix_mul_vector(matrix, vector):
@@ -78,6 +78,9 @@ def matrix_mul_vector(matrix, vector):
ciexyz_to_linear_matrix = [[ 3.240450, -1.537140, -0.4985320],
[-0.969266, 1.876010, 0.0415561],
[0.0556434, -0.204026, 1.0572300]]
+'''
+Multiplication matrix to convert from CIE xyY to linear RGB
+'''
def ciexyz_to_linear(X, Y, Z):
'''
@@ -94,6 +97,9 @@ def ciexyz_to_linear(X, Y, Z):
linear_to_ciexyz_matrix = [[0.4124564, 0.3575761, 0.1804375],
[0.2126729, 0.7151522, 0.0721750],
[0.0193339, 0.1191920, 0.9503041]]
+'''
+Multiplication matrix to convert from linear RGB to CIE xyY
+'''
def linear_to_ciexyz(r, g, b):
'''
@@ -118,10 +124,7 @@ def srgb_to_ciexyy(r, g, b):
'''
if r == g == b == 0:
return (0.312857, 0.328993, 0)
- rc = standard_to_linear(r, g, b)
- rc = linear_to_ciexyz(*rc)
- rc = ciexyz_to_ciexyy(*rc)
- return rc
+ return ciexyz_to_ciexyy(*linear_to_ciexyz(*standard_to_linear(r, g, b)))
def ciexyy_to_srgb(x, y, Y):
@@ -133,10 +136,7 @@ def ciexyy_to_srgb(x, y, Y):
@param Y:float The Y parameter
@return :[float, float, float] The red, green and blue components
'''
- rc = ciexyy_to_ciexyz(x, y, Y)
- rc = ciexyz_to_linear(*rc)
- rc = linear_to_standard(*rc)
- return rc
+ return linear_to_standard(*ciexyz_to_linear(*ciexyy_to_ciexyz(x, y, Y)))
def ciexyz_to_cielab(x, y, z):
@@ -170,10 +170,7 @@ def cielab_to_xiexyz(l, a, b):
x = a / 500 + y
z = y - b / 200
f = lambda c : c ** 3 if c ** 3 > 0.00885642 else (c - 0.1379310) / (7.78 + 703 / 99900)
- (x, y, z) = [f(c) for c in (x, y, z)]
- x *= 0.95047
- z *= 1.08883
- return (x, y, z)
+ return [f(c) * m for c, m in zip((x, y, z), (0.95047, 1, 1.08883))]
def delta_e(a, b):
@@ -184,11 +181,6 @@ def delta_e(a, b):
@param b:(float, float, float) The second colour
@return :float The difference
'''
- a = standard_to_linear(*a)
- b = standard_to_linear(*b)
- a = linear_to_ciexyz(*a)
- b = linear_to_ciexyz(*b)
- a = ciexyz_to_cielab(*a)
- b = ciexyz_to_cielab(*b)
- return sum([(c1 - c2) ** 2 for c1, c2 in zip(a, b)]) ** 0.5
+ standard_to_cielab = lambda x : ciexyz_to_cielab(*linear_to_ciexyz(*standard_to_linear(*a)))
+ return sum([(c1 - c2) ** 2 for c1, c2 in zip(standard_to_cielab(a), standard_to_cielab(b))]) ** 0.5
diff --git a/src/monitor.py b/src/monitor.py
index 499864f..470335c 100644
--- a/src/monitor.py
+++ b/src/monitor.py
@@ -21,6 +21,7 @@ from subprocess import Popen, PIPE
from aux import *
from curve import *
+
# /usr/lib
LIBDIR = 'bin'
sys.path.append(LIBDIR)
@@ -31,12 +32,14 @@ LIBEXECDIR = 'bin'
randr_opened = None
vidmode_opened = None
+
try:
from blueshift_drm import *
except:
pass ## Not compiled with DRM support
+
def close_c_bindings():
'''
Close all C bindings and let them free resources and close connections
diff --git a/src/solar.py b/src/solar.py
index 1a89d52..041d427 100644
--- a/src/solar.py
+++ b/src/solar.py
@@ -14,6 +14,9 @@
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This module implements algorithms for calculating information about the Sun.
+
import math
import time
diff --git a/src/weather.py b/src/weather.py
index f0f0de3..fba6ffc 100644
--- a/src/weather.py
+++ b/src/weather.py
@@ -15,6 +15,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# The module implements support for retrieval of weather reports
+
from subprocess import Popen, PIPE