#!python
# -*- coding: utf-8 -*_

import os

import click
import imageio

import rawhdr


def print_version(ctx, param, value):
    if not value or ctx.resilient_parsing:
        return
    click.echo('rawHDR version ' + rawhdr.__version__ + '\n'
               'Copyright (C) 2019 Felix Thaler')
    ctx.exit()


@click.command()
@click.argument('base-image', type=click.Path(exists=True))
@click.argument('other-images', nargs=-1, type=click.Path(exists=True))
@click.option('--output', '-o', type=click.Path())
@click.option('--mask-width', type=float, default=0.8)
@click.option('--blend-width', type=float)
@click.option('--target-gamma', type=float, default=2.2)
@click.option('--version', '-v', is_flag=True, callback=print_version,
              expose_value=False, is_eager=True)
def cli(base_image, other_images, output,
        mask_width, blend_width, target_gamma):
    if output is None:
        output = os.path.splitext(base_image)[0] + '-hdr.exr'

    base_image = rawhdr.load_image(base_image)
    other_images = [rawhdr.load_image(image) for image in other_images]

    merged = rawhdr.merge_multiple_exposures(base_image,
                                             other_images,
                                             mask_width=mask_width,
                                             blend_width=blend_width,
                                             target_gamma=target_gamma)

    imageio.imsave(output, merged.astype('float32'))


if __name__ == '__main__':
    cli()
