# -*- python -*-

# This example inverts the colours and then makes the monitors
# red and dim. It is exited by running again with Blueshift's
# -r (--reset) option.


# Copyright © 2014  Mattias Andrée (maandree@member.fsf.org)
# 
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# 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 (zero-based) index of the monitors (CRTC:s) to apply
# settings to. An empty list means that all monitors are used,
# but all monitors will have the same settings.
monitors = []


# These settings are lists. This is to allow you to use different
# settings on different monitors. For example, `gamma_red = [1]`,
# this means that the red gamma is 1 on all monitors. But if we
# change this to `gamma_red = [1.0, 1.1]`, the first monitor will
# have the red gamma set to 1,0 and the second monitor will have
# the red gamma set to 1,1. If you have more monitors than used
# in the settings modulo division will be used. For instance, if
# you have four monitors, the third monitor will have the same
# settings as the first monitor, and the fourth monitor will have
# the same settings as the second monitor.

# Gamma correction for the red, green and blue components, respectively.
gamma_red, gamma_green, gamma_blue = [1], [1], [1]


# Do not fade in or out
fadein_time = None
fadein_steps = None
fadeout_time = None
fadeout_steps = None


uses_adhoc_opts = True
'''
:bool  `True` if the configuration script parses the ad-hoc settings
'''

# Get --reset from Blueshift ad-hoc settigns
doreset = parser.opts['--reset']


for m in range(max(1, len(monitors))):
    # Remove settings from last run.
    start_over()
    
    if not doreset:
        # Invert colours.
        cie_invert()
        # Make the screen red by removing other colours.
        rgb_brightness(1, 0, 0)
        # Dim the screen.
        cie_brightness(0.25)
    
    # Apply gamma correction to monitor.
    r = gamma_red  [m % len(gamma_red)]
    g = gamma_green[m % len(gamma_green)]
    b = gamma_blue [m % len(gamma_blue)]
    clip()
    gamma(r, g, b)
    
    # Flush settings to monitor.
    if len(monitors) == 0:
        (drm if ttymode else randr)()
    else:
        (drm if ttymode else randr)(monitors[m % len(monitors)])