Source code for honeybee_radiance_command.pcond

"""pcond command."""

from .options.pcond import PcondOptions
from ._command import Command
import honeybee_radiance_command._exception as exceptions
import honeybee_radiance_command._typing as typing


[docs]class Pcond(Command): """Pcond command. Pcond conditions a Radiance picture for output to a display or hard copy device. If the dynamic range of the scene exceeds that of the display (as is usually the case), pcond will compress the dynamic range of the picture such that both dark and bright regions are visible. In addition, certain limitations in human vision may be mimicked in order to provide an appearance similar to the experience one might have in the actual scene. Args: options: Command options. It will be set to Radiance default values if unspecified. output: File path to the output file (Default: None). input: File path to the radiance generated hdr file (Default: None). Properties: * options * output * input """ __slots__ = ('_input',) def __init__(self, options=None, output=None, input=None): """Initialize Command.""" Command.__init__(self, output=output) self.options = options self._input = input @property def options(self): """pcond options.""" return self._options @options.setter def options(self, value): if not value: value = PcondOptions() if not isinstance(value, PcondOptions): raise ValueError('Expected Pcond options not {}'.format(value)) self._options = value @property def input(self): """Radiance HDR image file.""" return self._input @input.setter def input(self, value): if value[-4:].lower() not in ('.hdr', '.pic', '.unf'): raise ValueError('"{}" does not have the expected extension for a Radiance ' 'generated HDR.'.format(type(value))) else: self._input = typing.normpath(value)
[docs] def to_radiance(self, stdin_input=False): """Command in Radiance format. Args: stdin_input: A boolean that indicates if the input for this command comes from stdin. This is for instance the case when you pipe the input from another command (default: False). """ self.validate(stdin_input) command_parts = [self.command, self.options.to_radiance()] cmd = ' '.join(command_parts) if not stdin_input and self.input: cmd = '%s %s' % (cmd, self.input) if self.pipe_to: cmd = '%s | %s' % (cmd, self.pipe_to.to_radiance(stdin_input=True)) elif self.output: cmd = '%s > %s' % (cmd, self.output) return ' '.join(cmd.split())
[docs] def validate(self, stdin_input=False): Command.validate(self) if not stdin_input and not self.input: raise exceptions.MissingArgumentError(self.command, 'input')