blob: 5b918fb5d179a0e88ee210c2d9d43c886e33deac (
plain) (
tree)
|
|
/******************************************************************/
/* This file is part of the homework assignments for CSCI-427/527 */
/* at The College of William & Mary and authored by Pieter Peers. */
/* No part of this file, whether altered or in original form, can */
/* be distributed or used outside the context of CSCI-427/527 */
/* without consent of either the College of William & Mary or */
/* Pieter Peers. */
/******************************************************************/
#include "reflectanceParameter.h"
/******************************/
/* scalarReflectanceParameter */
/******************************/
/////////////////
// Constructor //
/////////////////
scalarReflectanceParameter::scalarReflectanceParameter(float value)
{
_value = value;
_texture = nullptr;
_channel = 0.0f;
}
scalarReflectanceParameter::scalarReflectanceParameter(const std::shared_ptr<const texture_base>& texture, unsigned int channel)
{
_value = 0.0f;
_texture = texture;
_channel = channel;
}
scalarReflectanceParameter::scalarReflectanceParameter(const scalarReflectanceParameter& src)
{
_value = src._value;
_texture = src._texture;
_channel = src._channel;
}
//////////////
// Operator //
//////////////
scalarReflectanceParameter& scalarReflectanceParameter::operator=(const scalarReflectanceParameter& src)
{
_assign(src);
return *this;
}
float scalarReflectanceParameter::operator()(const vec2d& textureCoord) const
{
if(_texture) return (*_texture)(textureCoord)[_channel];
else return _value;
}
/////////////////////
// Private Methods //
/////////////////////
void scalarReflectanceParameter::_assign(const scalarReflectanceParameter& src)
{
_value = src._value;
_texture = src._texture;
_channel = src._channel;
}
void scalarReflectanceParameter::_swap(scalarReflectanceParameter& swp)
{
std::swap(_value, swp._value);
std::swap(_texture, swp._texture);
std::swap(_channel, swp._channel);
}
/*****************************/
/* colorReflectanceParameter */
/*****************************/
/////////////////
// Constructor //
/////////////////
colorReflectanceParameter::colorReflectanceParameter(color value)
{
_value = value;
_texture = nullptr;
}
colorReflectanceParameter::colorReflectanceParameter(const std::shared_ptr<const texture_base>& texture)
{
_value = color(0.0f);
_texture = texture;
}
colorReflectanceParameter::colorReflectanceParameter(const colorReflectanceParameter& src)
{
_value = src._value;
_texture = src._texture;
}
//////////////
// Operator //
//////////////
colorReflectanceParameter& colorReflectanceParameter::operator=(const colorReflectanceParameter& src)
{
_assign(src);
return *this;
}
color colorReflectanceParameter::operator()(const vec2d& textureCoord) const
{
if(_texture) return (*_texture)(textureCoord);
else return _value;
}
/////////////////////
// Private Methods //
/////////////////////
void colorReflectanceParameter::_assign(const colorReflectanceParameter& src)
{
_value = src._value;
_texture = src._texture;
}
void colorReflectanceParameter::_swap(colorReflectanceParameter& swp)
{
std::swap(_value, swp._value);
std::swap(_texture, swp._texture);
}
|