KiCad PCB EDA Suite
|
#include <shape_rect.h>
Public Member Functions | |
SHAPE_RECT () | |
Create an empty (0-sized) rectangle. More... | |
SHAPE_RECT (const BOX2I &aBox) | |
Create a rectangle defined by a BOX2. More... | |
SHAPE_RECT (int aX0, int aY0, int aW, int aH) | |
Create a rectangle defined by top-left corner (aX0, aY0), width aW and height aH. More... | |
SHAPE_RECT (const VECTOR2I &aP0, int aW, int aH) | |
Create a rectangle defined by top-left corner aP0, width aW and height aH. More... | |
SHAPE_RECT (const SHAPE_RECT &aOther) | |
SHAPE * | Clone () const override |
Return a dynamically allocated copy of the shape. More... | |
const BOX2I | BBox (int aClearance=0) const override |
Compute a bounding box of the shape, with a margin of aClearance a collision. More... | |
int | Diagonal () const |
Return length of the diagonal of the rectangle. More... | |
bool | Collide (const SHAPE *aShape, int aClearance, VECTOR2I *aMTV) const override |
Check if the boundary of shape (this) lies closer to the shape aShape than aClearance, indicating a collision. More... | |
bool | Collide (const SHAPE *aShape, int aClearance=0, int *aActual=nullptr, VECTOR2I *aLocation=nullptr) const override |
bool | Collide (const SEG &aSeg, int aClearance=0, int *aActual=nullptr, VECTOR2I *aLocation=nullptr) const override |
Check if the boundary of shape (this) lies closer to the point aP than aClearance, indicating a collision. More... | |
const VECTOR2I & | GetPosition () const |
const VECTOR2I | GetSize () const |
int | GetWidth () const |
int | GetHeight () const |
void | Move (const VECTOR2I &aVector) override |
void | Rotate (const EDA_ANGLE &aAngle, const VECTOR2I &aCenter={ 0, 0 }) override |
This function has limited utility for SHAPE_RECT as non-cartesian rotations will distort the rectangle. More... | |
bool | IsSolid () const override |
const SHAPE_LINE_CHAIN | Outline () const |
virtual const std::string | Format (bool aCplusPlus=true) const override |
void | TransformToPolygon (SHAPE_POLY_SET &aBuffer, int aError, ERROR_LOC aErrorLoc) const override |
Fills a SHAPE_POLY_SET with a polygon representation of this shape. More... | |
int | GetClearance (const SHAPE *aOther) const |
Return the actual minimum distance between two shapes. More... | |
bool | IsNull () const |
Return true if the shape is a null shape. More... | |
virtual bool | Collide (const VECTOR2I &aP, int aClearance=0, int *aActual=nullptr, VECTOR2I *aLocation=nullptr) const |
Check if the boundary of shape (this) lies closer to the point aP than aClearance, indicating a collision. More... | |
virtual VECTOR2I | Centre () const |
Compute a center-of-mass of the shape. More... | |
virtual int | Distance (const VECTOR2I &aP) const |
Returns the minimum distance from a given point to this shape. More... | |
virtual SEG::ecoord | SquaredDistance (const VECTOR2I &aP, bool aOutlineOnly=false) const |
virtual bool | PointInside (const VECTOR2I &aPt, int aAccuracy=0, bool aUseBBoxCache=false) const |
Check if point aP lies inside a closed shape. More... | |
virtual bool | Parse (std::stringstream &aStream) |
FACET * | NewFacet () |
SGNODE * | CalcShape (SGNODE *aParent, SGNODE *aColor, WRL1_ORDER aVertexOrder, float aCreaseLimit=0.74317, bool isVRML2=false) |
SHAPE_TYPE | Type () const |
Return the type of the shape. More... | |
wxString | TypeName () const |
virtual bool | HasIndexableSubshapes () const |
virtual size_t | GetIndexableSubshapeCount () const |
virtual void | GetIndexableSubshapes (std::vector< const SHAPE * > &aSubshapes) const |
Static Public Attributes | |
static const int | MIN_PRECISION_IU = 4 |
This is the minimum precision for all the points in a shape. More... | |
Protected Types | |
typedef VECTOR2I::extended_type | ecoord |
Protected Attributes | |
SHAPE_TYPE | m_type |
< type of our shape More... | |
Private Attributes | |
VECTOR2I | m_p0 |
Top-left corner. More... | |
int | m_w |
Width. More... | |
int | m_h |
Height. More... | |
std::list< FACET * > | facets |
Definition at line 37 of file shape_rect.h.
|
protectedinherited |
|
inline |
Create an empty (0-sized) rectangle.
Definition at line 43 of file shape_rect.h.
Referenced by Clone().
|
inline |
Create a rectangle defined by a BOX2.
Definition at line 52 of file shape_rect.h.
|
inline |
Create a rectangle defined by top-left corner (aX0, aY0), width aW and height aH.
Definition at line 62 of file shape_rect.h.
|
inline |
Create a rectangle defined by top-left corner aP0, width aW and height aH.
Definition at line 72 of file shape_rect.h.
|
inline |
Definition at line 79 of file shape_rect.h.
|
inlineoverridevirtual |
Compute a bounding box of the shape, with a margin of aClearance a collision.
aClearance | how much the bounding box is expanded wrs to the minimum enclosing rectangle for the shape. |
Implements SHAPE.
Definition at line 92 of file shape_rect.h.
References m_h, m_p0, m_w, VECTOR2< T >::x, and VECTOR2< T >::y.
|
inherited |
Definition at line 703 of file wrlfacet.cpp.
References IFSG_NODE::AddChildNode(), IFSG_INDEX::AddIndex(), IFSG_NODE::AddRefNode(), SHAPE::facets, IFSG_NODE::GetRawPtr(), S3D::GetSGNodeParent(), IFSG_FACESET::NewNode(), IFSG_SHAPE::NewNode(), IFSG_COLORS::SetColorList(), IFSG_COORDS::SetCoordsList(), IFSG_NORMALS::SetNormalList(), SGPOINT::x, SGPOINT::y, and SGPOINT::z.
Referenced by WRL2FACESET::TranslateToSG(), X3DIFACESET::TranslateToSG(), and WRL1FACESET::TranslateToSG().
|
inlinevirtualinherited |
Compute a center-of-mass of the shape.
Definition at line 232 of file shape.h.
References SHAPE::BBox(), and BOX2< Vec >::Centre().
Referenced by Collide(), and SCH_EASYEDA_PARSER::ParseSchematic().
|
inlineoverridevirtual |
Return a dynamically allocated copy of the shape.
copy | of the shape |
Reimplemented from SHAPE.
Definition at line 86 of file shape_rect.h.
References SHAPE_RECT().
|
overridevirtual |
Check if the boundary of shape (this) lies closer to the point aP than aClearance, indicating a collision.
aActual | [out] an optional pointer to an int to store the actual distance in the event of a collision. |
aLocation | [out] an option pointer to a point to store a nearby location in the event of a collision. |
Implements SHAPE.
Definition at line 30 of file shape_rect.cpp.
References SEG::A, SEG::B, BBox(), BOX2< Vec >::Contains(), VECTOR2< int >::ECOORD_MAX, m_h, m_p0, m_w, SEG::NearestPoint(), SEG::Square(), SEG::SquaredDistance(), VECTOR2< T >::x, and VECTOR2< T >::y.
|
inlineoverridevirtual |
Check if the boundary of shape (this) lies closer to the shape aShape than aClearance, indicating a collision.
aShape | shape to check collision against |
aClearance | minimum clearance |
aMTV | [out] minimum translation vector |
aActual | [out] an optional pointer to an int to store the actual distance in the event of a collision. |
aLocation | [out] an option pointer to a point to store a nearby location in the event of a collision. |
Reimplemented from SHAPE.
Definition at line 109 of file shape_rect.h.
References SHAPE::Collide().
Referenced by Collide(), EE_SELECTION_TOOL::GuessSelectionCandidates(), and SCH_JUNCTION::HitTest().
|
inlinevirtualinherited |
Check if the boundary of shape (this) lies closer to the point aP than aClearance, indicating a collision.
aActual | [out] an optional pointer to an int to store the actual distance in the event of a collision. |
aLocation | [out] an option pointer to a point to store a nearby location in the event of a collision. |
Reimplemented in SHAPE_LINE_CHAIN_BASE, SHAPE_ARC, SHAPE_LINE_CHAIN, SHAPE_POLY_SET, and SHAPE_SEGMENT.
Definition at line 181 of file shape.h.
References SHAPE::Collide().
Referenced by BOOST_AUTO_TEST_CASE(), DRC_RTREE::CheckColliding(), FOOTPRINT::CheckShortingPads(), SHAPE_COMPOUND::Collide(), Collide(), SHAPE_SEGMENT::Collide(), SHAPE_ARC::Collide(), SHAPE_POLY_SET::Collide(), SHAPE::Collide(), CN_ZONE_LAYER::Collide(), collide(), PNS::ITEM::collideSimple(), PNS::SHOVE::onCollidingVia(), PNS::HIT_VISITOR::operator()(), RN_NET::OptimizeRNEdges(), PNS::VIA::PushoutForce(), DRC_RTREE::QueryColliding(), PNS::OPTIMIZER::smartPadsSingle(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::testAgainstEdge(), DRC_TEST_PROVIDER_PHYSICAL_CLEARANCE::testItemAgainstItem(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), and DRC_TEST_PROVIDER_COPPER_CLEARANCE::testSingleLayerItemAgainstItem().
|
inline |
Return length of the diagonal of the rectangle.
Definition at line 104 of file shape_rect.h.
References VECTOR2< T >::EuclideanNorm(), m_h, and m_w.
|
virtualinherited |
Returns the minimum distance from a given point to this shape.
Always returns zero if the point is inside a closed shape and aOutlineOnly is false.
aP | is the point to test |
Reimplemented in SHAPE_COMPOUND, and SHAPE_LINE_CHAIN.
Definition at line 85 of file shape.cpp.
References SHAPE::SquaredDistance().
|
overridevirtual |
Reimplemented from SHAPE.
Definition at line 95 of file shape_rect.cpp.
References m_h, m_p0, m_w, VECTOR2< T >::x, and VECTOR2< T >::y.
|
inherited |
Return the actual minimum distance between two shapes.
distance | in IU |
Definition at line 54 of file shape.cpp.
References SHAPE_BASE::GetIndexableSubshapeCount(), and SHAPE_BASE::GetIndexableSubshapes().
|
inline |
Definition at line 151 of file shape_rect.h.
References m_h.
Referenced by KIGFX::PCB_PAINTER::draw().
|
inlinevirtualinherited |
Reimplemented in SHAPE_COMPOUND, and SHAPE_POLY_SET.
Definition at line 113 of file shape.h.
Referenced by SHAPE::GetClearance().
|
inlinevirtualinherited |
Reimplemented in SHAPE_COMPOUND, and SHAPE_POLY_SET.
Definition at line 115 of file shape.h.
Referenced by SHAPE_COMPOUND::AddShape(), SHAPE::GetClearance(), and ROUTER_PREVIEW_ITEM::ViewDraw().
|
inline |
Definition at line 127 of file shape_rect.h.
References m_p0.
Referenced by PNS::BuildHullForPrimitiveShape(), Collide(), BOARD_ADAPTER::createPadWithMargin(), KIGFX::PCB_PAINTER::draw(), ROUTER_PREVIEW_ITEM::drawShape(), and PNS::OPTIMIZER::rectBreakouts().
|
inline |
Definition at line 135 of file shape_rect.h.
Referenced by PNS::BuildHullForPrimitiveShape(), Collide(), BOARD_ADAPTER::createPadWithMargin(), KIGFX::PCB_PAINTER::draw(), ROUTER_PREVIEW_ITEM::drawShape(), and PNS::OPTIMIZER::rectBreakouts().
|
inline |
Definition at line 143 of file shape_rect.h.
References m_w.
Referenced by KIGFX::PCB_PAINTER::draw().
|
inlinevirtualinherited |
Reimplemented in SHAPE_COMPOUND, and SHAPE_POLY_SET.
Definition at line 108 of file shape.h.
Referenced by ROUTER_PREVIEW_ITEM::ViewDraw().
|
inlineinherited |
Return true if the shape is a null shape.
true | if null :-) |
Definition at line 166 of file shape.h.
References SHAPE_BASE::m_type, and SH_NULL.
|
inlineoverridevirtual |
Implements SHAPE.
Definition at line 174 of file shape_rect.h.
|
inlineoverridevirtual |
|
inherited |
Definition at line 695 of file wrlfacet.cpp.
References SHAPE::facets.
Referenced by WRL2FACESET::TranslateToSG(), X3DIFACESET::TranslateToSG(), and WRL1FACESET::TranslateToSG().
|
inline |
Definition at line 179 of file shape_rect.h.
References SHAPE_LINE_CHAIN::Append(), m_h, m_p0, m_w, SHAPE_LINE_CHAIN::SetClosed(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Collide(), PAD::MergePrimitivesAsPolygon(), and PCB_EASYEDAPRO_PARSER::ParseBoard().
|
virtualinherited |
Reimplemented in SHAPE_LINE_CHAIN, and SHAPE_POLY_SET.
|
virtualinherited |
Check if point aP lies inside a closed shape.
Always returns false if this shape is not closed.
aPt | point to check |
aUseBBoxCache | gives better performance if the bounding box caches have been generated. |
Reimplemented in SHAPE_LINE_CHAIN_BASE, and SHAPE_POLY_SET.
Definition at line 103 of file shape.cpp.
References SHAPE_POLY_SET::COutline(), ERROR_INSIDE, SHAPE_POLY_SET::OutlineCount(), SHAPE_LINE_CHAIN_BASE::PointInside(), and SHAPE::TransformToPolygon().
|
inlineoverridevirtual |
This function has limited utility for SHAPE_RECT as non-cartesian rotations will distort the rectangle.
If you might need to handle non-90° rotations then the SHAPE_RECT should first be converted to a SHAPE_SIMPLE which can then be free-rotated.
Implements SHAPE.
Definition at line 166 of file shape_rect.h.
|
virtualinherited |
Reimplemented in SHAPE_LINE_CHAIN_BASE, and SHAPE_POLY_SET.
Definition at line 91 of file shape.cpp.
References SHAPE_POLY_SET::COutline(), VECTOR2< int >::ECOORD_MAX, ERROR_INSIDE, SHAPE_POLY_SET::OutlineCount(), SHAPE_LINE_CHAIN_BASE::SquaredDistance(), and SHAPE::TransformToPolygon().
Referenced by SHAPE::Distance().
|
overridevirtual |
Fills a SHAPE_POLY_SET with a polygon representation of this shape.
aBuffer | [out] will be filled with the polygonal representation of this shape. |
aError | controls the maximum allowed deviation when converting rounded shapes to segments |
aErrorLoc | controls where the error is placed when approximating rounded shapes |
Implements SHAPE.
Definition at line 113 of file shape_rect.cpp.
References SHAPE_LINE_CHAIN::Append(), m_h, m_p0, m_w, SHAPE_POLY_SET::NewOutline(), SHAPE_POLY_SET::Outline(), SHAPE_LINE_CHAIN::SetClosed(), VECTOR2< T >::x, and VECTOR2< T >::y.
|
inlineinherited |
Return the type of the shape.
the | type |
Definition at line 98 of file shape.h.
References SHAPE_BASE::m_type.
Referenced by PNS::DP_GATEWAYS::BuildFromPrimitivePair(), PNS::BuildHullForPrimitiveShape(), PNS_LOG_VIEWER_FRAME::buildListTree(), SHAPE_POLY_SET::Collide(), Collide(), collideShapes(), collideSingleShapes(), PNS::OPTIMIZER::computeBreakouts(), ROUTER_PREVIEW_ITEM::drawShape(), PNS_LOG_VIEWER_FRAME::drawSimpleShape(), PNS::HOLE::Hull(), PNS::SOLID::Hull(), PNS::HOLE::Radius(), PNS::HOLE::SetCenter(), PNS::HOLE::SetRadius(), STROKE_PARAMS::Stroke(), and SHAPE_FILE_IO::Write().
|
inlineinherited |
Definition at line 103 of file shape.h.
References SHAPE_BASE::m_type, and SHAPE_TYPE_asString().
Referenced by Collide().
|
privateinherited |
Definition at line 143 of file wrlfacet.h.
Referenced by SHAPE::CalcShape(), and SHAPE::NewFacet().
|
private |
Height.
Definition at line 199 of file shape_rect.h.
Referenced by BBox(), Collide(), Diagonal(), Format(), GetHeight(), GetSize(), Outline(), and TransformToPolygon().
|
private |
Top-left corner.
Definition at line 197 of file shape_rect.h.
Referenced by BBox(), Collide(), Format(), GetPosition(), Move(), Outline(), and TransformToPolygon().
|
protectedinherited |
< type of our shape
Definition at line 119 of file shape.h.
Referenced by SHAPE::Format(), SHAPE::IsNull(), SHAPE_BASE::Type(), and SHAPE_BASE::TypeName().
|
private |
Width.
Definition at line 198 of file shape_rect.h.
Referenced by BBox(), Collide(), Diagonal(), Format(), GetSize(), GetWidth(), Outline(), and TransformToPolygon().
|
staticinherited |
This is the minimum precision for all the points in a shape.
Definition at line 131 of file shape.h.
Referenced by BOOST_AUTO_TEST_CASE(), DIRECTION_45::BuildInitialTrace(), CompareLength(), CIRCLE::Contains(), EDIT_TOOL::FilletTracks(), CIRCLE::IntersectLine(), and LINE_FILLET_ROUTINE::ProcessLinePair().