KiCad PCB EDA Suite
CONTAINER_2D_BASE Class Referenceabstract

#include <container_2d.h>

Inheritance diagram for CONTAINER_2D_BASE:
BVH_CONTAINER_2D CONTAINER_2D

Public Member Functions

 CONTAINER_2D_BASE (OBJECT_2D_TYPE aObjType)
 
virtual ~CONTAINER_2D_BASE ()
 
void Add (OBJECT_2D *aObject)
 
const BBOX_2DGetBBox () const
 
virtual void Clear ()
 
const LIST_OBJECT2DGetList () const
 
virtual void GetIntersectingObjects (const BBOX_2D &aBBox, CONST_LIST_OBJECT2D &aOutList) const =0
 Get a list of objects that intersects a bounding box. More...
 
virtual bool IntersectAny (const RAYSEG2D &aSegRay) const =0
 Intersect and check if a segment ray hits a object or is inside it. More...
 

Protected Attributes

BBOX_2D m_bbox
 
LIST_OBJECT2D m_objects
 

Private Attributes

std::mutex m_lock
 

Detailed Description

Definition at line 42 of file container_2d.h.

Constructor & Destructor Documentation

◆ CONTAINER_2D_BASE()

CONTAINER_2D_BASE::CONTAINER_2D_BASE ( OBJECT_2D_TYPE  aObjType)
explicit

Definition at line 36 of file container_2d.cpp.

37{
38 m_bbox.Reset();
39}
void Reset()
Reset the bounding box to zero and uninitialize it.
Definition: bbox_2d.cpp:86

References m_bbox, and BBOX_2D::Reset().

◆ ~CONTAINER_2D_BASE()

CONTAINER_2D_BASE::~CONTAINER_2D_BASE ( )
virtual

Definition at line 56 of file container_2d.cpp.

57{
58 Clear();
59}
virtual void Clear()

References Clear().

Member Function Documentation

◆ Add()

void CONTAINER_2D_BASE::Add ( OBJECT_2D aObject)
inline

Definition at line 49 of file container_2d.h.

50 {
51 if( aObject )
52 {
53 std::lock_guard<std::mutex> lock( m_lock );
54 m_objects.push_back( aObject );
55 m_bbox.Union( aObject->GetBBox() );
56 }
57 }
std::mutex m_lock
Definition: container_2d.h:90
LIST_OBJECT2D m_objects
Definition: container_2d.h:87
const BBOX_2D & GetBBox() const
Definition: object_2d.h:103
void Union(const SFVEC2F &aPoint)
Recalculate the bounding box adding a point.
Definition: bbox_2d.cpp:93

References OBJECT_2D::GetBBox(), m_bbox, m_lock, m_objects, and BBOX_2D::Union().

Referenced by BOARD_ADAPTER::addShape(), BOARD_ADAPTER::addText(), BOARD_ADAPTER::buildPadOutlineAsSegments(), ConvertPolygonToBlocks(), ConvertPolygonToTriangles(), RENDER_3D_RAYTRACE::createItemsFromContainer(), BOARD_ADAPTER::createLayers(), BOARD_ADAPTER::createPadWithMargin(), BOARD_ADAPTER::createTrack(), RENDER_3D_RAYTRACE::insertHole(), RENDER_3D_RAYTRACE::Reload(), and BOARD_ADAPTER::transformArcToSegments().

◆ Clear()

void CONTAINER_2D_BASE::Clear ( )
virtual

Reimplemented in BVH_CONTAINER_2D.

Definition at line 42 of file container_2d.cpp.

43{
44 std::lock_guard<std::mutex> lock( m_lock );
45 m_bbox.Reset();
46
47 for( LIST_OBJECT2D::iterator ii = m_objects.begin(); ii != m_objects.end(); ++ii )
48 {
49 delete *ii;
50 }
51
52 m_objects.clear();
53}

References m_bbox, m_lock, m_objects, and BBOX_2D::Reset().

Referenced by BVH_CONTAINER_2D::Clear(), RENDER_3D_RAYTRACE::Reload(), and ~CONTAINER_2D_BASE().

◆ GetBBox()

const BBOX_2D & CONTAINER_2D_BASE::GetBBox ( ) const
inline

Definition at line 59 of file container_2d.h.

60 {
61 return m_bbox;
62 }

References m_bbox.

◆ GetIntersectingObjects()

virtual void CONTAINER_2D_BASE::GetIntersectingObjects ( const BBOX_2D aBBox,
CONST_LIST_OBJECT2D aOutList 
) const
pure virtual

Get a list of objects that intersects a bounding box.

Parameters
aBBoxThe bounding box to test.
aOutListThe list of objects that intersects the bounding box.

Implemented in CONTAINER_2D, and BVH_CONTAINER_2D.

◆ GetList()

◆ IntersectAny()

virtual bool CONTAINER_2D_BASE::IntersectAny ( const RAYSEG2D aSegRay) const
pure virtual

Intersect and check if a segment ray hits a object or is inside it.

Parameters
aSegRayThe segment to intersect with objects.
Returns
true if it hits any of the objects or is inside any object.

Implemented in CONTAINER_2D, and BVH_CONTAINER_2D.

Member Data Documentation

◆ m_bbox

BBOX_2D CONTAINER_2D_BASE::m_bbox
protected

◆ m_lock

std::mutex CONTAINER_2D_BASE::m_lock
private

Definition at line 90 of file container_2d.h.

Referenced by Add(), and Clear().

◆ m_objects

LIST_OBJECT2D CONTAINER_2D_BASE::m_objects
protected

Definition at line 87 of file container_2d.h.

Referenced by Add(), BVH_CONTAINER_2D::BuildBVH(), Clear(), and GetList().


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