KiCad PCB EDA Suite
EDGE_MODULE Class Reference

#include <class_edge_mod.h>

Inheritance diagram for EDGE_MODULE:
DRAWSEGMENT BOARD_ITEM EDA_ITEM KIGFX::VIEW_ITEM

Public Member Functions

 EDGE_MODULE (MODULE *parent, STROKE_T aShape=S_SEGMENT)
 
 ~EDGE_MODULE ()
 
void Move (const wxPoint &aMoveVector) override
 Move an edge of the footprint. More...
 
void Mirror (const wxPoint aCentre, bool aMirrorAroundXAxis)
 Mirror an edge of the footprint. More...
 
void Rotate (const wxPoint &aRotCentre, double aAngle) override
 Rotate an edge of the footprint. More...
 
void Flip (const wxPoint &aCentre, bool aFlipLeftRight) override
 Flip entity relative to aCentre. More...
 
bool IsParentFlipped () const
 
void SetStart0 (const wxPoint &aPoint)
 
const wxPoint & GetStart0 () const
 
void SetEnd0 (const wxPoint &aPoint)
 
const wxPoint & GetEnd0 () const
 
void SetBezier0_C1 (const wxPoint &aPoint)
 
const wxPoint & GetBezier0_C1 () const
 
void SetBezier0_C2 (const wxPoint &aPoint)
 
const wxPoint & GetBezier0_C2 () const
 
void SetLocalCoord ()
 Set relative coordinates from draw coordinates. More...
 
void SetDrawCoord ()
 Set draw coordinates (absolute values ) from relative coordinates. More...
 
void Print (PCB_BASE_FRAME *aFrame, wxDC *DC, const wxPoint &offset=ZeroOffset) override
 Function Print BOARD_ITEMs have their own color information. More...
 
void GetMsgPanelInfo (EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM > &aList) override
 Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for display purposes. More...
 
wxString GetClass () const override
 Function GetClass returns the class name. More...
 
wxString GetSelectMenuText (EDA_UNITS_T aUnits) const override
 Function GetSelectMenuText returns the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position. More...
 
BITMAP_DEF GetMenuImage () const override
 Function GetMenuImage returns a pointer to an image to be used in menus. More...
 
EDA_ITEMClone () const override
 Function Clone creates a duplicate of this item with linked list members set to NULL. More...
 
virtual unsigned int ViewGetLOD (int aLayer, KIGFX::VIEW *aView) const override
 Function ViewGetLOD() Returns the level of detail (LOD) of the item. More...
 
bool IsPolygonFilled () const
 Polygonal shape is not always filled. More...
 
void SetWidth (int aWidth)
 
int GetWidth () const
 
void SetAngle (double aAngle)
 Function SetAngle sets the angle for arcs, and normalizes it within the range 0 - 360 degrees. More...
 
double GetAngle () const
 
void SetType (int aType)
 
int GetType () const
 
void SetShape (STROKE_T aShape)
 
STROKE_T GetShape () const
 
void SetBezControl1 (const wxPoint &aPoint)
 
const wxPoint & GetBezControl1 () const
 
void SetBezControl2 (const wxPoint &aPoint)
 
const wxPoint & GetBezControl2 () const
 
void SetPosition (const wxPoint &aPos) override
 
const wxPoint GetPosition () const override
 
const wxPoint & GetStart () const
 Function GetStart returns the starting point of the graphic. More...
 
void SetStart (const wxPoint &aStart)
 
void SetStartY (int y)
 
void SetStartX (int x)
 
const wxPoint & GetEnd () const
 Function GetEnd returns the ending point of the graphic. More...
 
void SetEnd (const wxPoint &aEnd)
 
void SetEndY (int y)
 
void SetEndX (int x)
 
const wxPoint GetCenter () const override
 Function GetCenter() More...
 
const wxPoint & GetArcStart () const
 
const wxPoint GetArcEnd () const
 
const wxPoint GetArcMid () const
 
double GetArcAngleStart () const
 function GetArcAngleStart() More...
 
int GetRadius () const
 Function GetRadius returns the radius of this item Has meaning only for arc and circle. More...
 
void SetArcStart (const wxPoint &aArcStartPoint)
 Initialize the start arc point. More...
 
void SetCenter (const wxPoint &aCenterPoint)
 For arcs and circles: More...
 
MODULEGetParentModule () const
 Function GetParentModule returns a pointer to the parent module, or NULL if DRAWSEGMENT does not belong to a module. More...
 
const std::vector< wxPoint > & GetBezierPoints () const
 
const std::vector< wxPoint > BuildPolyPointsList () const
 Build and return the list of corners in a std::vector<wxPoint> It must be used only to convert the SHAPE_POLY_SET internal corner buffer to a list of wxPoints, and nothing else, because it duplicates the buffer, that is inefficient to know for instance the corner count. More...
 
int GetPointCount () const
 
SHAPE_POLY_SETGetPolyShape ()
 
const SHAPE_POLY_SETGetPolyShape () const
 
bool IsPolyShapeValid () const
 
void SetPolyShape (const SHAPE_POLY_SET &aShape)
 
void SetBezierPoints (const std::vector< wxPoint > &aPoints)
 
void RebuildBezierToSegmentsPointsList (int aMinSegLen)
 Rebuild the m_BezierPoints vertex list that approximate the Bezier curve by a list of segments Has meaning only for S_CURVE DRAW_SEGMENT shape. More...
 
void SetPolyPoints (const std::vector< wxPoint > &aPoints)
 
const EDA_RECT GetBoundingBox () const override
 Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes. More...
 
bool HitTest (const wxPoint &aPosition, int aAccuracy=0) const override
 Function HitTest tests if aPosition is contained within or on the bounding box of an item. More...
 
bool HitTest (const EDA_RECT &aRect, bool aContained, int aAccuracy=0) const override
 Function HitTest tests if aRect intersects or is contained within the bounding box of an item. More...
 
double GetLength () const
 Function GetLength returns the length of the track using the hypotenuse calculation. More...
 
void Move (const VECTOR2I &aMoveVector)
 
void Rotate (const VECTOR2I &aRotCentre, double aAngle)
 
void Flip (const VECTOR2I &aCentre, bool aFlipLeftRight)
 
void TransformShapeWithClearanceToPolygon (SHAPE_POLY_SET &aCornerBuffer, int aClearanceValue, int aError=ARC_HIGH_DEF, bool ignoreLineWidth=false) const override
 Function TransformShapeWithClearanceToPolygon Convert the draw segment to a closed polygon Used in filling zones calculations Circles and arcs are approximated by segments. More...
 
virtual const BOX2I ViewBBox () const override
 Function ViewBBox() returns the bounding box of the item covering all its layers. More...
 
virtual void SwapData (BOARD_ITEM *aImage) override
 Swap data between aItem and aImage. More...
 
virtual bool IsConnected () const
 Function IsConnected() Returns information if the object is derived from BOARD_CONNECTED_ITEM. More...
 
virtual bool IsOnCopperLayer () const
 
BOARD_ITEM_CONTAINERGetParent () const
 
virtual PCB_LAYER_ID GetLayer () const
 Function GetLayer returns the primary layer this item is on. More...
 
virtual LSET GetLayerSet () const
 Function GetLayerSet returns a "layer mask", which is a bitmap of all layers on which the TRACK segment or VIA physically resides. More...
 
virtual void SetLayer (PCB_LAYER_ID aLayer)
 Function SetLayer sets the layer this item is on. More...
 
virtual bool IsOnLayer (PCB_LAYER_ID aLayer) const
 Function IsOnLayer tests to see if this object is on the given layer. More...
 
bool IsTrack () const
 Function IsTrack tests to see if this object is a track or via (or microvia). More...
 
virtual bool IsLocked () const
 Function IsLocked. More...
 
virtual void SetLocked (bool aLocked)
 Function SetLocked modifies 'lock' status for of the item. More...
 
virtual void UnLink ()
 Function UnLink detaches this object from its owner. More...
 
void DeleteStructure ()
 Function DeleteStructure deletes this object after UnLink()ing it from its owner if it has one. More...
 
virtual BOARDGetBoard () const
 Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none. More...
 
wxString GetLayerName () const
 Function GetLayerName returns the name of the PCB layer on which the item resides. More...
 
virtual void ViewGetLayers (int aLayers[], int &aCount) const override
 Function ViewGetLayers() Returns the all the layers within the VIEW the object is painted on. More...
 
KICAD_T Type () const
 Function Type() More...
 
void SetTimeStamp (timestamp_t aNewTimeStamp)
 
timestamp_t GetTimeStamp () const
 
EDA_ITEMNext () const
 
EDA_ITEMBack () const
 
DHEADGetList () const
 
void SetNext (EDA_ITEM *aNext)
 
void SetBack (EDA_ITEM *aBack)
 
void SetParent (EDA_ITEM *aParent)
 
void SetList (DHEAD *aList)
 
bool IsNew () const
 
bool IsModified () const
 
bool IsMoving () const
 
bool IsDragging () const
 
bool IsWireImage () const
 
bool IsSelected () const
 
bool IsResized () const
 
bool IsHighlighted () const
 
bool IsBrightened () const
 
void SetWireImage ()
 
void SetSelected ()
 
void SetHighlighted ()
 
void SetBrightened ()
 
void ClearSelected ()
 
void ClearHighlighted ()
 
void ClearBrightened ()
 
void SetModified ()
 
int GetState (int type) const
 
void SetState (int type, int state)
 
STATUS_FLAGS GetStatus () const
 
void SetStatus (STATUS_FLAGS aStatus)
 
void SetFlags (STATUS_FLAGS aMask)
 
void ClearFlags (STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
 
STATUS_FLAGS GetFlags () const
 
bool HasFlag (STATUS_FLAGS aFlag)
 
STATUS_FLAGS GetEditFlags () const
 
void ClearTempFlags ()
 
void ClearEditFlags ()
 
virtual bool IsType (const KICAD_T aScanTypes[])
 Function IsType Checks whether the item is one of the listed types. More...
 
void SetForceVisible (bool aEnable)
 Function SetForceVisible is used to set and cleag force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible. More...
 
virtual SEARCH_RESULT Visit (INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 Function Visit may be re-implemented for each derived class in order to handle all the types given by its member data. More...
 
virtual bool Matches (wxFindReplaceData &aSearchData, void *aAuxData)
 Function Matches compares the item against the search criteria in aSearchData. More...
 
virtual bool Replace (wxFindReplaceData &aSearchData, void *aAuxData=NULL)
 Function Replace performs a text replace using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual bool IsReplaceable () const
 Function IsReplaceable. More...
 
bool operator< (const EDA_ITEM &aItem) const
 Test if another item is less than this object. More...
 
virtual void ViewDraw (int aLayer, VIEW *aView) const
 Function ViewDraw() Draws the parts of the object belonging to layer aLayer. More...
 
VIEW_ITEM_DATA * viewPrivData () const
 
void ClearViewPrivData ()
 

Static Public Member Functions

static bool ClassOf (const EDA_ITEM *aItem)
 
static wxString ShowShape (STROKE_T aShape)
 Function ShowShape converts the enum STROKE_T integer value to a wxString. More...
 
static SEARCH_RESULT IterateForward (EDA_ITEM *listStart, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 Function IterateForward walks through the object tree calling the inspector() on each object type requested in scanTypes. More...
 
template<class T >
static SEARCH_RESULT IterateForward (std::deque< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T ) More...
 
template<class T >
static SEARCH_RESULT IterateForward (std::vector< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T ) More...
 
static bool Replace (wxFindReplaceData &aSearchData, wxString &aText)
 Helper function used in search and replace dialog Function Replace performs a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
static bool Sort (const EDA_ITEM *aLeft, const EDA_ITEM *aRight)
 Function Sort is a helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers. More...
 

Public Attributes

wxPoint m_Start0
 Start point or center, relative to module origin, orient 0. More...
 
wxPoint m_End0
 End point, relative to module origin, orient 0. More...
 
wxPoint m_Bezier0_C1
 Bezier Control Point 1, relative to module origin, orient 0. More...
 
wxPoint m_Bezier0_C2
 Bezier Control Point 2, relative to module origin, orient 0. More...
 

Static Public Attributes

static wxPoint ZeroOffset
 A value of wxPoint(0,0) which can be passed to the Draw() functions. More...
 

Protected Member Functions

void computeArcBBox (EDA_RECT &aBBox) const
 
bool Matches (const wxString &aText, wxFindReplaceData &aSearchData)
 Function Matches compares aText against search criteria in aSearchData. More...
 

Static Protected Member Functions

static int getNextNumberInSequence (const std::set< int > &aSeq, bool aFillSequenceGaps)
 

Protected Attributes

int m_Width
 thickness of lines ... More...
 
wxPoint m_Start
 Line start point or Circle and Arc center. More...
 
wxPoint m_End
 Line end point or circle and arc start point. More...
 
STROKE_T m_Shape
 Shape: line, Circle, Arc. More...
 
int m_Type
 Used in complex associations ( Dimensions.. ) More...
 
double m_Angle
 Used only for Arcs: Arc angle in 1/10 deg. More...
 
wxPoint m_BezierC1
 Bezier Control Point 1. More...
 
wxPoint m_BezierC2
 Bezier Control Point 2. More...
 
std::vector< wxPoint > m_BezierPoints
 
SHAPE_POLY_SET m_Poly
 Stores the S_POLYGON shape. More...
 
PCB_LAYER_ID m_Layer
 
EDA_ITEMPnext
 next in linked list More...
 
EDA_ITEMPback
 previous in linked list More...
 
DHEADm_List
 which DLIST I am on. More...
 
EDA_ITEMm_Parent
 Linked list: Link (parent struct) More...
 
timestamp_t m_TimeStamp
 Time stamp used for logical links. More...
 
bool m_forceVisible
 Set to true to override the visibility setting of the item. More...
 
STATUS_FLAGS m_Flags
 Flag bits for editing and other uses. More...
 

Detailed Description

Definition at line 44 of file class_edge_mod.h.

Constructor & Destructor Documentation

◆ EDGE_MODULE()

EDGE_MODULE::EDGE_MODULE ( MODULE parent,
STROKE_T  aShape = S_SEGMENT 
)

Definition at line 55 of file class_edge_mod.cpp.

55  :
57 {
58  m_Shape = aShape;
59  m_Angle = 0;
60  m_Layer = F_SilkS;
61 }
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:94
PCB_LAYER_ID m_Layer
STROKE_T m_Shape
Shape: line, Circle, Arc.
DRAWSEGMENT(BOARD_ITEM *aParent=NULL, KICAD_T idtype=PCB_LINE_T)

References F_SilkS, DRAWSEGMENT::m_Angle, BOARD_ITEM::m_Layer, and DRAWSEGMENT::m_Shape.

Referenced by Clone().

◆ ~EDGE_MODULE()

EDGE_MODULE::~EDGE_MODULE ( )

Definition at line 64 of file class_edge_mod.cpp.

65 {
66 }

Member Function Documentation

◆ Back()

EDA_ITEM* EDA_ITEM::Back ( ) const
inlineinherited

Definition at line 219 of file base_struct.h.

219 { return Pback; }
EDA_ITEM * Pback
previous in linked list
Definition: base_struct.h:177

References EDA_ITEM::Pback.

Referenced by DHEAD::insert(), and DHEAD::remove().

◆ BuildPolyPointsList()

const std::vector< wxPoint > DRAWSEGMENT::BuildPolyPointsList ( ) const
inherited

Build and return the list of corners in a std::vector<wxPoint> It must be used only to convert the SHAPE_POLY_SET internal corner buffer to a list of wxPoints, and nothing else, because it duplicates the buffer, that is inefficient to know for instance the corner count.

Definition at line 954 of file class_drawsegment.cpp.

955 {
956  std::vector<wxPoint> rv;
957 
958  if( m_Poly.OutlineCount() )
959  {
960  if( m_Poly.COutline( 0 ).PointCount() )
961  {
962  for ( auto iter = m_Poly.CIterate(); iter; iter++ )
963  {
964  rv.push_back( wxPoint( iter->x, iter->y ) );
965  }
966  }
967  }
968 
969  return rv;
970 }
int OutlineCount() const
Returns the number of outlines in the set
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
int PointCount() const
Function PointCount()
CONST_ITERATOR CIterate(int aFirst, int aLast, bool aIterateHoles=false) const
const SHAPE_LINE_CHAIN & COutline(int aIndex) const

References SHAPE_POLY_SET::CIterate(), SHAPE_POLY_SET::COutline(), DRAWSEGMENT::m_Poly, SHAPE_POLY_SET::OutlineCount(), and SHAPE_LINE_CHAIN::PointCount().

Referenced by GRID_HELPER::computeAnchors(), DIALOG_PAD_PROPERTIES::OnPaintShowPanel(), PCB_PARSER::parseD_PAD(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), PNS_KICAD_IFACE::syncGraphicalItem(), DRAWSEGMENT::TransformShapeWithClearanceToPolygon(), and POINT_EDITOR::updatePoints().

◆ ClassOf()

static bool EDGE_MODULE::ClassOf ( const EDA_ITEM aItem)
inlinestatic

Definition at line 54 of file class_edge_mod.h.

55  {
56  return aItem && PCB_MODULE_EDGE_T == aItem->Type();
57  }
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:94
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210

References PCB_MODULE_EDGE_T, and EDA_ITEM::Type().

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

Definition at line 245 of file base_struct.h.

245 { ClearFlags( BRIGHTENED ); }
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:143
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:266

References BRIGHTENED, and EDA_ITEM::ClearFlags().

Referenced by GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PL_SELECTION_TOOL::unhighlight(), EE_SELECTION_TOOL::unhighlight(), SELECTION_TOOL::unhighlight(), and SCH_EDITOR_CONTROL::UpdateNetHighlighting().

◆ ClearEditFlags()

◆ ClearFlags()

void EDA_ITEM::ClearFlags ( STATUS_FLAGS  aMask = EDA_ITEM_ALL_FLAGS)
inlineinherited

Definition at line 266 of file base_struct.h.

266 { m_Flags &= ~aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:187

References EDA_ITEM::m_Flags.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PNS_KICAD_IFACE::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_COMPONENT::ClearAllHighlightFlags(), SCH_SCREEN::ClearAnnotation(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearEditFlags(), EDA_ITEM::ClearHighlighted(), clearModuleItemFlags(), EDA_ITEM::ClearSelected(), EDA_ITEM::ClearTempFlags(), SCH_EDIT_FRAME::ConvertPart(), LIB_EDIT_TOOL::Copy(), MWAVE::CreateMicrowaveInductor(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), KIGFX::SCH_PAINTER::draw(), LIB_EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), PCB_EDIT_FRAME::Exchange_Module(), LIB_EDIT_FRAME::GetComponentFromRedoList(), LIB_EDIT_FRAME::GetComponentFromUndoList(), KIGFX::SCH_VIEW::HighlightItem(), MODULE_EDITOR_TOOLS::ImportFootprint(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), FOOTPRINT_EDIT_FRAME::LoadModuleFromLibrary(), EDIT_POINTS_FACTORY::Make(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_BASE_FRAME::PlaceModule(), LIB_PIN_TOOL::PlacePin(), DRAWING_TOOL::PlaceText(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), BOARD_COMMIT::Push(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_PIN_TOOL::RepeatPin(), LIB_EDIT_FRAME::RollbackPartFromUndo(), SCH_EDIT_FRAME::SaveCopyForRepeatItem(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_LEGACY_PLUGIN_CACHE::savePin(), EE_SELECTION_TOOL::SelectPoint(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ ClearHighlighted()

void EDA_ITEM::ClearHighlighted ( )
inlineinherited

Definition at line 244 of file base_struct.h.

244 { ClearFlags( HIGHLIGHTED ); }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:142
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:266

References EDA_ITEM::ClearFlags(), and HIGHLIGHTED.

◆ ClearSelected()

void EDA_ITEM::ClearSelected ( )
inlineinherited

◆ ClearTempFlags()

void EDA_ITEM::ClearTempFlags ( )
inlineinherited

Definition at line 278 of file base_struct.h.

279  {
281  }
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: base_struct.h:117
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: base_struct.h:131
#define CANDIDATE
flag indicating that the structure is connected
Definition: base_struct.h:130
#define ENDPOINT
ends. (Used to support dragging.)
Definition: base_struct.h:126
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:266
#define DO_NOT_DRAW
Used to disable draw function.
Definition: base_struct.h:132
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: base_struct.h:125

References CANDIDATE, EDA_ITEM::ClearFlags(), DO_NOT_DRAW, ENDPOINT, IS_LINKED, SKIP_STRUCT, and STARTPOINT.

Referenced by SCH_EDIT_FRAME::PutDataInPreviousState().

◆ ClearViewPrivData()

void KIGFX::VIEW_ITEM::ClearViewPrivData ( )
inlineinherited

Definition at line 153 of file view_item.h.

154  {
155  m_viewPrivData = NULL;
156  }
VIEW_ITEM_DATA * m_viewPrivData
Definition: view_item.h:161

References KIGFX::VIEW_ITEM::m_viewPrivData.

Referenced by KIGFX::VIEW::OnDestroy().

◆ Clone()

EDA_ITEM * EDGE_MODULE::Clone ( ) const
overridevirtual

Function Clone creates a duplicate of this item with linked list members set to NULL.

The default version will return NULL in release builds and likely crash the program. In debug builds, a warning message indicating the derived class has not implemented cloning. This really should be a pure virtual function. Due to the fact that there are so many objects derived from EDA_ITEM, the decision was made to return NULL until all the objects derived from EDA_ITEM implement cloning. Once that happens, this function should be made pure.

Returns
A clone of the item.

Reimplemented from DRAWSEGMENT.

Definition at line 278 of file class_edge_mod.cpp.

279 {
280  return new EDGE_MODULE( *this );
281 }
EDGE_MODULE(MODULE *parent, STROKE_T aShape=S_SEGMENT)

References EDGE_MODULE().

◆ computeArcBBox()

void DRAWSEGMENT::computeArcBBox ( EDA_RECT aBBox) const
protectedinherited

Definition at line 867 of file class_drawsegment.cpp.

868 {
869  // Do not include the center, which is not necessarily
870  // inside the BB of a arc with a small angle
871  aBBox.SetOrigin( m_End );
872 
873  wxPoint end = m_End;
874  RotatePoint( &end, m_Start, -m_Angle );
875  aBBox.Merge( end );
876 
877  // Determine the starting quarter
878  // 0 right-bottom
879  // 1 left-bottom
880  // 2 left-top
881  // 3 right-top
882  unsigned int quarter = 0; // assume right-bottom
883 
884  if( m_End.x < m_Start.x )
885  {
886  if( m_End.y <= m_Start.y )
887  quarter = 2;
888  else // ( m_End.y > m_Start.y )
889  quarter = 1;
890  }
891  else if( m_End.x >= m_Start.x )
892  {
893  if( m_End.y < m_Start.y )
894  quarter = 3;
895  else if( m_End.x == m_Start.x )
896  quarter = 1;
897  }
898 
899  int radius = GetRadius();
900  int angle = (int) GetArcAngleStart() % 900 + m_Angle;
901  bool directionCW = ( m_Angle > 0 ); // Is the direction of arc clockwise?
902 
903  // Make the angle positive, so we go clockwise and merge points belonging to the arc
904  if( !directionCW )
905  {
906  angle = 900 - angle;
907  quarter = ( quarter + 3 ) % 4; // -1 modulo arithmetic
908  }
909 
910  while( angle > 900 )
911  {
912  switch( quarter )
913  {
914  case 0:
915  aBBox.Merge( wxPoint( m_Start.x, m_Start.y + radius ) ); // down
916  break;
917 
918  case 1:
919  aBBox.Merge( wxPoint( m_Start.x - radius, m_Start.y ) ); // left
920  break;
921 
922  case 2:
923  aBBox.Merge( wxPoint( m_Start.x, m_Start.y - radius ) ); // up
924  break;
925 
926  case 3:
927  aBBox.Merge( wxPoint( m_Start.x + radius, m_Start.y ) ); // right
928  break;
929  }
930 
931  if( directionCW )
932  ++quarter;
933  else
934  quarter += 3; // -1 modulo arithmetic
935 
936  quarter %= 4;
937  angle -= 900;
938  }
939 }
void Merge(const EDA_RECT &aRect)
Function Merge modifies the position and size of the rectangle in order to contain aRect.
double GetArcAngleStart() const
function GetArcAngleStart()
void SetOrigin(const wxPoint &pos)
Definition: eda_rect.h:131
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:206
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
int GetRadius() const
Function GetRadius returns the radius of this item Has meaning only for arc and circle.
static DIRECTION_45::AngleType angle(const VECTOR2I &a, const VECTOR2I &b)

References PNS::angle(), DRAWSEGMENT::GetArcAngleStart(), DRAWSEGMENT::GetRadius(), DRAWSEGMENT::m_Angle, DRAWSEGMENT::m_End, DRAWSEGMENT::m_Start, EDA_RECT::Merge(), RotatePoint(), and EDA_RECT::SetOrigin().

Referenced by DRAWSEGMENT::GetBoundingBox(), and DRAWSEGMENT::ViewBBox().

◆ DeleteStructure()

void BOARD_ITEM::DeleteStructure ( )
inherited

Function DeleteStructure deletes this object after UnLink()ing it from its owner if it has one.

Definition at line 127 of file class_board_item.cpp.

128 {
129  auto parent = GetParent();
130 
131  if( parent )
132  parent->Remove( this );
133 
134  delete this;
135 }
BOARD_ITEM_CONTAINER * GetParent() const

References BOARD_ITEM::GetParent().

Referenced by BOARD::PadDelete(), DIALOG_FOOTPRINT_FP_EDITOR::TransferDataFromWindow(), and DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataFromWindow().

◆ Flip() [1/2]

void EDGE_MODULE::Flip ( const wxPoint &  aCentre,
bool  aFlipLeftRight 
)
overridevirtual

Flip entity relative to aCentre.

The item is mirrored, and layer changed to the paired corresponding layer if it is on a paired layer This function should be called only from MODULE::Flip because there is not usual to flip an item alone, without flipping the parent footprint. (consider Mirror for a mirror transform).

Reimplemented from DRAWSEGMENT.

Definition at line 284 of file class_edge_mod.cpp.

285 {
286  wxPoint pt( 0, 0 );
287 
288  switch( GetShape() )
289  {
290  case S_ARC:
291  SetAngle( -GetAngle() );
292  //Fall through
293  default:
294  case S_SEGMENT:
295  case S_CURVE:
296  // If Start0 and Start are equal (ie: ModEdit), then flip both sets around the
297  // centre point.
298  if( m_Start == m_Start0 )
299  pt = aCentre;
300 
301  if( aFlipLeftRight )
302  {
303  MIRROR( m_Start.x, aCentre.x );
304  MIRROR( m_End.x, aCentre.x );
305  MIRROR( m_BezierC1.x, aCentre.x );
306  MIRROR( m_BezierC2.x, aCentre.x );
307  MIRROR( m_Start0.x, pt.x );
308  MIRROR( m_End0.x, pt.x );
309  MIRROR( m_Bezier0_C1.x, pt.x );
310  MIRROR( m_Bezier0_C2.x, pt.x );
311  }
312  else
313  {
314  MIRROR( m_Start.y, aCentre.y );
315  MIRROR( m_End.y, aCentre.y );
316  MIRROR( m_BezierC1.y, aCentre.y );
317  MIRROR( m_BezierC2.y, aCentre.y );
318  MIRROR( m_Start0.y, pt.y );
319  MIRROR( m_End0.y, pt.y );
320  MIRROR( m_Bezier0_C1.y, pt.y );
321  MIRROR( m_Bezier0_C2.y, pt.y );
322  }
323 
325  break;
326 
327  case S_POLYGON:
328  // polygon corners coordinates are always relative to the
329  // footprint position, orientation 0
330  for( auto iter = m_Poly.Iterate(); iter; iter++ )
331  {
332  if( aFlipLeftRight )
333  MIRROR( iter->x, 0 );
334  else
335  MIRROR( iter->y, 0 );
336  }
337  break;
338  }
339 
340  // DRAWSEGMENT items are not usually on copper layers, but
341  // it can happen in microwave apps.
342  // However, currently, only on Front or Back layers.
343  // So the copper layers count is not taken in account
344  SetLayer( FlipLayer( GetLayer() ) );
345 }
wxPoint m_Bezier0_C2
Bezier Control Point 2, relative to module origin, orient 0.
virtual void SetLayer(PCB_LAYER_ID aLayer)
Function SetLayer sets the layer this item is on.
STROKE_T GetShape() const
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
polygon (not yet used for tracks, but could be in microwave apps)
PCB_LAYER_ID FlipLayer(PCB_LAYER_ID aLayerId, int aCopperLayersCount)
Function FlippedLayerNumber.
Definition: lset.cpp:475
void RebuildBezierToSegmentsPointsList(int aMinSegLen)
Rebuild the m_BezierPoints vertex list that approximate the Bezier curve by a list of segments Has me...
usual segment : line with rounded ends
ITERATOR Iterate(int aFirst, int aLast, bool aIterateHoles=false)
Function Iterate returns an object to iterate through the points of the polygons between aFirst and a...
wxPoint m_End0
End point, relative to module origin, orient 0.
wxPoint m_BezierC1
Bezier Control Point 1.
wxPoint m_Bezier0_C1
Bezier Control Point 1, relative to module origin, orient 0.
void MIRROR(T &aPoint, const T &aMirrorRef)
Definition: macros.h:123
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
Arcs (with rounded ends)
Bezier Curve.
double GetAngle() const
wxPoint m_BezierC2
Bezier Control Point 2.
void SetAngle(double aAngle)
Function SetAngle sets the angle for arcs, and normalizes it within the range 0 - 360 degrees.
int m_Width
thickness of lines ...
wxPoint m_Start0
Start point or center, relative to module origin, orient 0.
virtual PCB_LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.

References FlipLayer(), DRAWSEGMENT::GetAngle(), BOARD_ITEM::GetLayer(), DRAWSEGMENT::GetShape(), SHAPE_POLY_SET::Iterate(), m_Bezier0_C1, m_Bezier0_C2, DRAWSEGMENT::m_BezierC1, DRAWSEGMENT::m_BezierC2, DRAWSEGMENT::m_End, m_End0, DRAWSEGMENT::m_Poly, DRAWSEGMENT::m_Start, m_Start0, DRAWSEGMENT::m_Width, MIRROR(), DRAWSEGMENT::RebuildBezierToSegmentsPointsList(), S_ARC, S_CURVE, S_POLYGON, S_SEGMENT, DRAWSEGMENT::SetAngle(), and BOARD_ITEM::SetLayer().

◆ Flip() [2/2]

void BOARD_ITEM::Flip ( const VECTOR2I aCentre,
bool  aFlipLeftRight 
)
inlineinherited

Definition at line 278 of file class_board_item.h.

279  {
280  Flip( wxPoint( aCentre.x, aCentre.y ), aFlipLeftRight );
281  }
virtual void Flip(const wxPoint &aCentre, bool aFlipLeftRight)
Function Flip Flip this object, i.e.

References BOARD_ITEM::Flip(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ GetAngle()

◆ GetArcAngleStart()

double DRAWSEGMENT::GetArcAngleStart ( ) const
inherited

function GetArcAngleStart()

Returns
the angle of the starting point of this arc, between 0 and 3600 in 0.1 deg

Definition at line 317 of file class_drawsegment.cpp.

318 {
319  // due to the Y axis orient atan2 needs - y value
320  double angleStart = ArcTangente( GetArcStart().y - GetCenter().y,
321  GetArcStart().x - GetCenter().x );
322 
323  // Normalize it to 0 ... 360 deg, to avoid discontinuity for angles near 180 deg
324  // because 180 deg and -180 are very near angles when ampping betewwen -180 ... 180 deg.
325  // and this is not easy to handle in calculations
326  NORMALIZE_ANGLE_POS( angleStart );
327 
328  return angleStart;
329 }
const wxPoint GetCenter() const override
Function GetCenter()
void NORMALIZE_ANGLE_POS(T &Angle)
Definition: trigo.h:252
double ArcTangente(int dy, int dx)
Definition: trigo.cpp:160
const wxPoint & GetArcStart() const

References ArcTangente(), DRAWSEGMENT::GetArcStart(), DRAWSEGMENT::GetCenter(), and NORMALIZE_ANGLE_POS().

Referenced by DRAWSEGMENT::computeArcBBox(), KIGFX::PCB_PAINTER::draw(), and DRAWSEGMENT::HitTest().

◆ GetArcEnd()

const wxPoint DRAWSEGMENT::GetArcEnd ( ) const
inherited

Definition at line 273 of file class_drawsegment.cpp.

274 {
275  wxPoint endPoint( m_End ); // start of arc
276 
277  switch( m_Shape )
278  {
279  case S_ARC:
280  // rotate the starting point of the arc, given by m_End, through the
281  // angle m_Angle to get the ending point of the arc.
282  // m_Start is the arc centre
283  endPoint = m_End; // m_End = start point of arc
284  RotatePoint( &endPoint, m_Start, -m_Angle );
285  break;
286 
287  default:
288  break;
289  }
290 
291  return endPoint; // after rotation, the end of the arc.
292 }
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:206
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.

References DRAWSEGMENT::m_Angle, DRAWSEGMENT::m_End, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, RotatePoint(), and S_ARC.

Referenced by GRID_HELPER::computeAnchors(), ConvertOutlineToPolygon(), findPoint(), EDIT_POINTS_FACTORY::Make(), DIALOG_PAD_PROPERTIES::OnPaintShowPanel(), POINT_EDITOR::updateItem(), and POINT_EDITOR::updatePoints().

◆ GetArcMid()

const wxPoint DRAWSEGMENT::GetArcMid ( ) const
inherited

Definition at line 295 of file class_drawsegment.cpp.

296 {
297  wxPoint endPoint( m_End );
298 
299  switch( m_Shape )
300  {
301  case S_ARC:
302  // rotate the starting point of the arc, given by m_End, through half
303  // the angle m_Angle to get the middle of the arc.
304  // m_Start is the arc centre
305  endPoint = m_End; // m_End = start point of arc
306  RotatePoint( &endPoint, m_Start, -m_Angle / 2.0 );
307  break;
308 
309  default:
310  break;
311  }
312 
313  return endPoint; // after rotation, the end of the arc.
314 }
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:206
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.

References DRAWSEGMENT::m_Angle, DRAWSEGMENT::m_End, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, RotatePoint(), and S_ARC.

Referenced by EDIT_POINTS_FACTORY::Make(), POINT_EDITOR::updateItem(), and POINT_EDITOR::updatePoints().

◆ GetArcStart()

◆ GetBezControl1()

◆ GetBezControl2()

◆ GetBezier0_C1()

const wxPoint& EDGE_MODULE::GetBezier0_C1 ( ) const
inline

Definition at line 100 of file class_edge_mod.h.

100 { return m_Bezier0_C1; }
wxPoint m_Bezier0_C1
Bezier Control Point 1, relative to module origin, orient 0.

References m_Bezier0_C1.

Referenced by PCB_IO::format().

◆ GetBezier0_C2()

const wxPoint& EDGE_MODULE::GetBezier0_C2 ( ) const
inline

Definition at line 103 of file class_edge_mod.h.

103 { return m_Bezier0_C2; }
wxPoint m_Bezier0_C2
Bezier Control Point 2, relative to module origin, orient 0.

References m_Bezier0_C2.

Referenced by PCB_IO::format().

◆ GetBezierPoints()

const std::vector<wxPoint>& DRAWSEGMENT::GetBezierPoints ( ) const
inlineinherited

Definition at line 174 of file class_drawsegment.h.

174 { return m_BezierPoints; }
std::vector< wxPoint > m_BezierPoints

References DRAWSEGMENT::m_BezierPoints.

Referenced by ConvertOutlineToPolygon(), PNS_KICAD_IFACE::syncGraphicalItem(), and DRC::testCopperDrawItem().

◆ GetBoard()

BOARD * BOARD_ITEM::GetBoard ( ) const
virtualinherited

Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.

Definition at line 64 of file class_board_item.cpp.

65 {
66  if( Type() == PCB_T )
67  return (BOARD*) this;
68 
69  BOARD_ITEM* parent = GetParent();
70 
71  if( parent )
72  return parent->GetBoard();
73 
74  return NULL;
75 }
Definition: typeinfo.h:85
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class,...
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:161
BOARD_ITEM_CONTAINER * GetParent() const
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210

References BOARD_ITEM::GetBoard(), BOARD_ITEM::GetParent(), PCB_T, and EDA_ITEM::Type().

Referenced by ZONE_CONTAINER::BuildSmoothedPoly(), DRC::checkClearancePadToPad(), DRC::checkClearanceSegmToPad(), TEXTE_PCB::Flip(), TRACK::Flip(), VIA::Flip(), ZONE_CONTAINER::Flip(), BOARD_ITEM::GetBoard(), MODULE::GetBoundingPoly(), BOARD_CONNECTED_ITEM::GetClearance(), BOARD_ITEM::GetLayerName(), PCB_DRAW_PANEL_GAL::GetMsgPanelInfo(), TRACK::GetMsgPanelInfo(), NETINFO_ITEM::GetMsgPanelInfo(), D_PAD::GetMsgPanelInfo(), TRACK::GetMsgPanelInfoBase(), VIA::GetMsgPanelInfoBase(), TRACK::GetMsgPanelInfoBase_Common(), BOARD_CONNECTED_ITEM::GetNetClass(), BOARD_CONNECTED_ITEM::GetNetnameMsg(), VIA::GetSelectMenuText(), D_PAD::GetSelectMenuText(), D_PAD::GetSolderMaskMargin(), D_PAD::GetSolderPasteMargin(), BOARD::GetTrackLength(), D_PAD::HitTest(), D_PAD::MergePrimitivesAsPolygon(), EAGLE_PLUGIN::packageWire(), TEXTE_PCB::Print(), PCB_TARGET::Print(), ZONE_CONTAINER::Print(), Print(), TRACK::Print(), TEXTE_MODULE::Print(), DIMENSION::Print(), DRAWSEGMENT::Print(), VIA::Print(), MODULE::Print(), D_PAD::Print(), ZONE_CONTAINER::PrintFilledArea(), BOARD_CONNECTED_ITEM::SetNet(), BOARD_CONNECTED_ITEM::SetNetCode(), ZONE_CONTAINER::TransformOutlinesShapeWithClearanceToPolygon(), ZONE_CONTAINER::TransformSolidAreasShapesToPolygonSet(), MODULE::ViewBBox(), VIA::ViewGetLOD(), and D_PAD::ViewGetLOD().

◆ GetBoundingBox()

const EDA_RECT DRAWSEGMENT::GetBoundingBox ( ) const
overridevirtualinherited

Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.

This box should be an enclosing perimeter for visible components of this object, and the units should be in the pcb or schematic coordinate system. It is OK to overestimate the size by a few counts.

Reimplemented from EDA_ITEM.

Definition at line 526 of file class_drawsegment.cpp.

527 {
528  EDA_RECT bbox;
529 
530  bbox.SetOrigin( m_Start );
531 
532  switch( m_Shape )
533  {
534  case S_SEGMENT:
535  bbox.SetEnd( m_End );
536  break;
537 
538  case S_CIRCLE:
539  bbox.Inflate( GetRadius() );
540  break;
541 
542  case S_ARC:
543  computeArcBBox( bbox );
544  break;
545 
546  case S_POLYGON:
547  if( m_Poly.IsEmpty() )
548  break;
549  {
550  wxPoint p_end;
551  MODULE* module = GetParentModule();
552  bool first = true;
553 
554  for( auto iter = m_Poly.CIterate(); iter; iter++ )
555  {
556  wxPoint pt ( iter->x, iter->y );
557 
558  if( module ) // Transform, if we belong to a module
559  {
560  RotatePoint( &pt, module->GetOrientation() );
561  pt += module->GetPosition();
562  }
563 
564 
565  if( first )
566  {
567  p_end = pt;
568  bbox.SetX( pt.x );
569  bbox.SetY( pt.y );
570  first = false;
571  }
572  else
573  {
574 
575  bbox.SetX( std::min( bbox.GetX(), pt.x ) );
576  bbox.SetY( std::min( bbox.GetY(), pt.y ) );
577 
578  p_end.x = std::max( p_end.x, pt.x );
579  p_end.y = std::max( p_end.y, pt.y );
580  }
581  }
582 
583  bbox.SetEnd( p_end );
584  break;
585  }
586 
587  case S_CURVE:
588 
589  bbox.Merge( m_BezierC1 );
590  bbox.Merge( m_BezierC2 );
591  bbox.Merge( m_End );
592  break;
593 
594  default:
595  break;
596  }
597 
598  bbox.Inflate( ((m_Width+1) / 2) + 1 );
599  bbox.Normalize();
600 
601  return bbox;
602 }
double GetOrientation() const
Definition: class_module.h:218
void Merge(const EDA_RECT &aRect)
Function Merge modifies the position and size of the rectangle in order to contain aRect.
int GetX() const
Definition: eda_rect.h:111
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
polygon (not yet used for tracks, but could be in microwave apps)
bool IsEmpty() const
Returns true if the set is empty (no polygons at all)
void SetOrigin(const wxPoint &pos)
Definition: eda_rect.h:131
usual segment : line with rounded ends
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:206
wxPoint m_BezierC1
Bezier Control Point 1.
wxPoint m_Start
Line start point or Circle and Arc center.
void computeArcBBox(EDA_RECT &aBBox) const
wxPoint m_End
Line end point or circle and arc start point.
void SetEnd(int x, int y)
Definition: eda_rect.h:192
Arcs (with rounded ends)
MODULE * GetParentModule() const
Function GetParentModule returns a pointer to the parent module, or NULL if DRAWSEGMENT does not belo...
void SetX(int val)
Definition: eda_rect.h:168
STROKE_T m_Shape
Shape: line, Circle, Arc.
int GetRadius() const
Function GetRadius returns the radius of this item Has meaning only for arc and circle.
Bezier Curve.
CONST_ITERATOR CIterate(int aFirst, int aLast, bool aIterateHoles=false) const
void SetY(int val)
Definition: eda_rect.h:174
void Normalize()
Function Normalize ensures that the height ant width are positive.
#define max(a, b)
Definition: auxiliary.h:86
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
wxPoint m_BezierC2
Bezier Control Point 2.
int GetY() const
Definition: eda_rect.h:112
int m_Width
thickness of lines ...
const wxPoint GetPosition() const override
Definition: class_module.h:213
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
#define min(a, b)
Definition: auxiliary.h:85

References SHAPE_POLY_SET::CIterate(), DRAWSEGMENT::computeArcBBox(), MODULE::GetOrientation(), DRAWSEGMENT::GetParentModule(), MODULE::GetPosition(), DRAWSEGMENT::GetRadius(), EDA_RECT::GetX(), EDA_RECT::GetY(), EDA_RECT::Inflate(), SHAPE_POLY_SET::IsEmpty(), DRAWSEGMENT::m_BezierC1, DRAWSEGMENT::m_BezierC2, DRAWSEGMENT::m_End, DRAWSEGMENT::m_Poly, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, DRAWSEGMENT::m_Width, max, EDA_RECT::Merge(), min, EDA_RECT::Normalize(), RotatePoint(), S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_SEGMENT, EDA_RECT::SetEnd(), EDA_RECT::SetOrigin(), EDA_RECT::SetX(), and EDA_RECT::SetY().

Referenced by CINFO3D_VISU::AddShapeWithClearanceToContainer(), DRAWSEGMENT::GetCenter(), and DRAWSEGMENT::HitTest().

◆ GetCenter()

const wxPoint DRAWSEGMENT::GetCenter ( ) const
overridevirtualinherited

Function GetCenter()

This defaults to the same point as returned by GetPosition(), unless overridden

Returns
centre point of the item

Reimplemented from BOARD_ITEM.

Definition at line 241 of file class_drawsegment.cpp.

242 {
243  wxPoint c;
244 
245  switch( m_Shape )
246  {
247  case S_ARC:
248  case S_CIRCLE:
249  c = m_Start;
250  break;
251 
252  case S_SEGMENT:
253  // Midpoint of the line
254  c = ( GetStart() + GetEnd() ) / 2;
255  break;
256 
257  case S_POLYGON:
258  case S_RECT:
259  case S_CURVE:
260  c = GetBoundingBox().Centre();
261  break;
262 
263  default:
264  wxASSERT_MSG( false, "DRAWSEGMENT::GetCentre not implemented for shape"
265  + ShowShape( GetShape() ) );
266  break;
267  }
268 
269  return c;
270 }
static wxString ShowShape(STROKE_T aShape)
Function ShowShape converts the enum STROKE_T integer value to a wxString.
STROKE_T GetShape() const
polygon (not yet used for tracks, but could be in microwave apps)
usual segment : line with rounded ends
const wxPoint & GetEnd() const
Function GetEnd returns the ending point of the graphic.
segment with non rounded ends
wxPoint m_Start
Line start point or Circle and Arc center.
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.
Bezier Curve.
wxPoint Centre() const
Definition: eda_rect.h:62
const wxPoint & GetStart() const
Function GetStart returns the starting point of the graphic.
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.

References EDA_RECT::Centre(), DRAWSEGMENT::GetBoundingBox(), DRAWSEGMENT::GetEnd(), DRAWSEGMENT::GetShape(), DRAWSEGMENT::GetStart(), DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_RECT, S_SEGMENT, and BOARD_ITEM::ShowShape().

Referenced by CINFO3D_VISU::AddShapeWithClearanceToContainer(), GRID_HELPER::computeAnchors(), ConvertOutlineToPolygon(), export_vrml_drawsegment(), DRAWSEGMENT::GetArcAngleStart(), DRAWSEGMENT::HitTest(), idf_export_outline(), EDIT_POINTS_FACTORY::Make(), DIALOG_PAD_PROPERTIES::OnPaintShowPanel(), EAGLE_PLUGIN::packageRectangle(), PCB_PARSER::parseD_PAD(), DIALOG_PAD_PROPERTIES::redraw(), PNS_KICAD_IFACE::syncGraphicalItem(), DRC::testCopperDrawItem(), DRAWSEGMENT::TransformShapeWithClearanceToPolygon(), POINT_EDITOR::updateItem(), and POINT_EDITOR::updatePoints().

◆ GetClass()

wxString EDGE_MODULE::GetClass ( ) const
inlineoverridevirtual

Function GetClass returns the class name.

Returns
wxString

Reimplemented from DRAWSEGMENT.

Definition at line 124 of file class_edge_mod.h.

125  {
126  return wxT( "MGRAPHIC" );
127  }

◆ GetEditFlags()

STATUS_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 270 of file base_struct.h.

271  {
275  return m_Flags & mask;
276  }
#define TEMP_SELECTED
flag indicating that the structure has already selected
Definition: base_struct.h:128
#define END_ONPAD
Pcbnew: flag set for track segment ending on a pad.
Definition: base_struct.h:139
#define BEGIN_ONPAD
Pcbnew: flag set for track segment starting on a pad.
Definition: base_struct.h:138
#define EDA_ITEM_ALL_FLAGS
Definition: base_struct.h:154
#define SELECTED
Definition: base_struct.h:127
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:143
#define DP_COUPLED
item is coupled with another item making a differential pair
Definition: base_struct.h:145
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:142
#define IS_DANGLING
indicates a pin is dangling
Definition: base_struct.h:149
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:187
#define ENDPOINT
ends. (Used to support dragging.)
Definition: base_struct.h:126
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: base_struct.h:125

References BEGIN_ONPAD, BRIGHTENED, DP_COUPLED, EDA_ITEM_ALL_FLAGS, END_ONPAD, ENDPOINT, HIGHLIGHTED, IS_DANGLING, EDA_ITEM::m_Flags, SELECTED, STARTPOINT, and TEMP_SELECTED.

Referenced by SCH_EDIT_TOOL::ChangeShape(), EDA_ITEM::ClearEditFlags(), SCH_EDIT_FRAME::ConvertTextType(), SCH_EDIT_FRAME::DeleteJunction(), SCH_EDIT_TOOL::editComponentFieldText(), SCH_EDITOR_CONTROL::EditWithLibEdit(), LIB_MOVE_TOOL::Main(), POINT_EDITOR::OnSelectionChange(), BOARD::Print(), LIB_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_LIB_EDIT_PIN::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), and DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataFromWindow().

◆ GetEnd()

◆ GetEnd0()

const wxPoint& EDGE_MODULE::GetEnd0 ( ) const
inline

Definition at line 97 of file class_edge_mod.h.

97 { return m_End0; }
wxPoint m_End0
End point, relative to module origin, orient 0.

References m_End0.

Referenced by FootprintWriteShape(), PCB_IO::format(), hash_eda(), DSN::SPECCTRA_DB::makeIMAGE(), and GPCB_FPL_CACHE::parseMODULE().

◆ GetFlags()

◆ GetLayer()

virtual PCB_LAYER_ID BOARD_ITEM::GetLayer ( ) const
inlinevirtualinherited

Function GetLayer returns the primary layer this item is on.

Reimplemented in ZONE_CONTAINER.

Definition at line 131 of file class_board_item.h.

131 { return m_Layer; }
PCB_LAYER_ID m_Layer

References BOARD_ITEM::m_Layer.

Referenced by CN_LIST::Add(), CINFO3D_VISU::AddGraphicsShapesWithClearanceToContainer(), DIMENSION::AdjustDimensionDetails(), AR_AUTOPLACER::buildFpAreas(), CreateBoardSection(), MWAVE::CreateMicrowaveInductor(), CreateRoutesSection(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DRC::doTrackDrc(), KIGFX::PCB_PAINTER::draw(), PCB_EDIT_FRAME::Exchange_Module(), export_vrml_drawsegment(), export_vrml_edge_module(), export_vrml_module(), export_vrml_pcbtext(), export_vrml_text_module(), TEXTE_PCB::Flip(), PCB_TARGET::Flip(), Flip(), TRACK::Flip(), TEXTE_MODULE::Flip(), DIMENSION::Flip(), DRAWSEGMENT::Flip(), MODULE::Flip(), PCB_IO::FootprintSave(), FootprintWriteShape(), PCB_IO::formatLayer(), DSN::SPECCTRA_DB::FromBOARD(), AR_AUTOPLACER::genModuleOnRoutingMatrix(), ZONE_CONTAINER::GetLayer(), AR_AUTOPLACER::getOptimalModulePlacement(), BOARD::GetPad(), TEXT_MOD_GRID_TABLE::GetValueAsLong(), SELECTION_TOOL::GuessSelectionCandidates(), idf_export_module(), GENERAL_COLLECTOR::Inspect(), PCB_LAYER_COLLECTOR::Inspect(), D_PAD::IsFlipped(), BOARD_ITEM::IsOnCopperLayer(), IsParentFlipped(), TEXTE_MODULE::IsParentFlipped(), itemIsIncludedByFilter(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), DIALOG_FOOTPRINT_FP_EDITOR::OnAddField(), DIALOG_FOOTPRINT_BOARD_EDITOR::OnAddField(), EAGLE_PLUGIN::packagePad(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), BRDITEMS_PLOTTER::Plot_Edges_Modules(), BRDITEMS_PLOTTER::PlotAllTextsModule(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotDrawSegment(), BRDITEMS_PLOTTER::PlotPcbTarget(), BRDITEMS_PLOTTER::PlotTextePcb(), TEXTE_MODULE::Print(), DRAWSEGMENT::Print(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem(), processTextItem(), SELECTION_TOOL::Selectable(), TEXT_MOD_GRID_TABLE::SetValueAsLong(), ShowClearance(), GLOBAL_EDIT_TOOL::swapBoardItem(), PNS_KICAD_IFACE::syncGraphicalItem(), PNS_KICAD_IFACE::syncTrack(), DRC::testCopperDrawItem(), DRC::testCopperTextAndGraphics(), DRC::testCopperTextItem(), DRC::testDisabledLayers(), AR_AUTOPLACER::testModuleOnBoard(), TEXTE_MODULE::TEXTE_MODULE(), AR_MATRIX::TraceSegmentPcb(), DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow(), DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataToWindow(), CINFO3D_VISU::transformGraphicModuleEdgeToPolygonSet(), MODULE::TransformGraphicShapesWithClearanceToPolygonSet(), MODULE::TransformGraphicTextWithClearanceToPolygonSet(), TEXTE_MODULE::ViewGetLayers(), TRACK::ViewGetLayers(), TEXTE_MODULE::ViewGetLOD(), MODULE_ZONE_CONTAINER::ViewGetLOD(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::visitItem(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ GetLayerName()

wxString BOARD_ITEM::GetLayerName ( ) const
inherited

Function GetLayerName returns the name of the PCB layer on which the item resides.

Returns
wxString containing the layer name associated with this item.

Definition at line 78 of file class_board_item.cpp.

79 {
80  BOARD* board = GetBoard();
81 
82  if( board )
83  return board->GetLayerName( m_Layer );
84 
85  // If no parent, return standard name
87 }
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Function GetLayerName returns the name of a layer given by aLayer.
PCB_LAYER_ID m_Layer
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:161
static wxString GetStandardLayerName(PCB_LAYER_ID aLayerId)
Function GetStandardLayerName returns an "English Standard" name of a PCB layer when given aLayerNumb...
Definition: class_board.h:647

References BOARD_ITEM::GetBoard(), BOARD::GetLayerName(), BOARD::GetStandardLayerName(), and BOARD_ITEM::m_Layer.

Referenced by PCB_IO::format(), PCB_IO::formatLayer(), TEXTE_PCB::GetMsgPanelInfo(), ZONE_CONTAINER::GetMsgPanelInfo(), TEXTE_MODULE::GetMsgPanelInfo(), DRAWSEGMENT::GetMsgPanelInfo(), TEXTE_PCB::GetSelectMenuText(), GetSelectMenuText(), TEXTE_MODULE::GetSelectMenuText(), TRACK::GetSelectMenuText(), DIMENSION::GetSelectMenuText(), DRAWSEGMENT::GetSelectMenuText(), MODULE::GetSelectMenuText(), ZONE_CONTAINER::GetSelectMenuText(), and TEXT_MOD_GRID_TABLE::GetValue().

◆ GetLayerSet()

virtual LSET BOARD_ITEM::GetLayerSet ( ) const
inlinevirtualinherited

Function GetLayerSet returns a "layer mask", which is a bitmap of all layers on which the TRACK segment or VIA physically resides.

Returns
int - a layer mask, see layers_id_colors_visibility.h.

Reimplemented in D_PAD, VIA, and ZONE_CONTAINER.

Definition at line 139 of file class_board_item.h.

139 { return LSET( m_Layer ); }
PCB_LAYER_ID m_Layer
Class LSET is a set of PCB_LAYER_IDs.

References BOARD_ITEM::m_Layer.

Referenced by GRID_HELPER::BestSnapAnchor(), build_pad_testpoints(), DRC::doTrackDrc(), DRAWING_TOOL::DrawVia(), hash_board_item(), and POINT_EDITOR::OnSelectionChange().

◆ GetLength()

double DRAWSEGMENT::GetLength ( ) const
inherited

Function GetLength returns the length of the track using the hypotenuse calculation.

Returns
double - the length of the track

Definition at line 74 of file class_drawsegment.cpp.

75 {
76  double length = 0.0;
77 
78  switch( m_Shape )
79  {
80  case S_CURVE:
81  for( size_t ii = 1; ii < m_BezierPoints.size(); ++ii )
82  length += GetLineLength( m_BezierPoints[ii - 1], m_BezierPoints[ii] );
83 
84  break;
85 
86  default:
87  length = GetLineLength( GetStart(), GetEnd() );
88  break;
89  }
90 
91  return length;
92 }
double GetLineLength(const wxPoint &aPointA, const wxPoint &aPointB)
Function GetLineLength returns the length of a line segment defined by aPointA and aPointB.
Definition: trigo.h:202
const wxPoint & GetEnd() const
Function GetEnd returns the ending point of the graphic.
STROKE_T m_Shape
Shape: line, Circle, Arc.
Bezier Curve.
const wxPoint & GetStart() const
Function GetStart returns the starting point of the graphic.
std::vector< wxPoint > m_BezierPoints

References DRAWSEGMENT::GetEnd(), GetLineLength(), DRAWSEGMENT::GetStart(), DRAWSEGMENT::m_BezierPoints, DRAWSEGMENT::m_Shape, and S_CURVE.

Referenced by DRAWING_TOOL::drawSegment(), DRAWSEGMENT::GetMsgPanelInfo(), and DRAWSEGMENT::GetSelectMenuText().

◆ GetList()

DHEAD* EDA_ITEM::GetList ( ) const
inlineinherited

Definition at line 221 of file base_struct.h.

221 { return m_List; }
DHEAD * m_List
which DLIST I am on.
Definition: base_struct.h:178

References EDA_ITEM::m_List.

Referenced by DHEAD::insert(), DHEAD::remove(), BOARD_ITEM::UnLink(), and GERBER_DRAW_ITEM::UnLink().

◆ GetMenuImage()

BITMAP_DEF EDGE_MODULE::GetMenuImage ( ) const
overridevirtual

Function GetMenuImage returns a pointer to an image to be used in menus.

The default version returns the right arrow image. Override this function to provide object specific menu images.

Returns
The menu image associated with the item.

Reimplemented from DRAWSEGMENT.

Definition at line 272 of file class_edge_mod.cpp.

273 {
274  return show_mod_edge_xpm;
275 }

◆ GetMsgPanelInfo()

void EDGE_MODULE::GetMsgPanelInfo ( EDA_UNITS_T  aUnits,
std::vector< MSG_PANEL_ITEM > &  aList 
)
overridevirtual

Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.

Note
This method replaces DisplayInfo() so that KiCad objects no longer have any knowledge of wxWidgets UI objects.
Parameters
aListis the list to populate.

Reimplemented from DRAWSEGMENT.

Definition at line 241 of file class_edge_mod.cpp.

242 {
243  wxString msg;
244 
245  MODULE* module = (MODULE*) m_Parent;
246 
247  if( !module )
248  return;
249 
250  BOARD* board = (BOARD*) module->GetParent();
251 
252  if( !board )
253  return;
254 
255  aList.push_back( MSG_PANEL_ITEM( _( "Footprint" ), module->GetReference(), DARKCYAN ) );
256 
257  // append the features shared with the base class
258  DRAWSEGMENT::GetMsgPanelInfo( aUnits, aList );
259 }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:180
const wxString GetReference() const
Function GetReference.
Definition: class_module.h:432
#define _(s)
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:161
void GetMsgPanelInfo(EDA_UNITS_T aUnits, std::vector< MSG_PANEL_ITEM > &aList) override
Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for displ...
Class EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
BOARD_ITEM_CONTAINER * GetParent() const

References _, DARKCYAN, DRAWSEGMENT::GetMsgPanelInfo(), BOARD_ITEM::GetParent(), MODULE::GetReference(), and EDA_ITEM::m_Parent.

◆ getNextNumberInSequence()

int BOARD_ITEM::getNextNumberInSequence ( const std::set< int > &  aSeq,
bool  aFillSequenceGaps 
)
staticprotectedinherited

Definition at line 98 of file class_board_item.cpp.

99 {
100  if( aSeq.empty() )
101  return 1;
102 
103  // By default go to the end of the sequence
104  int candidate = *aSeq.rbegin();
105 
106  // Filling in gaps in pad numbering
107  if( aFillSequenceGaps )
108  {
109  // start at the beginning
110  candidate = *aSeq.begin();
111 
112  for( auto it : aSeq )
113  {
114  if( it - candidate > 1 )
115  break;
116 
117  candidate = it;
118  }
119  }
120 
121  ++candidate;
122 
123  return candidate;
124 }

Referenced by MODULE::GetNextPadName().

◆ GetParent()

BOARD_ITEM_CONTAINER* BOARD_ITEM::GetParent ( void  ) const
inlineinherited

Definition at line 125 of file class_board_item.h.

125 { return (BOARD_ITEM_CONTAINER*) m_Parent; }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:180
Abstract interface for BOARD_ITEMs capable of storing other items inside.

References EDA_ITEM::m_Parent.

Referenced by POINT_EDITOR::addCorner(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), BOARD_ITEM::DeleteStructure(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), KIGFX::PCB_PAINTER::draw(), EditToolSelectionFilter(), PCB_IO::format(), FormatProbeItem(), BOARD_ITEM::GetBoard(), GetMsgPanelInfo(), GetSelectMenuText(), TEXTE_MODULE::GetSelectMenuText(), TEXTE_MODULE::GetShownText(), SELECTION_TOOL::GuessSelectionCandidates(), GENERAL_COLLECTOR::Inspect(), ARRAY_CREATOR::Invoke(), IsParentFlipped(), TEXTE_MODULE::IsParentFlipped(), LEGACY_PLUGIN::loadMODULE_TEXT(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), BRDITEMS_PLOTTER::PlotTextModule(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SELECTION_TOOL::select(), SELECTION_TOOL::Selectable(), SwapItemData(), DRC::testCopperDrawItem(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), MODULE_ZONE_CONTAINER::ViewGetLOD(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ GetParentModule()

MODULE * DRAWSEGMENT::GetParentModule ( ) const
inherited

Function GetParentModule returns a pointer to the parent module, or NULL if DRAWSEGMENT does not belong to a module.

Returns
MODULE* - pointer to the parent module or NULL.

Definition at line 339 of file class_drawsegment.cpp.

340 {
341  if( !m_Parent || m_Parent->Type() != PCB_MODULE_T )
342  return NULL;
343 
344  return (MODULE*) m_Parent;
345 }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:180
class MODULE, a footprint
Definition: typeinfo.h:89
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210

References EDA_ITEM::m_Parent, PCB_MODULE_T, and EDA_ITEM::Type().

Referenced by ConvertOutlineToPolygon(), KIGFX::PCB_PAINTER::draw(), DRAWSEGMENT::GetBoundingBox(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), and DRAWSEGMENT::TransformShapeWithClearanceToPolygon().

◆ GetPointCount()

int DRAWSEGMENT::GetPointCount ( ) const
inherited
Returns
the number of corners of the polygonal shape

Definition at line 985 of file class_drawsegment.cpp.

986 {
987  // return the number of corners of the polygonal shape
988  // this shape is expected to be only one polygon without hole
989  if( GetPolyShape().OutlineCount() )
990  return GetPolyShape().VertexCount( 0 );
991 
992  return 0;
993 }
int VertexCount(int aOutline=-1, int aHole=-1) const
Returns the number of vertices in a given outline/hole
SHAPE_POLY_SET & GetPolyShape()

References DRAWSEGMENT::GetPolyShape(), and SHAPE_POLY_SET::VertexCount().

◆ GetPolyShape() [1/2]

◆ GetPolyShape() [2/2]

const SHAPE_POLY_SET& DRAWSEGMENT::GetPolyShape ( ) const
inlineinherited

Definition at line 189 of file class_drawsegment.h.

189 { return m_Poly; }
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.

References DRAWSEGMENT::m_Poly.

◆ GetPosition()

const wxPoint DRAWSEGMENT::GetPosition ( ) const
overridevirtualinherited

Implements BOARD_ITEM.

Definition at line 65 of file class_drawsegment.cpp.

66 {
67  if( m_Shape == S_POLYGON )
68  return (wxPoint) m_Poly.CVertex( 0 );
69  else
70  return m_Start;
71 }
const VECTOR2I & CVertex(int aIndex, int aOutline, int aHole) const
Returns the index-th vertex in a given hole outline within a given outline
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
polygon (not yet used for tracks, but could be in microwave apps)
wxPoint m_Start
Line start point or Circle and Arc center.
STROKE_T m_Shape
Shape: line, Circle, Arc.

References SHAPE_POLY_SET::CVertex(), DRAWSEGMENT::m_Poly, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, and S_POLYGON.

Referenced by ConvertOutlineToPolygon().

◆ GetRadius()

int DRAWSEGMENT::GetRadius ( ) const
inlineinherited

Function GetRadius returns the radius of this item Has meaning only for arc and circle.

Definition at line 148 of file class_drawsegment.h.

149  {
150  double radius = GetLineLength( m_Start, m_End );
151  return KiROUND( radius );
152  }
double GetLineLength(const wxPoint &aPointA, const wxPoint &aPointB)
Function GetLineLength returns the length of a line segment defined by aPointA and aPointB.
Definition: trigo.h:202
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: common.h:114

References GetLineLength(), KiROUND(), DRAWSEGMENT::m_End, and DRAWSEGMENT::m_Start.

Referenced by CINFO3D_VISU::AddShapeWithClearanceToContainer(), DRAWSEGMENT::computeArcBBox(), ConvertOutlineToPolygon(), KIGFX::PCB_PAINTER::draw(), DRAWSEGMENT::GetBoundingBox(), hash_eda(), DRAWSEGMENT::HitTest(), idf_export_outline(), PCB_PARSER::parseD_PAD(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow(), and DRAWSEGMENT::TransformShapeWithClearanceToPolygon().

◆ GetSelectMenuText()

wxString EDGE_MODULE::GetSelectMenuText ( EDA_UNITS_T  aUnits) const
overridevirtual

Function GetSelectMenuText returns the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position.

The default version of this function raises an assertion in the debug mode and returns a string to indicate that it was not overridden to provide the object specific text.

Returns
The menu text string.

Reimplemented from DRAWSEGMENT.

Definition at line 263 of file class_edge_mod.cpp.

264 {
265  return wxString::Format( _( "Graphic %s of %s on %s" ),
266  ShowShape( m_Shape ),
267  ((MODULE*) GetParent())->GetReference(),
268  GetLayerName() );
269 }
static wxString ShowShape(STROKE_T aShape)
Function ShowShape converts the enum STROKE_T integer value to a wxString.
STROKE_T m_Shape
Shape: line, Circle, Arc.
#define _(s)
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
BOARD_ITEM_CONTAINER * GetParent() const
wxString GetLayerName() const
Function GetLayerName returns the name of the PCB layer on which the item resides.

References _, Format(), BOARD_ITEM::GetLayerName(), BOARD_ITEM::GetParent(), DRAWSEGMENT::m_Shape, and BOARD_ITEM::ShowShape().

◆ GetShape()

◆ GetStart()

◆ GetStart0()

const wxPoint& EDGE_MODULE::GetStart0 ( ) const
inline

Definition at line 94 of file class_edge_mod.h.

94 { return m_Start0; }
wxPoint m_Start0
Start point or center, relative to module origin, orient 0.

References m_Start0.

Referenced by FootprintWriteShape(), PCB_IO::format(), hash_eda(), and DSN::SPECCTRA_DB::makeIMAGE().

◆ GetState()

int EDA_ITEM::GetState ( int  type) const
inlineinherited

Definition at line 249 of file base_struct.h.

250  {
251  return m_Status & type;
252  }
STATUS_FLAGS m_Status
Definition: base_struct.h:173

References EDA_ITEM::m_Status.

Referenced by SELECTION_TOOL::expandConnection(), TRACK::GetMsgPanelInfoBase_Common(), TRACK::IsLocked(), TRACK::Print(), and ZONE_CONTAINER::PrintFilledArea().

◆ GetStatus()

STATUS_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 262 of file base_struct.h.

262 { return m_Status; }
STATUS_FLAGS m_Status
Definition: base_struct.h:173

References EDA_ITEM::m_Status.

Referenced by PCB_IO::format().

◆ GetTimeStamp()

◆ GetType()

int DRAWSEGMENT::GetType ( ) const
inlineinherited

Definition at line 96 of file class_drawsegment.h.

96 { return m_Type; }
int m_Type
Used in complex associations ( Dimensions.. )

References DRAWSEGMENT::m_Type.

Referenced by hash_eda().

◆ GetWidth()

◆ HasFlag()

bool EDA_ITEM::HasFlag ( STATUS_FLAGS  aFlag)
inlineinherited

◆ HitTest() [1/2]

bool DRAWSEGMENT::HitTest ( const wxPoint &  aPosition,
int  aAccuracy = 0 
) const
overridevirtualinherited

Function HitTest tests if aPosition is contained within or on the bounding box of an item.

Parameters
aPositionA reference to a wxPoint object containing the coordinates to test.
aAccuracyIncrease the item bounding box by this amount.
Returns
True if aPosition is within the item bounding box.

Reimplemented from EDA_ITEM.

Definition at line 605 of file class_drawsegment.cpp.

606 {
607  int maxdist = aAccuracy + ( m_Width / 2 );
608 
609  switch( m_Shape )
610  {
611  case S_CIRCLE:
612  case S_ARC:
613  {
614  wxPoint relPos = aPosition - GetCenter();
615  int radius = GetRadius();
616  int dist = KiROUND( EuclideanNorm( relPos ) );
617 
618  if( abs( radius - dist ) <= maxdist )
619  {
620  if( m_Shape == S_CIRCLE )
621  return true;
622 
623  // For arcs, the test point angle must be >= arc angle start
624  // and <= arc angle end
625  // However angle values > 360 deg are not easy to handle
626  // so we calculate the relative angle between arc start point and teast point
627  // this relative arc should be < arc angle if arc angle > 0 (CW arc)
628  // and > arc angle if arc angle < 0 (CCW arc)
629  double arc_angle_start = GetArcAngleStart(); // Always 0.0 ... 360 deg, in 0.1 deg
630 
631  double arc_hittest = ArcTangente( relPos.y, relPos.x );
632 
633  // Calculate relative angle between the starting point of the arc, and the test point
634  arc_hittest -= arc_angle_start;
635 
636  // Normalise arc_hittest between 0 ... 360 deg
637  NORMALIZE_ANGLE_POS( arc_hittest );
638 
639  // Check angle: inside the arc angle when it is > 0
640  // and outside the not drawn arc when it is < 0
641  if( GetAngle() >= 0.0 )
642  {
643  if( arc_hittest <= GetAngle() )
644  return true;
645  }
646  else
647  {
648  if( arc_hittest >= (3600.0 + GetAngle()) )
649  return true;
650  }
651  }
652  }
653  break;
654 
655  case S_CURVE:
656  ((DRAWSEGMENT*)this)->RebuildBezierToSegmentsPointsList( m_Width );
657 
658  for( unsigned int i= 1; i < m_BezierPoints.size(); i++)
659  {
660  if( TestSegmentHit( aPosition, m_BezierPoints[i-1], m_BezierPoints[i], maxdist ) )
661  return true;
662  }
663  break;
664 
665  case S_SEGMENT:
666  if( TestSegmentHit( aPosition, m_Start, m_End, maxdist ) )
667  return true;
668  break;
669 
670  case S_POLYGON:
671  {
672  if( !IsPolygonFilled() )
673  {
675  auto poly = m_Poly; //todo: Fix CollideEdge to be const
676  return poly.CollideEdge( VECTOR2I( aPosition ), i,
677  std::max( maxdist, Millimeter2iu( 0.25 ) ) );
678  }
679  else
680  return m_Poly.Collide( VECTOR2I( aPosition ), maxdist );
681  }
682  break;
683 
684  default:
685  wxASSERT_MSG( 0, wxString::Format( "unknown DRAWSEGMENT shape: %d", m_Shape ) );
686  break;
687  }
688 
689  return false;
690 }
double EuclideanNorm(const wxPoint &vector)
Euclidean norm of a 2D vector.
Definition: trigo.h:123
static const int dist[10][10]
Definition: ar_matrix.cpp:320
bool CollideEdge(const VECTOR2I &aPoint, VERTEX_INDEX &aClosestVertex, int aClearance=0)
Function CollideEdge Checks whether aPoint collides with any edge of any of the contours of the polyg...
const wxPoint GetCenter() const override
Function GetCenter()
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
polygon (not yet used for tracks, but could be in microwave apps)
double GetArcAngleStart() const
function GetArcAngleStart()
Struct VERTEX_INDEX.
usual segment : line with rounded ends
void NORMALIZE_ANGLE_POS(T &Angle)
Definition: trigo.h:252
VECTOR2< int > VECTOR2I
Definition: vector2d.h:587
#define abs(a)
Definition: auxiliary.h:84
wxPoint m_Start
Line start point or Circle and Arc center.
double ArcTangente(int dy, int dx)
Definition: trigo.cpp:160
wxPoint m_End
Line end point or circle and arc start point.
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.
bool Collide(const VECTOR2I &aP, int aClearance=0) const override
Function Collide Checks whether the point aP collides with the inside of the polygon set; if the poin...
int GetRadius() const
Function GetRadius returns the radius of this item Has meaning only for arc and circle.
Bezier Curve.
double GetAngle() const
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
#define max(a, b)
Definition: auxiliary.h:86
size_t i
Definition: json11.cpp:649
int m_Width
thickness of lines ...
bool TestSegmentHit(const wxPoint &aRefPoint, wxPoint aStart, wxPoint aEnd, int aDist)
Function TestSegmentHit test for hit on line segment i.e.
Definition: trigo.cpp:127
bool IsPolygonFilled() const
Polygonal shape is not always filled.
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: common.h:114
std::vector< wxPoint > m_BezierPoints

References abs, ArcTangente(), SHAPE_POLY_SET::Collide(), SHAPE_POLY_SET::CollideEdge(), dist, EuclideanNorm(), Format(), DRAWSEGMENT::GetAngle(), DRAWSEGMENT::GetArcAngleStart(), DRAWSEGMENT::GetCenter(), DRAWSEGMENT::GetRadius(), i, DRAWSEGMENT::IsPolygonFilled(), KiROUND(), DRAWSEGMENT::m_BezierPoints, DRAWSEGMENT::m_End, DRAWSEGMENT::m_Poly, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, DRAWSEGMENT::m_Width, max, NORMALIZE_ANGLE_POS(), S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_SEGMENT, and TestSegmentHit().

Referenced by DRC::doTrackDrc().

◆ HitTest() [2/2]

bool DRAWSEGMENT::HitTest ( const EDA_RECT aRect,
bool  aContained,
int  aAccuracy = 0 
) const
overridevirtualinherited

Function HitTest tests if aRect intersects or is contained within the bounding box of an item.

Parameters
aRectA reference to a EDA_RECT object containing the rectangle to test.
aContainedSet to true to test for containment instead of an intersection.
aAccuracyIncrease aRect by this amount.
Returns
True if aRect contains or intersects the item bounding box.

Reimplemented from EDA_ITEM.

Definition at line 693 of file class_drawsegment.cpp.

694 {
695  EDA_RECT arect = aRect;
696  arect.Normalize();
697  arect.Inflate( aAccuracy );
698 
699  EDA_RECT arcRect;
700  EDA_RECT bb = GetBoundingBox();
701 
702  switch( m_Shape )
703  {
704  case S_CIRCLE:
705  // Test if area intersects or contains the circle:
706  if( aContained )
707  return arect.Contains( bb );
708  else
709  {
710  // If the rectangle does not intersect the bounding box, this is a much quicker test
711  if( !aRect.Intersects( bb ) )
712  {
713  return false;
714  }
715  else
716  {
717  return arect.IntersectsCircleEdge( GetCenter(), GetRadius(), GetWidth() );
718  }
719  }
720  break;
721 
722  case S_ARC:
723  // Test for full containment of this arc in the rect
724  if( aContained )
725  {
726  return arect.Contains( bb );
727  }
728  // Test if the rect crosses the arc
729  else
730  {
731  arcRect = bb.Common( arect );
732 
733  /* All following tests must pass:
734  * 1. Rectangle must intersect arc BoundingBox
735  * 2. Rectangle must cross the outside of the arc
736  */
737  return arcRect.Intersects( arect ) &&
739  }
740  break;
741 
742  case S_SEGMENT:
743  if( aContained )
744  {
745  return arect.Contains( GetStart() ) && aRect.Contains( GetEnd() );
746  }
747  else
748  {
749  // Account for the width of the line
750  arect.Inflate( GetWidth() / 2 );
751  return arect.Intersects( GetStart(), GetEnd() );
752  }
753 
754  break;
755 
756  case S_POLYGON:
757  if( aContained )
758  {
759  return arect.Contains( bb );
760  }
761  else
762  {
763  // Fast test: if aRect is outside the polygon bounding box,
764  // rectangles cannot intersect
765  if( !arect.Intersects( bb ) )
766  return false;
767 
768  // Account for the width of the line
769  arect.Inflate( GetWidth() / 2 );
770  int count = m_Poly.TotalVertices();
771 
772  for( int ii = 0; ii < count; ii++ )
773  {
774  auto vertex = m_Poly.CVertex( ii );
775  auto vertexNext = m_Poly.CVertex( ( ii + 1 ) % count );
776 
777  // Test if the point is within aRect
778  if( arect.Contains( ( wxPoint ) vertex ) )
779  return true;
780 
781  // Test if this edge intersects aRect
782  if( arect.Intersects( ( wxPoint ) vertex, ( wxPoint ) vertexNext ) )
783  return true;
784  }
785  }
786  break;
787 
788  case S_CURVE: // not yet handled
789  if( aContained )
790  {
791  return arect.Contains( bb );
792  }
793  else
794  {
795  // Fast test: if aRect is outside the polygon bounding box,
796  // rectangles cannot intersect
797  if( !arect.Intersects( bb ) )
798  return false;
799 
800  // Account for the width of the line
801  arect.Inflate( GetWidth() / 2 );
802  unsigned count = m_BezierPoints.size();
803 
804  for( unsigned ii = 1; ii < count; ii++ )
805  {
806  wxPoint vertex = m_BezierPoints[ii-1];
807  wxPoint vertexNext = m_BezierPoints[ii];
808 
809  // Test if the point is within aRect
810  if( arect.Contains( ( wxPoint ) vertex ) )
811  return true;
812 
813  // Test if this edge intersects aRect
814  if( arect.Intersects( vertex, vertexNext ) )
815  return true;
816  }
817  }
818  break;
819 
820 
821  default:
822  wxASSERT_MSG( 0, wxString::Format( "unknown DRAWSEGMENT shape: %d", m_Shape ) );
823  break;
824  }
825 
826  return false;
827 }
int TotalVertices() const
Returns total number of vertices stored in the set.
const wxPoint GetCenter() const override
Function GetCenter()
const VECTOR2I & CVertex(int aIndex, int aOutline, int aHole) const
Returns the index-th vertex in a given hole outline within a given outline
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
polygon (not yet used for tracks, but could be in microwave apps)
bool IntersectsCircleEdge(const wxPoint &aCenter, const int aRadius, const int aWidth) const
IntersectsCircleEdge Tests for intersection between this rect and the edge (radius) of a circle.
EDA_RECT Common(const EDA_RECT &aRect) const
Function Common returns the area that is common with another rectangle.
usual segment : line with rounded ends
const wxPoint & GetEnd() const
Function GetEnd returns the ending point of the graphic.
bool Contains(const wxPoint &aPoint) const
Function Contains.
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.
int GetRadius() const
Function GetRadius returns the radius of this item Has meaning only for arc and circle.
Bezier Curve.
int GetWidth() const
void Normalize()
Function Normalize ensures that the height ant width are positive.
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
bool Intersects(const EDA_RECT &aRect) const
Function Intersects tests for a common area between rectangles.
const wxPoint & GetStart() const
Function GetStart returns the starting point of the graphic.
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Function Inflate inflates the rectangle horizontally by dx and vertically by dy.
std::vector< wxPoint > m_BezierPoints
const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes.

References EDA_RECT::Common(), EDA_RECT::Contains(), SHAPE_POLY_SET::CVertex(), Format(), DRAWSEGMENT::GetBoundingBox(), DRAWSEGMENT::GetCenter(), DRAWSEGMENT::GetEnd(), DRAWSEGMENT::GetRadius(), DRAWSEGMENT::GetStart(), DRAWSEGMENT::GetWidth(), EDA_RECT::Inflate(), EDA_RECT::Intersects(), EDA_RECT::IntersectsCircleEdge(), DRAWSEGMENT::m_BezierPoints, DRAWSEGMENT::m_Poly, DRAWSEGMENT::m_Shape, EDA_RECT::Normalize(), S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_SEGMENT, and SHAPE_POLY_SET::TotalVertices().

◆ IsBrightened()

bool EDA_ITEM::IsBrightened ( ) const
inlineinherited

◆ IsConnected()

virtual bool BOARD_ITEM::IsConnected ( ) const
inlinevirtualinherited

Function IsConnected() Returns information if the object is derived from BOARD_CONNECTED_ITEM.

Returns
True if the object is of BOARD_CONNECTED_ITEM type, false otherwise.

Reimplemented in BOARD_CONNECTED_ITEM.

Definition at line 107 of file class_board_item.h.

108  {
109  return false;
110  }

Referenced by CN_CONNECTIVITY_ALGO::markItemNetAsDirty(), and CONNECTIVITY_DATA::MarkItemNetAsDirty().

◆ IsDragging()

bool EDA_ITEM::IsDragging ( ) const
inlineinherited

Definition at line 231 of file base_struct.h.

231 { return m_Flags & IS_DRAGGED; }
#define IS_DRAGGED
Item being dragged.
Definition: base_struct.h:122
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:187

References IS_DRAGGED, and EDA_ITEM::m_Flags.

Referenced by DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC(), KIGFX::SCH_PAINTER::setDeviceColors(), and ShowClearance().

◆ IsHighlighted()

bool EDA_ITEM::IsHighlighted ( ) const
inlineinherited

Definition at line 235 of file base_struct.h.

235 { return m_Flags & HIGHLIGHTED; }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:142
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:187

References HIGHLIGHTED, and EDA_ITEM::m_Flags.

Referenced by SCH_COMPONENT::ClearAllHighlightFlags(), KIGFX::SCH_PAINTER::draw(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), KIGFX::SCH_PAINTER::getRenderColor(), and KIGFX::SCH_VIEW::HighlightItem().

◆ IsLocked()

virtual bool BOARD_ITEM::IsLocked ( ) const
inlinevirtualinherited

Function IsLocked.

Returns
bool - true if the object is locked, else false

Reimplemented in MODULE, and TRACK.

Definition at line 200 of file class_board_item.h.

201  {
202  // only MODULEs & TRACKs can be locked at this time.
203  return false;
204  }

Referenced by PCBNEW_CONTROL::DeleteItemCursor(), EditToolSelectionFilter(), GENERAL_COLLECTOR::Inspect(), and PCB_EDITOR_CONTROL::modifyLockSelected().

◆ IsModified()

bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 229 of file base_struct.h.

229 { return m_Flags & IS_CHANGED; }
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:116
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:187

References IS_CHANGED, and EDA_ITEM::m_Flags.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ IsMoving()

◆ IsNew()

◆ IsOnCopperLayer()

virtual bool BOARD_ITEM::IsOnCopperLayer ( ) const
inlinevirtualinherited
Returns
true if the object is on any copper layer, false otherwise.

Reimplemented in D_PAD, TRACK, and ZONE_CONTAINER.

Definition at line 115 of file class_board_item.h.

116  {
117  return IsCopperLayer( GetLayer() );
118  }
bool IsCopperLayer(LAYER_NUM aLayerId)
Function IsCopperLayer tests whether a layer is a copper layer.
virtual PCB_LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.

References BOARD_ITEM::GetLayer(), and IsCopperLayer().

Referenced by CN_CONNECTIVITY_ALGO::Add(), and BOARD_CONNECTED_ITEM::SetNetCode().

◆ IsOnLayer()

virtual bool BOARD_ITEM::IsOnLayer ( PCB_LAYER_ID  aLayer) const
inlinevirtualinherited

Function IsOnLayer tests to see if this object is on the given layer.

Is virtual so objects like D_PAD, which reside on multiple layers can do their own form of testing.

Parameters
aLayerThe layer to test for.
Returns
bool - true if on given layer, else false.

Reimplemented in D_PAD, VIA, ZONE_CONTAINER, and MARKER_PCB.

Definition at line 180 of file class_board_item.h.

181  {
182  return m_Layer == aLayer;
183  }
PCB_LAYER_ID m_Layer

References BOARD_ITEM::m_Layer.

Referenced by CINFO3D_VISU::createLayers(), GENERAL_COLLECTOR::Inspect(), ZONE_CONTAINER::IsOnLayer(), and AR_MATRIX::TraceSegmentPcb().

◆ IsParentFlipped()

bool EDGE_MODULE::IsParentFlipped ( ) const

Definition at line 347 of file class_edge_mod.cpp.

348 {
349  if( GetParent() && GetParent()->GetLayer() == B_Cu )
350  return true;
351  return false;
352 }
BOARD_ITEM_CONTAINER * GetParent() const
virtual PCB_LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.

References B_Cu, BOARD_ITEM::GetLayer(), and BOARD_ITEM::GetParent().

Referenced by ViewGetLOD().

◆ IsPolygonFilled()

bool DRAWSEGMENT::IsPolygonFilled ( ) const
inlineinherited

◆ IsPolyShapeValid()

bool DRAWSEGMENT::IsPolyShapeValid ( ) const
inherited
Returns
true if the polygonal shape is valid (has more than 2 points)

Definition at line 973 of file class_drawsegment.cpp.

974 {
975  // return true if the polygonal shape is valid (has more than 2 points)
976  if( GetPolyShape().OutlineCount() == 0 )
977  return false;
978 
979  const SHAPE_LINE_CHAIN& outline = ((SHAPE_POLY_SET&)GetPolyShape()).Outline( 0 );
980 
981  return outline.PointCount() > 2;
982 }
int PointCount() const
Function PointCount()
Class SHAPE_POLY_SET.
SHAPE_POLY_SET & GetPolyShape()
Class SHAPE_LINE_CHAIN.

References DRAWSEGMENT::GetPolyShape(), and SHAPE_LINE_CHAIN::PointCount().

Referenced by export_vrml_polygon(), PCB_IO::format(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), and DRAWSEGMENT::TransformShapeWithClearanceToPolygon().

◆ IsReplaceable()

virtual bool EDA_ITEM::IsReplaceable ( ) const
inlinevirtualinherited

Function IsReplaceable.

Override this method in any derived object that supports test find and replace.

Returns
True if the item has replaceable text that can be modified using the find and replace dialog.

Reimplemented in SCH_COMPONENT, SCH_SHEET, SCH_LABEL, SCH_FIELD, SCH_SHEET_PIN, and SCH_TEXT.

Definition at line 556 of file base_struct.h.

556 { return false; }

Referenced by EDA_ITEM::Matches().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 234 of file base_struct.h.

234 { return m_Flags & IS_RESIZED; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:187
#define IS_RESIZED
Item being resized.
Definition: base_struct.h:121

References IS_RESIZED, and EDA_ITEM::m_Flags.

Referenced by KIGFX::SCH_PAINTER::setDeviceColors().

◆ IsSelected()

◆ IsTrack()

bool BOARD_ITEM::IsTrack ( ) const
inlineinherited

Function IsTrack tests to see if this object is a track or via (or microvia).

form of testing.

Returns
bool - true if a track or via, else false.

Definition at line 191 of file class_board_item.h.

192  {
193  return ( Type() == PCB_TRACE_T ) || ( Type() == PCB_VIA_T );
194  }
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:96
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:97
KICAD_T Type() const
Function Type()
Definition: base_struct.h:210

References PCB_TRACE_T, PCB_VIA_T, and EDA_ITEM::Type().

◆ IsType()

virtual bool EDA_ITEM::IsType ( const KICAD_T  aScanTypes[])
inlinevirtualinherited

Function IsType Checks whether the item is one of the listed types.

Parameters
aScanTypesList of item types
Returns
true if the item type is contained in the list aScanTypes

Reimplemented in SCH_LABEL, SCH_FIELD, and SCH_LINE.

Definition at line 294 of file base_struct.h.

295  {
296  if( aScanTypes[0] == SCH_LOCATE_ANY_T )
297  return true;
298 
299  for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
300  {
301  if( m_StructType == *p )
302  return true;
303  }
304 
305  return false;
306  }
KICAD_T m_StructType
Run time identification, keep private so it can never be changed after a constructor sets it.
Definition: base_struct.h:172
search types array terminator (End Of Types)
Definition: typeinfo.h:82
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78

References EOT, EDA_ITEM::m_StructType, and SCH_LOCATE_ANY_T.

Referenced by SCH_SCREEN::GetItem(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingBus(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLine(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingWire(), SCH_LINE::IsType(), SCH_FIELD::IsType(), SCH_LABEL::IsType(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), EE_SELECTION_TOOL::RequestSelection(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), EDA_ITEM::Visit(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ IsWireImage()

bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 232 of file base_struct.h.

232 { return m_Flags & IS_WIRE_IMAGE; }
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:124
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:187

References IS_WIRE_IMAGE, and EDA_ITEM::m_Flags.

◆ IterateForward() [1/3]

static SEARCH_RESULT EDA_ITEM::IterateForward ( EDA_ITEM listStart,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
inlinestaticinherited

Function IterateForward walks through the object tree calling the inspector() on each object type requested in scanTypes.

Parameters
listStartThe first in a list of EDA_ITEMs to iterate over.
inspectorIs an INSPECTOR to call on each object that is one of the requested scanTypes.
testDataIs an aid to testFunc, and should be sufficient to allow it to fully determine if an item meets the match criteria, but it may also be used to collect output.
scanTypesA KICAD_T array that is EOT terminated, and provides both the order and interest level of of the types of objects to be iterated over.
Returns
SEARCH_RESULT SEARCH_QUIT if the called INSPECTOR returned SEARCH_QUIT, else SCAN_CONTINUE;

Definition at line 418 of file base_struct.h.

423  {
424  for( EDA_ITEM* p = listStart; p; p = p->Pnext )
425  {
426  if( SEARCH_QUIT == p->Visit( inspector, testData, scanTypes ) )
427  return SEARCH_QUIT;
428  }
429 
430  return SEARCH_CONTINUE;
431  }
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:163
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:176

References EDA_ITEM::Pnext, SEARCH_CONTINUE, and SEARCH_QUIT.

Referenced by EE_COLLECTOR::Collect(), EE_TYPE_COLLECTOR::Collect(), nextMatch(), EE_SELECTION_TOOL::RebuildSelection(), SCH_EDITOR_CONTROL::UpdateFind(), GERBER_FILE_IMAGE::Visit(), and BOARD::Visit().

◆ IterateForward() [2/3]

template<class T >
static SEARCH_RESULT EDA_ITEM::IterateForward ( std::deque< T > &  aList,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
inlinestaticinherited

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

This changes first parameter to avoid the DList and use the main queue instead

Definition at line 439 of file base_struct.h.

443  {
444  for( auto it : aList )
445  {
446  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes ) == SEARCH_QUIT )
447  return SEARCH_QUIT;
448  }
449 
450  return SEARCH_CONTINUE;
451  }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
Function Visit may be re-implemented for each derived class in order to handle all the types given by...

References SEARCH_CONTINUE, SEARCH_QUIT, and EDA_ITEM::Visit().

◆ IterateForward() [3/3]

template<class T >
static SEARCH_RESULT EDA_ITEM::IterateForward ( std::vector< T > &  aList,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
inlinestaticinherited

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

IterateForward( EDA_ITEM*, INSPECTOR, void*, const KICAD_T )

This changes first parameter to avoid the DList and use std::vector instead

Definition at line 459 of file base_struct.h.

461  {
462  for( auto it : aList )
463  {
464  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
465  == SEARCH_QUIT )
466  return SEARCH_QUIT;
467  }
468 
469  return SEARCH_CONTINUE;
470  }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
Function Visit may be re-implemented for each derived class in order to handle all the types given by...

References SEARCH_CONTINUE, SEARCH_QUIT, and EDA_ITEM::Visit().

◆ Matches() [1/2]

virtual bool EDA_ITEM::Matches ( wxFindReplaceData &  aSearchData,
void *  aAuxData 
)
inlinevirtualinherited

Function Matches compares the item against the search criteria in aSearchData.

The base class returns false since many of the objects derived from EDA_ITEM do not have any text to search.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
Returns
True if the item's text matches the search criteria in aSearchData.

Reimplemented in SCH_COMPONENT, SCH_SHEET, SCH_FIELD, SCH_SHEET_PIN, SCH_TEXT, LIB_PIN, SCH_PIN, SCH_MARKER, TEXTE_MODULE, and TEXTE_PCB.

Definition at line 512 of file base_struct.h.

513  {
514  return false;
515  }

Referenced by SCH_EDITOR_CONTROL::HasMatch(), TEXTE_PCB::Matches(), TEXTE_MODULE::Matches(), SCH_MARKER::Matches(), LIB_PIN::Matches(), SCH_TEXT::Matches(), SCH_SHEET_PIN::Matches(), SCH_FIELD::Matches(), SCH_SHEET::Matches(), nextMatch(), SCH_EDITOR_CONTROL::ReplaceAndFindNext(), and SCH_EDITOR_CONTROL::UpdateFind().

◆ Matches() [2/2]

bool EDA_ITEM::Matches ( const wxString &  aText,
wxFindReplaceData &  aSearchData 
)
protectedinherited

Function Matches compares aText against search criteria in aSearchData.

This is a helper function for simplify derived class logic.

Parameters
aTextA reference to a wxString object containing the string to test.
aSearchDataThe criteria to search against.
Returns
True if aText matches the search criteria in aSearchData.

Definition at line 156 of file base_struct.cpp.

157 {
158  wxString text = aText;
159  wxString searchText = aSearchData.GetFindString();
160 
161  // Don't match if searching for replaceable item and the item doesn't support text replace.
162  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
163  return false;
164 
165  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
166  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
167 
168  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
169  {
170  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
171  return text.Matches( searchText );
172 
173  return text.MakeUpper().Matches( searchText.MakeUpper() );
174  }
175 
176  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
177  return aText.Find( searchText ) != wxNOT_FOUND;
178 
179  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
180 }
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:556

References FR_MATCH_WILDCARD, FR_SEARCH_REPLACE, and EDA_ITEM::IsReplaceable().

◆ Mirror()

void EDGE_MODULE::Mirror ( const wxPoint  aCentre,
bool  aMirrorAroundXAxis 
)

Mirror an edge of the footprint.

Do not change the layer This is a footprint shape modification. (should be only called by a footprint editing function)

Definition at line 354 of file class_edge_mod.cpp.

355 {
356  // Mirror an edge of the footprint. the layer is not modified
357  // This is a footprint shape modification.
358  switch( GetShape() )
359  {
360  case S_ARC:
361  SetAngle( -GetAngle() );
362  //Fall through
363  default:
364  case S_CURVE:
365  case S_SEGMENT:
366  if( aMirrorAroundXAxis )
367  {
368  MIRROR( m_Start0.y, aCentre.y );
369  MIRROR( m_End0.y, aCentre.y );
370  MIRROR( m_Bezier0_C1.y, aCentre.y );
371  MIRROR( m_Bezier0_C2.y, aCentre.y );
372  }
373  else
374  {
375  MIRROR( m_Start0.x, aCentre.x );
376  MIRROR( m_End0.x, aCentre.x );
377  MIRROR( m_Bezier0_C1.x, aCentre.x );
378  MIRROR( m_Bezier0_C2.x, aCentre.x );
379  }
380 
381  for( unsigned ii = 0; ii < m_BezierPoints.size(); ii++ )
382  {
383  if( aMirrorAroundXAxis )
384  MIRROR( m_BezierPoints[ii].y, aCentre.y );
385  else
386  MIRROR( m_BezierPoints[ii].x, aCentre.x );
387  }
388 
389  break;
390 
391  case S_POLYGON:
392  // polygon corners coordinates are always relative to the
393  // footprint position, orientation 0
394  for( auto iter = m_Poly.Iterate(); iter; iter++ )
395  {
396  if( aMirrorAroundXAxis )
397  MIRROR( iter->y, aCentre.y );
398  else
399  MIRROR( iter->x, aCentre.x );
400  }
401  }
402 
403  SetDrawCoord();
404 }
wxPoint m_Bezier0_C2
Bezier Control Point 2, relative to module origin, orient 0.
STROKE_T GetShape() const
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
polygon (not yet used for tracks, but could be in microwave apps)
usual segment : line with rounded ends
ITERATOR Iterate(int aFirst, int aLast, bool aIterateHoles=false)
Function Iterate returns an object to iterate through the points of the polygons between aFirst and a...
wxPoint m_End0
End point, relative to module origin, orient 0.
wxPoint m_Bezier0_C1
Bezier Control Point 1, relative to module origin, orient 0.
void MIRROR(T &aPoint, const T &aMirrorRef)
Definition: macros.h:123
Arcs (with rounded ends)
Bezier Curve.
double GetAngle() const
void SetDrawCoord()
Set draw coordinates (absolute values ) from relative coordinates.
void SetAngle(double aAngle)
Function SetAngle sets the angle for arcs, and normalizes it within the range 0 - 360 degrees.
wxPoint m_Start0
Start point or center, relative to module origin, orient 0.
std::vector< wxPoint > m_BezierPoints

References DRAWSEGMENT::GetAngle(), DRAWSEGMENT::GetShape(), SHAPE_POLY_SET::Iterate(), m_Bezier0_C1, m_Bezier0_C2, DRAWSEGMENT::m_BezierPoints, m_End0, DRAWSEGMENT::m_Poly, m_Start0, MIRROR(), S_ARC, S_CURVE, S_POLYGON, S_SEGMENT, DRAWSEGMENT::SetAngle(), and SetDrawCoord().

◆ Move() [1/2]

void EDGE_MODULE::Move ( const wxPoint &  aMoveVector)
overridevirtual

Move an edge of the footprint.

This is a footprint shape modification. (should be only called by a footprint editing function)

Reimplemented from DRAWSEGMENT.

Definition at line 419 of file class_edge_mod.cpp.

420 {
421  // Move an edge of the footprint.
422  // This is a footprint shape modification.
423  m_Start0 += aMoveVector;
424  m_End0 += aMoveVector;
425  m_Bezier0_C1 += aMoveVector;
426  m_Bezier0_C2 += aMoveVector;
427 
428  switch( GetShape() )
429  {
430  default:
431  break;
432 
433  case S_POLYGON:
434  // polygon corners coordinates are always relative to the
435  // footprint position, orientation 0
436  for( auto iter = m_Poly.Iterate(); iter; iter++ )
437  *iter += VECTOR2I( aMoveVector );
438 
439  break;
440  }
441 
442  SetDrawCoord();
443 }
wxPoint m_Bezier0_C2
Bezier Control Point 2, relative to module origin, orient 0.
STROKE_T GetShape() const
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
polygon (not yet used for tracks, but could be in microwave apps)
ITERATOR Iterate(int aFirst, int aLast, bool aIterateHoles=false)
Function Iterate returns an object to iterate through the points of the polygons between aFirst and a...
VECTOR2< int > VECTOR2I
Definition: vector2d.h:587
wxPoint m_End0
End point, relative to module origin, orient 0.
wxPoint m_Bezier0_C1
Bezier Control Point 1, relative to module origin, orient 0.
void SetDrawCoord()
Set draw coordinates (absolute values ) from relative coordinates.
wxPoint m_Start0
Start point or center, relative to module origin, orient 0.

References DRAWSEGMENT::GetShape(), SHAPE_POLY_SET::Iterate(), m_Bezier0_C1, m_Bezier0_C2, m_End0, DRAWSEGMENT::m_Poly, m_Start0, S_POLYGON, and SetDrawCoord().

Referenced by MODULE::MoveAnchorPosition().

◆ Move() [2/2]

void BOARD_ITEM::Move ( const VECTOR2I aMoveVector)
inlineinherited

Definition at line 246 of file class_board_item.h.

247  {
248  Move( wxPoint( aMoveVector.x, aMoveVector.y ) );
249  }
virtual void Move(const wxPoint &aMoveVector)
Function Move move this object.

References BOARD_ITEM::Move(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ Next()

◆ operator<()

bool EDA_ITEM::operator< ( const EDA_ITEM aItem) const
inherited

Test if another item is less than this object.

Parameters
aItem- Item to compare against.
Returns
- True if aItem is less than the item.

Definition at line 210 of file base_struct.cpp.

211 {
212  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
213  GetChars( GetClass() ) ) );
214 
215  return false;
216 }
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:101
virtual wxString GetClass() const =0
Function GetClass returns the class name.
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205

References Format(), GetChars(), and EDA_ITEM::GetClass().

◆ Print()

void EDGE_MODULE::Print ( PCB_BASE_FRAME aFrame,
wxDC *  DC,
const wxPoint &  offset = ZeroOffset 
)
overridevirtual

Function Print BOARD_ITEMs have their own color information.

Reimplemented from DRAWSEGMENT.

Definition at line 120 of file class_edge_mod.cpp.

121 {
122  int ux0, uy0, dx, dy, radius, StAngle, EndAngle;
123  MODULE* module = (MODULE*) m_Parent;
124  BOARD* brd = GetBoard( );
125 
126  if( !module || !brd->IsLayerVisible( m_Layer ) )
127  return;
128 
129  auto color = aFrame->Settings().Colors().GetLayerColor( m_Layer );
130  auto displ_opts = aFrame->GetDisplayOptions();
131 
132  ux0 = m_Start.x - offset.x;
133  uy0 = m_Start.y - offset.y;
134 
135  dx = m_End.x - offset.x;
136  dy = m_End.y - offset.y;
137 
138  bool filled = displ_opts.m_DisplayModEdgeFill;
139 
140  if( IsCopperLayer( m_Layer ) )
141  filled = displ_opts.m_DisplayPcbTrackFill;
142 
143  switch( m_Shape )
144  {
145  case S_SEGMENT:
146  if( filled )
147  GRLine( nullptr, DC, ux0, uy0, dx, dy, m_Width, color );
148  else
149  // SKETCH Mode
150  GRCSegm( nullptr, DC, ux0, uy0, dx, dy, m_Width, color );
151 
152  break;
153 
154  case S_CIRCLE:
155  radius = KiROUND( Distance( ux0, uy0, dx, dy ) );
156 
157  if( filled )
158  {
159  GRCircle( nullptr, DC, ux0, uy0, radius, m_Width, color );
160  }
161  else // SKETCH Mode
162  {
163  GRCircle( nullptr, DC, ux0, uy0, radius + (m_Width / 2), color );
164  GRCircle( nullptr, DC, ux0, uy0, radius - (m_Width / 2), color );
165  }
166 
167  break;
168 
169  case S_ARC:
170  radius = KiROUND( Distance( ux0, uy0, dx, dy ) );
171  StAngle = ArcTangente( dy - uy0, dx - ux0 );
172  EndAngle = StAngle + m_Angle;
173 
174  if( StAngle > EndAngle )
175  std::swap( StAngle, EndAngle );
176 
177  if( filled )
178  {
179  GRArc( nullptr, DC, ux0, uy0, StAngle, EndAngle, radius, m_Width, color );
180  }
181  else // SKETCH Mode
182  {
183  GRArc( nullptr, DC, ux0, uy0, StAngle, EndAngle, radius + (m_Width / 2), color );
184  GRArc( nullptr, DC, ux0, uy0, StAngle, EndAngle, radius - (m_Width / 2), color );
185  }
186  break;
187 
188  case S_POLYGON:
189  if( m_Poly.IsEmpty() )
190  break;
191 
192  {
193  // We must compute absolute coordinates from m_PolyPoints
194  // which are relative to module position, orientation 0
195  std::vector<wxPoint> points;
196 
197  for( auto iter = m_Poly.CIterate(); iter; iter++ )
198  {
199  points.push_back( wxPoint( iter->x,iter->y ) );
200  }
201 
202  for( unsigned ii = 0; ii < points.size(); ii++ )
203  {
204  wxPoint& pt = points[ii];
205 
206  RotatePoint( &pt.x, &pt.y, module->GetOrientation() );
207  pt += module->GetPosition() - offset;
208  }
209 
210  GRPoly( nullptr, DC, points.size(), &points[0], true, m_Width, color, color );
211  }
212  break;
213 
214  case S_CURVE:
215  {
217 
218  wxPoint& startp = m_BezierPoints[0];
219 
220  for( unsigned int i = 1; i < m_BezierPoints.size(); i++ )
221  {
222  wxPoint& endp = m_BezierPoints[i];
223 
224  if( filled )
225  GRFilledSegment( nullptr, DC, startp-offset, endp-offset, m_Width, color );
226  else
227  GRCSegm( nullptr, DC, startp-offset, endp-offset, m_Width, color );
228 
229  startp = m_BezierPoints[i];
230  }
231  }
232  break;
233 
234  default:
235  break;
236  }
237 }
double GetOrientation() const
Definition: class_module.h:218
void GRPoly(EDA_RECT *ClipBox, wxDC *DC, int n, wxPoint Points[], bool Fill, int width, COLOR4D Color, COLOR4D BgColor)
Definition: gr_basic.cpp:546
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:180
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
int color
Definition: DXF_plotter.cpp:62
polygon (not yet used for tracks, but could be in microwave apps)
bool IsEmpty() const
Returns true if the set is empty (no polygons at all)
void RebuildBezierToSegmentsPointsList(int aMinSegLen)
Rebuild the m_BezierPoints vertex list that approximate the Bezier curve by a list of segments Has me...
void GRCSegm(EDA_RECT *ClipBox, wxDC *DC, int x1, int y1, int x2, int y2, int width, int aPenSize, COLOR4D Color)
Definition: gr_basic.cpp:312
usual segment : line with rounded ends
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:206
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.
const PCB_DISPLAY_OPTIONS & GetDisplayOptions() const
Function GetDisplayOptions returns the display options current in use Display options are relative to...
PCB_LAYER_ID m_Layer
COLOR4D GetLayerColor(LAYER_NUM aLayer) const
Function GetLayerColor.
wxPoint m_Start
Line start point or Circle and Arc center.
double ArcTangente(int dy, int dx)
Definition: trigo.cpp:160
wxPoint m_End
Line end point or circle and arc start point.
PCB_GENERAL_SETTINGS & Settings()
Arcs (with rounded ends)
void GRArc(EDA_RECT *ClipBox, wxDC *DC, int xc, int yc, double StAngle, double EndAngle, int r, COLOR4D Color)
Definition: gr_basic.cpp:753
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
STROKE_T m_Shape
Shape: line, Circle, Arc.
Bezier Curve.
void GRLine(EDA_RECT *ClipBox, wxDC *DC, int x1, int y1, int x2, int y2, int width, COLOR4D Color, wxPenStyle aStyle)
Definition: gr_basic.cpp:230
CONST_ITERATOR CIterate(int aFirst, int aLast, bool aIterateHoles=false) const
COLORS_DESIGN_SETTINGS & Colors()
bool IsLayerVisible(PCB_LAYER_ID aLayer) const
Function IsLayerVisible is a proxy function that calls the correspondent function in m_BoardSettings ...
Definition: class_board.h:450
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:161
void GRFilledSegment(EDA_RECT *aClipBox, wxDC *aDC, wxPoint aStart, wxPoint aEnd, int aWidth, COLOR4D aColor)
Definition: gr_basic.cpp:423
void GRCircle(EDA_RECT *ClipBox, wxDC *DC, int xc, int yc, int r, int width, COLOR4D Color)
Definition: gr_basic.cpp:600
size_t i
Definition: json11.cpp:649
bool IsCopperLayer(LAYER_NUM aLayerId)
Function IsCopperLayer tests whether a layer is a copper layer.
int m_Width
thickness of lines ...
double Distance(double x1, double y1, double x2, double y2)
const wxPoint GetPosition() const override
Definition: class_module.h:213
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: common.h:114
std::vector< wxPoint > m_BezierPoints

References ArcTangente(), SHAPE_POLY_SET::CIterate(), color, PCB_GENERAL_SETTINGS::Colors(), Distance(), BOARD_ITEM::GetBoard(), PCB_BASE_FRAME::GetDisplayOptions(), COLORS_DESIGN_SETTINGS::GetLayerColor(), MODULE::GetOrientation(), MODULE::GetPosition(), GRArc(), GRCircle(), GRCSegm(), GRFilledSegment(), GRLine(), GRPoly(), i, IsCopperLayer(), SHAPE_POLY_SET::IsEmpty(), BOARD::IsLayerVisible(), KiROUND(), DRAWSEGMENT::m_Angle, DRAWSEGMENT::m_BezierPoints, DRAWSEGMENT::m_End, BOARD_ITEM::m_Layer, EDA_ITEM::m_Parent, DRAWSEGMENT::m_Poly, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, DRAWSEGMENT::m_Width, DRAWSEGMENT::RebuildBezierToSegmentsPointsList(), RotatePoint(), S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_SEGMENT, and PCB_BASE_FRAME::Settings().

◆ RebuildBezierToSegmentsPointsList()

void DRAWSEGMENT::RebuildBezierToSegmentsPointsList ( int  aMinSegLen)
inherited

Rebuild the m_BezierPoints vertex list that approximate the Bezier curve by a list of segments Has meaning only for S_CURVE DRAW_SEGMENT shape.

Parameters
aMinSegLenis the min length of segments approximating the shape. the last segment can be shorter This param avoid having too many very short segment in list. a good value is m_Width/2 to m_Width

Definition at line 226 of file class_drawsegment.cpp.

227 {
228  // Has meaning only for S_CURVE DRAW_SEGMENT shape
229  if( m_Shape != S_CURVE )
230  {
231  m_BezierPoints.clear();
232  return;
233  }
234  // Rebuild the m_BezierPoints vertex list that approximate the Bezier curve
235  std::vector<wxPoint> ctrlPoints = { m_Start, m_BezierC1, m_BezierC2, m_End };
236  BEZIER_POLY converter( ctrlPoints );
237  converter.GetPoly( m_BezierPoints, aMinSegLen );
238 }
wxPoint m_BezierC1
Bezier Control Point 1.
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
STROKE_T m_Shape
Shape: line, Circle, Arc.
Bezier Curve.
Bezier curves to polygon converter.
Definition: bezier_curves.h:35
wxPoint m_BezierC2
Bezier Control Point 2.
std::vector< wxPoint > m_BezierPoints

References BEZIER_POLY::GetPoly(), DRAWSEGMENT::m_BezierC1, DRAWSEGMENT::m_BezierC2, DRAWSEGMENT::m_BezierPoints, DRAWSEGMENT::m_End, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, and S_CURVE.

Referenced by ConvertOutlineToPolygon(), Flip(), Print(), DRAWSEGMENT::Print(), SetDrawCoord(), PNS_KICAD_IFACE::syncGraphicalItem(), DRC::testCopperDrawItem(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), and POINT_EDITOR::updateItem().

◆ Replace() [1/2]

bool EDA_ITEM::Replace ( wxFindReplaceData &  aSearchData,
wxString &  aText 
)
staticinherited

Helper function used in search and replace dialog Function Replace performs a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search and replace criteria.
aTextA reference to a wxString object containing the text to be replaced.
Returns
True if aText was modified, otherwise false.

Definition at line 183 of file base_struct.cpp.

184 {
185  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
186 
187  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
188  aSearchData.GetFindString() :
189  aSearchData.GetFindString().Upper() );
190 
191  if( result == wxNOT_FOUND )
192  return false;
193 
194  wxString prefix = aText.Left( result );
195  wxString suffix;
196 
197  if( aSearchData.GetFindString().length() + result < aText.length() )
198  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
199 
200  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
201  GetChars( aText ), GetChars( prefix ), GetChars( aSearchData.GetReplaceString() ),
202  GetChars( suffix ) );
203 
204  aText = prefix + aSearchData.GetReplaceString() + suffix;
205 
206  return true;
207 }
const wxChar *const traceFindReplace
Flag to enable find and replace debug tracing.
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:101

References GetChars(), and traceFindReplace.

Referenced by FOOTPRINT_INFO_GENERATOR::GetHtmlFieldRow(), SCH_FIELD::Replace(), EDA_TEXT::Replace(), SCH_SHEET::Replace(), and SCH_EDITOR_CONTROL::ReplaceAndFindNext().

◆ Replace() [2/2]

virtual bool EDA_ITEM::Replace ( wxFindReplaceData &  aSearchData,
void *  aAuxData = NULL 
)
inlinevirtualinherited

Function Replace performs a text replace using the find and replace criteria in aSearchData on items that support text find and replace.

This function must be overridden for items that support text replace.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search and replace criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
Returns
True if the item text was modified, otherwise false.

Reimplemented in SCH_SHEET, SCH_FIELD, SCH_SHEET_PIN, and SCH_TEXT.

Definition at line 544 of file base_struct.h.

544 { return false; }

◆ Rotate() [1/2]

void EDGE_MODULE::Rotate ( const wxPoint &  aRotCentre,
double  aAngle 
)
overridevirtual

Rotate an edge of the footprint.

This is a footprint shape modification. (should be only called by a footprint editing function )

Reimplemented from DRAWSEGMENT.

Definition at line 406 of file class_edge_mod.cpp.

407 {
408  // We should rotate the relative coordinates, but to avoid duplicate code,
409  // do the base class rotation of draw coordinates, which is acceptable
410  // because in module editor, m_Pos0 = m_Pos
411  DRAWSEGMENT::Rotate( aRotCentre, aAngle );
412 
413  // and now update the relative coordinates, which are
414  // the reference in most transforms.
415  SetLocalCoord();
416 }
void SetLocalCoord()
Set relative coordinates from draw coordinates.
virtual void Rotate(const wxPoint &aRotCentre, double aAngle) override
Function Rotate Rotate this object.

References DRAWSEGMENT::Rotate(), and SetLocalCoord().

Referenced by EAGLE_PLUGIN::packageRectangle().

◆ Rotate() [2/2]

void BOARD_ITEM::Rotate ( const VECTOR2I aRotCentre,
double  aAngle 
)
inlineinherited

Definition at line 262 of file class_board_item.h.

263  {
264  Rotate( wxPoint( aRotCentre.x, aRotCentre.y ), aAngle );
265  }
virtual void Rotate(const wxPoint &aRotCentre, double aAngle)
Function Rotate Rotate this object.

References BOARD_ITEM::Rotate(), VECTOR2< T >::x, and VECTOR2< T >::y.

◆ SetAngle()

void DRAWSEGMENT::SetAngle ( double  aAngle)
inherited

Function SetAngle sets the angle for arcs, and normalizes it within the range 0 - 360 degrees.

Parameters
aAngleis tenths of degrees, but will soon be degrees.

Definition at line 332 of file class_drawsegment.cpp.

333 {
334  // m_Angle must be >= -360 and <= +360 degrees
335  m_Angle = NormalizeAngle360Max( aAngle );
336 }
T NormalizeAngle360Max(T Angle)
Normalize angle to be >=-360.0 and <= 360.0 Angle can be equal to -360 or +360.
Definition: trigo.h:222
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.

References DRAWSEGMENT::m_Angle, and NormalizeAngle360Max().

Referenced by PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToModule(), PAD_CS_PRIMITIVE::ExportTo(), Flip(), EAGLE_PLUGIN::loadPlain(), Mirror(), EAGLE_PLUGIN::packageWire(), GPCB_FPL_CACHE::parseMODULE(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), updateArcFromConstructionMgr(), and POINT_EDITOR::updateItem().

◆ SetArcStart()

void DRAWSEGMENT::SetArcStart ( const wxPoint &  aArcStartPoint)
inlineinherited

Initialize the start arc point.

can be used for circles to initialize one point of the cicumference

Definition at line 158 of file class_drawsegment.h.

159  { m_End = aArcStartPoint; }
wxPoint m_End
Line end point or circle and arc start point.

References DRAWSEGMENT::m_End.

Referenced by updateArcFromConstructionMgr(), and POINT_EDITOR::updateItem().

◆ SetBack()

void EDA_ITEM::SetBack ( EDA_ITEM aBack)
inlineinherited

Definition at line 224 of file base_struct.h.

224 { Pback = aBack; }
EDA_ITEM * Pback
previous in linked list
Definition: base_struct.h:177

References EDA_ITEM::Pback.

Referenced by DHEAD::append(), DHEAD::insert(), SCH_EDIT_FRAME::PutDataInPreviousState(), and DHEAD::remove().

◆ SetBezControl1()

void DRAWSEGMENT::SetBezControl1 ( const wxPoint &  aPoint)
inlineinherited

Definition at line 101 of file class_drawsegment.h.

101 { m_BezierC1 = aPoint; }
wxPoint m_BezierC1
Bezier Control Point 1.

References DRAWSEGMENT::m_BezierC1.

Referenced by PAD_CS_PRIMITIVE::ExportTo(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), and POINT_EDITOR::updateItem().

◆ SetBezControl2()

void DRAWSEGMENT::SetBezControl2 ( const wxPoint &  aPoint)
inlineinherited

Definition at line 104 of file class_drawsegment.h.

104 { m_BezierC2 = aPoint; }
wxPoint m_BezierC2
Bezier Control Point 2.

References DRAWSEGMENT::m_BezierC2.

Referenced by PAD_CS_PRIMITIVE::ExportTo(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), and POINT_EDITOR::updateItem().

◆ SetBezier0_C1()

void EDGE_MODULE::SetBezier0_C1 ( const wxPoint &  aPoint)
inline

Definition at line 99 of file class_edge_mod.h.

99 { m_Bezier0_C1 = aPoint; }
wxPoint m_Bezier0_C1
Bezier Control Point 1, relative to module origin, orient 0.

References m_Bezier0_C1.

Referenced by DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

◆ SetBezier0_C2()

void EDGE_MODULE::SetBezier0_C2 ( const wxPoint &  aPoint)
inline

Definition at line 102 of file class_edge_mod.h.

102 { m_Bezier0_C2 = aPoint; }
wxPoint m_Bezier0_C2
Bezier Control Point 2, relative to module origin, orient 0.

References m_Bezier0_C2.

Referenced by DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

◆ SetBezierPoints()

void DRAWSEGMENT::SetBezierPoints ( const std::vector< wxPoint > &  aPoints)
inlineinherited

Definition at line 198 of file class_drawsegment.h.

199  {
200  m_BezierPoints = aPoints;
201  }
std::vector< wxPoint > m_BezierPoints

References DRAWSEGMENT::m_BezierPoints.

◆ SetBrightened()

void EDA_ITEM::SetBrightened ( )
inlineinherited

Definition at line 241 of file base_struct.h.

241 { SetFlags( BRIGHTENED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:265
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:143

References BRIGHTENED, and EDA_ITEM::SetFlags().

Referenced by GERBVIEW_SELECTION_TOOL::disambiguationMenu(), PL_SELECTION_TOOL::highlight(), EE_SELECTION_TOOL::highlight(), SELECTION_TOOL::highlight(), and SCH_EDITOR_CONTROL::UpdateNetHighlighting().

◆ SetCenter()

void DRAWSEGMENT::SetCenter ( const wxPoint &  aCenterPoint)
inlineinherited

For arcs and circles:

Definition at line 163 of file class_drawsegment.h.

163 { m_Start = aCenterPoint; }
wxPoint m_Start
Line start point or Circle and Arc center.

References DRAWSEGMENT::m_Start.

Referenced by updateArcFromConstructionMgr(), and POINT_EDITOR::updateItem().

◆ SetDrawCoord()

void EDGE_MODULE::SetDrawCoord ( )

Set draw coordinates (absolute values ) from relative coordinates.

Must be called when a relative coordinate has changed, in order to see the changes on screen

Definition at line 94 of file class_edge_mod.cpp.

95 {
96  MODULE* module = (MODULE*) m_Parent;
97 
98  m_Start = m_Start0;
99  m_End = m_End0;
102 
103  if( module )
104  {
105  RotatePoint( &m_Start.x, &m_Start.y, module->GetOrientation() );
106  RotatePoint( &m_End.x, &m_End.y, module->GetOrientation() );
107  RotatePoint( &m_BezierC1.x, &m_BezierC1.y, module->GetOrientation() );
108  RotatePoint( &m_BezierC2.x, &m_BezierC2.y, module->GetOrientation() );
109 
110  m_Start += module->GetPosition();
111  m_End += module->GetPosition();
112  m_BezierC1 += module->GetPosition();
113  m_BezierC2 += module->GetPosition();
114  }
115 
117 }
wxPoint m_Bezier0_C2
Bezier Control Point 2, relative to module origin, orient 0.
double GetOrientation() const
Definition: class_module.h:218
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:180
void RebuildBezierToSegmentsPointsList(int aMinSegLen)
Rebuild the m_BezierPoints vertex list that approximate the Bezier curve by a list of segments Has me...
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:206
wxPoint m_End0
End point, relative to module origin, orient 0.
wxPoint m_BezierC1
Bezier Control Point 1.
wxPoint m_Bezier0_C1
Bezier Control Point 1, relative to module origin, orient 0.
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
wxPoint m_BezierC2
Bezier Control Point 2.
int m_Width
thickness of lines ...
wxPoint m_Start0
Start point or center, relative to module origin, orient 0.
const wxPoint GetPosition() const override
Definition: class_module.h:213

References MODULE::GetOrientation(), MODULE::GetPosition(), m_Bezier0_C1, m_Bezier0_C2, DRAWSEGMENT::m_BezierC1, DRAWSEGMENT::m_BezierC2, DRAWSEGMENT::m_End, m_End0, EDA_ITEM::m_Parent, DRAWSEGMENT::m_Start, m_Start0, DRAWSEGMENT::m_Width, DRAWSEGMENT::RebuildBezierToSegmentsPointsList(), and RotatePoint().

Referenced by PCAD2KICAD::PCB_LINE::AddToModule(), PCAD2KICAD::PCB_ARC::AddToModule(), PCAD2KICAD::PCB_POLYGON::AddToModule(), LEGACY_PLUGIN::loadMODULE_EDGE(), Mirror(), Move(), EAGLE_PLUGIN::packageCircle(), EAGLE_PLUGIN::packagePolygon(), EAGLE_PLUGIN::packageWire(), GPCB_FPL_CACHE::parseMODULE(), PCB_PARSER::parseMODULE_unchecked(), and MODULE::SetPosition().

◆ SetEnd()

◆ SetEnd0()

void EDGE_MODULE::SetEnd0 ( const wxPoint &  aPoint)
inline

◆ SetEndX()

void DRAWSEGMENT::SetEndX ( int  x)
inlineinherited

Definition at line 126 of file class_drawsegment.h.

126 { m_End.x = x; }
wxPoint m_End
Line end point or circle and arc start point.

References DRAWSEGMENT::m_End.

Referenced by DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

◆ SetEndY()

void DRAWSEGMENT::SetEndY ( int  y)
inlineinherited

Definition at line 125 of file class_drawsegment.h.

125 { m_End.y = y; }
wxPoint m_End
Line end point or circle and arc start point.

References DRAWSEGMENT::m_End.

Referenced by DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

◆ SetFlags()

void EDA_ITEM::SetFlags ( STATUS_FLAGS  aMask)
inlineinherited

Definition at line 265 of file base_struct.h.

265 { m_Flags |= aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:187

References EDA_ITEM::m_Flags.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), PCB_BASE_FRAME::AddModuleToBoard(), PCBNEW_CONTROL::AppendBoard(), SCH_EDIT_FRAME::ConvertPart(), SCH_EDIT_FRAME::ConvertTextType(), SCH_EDIT_FRAME::CreateNewText(), LIB_PIN_TOOL::CreatePin(), SCH_EDIT_FRAME::CreateSheetPin(), SCH_EDIT_TOOL::DoDelete(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), KIGFX::SCH_PAINTER::draw(), DRAWING_TOOL::DrawArc(), DRAWING_TOOL::DrawCircle(), DRAWING_TOOL::DrawLine(), LIB_DRAWING_TOOLS::DrawShape(), SCH_EDIT_TOOL::Duplicate(), LIB_EDIT_FRAME::GetComponentFromRedoList(), LIB_EDIT_FRAME::GetComponentFromUndoList(), SCH_MOVE_TOOL::getConnectedDragItems(), KIGFX::SCH_VIEW::HighlightItem(), EDIT_POINTS_FACTORY::Make(), SCH_SCREEN::MarkConnections(), TRACKS_CLEANER::mergeCollinearSegments(), SCH_MOVE_TOOL::moveItem(), LIB_MOVE_TOOL::moveItem(), KIGFX::ORIGIN_VIEWITEM::ORIGIN_VIEWITEM(), LIB_EDIT_TOOL::Paste(), SCH_EDITOR_CONTROL::Paste(), SCH_DRAWING_TOOLS::PlaceComponent(), SCH_DRAWING_TOOLS::PlaceImage(), PL_DRAWING_TOOLS::PlaceItem(), PCB_EDITOR_CONTROL::PlaceModule(), DRAWING_TOOL::PlaceText(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_TOOL::RepeatDrawItem(), LIB_PIN_TOOL::RepeatPin(), LIB_EDIT_FRAME::SaveCopyInUndoList(), EE_SELECTION_TOOL::selectMultiple(), EE_SELECTION_TOOL::SelectPoint(), SCH_EDIT_FRAME::SelectUnit(), EDA_ITEM::SetBrightened(), LIB_PIN::SetConversion(), EDA_ITEM::SetHighlighted(), EDA_ITEM::SetModified(), EDA_ITEM::SetSelected(), EDA_ITEM::SetWireImage(), SCH_DRAWING_TOOLS::SingleClickPlace(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), WS_DATA_ITEM::SyncDrawItems(), WS_DATA_ITEM_TEXT::SyncDrawItems(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), LIB_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ SetForceVisible()

void EDA_ITEM::SetForceVisible ( bool  aEnable)
inlineinherited

Function SetForceVisible is used to set and cleag force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible.

Parameters
aEnableTrue forces the item to be drawn. False uses the item's visibility setting to determine if the item is to be drawn.

Definition at line 316 of file base_struct.h.

316 { m_forceVisible = aEnable; }
bool m_forceVisible
Set to true to override the visibility setting of the item.
Definition: base_struct.h:184

References EDA_ITEM::m_forceVisible.

◆ SetHighlighted()

void EDA_ITEM::SetHighlighted ( )
inlineinherited

Definition at line 240 of file base_struct.h.

240 { SetFlags( HIGHLIGHTED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:265
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:142

References HIGHLIGHTED, and EDA_ITEM::SetFlags().

◆ SetLayer()

virtual void BOARD_ITEM::SetLayer ( PCB_LAYER_ID  aLayer)
inlinevirtualinherited

Function SetLayer sets the layer this item is on.

Parameters
aLayerThe layer number. is virtual because some items (in fact: class DIMENSION) have a slightly different initialization

Reimplemented in ZONE_CONTAINER, and DIMENSION.

Definition at line 148 of file class_board_item.h.

149  {
150  // trap any invalid layers, then go find the caller and fix it.
151  // wxASSERT( unsigned( aLayer ) < unsigned( NB_PCB_LAYERS ) );
152  m_Layer = aLayer;
153  }
PCB_LAYER_ID m_Layer

References BOARD_ITEM::m_Layer.

Referenced by PNS_KICAD_IFACE::AddItem(), PCAD2KICAD::PCB_TEXT::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_MODULE::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToModule(), PCAD2KICAD::PCB_ARC::AddToModule(), PCAD2KICAD::PCB_POLYGON::AddToModule(), DIMENSION::AdjustDimensionDetails(), PCB_EDIT_FRAME::Create_MuWavePolygonShape(), MWAVE::CreateMicrowaveInductor(), PCB_BASE_FRAME::CreateNewModule(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::drawSegment(), TEXTE_PCB::Flip(), PCB_TARGET::Flip(), Flip(), TRACK::Flip(), TEXTE_MODULE::Flip(), DRAWSEGMENT::Flip(), MODULE::Flip(), LEGACY_PLUGIN::loadMODULE(), LEGACY_PLUGIN::loadMODULE_TEXT(), LEGACY_PLUGIN::loadPCB_TEXT(), EAGLE_PLUGIN::loadPlain(), EAGLE_PLUGIN::loadSignals(), LEGACY_PLUGIN::loadTrackList(), DSN::SPECCTRA_DB::makeTRACK(), DIALOG_FOOTPRINT_FP_EDITOR::OnAddField(), DIALOG_FOOTPRINT_BOARD_EDITOR::OnAddField(), EAGLE_PLUGIN::packageCircle(), EAGLE_PLUGIN::packagePolygon(), EAGLE_PLUGIN::packageRectangle(), EAGLE_PLUGIN::packageSMD(), EAGLE_PLUGIN::packageText(), EAGLE_PLUGIN::packageWire(), GPCB_FPL_CACHE::parseMODULE(), PCB_EDITOR_CONTROL::PlaceTarget(), DRAWING_TOOL::PlaceText(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotPcbTarget(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem(), processTextItem(), DIALOG_PAD_PROPERTIES::redraw(), DIMENSION::SetLayer(), TEXT_MOD_GRID_TABLE::SetValueAsLong(), GLOBAL_EDIT_TOOL::swapBoardItem(), TEXTE_MODULE::TEXTE_MODULE(), DIALOG_TRACK_VIA_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), and DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

◆ SetList()

void EDA_ITEM::SetList ( DHEAD aList)
inlineinherited

Definition at line 226 of file base_struct.h.

226 { m_List = aList; }
DHEAD * m_List
which DLIST I am on.
Definition: base_struct.h:178

References EDA_ITEM::m_List.

Referenced by DHEAD::append(), DHEAD::insert(), and DHEAD::remove().

◆ SetLocalCoord()

void EDGE_MODULE::SetLocalCoord ( )

Set relative coordinates from draw coordinates.

Call in only when the geometry ov the footprint is modified and therefore the relative coordinates have to be updated from the draw coordinates

Definition at line 69 of file class_edge_mod.cpp.

70 {
71  MODULE* module = (MODULE*) m_Parent;
72 
73  if( module == NULL )
74  {
75  m_Start0 = m_Start;
76  m_End0 = m_End;
79  return;
80  }
81 
82  m_Start0 = m_Start - module->GetPosition();
83  m_End0 = m_End - module->GetPosition();
84  m_Bezier0_C1 = m_BezierC1 - module->GetPosition();
85  m_Bezier0_C2 = m_BezierC2 - module->GetPosition();
86  double angle = module->GetOrientation();
87  RotatePoint( &m_Start0.x, &m_Start0.y, -angle );
88  RotatePoint( &m_End0.x, &m_End0.y, -angle );
91 }
wxPoint m_Bezier0_C2
Bezier Control Point 2, relative to module origin, orient 0.
double GetOrientation() const
Definition: class_module.h:218
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:180
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:206
wxPoint m_End0
End point, relative to module origin, orient 0.
wxPoint m_BezierC1
Bezier Control Point 1.
wxPoint m_Bezier0_C1
Bezier Control Point 1, relative to module origin, orient 0.
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
static DIRECTION_45::AngleType angle(const VECTOR2I &a, const VECTOR2I &b)
wxPoint m_BezierC2
Bezier Control Point 2.
wxPoint m_Start0
Start point or center, relative to module origin, orient 0.
const wxPoint GetPosition() const override
Definition: class_module.h:213

References PNS::angle(), MODULE::GetOrientation(), MODULE::GetPosition(), m_Bezier0_C1, m_Bezier0_C2, DRAWSEGMENT::m_BezierC1, DRAWSEGMENT::m_BezierC2, DRAWSEGMENT::m_End, m_End0, EDA_ITEM::m_Parent, DRAWSEGMENT::m_Start, m_Start0, and RotatePoint().

Referenced by PAD_CS_PRIMITIVE::ExportTo(), PCBNEW_CONTROL::Paste(), and Rotate().

◆ SetLocked()

virtual void BOARD_ITEM::SetLocked ( bool  aLocked)
inlinevirtualinherited

Function SetLocked modifies 'lock' status for of the item.

Reimplemented in MODULE, and TRACK.

Definition at line 210 of file class_board_item.h.

211  {
212  // only MODULEs & TRACKs can be locked at this time.
213  }

Referenced by PCB_EDITOR_CONTROL::modifyLockSelected().

◆ SetModified()

◆ SetNext()

void EDA_ITEM::SetNext ( EDA_ITEM aNext)
inlineinherited

Definition at line 223 of file base_struct.h.

223 { Pnext = aNext; }
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:176

References EDA_ITEM::Pnext.

Referenced by DHEAD::append(), DHEAD::insert(), SCH_EDIT_FRAME::PutDataInPreviousState(), and DHEAD::remove().

◆ SetParent()

◆ SetPolyPoints()

void DRAWSEGMENT::SetPolyPoints ( const std::vector< wxPoint > &  aPoints)
inherited

Definition at line 942 of file class_drawsegment.cpp.

943 {
945  m_Poly.NewOutline();
946 
947  for ( auto p : aPoints )
948  {
949  m_Poly.Append( p.x, p.y );
950  }
951 }
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
int NewOutline()
Creates a new empty polygon in the set and returns its index
void RemoveAllContours()
Removes all outlines & holes (clears) the polygon set.
int Append(int x, int y, int aOutline=-1, int aHole=-1, bool aAllowDuplication=false)
Appends a vertex at the end of the given outline/hole (default: the last outline)

References SHAPE_POLY_SET::Append(), DRAWSEGMENT::m_Poly, SHAPE_POLY_SET::NewOutline(), and SHAPE_POLY_SET::RemoveAllContours().

Referenced by PCAD2KICAD::PCB_POLYGON::AddToModule(), PCB_EDIT_FRAME::Create_MuWavePolygonShape(), PAD_CS_PRIMITIVE::ExportTo(), EAGLE_PLUGIN::packagePolygon(), and EAGLE_PLUGIN::packageRectangle().

◆ SetPolyShape()

void DRAWSEGMENT::SetPolyShape ( const SHAPE_POLY_SET aShape)
inlineinherited

Definition at line 196 of file class_drawsegment.h.

196 { m_Poly = aShape; }
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.

References DRAWSEGMENT::m_Poly.

◆ SetPosition()

void DRAWSEGMENT::SetPosition ( const wxPoint &  aPos)
overridevirtualinherited

Implements BOARD_ITEM.

Definition at line 59 of file class_drawsegment.cpp.

60 {
61  m_Start = aPos;
62 }
wxPoint m_Start
Line start point or Circle and Arc center.

References DRAWSEGMENT::m_Start.

◆ SetSelected()

void EDA_ITEM::SetSelected ( )
inlineinherited

◆ SetShape()

◆ SetStart()

◆ SetStart0()

void EDGE_MODULE::SetStart0 ( const wxPoint &  aPoint)
inline

◆ SetStartX()

void DRAWSEGMENT::SetStartX ( int  x)
inlineinherited

Definition at line 117 of file class_drawsegment.h.

117 { m_Start.x = x; }
wxPoint m_Start
Line start point or Circle and Arc center.

References DRAWSEGMENT::m_Start.

Referenced by DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

◆ SetStartY()

void DRAWSEGMENT::SetStartY ( int  y)
inlineinherited

Definition at line 116 of file class_drawsegment.h.

116 { m_Start.y = y; }
wxPoint m_Start
Line start point or Circle and Arc center.

References DRAWSEGMENT::m_Start.

Referenced by DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

◆ SetState()

void EDA_ITEM::SetState ( int  type,
int  state 
)
inlineinherited

Definition at line 254 of file base_struct.h.

255  {
256  if( state )
257  m_Status |= type; // state = ON or OFF
258  else
259  m_Status &= ~type;
260  }
STATUS_FLAGS m_Status
Definition: base_struct.h:173

References EDA_ITEM::m_Status.

Referenced by LEGACY_PLUGIN::loadTrackList(), TRACKS_CLEANER::mergeCollinearSegments(), and TRACK::SetLocked().

◆ SetStatus()

void EDA_ITEM::SetStatus ( STATUS_FLAGS  aStatus)
inlineinherited

Definition at line 263 of file base_struct.h.

263 { m_Status = aStatus; }
STATUS_FLAGS m_Status
Definition: base_struct.h:173

References EDA_ITEM::m_Status.

Referenced by BOARD_NETLIST_UPDATER::UpdateNetlist().

◆ SetTimeStamp()

void EDA_ITEM::SetTimeStamp ( timestamp_t  aNewTimeStamp)
inlineinherited

Definition at line 215 of file base_struct.h.

215 { m_TimeStamp = aNewTimeStamp; }
timestamp_t m_TimeStamp
Time stamp used for logical links.
Definition: base_struct.h:181

References EDA_ITEM::m_TimeStamp.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_FRAME::AddModuleToBoard(), BOARD_NETLIST_UPDATER::addNewComponent(), PCAD2KICAD::PCB_TEXT::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_POLYGON::AddToBoard(), PCAD2KICAD::PCB_MODULE::AddToBoard(), Diagnose(), SCH_EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), DIALOG_FOOTPRINT_BOARD_EDITOR::EditFootprint(), PCB_EDIT_FRAME::Exchange_Module(), PCB_IO::FootprintSave(), EDA_ITEM::initVars(), BOARD::InsertArea(), LEGACY_PLUGIN::loadMODULE(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), EAGLE_PLUGIN::loadPlain(), EAGLE_PLUGIN::loadPolygon(), SCH_EDIT_FRAME::LoadSheetFromFile(), EAGLE_PLUGIN::loadSignals(), LEGACY_PLUGIN::loadTrackList(), EDA_ITEM::operator=(), EAGLE_PLUGIN::packageCircle(), EAGLE_PLUGIN::packagePolygon(), EAGLE_PLUGIN::packageRectangle(), EAGLE_PLUGIN::packageText(), PCB_PARSER::parseDIMENSION(), SCH_EDITOR_CONTROL::Paste(), PCB_EDITOR_CONTROL::PlaceModule(), SCH_EDIT_TOOL::RepeatDrawItem(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SHEET::SCH_SHEET(), SCH_COMPONENT::SetTimeStamp(), SimilarLabelsDiagnose(), SwapItemData(), TestDuplicateSheetNames(), DIALOG_ERC::TestErc(), and TestMultiunitFootprints().

◆ SetType()

void DRAWSEGMENT::SetType ( int  aType)
inlineinherited

Definition at line 95 of file class_drawsegment.h.

95 { m_Type = aType; }
int m_Type
Used in complex associations ( Dimensions.. )

References DRAWSEGMENT::m_Type.

◆ SetWidth()

◆ SetWireImage()

void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 238 of file base_struct.h.

238 { SetFlags( IS_WIRE_IMAGE ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:265
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:124

References IS_WIRE_IMAGE, and EDA_ITEM::SetFlags().

◆ ShowShape()

wxString BOARD_ITEM::ShowShape ( STROKE_T  aShape)
staticinherited

Function ShowShape converts the enum STROKE_T integer value to a wxString.

Definition at line 39 of file class_board_item.cpp.

40 {
41  switch( aShape )
42  {
43  case S_SEGMENT: return _( "Line" );
44  case S_RECT: return _( "Rect" );
45  case S_ARC: return _( "Arc" );
46  case S_CIRCLE: return _( "Circle" );
47  case S_CURVE: return _( "Bezier Curve" );
48  case S_POLYGON: return _( "Polygon" );
49  default: return wxT( "??" );
50  }
51 }
polygon (not yet used for tracks, but could be in microwave apps)
usual segment : line with rounded ends
segment with non rounded ends
Arcs (with rounded ends)
Bezier Curve.
#define _(s)

References _, S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_RECT, and S_SEGMENT.

Referenced by ConvertOutlineToPolygon(), DRAWSEGMENT::GetCenter(), GetSelectMenuText(), DRAWSEGMENT::GetSelectMenuText(), DSN::SPECCTRA_DB::makeIMAGE(), PAD_CS_PRIMITIVE::Rotate(), and DRAWSEGMENT::Rotate().

◆ Sort()

static bool EDA_ITEM::Sort ( const EDA_ITEM aLeft,
const EDA_ITEM aRight 
)
inlinestaticinherited

Function Sort is a helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers.

Parameters
aLeftThe left hand item to compare.
aRightThe right hand item to compare.
Returns
True if aLeft is less than aRight.

Definition at line 575 of file base_struct.h.

575 { return *aLeft < *aRight; }

◆ SwapData()

void DRAWSEGMENT::SwapData ( BOARD_ITEM aImage)
overridevirtualinherited

Swap data between aItem and aImage.

aItem and aImage should have the same type Used in undo redo command to swap values between an item and its copy Only values like layer, size .. which are modified by editing are swapped, not the pointers like Pnext and Pback because aItem is not changed in the linked list

Parameters
aImage= the item image which contains data to swap

Reimplemented from BOARD_ITEM.

Definition at line 996 of file class_drawsegment.cpp.

997 {
998  DRAWSEGMENT* image = dynamic_cast<DRAWSEGMENT*>( aImage );
999  assert( image );
1000 
1001  std::swap( m_Width, image->m_Width );
1002  std::swap( m_Start, image->m_Start );
1003  std::swap( m_End, image->m_End );
1004  std::swap( m_Shape, image->m_Shape );
1005  std::swap( m_Type, image->m_Type );
1006  std::swap( m_Angle, image->m_Angle );
1007  std::swap( m_BezierC1, image->m_BezierC1 );
1008  std::swap( m_BezierC2, image->m_BezierC2 );
1009  std::swap( m_BezierPoints, image->m_BezierPoints );
1010  std::swap( m_Poly, image->m_Poly );
1011 }
SHAPE_POLY_SET m_Poly
Stores the S_POLYGON shape.
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.
wxPoint m_BezierC1
Bezier Control Point 1.
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
STROKE_T m_Shape
Shape: line, Circle, Arc.
int m_Type
Used in complex associations ( Dimensions.. )
wxPoint m_BezierC2
Bezier Control Point 2.
int m_Width
thickness of lines ...
std::vector< wxPoint > m_BezierPoints

References DRAWSEGMENT::m_Angle, DRAWSEGMENT::m_BezierC1, DRAWSEGMENT::m_BezierC2, DRAWSEGMENT::m_BezierPoints, DRAWSEGMENT::m_End, DRAWSEGMENT::m_Poly, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, DRAWSEGMENT::m_Type, and DRAWSEGMENT::m_Width.

◆ TransformShapeWithClearanceToPolygon()

void DRAWSEGMENT::TransformShapeWithClearanceToPolygon ( SHAPE_POLY_SET aCornerBuffer,
int  aClearanceValue,
int  aError = ARC_HIGH_DEF,
bool  ignoreLineWidth = false 
) const
overridevirtualinherited

Function TransformShapeWithClearanceToPolygon Convert the draw segment to a closed polygon Used in filling zones calculations Circles and arcs are approximated by segments.

Parameters
aCornerBuffer= a buffer to store the polygon
aClearanceValue= the clearance around the pad
aError= the maximum deviation from a true arc
ignoreLineWidth= used for edge cut items where the line width is only for visualization

Reimplemented from BOARD_ITEM.

Definition at line 409 of file board_items_to_polygon_shape_transform.cpp.

412 {
413  int width = ignoreLineWidth ? 0 : m_Width;
414 
415  width += 2 * aClearanceValue;
416 
417  // Creating a reliable clearance shape for circles and arcs is not so easy, due to
418  // the error created by segment approximation.
419  // for a circle this is not so hard: create a polygon from a circle slightly bigger:
420  // thickness = width + s_error_max, and radius = initial radius + s_error_max/2
421  // giving a shape with a suitable internal radius and external radius
422  // For an arc this is more tricky: TODO
423 
424  switch( m_Shape )
425  {
426  case S_CIRCLE:
427  TransformRingToPolygon( aCornerBuffer, GetCenter(), GetRadius(), aError, width );
428  break;
429 
430  case S_ARC:
431  TransformArcToPolygon( aCornerBuffer, GetCenter(), GetArcStart(), m_Angle, aError, width );
432  break;
433 
434  case S_SEGMENT:
435  TransformOvalToPolygon( aCornerBuffer, m_Start, m_End, width, aError );
436  break;
437 
438  case S_POLYGON:
439  if( IsPolyShapeValid() )
440  {
441  // The polygon is expected to be a simple polygon
442  // not self intersecting, no hole.
443  MODULE* module = GetParentModule(); // NULL for items not in footprints
444  double orientation = module ? module->GetOrientation() : 0.0;
445  wxPoint offset;
446 
447  if( module )
448  offset = module->GetPosition();
449 
450  // Build the polygon with the actual position and orientation:
451  std::vector< wxPoint> poly;
452  poly = BuildPolyPointsList();
453 
454  for( wxPoint& point : poly )
455  {
456  RotatePoint( &point, orientation );
457  point += offset;
458  }
459 
460  // If the polygon is not filled, treat it as a closed set of lines
461  if( !IsPolygonFilled() )
462  {
463  for( size_t ii = 1; ii < poly.size(); ii++ )
464  TransformOvalToPolygon( aCornerBuffer, poly[ii-1], poly[ii], width, aError );
465 
466  TransformOvalToPolygon( aCornerBuffer, poly.back(), poly.front(), width, aError );
467  break;
468  }
469 
470  // Generate polygons for the outline + clearance
471  // This code is compatible with a polygon with holes linked to external outline
472  // by overlapping segments.
473 
474  // Insert the initial polygon:
475  aCornerBuffer.NewOutline();
476 
477  for( wxPoint& point : poly )
478  aCornerBuffer.Append( point.x, point.y );
479 
480  if( width != 0 ) // Add thick outlines
481  {
482  wxPoint pt1( poly[ poly.size() - 1] );
483 
484  for( wxPoint pt2 : poly )
485  {
486  if( pt2 != pt1 )
487  TransformSegmentToPolygon( aCornerBuffer, pt1, pt2, aError, width );
488 
489  pt1 = pt2;
490  }
491  }
492  }
493  break;
494 
495  case S_CURVE: // Bezier curve
496  {
497  std::vector<wxPoint> ctrlPoints = { m_Start, m_BezierC1, m_BezierC2, m_End };
498  BEZIER_POLY converter( ctrlPoints );
499  std::vector< wxPoint> poly;
500  converter.GetPoly( poly, m_Width );
501 
502  if( width != 0 )
503  {
504  for( unsigned ii = 1; ii < poly.size(); ii++ )
505  TransformSegmentToPolygon( aCornerBuffer, poly[ii-1], poly[ii], aError, width );
506  }
507  }
508  break;
509 
510  default:
511  break;
512  }
513 }
double GetOrientation() const
Definition: class_module.h:218
void TransformArcToPolygon(SHAPE_POLY_SET &aCornerBuffer, wxPoint aCentre, wxPoint aStart, double aArcAngle, int aError, int aWidth)
Function TransformArcToPolygon Creates a polygon from an Arc Convert arcs to multiple straight segmen...
const wxPoint GetCenter() const override
Function GetCenter()
polygon (not yet used for tracks, but could be in microwave apps)
void TransformRingToPolygon(SHAPE_POLY_SET &aCornerBuffer, wxPoint aCentre, int aRadius, int aError, int aWidth)
Function TransformRingToPolygon Creates a polygon from a ring Convert arcs to multiple straight segme...
usual segment : line with rounded ends
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:206
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.
const std::vector< wxPoint > BuildPolyPointsList() const
Build and return the list of corners in a std::vector<wxPoint> It must be used only to convert the SH...
wxPoint m_BezierC1
Bezier Control Point 1.
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
Arcs (with rounded ends)
MODULE * GetParentModule() const
Function GetParentModule returns a pointer to the parent module, or NULL if DRAWSEGMENT does not belo...
STROKE_T m_Shape
Shape: line, Circle, Arc.
const wxPoint & GetArcStart() const
int GetRadius() const
Function GetRadius returns the radius of this item Has meaning only for arc and circle.
Bezier Curve.
int NewOutline()
Creates a new empty polygon in the set and returns its index
Bezier curves to polygon converter.
Definition: bezier_curves.h:35
void TransformSegmentToPolygon(SHAPE_POLY_SET &aCornerBuffer, wxPoint aStart, wxPoint aEnd, int aError, int aWidth)
Function TransformRoundedEndsSegmentToPolygon convert a segment with rounded ends to a polygon Conver...
void TransformOvalToPolygon(SHAPE_POLY_SET &aCornerBuffer, wxPoint aStart, wxPoint aEnd, int aWidth, int aError)
convert a oblong shape to a polygon, using multiple segments It is similar to TransformRoundedEndsSeg...
wxPoint m_BezierC2
Bezier Control Point 2.
bool IsPolyShapeValid() const
int m_Width
thickness of lines ...
bool IsPolygonFilled() const
Polygonal shape is not always filled.
const wxPoint GetPosition() const override
Definition: class_module.h:213
int Append(int x, int y, int aOutline=-1, int aHole=-1, bool aAllowDuplication=false)
Appends a vertex at the end of the given outline/hole (default: the last outline)

References SHAPE_POLY_SET::Append(), DRAWSEGMENT::BuildPolyPointsList(), DRAWSEGMENT::GetArcStart(), DRAWSEGMENT::GetCenter(), MODULE::GetOrientation(), DRAWSEGMENT::GetParentModule(), BEZIER_POLY::GetPoly(), MODULE::GetPosition(), DRAWSEGMENT::GetRadius(), DRAWSEGMENT::IsPolygonFilled(), DRAWSEGMENT::IsPolyShapeValid(), DRAWSEGMENT::m_Angle, DRAWSEGMENT::m_BezierC1, DRAWSEGMENT::m_BezierC2, DRAWSEGMENT::m_End, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, DRAWSEGMENT::m_Width, SHAPE_POLY_SET::NewOutline(), RotatePoint(), S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_SEGMENT, TransformArcToPolygon(), TransformOvalToPolygon(), TransformRingToPolygon(), and TransformSegmentToPolygon().

Referenced by ZONE_FILLER::addKnockout(), CINFO3D_VISU::AddShapeWithClearanceToContainer(), CINFO3D_VISU::transformGraphicModuleEdgeToPolygonSet(), and MODULE::TransformGraphicShapesWithClearanceToPolygonSet().

◆ Type()

KICAD_T EDA_ITEM::Type ( ) const
inlineinherited

Function Type()

returns the type of object. This attribute should never be changed after a constructor sets it, so there is no public "setter" method.

Returns
KICAD_T - the type of object.

Definition at line 210 of file base_struct.h.

211  {
212  return m_StructType;
213  }
KICAD_T m_StructType
Run time identification, keep private so it can never be changed after a constructor sets it.
Definition: base_struct.h:172

References EDA_ITEM::m_StructType.

Referenced by MODULE::Add(), CN_CONNECTIVITY_ALGO::Add(), BOARD::Add(), CN_CLUSTER::Add(), POINT_EDITOR::addCorner(), CONNECTION_SUBGRAPH::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_LINE_WIRE_BUS_TOOL::AddJunctionsIfNeeded(), ZONE_FILLER::addKnockout(), SCH_SHEET::AddPin(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), CN_ITEM::AnchorCount(), CONNECTION_GRAPH::buildConnectionGraph(), HIERARCHY_NAVIG_DLG::buildHierarchyTree(), SCH_SCREENS::buildScreenList(), SCH_SHEET_LIST::BuildSheetList(), calcArea(), calcMaxArea(), PCB_INSPECTION_TOOL::calculateSelectionRatsnest(), POINT_EDITOR::canAddCorner(), SCH_JUNCTION::CanConnect(), SCH_NO_CONNECT::CanConnect(), SCH_BUS_WIRE_ENTRY::CanConnect(), SCH_LINE::CanConnect(), SCH_BUS_BUS_ENTRY::CanConnect(), SCH_LABEL::CanConnect(), SCH_GLOBALLABEL::CanConnect(), SCH_HIERLABEL::CanConnect(), SCH_SHEET::CanConnect(), SCH_COMPONENT::CanConnect(), ROUTER_TOOL::CanInlineDrag(), SCH_SCREENS::ChangeSymbolLibNickname(), SCH_MARKER::ClassOf(), SCH_JUNCTION::ClassOf(), SCH_NO_CONNECT::ClassOf(), TEXTE_PCB::ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), SCH_PIN::ClassOf(), ClassOf(), PCB_TARGET::ClassOf(), SCH_LINE::ClassOf(), SCH_FIELD::ClassOf(), TEXTE_MODULE::ClassOf(), DRAWSEGMENT::ClassOf(), MARKER_PCB::ClassOf(), TRACK::ClassOf(), SCH_BITMAP::ClassOf(), ZONE_CONTAINER::ClassOf(), DIMENSION::ClassOf(), NETINFO_ITEM::ClassOf(), SCH_SHEET_PIN::ClassOf(), SCH_TEXT::ClassOf(), SCH_SCREEN::ClassOf(), MODULE::ClassOf(), SCH_BUS_WIRE_ENTRY::ClassOf(), SCH_COMPONENT::ClassOf(), D_PAD::ClassOf(), SCH_BUS_BUS_ENTRY::ClassOf(), BOARD::ClassOf(), SCH_LABEL::ClassOf(), SCH_SHEET::ClassOf(), SCH_GLOBALLABEL::ClassOf(), VIA::ClassOf(), SCH_HIERLABEL::ClassOf(), TRACKS_CLEANER::cleanupSegments(), SCH_SHEET::CleanupSheet(), EE_COLLECTOR::Collect(), LIB_RECTANGLE::compare(), LIB_CIRCLE::compare(), LIB_BEZIER::compare(), LIB_TEXT::compare(), LIB_POLYLINE::compare(), LIB_ARC::compare(), LIB_FIELD::compare(), LIB_PIN::compare(), SCH_SHEET::ComponentCount(), GRID_HELPER::computeAnchors(), SCH_BUS_WIRE_ENTRY::ConnectionPropagatesTo(), SCH_EDIT_FRAME::ConvertTextType(), SCH_SCREEN::CountConnectedItems(), SCH_SHEET::CountSheets(), MODULE::CoverageRatio(), CINFO3D_VISU::createLayers(), SCH_EDIT_FRAME::CreateNewText(), CINFO3D_VISU::createNewTrack(), D_PAD::D_PAD(), SCH_SCREENS::DeleteAllMarkers(), SCH_SCREEN::DeleteItem(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_ERC::DisplayERC_MarkersList(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), SCH_EDITOR_CONTROL::doCopy(), SCH_EDIT_TOOL::DoDelete(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), DRC::doTrackDrc(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::Draw(), KIGFX::PCB_PAINTER::Draw(), KIGFX::PCB_PAINTER::draw(), CN_ITEM::Dump(), SCH_ITEM::Duplicate(), BOARD::Duplicate(), MODULE::Duplicate(), SCH_EDIT_TOOL::EditField(), LIB_EDIT_TOOL::editTextProperties(), EditToolSelectionFilter(), CONNECTION_GRAPH::ercCheckLabels(), SCH_EDITOR_CONTROL::FindComponentAndItem(), NETLIST_EXPORTER::findNextComponent(), NETLIST_EXPORTER::findNextComponentAndCreatePinList(), SCH_SHEET_PATH::FindNextItem(), SCH_SHEET_LIST::FindNextItem(), SCH_SHEET_PATH::FindPreviousItem(), SCH_SHEET_LIST::FindPreviousItem(), EDIT_TOOL::FootprintFilter(), SCH_LEGACY_PLUGIN::Format(), PCB_IO::Format(), PCB_IO::format(), FormatProbeItem(), POINT_EDITOR::get45DegConstrainer(), CN_ITEM::GetAnchor(), BOARD_ITEM::GetBoard(), TRACK::GetBoundingBox(), KIGFX::GERBVIEW_RENDER_SETTINGS::GetColor(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), NETLIST_OBJECT::GetComponentParent(), SCH_MOVE_TOOL::getConnectedDragItems(), SCH_TEXT::GetConnectionPoints(), CONNECTION_SUBGRAPH::GetDriverPriority(), SCH_TEXT::GetEndPoints(), SCH_SHEET::GetEndPoints(), SCH_SCREEN::GetHierarchicalItems(), PL_EDITOR_FRAME::GetLayoutFromRedoList(), PL_EDITOR_FRAME::GetLayoutFromUndoList(), SCH_SCREENS::GetLibNicknames(), TEXTE_PCB::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), CONNECTION_SUBGRAPH::GetNameForDriver(), CONNECTIVITY_DATA::GetNetItems(), LIB_PART::GetNextDrawItem(), DRAWSEGMENT::GetParentModule(), SCH_SCREEN::GetPin(), LIB_PART::GetPin(), SCH_COMPONENT::GetPinPhysicalPosition(), getRect(), KIGFX::SCH_PAINTER::getRenderColor(), PCBNEW_SELECTION::GetTopLeftItem(), SELECTION_TOOL::GuessSelectionCandidates(), EE_SELECTION_TOOL::GuessSelectionCandidates(), hash_eda(), SCH_SCREENS::HasNoFullyDefinedLibIds(), SCH_SHEET::HasUndefinedPins(), EE_SELECTION_TOOL::highlight(), SELECTION_TOOL::highlight(), KIGFX::SCH_VIEW::HighlightItem(), SCH_EDIT_TOOL::Init(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), EE_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), PCB_LAYER_COLLECTOR::Inspect(), ARRAY_CREATOR::Invoke(), isNewSegment(), TRACK::IsNull(), SCH_LINE::IsParallel(), SCH_SCREEN::IsTerminalPoint(), BOARD_ITEM::IsTrack(), itemIsIncludedByFilter(), CLIPBOARD_IO::Load(), PNS_PCBNEW_RULE_RESOLVER::localPadClearance(), SCH_SHEET::LocatePathOfScreen(), SCH_MOVE_TOOL::Main(), EE_POINT_EDITOR::Main(), LIB_MOVE_TOOL::Main(), EE_SELECTION_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), SCH_SCREEN::MarkConnections(), CN_CONNECTIVITY_ALGO::markItemNetAsDirty(), CONNECTIVITY_DATA::MarkItemNetAsDirty(), SCH_LINE::MergeOverlap(), SCH_EDIT_TOOL::Mirror(), SCH_MOVE_TOOL::moveItem(), SCH_CONNECTION::Name(), nextMatch(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), POINT_EDITOR::OnSelectionChange(), SCH_LINE::operator<(), LIB_ITEM::operator<(), SCH_ITEM::operator<(), SCH_COMPONENT::operator<(), SCH_BITMAP::operator=(), SCH_SHEET::operator=(), SCH_COMPONENT::operator=(), LIB_ITEM::operator==(), EDIT_TOOL::PadFilter(), BOARD_COMMIT::parentObject(), PCBNEW_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), DRAWING_TOOL::PlaceImportedGraphics(), SCH_FIELD::Plot(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), LIB_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SELECTION_TOOL::RebuildSelection(), EE_SELECTION_TOOL::RebuildSelection(), SCH_BASE_FRAME::RefreshItem(), DIALOG_SYMBOL_REMAP::remapSymbolsToLibTable(), MODULE::Remove(), CN_CONNECTIVITY_ALGO::Remove(), BOARD::Remove(), POINT_EDITOR::removeCorner(), POINT_EDITOR::removeCornerCondition(), LIB_PART::RemoveDrawItem(), SCH_SHEET::RemovePin(), SCH_EDIT_TOOL::RepeatDrawItem(), SCH_SCREEN::ReplaceWires(), CONNECTION_SUBGRAPH::ResolveDrivers(), WS_PROXY_UNDO_ITEM::Restore(), PL_EDITOR_FRAME::RollbackFromUndo(), SCH_EDIT_TOOL::Rotate(), SCH_TEXT::Rotate(), SCH_LEGACY_PLUGIN_CACHE::saveArc(), SCH_LEGACY_PLUGIN_CACHE::saveBezier(), SCH_LEGACY_PLUGIN_CACHE::saveCircle(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), EE_TOOL_BASE< SCH_BASE_FRAME >::saveCopyInUndoList(), SCH_LEGACY_PLUGIN_CACHE::saveField(), SCH_LEGACY_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePolyLine(), SCH_LEGACY_PLUGIN_CACHE::saveRectangle(), SCH_LEGACY_PLUGIN_CACHE::saveText(), SCH_EDIT_FRAME::SaveUndoItemInUndoList(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_SHEET::SearchHierarchy(), SELECTION_TOOL::select(), SELECTION_TOOL::Selectable(), EE_SELECTION_TOOL::Selectable(), ITEM_PICKER::SetItem(), DIALOG_LABEL_EDITOR::SetTitle(), PCB_EDIT_FRAME::SetTrackSegmentWidth(), ShowClearance(), BOARD_COMMIT::Stage(), SCH_JUNCTION::SwapData(), SCH_NO_CONNECT::SwapData(), SCH_BITMAP::SwapData(), PCB_TARGET::SwapData(), SCH_SHEET_PIN::SwapData(), TEXTE_PCB::SwapData(), SCH_FIELD::SwapData(), TRACK::SwapData(), DIMENSION::SwapData(), VIA::SwapData(), SCH_SHEET::SwapData(), SCH_COMPONENT::SwapData(), MODULE::SwapData(), ZONE_CONTAINER::SwapData(), D_PAD::SwapData(), SwapItemData(), TestDuplicateSheetNames(), TEXTE_MODULE::TEXTE_MODULE(), AR_MATRIX::TraceSegmentPcb(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_LABEL_EDITOR::TransferDataToWindow(), TRACK::TransformShapeWithClearanceToPolygon(), LIB_DRAWING_TOOLS::TwoClickPlace(), EE_SELECTION_TOOL::unhighlight(), SELECTION_TOOL::unhighlight(), SCH_SHEET_PATH::UpdateAllScreenReferences(), SCH_TEXT::UpdateDanglingState(), EE_POINT_EDITOR::updateItem(), PL_POINT_EDITOR::updateItem(), POINT_EDITOR::updateItem(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), EE_POINT_EDITOR::updatePoints(), PL_POINT_EDITOR::updatePoints(), POINT_EDITOR::updatePoints(), EE_TOOL_BASE< SCH_BASE_FRAME >::updateView(), PCB_BRIGHT_BOX::ViewDraw(), SCH_BUS_ENTRY_BASE::ViewGetLayers(), TRACK::Visit(), GERBER_DRAW_ITEM::Visit(), SCH_SHEET::Visit(), SCH_COMPONENT::Visit(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ UnLink()

void BOARD_ITEM::UnLink ( )
virtualinherited

Function UnLink detaches this object from its owner.

This base class implementation should work for all derived classes which are held in a DLIST<>.

Definition at line 54 of file class_board_item.cpp.

55 {
57  wxASSERT( list );
58 
59  if( list )
60  list->Remove( this );
61 }
DHEAD * GetList() const
Definition: base_struct.h:221
T * Remove(T *aElement)
Function Remove removes aElement from the list, but does not delete it.
Definition: dlist.h:211
Class DLIST is the head of a doubly linked list.
Definition: dlist.h:142

References EDA_ITEM::GetList(), and DLIST< T >::Remove().

◆ ViewBBox()

const BOX2I DRAWSEGMENT::ViewBBox ( ) const
overridevirtualinherited

Function ViewBBox() returns the bounding box of the item covering all its layers.

Returns
BOX2I - the current bounding box

Reimplemented from EDA_ITEM.

Definition at line 851 of file class_drawsegment.cpp.

852 {
853  // For arcs - do not include the center point in the bounding box,
854  // it is redundant for displaying an arc
855  if( m_Shape == S_ARC )
856  {
857  EDA_RECT bbox;
858  bbox.SetOrigin( m_End );
859  computeArcBBox( bbox );
860  return BOX2I( bbox.GetOrigin(), bbox.GetSize() );
861  }
862 
863  return EDA_ITEM::ViewBBox();
864 }
BOX2< VECTOR2I > BOX2I
Definition: box2.h:520
void SetOrigin(const wxPoint &pos)
Definition: eda_rect.h:131
void computeArcBBox(EDA_RECT &aBBox) const
wxPoint m_End
Line end point or circle and arc start point.
const wxPoint GetOrigin() const
Definition: eda_rect.h:114
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
virtual const BOX2I ViewBBox() const override
Function ViewBBox() returns the bounding box of the item covering all its layers.
const wxSize GetSize() const
Definition: eda_rect.h:103

References DRAWSEGMENT::computeArcBBox(), EDA_RECT::GetOrigin(), EDA_RECT::GetSize(), DRAWSEGMENT::m_End, DRAWSEGMENT::m_Shape, S_ARC, EDA_RECT::SetOrigin(), and EDA_ITEM::ViewBBox().

◆ ViewDraw()

virtual void KIGFX::VIEW_ITEM::ViewDraw ( int  aLayer,
VIEW aView 
) const
inlinevirtualinherited

Function ViewDraw() Draws the parts of the object belonging to layer aLayer.

viewDraw() is an alternative way for drawing objects if if there is no PAINTER assigned for the view or if the PAINTER doesn't know how to paint this particular implementation of VIEW_ITEM. The preferred way of drawing is to design an appropriate PAINTER object, the method below is intended only for quick hacks and debugging purposes.

Parameters
aLayercurrent drawing layer
aViewpointer to the VIEW device we are drawing on

Reimplemented in EDIT_POINTS, KIGFX::WS_PROXY_VIEW_ITEM, ROUTER_PREVIEW_ITEM, KIGFX::VIEW_GROUP, KIGFX::PREVIEW::SELECTION_AREA, KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM, KIGFX::VIEW_OVERLAY, KIGFX::ORIGIN_VIEWITEM, BRIGHT_BOX, KIGFX::PREVIEW::RULER_ITEM, KIGFX::RATSNEST_VIEWITEM, KIGFX::PREVIEW::ARC_ASSISTANT, and PCB_BRIGHT_BOX.

Definition at line 116 of file view_item.h.

117  {}

Referenced by KIGFX::VIEW::draw(), and KIGFX::VIEW::updateItemGeometry().

◆ ViewGetLayers()

void BOARD_ITEM::ViewGetLayers ( int  aLayers[],
int &  aCount 
) const
overridevirtualinherited

Function ViewGetLayers() Returns the all the layers within the VIEW the object is painted on.

For instance, a D_PAD spans zero or more copper layers and a few technical layers. ViewDraw() or PAINTER::Draw() is repeatedly called for each of the layers returned by ViewGetLayers(), depending on the rendering order.

Parameters
aLayers[]output layer index array
aCountnumber of layer indices in aLayers[]

Reimplemented from EDA_ITEM.

Reimplemented in D_PAD, MODULE, VIA, TEXTE_MODULE, TRACK, ZONE_CONTAINER, MARKER_PCB, and KIGFX::ORIGIN_VIEWITEM.

Definition at line 90 of file class_board_item.cpp.

91 {
92  // Basic fallback
93  aCount = 1;
94  aLayers[0] = m_Layer;
95 }
PCB_LAYER_ID m_Layer

References BOARD_ITEM::m_Layer.

Referenced by SELECTION_TOOL::Selectable().

◆ ViewGetLOD()

unsigned int EDGE_MODULE::ViewGetLOD ( int  aLayer,
KIGFX::VIEW aView 
) const
overridevirtual

Function ViewGetLOD() Returns the level of detail (LOD) of the item.

A level of detail is the minimal VIEW scale that is sufficient for an item to be shown on a given layer.

Parameters
aLayercurrent drawing layer
aViewpointer to the VIEW device we are drawing on
Returns
the level of detail. 0 always show the item, because the actual zoom level (or VIEW scale) is always > 0

Reimplemented from KIGFX::VIEW_ITEM.

Definition at line 445 of file class_edge_mod.cpp.

446 {
447  const int HIDE = std::numeric_limits<unsigned int>::max();
448 
449  if( !aView )
450  return 0;
451 
452  // Handle Render tab switches
453  if( !IsParentFlipped() && !aView->IsLayerVisible( LAYER_MOD_FR ) )
454  return HIDE;
455 
456  if( IsParentFlipped() && !aView->IsLayerVisible( LAYER_MOD_BK ) )
457  return HIDE;
458 
459  // Other layers are shown without any conditions
460  return 0;
461 }
show modules on front
bool IsParentFlipped() const
#define max(a, b)
Definition: auxiliary.h:86
bool IsLayerVisible(int aLayer) const
Function IsLayerVisible() Returns information about visibility of a particular layer.
Definition: view.h:416

References KIGFX::VIEW::IsLayerVisible(), IsParentFlipped(), LAYER_MOD_BK, LAYER_MOD_FR, and max.

◆ viewPrivData()

◆ Visit()

SEARCH_RESULT EDA_ITEM::Visit ( INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
virtualinherited

Function Visit may be re-implemented for each derived class in order to handle all the types given by its member data.

Implementations should call inspector->Inspect() on types in scanTypes[], and may use IterateForward() to do so on lists of such data.

Parameters
inspectorAn INSPECTOR instance to use in the inspection.
testDataArbitrary data used by the inspector.
scanTypesWhich KICAD_T types are of interest and the order is significant too, terminated by EOT.
Returns
SEARCH_RESULT SEARCH_QUIT if the Iterator is to stop the scan, else SCAN_CONTINUE, and determined by the inspector.

Reimplemented in BOARD, SCH_COMPONENT, LIB_PART, MODULE, SCH_SHEET, GERBER_FILE_IMAGE, GERBER_DRAW_ITEM, TRACK, and GBR_LAYOUT.

Definition at line 131 of file base_struct.cpp.

132 {
133 #if 0 && defined(DEBUG)
134  std::cout << GetClass().mb_str() << ' ';
135 #endif
136 
137  if( IsType( scanTypes ) )
138  {
139  if( SEARCH_QUIT == inspector( this, testData ) )
140  return SEARCH_QUIT;
141  }
142 
143  return SEARCH_CONTINUE;
144 }
virtual bool IsType(const KICAD_T aScanTypes[])
Function IsType Checks whether the item is one of the listed types.
Definition: base_struct.h:294
virtual wxString GetClass() const =0
Function GetClass returns the class name.

References EDA_ITEM::GetClass(), EDA_ITEM::IsType(), SEARCH_CONTINUE, and SEARCH_QUIT.

Referenced by GERBER_COLLECTOR::Collect(), GENERAL_COLLECTOR::Collect(), PCB_TYPE_COLLECTOR::Collect(), PCB_LAYER_COLLECTOR::Collect(), and EDA_ITEM::IterateForward().

Member Data Documentation

◆ m_Angle

◆ m_Bezier0_C1

wxPoint EDGE_MODULE::m_Bezier0_C1

Bezier Control Point 1, relative to module origin, orient 0.

Definition at line 143 of file class_edge_mod.h.

Referenced by Flip(), GetBezier0_C1(), Mirror(), Move(), SetBezier0_C1(), SetDrawCoord(), and SetLocalCoord().

◆ m_Bezier0_C2

wxPoint EDGE_MODULE::m_Bezier0_C2

Bezier Control Point 2, relative to module origin, orient 0.

Definition at line 144 of file class_edge_mod.h.

Referenced by Flip(), GetBezier0_C2(), Mirror(), Move(), SetBezier0_C2(), SetDrawCoord(), and SetLocalCoord().

◆ m_BezierC1

◆ m_BezierC2

◆ m_BezierPoints

◆ m_End

◆ m_End0

wxPoint EDGE_MODULE::m_End0

◆ m_Flags

◆ m_forceVisible

bool EDA_ITEM::m_forceVisible
protectedinherited

Set to true to override the visibility setting of the item.

Definition at line 184 of file base_struct.h.

Referenced by EDA_ITEM::initVars(), EDA_ITEM::operator=(), SCH_FIELD::Print(), and EDA_ITEM::SetForceVisible().

◆ m_Layer

◆ m_List

DHEAD* EDA_ITEM::m_List
protectedinherited

which DLIST I am on.

Definition at line 178 of file base_struct.h.

Referenced by EDA_ITEM::GetList(), EDA_ITEM::initVars(), and EDA_ITEM::SetList().

◆ m_Parent

◆ m_Poly

◆ m_Shape

◆ m_Start

◆ m_Start0

wxPoint EDGE_MODULE::m_Start0

◆ m_TimeStamp

timestamp_t EDA_ITEM::m_TimeStamp
protectedinherited

◆ m_Type

int DRAWSEGMENT::m_Type
protectedinherited

Used in complex associations ( Dimensions.. )

Definition at line 55 of file class_drawsegment.h.

Referenced by DRAWSEGMENT::DRAWSEGMENT(), DRAWSEGMENT::GetType(), DRAWSEGMENT::SetType(), and DRAWSEGMENT::SwapData().

◆ m_Width

◆ Pback

EDA_ITEM* EDA_ITEM::Pback
protectedinherited

◆ Pnext

◆ ZeroOffset

wxPoint BOARD_ITEM::ZeroOffset
staticinherited

A value of wxPoint(0,0) which can be passed to the Draw() functions.

Definition at line 123 of file class_board_item.h.

Referenced by BOARD::GetPosition().


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