PLaSK library

Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Protected Attributes | List of all members
plask::GeometryObjectLeaf< dim > Struct Template Reference
Geometry Objects

Template of base classes for all leaf nodes. More...

`#include <plask/geometry/leaf.hpp>`

Inheritance diagram for plask::GeometryObjectLeaf< dim >:
[legend]
Collaboration diagram for plask::GeometryObjectLeaf< dim >:
[legend]

## Classes
struct | DraftGradientMaterial
struct | GradientMaterial
struct | MaterialProvider
struct | SolidMaterial

## Public Types
typedef GeometryObjectD< dim >::DVec | DVec
typedef GeometryObjectD< dim >::Box | Box
Public Types inherited from plask::GeometryObjectD< dim >
typedef Primitive< dim >::Box | Box
typedef Primitive< dim >::DVec | DVec
Public Types inherited from plask::GeometryObject
enum | Type { TYPE_LEAF = 0 , TYPE_TRANSFORM = 1 , TYPE_SPACE_CHANGER = 2 , TYPE_CONTAINER = 3 , TYPE_GEOMETRY = 4 , TYPE_SEPARATOR = 5 }
| Type of geometry object. More...
typedef std::function< bool(const GeometryObject &)> | Predicate
| Predicate on GeometryObject.

## Public Member Functions
GeometryReader & | readMaterial (GeometryReader &src)
| GeometryObjectLeaf ()
| Construct leaf with uninitialized material (all material getting methods returns nullptr).
| GeometryObjectLeaf (const GeometryObjectLeaf< dim > &src)
| Copy-constructor.
| GeometryObjectLeaf (shared_ptr< Material > material)
| Construct leaf which uses solid material.
| GeometryObjectLeaf (shared_ptr< MaterialsDB::MixedCompositionFactory > materialTopBottom)
| Construct leaf which uses linearly changeble material.
shared_ptr< Material > | getRepresentativeMaterial () const
| Get representative material of this leaf (typically material which is returned in center of object).
shared_ptr< Material > | singleMaterial () const
| Get material only if it this leaf is solid (has assign exactly one material).
void | setMaterial (shared_ptr< Material > new_material)
| Set new, solid on all surface, material.
void | setMaterialFast (shared_ptr< Material > new_material)
| Set new, solid on all surface, material.
void | setMaterialTopBottomCompositionFast (shared_ptr< MaterialsDB::MixedCompositionFactory > materialTopBottom)
| Set new graded material.
void | setMaterialTopBottomComposition (shared_ptr< MaterialsDB::MixedCompositionFactory > materialTopBottom)
| Set new material material.
void | setMaterialDraftTopBottomCompositionFast (shared_ptr< MaterialsDB::MixedCompositionFactory > materialTopBottom)
| Set new draft graded material.
void | setMaterialProviderFast (MaterialProvider *provider)
| Set new custom material provider.
void | setMaterialProvider (MaterialProvider *provider)
| Set new custom material provider.
const MaterialProvider * | getMaterialProvider () const
| Return pointer to the material provider.
GeometryObject::Type | getType () const override
| Check if geometry is: leaf, transform or container type object.
shared_ptr< Material > | getMaterial (const DVec &p) const override
| Return material in a given point inside the geometry object.
void | getBoundingBoxesToVec (const GeometryObject::Predicate &predicate, std::vector< Box > &dest, const PathHints *path=0) const override
| Calculate and append to vector bounding boxes of all nodes which fulfill given `predicate`, optionally marked by path.
void | getObjectsToVec (const GeometryObject::Predicate &predicate, std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints *path=0) const override
| Append all objects from subtree with this in root, which fulfill predicate to vector `dest`.
void | getPositionsToVec (const GeometryObject::Predicate &predicate, std::vector< DVec > &dest, const PathHints *=0) const override
| Calculate and append to vector positions of all nodes which fulfill given `predicate`, optionally marked by path.
bool | hasInSubtree (const GeometryObject &el) const override
| Check if el is in subtree with `this` in root.
GeometryObject::Subtree | getPathsTo (const GeometryObject &el, const PathHints *path=0) const override
| Find paths to el.
GeometryObject::Subtree | getPathsAt (const DVec &point, bool=false) const override
| Find all paths to objects which lies at given `point`.
std::size_t | getChildrenCount () const override
| Get number of all children of this in geometry graph.
shared_ptr< GeometryObject > | getChildNo (std::size_t child_no) const override
| Get child with given index.
shared_ptr< const GeometryObject > | changedVersion (const GeometryObject::Changer &changer, Vec< 3, double > *translation=0) const override
| Get this or copy of this with some changes in subtree.
shared_ptr< GeometryObject > | deepCopy (std::map< const GeometryObject *, shared_ptr< GeometryObject > > &copied) const override
| Get deep copy of this.
Public Member Functions inherited from plask::GeometryObjectD< dim >
int | getDimensionsCount () const override
| Get number of dimensions.
virtual bool | contains (const DVec &point) const =0
| Check if this geometry object contains point.
virtual Box | getBoundingBox () const =0
| Calculate minimal rectangle which contains all points of geometry object.
virtual DVec | getBoundingBoxSize () const
virtual Box | getRealBoundingBox () const
| Calculate minimal rectangle which contains all points of real geometry object.
shared_ptr< Material > | getMaterialOrAir (const DVec &p) const
| Return material in a given point inside the geometry object.
void | getBoundingBoxesToVec (const GeometryObject::Predicate &predicate, std::vector< Box > &dest, const PathHints &path) const
| Calculate and append to vector bounding boxes of all nodes which fulfill given `predicate`, marked by path.
std::vector< Box > | getBoundingBoxes (const GeometryObject::Predicate &predicate, const PathHints *path=0) const
| Calculate the vector of bounding boxes of all nodes which fulfill given `predicate`, optionally marked by path.
std::vector< Box > | getBoundingBoxes (const GeometryObject::Predicate &predicate, const PathHints &path)
| Calculate the vector of bounding boxes of all nodes which fulfill given `predicate`, marked by path.
void | getLeafsBoundingBoxesToVec (std::vector< Box > &dest, const PathHints *path=0) const
| Calculate and append to vector bounding boxes of all leafs, optionally marked by path.
void | getLeafsBoundingBoxesToVec (std::vector< Box > &dest, const PathHints &path) const
| Calculate and append to vector bounding boxes of all leafs, marked by path.
std::vector< Box > | getLeafsBoundingBoxes (const PathHints *path=0) const
| Calculate bounding boxes of all leafs, optionally marked by path.
std::vector< Box > | getLeafsBoundingBoxes (const PathHints &path) const
| Calculate bounding boxes of all leafs, marked by path.
void | getObjectBoundingBoxesToVec (std::vector< Box > &dest, const GeometryObject &object, const PathHints *path=0) const
| Calculate and append to vector bounding boxes of all instances of given `object`, optionally marked by path.
void | getObjectBoundingBoxesToVec (std::vector< Box > &dest, const GeometryObject &object, const PathHints &path) const
| Calculate and append to vector bounding boxes of all instances of given `object`, marked by path.
std::vector< Box > | getObjectBoundingBoxes (const GeometryObject &object, const PathHints *path=0) const
| Calculate bounding boxes of all instances of given `object`, optionally marked by path.
std::vector< Box > | getObjectBoundingBoxes (const GeometryObject &object, const PathHints &path) const
| Calculate bounding boxes of all instances of given `objects`, marked by `path`.
void | getPositionsToVec (const Predicate &predicate, std::vector< DVec > &dest, const PathHints &path) const
| Calculate and append to vector positions of all nodes which fulfill given `predicate`, marked by path.
std::vector< DVec > | getPositions (const Predicate &predicate, const PathHints *path=0) const
| Calculate and append to vector positions of all nodes which fulfill given `predicate`, optionally marked by path.
std::vector< DVec > | getPositions (const Predicate &predicate, const PathHints &path) const
| Calculate and append to vector positions of all nodes which fulfill given `predicate`, marked by path.
void | getLeafsPositionsToVec (std::vector< DVec > &dest, const PathHints *path=0) const
| Calculate and append to vector positions of all leafs, optionally marked by path.
void | getLeafsPositionsToVec (std::vector< DVec > &dest, const PathHints &path) const
| Calculate and append to vector positions of all leafs, marked by path.
std::vector< DVec > | getLeafsPositions (const PathHints *path=0) const
| Calculate and return a vector of positions of all leafs, optionally marked by path.
std::vector< DVec > | getLeafsPositions (const PathHints &path) const
| Calculate and return a vector of positions of all leafs, marked by path.
void | getObjectPositionsToVec (std::vector< DVec > &dest, const GeometryObject &object, const PathHints *path=0) const
| Calculate and append to vector positions of all instances of given `object`, optionally marked by path.
void | getObjectPositionsToVec (std::vector< DVec > &dest, const GeometryObject &object, const PathHints &path) const
| Calculate and append to vector positions of all instances of given `object`, marked by path.
std::vector< DVec > | getObjectPositions (const GeometryObject &object, const PathHints *path=0) const
| Calculate and return a vector of positions of all instances of given `object`, optionally marked by path.
std::vector< DVec > | getObjectPositions (const GeometryObject &object, const PathHints &path) const
| Calculate and return a vector of positions of all instances of given `object`, marked by path.
shared_ptr< const GeometryObject > | getMatchingAt (const DVec &point, const Predicate &predicate, const PathHints *path=0) const
| Get object closest to the root, which contains specific point and fulfills the predicate.
shared_ptr< const GeometryObject > | getMatchingAt (const DVec &point, const Predicate &predicate, const PathHints &path) const
| Get object closest to the root, which contains specific point and fulfills the predicate.
bool | objectIncludes (const GeometryObject &object, const PathHints *path, const DVec &point) const
| Check if specified geometry object contains a point point.
bool | objectIncludes (const GeometryObject &object, const PathHints &path, const DVec &point) const
| Check if specified geometry object contains a point point.
bool | objectIncludes (const GeometryObject &object, const DVec &point) const
| Check if specified geometry object contains a point point.
std::set< std::string > | getRolesAt (const DVec &point, const plask::PathHints *path=0) const
| Get a sum of roles sets of all objects which lies on path from this to leaf at given `point`.
std::set< std::string > | getRolesAt (const DVec &point, const plask::PathHints &path) const
| Get a sum of roles sets of all objects which lies on path from this to leaf at given `point`.
shared_ptr< const GeometryObject > | hasRoleAt (const std::string &role_name, const DVec &point, const plask::PathHints *path=0) const
| Check if any object at given `point`, not hidden by another object, plays role with given name `role_name` (if so, returns non-nullptr).
shared_ptr< const GeometryObject > | hasRoleAt (const std::string &role_name, const DVec &point, const plask::PathHints &path) const
| Check if any object at given `point`, not hidden by another object, plays role with given name `role_name` (if so, returns non-nullptr).
virtual void | addLineSegmentsToSet (std::set< LineSegment > &PLASK_UNUSED(segments), unsigned PLASK_UNUSED(max_steps), double PLASK_UNUSED(min_step_size)) const =0
| Add characteristic points to the set and edges connecting them.
std::set< LineSegment > | getLineSegments (unsigned max_steps=PLASK_GEOMETRY_MAX_STEPS, double min_step_size=PLASK_GEOMETRY_MIN_STEP_SIZE) const
| Add characteristic points to the set and edges connecting them.
Public Member Functions inherited from plask::GeometryObject
void | setMaxSteps (unsigned value)
| Set max_steps.
void | setMinStepSize (double value)
| Set min_step_size.
template<typename ClassT , typename methodT >
boost::signals2::connection | changedConnectMethod (ClassT *obj, methodT method, boost::signals2::connect_position at=boost::signals2::at_back)
| Connect a method to changed signal.
template<typename ClassT , typename methodT >
void | changedDisconnectMethod (ClassT *obj, methodT method)
| Disconnect a method from changed signal.
template<typename EventT = Event, typename... Args>
void | fireChanged (Args &&... event_constructor_params_without_source)
| Call changed with this as event source.
| GeometryObject (const GeometryObject &to_copy)
| Initialize this to be the same as `to_copy` but doesn't have any changes observer.
GeometryObject & | operator= (const GeometryObject &to_copy)
| Set this to be the same as `to_copy` but doesn't change changes observer.
| GeometryObject ()
| GeometryObject (unsigned max_steps, double min_step_size)
virtual | ~GeometryObject ()
| Virtual destructor.
virtual std::string | getTypeName () const =0
| Get name of object type (like: "block2d", "shelf", "stack3d", etc.).
virtual void | writeXML (XMLWriter::Element &parent_xml_object, WriteXMLCallback &write_cb, AxisNames parent_axes) const
| Write geometry tree branch rooted by this to XML.
void | writeXML (XMLWriter::Element &parent_xml_object, WriteXMLCallback &write_cb) const
| Write geometry tree branch rooted by this to XML.
void | writeXML (XMLWriter::Element &parent_xml_object) const
| Write geometry tree branch rooted by this to XML.
template<int DIMS>
shared_ptr< GeometryObjectD< DIMS > > | asD ()
| Cast this to GeometryObjectD<DIMS>.
template<int DIMS>
shared_ptr< const GeometryObjectD< DIMS > > | asD () const
| Cast this to GeometryObjectD<DIMS> (const version).
shared_ptr< Geometry > | asGeometry ()
| Cast this to Geometry.
shared_ptr< const Geometry > | asGeometry () const
| Cast this to Geometry.
bool | isLeaf () const
bool | isTransform () const
bool | isSpaceChanger () const
bool | isContainer () const
bool | isGeometry () const
virtual void | addPointsAlongToSet (std::set< double > &points, Primitive< 3 >::Direction PLASK_UNUSED(direction), unsigned PLASK_UNUSED(max_steps), double PLASK_UNUSED(min_step_size)) const =0
| Add characteristic points information along specified axis to set.
std::set< double > | getPointsAlong (Primitive< 3 >::Direction direction, unsigned max_steps=PLASK_GEOMETRY_MAX_STEPS, double min_step_size=PLASK_GEOMETRY_MIN_STEP_SIZE) const
| Get characteristic points information along specified axis.
bool | hasRole (std::string role_name) const
| Check if this object belongs to class (has tag) with name `role_name`.
void | addRole (std::string role_name)
| Add this to given class.
void | removeRole (std::string role_name)
| Remove this from given class, do nothing if this is not in given class.
void | clearRoles ()
| Clear set of roles of this.
virtual void | validate () const
| Check if object is ready for calculation.
bool | hasInSubtree (const GeometryObject &el, const PathHints *pathHints) const
bool | hasInSubtree (shared_ptr< const GeometryObject > el, const PathHints *pathHints) const
void | getObjectsToVec (const Predicate &predicate, std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints &path) const
| Append all objects from subtree with this in root, which fulfill predicate to vector `dest`.
std::vector< shared_ptr< const GeometryObject > > | getObjects (const Predicate &predicate, const PathHints *path=0) const
| Get vector of all objects from subtree with this in root, which fulfill predicate.
std::vector< shared_ptr< const GeometryObject > > | getObjects (const Predicate &predicate, const PathHints &path) const
| Get vector of all objects from subtree with this in root, which fulfill predicate.
void | getLeafsToVec (std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints *path=0) const
| Append all leafs in subtree with this in root to vector `dest`.
void | getLeafsToVec (std::vector< shared_ptr< const GeometryObject > > &dest, const PathHints &path) const
| Append all leafs in subtree with this in root to vector `dest`.
std::vector< shared_ptr< const GeometryObject > > | getLeafs (const PathHints *path=0) const
| Get all leafs in subtree with this object as root.
std::vector< shared_ptr< const GeometryObject > > | getLeafs (const PathHints &path) const
| Get all leafs in subtree with this object as root.
void | getObjectsWithRoleToVec (const std::string &role, std::vector< shared_ptr< const GeometryObject > > &dest) const
| Append all objects with a specified role in subtree with this in root to vector `dest`.
std::vector< shared_ptr< const GeometryObject > > | getObjectsWithRole (const std::string &role) const
| Get all objects with a specified role in subtree with this object as root.
virtual std::size_t | getRealChildrenCount () const
| Get number of real (physically stored) children in geometry graph.
virtual shared_ptr< GeometryObject > | getRealChildNo (std::size_t child_no) const
| Get real (physically stored) child with given index.
virtual void | removeAtUnsafe (std::size_t index)
| Remove child at given `index`.
void | removeAt (std::size_t index)
| Remove child at given `index`.
void | removeRangeUnsafe (std::size_t index_begin, std::size_t index_end)
bool | removeRange (std::size_t index_begin, std::size_t index_end)
| Remove all children in given range [index_begin, index_end).
virtual void | forEachRealObjectInSubtree (std::function< bool(const GeometryObject &)> callback) const
| Call a `callback` for each object in subtree with `this` in root.
FunctorIndexedIterator< ChildGetter > | begin () const
FunctorIndexedIterator< ChildGetter > | end () const
virtual shared_ptr< GeometryObject > | shallowCopy () const =0
| Get shallow copy of this.
shared_ptr< GeometryObject > | deepCopy ()
| Get deep copy of this.
bool | canHasAsChild (const GeometryObject &potential_child) const
bool | canHasAsParent (const GeometryObject &potential_parent) const
void | ensureCanHasAsParent (const GeometryObject &potential_parent) const
| Throw CyclicReferenceException if `potential_parent` is in subtree with this in root.
void | ensureCanHaveAsChild (const GeometryObject &potential_child) const
| Throw CyclicReferenceException if `potential_child` has this in subtree.

## Protected Attributes
std::unique_ptr< MaterialProvider > | materialProvider

## Additional Inherited Members
Static Public Member Functions inherited from plask::GeometryObject
static bool | PredicateIsLeaf (const GeometryObject &el)
| Predicate which check if given object is leaf.
Public Attributes inherited from plask::GeometryObject
unsigned | max_steps
| Maximum number of points to split a single leaf.
double | min_step_size
| Minimum distance between divisions for a single leaf.
std::set< std::string > | roles
| Roles/tags.
boost::signals2::signal< void(Event &)> | changed
| Changed signal, fired when object was changed.
Static Public Attributes inherited from plask::GeometryObjectD< dim >
static const int | DIM = dim
Protected Member Functions inherited from plask::GeometryObject
virtual void | writeXMLAttr (XMLWriter::Element &dest_xml_object, const AxisNames &axes) const
| Append XML attributes of this to `dest_xml_object`.
virtual void | writeXMLChildren (XMLWriter::Element &dest_xml_object, WriteXMLCallback &write_cb, const AxisNames &axes) const
| Append all children of this to XML `dest_xml_object`.
void | ensureIsValidChildNr (std::size_t child_no, const char *method_name="getChildNo", const char *arg_name="child_no") const
| Check if given `index` is valid child index and throw exception of it is not.
void | ensureIsValidInsertPosition (std::size_t child_no, const char *method_name="insert", const char *arg_name="pos") const
| Check if given `index` is valid insert index and throw exception of it is not.
void | fireChildrenChanged ()
| Inform observers that children list was changed (also that this is resized)
void | fireChildrenRemoved (std::size_t beginIndex, std::size_t endIndex)
void | fireChildrenInserted (std::size_t beginIndex, std::size_t endIndex)

## Detailed Description

template<int dim>
struct plask::GeometryObjectLeaf< dim >

Template of base classes for all leaf nodes.

Template Parameters

  dim | number of dimensions

Definition at line 35 of file leaf.hpp.

## Member Typedef Documentation

## ◆ Box

template<int dim>

typedef GeometryObjectD<dim>::Box plask::GeometryObjectLeaf< dim >::Box

Definition at line 37 of file leaf.hpp.

## ◆ DVec

template<int dim>

typedef GeometryObjectD<dim>::DVec plask::GeometryObjectLeaf< dim >::DVec

Definition at line 36 of file leaf.hpp.

## Constructor & Destructor Documentation

## ◆ GeometryObjectLeaf() [1/4]

template<int dim>

plask::GeometryObjectLeaf< dim >::GeometryObjectLeaf | ( |  | ) |
| inline

Construct leaf with uninitialized material (all material getting methods returns nullptr).

Definition at line 131 of file leaf.hpp.

## ◆ GeometryObjectLeaf() [2/4]

template<int dim>

plask::GeometryObjectLeaf< dim >::GeometryObjectLeaf | ( | const GeometryObjectLeaf< dim > & | src | ) |
| inline

Copy-constructor.

Definition at line 131 of file leaf.hpp.

## ◆ GeometryObjectLeaf() [3/4]

template<int dim>

plask::GeometryObjectLeaf< dim >::GeometryObjectLeaf | ( | shared_ptr< Material > | material | ) |
| inline

Construct leaf which uses solid material.

Parameters

  material | to set (solid on all surface)

Definition at line 131 of file leaf.hpp.

## ◆ GeometryObjectLeaf() [4/4]

template<int dim>

plask::GeometryObjectLeaf< dim >::GeometryObjectLeaf | ( | shared_ptr< MaterialsDB::MixedCompositionFactory > | materialTopBottom | ) |
| inline

Construct leaf which uses linearly changeble material.

Parameters

  materialTopBottom | materials to set (lineary changeble), first is the material on top of this, the second is on bottom of this

Definition at line 131 of file leaf.hpp.

## Member Function Documentation

## ◆ changedVersion()

template<int dim>

shared_ptr< const GeometryObject > plask::GeometryObjectLeaf< dim >::changedVersion | ( | const GeometryObject::Changer & | changer,
|  | Vec< 3, double > * | translation = `0`
| ) |  | const
| override virtual

Get this or copy of this with some changes in subtree.

Parameters

  [in] | changer | changer which will be applied to subtree with this in root
  [out] | translation | optional, if non-null, recommended translation of this after change will be stored

Returns
  pointer to this (if nothing was changed) or copy of this with some changes in subtree

Implements plask::GeometryObject.

Definition at line 116 of file leaf.cpp.

## ◆ deepCopy()

template<int dim>

shared_ptr< GeometryObject > plask::GeometryObjectLeaf< dim >::deepCopy | ( | std::map< const GeometryObject *, shared_ptr< GeometryObject > > & | copied | ) | const
| override virtual

Get deep copy of this.

In the deep copy all children are copied.

Parameters

  copied | map containing copied objects to avoid double copying

Returns
  deep copy of this

Implements plask::GeometryObject.

Definition at line 124 of file leaf.cpp.

## ◆ getBoundingBoxesToVec()

template<int dim>

void plask::GeometryObjectLeaf< dim >::getBoundingBoxesToVec | ( | const GeometryObject::Predicate & | predicate,
|  | std::vector< Box > & | dest,
|  | const PathHints * | path = `0`
| ) |  | const
| override virtual

Calculate and append to vector bounding boxes of all nodes which fulfill given `predicate`, optionally marked by path.

Parameters

  predicate |
  dest | place to add result, bounding boxes will be added in the same order which is generated by GeometryObject::getObjects
  path | path (optional) path hints which limits search space

Implements plask::GeometryObjectD< dim >.

Definition at line 80 of file leaf.cpp.

## ◆ getChildNo()

template<int dim>

shared_ptr< GeometryObject > plask::GeometryObjectLeaf< dim >::getChildNo | ( | std::size_t | child_no | ) | const
| override virtual

Get child with given index.

Parameters

  child_no | index of child to get

Returns
  child with index `child_no`

Implements plask::GeometryObject.

Definition at line 111 of file leaf.cpp.

## ◆ getChildrenCount()

template<int dim>

std::size_t plask::GeometryObjectLeaf< dim >::getChildrenCount | ( |  | ) | const
| inline override virtual

Get number of all children of this in geometry graph.

Returns
  number of children

Implements plask::GeometryObject.

Definition at line 257 of file leaf.hpp.

## ◆ getMaterial()

template<int dim>

shared_ptr< Material > plask::GeometryObjectLeaf< dim >::getMaterial | ( | const DVec & | p | ) | const
| override virtual

Return material in a given point inside the geometry object.

Parameters

  p | point

Returns
  material in given point, or `nullptr` if this GeometryObject not contains point p

Implements plask::GeometryObjectD< dim >.

Definition at line 69 of file leaf.cpp.

## ◆ getMaterialProvider()

template<int dim>

const MaterialProvider * plask::GeometryObjectLeaf< dim >::getMaterialProvider | ( |  | ) | const
| inline

Return pointer to the material provider.

Definition at line 233 of file leaf.hpp.

## ◆ getObjectsToVec()

template<int dim>

void plask::GeometryObjectLeaf< dim >::getObjectsToVec | ( | const GeometryObject::Predicate & | predicate,
|  | std::vector< shared_ptr< const GeometryObject > > & | dest,
|  | const PathHints * | path = `0`
| ) |  | const
| override virtual

Append all objects from subtree with this in root, which fulfill predicate to vector `dest`.

Parameters

  predicate | predicate required to match
  dest | destination vector
  path | (optional) path hints which limits search space

Implements plask::GeometryObject.

Definition at line 87 of file leaf.cpp.

## ◆ getPathsAt()

template<int dim>

GeometryObject::Subtree plask::GeometryObjectLeaf< dim >::getPathsAt | ( | const DVec & | point,
|  | bool | all = `false`
| ) |  | const
| override virtual

Find all paths to objects which lies at given `point`.

Parameters

  point | a point in local coordinates
  all | if true then return all paths if branches overlap the point

Returns
  all paths, last one is on top and overlies the rest

Implements plask::GeometryObjectD< dim >.

Definition at line 107 of file leaf.cpp.

## ◆ getPathsTo()

template<int dim>

GeometryObject::Subtree plask::GeometryObjectLeaf< dim >::getPathsTo | ( | const GeometryObject & | el,
|  | const PathHints * | pathHints = `0`
| ) |  | const
| override virtual

Find paths to el.

Parameters

  el | object to search for
  pathHints | (optional) path hints which limits search space

Returns
  sub-tree with paths to given object (`el` is in all leafs), empty sub-tree if `el` is not in subtree with `this` in root

Reimplemented from plask::GeometryObjectD< dim >.

Definition at line 102 of file leaf.cpp.

## ◆ getPositionsToVec()

template<int dim>

void plask::GeometryObjectLeaf< dim >::getPositionsToVec | ( | const GeometryObject::Predicate & | predicate,
|  | std::vector< DVec > & | dest,
|  | const PathHints * | path = `0`
| ) |  | const
| override virtual

Calculate and append to vector positions of all nodes which fulfill given `predicate`, optionally marked by path.

Some objects can have all vector of NaNs as translations. This mean that translation is not well defined (some space changer on path).

Parameters

  predicate | predicate required to match
  dest | place to add result, positions will be added in the same order which is generated by GeometryObject::getObjectsToVec
  path | (optional) path hints which limits search space

Implements plask::GeometryObjectD< dim >.

Definition at line 94 of file leaf.cpp.

## ◆ getRepresentativeMaterial()

template<int dim>

shared_ptr< Material > plask::GeometryObjectLeaf< dim >::getRepresentativeMaterial | ( |  | ) | const
| inline

Get representative material of this leaf (typically material which is returned in center of object).

Returns
  representative material of this

Definition at line 164 of file leaf.hpp.

## ◆ getType()

template<int dim>

GeometryObject::Type plask::GeometryObjectLeaf< dim >::getType | ( |  | ) | const
| override virtual

Check if geometry is: leaf, transform or container type object.

Returns
  type of this object

Implements plask::GeometryObject.

Definition at line 66 of file leaf.cpp.

## ◆ hasInSubtree()

template<int dim>

bool plask::GeometryObjectLeaf< dim >::hasInSubtree | ( | const GeometryObject & | el | ) | const
| override virtual

Check if el is in subtree with `this` in root.

Parameters

  el | object to search for

Returns
  `true` only if el is in subtree with `this` in root

Reimplemented from plask::GeometryObject.

Definition at line 100 of file leaf.cpp.

## ◆ readMaterial()

template<int dim>

GeometryReader & plask::GeometryObjectLeaf< dim >::readMaterial | ( | GeometryReader & | src | ) |

Definition at line 35 of file leaf.cpp.

## ◆ setMaterial()

template<int dim>

void plask::GeometryObjectLeaf< dim >::setMaterial | ( | shared_ptr< Material > | new_material | ) |
| inline

Set new, solid on all surface, material.

Parameters

  new_material | material to set

Definition at line 176 of file leaf.hpp.

## ◆ setMaterialDraftTopBottomCompositionFast()

template<int dim>

void plask::GeometryObjectLeaf< dim >::setMaterialDraftTopBottomCompositionFast | ( | shared_ptr< MaterialsDB::MixedCompositionFactory > | materialTopBottom | ) |
| inline

Set new draft graded material.

Parameters

  materialTopBottom | materials to set (lineary changeble), first is the material on top of this, the second is on bottom of this

Definition at line 211 of file leaf.hpp.

## ◆ setMaterialFast()

template<int dim>

void plask::GeometryObjectLeaf< dim >::setMaterialFast | ( | shared_ptr< Material > | new_material | ) |
| inline

Set new, solid on all surface, material.

Do not inform listeners about the change.

Parameters

  new_material | material to set

Definition at line 185 of file leaf.hpp.

## ◆ setMaterialProvider()

template<int dim>

void plask::GeometryObjectLeaf< dim >::setMaterialProvider | ( | MaterialProvider * | provider | ) |
| inline

Set new custom material provider.

Parameters

  provider | custom material provider to set; this class takes ownership of this provider

Definition at line 225 of file leaf.hpp.

## ◆ setMaterialProviderFast()

template<int dim>

void plask::GeometryObjectLeaf< dim >::setMaterialProviderFast | ( | MaterialProvider * | provider | ) |
| inline

Set new custom material provider.

Do not inform listeners about the change.

Parameters

  provider | custom material provider to set; this class takes ownership of this provider

Definition at line 219 of file leaf.hpp.

## ◆ setMaterialTopBottomComposition()

template<int dim>

void plask::GeometryObjectLeaf< dim >::setMaterialTopBottomComposition | ( | shared_ptr< MaterialsDB::MixedCompositionFactory > | materialTopBottom | ) |
| inline

Set new material material.

Parameters

  materialTopBottom | materials to set (lineary changeble), first is the material on top of this, the second is on bottom of this

Definition at line 201 of file leaf.hpp.

## ◆ setMaterialTopBottomCompositionFast()

template<int dim>

void plask::GeometryObjectLeaf< dim >::setMaterialTopBottomCompositionFast | ( | shared_ptr< MaterialsDB::MixedCompositionFactory > | materialTopBottom | ) |
| inline

Set new graded material.

Do not inform listeners about the change.

Parameters

  materialTopBottom | materials to set (lineary changeble), first is the material on top of this, the second is on bottom of this

Definition at line 192 of file leaf.hpp.

## ◆ singleMaterial()

template<int dim>

shared_ptr< Material > plask::GeometryObjectLeaf< dim >::singleMaterial | ( |  | ) | const
| inline

Get material only if it this leaf is solid (has assign exactly one material).

Returns
  material or nullptr if it is not solid

Definition at line 170 of file leaf.hpp.

## Member Data Documentation

## ◆ materialProvider

template<int dim>

std::unique_ptr<MaterialProvider> plask::GeometryObjectLeaf< dim >::materialProvider
| protected

Definition at line 128 of file leaf.hpp.

The documentation for this struct was generated from the following files:

- plask/geometry/leaf.hpp
- plask/geometry/leaf.cpp