KiCad PCB EDA Suite
Loading...
Searching...
No Matches
shape_index.h File Reference
#include <vector>
#include <geometry/rtree.h>
#include <geometry/shape.h>
#include <math/box2.h>

Go to the source code of this file.

Classes

class  SHAPE_INDEX< T >
 
class  SHAPE_INDEX< T >::Iterator
 

Functions

template<class T>
static const SHAPEshapeFunctor (T aItem, int aLayer)
 Used by SHAPE_INDEX to get a SHAPE* from another type.
 
template<class T>
BOX2I boundingBox (T aObject, int aLayer)
 Used by SHAPE_INDEX to get the bounding box of a generic T object.
 
template<class T, class V>
void acceptVisitor (T aObject, V aVisitor)
 Used by SHAPE_INDEX to implement Accept().
 
template<class T, class U>
bool collide (T aObject, U aAnotherObject, int aLayer, int aMinDistance)
 Used by SHAPE_INDEX to implement Query().
 
template<class T, class V>
bool queryCallback (T aShape, void *aContext)
 

Function Documentation

◆ acceptVisitor()

template<class T, class V>
void acceptVisitor ( T aObject,
V aVisitor )

Used by SHAPE_INDEX to implement Accept().

By default relies on V::operation() redefinition, should be specialized if V class doesn't have its () operation defined to accept T objects.

Parameters
aObjectis a generic T object.
aVisitoris a visitor object.

Definition at line 79 of file shape_index.h.

References T.

Referenced by SHAPE_INDEX< ITEM * >::Accept(), and queryCallback().

◆ boundingBox()

template<class T>
BOX2I boundingBox ( T aObject,
int aLayer )

Used by SHAPE_INDEX to get the bounding box of a generic T object.

By default relies on T::BBox() method, should be specialized if the T object doesn't allow that method.

Parameters
aObjectis a generic T object.
Returns
a BOX2I object containing the bounding box of the T object.

Definition at line 62 of file shape_index.h.

References SHAPE::BBox(), shapeFunctor(), and T.

Referenced by SHAPE_INDEX< T >::Add(), GRAPHICS_IMPORTER_BUFFER::ImportTo(), SCH_RULE_AREA::RefreshContainedItemsAndDirectives(), SHAPE_INDEX< T >::Reindex(), SHAPE_INDEX< T >::Remove(), and KIFONT::FONT::StringBoundaryLimits().

◆ collide()

template<class T, class U>
bool collide ( T aObject,
U aAnotherObject,
int aLayer,
int aMinDistance )

Used by SHAPE_INDEX to implement Query().

By default relies on T::Collide(U) method, should be specialized if the T object doesn't allow that method.

Parameters
aObjectis a generic T object.
aAnotherObjectis a generic U object.
aLayeris the layer to test
aMinDistanceis the minimum collision distance.
Returns
true if object and anotherObject collide.

Definition at line 97 of file shape_index.h.

References SHAPE::Collide(), shapeFunctor(), and T.

Referenced by AUTOPLACER::chooseSideFiltered(), DIALOG_BOARD_STATISTICS::getDataFromPCB(), and DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow().

◆ queryCallback()

template<class T, class V>
bool queryCallback ( T aShape,
void * aContext )

Definition at line 103 of file shape_index.h.

References acceptVisitor(), and T.

◆ shapeFunctor()

template<class T>
static const SHAPE * shapeFunctor ( T aItem,
int aLayer )
static

Used by SHAPE_INDEX to get a SHAPE* from another type.

By default relies on T::GetShape() method, should be specialized if the T object doesn't allow that method.

Parameters
aItemgeneric T object.
Returns
a SHAPE* object equivalent to object.

Definition at line 47 of file shape_index.h.

References T.

Referenced by boundingBox(), and collide().