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) override
 Flip entity relative to aCentre. More...
 
void SetStart0 (const wxPoint &aPoint)
 
const wxPointGetStart0 () const
 
void SetEnd0 (const wxPoint &aPoint)
 
const wxPointGetEnd0 () const
 
void SetLocalCoord ()
 Set relative coordinates from draw coordinates. More...
 
void SetDrawCoord ()
 Set draw coordinates (absolute values ) from relative coordinates. More...
 
void Draw (EDA_DRAW_PANEL *panel, wxDC *DC, GR_DRAWMODE aDrawMode, const wxPoint &offset=ZeroOffset) override
 Function Draw BOARD_ITEMs have their own color information. More...
 
void GetMsgPanelInfo (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 () 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...
 
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 wxPointGetBezControl1 () const
 
void SetBezControl2 (const wxPoint &aPoint)
 
const wxPointGetBezControl2 () const
 
void SetPosition (const wxPoint &aPos) override
 
const wxPointGetPosition () const override
 
const wxPointGetStart () 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 wxPointGetEnd () 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 wxPointGetArcStart () const
 
const wxPoint GetArcEnd () 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 > & GetPolyPoints () const
 
std::vector< wxPoint > & GetPolyPoints ()
 
void SetBezierPoints (const std::vector< wxPoint > &aPoints)
 
void SetPolyPoints (const std::vector< wxPoint > &aPoints)
 
virtual const EDA_RECT GetBoundingBox () const override
 Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes. More...
 
virtual bool HitTest (const wxPoint &aPosition) const override
 Function HitTest tests if aPosition is contained within or on the bounding area of an item. More...
 
bool HitTest (const EDA_RECT &aRect, bool aContained=true, int aAccuracy=0) const override
 
double GetLength () const
 Function GetLength returns the length of the track using the hypotenuse calculation. More...
 
void TransformShapeWithClearanceToPolygon (SHAPE_POLY_SET &aCornerBuffer, int aClearanceValue, int aCircleToSegmentsCount, double aCorrectionFactor) const
 Function TransformShapeWithClearanceToPolygon Convert the track shape to a closed polygon Used in filling zones calculations Circles and arcs are approximated by segments. More...
 
virtual const BOX2I ViewBBox () const override
 
virtual bool IsConnected () const
 Function IsConnected() Returns information if the object is derived from BOARD_CONNECTED_ITEM. More...
 
BOARD_ITEMNext () const
 
BOARD_ITEMBack () const
 
BOARD_ITEM_CONTAINERGetParent () const
 
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 (LAYER_ID aLayer)
 Function SetLayer sets the layer this item is on. More...
 
void SwapData (BOARD_ITEM *aImage)
 Swap data between aItem and aImage. More...
 
virtual bool IsOnLayer (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
 
KICAD_T Type () const
 Function Type() More...
 
void SetTimeStamp (time_t aNewTimeStamp)
 
time_t GetTimeStamp () const
 
DHEADGetList () const
 
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
 
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, wxPoint *aFindLocation)
 Function Matches compares the item against the search criteria in aSearchData. More...
 
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...
 
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...
 
virtual unsigned int ViewGetLOD (int aLayer, VIEW *aView) const
 Function ViewGetLOD() Returns the level of detail of the item. More...
 
VIEW_ITEM_DATA * viewPrivData () const
 

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 std::string FormatInternalUnits (int aValue)
 Function FormatInternalUnits converts aValue from board internal units to a string appropriate for writing to file. More...
 
static std::string FormatInternalUnits (const wxPoint &aPoint)
 
static std::string FormatInternalUnits (const wxSize &aSize)
 
static std::string FormatAngle (double aAngle)
 Function FormatAngle converts aAngle from board units to a string appropriate for writing to file. 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...
 
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
 
wxPoint m_End0
 

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 getTrailingInt (wxString aStr)
 
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< wxPointm_BezierPoints
 
std::vector< wxPointm_PolyPoints
 
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...
 
time_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 ( MODULE parent,
STROKE_T  aShape = S_SEGMENT 
)

Definition at line 55 of file class_edge_mod.cpp.

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

Referenced by Clone().

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:106
LAYER_ID m_Layer
STROKE_T m_Shape
Shape: line, Circle, Arc.
DRAWSEGMENT(BOARD_ITEM *aParent=NULL, KICAD_T idtype=PCB_LINE_T)
EDGE_MODULE::~EDGE_MODULE ( )

Definition at line 64 of file class_edge_mod.cpp.

65 {
66 }

Member Function Documentation

BOARD_ITEM* BOARD_ITEM::Back ( ) const
inlineinherited

Definition at line 125 of file class_board_item.h.

References EDA_ITEM::Pback.

Referenced by PCB_EDIT_FRAME::Delete_Segment_Edge().

125 { return static_cast<BOARD_ITEM*>( Pback ); }
EDA_ITEM * Pback
previous in linked list
Definition: base_struct.h:165
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
static bool EDGE_MODULE::ClassOf ( const EDA_ITEM aItem)
inlinestatic

Definition at line 54 of file class_edge_mod.h.

References PCB_MODULE_EDGE_T, and EDA_ITEM::Type().

55  {
56  return aItem && PCB_MODULE_EDGE_T == aItem->Type();
57  }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
class EDGE_MODULE, a footprint edge
Definition: typeinfo.h:106
void EDA_ITEM::ClearBrightened ( )
inlineinherited

Definition at line 233 of file base_struct.h.

References BRIGHTENED, and EDA_ITEM::ClearFlags().

Referenced by SELECTION_TOOL::disambiguationMenu().

233 { ClearFlags( BRIGHTENED ); }
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:137
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:254
void EDA_ITEM::ClearFlags ( STATUS_FLAGS  aMask = EDA_ITEM_ALL_FLAGS)
inlineinherited

Definition at line 254 of file base_struct.h.

Referenced by Abort_Edit_Pcb_Text(), Abort_EditEdge(), Abort_Move_ModuleOutline(), Abort_Move_Pad(), Abort_MoveOrCopyModule(), Abort_MoveTrack(), Abort_Zone_Create_Outline(), Abort_Zone_Move_Corner_Or_Outlines(), AbortMoveAndEditTarget(), abortMoveBitmap(), AbortMoveDimensionText(), abortMoveItem(), AbortMoveTextModule(), AbortPinMove(), SCH_SCREEN::addConnectedItemsToBlock(), SCH_EDIT_FRAME::addCurrentItemToList(), PNS_KICAD_IFACE::AddItem(), PCB_EDIT_FRAME::AppendBoardFile(), SCH_EDIT_FRAME::AppendOneEEProject(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Zone(), SCH_EDIT_FRAME::BeginSegment(), PCB_EDIT_FRAME::Block_Delete(), PCB_EDIT_FRAME::Block_Flip(), PCB_EDIT_FRAME::Block_Move(), PCB_EDIT_FRAME::Change_Side_Module(), SCH_SCREEN::ClearAnnotation(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearHighlighted(), ClearMarkItems(), clearModuleItemFlags(), EDA_ITEM::ClearSelected(), SCH_EDIT_FRAME::ConvertPart(), SCH_EDIT_FRAME::copyBlockItems(), CopyMarkedItems(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), LIB_PART::CopySelectedItems(), MWAVE::CreateMicrowaveInductor(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), PCB_EDIT_FRAME::Delete_LastCreatedCorner(), PCB_EDIT_FRAME::Delete_Segment_Edge(), LIB_PART::DeleteSelectedItems(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), PCB_EDIT_FRAME::EditDimension(), PCB_EDIT_FRAME::End_Edge(), FOOTPRINT_EDIT_FRAME::End_Edge_Module(), PCB_EDIT_FRAME::End_Move_Zone_Corner_Or_Outlines(), PCB_EDIT_FRAME::End_Zone(), SCH_EDIT_FRAME::EndSegment(), PCB_EDIT_FRAME::Exchange_Module(), ExitSheet(), SCH_SCREEN::GetConnection(), PCB_BASE_FRAME::GlobalChange_PadSettings(), PCB_BASE_FRAME::Import_Pad_Settings(), SCH_JUNCTION::IsSelectStateChanged(), SCH_NO_CONNECT::IsSelectStateChanged(), SCH_MARKER::IsSelectStateChanged(), SCH_BUS_ENTRY_BASE::IsSelectStateChanged(), SCH_LINE::IsSelectStateChanged(), SCH_BITMAP::IsSelectStateChanged(), SCH_TEXT::IsSelectStateChanged(), SCH_COMPONENT::IsSelectStateChanged(), SCH_SHEET::IsSelectStateChanged(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), MarkItemsInBloc(), MirrorX(), MirrorY(), moveBitmap(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), LIB_EDIT_FRAME::OnEditPin(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), SCH_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), LIB_EDIT_FRAME::OnRotateItem(), SCH_EDIT_FRAME::OnSelectUnit(), SCH_FIELD::Place(), PCB_EDIT_FRAME::Place_DrawItem(), FOOTPRINT_EDIT_FRAME::Place_EdgeMod(), PCB_EDIT_FRAME::Place_Texte_Pcb(), PCB_EDIT_FRAME::PlaceDimensionText(), PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment(), PCB_BASE_FRAME::PlaceModule(), PCB_BASE_FRAME::PlacePad(), PCB_EDIT_FRAME::PlaceTarget(), DRAWING_TOOL::PlaceText(), PCB_BASE_FRAME::PlaceTexteModule(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), LIB_EDIT_FRAME::Process_Special_Functions(), EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::RepeatDrawItem(), LIB_EDIT_FRAME::RepeatPinItem(), BOARD_COMMIT::Revert(), PCB_BASE_FRAME::Rotate_Module(), RotateListOfItems(), LIB_PIN::Save(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint(), SCH_EDIT_FRAME::SetRepeatItem(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::StartMoveModule(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), and DIALOG_PAD_PROPERTIES::TransferDataFromWindow().

254 { m_Flags &= ~aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
void EDA_ITEM::ClearHighlighted ( )
inlineinherited

Definition at line 232 of file base_struct.h.

References EDA_ITEM::ClearFlags(), and HIGHLIGHTED.

232 { ClearFlags( HIGHLIGHTED ); }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:136
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:254
void EDA_ITEM::ClearSelected ( )
inlineinherited

Definition at line 231 of file base_struct.h.

References EDA_ITEM::ClearFlags(), and SELECTED.

Referenced by POINT_EDITOR::addCorner(), SELECTION_TOOL::unselectVisually(), and PCB_EDITOR_CONTROL::ZoneDuplicate().

231 { ClearFlags( SELECTED ); }
#define SELECTED
Definition: base_struct.h:120
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: base_struct.h:254
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 268 of file class_edge_mod.cpp.

References EDGE_MODULE().

269 {
270  return new EDGE_MODULE( *this );
271 }
EDGE_MODULE(MODULE *parent, STROKE_T aShape=S_SEGMENT)
void DRAWSEGMENT::computeArcBBox ( EDA_RECT aBBox) const
protectedinherited

Definition at line 616 of file class_drawsegment.cpp.

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

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

617 {
618  // Do not include the center, which is not necessarily
619  // inside the BB of a arc with a small angle
620  aBBox.SetOrigin( m_End );
621 
622  wxPoint end = m_End;
623  RotatePoint( &end, m_Start, -m_Angle );
624  aBBox.Merge( end );
625 
626  // Determine the starting quarter
627  // 0 right-bottom
628  // 1 left-bottom
629  // 2 left-top
630  // 3 right-top
631  unsigned int quarter = 0; // assume right-bottom
632 
633  if( m_End.x < m_Start.x )
634  {
635  if( m_End.y <= m_Start.y )
636  quarter = 2;
637  else // ( m_End.y > m_Start.y )
638  quarter = 1;
639  }
640  else if( m_End.x >= m_Start.x )
641  {
642  if( m_End.y < m_Start.y )
643  quarter = 3;
644  else if( m_End.x == m_Start.x )
645  quarter = 1;
646  }
647 
648  int radius = GetRadius();
649  int angle = (int) GetArcAngleStart() % 900 + m_Angle;
650  bool directionCW = ( m_Angle > 0 ); // Is the direction of arc clockwise?
651 
652  // Make the angle positive, so we go clockwise and merge points belonging to the arc
653  if( !directionCW )
654  {
655  angle = 900 - angle;
656  quarter = ( quarter + 3 ) % 4; // -1 modulo arithmetic
657  }
658 
659  while( angle > 900 )
660  {
661  switch( quarter )
662  {
663  case 0:
664  aBBox.Merge( wxPoint( m_Start.x, m_Start.y + radius ) ); // down
665  break;
666 
667  case 1:
668  aBBox.Merge( wxPoint( m_Start.x - radius, m_Start.y ) ); // left
669  break;
670 
671  case 2:
672  aBBox.Merge( wxPoint( m_Start.x, m_Start.y - radius ) ); // up
673  break;
674 
675  case 3:
676  aBBox.Merge( wxPoint( m_Start.x + radius, m_Start.y ) ); // right
677  break;
678  }
679 
680  if( directionCW )
681  ++quarter;
682  else
683  quarter += 3; // -1 modulo arithmetic
684 
685  quarter %= 4;
686  angle -= 900;
687  }
688 }
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)
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:317
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.
static DIRECTION_45::AngleType angle(const VECTOR2I &a, const VECTOR2I &b)
int GetRadius() const
Function GetRadius returns the radius of this item Has meaning only for arc and circle.
void BOARD_ITEM::DeleteStructure ( )
inherited
void EDGE_MODULE::Draw ( EDA_DRAW_PANEL panel,
wxDC *  DC,
GR_DRAWMODE  aDrawMode,
const wxPoint offset = ZeroOffset 
)
overridevirtual

Function Draw BOARD_ITEMs have their own color information.

Reimplemented from DRAWSEGMENT.

Definition at line 106 of file class_edge_mod.cpp.

References ArcTangente(), DARKDARKGRAY, Distance(), FILLED, BOARD_ITEM::GetBoard(), EDA_DRAW_PANEL::GetClipBox(), EDA_DRAW_PANEL::GetDisplayOptions(), BOARD::GetLayerColor(), MODULE::GetOrientation(), MODULE::GetPosition(), EDA_DRAW_PANEL::GetPrintMirrored(), EDA_DRAW_PANEL::GetScreen(), GR_ALLOW_HIGHCONTRAST, GRArc(), GRCircle(), GRCSegm(), GRLine(), GRPoly(), GRSetDrawMode(), IsCopperLayer(), BOARD::IsLayerVisible(), BOARD_ITEM::IsOnLayer(), KiROUND(), DRAWSEGMENT::m_Angle, DISPLAY_OPTIONS::m_ContrastModeDisplay, DISPLAY_OPTIONS::m_DisplayModEdgeFill, DISPLAY_OPTIONS::m_DisplayPcbTrackFill, DRAWSEGMENT::m_End, BOARD_ITEM::m_Layer, EDA_ITEM::m_Parent, DRAWSEGMENT::m_PolyPoints, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, DRAWSEGMENT::m_Width, RotatePoint(), S_ARC, S_CIRCLE, S_POLYGON, S_SEGMENT, wxPoint::x, and wxPoint::y.

Referenced by Abort_Move_ModuleOutline(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), Print_Module(), ShowCurrentOutlineWhileMoving(), ShowNewEdgeModule(), and FOOTPRINT_EDIT_FRAME::Start_Move_EdgeMod().

108 {
109  int ux0, uy0, dx, dy, radius, StAngle, EndAngle;
110  LAYER_ID curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
111 
112  MODULE* module = (MODULE*) m_Parent;
113 
114  if( !module )
115  return;
116 
117  BOARD* brd = GetBoard( );
118 
119  if( brd->IsLayerVisible( m_Layer ) == false )
120  return;
121 
122  COLOR4D color = brd->GetLayerColor( m_Layer );
123  DISPLAY_OPTIONS* displ_opts = (DISPLAY_OPTIONS*)panel->GetDisplayOptions();
124 
125  if(( draw_mode & GR_ALLOW_HIGHCONTRAST ) && displ_opts && displ_opts->m_ContrastModeDisplay )
126  {
127  if( !IsOnLayer( curr_layer ) )
128  color = COLOR4D( DARKDARKGRAY );
129  }
130 
131  ux0 = m_Start.x - offset.x;
132  uy0 = m_Start.y - offset.y;
133 
134  dx = m_End.x - offset.x;
135  dy = m_End.y - offset.y;
136 
137  GRSetDrawMode( DC, draw_mode );
138  bool filled = displ_opts ? displ_opts->m_DisplayModEdgeFill : FILLED;
139 
140  if( IsCopperLayer( m_Layer ) )
141  filled = displ_opts ? displ_opts->m_DisplayPcbTrackFill : FILLED;
142 
143  switch( m_Shape )
144  {
145  case S_SEGMENT:
146  if( filled )
147  GRLine( panel->GetClipBox(), DC, ux0, uy0, dx, dy, m_Width, color );
148  else
149  // SKETCH Mode
150  GRCSegm( panel->GetClipBox(), 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( panel->GetClipBox(), DC, ux0, uy0, radius, m_Width, color );
160  }
161  else // SKETCH Mode
162  {
163  GRCircle( panel->GetClipBox(), DC, ux0, uy0, radius + (m_Width / 2), color );
164  GRCircle( panel->GetClipBox(), 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( !panel->GetPrintMirrored() )
175  {
176  if( StAngle > EndAngle )
177  std::swap( StAngle, EndAngle );
178  }
179  else // Mirrored mode: arc orientation is reversed
180  {
181  if( StAngle < EndAngle )
182  std::swap( StAngle, EndAngle );
183  }
184 
185  if( filled )
186  {
187  GRArc( panel->GetClipBox(), DC, ux0, uy0, StAngle, EndAngle, radius, m_Width, color );
188  }
189  else // SKETCH Mode
190  {
191  GRArc( panel->GetClipBox(), DC, ux0, uy0, StAngle, EndAngle,
192  radius + (m_Width / 2), color );
193  GRArc( panel->GetClipBox(), DC, ux0, uy0, StAngle, EndAngle,
194  radius - (m_Width / 2), color );
195  }
196  break;
197 
198  case S_POLYGON:
199  {
200  // We must compute absolute coordinates from m_PolyPoints
201  // which are relative to module position, orientation 0
202  std::vector<wxPoint> points = m_PolyPoints;
203 
204  for( unsigned ii = 0; ii < points.size(); ii++ )
205  {
206  wxPoint& pt = points[ii];
207 
208  RotatePoint( &pt.x, &pt.y, module->GetOrientation() );
209  pt += module->GetPosition() - offset;
210  }
211 
212  GRPoly( panel->GetClipBox(), DC, points.size(), &points[0], true, m_Width, color, color );
213  }
214  break;
215 
216  default:
217  break;
218  }
219 }
void GRPoly(EDA_RECT *ClipBox, wxDC *DC, int n, wxPoint Points[], bool Fill, int width, COLOR4D Color, COLOR4D BgColor)
Definition: gr_basic.cpp:767
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:168
void GRSetDrawMode(wxDC *DC, GR_DRAWMODE draw_mode)
Definition: gr_basic.cpp:290
static int KiROUND(double v)
KiROUND rounds a floating point number to an int using "round halfway cases away from zero"...
Definition: common.h:107
void GRLine(EDA_RECT *ClipBox, wxDC *DC, int x1, int y1, int x2, int y2, int width, COLOR4D Color)
Definition: gr_basic.cpp:352
const wxPoint & GetPosition() const override
Definition: class_module.h:143
polygon (not yet used for tracks, but could be in microwave apps)
COLOR4D GetLayerColor(LAYER_ID aLayer) const
Function GetLayerColor gets a layer color for any valid layer, including non-copper ones...
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:481
bool m_DisplayModEdgeFill
Definition: pcbstruct.h:69
usual segment : line with rounded ends
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:317
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.
virtual bool IsOnLayer(LAYER_ID aLayer) const
Function IsOnLayer tests to see if this object is on the given layer.
bool m_DisplayPcbTrackFill
Definition: pcbstruct.h:71
LAYER_ID m_Layer
wxPoint m_Start
Line start point or Circle and Arc center.
double ArcTangente(int dy, int dx)
Definition: trigo.cpp:271
wxPoint m_End
Line end point or circle and arc start point.
double GetOrientation() const
Definition: class_module.h:147
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:982
bool m_ContrastModeDisplay
Definition: pcbstruct.h:85
EDA_RECT * GetClipBox()
STROKE_T m_Shape
Shape: line, Circle, Arc.
Class DISPLAY_OPTIONS handles display options like enable/disable some optional drawings.
Definition: pcbstruct.h:62
bool IsLayerVisible(LAYER_ID aLayer) const
Function IsLayerVisible is a proxy function that calls the correspondent function in m_BoardSettings ...
Definition: class_board.h:440
bool GetPrintMirrored() const
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:166
LAYER_ID
Enum LAYER_ID is the set of PCB layers.
void GRCircle(EDA_RECT *ClipBox, wxDC *DC, int xc, int yc, int r, int width, COLOR4D Color)
Definition: gr_basic.cpp:791
BASE_SCREEN * GetScreen()
Definition: draw_panel.cpp:188
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
bool IsCopperLayer(LAYER_NUM aLayerId)
Function IsCopperLayer tests whether a layer is a copper layer.
int m_Width
thickness of lines ...
void * GetDisplayOptions()
Function GetDisplayOptions A way to pass info to draw functions.
Definition: draw_panel.cpp:182
std::vector< wxPoint > m_PolyPoints
double Distance(double x1, double y1, double x2, double y2)
Class COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:39
void EDGE_MODULE::Flip ( const wxPoint aCentre)
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 274 of file class_edge_mod.cpp.

References FlipLayer(), DRAWSEGMENT::GetAngle(), DRAWSEGMENT::GetEnd(), BOARD_ITEM::GetLayer(), DRAWSEGMENT::GetShape(), DRAWSEGMENT::GetStart(), m_End0, DRAWSEGMENT::m_PolyPoints, m_Start0, MIRROR(), S_ARC, S_POLYGON, S_SEGMENT, DRAWSEGMENT::SetAngle(), DRAWSEGMENT::SetEnd(), BOARD_ITEM::SetLayer(), DRAWSEGMENT::SetStart(), and wxPoint::y.

275 {
276  wxPoint pt;
277 
278  switch( GetShape() )
279  {
280  case S_ARC:
281  SetAngle( -GetAngle() );
282  //Fall through
283  default:
284  case S_SEGMENT:
285  pt = GetStart();
286  MIRROR( pt.y, aCentre.y );
287  SetStart( pt );
288 
289  pt = GetEnd();
290  MIRROR( pt.y, aCentre.y );
291  SetEnd( pt );
292 
293  MIRROR( m_Start0.y, 0 );
294  MIRROR( m_End0.y, 0 );
295  break;
296 
297  case S_POLYGON:
298  // polygon corners coordinates are always relative to the
299  // footprint position, orientation 0
300  for( unsigned ii = 0; ii < m_PolyPoints.size(); ii++ )
301  MIRROR( m_PolyPoints[ii].y, 0 );
302  }
303 
304  // DRAWSEGMENT items are not usually on copper layers, but
305  // it can happen in microwave apps.
306  // However, currently, only on Front or Back layers.
307  // So the copper layers count is not taken in account
308  SetLayer( FlipLayer( GetLayer() ) );
309 }
polygon (not yet used for tracks, but could be in microwave apps)
virtual void SetLayer(LAYER_ID aLayer)
Function SetLayer sets the layer this item is on.
usual segment : line with rounded ends
LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.
wxPoint m_End0
void MIRROR(T &aPoint, const T &aMirrorRef)
Definition: macros.h:111
STROKE_T GetShape() const
const wxPoint & GetEnd() const
Function GetEnd returns the ending point of the graphic.
Arcs (with rounded ends)
void SetStart(const wxPoint &aStart)
double GetAngle() const
LAYER_ID FlipLayer(LAYER_ID aLayerId, int aCopperLayersCount)
Function FlippedLayerNumber.
Definition: lset.cpp:444
void SetEnd(const wxPoint &aEnd)
void SetAngle(double aAngle)
Function SetAngle sets the angle for arcs, and normalizes it within the range 0 - 360 degrees...
wxPoint m_Start0
std::vector< wxPoint > m_PolyPoints
const wxPoint & GetStart() const
Function GetStart returns the starting point of the graphic.
std::string BOARD_ITEM::FormatAngle ( double  aAngle)
staticinherited

Function FormatAngle converts aAngle from board units to a string appropriate for writing to file.

Note
Internal angles for board items can be either degrees or tenths of degree on how KiCad is built.
Parameters
aAngleA angle value to convert.
Returns
A std::string object containing the converted angle.

Definition at line 170 of file class_board_item.cpp.

171 {
172  char temp[50];
173 
174  int len = snprintf( temp, sizeof(temp), "%.10g", aAngle / 10.0 );
175 
176  return std::string( temp, len );
177 }
std::string BOARD_ITEM::FormatInternalUnits ( int  aValue)
staticinherited

Function FormatInternalUnits converts aValue from board internal units to a string appropriate for writing to file.

Note
Internal units for board items can be either deci-mils or nanometers depending on how KiCad is build.
Parameters
aValueA coordinate value to convert.
Returns
A std::string object containing the converted value.

Definition at line 89 of file class_board_item.cpp.

Referenced by checkConnectedTo(), ConvertOutlineToPolygon(), BOARD_ITEM::FormatInternalUnits(), and BOARD::TracksInNetBetweenPoints().

90 {
91 #if 1
92 
93  char buf[50];
94  int len;
95  double mm = aValue / IU_PER_MM;
96 
97  if( mm != 0.0 && fabs( mm ) <= 0.0001 )
98  {
99  len = sprintf( buf, "%.10f", mm );
100 
101  while( --len > 0 && buf[len] == '0' )
102  buf[len] = '\0';
103 
104  if( buf[len] == '.' )
105  buf[len] = '\0';
106  else
107  ++len;
108  }
109  else
110  {
111  len = sprintf( buf, "%.10g", mm );
112  }
113 
114  return std::string( buf, len );
115 
116 #else
117 
118  // Assume aValue is in nanometers, and that we want the result in millimeters,
119  // and that int is 32 bits wide. Then perform an alternative algorithm.
120  // Can be used to verify that the above algorithm is correctly generating text.
121  // Convert aValue into an integer string, then insert a decimal point manually.
122  // Results are the same as above general purpose algorithm.
123 
124  wxASSERT( sizeof(int) == 4 );
125 
126  if( aValue == 0 )
127  return std::string( 1, '0' );
128  else
129  {
130  char buf[50];
131  int len = sprintf( buf, aValue > 0 ? "%06d" : "%07d", aValue ); // optionally pad w/leading zeros
132 
133  std::string ret( buf, len );
134 
135  std::string::iterator it = ret.end() - 1; // last byte
136 
137  // insert '.' at 6 positions from end, dividing by 10e6 (a million), nm => mm
138  std::string::iterator decpoint = ret.end() - 6;
139 
140  // truncate trailing zeros, up to decimal point position
141  for( ; *it=='0' && it >= decpoint; --it )
142  ret.erase( it ); // does not invalidate iterators it or decpoint
143 
144  if( it >= decpoint )
145  {
146  ret.insert( decpoint, '.' );
147 
148  // decpoint is invalidated here, after insert()
149 
150 #if 1 // want a leading zero when decimal point is in first position?
151  if( ret[0] == '.' )
152  {
153  // insert leading zero ahead of decimal point.
154  ret.insert( ret.begin(), '0' );
155  }
156  else if( ret[0]=='-' && ret[1]=='.' )
157  {
158  ret.insert( ret.begin() + 1, '0' );
159  }
160 #endif
161  }
162 
163  return ret;
164  }
165 
166 #endif
167 }
std::string BOARD_ITEM::FormatInternalUnits ( const wxPoint aPoint)
staticinherited

Definition at line 180 of file class_board_item.cpp.

References BOARD_ITEM::FormatInternalUnits(), wxPoint::x, and wxPoint::y.

181 {
182  return FormatInternalUnits( aPoint.x ) + " " + FormatInternalUnits( aPoint.y );
183 }
static std::string FormatInternalUnits(int aValue)
Function FormatInternalUnits converts aValue from board internal units to a string appropriate for wr...
std::string BOARD_ITEM::FormatInternalUnits ( const wxSize &  aSize)
staticinherited

Definition at line 186 of file class_board_item.cpp.

References BOARD_ITEM::FormatInternalUnits().

187 {
188  return FormatInternalUnits( aSize.GetWidth() ) + " " + FormatInternalUnits( aSize.GetHeight() );
189 }
static std::string FormatInternalUnits(int aValue)
Function FormatInternalUnits converts aValue from board internal units to a string appropriate for wr...
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 171 of file class_drawsegment.cpp.

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

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

172 {
173  // due to the Y axis orient atan2 needs - y value
174  double angleStart = ArcTangente( GetArcStart().y - GetCenter().y,
175  GetArcStart().x - GetCenter().x );
176 
177  // Normalize it to 0 ... 360 deg, to avoid discontinuity for angles near 180 deg
178  // because 180 deg and -180 are very near angles when ampping betewwen -180 ... 180 deg.
179  // and this is not easy to handle in calculations
180  NORMALIZE_ANGLE_POS( angleStart );
181 
182  return angleStart;
183 }
const wxPoint GetCenter() const override
Function GetCenter()
void NORMALIZE_ANGLE_POS(T &Angle)
Definition: trigo.h:222
const wxPoint & GetArcStart() const
double ArcTangente(int dy, int dx)
Definition: trigo.cpp:271
const wxPoint DRAWSEGMENT::GetArcEnd ( ) const
inherited

Definition at line 150 of file class_drawsegment.cpp.

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(), POINT_EDITOR::updateItem(), and POINT_EDITOR::updatePoints().

151 {
152  wxPoint endPoint; // start of arc
153 
154  switch( m_Shape )
155  {
156  case S_ARC:
157  // rotate the starting point of the arc, given by m_End, through the
158  // angle m_Angle to get the ending point of the arc.
159  // m_Start is the arc centre
160  endPoint = m_End; // m_End = start point of arc
161  RotatePoint( &endPoint, m_Start, -m_Angle );
162  break;
163 
164  default:
165  ;
166  }
167 
168  return endPoint; // after rotation, the end of the arc.
169 }
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:317
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.
const wxPoint& DRAWSEGMENT::GetBezControl1 ( ) const
inlineinherited

Definition at line 96 of file class_drawsegment.h.

References DRAWSEGMENT::m_BezierC1.

Referenced by KIGFX::PCB_PAINTER::draw(), and DRAWING_TOOL::PlaceDXF().

96 { return m_BezierC1; }
wxPoint m_BezierC1
Bezier Control Point 1.
const wxPoint& DRAWSEGMENT::GetBezControl2 ( ) const
inlineinherited

Definition at line 99 of file class_drawsegment.h.

References DRAWSEGMENT::m_BezierC2.

Referenced by KIGFX::PCB_PAINTER::draw(), and DRAWING_TOOL::PlaceDXF().

99 { return m_BezierC2; }
wxPoint m_BezierC2
Bezier Control Point 2.
const std::vector<wxPoint>& DRAWSEGMENT::GetBezierPoints ( ) const
inlineinherited

Definition at line 167 of file class_drawsegment.h.

References DRAWSEGMENT::m_BezierPoints.

Referenced by DRAWING_TOOL::PlaceDXF(), and BRDITEMS_PLOTTER::PlotDrawSegment().

167 { return m_BezierPoints; }
std::vector< wxPoint > m_BezierPoints
BOARD * BOARD_ITEM::GetBoard ( ) const
virtualinherited

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

Definition at line 63 of file class_board_item.cpp.

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

Referenced by ZONE_CONTAINER::buildFeatureHoleList(), DeleteMarkedItems(), TEXTE_PCB::Draw(), PCB_TARGET::Draw(), Draw(), ZONE_CONTAINER::Draw(), TEXTE_MODULE::Draw(), TRACK::Draw(), DRAWSEGMENT::Draw(), DIMENSION::Draw(), KIGFX::PCB_PAINTER::draw(), MODULE::Draw(), D_PAD::Draw(), SEGZONE::Draw(), VIA::Draw(), MODULE::DrawAncre(), ZONE_CONTAINER::DrawFilledArea(), BOARD_PRINTOUT_CONTROLLER::DrawPage(), ZONE_CONTAINER::DrawWhileCreateOutline(), EVT_COMMAND_RANGE(), POINT_EDITOR::finishItem(), TEXTE_PCB::Flip(), TRACK::Flip(), VIA::Flip(), ZONE_CONTAINER::Flip(), BOARD_ITEM::GetBoard(), MODULE::GetBoundingBox(), BOARD_ITEM::GetLayerName(), TRACK::GetMsgPanelInfo(), NETINFO_ITEM::GetMsgPanelInfo(), D_PAD::GetMsgPanelInfo(), TRACK::GetMsgPanelInfoBase(), SEGZONE::GetMsgPanelInfoBase(), VIA::GetMsgPanelInfoBase(), TRACK::GetMsgPanelInfoBase_Common(), BOARD_CONNECTED_ITEM::GetNetClass(), TRACK::GetSelectMenuText(), SEGZONE::GetSelectMenuText(), VIA::GetSelectMenuText(), D_PAD::GetSelectMenuText(), ZONE_CONTAINER::GetSelectMenuText(), D_PAD::GetSolderMaskMargin(), D_PAD::GetSolderPasteMargin(), BRDITEMS_PLOTTER::PlotDimension(), PushTrack(), BOARD_CONNECTED_ITEM::SetNet(), and BOARD_CONNECTED_ITEM::SetNetCode().

64 {
65  if( Type() == PCB_T )
66  return (BOARD*) this;
67 
68  BOARD_ITEM* parent = GetParent();
69 
70  if( parent )
71  return parent->GetBoard();
72 
73  return NULL;
74 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
BOARD_ITEM_CONTAINER * GetParent() const
Definition: typeinfo.h:97
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:166
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
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 385 of file class_drawsegment.cpp.

References DRAWSEGMENT::computeArcBBox(), MODULE::GetOrientation(), DRAWSEGMENT::GetParentModule(), MODULE::GetPosition(), DRAWSEGMENT::GetRadius(), EDA_RECT::GetX(), EDA_RECT::GetY(), EDA_RECT::Inflate(), DRAWSEGMENT::m_End, DRAWSEGMENT::m_PolyPoints, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, DRAWSEGMENT::m_Width, max, min, EDA_RECT::Normalize(), RotatePoint(), S_ARC, S_CIRCLE, S_POLYGON, S_SEGMENT, EDA_RECT::SetEnd(), EDA_RECT::SetOrigin(), EDA_RECT::SetX(), EDA_RECT::SetY(), wxPoint::x, and wxPoint::y.

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

386 {
387  EDA_RECT bbox;
388 
389  bbox.SetOrigin( m_Start );
390 
391  switch( m_Shape )
392  {
393  case S_SEGMENT:
394  bbox.SetEnd( m_End );
395  break;
396 
397  case S_CIRCLE:
398  bbox.Inflate( GetRadius() );
399  break;
400 
401  case S_ARC:
402  computeArcBBox( bbox );
403  break;
404 
405  case S_POLYGON:
406  {
407  wxPoint p_end;
408  MODULE* module = GetParentModule();
409 
410  for( unsigned ii = 0; ii < m_PolyPoints.size(); ii++ )
411  {
412  wxPoint pt = m_PolyPoints[ii];
413 
414  if( module ) // Transform, if we belong to a module
415  {
416  RotatePoint( &pt, module->GetOrientation() );
417  pt += module->GetPosition();
418  }
419 
420  if( ii == 0 )
421  p_end = pt;
422 
423  bbox.SetX( std::min( bbox.GetX(), pt.x ) );
424  bbox.SetY( std::min( bbox.GetY(), pt.y ) );
425  p_end.x = std::max( p_end.x, pt.x );
426  p_end.y = std::max( p_end.y, pt.y );
427  }
428 
429  bbox.SetEnd( p_end );
430  }
431  break;
432 
433  default:
434  ;
435  }
436 
437  bbox.Inflate( ((m_Width+1) / 2) + 1 );
438  bbox.Normalize();
439 
440  return bbox;
441 }
const wxPoint & GetPosition() const override
Definition: class_module.h:143
polygon (not yet used for tracks, but could be in microwave apps)
void SetOrigin(const wxPoint &pos)
usual segment : line with rounded ends
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:317
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
double GetOrientation() const
Definition: class_module.h:147
void SetEnd(int x, int y)
Arcs (with rounded ends)
void SetX(int val)
STROKE_T m_Shape
Shape: line, Circle, Arc.
void computeArcBBox(EDA_RECT &aBBox) const
void SetY(int val)
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.
int GetX() const
int GetY() const
MODULE * GetParentModule() const
Function GetParentModule returns a pointer to the parent module, or NULL if DRAWSEGMENT does not belo...
int m_Width
thickness of lines ...
std::vector< wxPoint > m_PolyPoints
int GetRadius() const
Function GetRadius returns the radius of this item Has meaning only for arc and circle.
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
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 119 of file class_drawsegment.cpp.

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(), DRAWSEGMENT::TransformShapeWithClearanceToPolygon(), POINT_EDITOR::updateItem(), and POINT_EDITOR::updatePoints().

120 {
121  wxPoint c;
122 
123  switch( m_Shape )
124  {
125  case S_ARC:
126  case S_CIRCLE:
127  c = m_Start;
128  break;
129 
130  case S_SEGMENT:
131  // Midpoint of the line
132  c = ( GetStart() + GetEnd() ) / 2;
133  break;
134 
135  case S_POLYGON:
136  case S_RECT:
137  case S_CURVE:
138  c = GetBoundingBox().Centre();
139  break;
140 
141  default:
142  wxASSERT_MSG( false, "DRAWSEGMENT::GetCentre not implemented for shape"
143  + ShowShape( GetShape() ) );
144  break;
145  }
146 
147  return c;
148 }
static wxString ShowShape(STROKE_T aShape)
Function ShowShape converts the enum STROKE_T integer value to a wxString.
polygon (not yet used for tracks, but could be in microwave apps)
usual segment : line with rounded ends
segment with non rounded ends
STROKE_T GetShape() const
wxPoint m_Start
Line start point or Circle and Arc center.
const wxPoint & GetEnd() const
Function GetEnd returns the ending point of the graphic.
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.
Bezier Curve.
wxPoint Centre() const
const wxPoint & GetStart() const
Function GetStart returns the starting point of the graphic.
virtual const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
wxString EDGE_MODULE::GetClass ( ) const
inlineoverridevirtual

Function GetClass returns the class name.

Returns
wxString

Reimplemented from DRAWSEGMENT.

Definition at line 118 of file class_edge_mod.h.

119  {
120  return wxT( "MGRAPHIC" );
121  }
const wxPoint& EDGE_MODULE::GetEnd0 ( ) const
inline
STATUS_FLAGS EDA_ITEM::GetFlags ( ) const
inlineinherited

Definition at line 255 of file base_struct.h.

References EDA_ITEM::m_Flags.

Referenced by AbortMoveAndEditTarget(), SCH_SCREEN::addConnectedItemsToBlock(), AddMenusForBitmap(), AddMenusForBusEntry(), AddMenusForComponent(), AddMenusForComponentField(), AddMenusForEditComponent(), AddMenusForGLabel(), AddMenusForHierchicalSheet(), AddMenusForHLabel(), AddMenusForLabel(), AddMenusForSheetPin(), AddMenusForText(), SCH_EDIT_FRAME::BeginSegment(), SCH_EDIT_FRAME::ChangeTextOrient(), Collect_TrackSegmentsToDrag(), SCH_EDIT_FRAME::ConvertPart(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), LIB_EDIT_FRAME::CreatePin(), PCB_EDIT_FRAME::createPopUpMenuForFootprints(), PCB_EDIT_FRAME::createPopUpMenuForFpPads(), PCB_EDIT_FRAME::createPopUpMenuForFpTexts(), PCB_EDIT_FRAME::createPopUpMenuForTexts(), PCB_EDIT_FRAME::createPopupMenuForTracks(), PCB_EDIT_FRAME::createPopUpMenuForZones(), PCB_EDIT_FRAME::Delete_Segment_Edge(), BOARD::Draw(), PCB_EDIT_FRAME::Edit_TrackSegm_Width(), SCH_EDIT_FRAME::EditComponentFieldText(), SCH_EDIT_FRAME::EditImage(), PCB_EDIT_FRAME::FlipTextePcb(), LIB_VIEW_FRAME::GeneralControl(), SCH_EDIT_FRAME::GeneralControl(), SCH_SCREEN::GetConnection(), InitialiseDragParameters(), LIB_EDIT_FRAME::LoadOneSymbol(), Magnetize(), SCH_EDIT_FRAME::MirrorImage(), SCH_EDIT_FRAME::MirrorSheet(), moveBitmap(), SCH_EDIT_FRAME::OnAutoplaceFields(), SCH_EDIT_FRAME::OnConvertTextType(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), SCH_EDIT_FRAME::OnDragItem(), SCH_EDIT_FRAME::OnEditItem(), LIB_EDIT_FRAME::OnEditPin(), FOOTPRINT_EDIT_FRAME::OnHotKey(), SCH_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotkeyBeginRoute(), PCB_EDIT_FRAME::OnHotkeyCopyItem(), PCB_EDIT_FRAME::OnHotkeyDeleteItem(), PCB_EDIT_FRAME::OnHotkeyDuplicateOrArrayItem(), PCB_EDIT_FRAME::OnHotkeyEditItem(), PCB_EDIT_FRAME::OnHotkeyFlipItem(), PCB_EDIT_FRAME::OnHotkeyMoveItem(), PCB_EDIT_FRAME::OnHotkeyPlaceItem(), PCB_EDIT_FRAME::OnHotkeyRotateItem(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), SCH_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), FOOTPRINT_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnMoveItem(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), TARGET_PROPERTIES_DIALOG_EDITOR::OnOkClick(), SCH_EDIT_FRAME::OnOpenLibraryEditor(), SCH_EDIT_FRAME::OnOrient(), FOOTPRINT_EDIT_FRAME::OnRightClick(), GERBVIEW_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRightClick(), PCB_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRotate(), SCH_EDIT_FRAME::OnSelectUnit(), PCB_EDIT_FRAME::PlaceTarget(), FOOTPRINT_EDIT_FRAME::PrepareItemForHotkey(), LIB_EDIT_FRAME::Process_Special_Functions(), EDIT_TOOL::Properties(), PCB_BASE_FRAME::Rotate_Module(), PCB_EDIT_FRAME::Rotate_Texte_Pcb(), SCH_EDIT_FRAME::RotateField(), SCH_EDIT_FRAME::RotateHierarchicalSheet(), SCH_EDIT_FRAME::RotateImage(), PCB_BASE_FRAME::RotateTextModule(), SCH_EDIT_FRAME::SaveCopyInUndoList(), SCH_SCREEN::SelectBlockItems(), SCH_EDIT_FRAME::SetBusEntryShape(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), Show_Drag_Track_Segment_With_Cte_Slope(), Show_MoveNode(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), DIALOG_LABEL_EDITOR::TextPropertiesAccept(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataFromWindow(), and DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow().

255 { return m_Flags; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
LAYER_ID BOARD_ITEM::GetLayer ( ) const
inlineinherited

Function GetLayer returns the primary layer this item is on.

Definition at line 132 of file class_board_item.h.

References BOARD_ITEM::m_Layer.

Referenced by Abort_MoveOrCopyModule(), DIALOG_GLOBAL_DELETION::AcceptPcbDelete(), CINFO3D_VISU::AddGraphicsShapesWithClearanceToContainer(), DIMENSION::AdjustDimensionDetails(), PCB_EDIT_FRAME::Begin_DrawSegment(), PCB_EDIT_FRAME::Begin_Zone(), GRID_HELPER::BestSnapAnchor(), PCB_EDIT_FRAME::Block_SelectItems(), ZONE_CONTAINER::buildFeatureHoleList(), BuildUnconnectedThermalStubsPolygonList(), PCB_EDIT_FRAME::Change_Side_Module(), checkConnectedTo(), BOARD::CombineAllAreasInNet(), BOARD::ConvertBrdLayerToPolygonalContours(), MODULE::CopyNetlistSettings(), CreateBoardSection(), CINFO3D_VISU::createLayers(), MWAVE::CreateMicrowaveInductor(), CreateRoutesSection(), DIALOG_DIMENSION_EDITOR::DIALOG_DIMENSION_EDITOR(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DRC::doEdgeZoneDrc(), PCB_EDIT_FRAME::DoGenFootprintsPositionFile(), DRC::doTrackKeepoutDrc(), TEXTE_MODULE::Draw(), DRAWSEGMENT::Draw(), KIGFX::PCB_PAINTER::draw(), PCB_EDIT_FRAME::duplicateZone(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Layer(), PCB_EDIT_FRAME::Edit_Zone_Params(), PCB_EDIT_FRAME::End_Zone(), export_vrml_drawsegment(), export_vrml_edge_module(), export_vrml_module(), export_vrml_pcbtext(), export_vrml_text_module(), export_vrml_zones(), PCB_EDIT_FRAME::ExportToGenCAD(), TEXTE_PCB::Flip(), PCB_TARGET::Flip(), Flip(), TEXTE_MODULE::Flip(), TRACK::Flip(), MODULE::Flip(), DIMENSION::Flip(), DRAWSEGMENT::Flip(), ZONE_CONTAINER::Flip(), PCB_IO::FootprintSave(), FootprintWriteShape(), PCB_IO::formatLayer(), DSN::SPECCTRA_DB::FromBOARD(), genModuleOnRoutingMatrix(), genPlacementRoutingMatrix(), BOARD::GetFootprint(), getOptimalModulePlacement(), BOARD::GetPad(), BOARD::GetVisibleTrack(), SELECTION_TOOL::guessSelectionCandidates(), ZONE_CONTAINER::Hatch(), BOARD::HitTestForAnyFilledArea(), idf_export_module(), DIALOG_NON_COPPER_ZONES_EDITOR::Init(), DIALOG_MODULE_BOARD_EDITOR::InitBoardProperties(), GENERAL_COLLECTOR::Inspect(), D_PAD::IsFlipped(), MODULE::IsFlipped(), ZONE_CONTAINER::IsOnCopperLayer(), ZONE_CONTAINER::IsSame(), itemIsIncludedByFilter(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), BOARD::MarkTrace(), BOARD::NormalizeAreaPolygon(), BOARD::OnAreaPolygonModified(), PCB_EDIT_FRAME::OnRightClick(), ZONE_SETTINGS::operator<<(), PlaceCells(), PCB_EDIT_FRAME::PlaceDraggedOrMovedTrackSegment(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), BRDITEMS_PLOTTER::Plot_Edges_Modules(), BRDITEMS_PLOTTER::PlotAllTextsModule(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotDrawSegment(), BRDITEMS_PLOTTER::PlotFilledAreas(), BRDITEMS_PLOTTER::PlotPcbTarget(), PlotSilkScreen(), PlotSolderMaskLayer(), PlotStandardLayer(), BRDITEMS_PLOTTER::PlotTextePcb(), Print_Module(), PCB_EDIT_FRAME::PrintPage(), BOARD::RedrawAreasOutlines(), BOARD::RedrawFilledAreas(), TRACKS_CLEANER::remove_duplicates_of_track(), PCB_EDIT_FRAME::Remove_Zone_Corner(), SaveCopyOfZones(), SELECTION_TOOL::selectable(), ShowClearance(), PCB_EDIT_FRAME::Start_Move_Zone_Corner(), PCB_EDIT_FRAME::Start_Move_Zone_Drag_Outline_Edge(), PCB_EDIT_FRAME::Start_Move_Zone_Outlines(), PCB_EDIT_FRAME::Swap_Layers(), PNS_KICAD_IFACE::syncTrack(), BOARD::Test_Connections_To_Copper_Areas(), BOARD::Test_Drc_Areas_Outlines_To_Areas_Outlines(), BOARD::TestAreaIntersection(), BOARD::TestAreaIntersections(), ZONE_CONTAINER::TestForCopperIslandAndRemoveInsulatedIslands(), DRC::testKeepoutAreas(), TEXTE_MODULE::TEXTE_MODULE(), TraceSegmentPcb(), TrackListSortByNetcode(), DialogEditModuleText::TransferDataFromWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow(), DialogEditModuleText::TransferDataToWindow(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_MODEDIT_FP_BODY_ITEM_PROPERTIES::TransferDataToWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow(), CINFO3D_VISU::transformGraphicModuleEdgeToPolygonSet(), MODULE::TransformGraphicShapesWithClearanceToPolygonSet(), MODULE::TransformGraphicTextWithClearanceToPolygonSet(), TstModuleOnBoard(), TEXTE_MODULE::ViewGetLayers(), TRACK::ViewGetLayers(), TRACKS_CLEANER::zoneForTrackEndpoint(), and PCB_EDITOR_CONTROL::ZoneMerge().

132 { return m_Layer; }
LAYER_ID m_Layer
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 77 of file class_board_item.cpp.

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

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

78 {
79  BOARD* board = GetBoard();
80 
81  if( board )
82  return board->GetLayerName( m_Layer );
83 
84  // If no parent, return standard name
86 }
const wxString GetLayerName(LAYER_ID aLayer) const
Function GetLayerName returns the name of a layer given by aLayer.
LAYER_ID m_Layer
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:166
static wxString GetStandardLayerName(LAYER_ID aLayerId)
Function GetStandardLayerName returns an "English Standard" name of a PCB layer when given aLayerNumb...
Definition: class_board.h:646
virtual BOARD * GetBoard() const
Function GetBoard returns the BOARD in which this BOARD_ITEM resides, or NULL if none.
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 VIA, and D_PAD.

Definition at line 140 of file class_board_item.h.

Referenced by build_pad_testpoints(), BOARD::chainMarkedSegments(), Collect_TrackSegmentsToDrag(), DRC::doTrackDrc(), PCB_EDIT_FRAME::EraseRedundantTrack(), find_vias_and_tracks_at(), TRACK::GetEndSegments(), TRACK::GetTrack(), BOARD::MarkTrace(), PCB_EDIT_FRAME::PrintPage(), RN_NET::processZones(), CONNECTIONS::SearchConnectedTracks(), CONNECTIONS::SearchTracksConnectedToPads(), and PCB_EDIT_FRAME::StartMoveOneNodeOrSegment().

140 { return LSET( m_Layer ); }
LAYER_ID m_Layer
Class LSET is a set of LAYER_IDs.
double DRAWSEGMENT::GetLength ( ) const
inlineinherited

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

Returns
double - the length of the track

Definition at line 206 of file class_drawsegment.h.

References DRAWSEGMENT::GetEnd(), GetLineLength(), and DRAWSEGMENT::GetStart().

Referenced by DRAWSEGMENT::GetSelectMenuText().

207  {
208  return GetLineLength( GetStart(), GetEnd() );
209  }
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:183
const wxPoint & GetEnd() const
Function GetEnd returns the ending point of the graphic.
const wxPoint & GetStart() const
Function GetStart returns the starting point of the graphic.
DHEAD* EDA_ITEM::GetList ( ) const
inlineinherited
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 262 of file class_edge_mod.cpp.

263 {
264  return show_mod_edge_xpm;
265 }
void EDGE_MODULE::GetMsgPanelInfo ( 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 223 of file class_edge_mod.cpp.

References BLUE, BROWN, DARKCYAN, BOARD_ITEM::GetLayerName(), DRAWSEGMENT::GetMsgPanelInfo(), BOARD_ITEM::GetParent(), MODULE::GetReference(), EDA_ITEM::GetTimeStamp(), MODULE::GetValue(), EDA_ITEM::m_Parent, and RED.

224 {
225  wxString msg;
226 
227  MODULE* module = (MODULE*) m_Parent;
228 
229  if( !module )
230  return;
231 
232  BOARD* board = (BOARD*) module->GetParent();
233 
234  if( !board )
235  return;
236 
237  aList.push_back( MSG_PANEL_ITEM( _( "Footprint" ), module->GetReference(), DARKCYAN ) );
238  aList.push_back( MSG_PANEL_ITEM( _( "Value" ), module->GetValue(), BLUE ) );
239  msg.Printf( wxT( "%8.8lX" ), module->GetTimeStamp() );
240  aList.push_back( MSG_PANEL_ITEM( _( "TimeStamp" ), msg, BROWN ) );
241  aList.push_back( MSG_PANEL_ITEM( _( "Footprint Layer" ),
242  module->GetLayerName(), RED ) );
243 
244  // append the features shared with the base class
246 }
Definition: colors.h:57
BOARD_ITEM_CONTAINER * GetParent() const
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:168
virtual void GetMsgPanelInfo(std::vector< MSG_PANEL_ITEM > &aList) override
Function GetMsgPanelInfo populates aList of MSG_PANEL_ITEM objects with it's internal state for displ...
const wxString & GetValue() const
Function GetValue.
Definition: class_module.h:439
wxString GetLayerName() const
Function GetLayerName returns the name of the PCB layer on which the item resides.
Definition: colors.h:60
time_t GetTimeStamp() const
Definition: base_struct.h:204
Class BOARD holds information pertinent to a Pcbnew printed circuit board.
Definition: class_board.h:166
const wxString & GetReference() const
Function GetReference.
Definition: class_module.h:411
Class EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:53
Definition: colors.h:62
int BOARD_ITEM::getNextNumberInSequence ( const std::set< int > &  aSeq,
bool  aFillSequenceGaps 
)
staticprotectedinherited

Definition at line 223 of file class_board_item.cpp.

Referenced by MODULE::GetNextPadName().

224 {
225  if( aSeq.empty() )
226  return 1;
227 
228  // By default go to the end of the sequence
229  int candidate = *aSeq.rbegin();
230 
231  // Filling in gaps in pad numbering
232  if( aFillSequenceGaps )
233  {
234  // start at the beginning
235  candidate = *aSeq.begin();
236 
237  for( auto it : aSeq )
238  {
239  if( it - candidate > 1 )
240  break;
241 
242  candidate = it;
243  }
244  }
245 
246  ++candidate;
247 
248  return candidate;
249 }
BOARD_ITEM_CONTAINER* BOARD_ITEM::GetParent ( void  ) const
inlineinherited

Definition at line 126 of file class_board_item.h.

References EDA_ITEM::m_Parent.

Referenced by Abort_Move_ModuleOutline(), AbortMoveTextModule(), POINT_EDITOR::addCorner(), PCB_EDIT_FRAME::createPopUpMenuForFpTexts(), FOOTPRINT_EDIT_FRAME::Delete_Edge_Module(), BOARD_ITEM::DeleteStructure(), PCB_BASE_FRAME::DeleteTextModule(), DialogEditModuleText::DialogEditModuleText(), KIGFX::PCB_PAINTER::draw(), TEXTE_MODULE::DrawUmbilical(), PCB_EDIT_FRAME::duplicateItems(), PCB_IO::format(), FormatProbeItem(), BOARD_ITEM::GetBoard(), LEGACY_ARRAY_CREATOR::getModule(), GetMsgPanelInfo(), GetSelectMenuText(), TEXTE_MODULE::GetSelectMenuText(), TEXTE_MODULE::GetShownText(), GENERAL_COLLECTOR::Inspect(), LEGACY_PLUGIN::loadMODULE_TEXT(), PCB_EDIT_FRAME::moveExact(), FOOTPRINT_EDIT_FRAME::OnRightClick(), FOOTPRINT_EDIT_FRAME::Place_EdgeMod(), PCB_BASE_FRAME::PlaceTexteModule(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), BRDITEMS_PLOTTER::PlotTextModule(), PCB_EDIT_FRAME::Process_Special_Functions(), BOARD_COMMIT::Push(), PAD_TOOL::pushPadSettings(), PCB_BASE_FRAME::ResetTextSize(), PCB_BASE_FRAME::RotateTextModule(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SELECTION_TOOL::select(), ShowCurrentOutlineWhileMoving(), ShowNewEdgeModule(), and PCB_BASE_FRAME::StartMoveTexteModule().

126 { return (BOARD_ITEM_CONTAINER*) m_Parent; }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:168
Abstract interface for BOARD_ITEMs capable of storing other items inside.
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 192 of file class_drawsegment.cpp.

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

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

193 {
194  if( m_Parent->Type() != PCB_MODULE_T )
195  return NULL;
196 
197  return (MODULE*) m_Parent;
198 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:168
class MODULE, a footprint
Definition: typeinfo.h:101
std::vector<wxPoint>& DRAWSEGMENT::GetPolyPoints ( )
inlineinherited

Definition at line 170 of file class_drawsegment.h.

References DRAWSEGMENT::m_PolyPoints.

170 { return m_PolyPoints; }
std::vector< wxPoint > m_PolyPoints
const wxPoint& DRAWSEGMENT::GetPosition ( ) const
inlineoverridevirtualinherited

Implements BOARD_ITEM.

Definition at line 102 of file class_drawsegment.h.

References DRAWSEGMENT::m_Start.

Referenced by CINFO3D_VISU::AddShapeWithClearanceToContainer(), KIGFX::PCB_PAINTER::draw(), export_vrml_edge_module(), and DRAWSEGMENT::TransformShapeWithClearanceToPolygon().

102 { return m_Start; }
wxPoint m_Start
Line start point or Circle and Arc center.
int DRAWSEGMENT::GetRadius ( ) const
inlineinherited

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

Definition at line 141 of file class_drawsegment.h.

References GetLineLength(), and KiROUND().

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

142  {
143  double radius = GetLineLength( m_Start, m_End );
144  return KiROUND( radius );
145  }
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:183
static int KiROUND(double v)
KiROUND rounds a floating point number to an int using "round halfway cases away from zero"...
Definition: common.h:107
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
wxString EDGE_MODULE::GetSelectMenuText ( ) 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 250 of file class_edge_mod.cpp.

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

251 {
252  wxString text;
253  text.Printf( _( "Graphic (%s) on %s of %s" ),
254  GetChars( ShowShape( m_Shape ) ),
255  GetChars( GetLayerName() ),
256  GetChars( ((MODULE*) GetParent())->GetReference() ) );
257 
258  return text;
259 }
BOARD_ITEM_CONTAINER * GetParent() const
static wxString ShowShape(STROKE_T aShape)
Function ShowShape converts the enum STROKE_T integer value to a wxString.
wxString GetLayerName() const
Function GetLayerName returns the name of the PCB layer on which the item resides.
STROKE_T m_Shape
Shape: line, Circle, Arc.
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:92
const wxPoint& EDGE_MODULE::GetStart0 ( ) const
inline
STATUS_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 250 of file base_struct.h.

References EDA_ITEM::m_Status.

250 { return m_Status; }
STATUS_FLAGS m_Status
Definition: base_struct.h:161
int BOARD_ITEM::getTrailingInt ( wxString  aStr)
staticprotectedinherited

Definition at line 200 of file class_board_item.cpp.

Referenced by MODULE::GetNextPadName().

201 {
202  int number = 0;
203  int base = 1;
204 
205  // Trim and extract the trailing numeric part
206  int index = aStr.Len() - 1;
207  while( index >= 0 )
208  {
209  const char chr = aStr.GetChar( index );
210 
211  if( chr < '0' || chr > '9' )
212  break;
213 
214  number += ( chr - '0' ) * base;
215  base *= 10;
216  index--;
217  }
218 
219  return number;
220 }
int DRAWSEGMENT::GetType ( ) const
inlineinherited

Definition at line 90 of file class_drawsegment.h.

References DRAWSEGMENT::m_Type.

Referenced by PCB_EDIT_FRAME::Begin_DrawSegment(), and DRAWING_TOOL::PlaceDXF().

90 { return m_Type; }
int m_Type
Used in complex associations ( Dimensions.. )
bool DRAWSEGMENT::HitTest ( const wxPoint aPosition) const
overridevirtualinherited

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

Parameters
aPositionA reference to a wxPoint object containing the coordinates to test.
Returns
True if aPosition is within or on the item bounding area.

Reimplemented from BOARD_ITEM.

Definition at line 444 of file class_drawsegment.cpp.

References abs, ArcTangente(), dist, EuclideanNorm(), Format(), DRAWSEGMENT::GetAngle(), DRAWSEGMENT::GetArcAngleStart(), DRAWSEGMENT::GetCenter(), DRAWSEGMENT::GetRadius(), KiROUND(), DRAWSEGMENT::m_BezierPoints, DRAWSEGMENT::m_End, DRAWSEGMENT::m_Shape, DRAWSEGMENT::m_Start, DRAWSEGMENT::m_Width, NORMALIZE_ANGLE_POS(), S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_SEGMENT, TestSegmentHit(), wxPoint::x, and wxPoint::y.

445 {
446  switch( m_Shape )
447  {
448  case S_CIRCLE:
449  case S_ARC:
450  {
451  wxPoint relPos = aPosition - GetCenter();
452  int radius = GetRadius();
453  int dist = KiROUND( EuclideanNorm( relPos ) );
454 
455  if( abs( radius - dist ) <= ( m_Width / 2 ) )
456  {
457  if( m_Shape == S_CIRCLE )
458  return true;
459 
460  // For arcs, the test point angle must be >= arc angle start
461  // and <= arc angle end
462  // However angle values > 360 deg are not easy to handle
463  // so we calculate the relative angle between arc start point and teast point
464  // this relative arc should be < arc angle if arc angle > 0 (CW arc)
465  // and > arc angle if arc angle < 0 (CCW arc)
466  double arc_angle_start = GetArcAngleStart(); // Always 0.0 ... 360 deg, in 0.1 deg
467 
468  double arc_hittest = ArcTangente( relPos.y, relPos.x );
469 
470  // Calculate relative angle between the starting point of the arc, and the test point
471  arc_hittest -= arc_angle_start;
472 
473  // Normalise arc_hittest between 0 ... 360 deg
474  NORMALIZE_ANGLE_POS( arc_hittest );
475 
476  // Check angle: inside the arc angle when it is > 0
477  // and outside the not drawn arc when it is < 0
478  if( GetAngle() >= 0.0 )
479  {
480  if( arc_hittest <= GetAngle() )
481  return true;
482  }
483  else
484  {
485  if( arc_hittest >= (3600.0 + GetAngle()) )
486  return true;
487  }
488  }
489  }
490  break;
491 
492  case S_CURVE:
493  for( unsigned int i= 1; i < m_BezierPoints.size(); i++)
494  {
495  if( TestSegmentHit( aPosition, m_BezierPoints[i-1], m_BezierPoints[i-1], m_Width / 2 ) )
496  return true;
497  }
498  break;
499 
500  case S_SEGMENT:
501  if( TestSegmentHit( aPosition, m_Start, m_End, m_Width / 2 ) )
502  return true;
503  break;
504 
505  case S_POLYGON: // not yet handled
506  break;
507 
508  default:
509  wxASSERT_MSG( 0, wxString::Format( "unknown DRAWSEGMENT shape: %d", m_Shape ) );
510  break;
511  }
512 
513  return false;
514 }
double EuclideanNorm(const wxPoint &vector)
Euclidean norm of a 2D vector.
Definition: trigo.h:104
static int KiROUND(double v)
KiROUND rounds a floating point number to an int using "round halfway cases away from zero"...
Definition: common.h:107
const wxPoint GetCenter() const override
Function GetCenter()
polygon (not yet used for tracks, but could be in microwave apps)
double GetArcAngleStart() const
function GetArcAngleStart()
static const int dist[10][10]
Definition: dist.cpp:57
usual segment : line with rounded ends
void NORMALIZE_ANGLE_POS(T &Angle)
Definition: trigo.h:222
#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:271
wxPoint m_End
Line end point or circle and arc start point.
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.
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
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:142
int GetRadius() const
Function GetRadius returns the radius of this item Has meaning only for arc and circle.
std::vector< wxPoint > m_BezierPoints
bool DRAWSEGMENT::HitTest ( const EDA_RECT aRect,
bool  aContained = true,
int  aAccuracy = 0 
) const
overridevirtualinherited

Parameters
aRectA reference to an EDA_RECT object containg the area to test.
aContainedTest if aRect contains this object completly.
aAccuracyIncrease the item bounding box by this amount.
Returns
bool - True if aRect contains this object completly or if aRect intersects the object and aContained is False, otherwise false.

Reimplemented from BOARD_ITEM.

Definition at line 517 of file class_drawsegment.cpp.

References EDA_RECT::Contains(), Format(), DRAWSEGMENT::GetBoundingBox(), DRAWSEGMENT::GetEnd(), DRAWSEGMENT::GetStart(), EDA_RECT::Inflate(), EDA_RECT::Intersects(), DRAWSEGMENT::m_Shape, S_ARC, S_CIRCLE, S_CURVE, S_POLYGON, S_SEGMENT, wxPoint::x, and wxPoint::y.

518 {
519  wxPoint p1, p2;
520  int radius;
521  float theta;
522  EDA_RECT arect = aRect;
523  arect.Inflate( aAccuracy );
524 
525  switch( m_Shape )
526  {
527  case S_CIRCLE:
528  // Test if area intersects or contains the circle:
529  if( aContained )
530  return arect.Contains( GetBoundingBox() );
531  else
532  return arect.Intersects( GetBoundingBox() );
533  break;
534 
535  case S_ARC:
536  radius = hypot( (double)( GetEnd().x - GetStart().x ),
537  (double)( GetEnd().y - GetStart().y ) );
538  theta = std::atan2( (double)( GetEnd().y - GetStart().y ),
539  (double)( GetEnd().x - GetStart().x ) );
540 
541  //Approximate the arc with two lines. This should be accurate enough for selection.
542  p1.x = radius * std::cos( theta + M_PI/4 ) + GetStart().x;
543  p1.y = radius * std::sin( theta + M_PI/4 ) + GetStart().y;
544  p2.x = radius * std::cos( theta + M_PI/2 ) + GetStart().x;
545  p2.y = radius * std::sin( theta + M_PI/2 ) + GetStart().y;
546 
547  if( aContained )
548  return arect.Contains( GetEnd() ) && aRect.Contains( p1 ) && aRect.Contains( p2 );
549  else
550  return arect.Intersects( GetEnd(), p1 ) || aRect.Intersects( p1, p2 );
551 
552  break;
553 
554  case S_SEGMENT:
555  if( aContained )
556  return arect.Contains( GetStart() ) && aRect.Contains( GetEnd() );
557  else
558  return arect.Intersects( GetStart(), GetEnd() );
559 
560  break;
561 
562  case S_CURVE:
563  case S_POLYGON: // not yet handled
564  break;
565 
566  default:
567  wxASSERT_MSG( 0, wxString::Format( "unknown DRAWSEGMENT shape: %d", m_Shape ) );
568  break;
569  }
570 
571  return false;
572 }
bool Contains(const wxPoint &aPoint) const
Function Contains.
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.
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.
Bezier Curve.
bool Intersects(const EDA_RECT &aRect) const
Function Intersects tests for a common area between rectangles.
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.
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.
virtual const EDA_RECT GetBoundingBox() const override
Function GetBoundingBox returns the orthogonal, bounding box of this object for display purposes...
bool EDA_ITEM::IsBrightened ( ) const
inlineinherited

Definition at line 224 of file base_struct.h.

References BRIGHTENED.

Referenced by SELECTION_TOOL::disambiguationMenu().

224 { return m_Flags & BRIGHTENED; }
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:137
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
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 114 of file class_board_item.h.

Referenced by RN_DATA::Add(), RN_DATA::AddBlocked(), RN_DATA::AddSimple(), and RN_DATA::Remove().

115  {
116  return false;
117  }
bool EDA_ITEM::IsDragging ( ) const
inlineinherited
bool EDA_ITEM::IsHighlighted ( ) const
inlineinherited

Definition at line 223 of file base_struct.h.

References HIGHLIGHTED.

223 { return m_Flags & HIGHLIGHTED; }
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:136
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
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 202 of file class_board_item.h.

Referenced by DIALOG_GLOBAL_DELETION::AcceptPcbDelete(), GENERAL_COLLECTOR::Inspect(), PCB_EDITOR_CONTROL::modifyLockSelected(), and PCB_EDIT_FRAME::OnHotkeyDeleteItem().

203  {
204  // only MODULEs & TRACKs can be locked at this time.
205  return false;
206  }
bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 217 of file base_struct.h.

References IS_CHANGED.

Referenced by LIB_EDIT_FRAME::OnEditPin().

217 { return m_Flags & IS_CHANGED; }
#define IS_CHANGED
std::function passed to nested users by ref, avoids copying std::function
Definition: base_struct.h:109
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
bool EDA_ITEM::IsNew ( ) const
inlineinherited

Definition at line 216 of file base_struct.h.

References IS_NEW.

Referenced by Abort_Edit_Pcb_Text(), Abort_EditEdge(), Abort_Move_ModuleOutline(), Abort_MoveOrCopyModule(), Abort_Zone_Create_Outline(), AbortBuildDimension(), AbortMoveAndEditTarget(), abortMoveBitmap(), abortMoveItem(), AbortPinMove(), AbortSymbolTraceOn(), SCH_EDIT_FRAME::addCurrentItemToList(), SCH_EDIT_FRAME::addJunctionMenuEntries(), AddMenusForBus(), AddMenusForWire(), PCB_EDIT_FRAME::Delete_Segment(), PCB_EDIT_FRAME::Delete_Segment_Edge(), SCH_EDIT_FRAME::DeleteCurrentSegment(), LIB_ARC::drawEditGraphics(), LIB_ARC::drawGraphic(), DrawMovePin(), SCH_EDIT_FRAME::EditSheetPin(), LIB_PIN::EnableEditMode(), LIB_EDIT_FRAME::EndDrawGraphicItem(), SCH_EDIT_FRAME::EndSegment(), ExitSheet(), SCH_EDIT_FRAME::OnAutoplaceFields(), SCH_EDIT_FRAME::OnConvertTextType(), LIB_EDIT_FRAME::OnEditPin(), SCH_EDIT_FRAME::OnHotKey(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), LIB_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), FOOTPRINT_EDIT_FRAME::OnLeftDClick(), LIB_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::OnLeftDClick(), LIB_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRotate(), PCB_EDIT_FRAME::Place_Texte_Pcb(), PCB_BASE_FRAME::PlaceModule(), LIB_EDIT_FRAME::PlacePin(), PCB_EDIT_FRAME::PlaceTarget(), SCH_EDIT_FRAME::PrepareMoveItem(), SCH_EDIT_FRAME::ReSizeSheet(), ShowClearance(), PCB_EDIT_FRAME::StartMoveTextePcb(), PCB_EDIT_FRAME::SwitchLayer(), and DIALOG_LABEL_EDITOR::TextPropertiesAccept().

216 { return m_Flags & IS_NEW; }
#define IS_NEW
New item, just created.
Definition: base_struct.h:113
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
virtual bool BOARD_ITEM::IsOnLayer ( 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, and MARKER_PCB.

Definition at line 182 of file class_board_item.h.

Referenced by CINFO3D_VISU::createLayers(), TEXTE_PCB::Draw(), Draw(), ZONE_CONTAINER::Draw(), TEXTE_MODULE::Draw(), TRACK::Draw(), DRAWSEGMENT::Draw(), SEGZONE::Draw(), ZONE_CONTAINER::DrawFilledArea(), TRACK::DrawShortNetname(), ZONE_CONTAINER::DrawWhileCreateOutline(), GENERAL_COLLECTOR::Inspect(), SELECTION_TOOL::selectable(), BOARD::Test_Connections_To_Copper_Areas(), and TraceSegmentPcb().

183  {
184  return m_Layer == aLayer;
185  }
LAYER_ID m_Layer
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_SHEET_PIN, SCH_FIELD, and SCH_TEXT.

Definition at line 444 of file base_struct.h.

Referenced by EDA_ITEM::Matches(), and EDA_ITEM::Replace().

444 { return false; }
bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 222 of file base_struct.h.

References IS_RESIZED.

Referenced by ExitSheet().

222 { return m_Flags & IS_RESIZED; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
#define IS_RESIZED
Item being resized.
Definition: base_struct.h:114
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 193 of file class_board_item.h.

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

Referenced by PCB_EDIT_FRAME::OnHotKey(), and PCB_EDIT_FRAME::OnHotkeyDeleteItem().

194  {
195  return ( Type() == PCB_TRACE_T ) || ( Type() == PCB_VIA_T );
196  }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:107
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:108
bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 220 of file base_struct.h.

References IS_WIRE_IMAGE.

Referenced by abortMoveItem(), and SCH_FIELD::Draw().

220 { return m_Flags & IS_WIRE_IMAGE; }
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:117
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
SEARCH_RESULT EDA_ITEM::IterateForward ( EDA_ITEM listStart,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
staticinherited

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 132 of file base_struct.cpp.

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

Referenced by SCH_COLLECTOR::Collect(), SCH_FIND_COLLECTOR::Collect(), SCH_TYPE_COLLECTOR::Collect(), MODULE::Visit(), and BOARD::Visit().

136 {
137  EDA_ITEM* p = listStart;
138 
139  for( ; p; p = p->Pnext )
140  {
141  if( SEARCH_QUIT == p->Visit( inspector, testData, scanTypes ) )
142  return SEARCH_QUIT;
143  }
144 
145  return SEARCH_CONTINUE;
146 }
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...
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:151
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:164
virtual bool EDA_ITEM::Matches ( wxFindReplaceData &  aSearchData,
void *  aAuxData,
wxPoint aFindLocation 
)
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.
aFindLocationA pointer to a wxPoint object to store the location of matched item. The pointer can be NULL if it is not used.
Returns
True if the item's text matches the search criteria in aSearchData.

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

Definition at line 400 of file base_struct.h.

Referenced by SCH_FIND_COLLECTOR::Inspect(), SCH_MARKER::Matches(), LIB_PIN::Matches(), SCH_TEXT::Matches(), SCH_FIELD::Matches(), SCH_SHEET_PIN::Matches(), and SCH_SHEET::Matches().

401  {
402  return false;
403  }
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 184 of file base_struct.cpp.

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

185 {
186  wxString text = aText;
187  wxString searchText = aSearchData.GetFindString();
188 
189  // Don't match if searching for replaceable item and the item doesn't support text replace.
190  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
191  return false;
192 
193  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
194  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
195 
196  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
197  {
198  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
199  return text.Matches( searchText );
200 
201  return text.MakeUpper().Matches( searchText.MakeUpper() );
202  }
203 
204  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
205  return aText.Find( searchText ) != wxNOT_FOUND;
206 
207  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
208 }
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:444
Perform search using simple wild card matching (* & ?).
Perform a search for a item that has replaceable text.
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 312 of file class_edge_mod.cpp.

References DRAWSEGMENT::GetAngle(), DRAWSEGMENT::GetShape(), m_End0, DRAWSEGMENT::m_PolyPoints, m_Start0, MIRROR(), S_ARC, S_POLYGON, S_SEGMENT, DRAWSEGMENT::SetAngle(), SetDrawCoord(), wxPoint::x, and wxPoint::y.

Referenced by EDIT_TOOL::Mirror().

313 {
314  // Mirror an edge of the footprint. the layer is not modified
315  // This is a footprint shape modification.
316  switch( GetShape() )
317  {
318  case S_ARC:
319  SetAngle( -GetAngle() );
320  //Fall through
321  default:
322  case S_SEGMENT:
323  if( aMirrorAroundXAxis )
324  {
325  MIRROR( m_Start0.y, aCentre.y );
326  MIRROR( m_End0.y, aCentre.y );
327  }
328  else
329  {
330  MIRROR( m_Start0.x, aCentre.x );
331  MIRROR( m_End0.x, aCentre.x );
332  }
333  break;
334 
335  case S_POLYGON:
336  // polygon corners coordinates are always relative to the
337  // footprint position, orientation 0
338  for( unsigned ii = 0; ii < m_PolyPoints.size(); ii++ )
339  {
340  if( aMirrorAroundXAxis )
341  MIRROR( m_PolyPoints[ii].y, aCentre.y );
342  else
343  MIRROR( m_PolyPoints[ii].x, aCentre.x );
344  }
345  }
346 
347  SetDrawCoord();
348 }
polygon (not yet used for tracks, but could be in microwave apps)
usual segment : line with rounded ends
wxPoint m_End0
void MIRROR(T &aPoint, const T &aMirrorRef)
Definition: macros.h:111
STROKE_T GetShape() const
Arcs (with rounded ends)
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
std::vector< wxPoint > m_PolyPoints
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 363 of file class_edge_mod.cpp.

References DRAWSEGMENT::GetShape(), m_End0, DRAWSEGMENT::m_PolyPoints, m_Start0, S_POLYGON, and SetDrawCoord().

Referenced by MoveMarkedItemsExactly().

364 {
365  // Move an edge of the footprint.
366  // This is a footprint shape modification.
367  m_Start0 += aMoveVector;
368  m_End0 += aMoveVector;
369 
370  switch( GetShape() )
371  {
372  default:
373  break;
374 
375  case S_POLYGON:
376  // polygon corners coordinates are always relative to the
377  // footprint position, orientation 0
378  for( unsigned ii = 0; ii < m_PolyPoints.size(); ii++ )
379  m_PolyPoints[ii] += aMoveVector;
380  }
381 
382  SetDrawCoord();
383 }
polygon (not yet used for tracks, but could be in microwave apps)
wxPoint m_End0
STROKE_T GetShape() const
void SetDrawCoord()
Set draw coordinates (absolute values ) from relative coordinates.
wxPoint m_Start0
std::vector< wxPoint > m_PolyPoints
BOARD_ITEM* BOARD_ITEM::Next ( ) const
inlineinherited

Definition at line 124 of file class_board_item.h.

References EDA_ITEM::Pnext.

Referenced by DIALOG_GLOBAL_DELETION::AcceptPcbDelete(), CINFO3D_VISU::AddGraphicsShapesWithClearanceToContainer(), PCBNEW_CONTROL::AppendBoard(), PCB_EDIT_FRAME::AppendBoardFile(), PCB_EDIT_FRAME::ArchiveModulesOnBoard(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Block_SelectItems(), ZONE_CONTAINER::buildFeatureHoleList(), MODULE::BuildPolyCourtyard(), BOARD::ComputeBoundingBox(), BOARD::ConvertBrdLayerToPolygonalContours(), CopyMarkedItems(), CreateBoardSection(), CINFO3D_VISU::createLayers(), PCB_EDIT_FRAME::Delete_Drawings_All_Layer(), DeleteMarkedItems(), PCB_DRAW_PANEL_GAL::DisplayBoard(), PCB_EDIT_FRAME::DoGenFootprintsReport(), MODULE::Draw(), BOARD::Draw(), MODULE::DrawEdgesOnly(), DrawMovingBlockOutlines(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Layer(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Width(), export_vrml_drawings(), export_vrml_module(), MODULE::Flip(), PCB_IO::format(), EXCELLON_WRITER::GenDrillMapFile(), PCB_BASE_FRAME::GetFootprintFromBoardByReference(), MODULE::GetFootprintRect(), idf_export_outline(), PCB_EDIT_FRAME::ImportSpecctraSession(), MirrorMarkedItems(), MODULE::MODULE(), MODULE_EDITOR_TOOLS::ModuleEdgeOutlines(), MODULE_EDITOR_TOOLS::ModuleTextOutlines(), MODULE::MoveAnchorPosition(), MODULE::operator=(), MODULE_EDITOR_TOOLS::PasteItems(), PlaceCells(), BRDITEMS_PLOTTER::Plot_Edges_Modules(), BRDITEMS_PLOTTER::PlotAllTextsModule(), BRDITEMS_PLOTTER::PlotBoardGraphicItems(), PlotSolderMaskLayer(), PlotStandardLayer(), Print_Module(), FOOTPRINT_EDIT_FRAME::PrintPage(), PCB_EDIT_FRAME::PrintPage(), FOOTPRINT_EDIT_FRAME::RedrawActiveWindow(), PCB_BASE_FRAME::ResetModuleTextSizes(), RotateMarkedItems(), MODULE::RunOnChildren(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), MODULE::SetOrientation(), MODULE::SetPosition(), PCB_EDIT_FRAME::Swap_Layers(), TestForExistingItem(), DRC::testTexts(), CINFO3D_VISU::transformGraphicModuleEdgeToPolygonSet(), MODULE::TransformGraphicShapesWithClearanceToPolygonSet(), and MODULE::TransformGraphicTextWithClearanceToPolygonSet().

124 { return static_cast<BOARD_ITEM*>( Pnext ); }
Class BOARD_ITEM is a base class for any item which can be embedded within the BOARD container class...
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:164
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 241 of file base_struct.cpp.

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

242 {
243  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
244  GetChars( GetClass() ) ) );
245 
246  return false;
247 }
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:92
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
bool EDA_ITEM::Replace ( wxFindReplaceData &  aSearchData,
wxString &  aText 
)
inherited

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 211 of file base_struct.cpp.

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

Referenced by SCH_TEXT::Replace(), SCH_FIELD::Replace(), SCH_SHEET_PIN::Replace(), SCH_SHEET::Replace(), and SCH_FIND_COLLECTOR::ReplaceItem().

212 {
213  wxCHECK_MSG( IsReplaceable(), false,
214  wxT( "Attempt to replace text in <" ) + GetClass() + wxT( "> item." ) );
215 
216  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
217 
218  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
219  aSearchData.GetFindString() :
220  aSearchData.GetFindString().Upper() );
221 
222  if( result == wxNOT_FOUND )
223  return false;
224 
225  wxString prefix = aText.Left( result );
226  wxString suffix;
227 
228  if( aSearchData.GetFindString().length() + result < aText.length() )
229  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
230 
231  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
232  GetChars( aText ), GetChars( prefix ), GetChars( aSearchData.GetReplaceString() ),
233  GetChars( suffix ) );
234 
235  aText = prefix + aSearchData.GetReplaceString() + suffix;
236 
237  return true;
238 }
virtual bool IsReplaceable() const
Function IsReplaceable.
Definition: base_struct.h:444
const wxString traceFindReplace(wxT("KicadFindReplace"))
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:92
virtual wxString GetClass() const =0
Function GetClass returns the class name.
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_SHEET_PIN, SCH_FIELD, and SCH_TEXT.

Definition at line 432 of file base_struct.h.

432 { return false; }
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 350 of file class_edge_mod.cpp.

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

Referenced by MoveMarkedItemsExactly().

351 {
352  // We should rotate the relative coordinates, but to avoid duplicate code,
353  // do the base class rotation of draw coordinates, which is acceptable
354  // because in module editor, m_Pos0 = m_Pos
355  DRAWSEGMENT::Rotate( aRotCentre, aAngle );
356 
357  // and now update the relative coordinates, which are
358  // the reference in most transforms.
359  SetLocalCoord();
360 }
void SetLocalCoord()
Set relative coordinates from draw coordinates.
virtual void Rotate(const wxPoint &aRotCentre, double aAngle) override
Function Rotate Rotate this object.
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 186 of file class_drawsegment.cpp.

References DRAWSEGMENT::m_Angle, and NormalizeAngle360().

Referenced by DXF2BRD_CONVERTER::addArc(), PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToModule(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), Flip(), DXF2BRD_CONVERTER::insertArc(), EAGLE_PLUGIN::loadPlain(), Mirror(), EAGLE_PLUGIN::packageWire(), GPCB_FPL_CACHE::parseMODULE(), DRAWING_TOOL::PlaceDXF(), DIALOG_MODEDIT_FP_BODY_ITEM_PROPERTIES::TransferDataFromWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), updateArcFromConstructionMgr(), and POINT_EDITOR::updateItem().

187 {
188  m_Angle = NormalizeAngle360( aAngle );
189 }
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.
T NormalizeAngle360(T Angle)
Normalize angle to be in the -360.0 .. 360.0:
Definition: trigo.h:202
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 151 of file class_drawsegment.h.

Referenced by DXF2BRD_CONVERTER::addArc(), DXF2BRD_CONVERTER::addCircle(), DXF2BRD_CONVERTER::insertArc(), updateArcFromConstructionMgr(), and POINT_EDITOR::updateItem().

152  { m_End = aArcStartPoint; }
wxPoint m_End
Line end point or circle and arc start point.
void DRAWSEGMENT::SetBezControl1 ( const wxPoint aPoint)
inlineinherited

Definition at line 95 of file class_drawsegment.h.

Referenced by DRAWING_TOOL::PlaceDXF().

95 { m_BezierC1 = aPoint; }
wxPoint m_BezierC1
Bezier Control Point 1.
void DRAWSEGMENT::SetBezControl2 ( const wxPoint aPoint)
inlineinherited

Definition at line 98 of file class_drawsegment.h.

Referenced by DRAWING_TOOL::PlaceDXF().

98 { m_BezierC2 = aPoint; }
wxPoint m_BezierC2
Bezier Control Point 2.
void DRAWSEGMENT::SetBezierPoints ( const std::vector< wxPoint > &  aPoints)
inlineinherited

Definition at line 172 of file class_drawsegment.h.

Referenced by DRAWING_TOOL::PlaceDXF().

173  {
174  m_BezierPoints = aPoints;
175  }
std::vector< wxPoint > m_BezierPoints
void EDA_ITEM::SetBrightened ( )
inlineinherited

Definition at line 229 of file base_struct.h.

References BRIGHTENED, and EDA_ITEM::SetFlags().

Referenced by SELECTION_TOOL::disambiguationMenu().

229 { SetFlags( BRIGHTENED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:253
#define BRIGHTENED
item is drawn with a bright contour
Definition: base_struct.h:137
void DRAWSEGMENT::SetCenter ( const wxPoint aCenterPoint)
inlineinherited

For arcs and circles:

Definition at line 156 of file class_drawsegment.h.

Referenced by DXF2BRD_CONVERTER::addArc(), DXF2BRD_CONVERTER::addCircle(), DXF2BRD_CONVERTER::insertArc(), and updateArcFromConstructionMgr().

156 { m_Start = aCenterPoint; }
wxPoint m_Start
Line start point or Circle and Arc center.
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 88 of file class_edge_mod.cpp.

References MODULE::GetOrientation(), MODULE::GetPosition(), DRAWSEGMENT::m_End, m_End0, EDA_ITEM::m_Parent, DRAWSEGMENT::m_Start, m_Start0, RotatePoint(), wxPoint::x, and wxPoint::y.

Referenced by PCAD2KICAD::PCB_ARC::AddToModule(), PCAD2KICAD::PCB_LINE::AddToModule(), LEGACY_PLUGIN::loadMODULE_EDGE(), Mirror(), Move(), MODULE::MoveAnchorPosition(), GPCB_FPL_CACHE::parseMODULE(), PCB_PARSER::parseMODULE_unchecked(), and MODULE::SetPosition().

89 {
90  MODULE* module = (MODULE*) m_Parent;
91 
92  m_Start = m_Start0;
93  m_End = m_End0;
94 
95  if( module )
96  {
97  RotatePoint( &m_Start.x, &m_Start.y, module->GetOrientation() );
98  RotatePoint( &m_End.x, &m_End.y, module->GetOrientation() );
99 
100  m_Start += module->GetPosition();
101  m_End += module->GetPosition();
102  }
103 }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:168
const wxPoint & GetPosition() const override
Definition: class_module.h:143
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:317
wxPoint m_End0
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
double GetOrientation() const
Definition: class_module.h:147
wxPoint m_Start0
void DRAWSEGMENT::SetEndX ( int  x)
inlineinherited

Definition at line 120 of file class_drawsegment.h.

References wxPoint::x.

Referenced by DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

120 { m_End.x = x; }
wxPoint m_End
Line end point or circle and arc start point.
void DRAWSEGMENT::SetEndY ( int  y)
inlineinherited

Definition at line 119 of file class_drawsegment.h.

References wxPoint::y.

Referenced by DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

119 { m_End.y = y; }
wxPoint m_End
Line end point or circle and arc start point.
void EDA_ITEM::SetFlags ( STATUS_FLAGS  aMask)
inlineinherited

Definition at line 253 of file base_struct.h.

Referenced by SCH_SCREEN::addConnectedItemsToBlock(), AddSegmentToDragList(), PCB_EDIT_FRAME::AppendBoardFile(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Route(), PCB_EDIT_FRAME::Begin_Zone(), PCB_EDIT_FRAME::BeginMoveDimensionText(), PCB_EDIT_FRAME::BeginMoveTarget(), SCH_EDIT_FRAME::BeginSegment(), PCB_EDIT_FRAME::Change_Side_Module(), SCH_EDIT_FRAME::ConvertPart(), CopyMarkedItems(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), LIB_PART::CopySelectedItems(), SCH_EDIT_FRAME::CreateBusBusEntry(), SCH_EDIT_FRAME::CreateBusWireEntry(), SCH_EDIT_FRAME::CreateNewImage(), SCH_EDIT_FRAME::CreateNewText(), LIB_EDIT_FRAME::CreatePin(), SCH_EDIT_FRAME::CreateSheet(), SCH_EDIT_FRAME::CreateSheetPin(), PCB_EDIT_FRAME::CreateTarget(), PCB_EDIT_FRAME::CreateTextePcb(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), PCB_EDIT_FRAME::EditDimension(), LIB_PIN::EnableEditMode(), PCB_EDIT_FRAME::FlipTextePcb(), SCH_SCREEN::GetConnection(), PCB_BASE_FRAME::GlobalChange_PadSettings(), FOOTPRINT_EDIT_FRAME::HandleBlockEnd(), PCB_BASE_FRAME::Import_Pad_Settings(), SCH_EDIT_FRAME::ImportSheetPin(), SCH_JUNCTION::IsSelectStateChanged(), SCH_NO_CONNECT::IsSelectStateChanged(), SCH_MARKER::IsSelectStateChanged(), SCH_BUS_ENTRY_BASE::IsSelectStateChanged(), SCH_LINE::IsSelectStateChanged(), SCH_BITMAP::IsSelectStateChanged(), SCH_TEXT::IsSelectStateChanged(), SCH_COMPONENT::IsSelectStateChanged(), SCH_SHEET::IsSelectStateChanged(), SCH_EDIT_FRAME::Load_Component(), PCB_BASE_FRAME::LoadModuleFromLibrary(), SCH_SCREEN::MarkConnections(), MarkItemsInBloc(), moveBitmap(), SCH_EDIT_FRAME::MoveImage(), SCH_EDIT_FRAME::OnConvertTextType(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), LIB_EDIT_FRAME::OnEditPin(), TARGET_PROPERTIES_DIALOG_EDITOR::OnOkClick(), SCH_EDIT_FRAME::OnSelectUnit(), PCB_EDIT_FRAME::Other_Layer_Route(), DRAWING_TOOL::PlaceText(), SCH_EDIT_FRAME::PrepareMoveItem(), LIB_EDIT_FRAME::Process_Special_Functions(), EDIT_TOOL::Properties(), SCH_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::RepeatDrawItem(), LIB_EDIT_FRAME::RepeatPinItem(), SCH_EDIT_FRAME::ReSizeSheet(), PCB_BASE_FRAME::Rotate_Module(), PCB_EDIT_FRAME::Rotate_Texte_Pcb(), SCH_SCREEN::SchematicCleanUp(), SCH_SCREEN::SelectBlockItems(), EDA_ITEM::SetBrightened(), LIB_PIN::SetConversion(), EDA_ITEM::SetHighlighted(), EDA_ITEM::SetModified(), LIB_PIN::SetNumber(), EDA_ITEM::SetSelected(), EDA_ITEM::SetWireImage(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), PCB_EDIT_FRAME::Start_Move_DrawItem(), FOOTPRINT_EDIT_FRAME::Start_Move_EdgeMod(), PCB_EDIT_FRAME::Start_Move_Zone_Corner(), PCB_EDIT_FRAME::Start_Move_Zone_Drag_Outline_Edge(), PCB_EDIT_FRAME::Start_Move_Zone_Outlines(), PCB_EDIT_FRAME::StartMoveModule(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), PCB_BASE_FRAME::StartMovePad(), LIB_EDIT_FRAME::StartMovePin(), PCB_BASE_FRAME::StartMoveTexteModule(), PCB_EDIT_FRAME::StartMoveTextePcb(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and UndrawAndMarkSegmentsToDrag().

253 { m_Flags |= aMask; }
STATUS_FLAGS m_Flags
Flag bits for editing and other uses.
Definition: base_struct.h:175
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 265 of file base_struct.h.

Referenced by SCH_EDIT_FRAME::OnFindSchematicItem(), and SCH_EDIT_FRAME::updateFindReplaceView().

265 { m_forceVisible = aEnable; }
bool m_forceVisible
Set to true to override the visibility setting of the item.
Definition: base_struct.h:172
void EDA_ITEM::SetHighlighted ( )
inlineinherited

Definition at line 228 of file base_struct.h.

References HIGHLIGHTED, and EDA_ITEM::SetFlags().

228 { SetFlags( HIGHLIGHTED ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:253
#define HIGHLIGHTED
item is drawn in normal colors, when the rest is darkened
Definition: base_struct.h:136
virtual void BOARD_ITEM::SetLayer ( 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 DIMENSION.

Definition at line 149 of file class_board_item.h.

Referenced by DXF2BRD_CONVERTER::addArc(), DXF2BRD_CONVERTER::addCircle(), PNS_KICAD_IFACE::AddItem(), DXF2BRD_CONVERTER::addLine(), DXF2BRD_CONVERTER::addMText(), DXF2BRD_CONVERTER::addPolyline(), DXF2BRD_CONVERTER::addText(), PCAD2KICAD::PCB_TEXT::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_POLYGON::AddToBoard(), PCAD2KICAD::PCB_MODULE::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToModule(), PCAD2KICAD::PCB_LINE::AddToModule(), DIMENSION::AdjustDimensionDetails(), DIALOG_TRACK_VIA_PROPERTIES::Apply(), PCB_EDIT_FRAME::Begin_DrawSegment(), FOOTPRINT_EDIT_FRAME::Begin_Edge_Module(), PCB_EDIT_FRAME::Begin_Route(), PCB_EDIT_FRAME::Begin_Zone(), PCB_EDIT_FRAME::Create_MuWaveComponent(), PCB_EDIT_FRAME::Create_MuWavePolygonShape(), MWAVE::CreateMicrowaveInductor(), PCB_BASE_FRAME::CreateNewModule(), PCB_EDIT_FRAME::CreateTarget(), PCB_EDIT_FRAME::CreateTextePcb(), FOOTPRINT_EDIT_FRAME::CreateTextModule(), DRAWING_TOOL::drawArc(), DRAWING_TOOL::drawSegment(), FOOTPRINT_EDIT_FRAME::Edit_Edge_Layer(), ZONE_SETTINGS::ExportSetting(), TEXTE_PCB::Flip(), PCB_TARGET::Flip(), Flip(), TEXTE_MODULE::Flip(), TRACK::Flip(), MODULE::Flip(), DRAWSEGMENT::Flip(), ZONE_CONTAINER::Flip(), genPlacementRoutingMatrix(), DXF2BRD_CONVERTER::insertArc(), BOARD::InsertArea(), DXF2BRD_CONVERTER::insertLine(), LEGACY_PLUGIN::loadMODULE(), LEGACY_PLUGIN::loadMODULE_TEXT(), LEGACY_PLUGIN::loadPCB_TEXT(), EAGLE_PLUGIN::loadPlain(), EAGLE_PLUGIN::loadSignals(), LEGACY_PLUGIN::loadTrackList(), DSN::SPECCTRA_DB::makeTRACK(), PCB_EDIT_FRAME::Other_Layer_Route(), EAGLE_PLUGIN::packageCircle(), EAGLE_PLUGIN::packagePolygon(), EAGLE_PLUGIN::packageRectangle(), EAGLE_PLUGIN::packageSMD(), EAGLE_PLUGIN::packageText(), EAGLE_PLUGIN::packageWire(), GPCB_FPL_CACHE::parseMODULE(), PlaceCells(), DRAWING_TOOL::PlaceDXF(), DRAWING_TOOL::PlaceText(), BRDITEMS_PLOTTER::PlotDimension(), BRDITEMS_PLOTTER::PlotPcbTarget(), PlotSolderMaskLayer(), DIMENSION::SetLayer(), ShowNewTrackWhenMovingCursor(), PCB_EDIT_FRAME::Swap_Layers(), TEXTE_MODULE::TEXTE_MODULE(), DialogEditModuleText::TransferDataFromWindow(), DIALOG_PCB_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow(), and DIALOG_MODEDIT_FP_BODY_ITEM_PROPERTIES::TransferDataFromWindow().

150  {
151  // trap any invalid layers, then go find the caller and fix it.
152  // wxASSERT( unsigned( aLayer ) < unsigned( NB_PCB_LAYERS ) );
153  m_Layer = aLayer;
154  }
LAYER_ID m_Layer
void EDA_ITEM::SetList ( DHEAD aList)
inlineinherited

Definition at line 214 of file base_struct.h.

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

214 { m_List = aList; }
DHEAD * m_List
which DLIST I am on.
Definition: base_struct.h:166
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.

References PNS::angle(), MODULE::GetOrientation(), MODULE::GetPosition(), DRAWSEGMENT::m_End, m_End0, EDA_ITEM::m_Parent, DRAWSEGMENT::m_Start, m_Start0, RotatePoint(), wxPoint::x, and wxPoint::y.

Referenced by Rotate().

70 {
71  MODULE* module = (MODULE*) m_Parent;
72 
73  if( module == NULL )
74  {
75  m_Start0 = m_Start;
76  m_End0 = m_End;
77  return;
78  }
79 
80  m_Start0 = m_Start - module->GetPosition();
81  m_End0 = m_End - module->GetPosition();
82  double angle = module->GetOrientation();
83  RotatePoint( &m_Start0.x, &m_Start0.y, -angle );
84  RotatePoint( &m_End0.x, &m_End0.y, -angle );
85 }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:168
const wxPoint & GetPosition() const override
Definition: class_module.h:143
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:317
wxPoint m_End0
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
double GetOrientation() const
Definition: class_module.h:147
static DIRECTION_45::AngleType angle(const VECTOR2I &a, const VECTOR2I &b)
wxPoint m_Start0
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 212 of file class_board_item.h.

213  {
214  // only MODULEs & TRACKs can be locked at this time.
215  }
void EDA_ITEM::SetModified ( )
inherited
void EDA_ITEM::SetParent ( EDA_ITEM aParent)
inlineinherited

Definition at line 213 of file base_struct.h.

Referenced by MODULE::Add(), BOARD::Add(), BOARD_NETLIST_UPDATER::addNewComponent(), LIB_FIELD::Copy(), SCH_EDIT_FRAME::copyBlockItems(), CopyMarkedItems(), SCH_EDIT_FRAME::CreateSheet(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), PCB_EDIT_FRAME::Exchange_Module(), PCB_IO::FootprintSave(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), DIALOG_MODULE_MODULE_EDITOR::initModeditProperties(), DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties(), LIB_PART::LIB_PART(), SCH_SHEET::Load(), FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD(), SCH_LEGACY_PLUGIN::loadHierarchy(), LIB_EDIT_FRAME::LoadOneSymbol(), MODULE::MODULE(), DIALOG_MODULE_BOARD_EDITOR::OnEditReference(), DIALOG_MODULE_BOARD_EDITOR::OnEditValue(), DIALOG_LIB_EDIT_PIN::OnPaintShowPanel(), MODULE::operator=(), SCH_COMPONENT::operator=(), PCB_PARSER::parseMODULE_unchecked(), MODULE_EDITOR_TOOLS::PasteItems(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), FOOTPRINT_PREVIEW_PANEL::renderFootprint(), BOARD_NETLIST_UPDATER::replaceComponent(), BOARD::ReplaceNetlist(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SaveCopyOfZones(), SCH_COMPONENT::SCH_COMPONENT(), SCH_SHEET::SCH_SHEET(), SCH_SHEET_PIN::SCH_SHEET_PIN(), LIB_PART::SetFields(), SetSchItemParent(), PCB_EDIT_FRAME::StartMoveModule(), BOARD_ITEM::SwapData(), SCH_COMPONENT::SwapData(), and SCH_SHEET::SwapData().

213 { m_Parent = aParent; }
EDA_ITEM * m_Parent
Linked list: Link (parent struct)
Definition: base_struct.h:168
void DRAWSEGMENT::SetPolyPoints ( const std::vector< wxPoint > &  aPoints)
inlineinherited

Definition at line 177 of file class_drawsegment.h.

Referenced by EAGLE_PLUGIN::packagePolygon(), EAGLE_PLUGIN::packageRectangle(), and DRAWING_TOOL::PlaceDXF().

178  {
179  m_PolyPoints = aPoints;
180  }
std::vector< wxPoint > m_PolyPoints
void DRAWSEGMENT::SetPosition ( const wxPoint aPos)
inlineoverridevirtualinherited

Implements BOARD_ITEM.

Definition at line 101 of file class_drawsegment.h.

101 { m_Start = aPos; }
wxPoint m_Start
Line start point or Circle and Arc center.
void EDA_ITEM::SetSelected ( )
inlineinherited

Definition at line 227 of file base_struct.h.

References SELECTED, and EDA_ITEM::SetFlags().

Referenced by SELECTION_TOOL::selectVisually().

227 { SetFlags( SELECTED ); }
#define SELECTED
Definition: base_struct.h:120
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:253
void DRAWSEGMENT::SetStartX ( int  x)
inlineinherited

Definition at line 111 of file class_drawsegment.h.

References wxPoint::x.

Referenced by DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

111 { m_Start.x = x; }
wxPoint m_Start
Line start point or Circle and Arc center.
void DRAWSEGMENT::SetStartY ( int  y)
inlineinherited

Definition at line 110 of file class_drawsegment.h.

References wxPoint::y.

Referenced by DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow().

110 { m_Start.y = y; }
wxPoint m_Start
Line start point or Circle and Arc center.
void EDA_ITEM::SetStatus ( STATUS_FLAGS  aStatus)
inlineinherited
void EDA_ITEM::SetTimeStamp ( time_t  aNewTimeStamp)
inlineinherited

Definition at line 203 of file base_struct.h.

Referenced by BOARD_NETLIST_UPDATER::addNewComponent(), PCAD2KICAD::PCB_TEXT::AddToBoard(), PCAD2KICAD::PCB_PAD::AddToBoard(), PCAD2KICAD::PCB_ARC::AddToBoard(), PCAD2KICAD::PCB_LINE::AddToBoard(), PCAD2KICAD::PCB_POLYGON::AddToBoard(), PCAD2KICAD::PCB_MODULE::AddToBoard(), SCH_EDIT_FRAME::AppendOneEEProject(), PCB_EDIT_FRAME::Begin_Zone(), SCH_EDIT_FRAME::CreateSheet(), Diagnose(), DuplicateItemsInList(), DuplicateStruct(), EDIT_TOOL::editFootprintInFpEditor(), PCB_EDIT_FRAME::Exchange_Module(), PCB_IO::FootprintSave(), DIALOG_MODULE_BOARD_EDITOR::GotoModuleEditor(), EDA_ITEM::initVars(), BOARD::InsertArea(), SCH_SHEET::Load(), LEGACY_PLUGIN::loadMODULE(), PCB_BASE_FRAME::LoadModuleFromLibrary(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), EAGLE_PLUGIN::loadPlain(), EAGLE_PLUGIN::loadSignals(), LEGACY_PLUGIN::loadTrackList(), EDA_ITEM::operator=(), EAGLE_PLUGIN::packageCircle(), EAGLE_PLUGIN::packagePolygon(), EAGLE_PLUGIN::packageRectangle(), EAGLE_PLUGIN::packageText(), SCH_EDIT_FRAME::PasteListOfItems(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), PCB_EDIT_FRAME::Process_Special_Functions(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), BOARD::ReplaceNetlist(), SCH_SHEET::SCH_SHEET(), SCH_COMPONENT::SetTimeStamp(), SimilarLabelsDiagnose(), BOARD_ITEM::SwapData(), and TestDuplicateSheetNames().

203 { m_TimeStamp = aNewTimeStamp; }
time_t m_TimeStamp
Time stamp used for logical links.
Definition: base_struct.h:169
void DRAWSEGMENT::SetType ( int  aType)
inlineinherited

Definition at line 89 of file class_drawsegment.h.

Referenced by PCB_EDIT_FRAME::Begin_DrawSegment(), and DRAWING_TOOL::PlaceDXF().

89 { m_Type = aType; }
int m_Type
Used in complex associations ( Dimensions.. )
void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 226 of file base_struct.h.

References IS_WIRE_IMAGE, and EDA_ITEM::SetFlags().

Referenced by moveItemWithMouseCursor().

226 { SetFlags( IS_WIRE_IMAGE ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: base_struct.h:253
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: base_struct.h:117
wxString BOARD_ITEM::ShowShape ( STROKE_T  aShape)
staticinherited

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

Definition at line 38 of file class_board_item.cpp.

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(), and DRAWSEGMENT::Rotate().

39 {
40  switch( aShape )
41  {
42  case S_SEGMENT: return _( "Line" );
43  case S_RECT: return _( "Rect" );
44  case S_ARC: return _( "Arc" );
45  case S_CIRCLE: return _( "Circle" );
46  case S_CURVE: return _( "Bezier Curve" );
47  case S_POLYGON: return _( "Polygon" );
48  default: return wxT( "??" );
49  }
50 }
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.
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 463 of file base_struct.h.

Referenced by PART_LIB::GetEntryTypePowerNames().

463 { return *aLeft < *aRight; }
void BOARD_ITEM::SwapData ( BOARD_ITEM aImage)
inherited

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 edition 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

Definition at line 577 of file undo_redo.cpp.

References EDA_ITEM::Back(), EDA_ITEM::GetParent(), EDA_ITEM::GetTimeStamp(), EDA_ITEM::m_List, EDA_ITEM::Next(), EDA_ITEM::Pback, PCB_DIMENSION_T, PCB_LINE_T, PCB_MODULE_T, PCB_TARGET_T, PCB_TEXT_T, PCB_TRACE_T, PCB_VIA_T, PCB_ZONE_AREA_T, PCB_ZONE_T, EDA_ITEM::Pnext, EDA_ITEM::SetParent(), EDA_ITEM::SetTimeStamp(), and EDA_ITEM::Type().

Referenced by Abort_Edit_Pcb_Text(), PCB_EDIT_FRAME::Place_Texte_Pcb(), PCB_EDIT_FRAME::PlaceTarget(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), and BOARD_COMMIT::Revert().

578 {
579  if( aImage == NULL )
580  return;
581 
582  wxASSERT( Type() == aImage->Type() );
583 
584  // Remark: to create images of edited items to undo, we are using Clone method
585  // which can duplication of items foe copy, but does not clone all members
586  // mainly pointers in chain and time stamp, which is set to new, unique value.
587  // So we have to use the current values of these parameters.
588 
589  EDA_ITEM* pnext = Next();
590  EDA_ITEM* pback = Back();
591  DHEAD* mylist = m_List;
592  time_t timestamp = GetTimeStamp();
593  EDA_ITEM* parent = GetParent();
594 
595  switch( Type() )
596  {
597  case PCB_MODULE_T:
598  std::swap( *((MODULE*) this), *((MODULE*) aImage) );
599  break;
600 
601  case PCB_ZONE_AREA_T:
602  std::swap( *((ZONE_CONTAINER*) this), *((ZONE_CONTAINER*) aImage) );
603  break;
604 
605  case PCB_LINE_T:
606  std::swap( *((DRAWSEGMENT*) this), *((DRAWSEGMENT*) aImage) );
607  break;
608 
609  case PCB_TRACE_T:
610  std::swap( *((TRACK*) this), *((TRACK*) aImage) );
611  break;
612 
613  case PCB_VIA_T:
614  std::swap( *((VIA*) this), *((VIA*) aImage) );
615  break;
616 
617  case PCB_TEXT_T:
618  std::swap( *((TEXTE_PCB*)this), *((TEXTE_PCB*)aImage) );
619  break;
620 
621  case PCB_TARGET_T:
622  std::swap( *((PCB_TARGET*)this), *((PCB_TARGET*)aImage) );
623  break;
624 
625  case PCB_DIMENSION_T:
626  std::swap( *((DIMENSION*)this), *((DIMENSION*)aImage) );
627  break;
628 
629  case PCB_ZONE_T:
630  default:
631  wxLogMessage( wxT( "SwapData() error: unexpected type %d" ), Type() );
632  break;
633  }
634 
635  // Restore pointers and time stamp, to be sure they are not broken
636  Pnext = pnext;
637  Pback = pback;
638  m_List = mylist;
639  SetTimeStamp( timestamp );
640  SetParent( parent );
641 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
BOARD_ITEM_CONTAINER * GetParent() const
Class ZONE_CONTAINER handles a list of polygons defining a copper zone.
Definition: class_zone.h:78
EDA_ITEM * Pback
previous in linked list
Definition: base_struct.h:165
Class DHEAD is only for use by template class DLIST, use that instead.
Definition: dlist.h:40
class ZONE_CONTAINER, a zone area
Definition: typeinfo.h:114
class TEXTE_PCB, text on a layer
Definition: typeinfo.h:104
void SetTimeStamp(time_t aNewTimeStamp)
Definition: base_struct.h:203
class TRACK, a track segment (segment on a copper layer)
Definition: typeinfo.h:107
BOARD_ITEM * Next() const
class MODULE, a footprint
Definition: typeinfo.h:101
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:213
class SEGZONE, a segment used to fill a zone area (segment on a copper layer)
Definition: typeinfo.h:109
class DIMENSION, a dimension (graphic item)
Definition: typeinfo.h:112
class PCB_TARGET, a target (graphic item)
Definition: typeinfo.h:113
time_t GetTimeStamp() const
Definition: base_struct.h:204
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:151
class VIA, a via (like a track segment on a copper layer)
Definition: typeinfo.h:108
class DRAWSEGMENT, a segment not on copper layers
Definition: typeinfo.h:103
DHEAD * m_List
which DLIST I am on.
Definition: base_struct.h:166
EDA_ITEM * Pnext
next in linked list
Definition: base_struct.h:164
Class DIMENSION.
BOARD_ITEM * Back() const
void DRAWSEGMENT::TransformShapeWithClearanceToPolygon ( SHAPE_POLY_SET aCornerBuffer,
int  aClearanceValue,
int  aCircleToSegmentsCount,
double  aCorrectionFactor 
) const
inherited

Function TransformShapeWithClearanceToPolygon Convert the track shape 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
aCircleToSegmentsCount= the number of segments to approximate a circle
aCorrectionFactor= the correction to apply to circles radius to keep clearance when the circle is approximated by segment bigger or equal to the real clearance value (usually near from 1.0)
aCornerBuffer= a buffer to store the polygon
aClearanceValue= the clearance around the pad
aCircleToSegmentsCount= the number of segments to approximate a circle
aCorrectionFactor= the correction to apply to circles radius to keep clearance when the circle is approxiamted by segment bigger or equal to the real clearance value (usually near from 1.0)

Definition at line 491 of file board_items_to_polygon_shape_transform.cpp.

References SHAPE_POLY_SET::Append(), DRAWSEGMENT::GetArcStart(), DRAWSEGMENT::GetCenter(), MODULE::GetOrientation(), DRAWSEGMENT::GetParentModule(), DRAWSEGMENT::GetPolyPoints(), DRAWSEGMENT::GetPosition(), DRAWSEGMENT::GetRadius(), DRAWSEGMENT::m_Angle, 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(), TransformRingToPolygon(), and TransformRoundedEndsSegmentToPolygon().

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

495 {
496  // The full width of the lines to create:
497  int linewidth = m_Width + (2 * aClearanceValue);
498 
499  switch( m_Shape )
500  {
501  case S_CIRCLE:
502  TransformRingToPolygon( aCornerBuffer, GetCenter(), GetRadius(),
503  aCircleToSegmentsCount, linewidth ) ;
504  break;
505 
506  case S_ARC:
507  TransformArcToPolygon( aCornerBuffer, GetCenter(),
508  GetArcStart(), m_Angle,
509  aCircleToSegmentsCount, linewidth );
510  break;
511 
512  case S_SEGMENT:
514  aCircleToSegmentsCount, linewidth );
515  break;
516 
517  case S_POLYGON:
518  if ( GetPolyPoints().size() < 2 )
519  break; // Malformed polygon.
520  {
521  // The polygon is expected to be a simple polygon
522  // not self intersecting, no hole.
523  MODULE* module = GetParentModule(); // NULL for items not in footprints
524  double orientation = module ? module->GetOrientation() : 0.0;
525 
526  // Build the polygon with the actual position and orientation:
527  std::vector< wxPoint> poly;
528  poly = GetPolyPoints();
529 
530  for( unsigned ii = 0; ii < poly.size(); ii++ )
531  {
532  RotatePoint( &poly[ii], orientation );
533  poly[ii] += GetPosition();
534  }
535 
536  // Generate polygons for the outline + clearance
537  // This code is compatible with a polygon with holes linked to external outline
538  // by overlapping segments.
539 
540  // Insert the initial polygon:
541  aCornerBuffer.NewOutline();
542 
543  for( unsigned ii = 0; ii < poly.size(); ii++ )
544  aCornerBuffer.Append( poly[ii].x, poly[ii].y );
545 
546  if( linewidth ) // Add thick outlines
547  {
548  CPolyPt corner1( poly[poly.size()-1] );
549 
550  for( unsigned ii = 0; ii < poly.size(); ii++ )
551  {
552  CPolyPt corner2( poly[ii] );
553 
554  if( corner2 != corner1 )
555  {
557  corner1, corner2, aCircleToSegmentsCount, linewidth );
558  }
559 
560  corner1 = corner2;
561  }
562  }
563  }
564  break;
565 
566  case S_CURVE: // Bezier curve (TODO: not yet in use)
567  break;
568 
569  default:
570  break;
571  }
572 }
void TransformRoundedEndsSegmentToPolygon(SHAPE_POLY_SET &aCornerBuffer, wxPoint aStart, wxPoint aEnd, int aCircleToSegmentsCount, int aWidth)
Function TransformRoundedEndsSegmentToPolygon convert a segment with rounded ends to a polygon Conver...
const wxPoint GetCenter() const override
Function GetCenter()
polygon (not yet used for tracks, but could be in microwave apps)
usual segment : line with rounded ends
const std::vector< wxPoint > & GetPolyPoints() const
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:317
double m_Angle
Used only for Arcs: Arc angle in 1/10 deg.
const wxPoint & GetArcStart() const
wxPoint m_Start
Line start point or Circle and Arc center.
wxPoint m_End
Line end point or circle and arc start point.
double GetOrientation() const
Definition: class_module.h:147
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.
Bezier Curve.
int NewOutline()
Creates a new empty polygon in the set and returns its index
void TransformRingToPolygon(SHAPE_POLY_SET &aCornerBuffer, wxPoint aCentre, int aRadius, int aCircleToSegmentsCount, int aWidth)
Function TransformRingToPolygon Creates a polygon from a ring Convert arcs to multiple straight segme...
void TransformArcToPolygon(SHAPE_POLY_SET &aCornerBuffer, wxPoint aCentre, wxPoint aStart, double aArcAngle, int aCircleToSegmentsCount, int aWidth)
Function TransformArcToPolygon Creates a polygon from an Arc Convert arcs to multiple straight segmen...
MODULE * GetParentModule() const
Function GetParentModule returns a pointer to the parent module, or NULL if DRAWSEGMENT does not belo...
int m_Width
thickness of lines ...
int GetRadius() const
Function GetRadius returns the radius of this item Has meaning only for arc and circle.
const wxPoint & GetPosition() const override
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) ...
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 198 of file base_struct.h.

References EDA_ITEM::m_StructType.

Referenced by Abort_Move_ModuleOutline(), abortMoveBitmap(), abortMoveItem(), AbortPinMove(), DIALOG_GLOBAL_DELETION::AcceptPcbDelete(), MODULE::Add(), BOARD::Add(), RN_DATA::Add(), PCB_EDIT_FRAME::Add45DegreeSegment(), RN_DATA::AddBlocked(), SCH_SCREEN::addConnectedItemsToBlock(), POINT_EDITOR::addCorner(), POINT_EDITOR::addCornerCondition(), SCH_EDIT_FRAME::addCurrentItemToList(), AddMenusForComponent(), AddMenusForEditComponent(), SCH_SHEET::AddPin(), RN_DATA::AddSimple(), SCH_EDIT_FRAME::AppendOneEEProject(), PCB_EDIT_FRAME::Attribut_Track(), PCB_EDIT_FRAME::Autoroute(), PCB_EDIT_FRAME::Begin_Route(), SCH_EDIT_FRAME::BeginSegment(), PCB_EDIT_FRAME::Block_Delete(), PCB_EDIT_FRAME::Block_Duplicate(), PCB_EDIT_FRAME::Block_Flip(), PCB_EDIT_FRAME::Block_Move(), PCB_EDIT_FRAME::Block_Rotate(), SCH_SCREENS::BuildScreenList(), SCH_SHEET_LIST::BuildSheetList(), HIERARCHY_NAVIG_DLG::BuildSheetsTree(), calcArea(), calcMaxArea(), calcMinArea(), DIALOG_EXCHANGE_MODULE::changeAllFootprints(), DIALOG_EXCHANGE_MODULE::changeSameFootprints(), TEXTE_PCB::ClassOf(), ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), TEXTE_MODULE::ClassOf(), DRAWSEGMENT::ClassOf(), TRACK::ClassOf(), MODULE::ClassOf(), D_PAD::ClassOf(), NETINFO_ITEM::ClassOf(), BOARD::ClassOf(), VIA::ClassOf(), SCH_SHEET::CleanupSheet(), Collect_TrackSegmentsToDrag(), LIB_BEZIER::compare(), LIB_CIRCLE::compare(), LIB_RECTANGLE::compare(), LIB_POLYLINE::compare(), LIB_TEXT::compare(), LIB_ARC::compare(), LIB_FIELD::compare(), LIB_PIN::compare(), SCH_SHEET::ComponentCount(), GRID_HELPER::computeAnchors(), LIB_PART::CopySelectedItems(), SCH_SCREEN::CountConnectedItems(), SCH_SHEET::CountSheets(), CINFO3D_VISU::createLayers(), BOARD::CreateLockPoint(), SCH_EDIT_FRAME::CreateNewText(), CINFO3D_VISU::createNewTrack(), PCB_EDIT_FRAME::createPopupMenuForTracks(), CreateRoutesSection(), PCB_EDITOR_CONTROL::CrossProbeSchToPcb(), D_PAD::D_PAD(), FOOTPRINT_EDIT_FRAME::Delete_Edge_Module(), PCB_EDIT_FRAME::Delete_Segment_Edge(), SCH_SCREENS::DeleteAllMarkers(), SCH_SCREEN::DeleteItem(), LIB_EDIT_FRAME::deleteItem(), deleteItem(), SCH_EDIT_FRAME::DeleteItem(), DeleteItemsInList(), DeleteNullTrackSegments(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), DIALOG_ERC::DisplayERC_MarkersList(), DRC::doTrackDrc(), DRC::doTrackKeepoutDrc(), KIGFX::PCB_PAINTER::Draw(), KIGFX::PCB_PAINTER::draw(), DrawMovePin(), DrawMovingBlockOutlines(), drawPickedItems(), EDIT_TOOL::Duplicate(), BOARD::Duplicate(), MODULE::Duplicate(), PCB_EDIT_FRAME::duplicateItems(), DuplicateItemsInList(), SCH_EDIT_FRAME::EditComponent(), SCH_EDIT_FRAME::EditComponentFieldText(), LIB_EDIT_FRAME::EditSymbolText(), SCH_EDIT_FRAME::EndSegment(), PCB_EDIT_FRAME::EraseRedundantTrack(), ExitSheet(), SCH_SCREEN::ExtractWires(), DRC::fillMarker(), find_vias_and_tracks_at(), SCH_EDIT_FRAME::FindComponentAndItem(), NETLIST_EXPORTER::findNextComponent(), NETLIST_EXPORTER::findNextComponentAndCreatePinList(), SCH_SHEET_PATH::FindNextItem(), SCH_SHEET_LIST::FindNextItem(), SCH_SHEET_PATH::FindPreviousItem(), SCH_SHEET_LIST::FindPreviousItem(), POINT_EDITOR::finishItem(), FootprintWriteShape(), FormatProbeItem(), genPlacementRoutingMatrix(), POINT_EDITOR::get45DegConstrainer(), TRACK::GetBestInsertPoint(), BOARD_ITEM::GetBoard(), LIB_PART::GetBodyBoundingBox(), TRACK::GetBoundingBox(), BOARD_CONNECTED_ITEM::GetClearance(), NETLIST_OBJECT::GetComponentParent(), SCH_SCREEN::GetConnection(), SCH_TEXT::GetConnectionPoints(), SCH_TEXT::GetEndPoints(), SCH_SHEET::GetEndPoints(), GetFirstVia(), SCH_SCREEN::GetHierarchicalItems(), TEXTE_PCB::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), BOARD_CONNECTED_ITEM::GetNetClass(), LIB_PART::GetNextDrawItem(), RN_NET::GetNodes(), CONNECTED_POINT::GetPad(), DRAWSEGMENT::GetParentModule(), SCH_SCREEN::GetPin(), LIB_PART::GetPin(), SCH_COMPONENT::GetPinPhysicalPosition(), getRect(), CONNECTED_POINT::GetTrack(), LIB_PART::GetUnitBoundingBox(), LIB_EDIT_FRAME::GlobalSetPins(), SELECTION_TOOL::guessSelectionCandidates(), SCH_SHEET::HasUndefinedPins(), SCH_EDIT_FRAME::ImportSheetPin(), DIALOG_LABEL_EDITOR::InitDialog(), ROUTER_TOOL::InlineDrag(), SCH_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), SCH_FIND_COLLECTOR::Inspect(), ARRAY_CREATOR::Invoke(), SCH_TEXT::IsDanglingStateChanged(), SCH_COLLECTOR::IsDraggableJunction(), SCH_COLLECTOR::IsNode(), TRACK::IsNull(), SCH_SCREEN::IsTerminalPoint(), BOARD_ITEM::IsTrack(), itemIsIncludedByFilter(), SCH_SHEET::Load(), PNS_PCBNEW_RULE_RESOLVER::localPadClearance(), SCH_EDIT_FRAME::LocateAndShowItem(), SCH_EDIT_FRAME::LocateItem(), SCH_SHEET::LocatePathOfScreen(), Magnetize(), EDIT_POINTS_FACTORY::Make(), SCH_SCREEN::MarkConnections(), MarkItemsInBloc(), BOARD::MarkTrace(), TRACKS_CLEANER::merge_collinear_of_track(), TRACKS_CLEANER::mergeCollinearSegmentIfPossible(), SCH_LINE::MergeOverlap(), FOOTPRINT_EDIT_FRAME::ModeditLocateAndDisplay(), moveItemWithMouseCursor(), MoveMarkedItems(), MoveMarkedItemsExactly(), SCH_EDIT_FRAME::OnConvertTextType(), SCH_EDIT_FRAME::OnCopySchematicItemRequest(), SCH_EDIT_FRAME::OnDragItem(), SCH_EDIT_FRAME::OnEditItem(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), LIB_EDIT_FRAME::OnEditPin(), LIB_EDIT_FRAME::OnHotKey(), SCH_EDIT_FRAME::OnHotKey(), PCB_EDIT_FRAME::OnHotkeyCopyItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyDeleteItem(), PCB_EDIT_FRAME::OnHotkeyDeleteItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyDuplicateItem(), PCB_EDIT_FRAME::OnHotkeyDuplicateOrArrayItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyEditItem(), PCB_EDIT_FRAME::OnHotkeyEditItem(), PCB_EDIT_FRAME::OnHotkeyFlipItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyMoveItem(), PCB_EDIT_FRAME::OnHotkeyMoveItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyMoveItemExact(), PCB_EDIT_FRAME::OnHotkeyPlaceItem(), FOOTPRINT_EDIT_FRAME::OnHotkeyRotateItem(), PCB_EDIT_FRAME::OnHotkeyRotateItem(), FOOTPRINT_EDIT_FRAME::OnLeftClick(), LIB_EDIT_FRAME::OnLeftClick(), SCH_EDIT_FRAME::OnLeftClick(), PCB_EDIT_FRAME::OnLeftClick(), LIB_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnLeftDClick(), PCB_EDIT_FRAME::OnLeftDClick(), SCH_EDIT_FRAME::OnMoveItem(), SCH_EDIT_FRAME::OnOpenLibraryEditor(), SCH_EDIT_FRAME::OnOrient(), FOOTPRINT_EDIT_FRAME::OnRightClick(), LIB_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRightClick(), PCB_EDIT_FRAME::OnRightClick(), SCH_EDIT_FRAME::OnRotate(), SCH_EDIT_FRAME::OnSelectUnit(), SCH_LINE::operator<(), LIB_ITEM::operator<(), SCH_ITEM::operator<(), SCH_COMPONENT::operator<(), SCH_BITMAP::operator=(), SCH_COMPONENT::operator=(), SCH_SHEET::operator=(), LIB_ITEM::operator==(), OrCell_Trace(), SCH_EDIT_FRAME::OrientComponent(), BOARD_COMMIT::parentObject(), MODULE_EDITOR_TOOLS::PasteItems(), SCH_EDIT_FRAME::PasteListOfItems(), PCB_BASE_FRAME::PcbGeneralLocateAndDisplay(), LIB_EDIT_FRAME::PlacePin(), SCH_FIELD::Plot(), BRDITEMS_PLOTTER::Plot_1_EdgeModule(), SCH_EDIT_FRAME::PrepareMoveItem(), PCB_EDIT_FRAME::PrintPage(), FOOTPRINT_EDIT_FRAME::Process_Special_Functions(), LIB_EDIT_FRAME::Process_Special_Functions(), SCH_EDIT_FRAME::Process_Special_Functions(), PCB_EDIT_FRAME::Process_Special_Functions(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), RedrawWhileMovingCursor(), MODULE::Remove(), BOARD::Remove(), RN_DATA::Remove(), TRACKS_CLEANER::remove_duplicates_of_track(), POINT_EDITOR::removeCorner(), POINT_EDITOR::removeCornerCondition(), LIB_PART::RemoveDrawItem(), SCH_SHEET::RemovePin(), FOOTPRINT_EDIT_FRAME::RemoveStruct(), PCB_EDIT_FRAME::RemoveStruct(), SCH_EDIT_FRAME::RepeatDrawItem(), LIB_EDIT_FRAME::RepeatPinItem(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), SCH_SCREEN::ReplaceWires(), SELECTION_TOOL::RequestSelection(), PCB_EDIT_FRAME::Reset_All_Tracks_And_Vias_To_Netclass_Values(), PCB_BASE_FRAME::ResetTextSize(), SCH_EDIT_FRAME::ReSizeSheet(), BOARD_COMMIT::Revert(), SCH_EDIT_FRAME::RotateField(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SCH_EDIT_FRAME::SaveUndoItemInUndoList(), CONNECTIONS::SearchConnectedTracks(), SCH_SHEET::SearchHierarchy(), SELECTION_TOOL::select(), SELECTION_TOOL::selectable(), SCH_SCREEN::SelectBlockItems(), PCB_EDIT_FRAME::SelectHighLight(), SELECTION_TOOL::selectVisually(), ITEM_PICKER::SetItem(), SetSchItemParent(), DIALOG_LABEL_EDITOR::SetTitle(), PCB_EDIT_FRAME::SetTrackSegmentWidth(), PCB_EDIT_FRAME::Show_1_Ratsnest(), Show_MoveNode(), ShowClearance(), ShowNewTrackWhenMovingCursor(), SortByTimeStamp(), PCB_EDIT_FRAME::Start_DragTrackSegmentAndKeepSlope(), LIB_EDIT_FRAME::StartMoveDrawSymbol(), PCB_EDIT_FRAME::StartMoveOneNodeOrSegment(), SCH_JUNCTION::SwapData(), SCH_NO_CONNECT::SwapData(), SCH_BITMAP::SwapData(), SCH_FIELD::SwapData(), SCH_SHEET_PIN::SwapData(), BOARD_ITEM::SwapData(), SCH_COMPONENT::SwapData(), SCH_SHEET::SwapData(), PCB_EDIT_FRAME::SwitchLayer(), BOARD::Test_Connections_To_Copper_Areas(), TestDuplicateSheetNames(), TEXTE_MODULE::TEXTE_MODULE(), TraceSegmentPcb(), TRACK::TransformShapeWithClearanceToPolygon(), SELECTION_TOOL::unselectVisually(), SCH_SHEET_PATH::UpdateAllScreenReferences(), DIALOG_SCH_EDIT_ONE_FIELD::UpdateField(), POINT_EDITOR::updateItem(), POINT_EDITOR::updatePoints(), PCB_BRIGHT_BOX::ViewDraw(), TRACK::Visit(), EDA_ITEM::Visit(), SCH_COMPONENT::Visit(), and SCH_SHEET::Visit().

199  {
200  return m_StructType;
201  }
KICAD_T m_StructType
Run time identification, keep private so it can never be changed after a constructor sets it...
Definition: base_struct.h:160
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 53 of file class_board_item.cpp.

References EDA_ITEM::GetList().

Referenced by PCB_EDIT_FRAME::Block_Delete(), PCB_EDIT_FRAME::Delete_Segment_Edge(), PCB_EDIT_FRAME::Delete_Texte_Pcb(), PCB_EDIT_FRAME::DeleteDimension(), PCB_EDIT_FRAME::DeleteTarget(), PCB_EDIT_FRAME::EraseRedundantTrack(), and BOARD::MarkTrace().

54 {
56  wxASSERT( list );
57 
58  if( list )
59  list->Remove( this );
60 }
DHEAD * GetList() const
Definition: base_struct.h:209
const BOX2I DRAWSEGMENT::ViewBBox ( ) const
overridevirtualinherited

Reimplemented from EDA_ITEM.

Definition at line 600 of file class_drawsegment.cpp.

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

601 {
602  // For arcs - do not include the center point in the bounding box,
603  // it is redundant for displaying an arc
604  if( m_Shape == S_ARC )
605  {
606  EDA_RECT bbox;
607  bbox.SetOrigin( m_End );
608  computeArcBBox( bbox );
609  return BOX2I( bbox.GetOrigin(), bbox.GetSize() );
610  }
611 
612  return EDA_ITEM::ViewBBox();
613 }
BOX2< VECTOR2I > BOX2I
Definition: box2.h:468
void SetOrigin(const wxPoint &pos)
const wxPoint & GetOrigin() const
wxPoint m_End
Line end point or circle and arc start point.
Arcs (with rounded ends)
STROKE_T m_Shape
Shape: line, Circle, Arc.
void computeArcBBox(EDA_RECT &aBBox) const
Class EDA_RECT handles the component boundary box.
virtual const BOX2I ViewBBox() const override
const wxSize & GetSize() const
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
aGalpointer to the GAL device we are drawing on

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

Definition at line 114 of file view_item.h.

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

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

Reimplemented from EDA_ITEM.

Reimplemented in MODULE, D_PAD, VIA, TRACK, TEXTE_MODULE, and MARKER_PCB.

Definition at line 192 of file class_board_item.cpp.

References BOARD_ITEM::m_Layer.

Referenced by SELECTION_TOOL::selectable().

193 {
194  // Basic fallback
195  aCount = 1;
196  aLayers[0] = m_Layer;
197 }
LAYER_ID m_Layer
virtual unsigned int KIGFX::VIEW_ITEM::ViewGetLOD ( int  aLayer,
VIEW aView 
) const
inlinevirtualinherited

Function ViewGetLOD() Returns the level of detail 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.

Reimplemented in MODULE, D_PAD, TRACK, and TEXTE_MODULE.

Definition at line 133 of file view_item.h.

Referenced by KIGFX::VIEW::drawItem::operator()().

134  {
135  // By default always show the item
136  return 0;
137  }
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_SHEET, MODULE, SCH_COMPONENT, and TRACK.

Definition at line 151 of file base_struct.cpp.

References EOT, EDA_ITEM::GetClass(), SEARCH_CONTINUE, SEARCH_QUIT, and EDA_ITEM::Type().

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

152 {
153  KICAD_T stype;
154 
155 #if 0 && defined(DEBUG)
156  std::cout << GetClass().mb_str() << ' ';
157 #endif
158 
159  for( const KICAD_T* p = scanTypes; (stype = *p) != EOT; ++p )
160  {
161  // If caller wants to inspect my type
162  if( stype == Type() )
163  {
164  if( SEARCH_QUIT == inspector( this, testData ) )
165  return SEARCH_QUIT;
166 
167  break;
168  }
169  }
170 
171  return SEARCH_CONTINUE;
172 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:198
search types array terminator (End Of Types)
Definition: typeinfo.h:94
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:90
virtual wxString GetClass() const =0
Function GetClass returns the class name.

Member Data Documentation

wxPoint DRAWSEGMENT::m_BezierC1
protectedinherited

Bezier Control Point 1.

Definition at line 56 of file class_drawsegment.h.

Referenced by DRAWSEGMENT::Draw(), and DRAWSEGMENT::GetBezControl1().

wxPoint DRAWSEGMENT::m_BezierC2
protectedinherited

Bezier Control Point 2.

Definition at line 57 of file class_drawsegment.h.

Referenced by DRAWSEGMENT::Draw(), and DRAWSEGMENT::GetBezControl2().

std::vector<wxPoint> DRAWSEGMENT::m_BezierPoints
protectedinherited
STATUS_FLAGS EDA_ITEM::m_Flags
protectedinherited

Flag bits for editing and other uses.

Definition at line 175 of file base_struct.h.

Referenced by LIB_CIRCLE::BeginEdit(), LIB_RECTANGLE::BeginEdit(), LIB_POLYLINE::BeginEdit(), LIB_TEXT::BeginEdit(), LIB_ARC::BeginEdit(), LIB_FIELD::BeginEdit(), LIB_CIRCLE::calcEdit(), LIB_POLYLINE::calcEdit(), LIB_RECTANGLE::calcEdit(), LIB_TEXT::calcEdit(), LIB_ARC::calcEdit(), LIB_FIELD::calcEdit(), LIB_TEXT::Clone(), LIB_CIRCLE::ContinueEdit(), LIB_RECTANGLE::ContinueEdit(), LIB_POLYLINE::ContinueEdit(), LIB_TEXT::ContinueEdit(), LIB_ARC::ContinueEdit(), LIB_FIELD::ContinueEdit(), SCH_LINE::Draw(), TRACK::Draw(), DRAWSEGMENT::Draw(), MODULE::Draw(), D_PAD::Draw(), SEGZONE::Draw(), LIB_CIRCLE::drawGraphic(), LIB_POLYLINE::drawGraphic(), LIB_RECTANGLE::drawGraphic(), LIB_BEZIER::drawGraphic(), LIB_ARC::drawGraphic(), DRAWSEGMENT::DRAWSEGMENT(), LIB_CIRCLE::EndEdit(), LIB_RECTANGLE::EndEdit(), LIB_POLYLINE::EndEdit(), LIB_TEXT::EndEdit(), LIB_ARC::EndEdit(), LIB_FIELD::EndEdit(), LIB_ITEM::EndEdit(), EDA_ITEM::GetFlags(), TRACK::GetMsgPanelInfoBase_Common(), SCH_JUNCTION::HitTest(), SCH_LINE::HitTest(), SCH_COMPONENT::HitTest(), LIB_ITEM::InEditMode(), EDA_ITEM::initVars(), SCH_ITEM::IsConnected(), SCH_COMPONENT::Load(), SCH_LINE::Move(), EDA_ITEM::operator=(), SCH_COMPONENT::SCH_COMPONENT(), LIB_PIN::SetConversion(), LIB_PIN::SetLength(), LIB_PIN::SetName(), LIB_PIN::SetNameTextSize(), LIB_PIN::SetNumberTextSize(), LIB_PIN::SetOrientation(), LIB_PIN::SetPartNumber(), LIB_PIN::SetPinPosition(), LIB_PIN::SetShape(), LIB_PIN::SetType(), and LIB_PIN::SetVisible().

bool EDA_ITEM::m_forceVisible
protectedinherited

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

Definition at line 172 of file base_struct.h.

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

DHEAD* EDA_ITEM::m_List
protectedinherited

which DLIST I am on.

Definition at line 166 of file base_struct.h.

Referenced by EDA_ITEM::GetList(), EDA_ITEM::initVars(), and BOARD_ITEM::SwapData().

std::vector<wxPoint> DRAWSEGMENT::m_PolyPoints
protectedinherited
int DRAWSEGMENT::m_Type
protectedinherited

Used in complex associations ( Dimensions.. )

Definition at line 54 of file class_drawsegment.h.

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

wxPoint BOARD_ITEM::ZeroOffset
staticinherited

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

Definition at line 122 of file class_board_item.h.

Referenced by BOARD::GetPosition().


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