summaryrefslogtreecommitdiffstats
path: root/examples/current-settings
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-03-04 18:58:39 +0100
committerMattias Andrée <maandree@operamail.com>2014-03-04 18:58:39 +0100
commitc5d72e955868a22305fcab2b680f24cf86b5ad21 (patch)
tree2f433223226fbff74860cc5e2ba246b3bc31d63e /examples/current-settings
parentadd example: stored-settings (diff)
downloadblueshift-c5d72e955868a22305fcab2b680f24cf86b5ad21.tar.gz
blueshift-c5d72e955868a22305fcab2b680f24cf86b5ad21.tar.bz2
blueshift-c5d72e955868a22305fcab2b680f24cf86b5ad21.tar.xz
small example transitioning from current settings1.7
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'examples/current-settings')
-rw-r--r--examples/current-settings62
1 files changed, 62 insertions, 0 deletions
diff --git a/examples/current-settings b/examples/current-settings
new file mode 100644
index 0000000..8c8afe8
--- /dev/null
+++ b/examples/current-settings
@@ -0,0 +1,62 @@
+# -*- python -*-
+
+# This example demonstrates how the currents settings
+# can be read and transitioned from.
+
+
+uses_adhoc_opts = True
+'''
+:bool `True` if the configuration script parses the ad-hoc settings
+'''
+
+
+# Get --temperature from Blueshift ad-hoc settigns
+temperature_to = int(parser.opts['--temperature'][0])
+
+
+# Get current colour curves
+randr_get(0)()
+r_, g_, b_ = r_curve[:], g_curve[:], b_curve[:]
+start_over()
+
+
+# Calculate divergence
+temperature(temperature_to, lambda t : divide_by_maximum(cmf_10deg(t)))
+f = lambda xy : abs(xy[0] - xy[1])
+divergence = max([max(map(f, zip(x, y))) for x, y in curves(r_, g_, b_)])
+
+
+# Get the end state colour curves
+r, g, b = r_curve[:], g_curve[:], b_curve[:]
+
+
+# Calculate transition time
+fadein_time = divergence * 5
+fadein_steps = fadein_time * 10
+
+# Function for setting the colour temperature
+def adjust(alpha):
+ f = lambda on : on[0] * (1 - alpha) + on[1] * alpha
+ ccc = curves((r_, r), (g_, g), (b_, b))
+ ccc = [(out, list(map(f, zip(old, new)))) for out, (old, new) in ccc]
+ for out, curve in ccc:
+ out[:] = curve
+ randr(0)
+
+# Perform transition
+if divergence and not panicgate:
+ signal.signal(signal.SIGTERM, signal_SIGTERM)
+ dtime = fadein_time / fadein_steps
+ df = 1 / fadein_steps
+ trans = 0
+ while running:
+ try:
+ trans += df
+ if trans > 1:
+ break
+ adjust(trans)
+ time.sleep(dtime)
+ except KeyboardInterrupt:
+ running = False
+adjust(1)
+