PLaSK library
|
Geometry objects container in which every child has an associated aligner. More...
#include <plask/geometry/translation_container.hpp>
Public Types | |
typedef GeometryObjectContainer< dim >::DVec | DVec |
Vector of doubles type in space on this, vector in space with dim number of dimensions. | |
typedef GeometryObjectContainer< dim >::Box | Box |
Rectangle type in space on this, rectangle in space with dim number of dimensions. | |
typedef GeometryObjectContainer< dim >::ChildType | ChildType |
Type of this child. | |
typedef align::AlignerD< dim > | ChildAligner |
Type of child aligner. | |
typedef GeometryObjectContainer< dim >::TranslationT | TranslationT |
Type of translation geometry object in space of this. | |
Public Types inherited from plask::WithAligners< GeometryObjectContainer< dim >, align::AlignerD< dim > > | |
typedef align::AlignerD< dim > | ChildAligner |
typedef ParentType::TranslationT | TranslationT |
Public Types inherited from plask::GeometryObjectContainer< dim > | |
typedef GeometryObjectContainer< dim >::DVec | DVec |
Vector of doubles type in space on this, vector in space with dim number of dimensions. | |
typedef GeometryObjectContainer< dim >::Box | Box |
Rectangle type in space on this, rectangle in space with dim number of dimensions. | |
typedef GeometryObjectD< dim > | ChildType |
Type of the container children. | |
typedef Translation< dim > | TranslationT |
Type of translation geometry object in space of this. | |
typedef std::vector< shared_ptr< TranslationT > > | TranslationVector |
Type of the vector holding container children. | |
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 | |
TranslationContainer () | |
TranslationContainer (const TranslationContainer &to_copy) | |
~TranslationContainer () | |
std::string | getTypeName () const override |
Get name of object type (like: "block2d", "shelf", "stack3d", etc.). | |
PathHints::Hint | addUnsafe (shared_ptr< ChildType > el, ChildAligner aligner) |
Add new child (translated) to end of children vector. | |
PathHints::Hint | addUnsafe (shared_ptr< ChildType > el, const DVec &translation=Primitive< dim >::ZERO_VEC) |
Add new child (translated) to end of children vector. | |
PathHints::Hint | add (shared_ptr< ChildType > el, ChildAligner aligner) |
Add new child (translated) to end of children vector. | |
PathHints::Hint | add (shared_ptr< ChildType > el, const DVec &translation=Primitive< dim >::ZERO_VEC) |
Add new child (translated) to end of children vector. | |
PathHints::Hint | insertUnsafe (const std::size_t pos, shared_ptr< ChildType > el, ChildAligner aligner) |
Insert new child (translated) to end of children vector. | |
PathHints::Hint | insertUnsafe (const std::size_t pos, shared_ptr< ChildType > el, const DVec &translation=Primitive< dim >::ZERO_VEC) |
Insert new child (translated) to end of children vector. | |
PathHints::Hint | insert (const std::size_t pos, shared_ptr< ChildType > el, ChildAligner aligner) |
Insert new child (translated) to end of children vector. | |
PathHints::Hint | insert (const std::size_t pos, shared_ptr< ChildType > el, const DVec &translation=Primitive< dim >::ZERO_VEC) |
Insert new child (translated) to end of children vector. | |
shared_ptr< Material > | getMaterial (const DVec &p) const override |
bool | contains (const DVec &p) const override |
GeometryObject::Subtree | getPathsAt (const DVec &point, bool all=false) const override |
void | onChildChanged (const GeometryObject::Event &evt) override |
Called by child.change signal, call this change. | |
bool | removeIfTUnsafe (const std::function< bool(const shared_ptr< TranslationT > &c)> &predicate) override |
Remove all children which fulfil predicate. | |
void | removeAtUnsafe (std::size_t index) override |
Remove child at given index . | |
shared_ptr< GeometryObject > | shallowCopy () const override |
Get shallow copy of this. | |
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::WithAligners< GeometryObjectContainer< dim >, align::AlignerD< dim > > | |
WithAligners (Args &&... args) | |
Delegate all constructors to parent class. | |
void | onChildChanged (const GeometryObject::Event &evt) override |
Called by child.change signal. | |
bool | removeIfTUnsafe (const std::function< bool(const shared_ptr< TranslationT > &c)> &predicate) override |
void | removeAtUnsafe (std::size_t index) override |
void | writeXMLChildAttr (XMLWriter::Element &dest_xml_child_tag, std::size_t child_index, const AxisNames &axes) const override |
void | move (std::size_t index, ChildAligner aligner) |
Set new aligner for child at given index . | |
void | move (shared_ptr< const TranslationT > child, ChildAligner aligner) |
Set new aligner for given child . | |
void | move (const TranslationT &child, ChildAligner aligner) |
Set new aligner for given child . | |
const std::vector< ChildAligner > & | getAligners () const |
Get const reference to aligners. | |
Public Member Functions inherited from plask::GeometryObjectContainer< dim > | |
virtual void | writeXML (XMLWriter::Element &parent_xml_object, GeometryObject::WriteXMLCallback &write_cb, AxisNames axes) const override |
Call writeXMLAttr for this container attribute and writeXMLChildAttr for each child tag. | |
~GeometryObjectContainer () | |
Disconnect onChildChanged from current child change signal. | |
void | connectOnChildChanged (Translation< dim > &child) |
Connect onChildChanged to current child change signal. | |
void | disconnectOnChildChanged (Translation< dim > &child) |
Disconnect onChildChanged from current child change signal. | |
const TranslationVector & | getChildrenVector () const |
Get physically stored children (with translations). | |
GeometryObject::Type | getType () const override |
bool | contains (const DVec &p) const override |
Box | getBoundingBox () const override |
Calculate minimal rectangle which contains all points of geometry object. | |
shared_ptr< Material > | getMaterial (const DVec &p) const override |
Iterate over children in reverse order and check if any returns material. | |
void | getBoundingBoxesToVec (const GeometryObject::Predicate &predicate, std::vector< Box > &dest, const PathHints *path=0) const override |
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 | getPositionsToVec (const GeometryObject::Predicate &predicate, std::vector< DVec > &dest, const PathHints *path=0) const override |
bool | hasInSubtree (const GeometryObject &el) const override |
Check if el is in subtree with this in root. | |
template<typename ChildIter > | |
GeometryObject::Subtree | findPathsFromChildTo (ChildIter childBegin, ChildIter childEnd, const GeometryObject &el, const PathHints *path=0) const |
GeometryObject::Subtree | getPathsTo (const GeometryObject &el, const PathHints *path=0) const override |
Find paths to el. | |
GeometryObject::Subtree | getPathsAt (const DVec &point, bool all=false) const override |
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. | |
std::size_t | getChildIndex (const shared_ptr< ChildType > &el, const PathHints *path=0) const |
Return index of the given item. | |
std::size_t | getChildIndex (const shared_ptr< ChildType > &el, const PathHints &path) const |
Return index of the given item. | |
virtual 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. | |
bool | removeIfT (const std::function< bool(const shared_ptr< TranslationT > &c)> &predicate) |
Remove all children which fulfil predicate. | |
bool | removeIf (const std::function< bool(const shared_ptr< ChildType > &c)> &predicate) |
Remove all children which fulfil predicate. | |
bool | removeT (shared_ptr< const TranslationT > el) |
Remove all children exactly equal to el. | |
bool | remove (shared_ptr< const ChildType > el) |
Remove all children exactly equal to el. | |
bool | remove (const PathHints &hints) |
Remove child pointed, for this container, in hints. | |
void | clear () |
Remove all children from the container. | |
template<typename UnaryFunction > | |
void | forEachChild (UnaryFunction fun, const PathHints *path=nullptr) const |
Call fun(child) for each real child of this. | |
void | addPointsAlongToSet (std::set< double > &points, Primitive< 3 >::Direction direction, unsigned max_steps, double min_step_size) const override |
void | addLineSegmentsToSet (std::set< typename GeometryObjectD< dim >::LineSegment > &segments, unsigned max_steps, double min_step_size) const override |
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. | |
virtual void | getBoundingBoxesToVec (const GeometryObject::Predicate &predicate, std::vector< Box > &dest, const PathHints *path=0) const =0 |
Calculate and append to vector bounding boxes of all nodes which fulfill given predicate , optionally marked by path. | |
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. | |
virtual Subtree | getPathsTo (const GeometryObject &el, const PathHints *pathHints=0) const=0 |
Find paths to el. | |
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. | |
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. | |
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 |
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 Public Attributes | |
static const char * | NAME = dim == 2 ? PLASK_TRANSLATIONCONTAINER2D_NAME : PLASK_TRANSLATIONCONTAINER3D_NAME |
Static Public Attributes inherited from plask::GeometryObjectD< dim > | |
static const int | DIM = dim |
Protected Member Functions | |
shared_ptr< GeometryObject > | changedVersionForChildren (std::vector< std::pair< shared_ptr< ChildType >, Vec< 3, double > > > &children_after_change, Vec< 3, double > *recomended_translation) const override |
This is called by changedVersion method to create new version of this container which consists of new children. | |
void | invalidateCache () |
Destroy geometry cache, this should be called when children was changed (it will be rebuild by first operation which use it). | |
SpatialIndexNode< dim > * | ensureHasCache () |
Construct cache if it not exists and return it. | |
SpatialIndexNode< dim > * | ensureHasCache () const |
Construct cache if it not exists and return it. | |
Protected Member Functions inherited from plask::WithAligners< GeometryObjectContainer< dim >, align::AlignerD< dim > > | |
PathHints::Hint | _insertUnsafe (const std::size_t pos, shared_ptr< TranslationT > to_insert, ChildAligner aligner) |
Do everything, but align to_insert by aligner. | |
PathHints::Hint | _insert (const std::size_t pos, shared_ptr< TranslationT > to_insert, ChildAligner aligner) |
PathHints::Hint | _addUnsafe (shared_ptr< TranslationT > to_add, ChildAligner aligner) |
ChildAligner | getAlignerFor (shared_ptr< const TranslationT > child) |
ChildAligner | getAlignerFor (TranslationT &child) |
void | align (shared_ptr< TranslationT > child) |
void | align (TranslationT *child) |
void | align (TranslationT &child) |
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) |
Friends | |
struct | Lattice |
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. | |
Protected Attributes inherited from plask::WithAligners< GeometryObjectContainer< dim >, align::AlignerD< dim > > | |
std::vector< ChildAligner > | aligners |
Protected Attributes inherited from plask::GeometryObjectContainer< dim > | |
TranslationVector | children |
Geometry objects container in which every child has an associated aligner.
Definition at line 30 of file translation_container.hpp.
typedef GeometryObjectContainer<dim>::Box plask::TranslationContainer< dim >::Box |
Rectangle type in space on this, rectangle in space with dim number of dimensions.
Definition at line 38 of file translation_container.hpp.
typedef align::AlignerD<dim> plask::TranslationContainer< dim >::ChildAligner |
Type of child aligner.
Definition at line 44 of file translation_container.hpp.
typedef GeometryObjectContainer<dim>::ChildType plask::TranslationContainer< dim >::ChildType |
Type of this child.
Definition at line 41 of file translation_container.hpp.
typedef GeometryObjectContainer<dim>::DVec plask::TranslationContainer< dim >::DVec |
Vector of doubles type in space on this, vector in space with dim number of dimensions.
Definition at line 35 of file translation_container.hpp.
typedef GeometryObjectContainer<dim>::TranslationT plask::TranslationContainer< dim >::TranslationT |
Type of translation geometry object in space of this.
Definition at line 47 of file translation_container.hpp.
|
inline |
Definition at line 54 of file translation_container.hpp.
|
inline |
Definition at line 56 of file translation_container.hpp.
plask::TranslationContainer< dim >::~TranslationContainer | ( | ) |
Definition at line 27 of file translation_container.cpp.
|
inline |
Add new child (translated) to end of children vector.
el | new child |
aligner |
CyclicReferenceException | if adding the new child cause inception of cycle in geometry graph |
Definition at line 88 of file translation_container.hpp.
|
inline |
Add new child (translated) to end of children vector.
el | new child |
translation | trasnalation of child |
CyclicReferenceException | if adding the new child cause inception of cycle in geometry graph |
Definition at line 100 of file translation_container.hpp.
PathHints::Hint plask::TranslationContainer< dim >::addUnsafe | ( | shared_ptr< ChildType > | el, |
ChildAligner | aligner | ||
) |
Add new child (translated) to end of children vector.
This method is fast but also unsafe because it doesn't ensure that there will be no cycle in geometry graph after adding the new child.
el | new child |
aligner |
PathHints::Hint plask::TranslationContainer< dim >::addUnsafe | ( | shared_ptr< ChildType > | el, |
const DVec & | translation = Primitive< dim >::ZERO_VEC |
||
) |
Add new child (translated) to end of children vector.
This method is fast but also unsafe because it doesn't ensure that there will be no cycle in geometry graph after adding the new child.
el | new child |
translation | trasnalation of child |
|
overrideprotectedvirtual |
This is called by changedVersion method to create new version of this container which consists of new children.
[in] | children_after_change | vector of new children |
[out] | recomended_translation | optional, place to store recommended translation (if is not nullptr, it has all coordinates equals to 0.0) |
Implements plask::GeometryObjectContainer< dim >.
Definition at line 112 of file translation_container.cpp.
|
inlineoverride |
Definition at line 156 of file translation_container.hpp.
|
overridevirtual |
Get deep copy of this.
In the deep copy all children are copied.
copied | map containing copied objects to avoid double copying |
Implements plask::GeometryObject.
Definition at line 98 of file translation_container.cpp.
|
protected |
Construct cache if it not exists and return it.
Definition at line 75 of file translation_container.cpp.
|
protected |
Construct cache if it not exists and return it.
This method is thread-safty (can be call by many threads at once, and only first call will build the cache).
Definition at line 82 of file translation_container.cpp.
|
inlineoverride |
Definition at line 152 of file translation_container.hpp.
|
inlineoverride |
Definition at line 160 of file translation_container.hpp.
|
inlineoverridevirtual |
Get name of object type (like: "block2d", "shelf", "stack3d", etc.).
This name is used as tag name when object is serialized to XML.
Implements plask::GeometryObject.
Definition at line 61 of file translation_container.hpp.
|
inline |
Insert new child (translated) to end of children vector.
el | new child |
pos | insert position |
aligner |
CyclicReferenceException | if inserting the new child cause inception of cycle in geometry graph |
Definition at line 133 of file translation_container.hpp.
|
inline |
Insert new child (translated) to end of children vector.
el | new child |
pos | insert position |
translation | translation of child |
CyclicReferenceException | if inserting the new child cause inception of cycle in geometry graph |
Definition at line 146 of file translation_container.hpp.
PathHints::Hint plask::TranslationContainer< dim >::insertUnsafe | ( | const std::size_t | pos, |
shared_ptr< ChildType > | el, | ||
ChildAligner | aligner | ||
) |
Insert new child (translated) to end of children vector.
This method is fast but also unsafe because it doesn't ensure that there will be no cycle in geometry graph after inserting the new child.
el | new child |
pos | insert position |
aligner |
PathHints::Hint plask::TranslationContainer< dim >::insertUnsafe | ( | const std::size_t | pos, |
shared_ptr< ChildType > | el, | ||
const DVec & | translation = Primitive< dim >::ZERO_VEC |
||
) |
Insert new child (translated) to end of children vector.
This method is fast but also unsafe because it doesn't ensure that there will be no cycle in geometry graph after inserting the new child.
el | new child |
pos | insert position |
translation | translation of child |
|
protected |
Destroy geometry cache, this should be called when children was changed (it will be rebuild by first operation which use it).
Definition at line 69 of file translation_container.cpp.
|
inlineoverridevirtual |
Called by child.change signal, call this change.
Reimplemented from plask::GeometryObjectContainer< dim >.
Definition at line 165 of file translation_container.hpp.
|
inlineoverridevirtual |
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.
index | index of real child to remove |
Reimplemented from plask::GeometryObjectContainer< dim >.
Definition at line 178 of file translation_container.hpp.
|
inlineoverridevirtual |
Remove all children which fulfil predicate.
This is unsafe but fast version, it doesn't call fireChildrenChanged() to inform listeners about this object changes. Caller should do this manually or call removeIfT instead.
predicate | returns true only if the child (with translation) passed as an argument should be deleted |
Reimplemented from plask::GeometryObjectContainer< dim >.
Definition at line 170 of file translation_container.hpp.
|
overridevirtual |
Get shallow copy of this.
In the shallow copy all children are the same
Implements plask::GeometryObject.
Definition at line 90 of file translation_container.cpp.
Definition at line 32 of file translation_container.hpp.
|
static |
Definition at line 52 of file translation_container.hpp.