Commit 63754978 authored by Wayne Stambaugh's avatar Wayne Stambaugh

Hit test method rationalization and other minor improvements.

* All objects derived from EDA_ITEM now have consistent hit test method
  definitions.
* Remove double function calls from all classes derived from SCH_ITEM.
* Lots of Doxygen comment fixes.
parent e56f76db
......@@ -101,7 +101,7 @@ bool SCH_ITEM::operator < ( const SCH_ITEM& aItem ) const
}
void SCH_ITEM::doPlot( PLOTTER* aPlotter )
void SCH_ITEM::Plot( PLOTTER* aPlotter )
{
wxFAIL_MSG( wxT( "doPlot() method not implemented for class " ) + GetClass() );
wxFAIL_MSG( wxT( "Plot() method not implemented for class " ) + GetClass() );
}
......@@ -29,6 +29,7 @@ set(CVPCB_SRCS
../pcbnew/netlist_reader_common.cpp
../pcbnew/netlist_reader_kicad.cpp
../pcbnew/netlist_reader_firstformat.cpp
../pcbnew/class_drc_item.cpp
autosel.cpp
cfg.cpp
class_components_listbox.cpp
......
......@@ -54,8 +54,8 @@
extern void SetSchItemParent( SCH_ITEM* Struct, SCH_SCREEN* Screen );
extern void MoveItemsInList( PICKED_ITEMS_LIST& aItemsList, const wxPoint aMoveVector );
extern void RotateListOfItems( PICKED_ITEMS_LIST& aItemsList, wxPoint& Center );
extern void Mirror_X_ListOfItems( PICKED_ITEMS_LIST& aItemsList, wxPoint& aMirrorPoint );
extern void MirrorListOfItems( PICKED_ITEMS_LIST& aItemsList, wxPoint& Center );
extern void MirrorX( PICKED_ITEMS_LIST& aItemsList, wxPoint& aMirrorPoint );
extern void MirrorY( PICKED_ITEMS_LIST& aItemsList, wxPoint& Center );
extern void DuplicateItemsInList( SCH_SCREEN* screen,
PICKED_ITEMS_LIST& aItemsList,
const wxPoint aMoveVector );
......@@ -434,7 +434,7 @@ void SCH_EDIT_FRAME::HandleBlockEndByPopUp( int Command, wxDC* DC )
mirrorPoint = GetScreen()->GetNearestGridPosition( mirrorPoint );
GetScreen()->SetCrossHairPosition( mirrorPoint );
SaveCopyInUndoList( block->m_ItemsSelection, UR_MIRRORED_X, mirrorPoint );
Mirror_X_ListOfItems( block->m_ItemsSelection, mirrorPoint );
MirrorX( block->m_ItemsSelection, mirrorPoint );
OnModify();
}
GetScreen()->TestDanglingEnds( m_canvas, DC );
......@@ -452,7 +452,7 @@ void SCH_EDIT_FRAME::HandleBlockEndByPopUp( int Command, wxDC* DC )
mirrorPoint = GetScreen()->GetNearestGridPosition( mirrorPoint );
GetScreen()->SetCrossHairPosition( mirrorPoint );
SaveCopyInUndoList( block->m_ItemsSelection, UR_MIRRORED_Y, mirrorPoint );
MirrorListOfItems( block->m_ItemsSelection, mirrorPoint );
MirrorY( block->m_ItemsSelection, mirrorPoint );
OnModify();
}
......
......@@ -179,9 +179,9 @@ void SCH_EDIT_FRAME::MirrorImage( SCH_BITMAP* aItem, bool Is_X_axis )
SaveCopyInUndoList( aItem, UR_CHANGED );
if( Is_X_axis )
aItem->Mirror_X( aItem->GetPosition().y );
aItem->MirrorX( aItem->GetPosition().y );
else
aItem->Mirror_Y( aItem->GetPosition().x );
aItem->MirrorY( aItem->GetPosition().x );
OnModify();
m_canvas->Refresh();
......
......@@ -198,8 +198,10 @@ public:
*/
virtual void SetWidth( int aWidth ) { m_Width = aWidth; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_arc_xpm; }
private:
......
......@@ -168,8 +168,10 @@ public:
*/
virtual void SetWidth( int aWidth ) { m_Width = aWidth; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_circle_xpm; }
private:
......
......@@ -319,8 +319,10 @@ public:
*/
virtual void SetWidth( int aWidth ) { m_Thickness = aWidth; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return move_field_xpm; }
private:
......
......@@ -569,8 +569,10 @@ public:
*/
virtual void SetWidth( int aWidth );
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const;
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
private:
......
......@@ -184,8 +184,10 @@ public:
*/
virtual void SetWidth( int aWidth ) { m_Width = aWidth; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_polygon_xpm; }
private:
......
......@@ -172,8 +172,10 @@ public:
*/
virtual void SetWidth( int aWidth ) { m_Width = aWidth; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_rectangle_xpm; }
private:
......
......@@ -204,8 +204,10 @@ public:
*/
virtual void SetWidth( int aWidth ) { m_Thickness = aWidth; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_text_xpm; }
private:
......
......@@ -65,23 +65,23 @@ void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList,
const wxPoint aMoveVector );
void MirrorListOfItems( PICKED_ITEMS_LIST& aItemsList, wxPoint& aMirrorPoint )
void MirrorY( PICKED_ITEMS_LIST& aItemsList, wxPoint& aMirrorPoint )
{
for( unsigned ii = 0; ii < aItemsList.GetCount(); ii++ )
{
SCH_ITEM* item = (SCH_ITEM*) aItemsList.GetPickedItem( ii );
item->Mirror_Y( aMirrorPoint.x ); // Place it in its new position.
item->MirrorY( aMirrorPoint.x ); // Place it in its new position.
item->ClearFlags();
}
}
void Mirror_X_ListOfItems( PICKED_ITEMS_LIST& aItemsList, wxPoint& aMirrorPoint )
void MirrorX( PICKED_ITEMS_LIST& aItemsList, wxPoint& aMirrorPoint )
{
for( unsigned ii = 0; ii < aItemsList.GetCount(); ii++ )
{
SCH_ITEM* item = (SCH_ITEM*) aItemsList.GetPickedItem( ii );
item->Mirror_X( aMirrorPoint.y ); // Place it in its new position.
item->MirrorX( aMirrorPoint.y ); // Place it in its new position.
item->ClearFlags();
}
}
......
......@@ -229,7 +229,7 @@ wxSize SCH_BITMAP::GetSize() const
/*
* Mirror image relative to a horizontal X axis )
*/
void SCH_BITMAP::Mirror_X( int aXaxis_position )
void SCH_BITMAP::MirrorX( int aXaxis_position )
{
m_Pos.y -= aXaxis_position;
NEGATE( m_Pos.y );
......@@ -242,7 +242,7 @@ void SCH_BITMAP::Mirror_X( int aXaxis_position )
/*
* Mirror image relative to a vertical Y axis
*/
void SCH_BITMAP::Mirror_Y( int aYaxis_position )
void SCH_BITMAP::MirrorY( int aYaxis_position )
{
m_Pos.x -= aYaxis_position;
NEGATE( m_Pos.x );
......@@ -251,9 +251,9 @@ void SCH_BITMAP::Mirror_Y( int aYaxis_position )
}
void SCH_BITMAP::Rotate( wxPoint rotationPoint )
void SCH_BITMAP::Rotate( wxPoint aPosition )
{
RotatePoint( &m_Pos, rotationPoint, 900 );
RotatePoint( &m_Pos, aPosition, 900 );
m_Image->Rotate( false );
}
......@@ -284,17 +284,17 @@ void SCH_BITMAP::Show( int nestLevel, std::ostream& os ) const
#endif
bool SCH_BITMAP::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_BITMAP::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
EDA_RECT rect = GetBoundingBox();
rect.Inflate( aAccuracy );
return rect.Contains( aPoint );
return rect.Contains( aPosition );
}
bool SCH_BITMAP::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
bool SCH_BITMAP::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
EDA_RECT rect = aRect;
......@@ -307,13 +307,7 @@ bool SCH_BITMAP::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccurac
}
bool SCH_BITMAP::doIsConnected( const wxPoint& aPosition ) const
{
return m_Pos == aPosition;
}
void SCH_BITMAP::doPlot( PLOTTER* aPlotter )
void SCH_BITMAP::Plot( PLOTTER* aPlotter )
{
m_Image->PlotImage( aPlotter, m_Pos, ReturnLayerColor( GetLayer() ), GetPenSize() );
}
......@@ -133,46 +133,52 @@ public:
*/
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
/**
* Function Move
* moves then item to a new position by \a aMoveVector.
* @param aMoveVector The displacement vector.
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
m_Pos += aMoveVector;
}
/**
* Function Mirror_Y
* mirrors the item relative to \a aYaxis_position.
* @param aYaxis_position = the y axis position
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
virtual bool IsSelectStateChanged( const wxRect& aRect );
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const { return wxString( _( "Image" ) ); }
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return image_xpm; }
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const { return m_Pos; }
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition ) { m_Pos = aPosition; }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
/** @copydoc SCH_ITEM::HitTest(EDA_RECT&,bool=false,int=0) */
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
/** @copydoc SCH_ITEM::Plot() */
virtual void Plot( PLOTTER* aPlotter );
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const;
virtual bool doIsConnected( const wxPoint& aPosition ) const;
virtual EDA_ITEM* doClone() const;
virtual void doPlot( PLOTTER* aPlotter );
virtual wxPoint doGetPosition() const { return m_Pos; }
virtual void doSetPosition( const wxPoint& aPosition ) { m_Pos = aPosition; }
};
......
......@@ -194,7 +194,7 @@ void SCH_BUS_ENTRY::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOff
}
void SCH_BUS_ENTRY::Mirror_X( int aXaxis_position )
void SCH_BUS_ENTRY::MirrorX( int aXaxis_position )
{
m_pos.y -= aXaxis_position;
NEGATE( m_pos.y );
......@@ -203,7 +203,7 @@ void SCH_BUS_ENTRY::Mirror_X( int aXaxis_position )
}
void SCH_BUS_ENTRY::Mirror_Y( int aYaxis_position )
void SCH_BUS_ENTRY::MirrorY( int aYaxis_position )
{
m_pos.x -= aYaxis_position;
NEGATE( m_pos.x );
......@@ -212,9 +212,9 @@ void SCH_BUS_ENTRY::Mirror_Y( int aYaxis_position )
}
void SCH_BUS_ENTRY::Rotate( wxPoint rotationPoint )
void SCH_BUS_ENTRY::Rotate( wxPoint aPosition )
{
RotatePoint( &m_pos, rotationPoint, 900 );
RotatePoint( &m_pos, aPosition, 900 );
RotatePoint( &m_size.x, &m_size.y, 900 );
}
......@@ -260,13 +260,13 @@ wxString SCH_BUS_ENTRY::GetSelectMenuText() const
}
bool SCH_BUS_ENTRY::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_BUS_ENTRY::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
return TestSegmentHit( aPoint, m_pos, m_End(), aAccuracy );
return TestSegmentHit( aPosition, m_pos, m_End(), aAccuracy );
}
bool SCH_BUS_ENTRY::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
bool SCH_BUS_ENTRY::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
EDA_RECT rect = aRect;
......@@ -279,7 +279,7 @@ bool SCH_BUS_ENTRY::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccu
}
void SCH_BUS_ENTRY::doPlot( PLOTTER* aPlotter )
void SCH_BUS_ENTRY::Plot( PLOTTER* aPlotter )
{
aPlotter->set_current_line_width( GetPenSize() );
aPlotter->set_color( ReturnLayerColor( GetLayer() ) );
......
......@@ -123,26 +123,20 @@ public:
*/
virtual int GetPenSize() const;
/**
* Function Move
* moves and item to a new position by \a aMoveVector.
* @param aMoveVector The displacement vector.
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
m_pos += aMoveVector;
}
/**
* Function Mirror_Y
* mirrors the item relative to \a aYaxis_position.
* @param aYaxis_position The Y axis coordinate to mirror around.
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
virtual void GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList );
......@@ -155,21 +149,34 @@ public:
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const;
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_entry_xpm; }
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const { return m_pos; }
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition ) { m_pos = aPosition; }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
/** @copydoc SCH_ITEM::HitTest(EDA_RECT&,bool=false,int=0) */
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
/** @copydoc SCH_ITEM::Plot() */
virtual void Plot( PLOTTER* aPlotter );
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const { ShowDummy( os ); } // override
#endif
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const;
virtual EDA_ITEM* doClone() const;
virtual void doPlot( PLOTTER* aPlotter );
virtual wxPoint doGetPosition() const { return m_pos; }
virtual void doSetPosition( const wxPoint& aPosition ) { m_pos = aPosition; }
};
......
......@@ -1502,7 +1502,7 @@ void SCH_COMPONENT::DisplayInfo( EDA_DRAW_FRAME* frame )
}
void SCH_COMPONENT::Mirror_Y( int aYaxis_position )
void SCH_COMPONENT::MirrorY( int aYaxis_position )
{
int dx = m_Pos.x;
......@@ -1521,7 +1521,7 @@ void SCH_COMPONENT::Mirror_Y( int aYaxis_position )
}
void SCH_COMPONENT::Mirror_X( int aXaxis_position )
void SCH_COMPONENT::MirrorX( int aXaxis_position )
{
int dy = m_Pos.y;
......@@ -1540,11 +1540,11 @@ void SCH_COMPONENT::Mirror_X( int aXaxis_position )
}
void SCH_COMPONENT::Rotate( wxPoint rotationPoint )
void SCH_COMPONENT::Rotate( wxPoint aPosition )
{
wxPoint prev = m_Pos;
RotatePoint( &m_Pos, rotationPoint, 900 );
RotatePoint( &m_Pos, aPosition, 900 );
//SetOrientation( CMP_ROTATE_COUNTERCLOCKWISE );
SetOrientation( CMP_ROTATE_CLOCKWISE );
......@@ -1837,20 +1837,23 @@ SCH_ITEM& SCH_COMPONENT::operator=( const SCH_ITEM& aItem )
}
bool SCH_COMPONENT::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_COMPONENT::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
EDA_RECT bBox = GetBodyBoundingBox();
bBox.Inflate( aAccuracy );
if( bBox.Contains( aPoint ) )
if( bBox.Contains( aPosition ) )
return true;
return false;
}
bool SCH_COMPONENT::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
bool SCH_COMPONENT::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
if( m_Flags & STRUCT_DELETED || m_Flags & SKIP_STRUCT )
return false;
EDA_RECT rect = aRect;
rect.Inflate( aAccuracy );
......@@ -1878,7 +1881,7 @@ bool SCH_COMPONENT::doIsConnected( const wxPoint& aPosition ) const
}
void SCH_COMPONENT::doPlot( PLOTTER* aPlotter )
void SCH_COMPONENT::Plot( PLOTTER* aPlotter )
{
LIB_COMPONENT* Entry;
TRANSFORM temp = TRANSFORM();
......
......@@ -329,11 +329,7 @@ public:
// Geometric transforms (used in block operations):
/**
* Function Move
* moves item to a new position by \a aMoveVector.
* @param aMoveVector The displacement to move the component
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
if( aMoveVector == wxPoint( 0, 0 ) )
......@@ -347,21 +343,14 @@ public:
SetModified();
}
/**
* Function Mirror_Y
* mirrors the component relative to an Y axis about the \a aYaxis_position.
* @param aYaxis_position The y axis position
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
/**
* Function Mirror_X (virtual)
* mirrors item relative to an X axis about the \a aXaxis_position.
* @param aXaxis_position The x axis position
*/
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
/**
* @copydoc EDA_ITEM::Matches()
......@@ -391,8 +380,10 @@ public:
*/
LIB_ITEM* GetDrawItem( const wxPoint& aPosition, KICAD_T aType = TYPE_NOT_INIT );
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_component_xpm; }
virtual void GetNetListItem( vector<NETLIST_OBJECT*>& aNetListItems,
......@@ -410,18 +401,31 @@ public:
*/
virtual bool IsReplaceable() const { return true; }
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const { return m_Pos; }
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition ) { Move( aPosition - m_Pos ); }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
/** @copydoc SCH_ITEM::HitTest(EDA_RECT&,bool=false,int=0) */
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
/** @copydoc SCH_ITEM::Plot() */
virtual void Plot( PLOTTER* aPlotter );
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const;
/** @copydoc SCH_ITEM::doIsConnected() */
virtual bool doIsConnected( const wxPoint& aPosition ) const;
virtual EDA_ITEM* doClone() const;
virtual void doPlot( PLOTTER* aPlotter );
virtual wxPoint doGetPosition() const { return m_Pos; }
virtual void doSetPosition( const wxPoint& aPosition ) { Move( aPosition - m_Pos ); }
};
......
......@@ -458,9 +458,9 @@ bool SCH_FIELD::Replace( wxFindReplaceData& aSearchData, void* aAuxData )
}
void SCH_FIELD::Rotate( wxPoint rotationPoint )
void SCH_FIELD::Rotate( wxPoint aPosition )
{
RotatePoint( &m_Pos, rotationPoint, 900 );
RotatePoint( &m_Pos, aPosition, 900 );
}
......@@ -499,7 +499,7 @@ BITMAP_DEF SCH_FIELD::GetMenuImage() const
}
bool SCH_FIELD::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_FIELD::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
// Do not hit test hidden or empty fields.
if( !IsVisible() || IsVoid() )
......@@ -509,11 +509,11 @@ bool SCH_FIELD::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
rect.Inflate( aAccuracy );
return rect.Contains( aPoint );
return rect.Contains( aPosition );
}
bool SCH_FIELD::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
bool SCH_FIELD::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
// Do not hit test hidden fields.
if( !IsVisible() || IsVoid() )
......@@ -530,7 +530,7 @@ bool SCH_FIELD::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy
}
void SCH_FIELD::doPlot( PLOTTER* aPlotter )
void SCH_FIELD::Plot( PLOTTER* aPlotter )
{
SCH_COMPONENT* parent = ( SCH_COMPONENT* ) GetParent();
......@@ -593,7 +593,7 @@ void SCH_FIELD::doPlot( PLOTTER* aPlotter )
}
void SCH_FIELD::doSetPosition( const wxPoint& aPosition )
void SCH_FIELD::SetPosition( const wxPoint& aPosition )
{
SCH_COMPONENT* component = (SCH_COMPONENT*) GetParent();
......@@ -608,7 +608,7 @@ void SCH_FIELD::doSetPosition( const wxPoint& aPosition )
}
wxPoint SCH_FIELD::doGetPosition() const
wxPoint SCH_FIELD::GetPosition() const
{
SCH_COMPONENT* component = (SCH_COMPONENT*) GetParent();
......
......@@ -163,36 +163,36 @@ public:
// Geometric transforms (used in block operations):
/** virtual function Move
* move item to a new position.
* @param aMoveVector = the displacement vector
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
m_Pos += aMoveVector;
}
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
virtual void Mirror_X( int aXaxis_position )
/**
* @copydoc SCH_ITEM::MirrorX()
*
* This overload does nothing. Fields are never mirrored alone. They are moved
* when the parent component is mirrored. This function is only needed by the
* virtual pure function of the master class.
*/
virtual void MirrorX( int aXaxis_position )
{
/* Do Nothing: fields are never mirrored alone.
* they are moved when the parent component is mirrored
* this function is only needed by the virtual pure function of the
* master class */
}
/** virtual function Mirror_Y
* mirror item relative to an Y axis
* @param aYaxis_position = the y axis position
/**
* @copydoc SCH_ITEM::MirrorY()
*
* This overload does nothing. Fields are never mirrored alone. They are moved
* when the parent component is mirrored. This function is only needed by the
* virtual pure function of the master class.
*/
virtual void Mirror_Y( int aYaxis_position )
virtual void MirrorY( int aYaxis_position )
{
/* Do Nothing: fields are never mirrored alone.
* they are moved when the parent component is mirrored
* this function is only needed by the virtual pure function of the
* master class */
}
/**
......@@ -206,8 +206,10 @@ public:
*/
virtual bool Replace( wxFindReplaceData& aSearchData, void* aAuxData = NULL );
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const;
/**
......@@ -215,17 +217,28 @@ public:
*/
virtual bool IsReplaceable() const { return true; }
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const;
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition );
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
/** @copydoc SCH_ITEM::HitTest(EDA_RECT&,bool=false,int=0) */
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
/** @copydoc SCH_ITEM::Plot() */
virtual void Plot( PLOTTER* aPlotter );
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const { ShowDummy( os ); } // override
#endif
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const;
virtual EDA_ITEM* doClone() const;
virtual void doPlot( PLOTTER* aPlotter );
virtual wxPoint doGetPosition() const;
virtual void doSetPosition( const wxPoint& aPosition );
};
......
......@@ -130,7 +130,7 @@ void SCH_JUNCTION::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffs
}
void SCH_JUNCTION::Mirror_X( int aXaxis_position )
void SCH_JUNCTION::MirrorX( int aXaxis_position )
{
m_pos.y -= aXaxis_position;
NEGATE( m_pos.y );
......@@ -138,7 +138,7 @@ void SCH_JUNCTION::Mirror_X( int aXaxis_position )
}
void SCH_JUNCTION::Mirror_Y( int aYaxis_position )
void SCH_JUNCTION::MirrorY( int aYaxis_position )
{
m_pos.x -= aYaxis_position;
NEGATE( m_pos.x );
......@@ -146,9 +146,9 @@ void SCH_JUNCTION::Mirror_Y( int aYaxis_position )
}
void SCH_JUNCTION::Rotate( wxPoint rotationPoint )
void SCH_JUNCTION::Rotate( wxPoint aPosition )
{
RotatePoint( &m_pos, rotationPoint, 900 );
RotatePoint( &m_pos, aPosition, 900 );
}
......@@ -204,18 +204,21 @@ void SCH_JUNCTION::Show( int nestLevel, std::ostream& os ) const
#endif
bool SCH_JUNCTION::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_JUNCTION::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
EDA_RECT rect = GetBoundingBox();
rect.Inflate( aAccuracy );
return rect.Contains( aPoint );
return rect.Contains( aPosition );
}
bool SCH_JUNCTION::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
bool SCH_JUNCTION::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
if( m_Flags & STRUCT_DELETED || m_Flags & SKIP_STRUCT )
return false;
EDA_RECT rect = aRect;
rect.Inflate( aAccuracy );
......@@ -233,7 +236,7 @@ bool SCH_JUNCTION::doIsConnected( const wxPoint& aPosition ) const
}
void SCH_JUNCTION::doPlot( PLOTTER* aPlotter )
void SCH_JUNCTION::Plot( PLOTTER* aPlotter )
{
aPlotter->set_color( ReturnLayerColor( GetLayer() ) );
aPlotter->circle( m_pos, m_size.x, FILLED_SHAPE );
......
......@@ -84,26 +84,20 @@ public:
*/
virtual bool Load( LINE_READER& aLine, wxString& aErrorMsg );
/**
* Function Move
* moves then item to a new position by \a aMoveVector.
* @param aMoveVector The displacement vector.
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
m_pos += aMoveVector;
}
/**
* Function Mirror_Y
* mirrors the item relative to \a aYaxis_position.
* @param aYaxis_position = the y axis position
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
virtual void GetEndPoints( std::vector <DANGLING_END_ITEM>& aItemList );
......@@ -113,25 +107,40 @@ public:
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const;
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const { return wxString( _( "Junction" ) ); }
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_junction_xpm; }
virtual void GetNetListItem( vector<NETLIST_OBJECT*>& aNetListItems,
SCH_SHEET_PATH* aSheetPath );
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const { return m_pos; }
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition ) { m_pos = aPosition; }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
/** @copydoc SCH_ITEM::HitTest(EDA_RECT&,bool=false,int=0) */
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
/** @copydoc SCH_ITEM::Plot() */
virtual void Plot( PLOTTER* aPlotter );
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const;
virtual bool doIsConnected( const wxPoint& aPosition ) const;
virtual EDA_ITEM* doClone() const;
virtual void doPlot( PLOTTER* aPlotter );
virtual wxPoint doGetPosition() const { return m_pos; }
virtual void doSetPosition( const wxPoint& aPosition ) { m_pos = aPosition; }
/** @copydoc SCH_ITEM::doIsConnected() */
virtual bool doIsConnected( const wxPoint& aPosition ) const;
};
......
......@@ -256,7 +256,7 @@ void SCH_LINE::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, const wxPoint& offset,
}
void SCH_LINE::Mirror_X( int aXaxis_position )
void SCH_LINE::MirrorX( int aXaxis_position )
{
m_start.y -= aXaxis_position;
NEGATE( m_start.y );
......@@ -267,7 +267,7 @@ void SCH_LINE::Mirror_X( int aXaxis_position )
}
void SCH_LINE::Mirror_Y( int aYaxis_position )
void SCH_LINE::MirrorY( int aYaxis_position )
{
m_start.x -= aYaxis_position;
NEGATE( m_start.x );
......@@ -278,10 +278,10 @@ void SCH_LINE::Mirror_Y( int aYaxis_position )
}
void SCH_LINE::Rotate( wxPoint rotationPoint )
void SCH_LINE::Rotate( wxPoint aPosition )
{
RotatePoint( &m_start, rotationPoint, 900 );
RotatePoint( &m_end, rotationPoint, 900 );
RotatePoint( &m_start, aPosition, 900 );
RotatePoint( &m_end, aPosition, 900 );
}
......@@ -540,14 +540,17 @@ bool SCH_LINE::operator <( const SCH_ITEM& aItem ) const
}
bool SCH_LINE::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_LINE::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
return TestSegmentHit( aPoint, m_start, m_end, aAccuracy );
return TestSegmentHit( aPosition, m_start, m_end, aAccuracy );
}
bool SCH_LINE::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
bool SCH_LINE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
if( m_Flags & STRUCT_DELETED || m_Flags & SKIP_STRUCT )
return false;
EDA_RECT rect = aRect;
rect.Inflate( aAccuracy );
......@@ -568,7 +571,7 @@ bool SCH_LINE::doIsConnected( const wxPoint& aPosition ) const
}
void SCH_LINE::doPlot( PLOTTER* aPlotter )
void SCH_LINE::Plot( PLOTTER* aPlotter )
{
aPlotter->set_color( ReturnLayerColor( GetLayer() ) );
aPlotter->set_current_line_width( GetPenSize() );
......@@ -584,7 +587,7 @@ void SCH_LINE::doPlot( PLOTTER* aPlotter )
}
void SCH_LINE::doSetPosition( const wxPoint& aPosition )
void SCH_LINE::SetPosition( const wxPoint& aPosition )
{
m_end = m_end - ( m_start - aPosition );
m_start = aPosition;
......
......@@ -118,23 +118,17 @@ public:
*/
virtual int GetPenSize() const;
/**
* Function Move
* moves the item by \a aMoveVector.
* @param aMoveVector The displacement vector
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
/**
* Function Mirror_Y
* mirrors the item relative to \a aYaxis_position.
* @param aYaxis_position = the y axis position
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
/**
* Check line against \a aLine to see if it overlaps and merge if it does.
......@@ -164,8 +158,10 @@ public:
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const;
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const;
virtual void GetNetListItem( vector<NETLIST_OBJECT*>& aNetListItems,
......@@ -173,18 +169,31 @@ public:
virtual bool operator <( const SCH_ITEM& aItem ) const;
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const { return m_start; }
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition );
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
/** @copydoc SCH_ITEM::HitTest(EDA_RECT&,bool=false,int=0) */
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
/** @copydoc SCH_ITEM::Plot() */
virtual void Plot( PLOTTER* aPlotter );
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const;
/** @copydoc SCH_ITEM::doIsConnected() */
virtual bool doIsConnected( const wxPoint& aPosition ) const;
virtual EDA_ITEM* doClone() const;
virtual void doPlot( PLOTTER* aPlotter );
virtual wxPoint doGetPosition() const { return m_start; }
virtual void doSetPosition( const wxPoint& aPosition );
};
......
/*******************************************/
/* Schematic marker object implementation. */
/*******************************************/
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2009 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you may find one here:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
* or you may search the http://www.gnu.org website for the version 2 license,
* or you may write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
/**
* @file sch_marker.cpp
* @brief Class SCH_MARKER implementation
*/
#include <fctsys.h>
#include <wxstruct.h>
......@@ -27,9 +52,9 @@ const wxChar* NameMarqueurType[] =
};
/**************************/
/********************/
/* class SCH_MARKER */
/**************************/
/********************/
SCH_MARKER::SCH_MARKER() : SCH_ITEM( NULL, SCH_MARKER_T ), MARKER_BASE()
{
......@@ -145,13 +170,13 @@ void SCH_MARKER::DisplayInfo( EDA_DRAW_FRAME* aFrame )
}
void SCH_MARKER::Rotate( wxPoint rotationPoint )
void SCH_MARKER::Rotate( wxPoint aPosition )
{
RotatePoint( &m_Pos, rotationPoint, 900 );
RotatePoint( &m_Pos, aPosition, 900 );
}
void SCH_MARKER::Mirror_X( int aXaxis_position )
void SCH_MARKER::MirrorX( int aXaxis_position )
{
m_Pos.y -= aXaxis_position;
m_Pos.y = -m_Pos.y;
......@@ -159,7 +184,7 @@ void SCH_MARKER::Mirror_X( int aXaxis_position )
}
void SCH_MARKER::Mirror_Y( int aYaxis_position )
void SCH_MARKER::MirrorY( int aYaxis_position )
{
m_Pos.x -= aYaxis_position;
m_Pos.x = -m_Pos.x;
......@@ -180,8 +205,8 @@ bool SCH_MARKER::IsSelectStateChanged( const wxRect& aRect )
}
bool SCH_MARKER::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_MARKER::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
return HitTestMarker( aPoint );
return HitTestMarker( aPosition );
}
......@@ -89,23 +89,21 @@ public:
// Geometric transforms (used in block operations):
/** virtual function Move
* move item to a new position.
* @param aMoveVector = the displacement vector
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
m_Pos += aMoveVector;
}
/** virtual function Mirror_Y
* mirror item relative to an Y axis
* @param aYaxis_position = the y axis position
*/
virtual void Mirror_Y( int aYaxis_position );
virtual void Rotate( wxPoint rotationPoint );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
/**
* Compare DRC marker main and auxiliary text against search string.
......@@ -125,18 +123,26 @@ public:
virtual bool IsSelectStateChanged( const wxRect& aRect );
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const { return wxString( _( "ERC Marker" ) ); }
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return erc_xpm; }
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const { return m_Pos; }
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition ) { m_Pos = aPosition; }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual EDA_ITEM* doClone() const;
virtual wxPoint doGetPosition() const { return m_Pos; }
virtual void doSetPosition( const wxPoint& aPosition ) { m_Pos = aPosition; }
};
#endif // TYPE_SCH_MARKER_H_
......@@ -146,7 +146,7 @@ void SCH_NO_CONNECT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOf
}
void SCH_NO_CONNECT::Mirror_X( int aXaxis_position )
void SCH_NO_CONNECT::MirrorX( int aXaxis_position )
{
m_pos.y -= aXaxis_position;
NEGATE( m_pos.y );
......@@ -154,7 +154,7 @@ void SCH_NO_CONNECT::Mirror_X( int aXaxis_position )
}
void SCH_NO_CONNECT::Mirror_Y( int aYaxis_position )
void SCH_NO_CONNECT::MirrorY( int aYaxis_position )
{
m_pos.x -= aYaxis_position;
NEGATE( m_pos.x );
......@@ -162,9 +162,9 @@ void SCH_NO_CONNECT::Mirror_Y( int aYaxis_position )
}
void SCH_NO_CONNECT::Rotate( wxPoint rotationPoint )
void SCH_NO_CONNECT::Rotate( wxPoint aPosition )
{
RotatePoint( &m_pos, rotationPoint, 900 );
RotatePoint( &m_pos, aPosition, 900 );
}
......@@ -207,11 +207,11 @@ bool SCH_NO_CONNECT::doIsConnected( const wxPoint& aPosition ) const
return m_pos == aPosition;
}
bool SCH_NO_CONNECT::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_NO_CONNECT::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
int delta = ( ( m_size.x + g_DrawDefaultLineThickness ) / 2 ) + aAccuracy;
wxPoint dist = aPoint - m_pos;
wxPoint dist = aPosition - m_pos;
if( ( ABS( dist.x ) <= delta ) && ( ABS( dist.y ) <= delta ) )
return true;
......@@ -220,7 +220,7 @@ bool SCH_NO_CONNECT::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
}
bool SCH_NO_CONNECT::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
bool SCH_NO_CONNECT::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
EDA_RECT rect = aRect;
......@@ -233,7 +233,7 @@ bool SCH_NO_CONNECT::doHitTest( const EDA_RECT& aRect, bool aContained, int aAcc
}
void SCH_NO_CONNECT::doPlot( PLOTTER* aPlotter )
void SCH_NO_CONNECT::Plot( PLOTTER* aPlotter )
{
int delta = m_size.x / 2;
int pX, pY;
......
......@@ -92,25 +92,20 @@ public:
// Geometric transforms (used in block operations):
/** virtual function Move
* move item to a new position.
* @param aMoveVector = the displacement vector
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
m_pos += aMoveVector;
}
/**
* Function Mirror_Y
* mirrors item relative to \a aYaxis_position.
* @param aYaxis_position = the y axis position
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
virtual bool IsSelectStateChanged( const wxRect& aRect );
......@@ -118,25 +113,40 @@ public:
virtual void GetConnectionPoints( vector< wxPoint >& aPoints ) const;
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const { return wxString( _( "No Connect" ) ); }
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return noconn_xpm; }
virtual void GetNetListItem( vector<NETLIST_OBJECT*>& aNetListItems,
SCH_SHEET_PATH* aSheetPath );
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const { return m_pos; }
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition ) { m_pos = aPosition; }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
/** @copydoc SCH_ITEM::HitTest(EDA_RECT&,bool=false,int=0) */
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
/** @copydoc SCH_ITEM::Plot() */
virtual void Plot( PLOTTER* aPlotter );
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const { ShowDummy( os ); } // override
#endif
private:
/** @copydoc SCH_ITEM::doIsConnected() */
virtual bool doIsConnected( const wxPoint& aPosition ) const;
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const;
virtual EDA_ITEM* doClone() const;
virtual void doPlot( PLOTTER* aPlotter );
virtual wxPoint doGetPosition() const { return m_pos; }
virtual void doSetPosition( const wxPoint& aPosition ) { m_pos = aPosition; }
};
......
......@@ -190,7 +190,7 @@ void SCH_POLYLINE::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffs
}
void SCH_POLYLINE::Mirror_X( int aXaxis_position )
void SCH_POLYLINE::MirrorX( int aXaxis_position )
{
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
{
......@@ -201,7 +201,7 @@ void SCH_POLYLINE::Mirror_X( int aXaxis_position )
}
void SCH_POLYLINE::Mirror_Y( int aYaxis_position )
void SCH_POLYLINE::MirrorY( int aYaxis_position )
{
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
{
......@@ -212,11 +212,11 @@ void SCH_POLYLINE::Mirror_Y( int aYaxis_position )
}
void SCH_POLYLINE::Rotate( wxPoint rotationPoint )
void SCH_POLYLINE::Rotate( wxPoint aPosition )
{
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
{
RotatePoint( &m_points[ii], rotationPoint, 900 );
RotatePoint( &m_points[ii], aPosition, 900 );
}
}
......@@ -260,11 +260,11 @@ BITMAP_DEF SCH_POLYLINE::GetMenuImage() const
}
bool SCH_POLYLINE::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_POLYLINE::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
for( size_t i = 0; i < m_points.size() - 1; i++ )
{
if( TestSegmentHit( aPoint, m_points[i], m_points[i + 1], aAccuracy ) )
if( TestSegmentHit( aPosition, m_points[i], m_points[i + 1], aAccuracy ) )
return true;
}
......@@ -272,7 +272,7 @@ bool SCH_POLYLINE::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
}
bool SCH_POLYLINE::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
bool SCH_POLYLINE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
EDA_RECT rect = aRect;
......@@ -285,7 +285,7 @@ bool SCH_POLYLINE::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccur
}
void SCH_POLYLINE::doSetPosition( const wxPoint& aPosition )
void SCH_POLYLINE::SetPosition( const wxPoint& aPosition )
{
wxPoint offset = m_points[0] - aPosition;
......
......@@ -112,30 +112,26 @@ public:
*/
virtual int GetPenSize() const;
/**
* Function Move
* moves an item to a new position by \a aMoveVector.
* @param aMoveVector = the displacement vector
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
m_points[ii] += aMoveVector;
}
/**
* Function Mirror_Y
* mirrors an item relative to \a aYaxis_position.
* @param aYaxis_position The y axis position to mirror around.
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const;
/**
......@@ -153,16 +149,25 @@ public:
return m_points[ aIndex ];
}
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const { return m_points[0]; }
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition );
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
/** @copydoc SCH_ITEM::HitTest(EDA_RECT&,bool=false,int=0) */
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const { ShowDummy( os ); } // override
#endif
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const;
virtual EDA_ITEM* doClone() const;
virtual wxPoint doGetPosition() const { return m_points[0]; }
virtual void doSetPosition( const wxPoint& aPosition );
};
......
......@@ -514,7 +514,7 @@ SCH_SHEET_PIN* SCH_SHEET::GetPin( const wxPoint& aPosition )
{
BOOST_FOREACH( SCH_SHEET_PIN& pin, m_pins )
{
if( pin.HitTest( aPosition ) )
if( pin.HitTest( aPosition, 0 ) )
return &pin;
}
......@@ -837,9 +837,9 @@ void SCH_SHEET::DisplayInfo( EDA_DRAW_FRAME* frame )
}
void SCH_SHEET::Rotate(wxPoint rotationPoint)
void SCH_SHEET::Rotate(wxPoint aPosition)
{
RotatePoint( &m_pos, rotationPoint, 900 );
RotatePoint( &m_pos, aPosition, 900 );
RotatePoint( &m_size.x, &m_size.y, 900 );
if( m_size.x < 0 )
......@@ -856,12 +856,12 @@ void SCH_SHEET::Rotate(wxPoint rotationPoint)
BOOST_FOREACH( SCH_SHEET_PIN& sheetPin, m_pins )
{
sheetPin.Rotate( rotationPoint );
sheetPin.Rotate( aPosition );
}
}
void SCH_SHEET::Mirror_X( int aXaxis_position )
void SCH_SHEET::MirrorX( int aXaxis_position )
{
m_pos.y -= aXaxis_position;
NEGATE( m_pos.y );
......@@ -870,12 +870,12 @@ void SCH_SHEET::Mirror_X( int aXaxis_position )
BOOST_FOREACH( SCH_SHEET_PIN& sheetPin, m_pins )
{
sheetPin.Mirror_X( aXaxis_position );
sheetPin.MirrorX( aXaxis_position );
}
}
void SCH_SHEET::Mirror_Y( int aYaxis_position )
void SCH_SHEET::MirrorY( int aYaxis_position )
{
m_pos.x -= aYaxis_position;
NEGATE( m_pos.x );
......@@ -884,7 +884,7 @@ void SCH_SHEET::Mirror_Y( int aYaxis_position )
BOOST_FOREACH( SCH_SHEET_PIN& label, m_pins )
{
label.Mirror_Y( aYaxis_position );
label.MirrorY( aYaxis_position );
}
}
......@@ -1048,17 +1048,17 @@ wxString SCH_SHEET::GetSelectMenuText() const
}
bool SCH_SHEET::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_SHEET::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
EDA_RECT rect = GetBoundingBox();
rect.Inflate( aAccuracy );
return rect.Contains( aPoint );
return rect.Contains( aPosition );
}
bool SCH_SHEET::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
bool SCH_SHEET::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
EDA_RECT rect = aRect;
......@@ -1102,7 +1102,7 @@ void SCH_SHEET::GetNetListItem( vector<NETLIST_OBJECT*>& aNetListItems,
}
void SCH_SHEET::doPlot( PLOTTER* aPlotter )
void SCH_SHEET::Plot( PLOTTER* aPlotter )
{
EDA_Colors txtcolor = UNSPECIFIED_COLOR;
wxSize size;
......
......@@ -80,8 +80,6 @@ private:
virtual EDA_ITEM* doClone() const;
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
public:
SCH_SHEET_PIN( SCH_SHEET* parent,
const wxPoint& pos = wxPoint( 0, 0 ),
......@@ -178,24 +176,20 @@ public:
// Geometric transforms (used in block operations):
/** virtual function Move
* move item to a new position.
* @param aMoveVector = the displacement vector
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
m_Pos += aMoveVector;
}
/** virtual function Mirror_Y
* mirror item relative to an Y axis
* @param aYaxis_position = the y axis position
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
/**
* @copydoc EDA_ITEM::Matches(wxFindReplaceData&,void*,wxPoint*)
......@@ -219,15 +213,16 @@ public:
virtual bool IsConnectable() const { return true; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_hierar_pin_xpm; }
private:
virtual void doSetPosition( const wxPoint& aPosition )
{
ConstrainOnEdge( aPosition );
}
virtual void SetPosition( const wxPoint& aPosition ) { ConstrainOnEdge( aPosition ); }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
};
......@@ -551,10 +546,7 @@ public:
// Geometric transforms (used in block operations):
/** virtual function Move
* move item to a new position.
* @param aMoveVector = the displacement vector
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
m_pos += aMoveVector;
......@@ -565,13 +557,14 @@ public:
}
}
/** virtual function Mirror_Y
* mirror item relative to an Y axis
* @param aYaxis_position = the y axis position
*/
virtual void Mirror_Y( int aYaxis_position );
virtual void Mirror_X( int aXaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
/**
* @copydoc EDA_ITEM::Matches(wxFindReplaceData&,void*,wxPoint*)
......@@ -622,8 +615,10 @@ public:
virtual SEARCH_RESULT Visit( INSPECTOR* inspector, const void* testData,
const KICAD_T scanTypes[] );
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_hierarchical_subsheet_xpm; }
virtual void GetNetListItem( vector<NETLIST_OBJECT*>& aNetListItems,
......@@ -631,6 +626,22 @@ public:
SCH_ITEM& operator=( const SCH_ITEM& aSheet );
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const { return m_pos; }
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition ) { m_pos = aPosition; }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
/** @copydoc SCH_ITEM::HitTest(EDA_RECT&,bool=false,int=0) */
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
/** @copydoc SCH_ITEM::Plot() */
virtual void Plot( PLOTTER* aPlotter );
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
......@@ -647,12 +658,7 @@ protected:
void renumberPins();
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const;
virtual EDA_ITEM* doClone() const;
virtual void doPlot( PLOTTER* aPlotter );
virtual wxPoint doGetPosition() const { return m_pos; }
virtual void doSetPosition( const wxPoint& aPosition ) { m_pos = aPosition; }
};
......
......@@ -378,7 +378,7 @@ bool SCH_SHEET_PIN::Matches( wxFindReplaceData& aSearchData,
}
void SCH_SHEET_PIN::Mirror_X( int aXaxis_position )
void SCH_SHEET_PIN::MirrorX( int aXaxis_position )
{
int p = m_Pos.y - aXaxis_position;
......@@ -397,7 +397,7 @@ void SCH_SHEET_PIN::Mirror_X( int aXaxis_position )
}
void SCH_SHEET_PIN::Mirror_Y( int aYaxis_position )
void SCH_SHEET_PIN::MirrorY( int aYaxis_position )
{
int p = m_Pos.x - aYaxis_position;
......@@ -416,9 +416,9 @@ void SCH_SHEET_PIN::Mirror_Y( int aYaxis_position )
}
void SCH_SHEET_PIN::Rotate( wxPoint rotationPoint )
void SCH_SHEET_PIN::Rotate( wxPoint aPosition )
{
RotatePoint( &m_Pos, rotationPoint, 900 );
RotatePoint( &m_Pos, aPosition, 900 );
switch( m_edge )
{
......@@ -484,7 +484,7 @@ wxString SCH_SHEET_PIN::GetSelectMenuText() const
}
bool SCH_SHEET_PIN::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_SHEET_PIN::HitTest( const wxPoint& aPoint, int aAccuracy ) const
{
EDA_RECT rect = GetBoundingBox();
......
......@@ -182,7 +182,7 @@ bool SCH_TEXT::Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxPoint
}
void SCH_TEXT::Mirror_Y( int aYaxis_position )
void SCH_TEXT::MirrorY( int aYaxis_position )
{
// Text is NOT really mirrored; it is moved to a suitable position
// which is the closest position for a true mirrored text
......@@ -223,7 +223,7 @@ void SCH_TEXT::Mirror_Y( int aYaxis_position )
}
void SCH_TEXT::Mirror_X( int aXaxis_position )
void SCH_TEXT::MirrorX( int aXaxis_position )
{
// Text is NOT really mirrored; it is moved to a suitable position
// which is the closest position for a true mirrored text
......@@ -264,11 +264,11 @@ void SCH_TEXT::Mirror_X( int aXaxis_position )
}
void SCH_TEXT::Rotate( wxPoint rotationPoint )
void SCH_TEXT::Rotate( wxPoint aPosition )
{
int dy;
RotatePoint( &m_Pos, rotationPoint, 900 );
RotatePoint( &m_Pos, aPosition, 900 );
SetOrientation( (GetOrientation() + 1) % 4 );
switch( GetOrientation() )
......@@ -671,19 +671,19 @@ void SCH_TEXT::GetNetListItem( vector<NETLIST_OBJECT*>& aNetListItems,
}
bool SCH_TEXT::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_TEXT::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
return TextHitTest( aPoint, aAccuracy );
return TextHitTest( aPosition, aAccuracy );
}
bool SCH_TEXT::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
bool SCH_TEXT::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
return TextHitTest( aRect, aContained, aAccuracy );
}
void SCH_TEXT::doPlot( PLOTTER* aPlotter )
void SCH_TEXT::Plot( PLOTTER* aPlotter )
{
static std::vector <wxPoint> Poly;
......@@ -776,7 +776,7 @@ void SCH_LABEL::SetOrientation( int aOrientation )
}
void SCH_LABEL::Mirror_X( int aXaxis_position )
void SCH_LABEL::MirrorX( int aXaxis_position )
{
// Text is NOT really mirrored; it is moved to a suitable position
// which is the closest position for a true mirrored text
......@@ -791,9 +791,9 @@ void SCH_LABEL::Mirror_X( int aXaxis_position )
}
void SCH_LABEL::Rotate( wxPoint rotationPoint )
void SCH_LABEL::Rotate( wxPoint aPosition )
{
RotatePoint( &m_Pos, rotationPoint, 900 );
RotatePoint( &m_Pos, aPosition, 900 );
SetOrientation( (GetOrientation() + 1) % 4 );
}
......@@ -944,9 +944,9 @@ wxString SCH_LABEL::GetSelectMenuText() const
}
bool SCH_LABEL::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_LABEL::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
return TextHitTest( aPoint, aAccuracy );
return TextHitTest( aPosition, aAccuracy );
}
......@@ -1055,7 +1055,7 @@ bool SCH_GLOBALLABEL::Load( LINE_READER& aLine, wxString& aErrorMsg )
}
void SCH_GLOBALLABEL::Mirror_Y( int aYaxis_position )
void SCH_GLOBALLABEL::MirrorY( int aYaxis_position )
{
/* The global label is NOT really mirrored.
* for an horizontal label, the schematic orientation is changed.
......@@ -1079,7 +1079,7 @@ void SCH_GLOBALLABEL::Mirror_Y( int aYaxis_position )
}
void SCH_GLOBALLABEL::Mirror_X( int aXaxis_position )
void SCH_GLOBALLABEL::MirrorX( int aXaxis_position )
{
switch( GetOrientation() )
{
......@@ -1098,9 +1098,9 @@ void SCH_GLOBALLABEL::Mirror_X( int aXaxis_position )
}
void SCH_GLOBALLABEL::Rotate( wxPoint rotationPoint )
void SCH_GLOBALLABEL::Rotate( wxPoint aPosition )
{
RotatePoint( &m_Pos, rotationPoint, 900 );
RotatePoint( &m_Pos, aPosition, 900 );
SetOrientation( (GetOrientation() + 3) % 4 );
}
......@@ -1373,9 +1373,9 @@ wxString SCH_GLOBALLABEL::GetSelectMenuText() const
}
bool SCH_GLOBALLABEL::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_GLOBALLABEL::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
return TextHitTest( aPoint, aAccuracy );
return TextHitTest( aPosition, aAccuracy );
}
......@@ -1663,7 +1663,7 @@ wxPoint SCH_HIERLABEL::GetSchematicTextOffset() const
}
void SCH_HIERLABEL::Mirror_Y( int aYaxis_position )
void SCH_HIERLABEL::MirrorY( int aYaxis_position )
{
/* The hierarchical label is NOT really mirrored for an horizontal label, the schematic
* orientation is changed. For a vertical label, the schematic orientation is not changed
......@@ -1687,7 +1687,7 @@ void SCH_HIERLABEL::Mirror_Y( int aYaxis_position )
}
void SCH_HIERLABEL::Mirror_X( int aXaxis_position )
void SCH_HIERLABEL::MirrorX( int aXaxis_position )
{
switch( GetOrientation() )
{
......@@ -1706,9 +1706,9 @@ void SCH_HIERLABEL::Mirror_X( int aXaxis_position )
}
void SCH_HIERLABEL::Rotate( wxPoint rotationPoint )
void SCH_HIERLABEL::Rotate( wxPoint aPosition )
{
RotatePoint( &m_Pos, rotationPoint, 900 );
RotatePoint( &m_Pos, aPosition, 900 );
SetOrientation( (GetOrientation() + 3) % 4 );
}
......@@ -1723,7 +1723,7 @@ wxString SCH_HIERLABEL::GetSelectMenuText() const
}
bool SCH_HIERLABEL::doHitTest( const wxPoint& aPoint, int aAccuracy ) const
bool SCH_HIERLABEL::HitTest( const wxPoint& aPosition, int aAccuracy ) const
{
return TextHitTest( aPoint, aAccuracy );
return TextHitTest( aPosition, aAccuracy );
}
......@@ -187,25 +187,20 @@ public:
// Geometric transforms (used in block operations):
/** virtual function Move
* move item to a new position.
* @param aMoveVector = the displacement vector
*/
/** @copydoc SCH_ITEM::Move() */
virtual void Move( const wxPoint& aMoveVector )
{
m_Pos += aMoveVector;
}
/**
* Function Mirror_Y
* mirrors the item relative to \a aYaxisPosition.
* @param aYaxis_position The y axis coordinate to mirror around.
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
/**
* @copydoc EDA_ITEM::Matches(wxFindReplaceData&,void*,wxPoint*)
......@@ -237,24 +232,37 @@ public:
virtual bool CanIncrementLabel() const { return true; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_text_xpm; }
virtual void GetNetListItem( vector<NETLIST_OBJECT*>& aNetListItems,
SCH_SHEET_PATH* aSheetPath );
/** @copydoc SCH_ITEM::GetPosition() */
virtual wxPoint GetPosition() const { return m_Pos; }
/** @copydoc SCH_ITEM::SetPosition() */
virtual void SetPosition( const wxPoint& aPosition ) { m_Pos = aPosition; }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
/** @copydoc SCH_ITEM::HitTest(EDA_RECT&,bool=false,int=0) */
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false,
int aAccuracy = 0 ) const;
/** @copydoc SCH_ITEM::Plot() */
virtual void Plot( PLOTTER* aPlotter );
#if defined(DEBUG)
void Show( int nestLevel, std::ostream& os ) const; // override
#endif
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const;
virtual EDA_ITEM* doClone() const;
virtual void doPlot( PLOTTER* aPlotter );
virtual wxPoint doGetPosition() const { return m_Pos; }
virtual void doSetPosition( const wxPoint& aPosition ) { m_Pos = aPosition; }
};
......@@ -303,9 +311,11 @@ public:
*/
virtual wxPoint GetSchematicTextOffset() const;
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
/**
* Function GetBoundingBox
......@@ -337,8 +347,10 @@ public:
virtual bool IsConnectable() const { return true; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_line_label_xpm; }
/**
......@@ -346,9 +358,13 @@ public:
*/
virtual bool IsReplaceable() const { return true; }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
/** @copydoc SCH_ITEM::doIsConnected() */
virtual bool doIsConnected( const wxPoint& aPosition ) const { return m_Pos == aPosition; }
virtual EDA_ITEM* doClone() const;
};
......@@ -434,25 +450,30 @@ public:
*/
virtual void CreateGraphicShape( std::vector <wxPoint>& aPoints, const wxPoint& aPos );
/** virtual function Mirror_Y
* mirror item relative to an Y axis
* @param aYaxis_position = the y axis position
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
virtual bool IsConnectable() const { return true; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_glabel_xpm; }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
/** @copydoc SCH_ITEM::doIsConnected() */
virtual bool doIsConnected( const wxPoint& aPosition ) const { return m_Pos == aPosition; }
virtual EDA_ITEM* doClone() const;
};
......@@ -540,25 +561,30 @@ public:
*/
EDA_RECT GetBoundingBox() const;
/** virtual function Mirror_Y
* mirror item relative to an Y axis
* @param aYaxis_position = the y axis position
*/
virtual void Mirror_Y( int aYaxis_position );
/** @copydoc SCH_ITEM::MirrorY() */
virtual void MirrorY( int aYaxis_position );
virtual void Mirror_X( int aXaxis_position );
/** @copydoc SCH_ITEM::MirrorX() */
virtual void MirrorX( int aXaxis_position );
virtual void Rotate( wxPoint rotationPoint );
/** @copydoc SCH_ITEM::Rotate() */
virtual void Rotate( wxPoint aPosition );
virtual bool IsConnectable() const { return true; }
/** @copydoc EDA_ITEM::GetSelectMenuText() */
virtual wxString GetSelectMenuText() const;
/** @copydoc EDA_ITEM::GetMenuImage() */
virtual BITMAP_DEF GetMenuImage() const { return add_hierarchical_label_xpm; }
/** @copydoc SCH_ITEM::HitTest(wxPoint&,int) */
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const;
/** @copydoc SCH_ITEM::doIsConnected() */
virtual bool doIsConnected( const wxPoint& aPosition ) const { return m_Pos == aPosition; }
virtual EDA_ITEM* doClone() const;
};
......
......@@ -304,11 +304,11 @@ void SCH_EDIT_FRAME::PutDataInPreviousState( PICKED_ITEMS_LIST* aList, bool aRed
break;
case UR_MIRRORED_Y:
item->Mirror_Y( aList->m_TransformPoint.x );
item->MirrorY( aList->m_TransformPoint.x );
break;
case UR_MIRRORED_X:
item->Mirror_X( aList->m_TransformPoint.y );
item->MirrorX( aList->m_TransformPoint.y );
break;
case UR_ROTATED:
......
......@@ -68,6 +68,7 @@ set(GERBVIEW_SRCS
set(GERBVIEW_EXTRA_SRCS
../pcbnew/layer_widget.cpp
../pcbnew/printout_controler.cpp
../pcbnew/class_drc_item.cpp
)
###
......@@ -114,7 +115,7 @@ endif(APPLE)
###
# Link executable target gerbview with correct libraries
###
target_link_libraries(gerbview common pcbcommon 3d-viewer polygon bitmaps kbool
target_link_libraries(gerbview pcbcommon common 3d-viewer polygon bitmaps kbool
${OPENGL_LIBRARIES}
${wxWidgets_LIBRARIES}
${GDI_PLUS_LIBRARIES})
......
......@@ -490,23 +490,29 @@ public:
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param refPos A wxPoint to test
* @return bool - true if a hit, else false
* tests if \a aPosition is contained within or on the bounding area of an item.
*
* @note This function cannot be const because some of the derive objects perform
* intermediate calculations which change object members. Make sure derived
* objects do not declare this as const.
*
* @param aPosition A reference to a wxPoint object containing the coordinates to test.
* @return True if \a aPosition is within or on the item bounding area.
*/
virtual bool HitTest( const wxPoint& refPos )
virtual bool HitTest( const wxPoint& aPosition )
{
return false; // derived classes should override this function
}
/**
* Function HitTest (overlaid)
* tests if the given EDA_RECT intersect this object.
* For now, an ending point must be inside this rect.
* @param refArea : the given EDA_RECT
* @return bool - true if a hit, else false
* Function HitTest
* tests if the \a aRect intersects this object.
* For now, an ending point must be inside \a aRect.
*
* @param aRect A reference to an EDA_RECT object containg the area to test.
* @return True if \a aRect intersects the object, otherwise false.
*/
virtual bool HitTest( EDA_RECT& refArea )
virtual bool HitTest( const EDA_RECT& aRect ) const
{
return false; // derived classes should override this function
}
......
......@@ -31,8 +31,8 @@
/**
* Class DRC_ITEM
* is a holder for a DRC (in Pcbnew) or ERC (in Eeschema) error item.
* It is generated when two objects are too close (DRC)
* or two connected objects (pins) have incompatibleelectrical type (ERC).
* It is generated when two objects are too close (DRC)
* or two connected objects (pins) have incompatible electrical types (ERC).
* There are holders for information on two items. The
* information held is the board coordinate and the MenuText for each item.
* Also held is the type of error by number and the location of the MARKER.
......@@ -151,26 +151,26 @@ public:
{
// omit the coordinate, a NETCLASS has no location
ret.Printf( _( "ErrType(%d): <b>%s</b><ul><li> %s </li></ul>" ),
m_ErrorCode,
GetChars( GetErrorText() ),
GetChars( m_MainText ) );
m_ErrorCode,
GetChars( GetErrorText() ),
GetChars( m_MainText ) );
}
else if( m_hasSecondItem )
{
// an html fragment for the entire message in the listbox. feel free
// to add color if you want:
ret.Printf( _( "ErrType(%d): <b>%s</b><ul><li> %s: %s </li><li> %s: %s </li></ul>" ),
m_ErrorCode,
GetChars( GetErrorText() ),
GetChars( ShowCoord( m_MainPosition )), GetChars( m_MainText ),
GetChars( ShowCoord( m_AuxiliaryPosition )), GetChars( m_AuxiliaryText ) );
m_ErrorCode,
GetChars( GetErrorText() ),
GetChars( ShowCoord( m_MainPosition )), GetChars( m_MainText ),
GetChars( ShowCoord( m_AuxiliaryPosition )), GetChars( m_AuxiliaryText ) );
}
else
{
ret.Printf( _( "ErrType(%d): <b>%s</b><ul><li> %s: %s </li></ul>" ),
m_ErrorCode,
GetChars( GetErrorText() ),
GetChars( ShowCoord( m_MainPosition ) ), GetChars( m_MainText ) );
m_ErrorCode,
GetChars( GetErrorText() ),
GetChars( ShowCoord( m_MainPosition ) ), GetChars( m_MainText ) );
}
return ret;
......@@ -190,17 +190,17 @@ public:
if( m_hasSecondItem )
{
ret.Printf( wxT( "ErrType(%d): %s\n %s: %s\n %s: %s\n" ),
m_ErrorCode,
GetChars( GetErrorText() ),
GetChars( ShowCoord( m_MainPosition ) ), GetChars( m_MainText ),
GetChars( ShowCoord( m_AuxiliaryPosition ) ), GetChars( m_AuxiliaryText ) );
m_ErrorCode,
GetChars( GetErrorText() ),
GetChars( ShowCoord( m_MainPosition ) ), GetChars( m_MainText ),
GetChars( ShowCoord( m_AuxiliaryPosition ) ), GetChars( m_AuxiliaryText ) );
}
else
{
ret.Printf( wxT( "ErrType(%d): %s\n %s: %s\n" ),
m_ErrorCode,
GetChars( GetErrorText() ),
GetChars( ShowCoord( m_MainPosition ) ), GetChars( m_MainText ) );
m_ErrorCode,
GetChars( GetErrorText() ),
GetChars( ShowCoord( m_MainPosition ) ), GetChars( m_MainText ) );
}
return ret;
......@@ -219,8 +219,8 @@ public:
/**
* Function GetErrorText
* returns the string form of a drc error code.
*/
wxString GetErrorText() const;
*/
wxString GetErrorText() const;
const wxString& GetTextA() const
{
......
......@@ -83,13 +83,13 @@ enum DANGLING_END_T {
/**
* Class DANLIGN_END_ITEM
* Class DANGLING_END_ITEM
* is a helper class used to store the state of schematic items that can be connected to
* other schematic items.
*/
class DANGLING_END_ITEM
{
/// A pointer to the connectable ojbect.
/// A pointer to the connectable object.
const void* m_item;
/// The position of the connection point.
......@@ -186,15 +186,26 @@ public:
virtual void Move( const wxPoint& aMoveVector ) = 0;
/**
* Function Mirror_Y
* mirrors item relative to an Y axis about \a aYaxis_position.
* Function MirrorY
* mirrors item relative to the Y axis about \a aYaxis_position.
* @param aYaxis_position The Y axis position to mirror around.
*/
virtual void Mirror_Y( int aYaxis_position ) = 0;
virtual void MirrorY( int aYaxis_position ) = 0;
virtual void Mirror_X( int aXaxis_position ) = 0;
/**
* Function MirrorX
* mirrors item relative to the X axis about \a aXaxis_position.
* @param aXaxis_position The X axis position to mirror around.
*/
virtual void MirrorX( int aXaxis_position ) = 0;
virtual void Rotate( wxPoint rotationPoint ) = 0;
/**
* Function Rotate
* rotates the item around \a aPosition 90 degrees in the clockwise direction.
* @param aPosition A reference to a wxPoint object containing the coordinates to
* rotate around.
*/
virtual void Rotate( wxPoint aPosition ) = 0;
/**
* Function Save
......@@ -285,7 +296,7 @@ public:
* Function IsConnected
* tests the item to see if it is connected to \a aPoint.
*
* @param aPoint - Position to test for connection.
* @param aPoint A reference to a wxPoint object containing the coordinates to test.
* @return True if connection to \a aPoint exists.
*/
bool IsConnected( const wxPoint& aPoint ) const;
......@@ -294,34 +305,37 @@ public:
/**
* Function HitTest
* tests if \a aPoint is contained within or on the bounding box of an item.
* tests if \a aPosition is contained within or on the bounding box of an item.
*
* @param aPoint - Point to test.
* @param aAccuracy - Increase the item bounding box by this amount.
* @return True if \a aPoint is within the item bounding box.
* @param aPosition A reference to a wxPoint object containing the coordinates to test.
* @param aAccuracy Increase the item bounding box by this amount.
* @return True if \a aPosition is within the item bounding box.
*/
bool HitTest( const wxPoint& aPoint, int aAccuracy = 0 ) const
{
return doHitTest( aPoint, aAccuracy );
}
virtual bool HitTest( const wxPoint& aPosition, int aAccuracy ) const { return false; }
/**
* Function HitTest
* tests if \a aRect intersects or is contained within the bounding box of an item.
*
* @param aRect - Rectangle to test.
* @param aContained - Set to true to test for containment instead of an intersection.
* @param aAccuracy - Increase aRect by this amount.
* @param aRect A reference to a EDA_RECT object containing the rectangle to test.
* @param aContained Set to true to test for containment instead of an intersection.
* @param aAccuracy Increase \a aRect by this amount.
* @return True if \a aRect contains or intersects the item bounding box.
*/
bool HitTest( const EDA_RECT& aRect, bool aContained = false, int aAccuracy = 0 ) const
virtual bool HitTest( const EDA_RECT& aRect, bool aContained = false, int aAccuracy = 0 ) const
{
return doHitTest( aRect, aContained, aAccuracy );
return false;
}
virtual bool CanIncrementLabel() const { return false; }
void Plot( PLOTTER* aPlotter ) { doPlot( aPlotter ); }
/**
* Function Plot
* plots the schematic item to \a aPlotter.
*
* @param aPlotter A pointer to a #PLOTTER object.
*/
virtual void Plot( PLOTTER* aPlotter );
/**
* Function GetNetListItem
......@@ -331,15 +345,16 @@ public:
* Not all schematic objects have net list items associated with them. This
* method only needs to be overridden for those schematic objects that have
* net list objects associated with them.
* </p>
*/
virtual void GetNetListItem( vector<NETLIST_OBJECT*>& aNetListItems,
SCH_SHEET_PATH* aSheetPath ) { }
/**
* Function GetPosition
* @return the schematic item position.
* @return A wxPoint object containing the schematic item position.
*/
wxPoint GetPosition() const { return doGetPosition(); }
virtual wxPoint GetPosition() const = 0;
/**
* Function SetPosition
......@@ -347,34 +362,26 @@ public:
*
* @param aPosition A reference to a wxPoint object containing the new position.
*/
void SetPosition( const wxPoint& aPosition ) { doSetPosition( aPosition ); }
virtual void SetPosition( const wxPoint& aPosition ) = 0;
virtual bool operator <( const SCH_ITEM& aItem ) const;
private:
/**
* @note - The DoXXX() functions below are used to enforce the interface while retaining
* the ability of change the implementation behavior of derived classes. See
* Herb Sutters explanation of virtuality as to why you might want to do this at:
* http://www.gotw.ca/publications/mill18.htm.
* Function doIsConnected
* provides the object specific test to see if it is connected to \a aPosition.
*
* @note Override this function if the derived object can be connect to another
* object such as a wire, bus, or junction. Do not override this function
* for objects that cannot have connections. The default will always return
* false. This functions is call through the public function IsConnected()
* which performs tests common to all schematic items before calling the
* item specific connection testing.
*
* @param aPosition A reference to a wxPoint object containing the test position.
* @return True if connection to \a aPosition exists.
*/
private:
virtual bool doHitTest( const wxPoint& aPoint, int aAccuracy ) const
{
return false;
}
virtual bool doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
{
return false;
}
virtual bool doIsConnected( const wxPoint& aPosition ) const { return false; }
virtual void doPlot( PLOTTER* aPlotter );
virtual wxPoint doGetPosition() const = 0;
virtual void doSetPosition( const wxPoint& aPosition ) = 0;
};
......
......@@ -445,12 +445,12 @@ void DIMENSION::DisplayInfo( EDA_DRAW_FRAME* frame )
}
bool DIMENSION::HitTest( const wxPoint& aPoint )
bool DIMENSION::HitTest( const wxPoint& aPosition )
{
int ux0, uy0;
int dx, dy, spot_cX, spot_cY;
if( m_Text.TextHitTest( aPoint ) )
if( m_Text.TextHitTest( aPosition ) )
return true;
// Locate SEGMENTS?
......@@ -461,8 +461,8 @@ bool DIMENSION::HitTest( const wxPoint& aPoint )
dx = m_crossBarFx - ux0;
dy = m_crossBarFy - uy0;
spot_cX = aPoint.x - ux0;
spot_cY = aPoint.y - uy0;
spot_cX = aPosition.x - ux0;
spot_cY = aPosition.y - uy0;
if( DistanceTest( m_Width / 2, dx, dy, spot_cX, spot_cY ) )
return true;
......@@ -473,8 +473,8 @@ bool DIMENSION::HitTest( const wxPoint& aPoint )
dx = m_featureLineGFx - ux0;
dy = m_featureLineGFy - uy0;
spot_cX = aPoint.x - ux0;
spot_cY = aPoint.y - uy0;
spot_cX = aPosition.x - ux0;
spot_cY = aPosition.y - uy0;
if( DistanceTest( m_Width / 2, dx, dy, spot_cX, spot_cY ) )
return true;
......@@ -485,8 +485,8 @@ bool DIMENSION::HitTest( const wxPoint& aPoint )
dx = m_featureLineDFx - ux0;
dy = m_featureLineDFy - uy0;
spot_cX = aPoint.x - ux0;
spot_cY = aPoint.y - uy0;
spot_cX = aPosition.x - ux0;
spot_cY = aPosition.y - uy0;
if( DistanceTest( m_Width / 2, dx, dy, spot_cX, spot_cY ) )
return true;
......@@ -497,8 +497,8 @@ bool DIMENSION::HitTest( const wxPoint& aPoint )
dx = m_arrowD1Fx - ux0;
dy = m_arrowD1Fy - uy0;
spot_cX = aPoint.x - ux0;
spot_cY = aPoint.y - uy0;
spot_cX = aPosition.x - ux0;
spot_cY = aPosition.y - uy0;
if( DistanceTest( m_Width / 2, dx, dy, spot_cX, spot_cY ) )
return true;
......@@ -509,8 +509,8 @@ bool DIMENSION::HitTest( const wxPoint& aPoint )
dx = m_arrowD2Fx - ux0;
dy = m_arrowD2Fy - uy0;
spot_cX = aPoint.x - ux0;
spot_cY = aPoint.y - uy0;
spot_cX = aPosition.x - ux0;
spot_cY = aPosition.y - uy0;
if( DistanceTest( m_Width / 2, dx, dy, spot_cX, spot_cY ) )
return true;
......@@ -521,8 +521,8 @@ bool DIMENSION::HitTest( const wxPoint& aPoint )
dx = m_arrowG1Fx - ux0;
dy = m_arrowG1Fy - uy0;
spot_cX = aPoint.x - ux0;
spot_cY = aPoint.y - uy0;
spot_cX = aPosition.x - ux0;
spot_cY = aPosition.y - uy0;
if( DistanceTest( m_Width / 2, dx, dy, spot_cX, spot_cY ) )
return true;
......@@ -533,8 +533,8 @@ bool DIMENSION::HitTest( const wxPoint& aPoint )
dx = m_arrowG2Fx - ux0;
dy = m_arrowG2Fy - uy0;
spot_cX = aPoint.x - ux0;
spot_cY = aPoint.y - uy0;
spot_cX = aPosition.x - ux0;
spot_cY = aPosition.y - uy0;
if( DistanceTest( m_Width / 2, dx, dy, spot_cX, spot_cY ) )
return true;
......@@ -543,9 +543,9 @@ bool DIMENSION::HitTest( const wxPoint& aPoint )
}
bool DIMENSION::HitTest( EDA_RECT& refArea )
bool DIMENSION::HitTest( const EDA_RECT& aRect ) const
{
if( refArea.Contains( m_Pos ) )
if( aRect.Contains( m_Pos ) )
return true;
return false;
......
......@@ -151,22 +151,11 @@ public:
*/
void DisplayInfo( EDA_DRAW_FRAME* frame );
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param ref_pos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool HitTest( const wxPoint& ref_pos );
/** @copydoc EDA_ITEM::HitTest(wxPoint&) */
bool HitTest( const wxPoint& aPosition );
/**
* Function HitTest (overlaid)
* tests if the given EDA_RECT intersect this object.
* For now, the anchor must be inside this rect.
* @param refArea : the given EDA_RECT
* @return bool - true if a hit, else false
*/
bool HitTest( EDA_RECT& refArea );
/** @copydoc EDA_ITEM::HitTest(EDA_RECT&) */
bool HitTest( const EDA_RECT& aRect ) const;
/**
* Function GetClass
......
......@@ -439,10 +439,10 @@ EDA_RECT DRAWSEGMENT::GetBoundingBox() const
}
bool DRAWSEGMENT::HitTest( const wxPoint& aRefPos )
bool DRAWSEGMENT::HitTest( const wxPoint& aPosition )
{
/* Calculate coordinates to test relative to segment origin. */
wxPoint relPos = aRefPos - m_Start;
wxPoint relPos = aPosition - m_Start;
switch( m_Shape )
{
......@@ -476,13 +476,13 @@ bool DRAWSEGMENT::HitTest( const wxPoint& aRefPos )
case S_CURVE:
for( unsigned int i= 1; i < m_BezierPoints.size(); i++)
{
if( TestSegmentHit( aRefPos,m_BezierPoints[i-1], m_BezierPoints[i-1], m_Width / 2 ) )
if( TestSegmentHit( aPosition, m_BezierPoints[i-1], m_BezierPoints[i-1], m_Width / 2 ) )
return true;
}
break;
case S_SEGMENT:
if( TestSegmentHit( aRefPos, m_Start, m_End, m_Width / 2 ) )
if( TestSegmentHit( aPosition, m_Start, m_End, m_Width / 2 ) )
return true;
break;
......@@ -494,15 +494,16 @@ bool DRAWSEGMENT::HitTest( const wxPoint& aRefPos )
}
bool DRAWSEGMENT::HitTest( EDA_RECT& refArea )
bool DRAWSEGMENT::HitTest( const EDA_RECT& aRect ) const
{
switch( m_Shape )
{
case S_CIRCLE:
{
int radius = GetRadius();
// Text if area intersects the circle:
EDA_RECT area = refArea;
EDA_RECT area = aRect;
area.Inflate( radius );
if( area.Contains( m_Start ) )
......@@ -512,9 +513,10 @@ bool DRAWSEGMENT::HitTest( EDA_RECT& refArea )
case S_ARC:
case S_SEGMENT:
if( refArea.Contains( GetStart() ) )
if( aRect.Contains( GetStart() ) )
return true;
if( refArea.Contains( GetEnd() ) )
if( aRect.Contains( GetEnd() ) )
return true;
break;
}
......
......@@ -186,22 +186,11 @@ public:
*/
virtual EDA_RECT GetBoundingBox() const;
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param aRefPos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool HitTest( const wxPoint& aRefPos );
/** @copydoc EDA_ITEM::HitTest(wxPoint&) */
bool HitTest( const wxPoint& aPosition );
/**
* Function HitTest (overlayed)
* tests if the given EDA_RECT intersect this object.
* For now, an ending point must be inside this rect.
* @param refArea the given EDA_RECT to test
* @return bool - true if a hit, else false
*/
bool HitTest( EDA_RECT& refArea );
/** @copydoc EDA_ITEM::HitTest(EDA_RECT&) */
bool HitTest( const EDA_RECT& aRect ) const;
/**
* Function GetClass
......
......@@ -80,14 +80,10 @@ public:
const wxPoint& GetPosition() const { return m_Pos; }
void SetPosition( const wxPoint& aPos ) { m_Pos = aPos; }
/**
* Function HitTest
* @return true if the point aPosRef is within item area
* @param aPosRef = a wxPoint to test
*/
bool HitTest( const wxPoint& aPosRef )
/** @copydoc EDA_ITEM::HitTest(wxPoint&) */
bool HitTest( const wxPoint& aPosition )
{
return HitTestMarker( aPosRef );
return HitTestMarker( aPosition );
}
/**
......
......@@ -162,24 +162,18 @@ void PCB_TARGET::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, int mode_color, const wx
}
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param refPos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool PCB_TARGET::HitTest( const wxPoint& refPos )
bool PCB_TARGET::HitTest( const wxPoint& aPosition )
{
int dX = refPos.x - m_Pos.x;
int dY = refPos.y - m_Pos.y;
int dX = aPosition.x - m_Pos.x;
int dY = aPosition.y - m_Pos.y;
int radius = m_Size / 2;
return abs( dX ) <= radius && abs( dY ) <= radius;
}
bool PCB_TARGET::HitTest( EDA_RECT& refArea )
bool PCB_TARGET::HitTest( const EDA_RECT& aRect ) const
{
if( refArea.Contains( m_Pos ) )
if( aRect.Contains( m_Pos ) )
return true;
return false;
......
......@@ -118,22 +118,11 @@ public:
void Draw( EDA_DRAW_PANEL* panel, wxDC* DC, int aDrawMode,
const wxPoint& offset = ZeroOffset );
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param refPos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool HitTest( const wxPoint& refPos );
/** @copydoc EDA_ITEM::HitTest(wxPoint&) */
bool HitTest( const wxPoint& aPosition );
/**
* Function HitTest (overlaid)
* tests if the given EDA_RECT intersect this object.
* For now, the anchor must be inside this rect.
* @param refArea : the given EDA_RECT
* @return bool - true if a hit, else false
*/
bool HitTest( EDA_RECT& refArea );
/** @copydoc EDA_ITEM::HitTest(EDA_RECT&) */
bool HitTest( const EDA_RECT& aRect ) const;
EDA_RECT GetBoundingBox() const;
......
......@@ -508,27 +508,27 @@ void MODULE::DisplayInfo( EDA_DRAW_FRAME* frame )
}
bool MODULE::HitTest( const wxPoint& aRefPos )
bool MODULE::HitTest( const wxPoint& aPosition )
{
if( m_BoundaryBox.Contains( aRefPos ) )
if( m_BoundaryBox.Contains( aPosition ) )
return true;
return false;
}
bool MODULE::HitTest( EDA_RECT& aRefArea )
bool MODULE::HitTest( const EDA_RECT& aRect ) const
{
if( m_BoundaryBox.GetX() < aRefArea.GetX() )
if( m_BoundaryBox.GetX() < aRect.GetX() )
return false;
if( m_BoundaryBox.GetY() < aRefArea.GetY() )
if( m_BoundaryBox.GetY() < aRect.GetY() )
return false;
if( m_BoundaryBox.GetRight() > aRefArea.GetRight() )
if( m_BoundaryBox.GetRight() > aRect.GetRight() )
return false;
if( m_BoundaryBox.GetBottom() > aRefArea.GetBottom() )
if( m_BoundaryBox.GetBottom() > aRect.GetBottom() )
return false;
return true;
......
......@@ -321,21 +321,11 @@ public:
*/
void DisplayInfo( EDA_DRAW_FRAME* frame );
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param aRefPos is a wxPoint to test.
* @return bool - true if a hit, else false.
*/
bool HitTest( const wxPoint& aRefPos );
/** @copydoc EDA_ITEM::HitTest(wxPoint&) */
bool HitTest( const wxPoint& aPosition );
/**
* Function HitTest (overlaid)
* tests if the given EDA_RECT intersect the bounds of this object.
* @param aRefArea is the given EDA_RECT.
* @return bool - true if a hit, else false.
*/
bool HitTest( EDA_RECT& aRefArea );
/** @copydoc EDA_ITEM::HitTest(EDA_RECT&) */
bool HitTest( const EDA_RECT& aRect ) const;
/**
* Function GetReference
......
......@@ -100,7 +100,7 @@ int D_PAD::boundingRadius() const
case PAD_RECT:
radius = 1 + (int) ( sqrt( (double) m_Size.y * m_Size.y
+ (double) m_Size.x * m_Size.x ) / 2 );
+ (double) m_Size.x * m_Size.x ) / 2 );
break;
case PAD_TRAPEZOID:
......@@ -175,7 +175,7 @@ void D_PAD::AppendConfigs( PARAM_CFG_ARRAY* aResult )
// Returns the position of the pad.
const wxPoint D_PAD::ReturnShapePos()
const wxPoint D_PAD::ReturnShapePos() const
{
if( m_Offset.x == 0 && m_Offset.y == 0 )
return m_Pos;
......@@ -664,14 +664,14 @@ bool D_PAD::IsOnLayer( int aLayer ) const
}
bool D_PAD::HitTest( const wxPoint& refPos )
bool D_PAD::HitTest( const wxPoint& aPosition )
{
int dx, dy;
double dist;
wxPoint shape_pos = ReturnShapePos();
wxPoint delta = refPos - shape_pos;
wxPoint delta = aPosition - shape_pos;
// first test: a test point must be inside a minimum sized bounding circle.
int radius = GetBoundingRadius();
......
......@@ -353,10 +353,11 @@ public:
{
m_boundingRadius = boundingRadius();
}
return m_boundingRadius;
}
const wxPoint ReturnShapePos();
const wxPoint ReturnShapePos() const;
/**
* Function GetSubRatsnest
......@@ -385,13 +386,8 @@ public:
*/
bool IsOnLayer( int aLayer ) const;
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param refPos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool HitTest( const wxPoint& refPos );
/** @copydoc EDA_ITEM::HitTest(wxPoint&) */
bool HitTest( const wxPoint& aPosition );
/**
* Function GetClass
......
......@@ -108,26 +108,16 @@ public:
*/
void DisplayInfo( EDA_DRAW_FRAME* frame );
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param refPos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool HitTest( const wxPoint& refPos )
/** @copydoc EDA_ITEM::HitTest(wxPoint&) */
bool HitTest( const wxPoint& aPosition )
{
return TextHitTest( refPos );
return TextHitTest( aPosition );
}
/**
* Function HitTest (overloaded)
* tests if the given EDA_RECT intersect this object.
* @param refArea the given EDA_RECT to test
* @return bool - true if a hit, else false
*/
bool HitTest( EDA_RECT& refArea )
/** @copydoc EDA_ITEM::HitTest(EDA_RECT&) */
bool HitTest( const EDA_RECT& aRect )
{
return TextHitTest( refArea );
return TextHitTest( aRect );
}
/**
......
......@@ -184,13 +184,7 @@ EDA_RECT TEXTE_MODULE::GetTextRect( void ) const
}
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param aRefPos A wxPoint to test
* @return true if a hit, else false
*/
bool TEXTE_MODULE::HitTest( const wxPoint& aRefPos )
bool TEXTE_MODULE::HitTest( const wxPoint& aPosition )
{
wxPoint rel_pos;
EDA_RECT area = GetTextRect();
......@@ -199,7 +193,7 @@ bool TEXTE_MODULE::HitTest( const wxPoint& aRefPos )
* to test if refPos is within area (which is relative to an horizontal
* text)
*/
rel_pos = aRefPos;
rel_pos = aPosition;
RotatePoint( &rel_pos, m_Pos, -GetDrawRotation() );
if( area.Contains( rel_pos ) )
......
......@@ -167,13 +167,8 @@ public:
void DisplayInfo( EDA_DRAW_FRAME* frame );
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param aRefPos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool HitTest( const wxPoint& aRefPos );
/** @copydoc EDA_ITEM::HitTest(wxPoint&) */
bool HitTest( const wxPoint& aPosition );
/**
* Function IsOnLayer
......
......@@ -1179,7 +1179,7 @@ void TRACK::DisplayInfoBase( EDA_DRAW_FRAME* frame )
}
bool TRACK::HitTest( const wxPoint& refPos )
bool TRACK::HitTest( const wxPoint& aPosition )
{
int radius = m_Width >> 1;
......@@ -1188,8 +1188,8 @@ bool TRACK::HitTest( const wxPoint& refPos )
int dy = m_End.y - m_Start.y;
// (spot_cX, spot_cY) is a vector from m_Start to ref_pos (an origin of m_Start)
int spot_cX = refPos.x - m_Start.x;
int spot_cY = refPos.y - m_Start.y;
int spot_cX = aPosition.x - m_Start.x;
int spot_cY = aPosition.y - m_Start.y;
if( Type() == PCB_VIA_T )
{
......@@ -1205,12 +1205,12 @@ bool TRACK::HitTest( const wxPoint& refPos )
}
bool TRACK::HitTest( EDA_RECT& refArea )
bool TRACK::HitTest( const EDA_RECT& aRect ) const
{
if( refArea.Contains( m_Start ) )
if( aRect.Contains( m_Start ) )
return true;
if( refArea.Contains( m_End ) )
if( aRect.Contains( m_End ) )
return true;
return false;
......
......@@ -303,22 +303,11 @@ public:
const KICAD_T scanTypes[] );
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param refPos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool HitTest( const wxPoint& refPos );
/** @copydoc EDA_ITEM::HitTest(wxPoint&) */
bool HitTest( const wxPoint& aPosition );
/**
* Function HitTest (overlaid)
* tests if the given wxRect intersect this object.
* For now, an ending point must be inside this rect.
* @param refArea an EDA_RECT to test
* @return bool - true if a hit, else false
*/
bool HitTest( EDA_RECT& refArea );
/** @copydoc EDA_ITEM::HitTest(EDA_RECT&) */
bool HitTest( const EDA_RECT& aRect ) const;
/**
* Function GetVia
......
......@@ -2,7 +2,6 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2006 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
......@@ -468,12 +467,12 @@ int ZONE_CONTAINER::GetThermalReliefCopperBridge( D_PAD* aPad ) const
}
bool ZONE_CONTAINER::HitTest( const wxPoint& refPos )
bool ZONE_CONTAINER::HitTest( const wxPoint& aPosition )
{
if( HitTestForCorner( refPos ) )
if( HitTestForCorner( aPosition ) )
return true;
if( HitTestForEdge( refPos ) )
if( HitTestForEdge( aPosition ) )
return true;
return false;
......@@ -584,22 +583,22 @@ bool ZONE_CONTAINER::HitTestForEdge( const wxPoint& refPos )
}
bool ZONE_CONTAINER::HitTest( EDA_RECT& refArea )
bool ZONE_CONTAINER::HitTest( const EDA_RECT& aRect ) const
{
bool is_out_of_box = false;
CRect rect = m_Poly->GetCornerBounds();
if( rect.left < refArea.GetX() )
if( rect.left < aRect.GetX() )
is_out_of_box = true;
if( rect.top < refArea.GetY() )
if( rect.top < aRect.GetY() )
is_out_of_box = true;
if( rect.right > refArea.GetRight() )
if( rect.right > aRect.GetRight() )
is_out_of_box = true;
if( rect.bottom > refArea.GetBottom() )
if( rect.bottom > aRect.GetBottom() )
is_out_of_box = true;
return is_out_of_box ? false : true;
......@@ -633,7 +632,7 @@ int ZONE_CONTAINER::GetClearance( BOARD_CONNECTED_ITEM* aItem ) const
}
bool ZONE_CONTAINER::HitTestFilledArea( const wxPoint& aRefPos )
bool ZONE_CONTAINER::HitTestFilledArea( const wxPoint& aRefPos ) const
{
unsigned indexstart = 0, indexend;
bool inside = false;
......
......@@ -297,14 +297,8 @@ public:
int GetMinThickness() const { return m_ZoneMinThickness; }
void SetMinThickness( int aMinThickness ) { m_ZoneMinThickness = aMinThickness; }
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* For zones, this means near an outline segment
* @param refPos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool HitTest( const wxPoint& refPos );
/** @copydoc EDA_ITEM::HitTest(wxPoint&) */
bool HitTest( const wxPoint& aPosition );
/**
* Function HitTestFilledArea
......@@ -312,7 +306,7 @@ public:
* @param aRefPos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool HitTestFilledArea( const wxPoint& aRefPos );
bool HitTestFilledArea( const wxPoint& aRefPos ) const;
/**
* Function BuildFilledPolysListData
......@@ -377,13 +371,8 @@ public:
*/
bool HitTestForEdge( const wxPoint& refPos );
/**
* Function HitTest (overloaded)
* tests if the given EDA_RECT contains the bounds of this object.
* @param refArea : the given EDA_RECT
* @return bool - true if a hit, else false
*/
bool HitTest( EDA_RECT& refArea );
/** @copydoc EDA_ITEM::HitTest(EDA_RECT&) */
bool HitTest( const EDA_RECT& refArea ) const;
/**
* Function Fill_Zone
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment