PLaSK library

Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
plask::GeometryObjectTransform< dim, Child_Type > Struct Template Referenceabstract
Geometry Objects

Template of base class for all transform nodes. More...

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

Inheritance diagram for plask::GeometryObjectTransform< dim, Child_Type >:
[legend]
Collaboration diagram for plask::GeometryObjectTransform< dim, Child_Type >:
[legend]

## Public Types
typedef GeometryObjectD< dim >::DVec | DVec
typedef GeometryObjectD< dim >::Box | Box
typedef Child_Type | ChildType
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
| GeometryObjectTransform (shared_ptr< ChildType > child=nullptr)
| GeometryObjectTransform (ChildType &child)
virtual | ~GeometryObjectTransform ()
GeometryObject::Type | getType () const override
| Check if geometry is: leaf, transform or container type object.
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`.
virtual void | onChildChanged (const GeometryObject::Event &evt)
| Called by child.change signal, call this change.
void | connectOnChildChanged ()
| Connect onChildChanged to current child change signal.
void | disconnectOnChildChanged ()
| Disconnect onChildChanged from current child change signal.
shared_ptr< ChildType > | getChild () const
| Get child.
void | setChildUnsafe (const shared_ptr< ChildType > &child)
| Set new child.
void | setChild (const shared_ptr< ChildType > &child)
| Set new child.
bool | hasChild () const
void | validate () const override
| Throws NoChildException if child is not set.
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.
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< GeometryObjectTransform< dim, Child_Type > > | shallowCopyWithChild (const shared_ptr< ChildType > &child) const
| Get copy of this, and change child in the copy,.
shared_ptr< GeometryObject > | deepCopy (std::map< const GeometryObject *, shared_ptr< GeometryObject > > &copied) const override
| Get deep copy of this.
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.
void | removeAtUnsafe (std::size_t) override
| Remove child at given `index`.
virtual Box | fromChildCoords (const typename ChildType::Box &child_bbox) const =0
| Convert bounding box from child's to this's coordinates.
Box | getBoundingBox () const override
| Calculate minimal rectangle which contains all points of geometry object.
void | getBoundingBoxesToVec (const GeometryObject::Predicate &predicate, std::vector< Box > &dest, const PathHints *path) const override
| Calculate and append to vector bounding boxes of all nodes which fulfill given `predicate`, optionally marked by path.
bool | childHasType (GeometryObject::Type type) const
| Check if child of this has given type.
Public Member Functions inherited from plask::GeometryObjectD< dim >
int | getDimensionsCount () const override
| Get number of dimensions.
virtual Subtree | getPathsAt (const DVec &point, bool all=false) const =0
| Find all paths to objects which lies at given `point`.
virtual bool | contains (const DVec &point) const =0
| Check if this geometry object contains point.
virtual DVec | getBoundingBoxSize () const
virtual Box | getRealBoundingBox () const
| Calculate minimal rectangle which contains all points of real geometry object.
virtual shared_ptr< Material > | getMaterial (const DVec &p) const =0
| Return material in a given point inside the 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`.
virtual void | getPositionsToVec (const Predicate &predicate, std::vector< DVec > &dest, const PathHints *path=0) const =0
| Calculate and append to vector positions of all nodes which fulfill given `predicate`, optionally 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.
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.
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.

## Static Protected Member Functions
template<typename ThisType >
static void | _getNotChangedPositionsToVec (ThisType _this, const GeometryObject::Predicate &predicate, std::vector< DVec > &dest, const PathHints *path)
| Possible implementation for getPositionsToVec, which does not change children position and is used by many subclasses.

## Protected Attributes
shared_ptr< ChildType > | _child

## 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, typename Child_Type = GeometryObjectD<dim>>
struct plask::GeometryObjectTransform< dim, Child_Type >

Template of base class for all transform nodes.

Transform node has exactly one child node and represent object which is equal to child after transform.

Template Parameters

  dim | number of dimensions of this object
  Child_Type | type of child, can be in space with different number of dimensions than this is (in such case see GeometryObjectTransformSpace).

Definition at line 33 of file transform.hpp.

## Member Typedef Documentation

## ◆ Box

template<int dim, typename Child_Type = GeometryObjectD<dim>>

typedef GeometryObjectD<dim>::Box plask::GeometryObjectTransform< dim, Child_Type >::Box

Definition at line 35 of file transform.hpp.

## ◆ ChildType

template<int dim, typename Child_Type = GeometryObjectD<dim>>

typedef Child_Type plask::GeometryObjectTransform< dim, Child_Type >::ChildType

Definition at line 36 of file transform.hpp.

## ◆ DVec

template<int dim, typename Child_Type = GeometryObjectD<dim>>

typedef GeometryObjectD<dim>::DVec plask::GeometryObjectTransform< dim, Child_Type >::DVec

Definition at line 34 of file transform.hpp.

## Constructor & Destructor Documentation

## ◆ GeometryObjectTransform() [1/2]

template<int dim, typename Child_Type = GeometryObjectD<dim>>

plask::GeometryObjectTransform< dim, Child_Type >::GeometryObjectTransform | ( | shared_ptr< ChildType > | child = `nullptr` | ) |
| inline explicit

Definition at line 38 of file transform.hpp.

## ◆ GeometryObjectTransform() [2/2]

template<int dim, typename Child_Type = GeometryObjectD<dim>>

plask::GeometryObjectTransform< dim, Child_Type >::GeometryObjectTransform | ( | ChildType & | child | ) |
| inline explicit

Definition at line 40 of file transform.hpp.

## ◆ ~GeometryObjectTransform()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

virtual plask::GeometryObjectTransform< dim, Child_Type >::~GeometryObjectTransform | ( |  | ) |
| inline virtual

Definition at line 45 of file transform.hpp.

## Member Function Documentation

## ◆ _getNotChangedPositionsToVec()

template<int dim, typename Child_Type = GeometryObjectD<dim>>
template<typename ThisType >

static void plask::GeometryObjectTransform< dim, Child_Type >::_getNotChangedPositionsToVec | ( | ThisType | _this,
|  | const GeometryObject::Predicate & | predicate,
|  | std::vector< DVec > & | dest,
|  | const PathHints * | path
| ) |  |
| inline static protected

Possible implementation for getPositionsToVec, which does not change children position and is used by many subclasses.

This is a template since this code is not proper for space changer.

Definition at line 225 of file transform.hpp.

## ◆ changedVersion()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

shared_ptr< const GeometryObject > plask::GeometryObjectTransform< dim, Child_Type >::changedVersion | ( | const GeometryObject::Changer & | changer,
|  | Vec< 3, double > * | translation = `0`
| ) |  | const
| inline 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.

Reimplemented in plask::Translation< dim >, and plask::Translation< DIMS >.

Definition at line 172 of file transform.hpp.

## ◆ childHasType()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

bool plask::GeometryObjectTransform< dim, Child_Type >::childHasType | ( | GeometryObject::Type | type | ) | const
| inline

Check if child of this has given type.

Parameters

  type | required type

Returns
  `true` only if this has a child of required `type`

Definition at line 215 of file transform.hpp.

## ◆ connectOnChildChanged()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

void plask::GeometryObjectTransform< dim, Child_Type >::connectOnChildChanged | ( |  | ) |
| inline

Connect onChildChanged to current child change signal.

Definition at line 69 of file transform.hpp.

## ◆ deepCopy()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

shared_ptr< GeometryObject > plask::GeometryObjectTransform< dim, Child_Type >::deepCopy | ( | std::map< const GeometryObject *, shared_ptr< GeometryObject > > & | copied | ) | const
| inline 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 161 of file transform.hpp.

## ◆ disconnectOnChildChanged()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

void plask::GeometryObjectTransform< dim, Child_Type >::disconnectOnChildChanged | ( |  | ) |
| inline

Disconnect onChildChanged from current child change signal.

Definition at line 75 of file transform.hpp.

## ◆ fromChildCoords()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

virtual Box plask::GeometryObjectTransform< dim, Child_Type >::fromChildCoords | ( | const typename ChildType::Box & | child_bbox | ) | const
| pure virtual

Convert bounding box from child's to this's coordinates.

Parameters

  child_bbox | bounding box of child

Returns
  `child_bbox` converted to this's coordinates

Implemented in plask::Clip< dim >, plask::Intersection< dim >, plask::ArrangeContainer< dim >, plask::Flip< dim >, plask::Mirror< dim >, plask::Translation< dim >, plask::Translation< DIMS >, plask::Extrusion, and plask::Revolution.

## ◆ getBoundingBox()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

Box plask::GeometryObjectTransform< dim, Child_Type >::getBoundingBox | ( |  | ) | const
| inline override virtual

Calculate minimal rectangle which contains all points of geometry object.

Returns
  calculated rectangle

Implements plask::GeometryObjectD< dim >.

Reimplemented in plask::Lattice, and plask::Mirror< dim >.

Definition at line 192 of file transform.hpp.

## ◆ getBoundingBoxesToVec()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

void plask::GeometryObjectTransform< dim, Child_Type >::getBoundingBoxesToVec | ( | const GeometryObject::Predicate & | predicate,
|  | std::vector< Box > & | dest,
|  | const PathHints * | path
| ) |  | const
| inline 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 >.

Reimplemented in plask::Intersection< dim >, and plask::Mirror< dim >.

Definition at line 197 of file transform.hpp.

## ◆ getChild()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

shared_ptr< ChildType > plask::GeometryObjectTransform< dim, Child_Type >::getChild | ( |  | ) | const
| inline

Get child.

Returns
  child

Definition at line 85 of file transform.hpp.

## ◆ getChildNo()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

shared_ptr< GeometryObject > plask::GeometryObjectTransform< dim, Child_Type >::getChildNo | ( | std::size_t | child_no | ) | const
| inline override virtual

Get child with given index.

Parameters

  child_no | index of child to get

Returns
  child with index `child_no`

Implements plask::GeometryObject.

Reimplemented in plask::Lattice, and plask::Mirror< dim >.

Definition at line 142 of file transform.hpp.

## ◆ getChildrenCount()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

std::size_t plask::GeometryObjectTransform< dim, Child_Type >::getChildrenCount | ( |  | ) | const
| inline override virtual

Get number of all children of this in geometry graph.

Returns
  number of children

Implements plask::GeometryObject.

Reimplemented in plask::Lattice, and plask::Mirror< dim >.

Definition at line 140 of file transform.hpp.

## ◆ getObjectsToVec()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

void plask::GeometryObjectTransform< dim, Child_Type >::getObjectsToVec | ( | const GeometryObject::Predicate & | predicate,
|  | std::vector< shared_ptr< const GeometryObject > > & | dest,
|  | const PathHints * | path = `0`
| ) |  | const
| inline 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.

Reimplemented in plask::Lattice, and plask::Mirror< dim >.

Definition at line 53 of file transform.hpp.

## ◆ getPathsTo()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

GeometryObject::Subtree plask::GeometryObjectTransform< dim, Child_Type >::getPathsTo | ( | const GeometryObject & | el,
|  | const PathHints * | pathHints = `0`
| ) |  | const
| inline 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 >.

Reimplemented in plask::Lattice, and plask::Mirror< dim >.

Definition at line 130 of file transform.hpp.

## ◆ getType()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

GeometryObject::Type plask::GeometryObjectTransform< dim, Child_Type >::getType | ( |  | ) | const
| inline override virtual

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

Returns
  type of this object

Implements plask::GeometryObject.

Reimplemented in plask::GeometryObjectTransformSpace< this_dim, child_dim, ChildType >, and plask::GeometryObjectTransformSpace< 3, 2 >.

Definition at line 47 of file transform.hpp.

## ◆ hasChild()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

bool plask::GeometryObjectTransform< dim, Child_Type >::hasChild | ( |  | ) | const
| inline

Returns
  `true` only if child is set (is not `nullptr`)

Definition at line 117 of file transform.hpp.

## ◆ hasInSubtree()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

bool plask::GeometryObjectTransform< dim, Child_Type >::hasInSubtree | ( | const GeometryObject & | el | ) | const
| inline 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 126 of file transform.hpp.

## ◆ onChildChanged()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

virtual void plask::GeometryObjectTransform< dim, Child_Type >::onChildChanged | ( | const GeometryObject::Event & | evt | ) |
| inline virtual

Called by child.change signal, call this change.

Reimplemented in plask::Lattice.

Definition at line 64 of file transform.hpp.

## ◆ removeAtUnsafe()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

void plask::GeometryObjectTransform< dim, Child_Type >::removeAtUnsafe | ( | std::size_t | index | ) |
| inline override virtual

Remove child at given `index`.

This is unsafe but fast version, it doesn't check index and doesn't call fireChildrenChanged() to inform listeners about this object changes. Caller should do this manually or call removeAt(std::size_t) instead.

Default implementation throw exception but this method is overwritten in subroles.

Parameters

  index | index of real child to remove

Reimplemented from plask::GeometryObject.

Definition at line 183 of file transform.hpp.

## ◆ setChild()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

void plask::GeometryObjectTransform< dim, Child_Type >::setChild | ( | const shared_ptr< ChildType > & | child | ) |
| inline

Set new child.

Call change signal to inform observer about it.

Parameters

  child | new child

Exceptions

  CyclicReferenceException | if set new child cause inception of cycle in geometry graph TODO
  NoChildException | if child is an empty pointer

Definition at line 106 of file transform.hpp.

## ◆ setChildUnsafe()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

void plask::GeometryObjectTransform< dim, Child_Type >::setChildUnsafe | ( | const shared_ptr< ChildType > & | child | ) |
| inline

Set new child.

This method is fast but also unsafe because it doesn't ensure that there will be no cycle in geometry graph after setting the new child. It also doesn't call change signal.

Parameters

  child | new child

Definition at line 93 of file transform.hpp.

## ◆ shallowCopyWithChild()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

shared_ptr< GeometryObjectTransform< dim, Child_Type > > plask::GeometryObjectTransform< dim, Child_Type >::shallowCopyWithChild | ( | const shared_ptr< ChildType > & | child | ) | const
| inline

Get copy of this, and change child in the copy,.

Parameters

  child | child for the copy

Returns
  the copy of this

Definition at line 152 of file transform.hpp.

## ◆ validate()

template<int dim, typename Child_Type = GeometryObjectD<dim>>

void plask::GeometryObjectTransform< dim, Child_Type >::validate | ( |  | ) | const
| inline override virtual

Throws NoChildException if child is not set.

Reimplemented from plask::GeometryObject.

Definition at line 122 of file transform.hpp.

## Member Data Documentation

## ◆ _child

template<int dim, typename Child_Type = GeometryObjectD<dim>>

shared_ptr<ChildType> plask::GeometryObjectTransform< dim, Child_Type >::_child
| protected

Definition at line 218 of file transform.hpp.

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

- plask/geometry/transform.hpp