91 for(
int ii = 0; ii < 4; ++ii )
135 BOOST_FAIL( wxString::Format(
136 "Unhandled type: %d "
137 "(if you created a new type you need to handle it in this switch statement)",
167 auto item = std::unique_ptr<BOARD_ITEM>( Instantiate( type ) );
169 if( item ==
nullptr )
172 BOOST_TEST_CONTEXT(
"Class: " << item->GetClass() )
174 IterateOverPositionsAndReferences<BOARD_ITEM>(
180 PCB_DIMENSION_BASE* originalDimension =
181 dynamic_cast<PCB_DIMENSION_BASE*>( aOriginalItem );
183 if( originalDimension != nullptr )
184 originalDimension->Update();
186 auto item = std::unique_ptr<BOARD_ITEM>( aOriginalItem->Duplicate() );
187 VECTOR2I originalPos = item->GetPosition();
193 BOOST_CHECK_EQUAL( item->GetPosition(), originalPos + aRef );
196 CompareItems( item.get(), aOriginalItem );
209 auto item = std::unique_ptr<BOARD_ITEM>( Instantiate( type ) );
211 if( item ==
nullptr )
214 BOOST_TEST_CONTEXT(
"Class: " << item->GetClass() )
218 IterateOverPositionsAndReferences<BOARD_ITEM>(
224 PCB_DIMENSION_BASE* originalDimension =
225 dynamic_cast<PCB_DIMENSION_BASE*>( aOriginalItem );
227 if( originalDimension != nullptr )
228 originalDimension->Update();
230 auto item = std::unique_ptr<BOARD_ITEM>( aOriginalItem->Duplicate() );
234 item->Rotate( aRef, EDA_ANGLE( 90.0, DEGREES_T ) );
235 item->Rotate( aRef, EDA_ANGLE( 90.0, DEGREES_T ) );
236 item->Rotate( aRef, EDA_ANGLE( 90.0, DEGREES_T ) );
237 item->Rotate( aRef, EDA_ANGLE( 90.0, DEGREES_T ) );
239 CompareItems( item.get(), aOriginalItem );
252 auto item = std::unique_ptr<BOARD_ITEM>( Instantiate( type ) );
254 if( item ==
nullptr )
257 BOOST_TEST_CONTEXT(
"Class: " << item->GetClass() )
259 IterateOverPositionsAndReferences<BOARD_ITEM>(
265 PCB_DIMENSION_BASE* originalDimension =
266 dynamic_cast<PCB_DIMENSION_BASE*>( aOriginalItem );
268 if( originalDimension != nullptr )
269 originalDimension->Update();
271 auto item = std::unique_ptr<BOARD_ITEM>( aOriginalItem->Duplicate() );
275 item->Flip( aRef, FLIP_DIRECTION::LEFT_RIGHT );
276 item->Flip( aRef, FLIP_DIRECTION::LEFT_RIGHT );
278 CompareItems( item.get(), aOriginalItem );
291 auto item = std::unique_ptr<BOARD_ITEM>( Instantiate( type ) );
293 if( item ==
nullptr )
296 BOOST_TEST_CONTEXT(
"Class: " << item->GetClass() )
298 IterateOverPositionsAndReferences<BOARD_ITEM>(
304 PCB_DIMENSION_BASE* originalDimension =
305 dynamic_cast<PCB_DIMENSION_BASE*>( aOriginalItem );
307 if( originalDimension != nullptr )
308 originalDimension->Update();
310 auto item = std::unique_ptr<BOARD_ITEM>( aOriginalItem->Duplicate() );
314 item->Flip( aRef, FLIP_DIRECTION::TOP_BOTTOM );
315 item->Flip( aRef, FLIP_DIRECTION::TOP_BOTTOM );
317 CompareItems( item.get(), aOriginalItem );
constexpr EDA_IU_SCALE pcbIUScale
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
void SetParentGroup(PCB_GROUP *aGroup)
Information pertinent to a Pcbnew printed circuit board.
constexpr coord_type GetLeft() const
constexpr coord_type GetRight() const
constexpr coord_type GetTop() const
constexpr coord_type GetBottom() const
virtual VECTOR2I GetPosition() const
virtual const BOX2I GetBoundingBox() const
Return the orthogonal bounding box of this object for display purposes.
For better understanding of the points that make a dimension:
Mark the center of a circle or arc with a cross shape.
A leader is a dimension-like object pointing to a specific point.
An orthogonal dimension is like an aligned dimension, but the extension lines are locked to the X or ...
A radial dimension indicates either the radius or diameter of an arc or circle.
A set of BOARD_ITEMs (i.e., without duplicates).
Object to handle a bitmap image that can be inserted in a PCB.
void InsertCell(int aIdx, PCB_TABLECELL *aCell)
void SetColCount(int aCount)
BOARD_ITEM * Instantiate(KICAD_T aType)
static void CompareItems(BOARD_ITEM *aItem, BOARD_ITEM *aOriginalItem)
TEST_BOARD_ITEM_FIXTURE()
~TEST_BOARD_ITEM_FIXTURE()
std::shared_ptr< DRC_ITEM > m_drcItem
Handle a list of polygons defining a copper zone.
bool AppendCorner(VECTOR2I aPosition, int aHoleIdx, bool aAllowDuplication=false)
Add a new corner to the zone outline (to the main outline or a hole)
@ DRCE_MALFORMED_COURTYARD
Class to handle a set of BOARD_ITEMs.
constexpr int mmToIU(double mm) const
BOOST_AUTO_TEST_CASE(Move)
BOOST_AUTO_TEST_SUITE_END()
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
@ PCB_SHAPE_T
class PCB_SHAPE, a segment not on copper layers
@ PCB_DIM_ORTHOGONAL_T
class PCB_DIM_ORTHOGONAL, a linear dimension constrained to x/y
@ PCB_DIM_LEADER_T
class PCB_DIM_LEADER, a leader dimension (graphic item)
@ PCB_GENERATOR_T
class PCB_GENERATOR, generator on a layer
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
@ PCB_DIM_CENTER_T
class PCB_DIM_CENTER, a center point marking (graphic item)
@ PCB_GROUP_T
class PCB_GROUP, a set of BOARD_ITEMs
@ PCB_TEXTBOX_T
class PCB_TEXTBOX, wrapped text on a layer
@ PCB_ZONE_T
class ZONE, a copper pour area
@ PCB_TEXT_T
class PCB_TEXT, text on a layer
@ PCB_REFERENCE_IMAGE_T
class PCB_REFERENCE_IMAGE, bitmap on a layer
@ PCB_ITEM_LIST_T
class BOARD_ITEM_LIST, a list of board items
@ PCB_FIELD_T
class PCB_FIELD, text associated with a footprint property
@ PCB_MARKER_T
class PCB_MARKER, a marker used to show something
@ PCB_TARGET_T
class PCB_TARGET, a target (graphic item)
@ PCB_TABLECELL_T
class PCB_TABLECELL, PCB_TEXTBOX for use in tables
@ PCB_FOOTPRINT_T
class FOOTPRINT, a footprint
@ PCB_DIM_ALIGNED_T
class PCB_DIM_ALIGNED, a linear dimension (graphic item)
@ PCB_PAD_T
class PAD, a pad in a footprint
@ PCB_ARC_T
class PCB_ARC, an arc track segment on a copper layer
@ PCB_TABLE_T
class PCB_TABLE, table of PCB_TABLECELLs
@ PCB_NETINFO_T
class NETINFO_ITEM, a description of a net
@ PCB_TRACE_T
class PCB_TRACK, a track segment (segment on a copper layer)
@ PCB_DIM_RADIAL_T
class PCB_DIM_RADIAL, a radius or diameter dimension
constexpr bool IsPcbnewType(const KICAD_T aType)
constexpr bool IsInstantiableType(const KICAD_T aType)
VECTOR2< int32_t > VECTOR2I