16 #error no need to expose this header to Swig
20 #ifndef BORNAGAIN_SAMPLE_INTERFACE_LAYERINTERFACE_H
21 #define BORNAGAIN_SAMPLE_INTERFACE_LAYERINTERFACE_H
36 std::string
className() const final {
return "LayerInterface"; }
Defines interface class ISampleNode.
Abstract base class for sample components and properties related to scattering.
Interface between two layers, possibly with roughness.
static LayerInterface * createRoughInterface(const Layer *top_layer, const Layer *bottom_layer, const LayerRoughness &roughness)
Creates rough interface between two layers.
const Layer * topLayer() const
~LayerInterface() override
const LayerRoughness * roughness() const
Returns roughness of the interface.
LayerInterface * clone() const override
Returns a clone of this ISampleNode object.
static LayerInterface * createSmoothInterface(const Layer *top_layer, const Layer *bottom_layer)
Creates smooth interface between two layers.
std::string className() const final
Returns the class name, to be hard-coded in each leaf class that inherits from INode.
void setLayersTopBottom(const Layer *top_layer, const Layer *bottom_layer)
Sets links to the layers above and below the interface.
std::unique_ptr< LayerRoughness > m_roughness
roughness of the interface
const Layer * m_bottomLayer
pointer to the layer below interface
void setRoughness(const LayerRoughness &roughness)
Sets roughness of the interface.
std::vector< const INode * > nodeChildren() const override
Returns all children.
const Layer * m_topLayer
pointer to the layer above interface
const Layer * bottomLayer() const
A roughness of interface between two layers.
A layer in a MultiLayer sample.