Eeschema: fix issues in drag command (mainly hotkey command and forgotten wire ends connected to components to drag).
Rename EDA_Rect::Inside to EDA_Rect::Contains ( EDA_Rect::Inside( const EDA_Rect& aRect ) was very ambiguous ) Fix some Doxygen warnings and erroneous comments; Add comments.
This commit is contained in:
parent
597f67755b
commit
5bab73d638
|
@ -4,6 +4,14 @@ KiCad ChangeLog 2010
|
||||||
Please add newer entries at the top, list the date and your name with
|
Please add newer entries at the top, list the date and your name with
|
||||||
email address.
|
email address.
|
||||||
|
|
||||||
|
2010-dec-20, UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
|
||||||
|
================================================================================
|
||||||
|
common:
|
||||||
|
Rename EDA_Rect::Inside to EDA_Rect::Contains
|
||||||
|
( EDA_Rect::Inside( const EDA_Rect& aRect ) was very ambiguous )
|
||||||
|
Fix some Doxygen warnings and erroneous comments
|
||||||
|
|
||||||
|
|
||||||
2010-Dec-19 UPDATE Dick Hollenbeck <dick@softplc.com>
|
2010-Dec-19 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
================================================================================
|
================================================================================
|
||||||
++new:
|
++new:
|
||||||
|
|
|
@ -315,7 +315,7 @@ bool EDA_TextStruct::TextHitTest( const wxPoint& aPoint, int aAccuracy ) const
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
RotatePoint( &location, m_Pos, -m_Orient );
|
RotatePoint( &location, m_Pos, -m_Orient );
|
||||||
|
|
||||||
return rect.Inside( location );
|
return rect.Contains( location );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -326,7 +326,7 @@ bool EDA_TextStruct::TextHitTest( const EDA_Rect& aRect, bool aContains, int aAc
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContains )
|
if( aContains )
|
||||||
return rect.Inside( GetTextBox( -1 ) );
|
return rect.Contains( GetTextBox( -1 ) );
|
||||||
|
|
||||||
return rect.Intersects( GetTextBox( -1 ) );
|
return rect.Intersects( GetTextBox( -1 ) );
|
||||||
}
|
}
|
||||||
|
@ -515,48 +515,59 @@ void EDA_Rect::Move( const wxPoint& aMoveVector )
|
||||||
/* Return TRUE if point is in Rect
|
/* Return TRUE if point is in Rect
|
||||||
* Accept rect size < 0
|
* Accept rect size < 0
|
||||||
*/
|
*/
|
||||||
bool EDA_Rect::Inside( const wxPoint& point ) const
|
bool EDA_Rect::Contains( const wxPoint& aPoint ) const
|
||||||
{
|
{
|
||||||
int rel_posx = point.x - m_Pos.x;
|
wxPoint rel_pos = aPoint - m_Pos;
|
||||||
int rel_posy = point.y - m_Pos.y;
|
|
||||||
wxSize size = m_Size;
|
wxSize size = m_Size;
|
||||||
|
|
||||||
if( size.x < 0 )
|
if( size.x < 0 )
|
||||||
{
|
{
|
||||||
size.x = -size.x;
|
size.x = -size.x;
|
||||||
rel_posx += size.x;
|
rel_pos.x += size.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( size.y < 0 )
|
if( size.y < 0 )
|
||||||
{
|
{
|
||||||
size.y = -size.y;
|
size.y = -size.y;
|
||||||
rel_posy += size.y;
|
rel_pos.y += size.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (rel_posx >= 0) && (rel_posy >= 0) && ( rel_posy <= size.y) && ( rel_posx <= size.x);
|
return (rel_pos.x >= 0) && (rel_pos.y >= 0) && ( rel_pos.y <= size.y) && ( rel_pos.x <= size.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
bool EDA_Rect::Inside( const EDA_Rect& aRect ) const
|
* return true if aRect is inside me (or on boundaries)
|
||||||
|
*/
|
||||||
|
bool EDA_Rect::Contains( const EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
wxRect rect = aRect;
|
return Contains(aRect.GetOrigin() ) && Contains(aRect.GetEnd() );
|
||||||
wxRect me = wxRect();
|
|
||||||
|
|
||||||
return me.Contains( rect );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool EDA_Rect::Intersects( const EDA_Rect aRect ) const
|
/* Intersects
|
||||||
|
* test for a common area between 2 rect.
|
||||||
|
* return true if at least a common point is found
|
||||||
|
*/
|
||||||
|
bool EDA_Rect::Intersects( const EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
// this logic taken from wxWidgets' geometry.cpp file:
|
// this logic taken from wxWidgets' geometry.cpp file:
|
||||||
bool rc;
|
bool rc;
|
||||||
|
EDA_Rect me(*this);
|
||||||
|
EDA_Rect rect(aRect);
|
||||||
|
me.Normalize(); // ensure size is >= 0
|
||||||
|
rect.Normalize(); // ensure size is >= 0
|
||||||
|
|
||||||
int left = MAX( m_Pos.x, aRect.m_Pos.x );
|
// calculate the left common area coordinate:
|
||||||
int right = MIN( m_Pos.x + m_Size.x, aRect.m_Pos.x + aRect.m_Size.x );
|
int left = MAX( me.m_Pos.x, rect.m_Pos.x );
|
||||||
int top = MAX( m_Pos.y, aRect.m_Pos.y );
|
// calculate the right common area coordinate:
|
||||||
int bottom = MIN( m_Pos.y + m_Size.y, aRect.m_Pos.y + aRect.m_Size.y );
|
int right = MIN( me.m_Pos.x + m_Size.x, rect.m_Pos.x + rect.m_Size.x );
|
||||||
|
// calculate the upper common area coordinate:
|
||||||
|
int top = MAX( me.m_Pos.y, aRect.m_Pos.y );
|
||||||
|
// calculate the lower common area coordinate:
|
||||||
|
int bottom = MIN( me.m_Pos.y + m_Size.y, rect.m_Pos.y + rect.m_Size.y );
|
||||||
|
|
||||||
if( left < right && top < bottom )
|
// if a common area exists, it must have a positive (null accepted) size
|
||||||
|
if( left <= right && top <= bottom )
|
||||||
rc = true;
|
rc = true;
|
||||||
else
|
else
|
||||||
rc = false;
|
rc = false;
|
||||||
|
|
|
@ -118,7 +118,7 @@ bool MARKER_BASE::HitTestMarker( const wxPoint& refPos ) const
|
||||||
rel_pos.x /= m_ScalingFactor;
|
rel_pos.x /= m_ScalingFactor;
|
||||||
rel_pos.y /= m_ScalingFactor;
|
rel_pos.y /= m_ScalingFactor;
|
||||||
|
|
||||||
return m_ShapeBoundingBox.Inside( rel_pos );
|
return m_ShapeBoundingBox.Contains( rel_pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -251,7 +251,7 @@ bool WinEDA_DrawPanel::IsPointOnDisplay( wxPoint ref_pos )
|
||||||
GetScreen()->Unscale( display_rect.m_Size );
|
GetScreen()->Unscale( display_rect.m_Size );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return display_rect.Inside( ref_pos );
|
return display_rect.Contains( ref_pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -188,7 +188,7 @@ int GRMapY( int y )
|
||||||
*/
|
*/
|
||||||
static bool clipLine( EDA_Rect* aClipBox, int& x1, int& y1, int& x2, int& y2 )
|
static bool clipLine( EDA_Rect* aClipBox, int& x1, int& y1, int& x2, int& y2 )
|
||||||
{
|
{
|
||||||
if( aClipBox->Inside( x1, y1 ) && aClipBox->Inside( x2, y2 ) )
|
if( aClipBox->Contains( x1, y1 ) && aClipBox->Contains( x2, y2 ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
wxRect rect = *aClipBox;
|
wxRect rect = *aClipBox;
|
||||||
|
@ -206,7 +206,7 @@ static bool clipLine( EDA_Rect* aClipBox, int& x1, int& y1, int& x2, int& y2 )
|
||||||
tmpY2 = y2;
|
tmpY2 = y2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if( aClipBox->Inside( x1, y1 ) )
|
if( aClipBox->Contains( x1, y1 ) )
|
||||||
{
|
{
|
||||||
if( x1 == x2 ) /* Vertical line, clip Y. */
|
if( x1 == x2 ) /* Vertical line, clip Y. */
|
||||||
{
|
{
|
||||||
|
@ -263,7 +263,7 @@ static bool clipLine( EDA_Rect* aClipBox, int& x1, int& y1, int& x2, int& y2 )
|
||||||
#endif
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if( aClipBox->Inside( x2, y2 ) )
|
else if( aClipBox->Contains( x2, y2 ) )
|
||||||
{
|
{
|
||||||
if( x1 == x2 ) /* Vertical line, clip Y. */
|
if( x1 == x2 ) /* Vertical line, clip Y. */
|
||||||
{
|
{
|
||||||
|
@ -704,7 +704,7 @@ void GRPutPixel( EDA_Rect* ClipBox, wxDC* DC, int x, int y, int Color )
|
||||||
|
|
||||||
void GRSPutPixel( EDA_Rect* ClipBox, wxDC* DC, int x, int y, int Color )
|
void GRSPutPixel( EDA_Rect* ClipBox, wxDC* DC, int x, int y, int Color )
|
||||||
{
|
{
|
||||||
if( ClipBox && !ClipBox->Inside( x, y ) )
|
if( ClipBox && !ClipBox->Contains( x, y ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
GRSetColorPen( DC, Color );
|
GRSetColorPen( DC, Color );
|
||||||
|
|
|
@ -170,15 +170,14 @@ wxString ReturnKeyNameFromKeyCode( int aKeycode, bool* aIsFound )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* AddHotkeyName
|
||||||
* Function AddHotkeyName
|
|
||||||
* Add the key name from the Command id value ( m_Idcommand member value)
|
* Add the key name from the Command id value ( m_Idcommand member value)
|
||||||
* @param aText = a wxString. returns aText + key name
|
* aText = a wxString. returns aText + key name
|
||||||
* @param aList = pointer to a Ki_HotkeyInfo list of commands
|
* aList = pointer to a Ki_HotkeyInfo list of commands
|
||||||
* @param aCommandId = Command Id value
|
* aCommandId = Command Id value
|
||||||
* @param aIsShortCut = true to add <tab><keyname> (active shortcuts in menus)
|
* aIsShortCut = true to add <tab><keyname> (active shortcuts in menus)
|
||||||
* = false to add <spaces><(keyname)>
|
* = false to add <spaces><(keyname)>
|
||||||
* @return a wxString (aTest + key name) if key found or aText without modification
|
* Return a wxString (aTest + key name) if key found or aText without modification
|
||||||
*/
|
*/
|
||||||
wxString AddHotkeyName( const wxString& aText, Ki_HotkeyInfo** aList,
|
wxString AddHotkeyName( const wxString& aText, Ki_HotkeyInfo** aList,
|
||||||
int aCommandId, bool aIsShortCut )
|
int aCommandId, bool aIsShortCut )
|
||||||
|
@ -200,15 +199,14 @@ wxString AddHotkeyName( const wxString& aText, Ki_HotkeyInfo** aList,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* AddHotkeyName
|
||||||
* Function AddHotkeyName
|
|
||||||
* Add the key name from the Command id value ( m_Idcommand member value)
|
* Add the key name from the Command id value ( m_Idcommand member value)
|
||||||
* @param aText = a wxString. returns aText + key name
|
* aText = a wxString. returns aText + key name
|
||||||
* @param aList = pointer to a Ki_HotkeyInfoSectionDescriptor DescrList of commands
|
* aList = pointer to a Ki_HotkeyInfoSectionDescriptor DescrList of commands
|
||||||
* @param aCommandId = Command Id value
|
* aCommandId = Command Id value
|
||||||
* @param aIsShortCut = true to add <tab><keyname> (active shortcuts in menus)
|
* aIsShortCut = true to add <tab><keyname> (active shortcuts in menus)
|
||||||
* = false to add <spaces><(keyname)>
|
* = false to add <spaces><(keyname)>
|
||||||
* @return a wxString (aTest + key name) if key found or aText without modification
|
* Return a wxString (aText + key name) if key found or aText without modification
|
||||||
*/
|
*/
|
||||||
wxString AddHotkeyName( const wxString& aText,
|
wxString AddHotkeyName( const wxString& aText,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* aDescList,
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList,
|
||||||
|
@ -325,13 +323,9 @@ int ReturnKeyCodeFromKeyName( const wxString& keyname )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* DisplayHotkeyList
|
||||||
* Function DisplayHotkeyList
|
|
||||||
* Displays the current hotkey list
|
* Displays the current hotkey list
|
||||||
* @param aFrame = current active frame
|
* aList = a Ki_HotkeyInfoSectionDescriptor list(Null terminated)
|
||||||
* @param aList = pointer to a Ki_HotkeyInfoSectionDescriptor list
|
|
||||||
*(Null terminated)
|
|
||||||
* @return none
|
|
||||||
*/
|
*/
|
||||||
void DisplayHotkeyList( WinEDA_DrawFrame* aFrame,
|
void DisplayHotkeyList( WinEDA_DrawFrame* aFrame,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
||||||
|
@ -478,7 +472,6 @@ int WinEDA_BasicFrame::ReadHotkeyConfigFile(
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ReadHotkeyConfig( const wxString& Appname,
|
void ReadHotkeyConfig( const wxString& Appname,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
||||||
{
|
{
|
||||||
|
@ -496,11 +489,9 @@ void ReadHotkeyConfig( const wxString& Appname,
|
||||||
ParseHotkeyConfig( data, aDescList );
|
ParseHotkeyConfig( data, aDescList );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Function ReadHotkeyConfig
|
||||||
/**
|
|
||||||
* Function ReadHotkeyConfig
|
|
||||||
* Read configuration data and fill the current hotkey list with hotkeys
|
* Read configuration data and fill the current hotkey list with hotkeys
|
||||||
* @param aDescList = current hotkey list descr. to initialise.
|
* aDescList is the current hotkey list descr. to initialise.
|
||||||
*/
|
*/
|
||||||
int WinEDA_BasicFrame::ReadHotkeyConfig( struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
int WinEDA_BasicFrame::ReadHotkeyConfig( struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
||||||
{
|
{
|
||||||
|
@ -509,16 +500,14 @@ int WinEDA_BasicFrame::ReadHotkeyConfig( struct Ki_HotkeyInfoSectionDescriptor*
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* Function ParseHotkeyConfig
|
||||||
* Function ParseHotkeyConfig
|
|
||||||
* the input format is: shortcut "key" "function"
|
* the input format is: shortcut "key" "function"
|
||||||
* lines starting by # are ignored (comments)
|
* lines starting by # are ignored (comments)
|
||||||
* lines like [xxx] are tags (example: [common] or [libedit] which identify
|
* lines like [xxx] are tags (example: [common] or [libedit] which identify sections
|
||||||
* sections
|
|
||||||
*/
|
*/
|
||||||
void ParseHotkeyConfig(
|
void ParseHotkeyConfig(
|
||||||
const wxString& data,
|
const wxString& data,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* DescList )
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList )
|
||||||
{
|
{
|
||||||
/* Read the config */
|
/* Read the config */
|
||||||
wxStringTokenizer tokenizer( data, L"\r\n", wxTOKEN_STRTOK );
|
wxStringTokenizer tokenizer( data, L"\r\n", wxTOKEN_STRTOK );
|
||||||
|
@ -536,7 +525,7 @@ void ParseHotkeyConfig(
|
||||||
if( line_type[0] == '[' ) // A tag is found. search infos in list
|
if( line_type[0] == '[' ) // A tag is found. search infos in list
|
||||||
{
|
{
|
||||||
CurrentHotkeyList = 0;
|
CurrentHotkeyList = 0;
|
||||||
Ki_HotkeyInfoSectionDescriptor* DList = DescList;
|
Ki_HotkeyInfoSectionDescriptor* DList = aDescList;
|
||||||
for( ; DList->m_HK_InfoList; DList++ )
|
for( ; DList->m_HK_InfoList; DList++ )
|
||||||
{
|
{
|
||||||
if( *DList->m_SectionTag == line_type )
|
if( *DList->m_SectionTag == line_type )
|
||||||
|
@ -639,8 +628,7 @@ void WinEDA_BasicFrame::ExportHotkeyConfigToFile(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** add hotkey config options submenu to a menu
|
/* add hotkey config options submenu to aMenu
|
||||||
* @param menu : root menu
|
|
||||||
*/
|
*/
|
||||||
void AddHotkeyConfigMenu( wxMenu* aMenu )
|
void AddHotkeyConfigMenu( wxMenu* aMenu )
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,9 +37,9 @@ void DuplicateItemsInList( SCH_SCREEN* screen,
|
||||||
|
|
||||||
static void CollectStructsToDrag( SCH_SCREEN* screen );
|
static void CollectStructsToDrag( SCH_SCREEN* screen );
|
||||||
static void AddPickedItem( SCH_SCREEN* screen, wxPoint aPosition );
|
static void AddPickedItem( SCH_SCREEN* screen, wxPoint aPosition );
|
||||||
static LIB_PIN* GetNextPinPosition( SCH_COMPONENT* aDrawLibItem,
|
static LIB_PIN* GetNextPinPosition( SCH_COMPONENT* aComponent,
|
||||||
wxPoint& aPosition,
|
wxPoint& aPosition,
|
||||||
bool aSearchFirst );
|
LIB_PIN* aPin );
|
||||||
static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
static void DrawMovingBlockOutlines( WinEDA_DrawPanel* panel, wxDC* DC, bool erase );
|
||||||
static void SaveStructListForPaste( PICKED_ITEMS_LIST& aItemsList );
|
static void SaveStructListForPaste( PICKED_ITEMS_LIST& aItemsList );
|
||||||
|
|
||||||
|
@ -226,6 +226,7 @@ bool SCH_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
|
||||||
}
|
}
|
||||||
|
|
||||||
if( DrawPanel->ManageCurseur != NULL )
|
if( DrawPanel->ManageCurseur != NULL )
|
||||||
|
{
|
||||||
switch( block->m_Command )
|
switch( block->m_Command )
|
||||||
{
|
{
|
||||||
case BLOCK_IDLE:
|
case BLOCK_IDLE:
|
||||||
|
@ -234,14 +235,14 @@ bool SCH_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
|
||||||
|
|
||||||
case BLOCK_DRAG: /* Drag */
|
case BLOCK_DRAG: /* Drag */
|
||||||
BreakSegmentOnJunction( GetScreen() );
|
BreakSegmentOnJunction( GetScreen() );
|
||||||
|
// fall through
|
||||||
case BLOCK_ROTATE:
|
case BLOCK_ROTATE:
|
||||||
case BLOCK_MIRROR_X:
|
case BLOCK_MIRROR_X:
|
||||||
case BLOCK_MIRROR_Y:
|
case BLOCK_MIRROR_Y:
|
||||||
case BLOCK_MOVE: /* Move */
|
case BLOCK_MOVE: /* Move */
|
||||||
case BLOCK_COPY: /* Copy */
|
case BLOCK_COPY: /* Copy */
|
||||||
PickItemsInBlock( GetScreen()->m_BlockLocate, GetScreen() );
|
PickItemsInBlock( GetScreen()->m_BlockLocate, GetScreen() );
|
||||||
|
// fall through
|
||||||
case BLOCK_PRESELECT_MOVE: /* Move with preselection list*/
|
case BLOCK_PRESELECT_MOVE: /* Move with preselection list*/
|
||||||
if( block->GetCount() )
|
if( block->GetCount() )
|
||||||
{
|
{
|
||||||
|
@ -301,6 +302,7 @@ bool SCH_EDIT_FRAME::HandleBlockEnd( wxDC* DC )
|
||||||
case BLOCK_ABORT: /* not executed here */
|
case BLOCK_ABORT: /* not executed here */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if( block->m_Command == BLOCK_ABORT )
|
if( block->m_Command == BLOCK_ABORT )
|
||||||
{
|
{
|
||||||
|
@ -595,7 +597,8 @@ void SCH_EDIT_FRAME::PasteListOfItems( wxDC* DC )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* creates the list of items found when a drag block is initiated.
|
/* Set in m_BlockLocate.m_ItemsSelection items members .m_Flags to SELECTED
|
||||||
|
* Creates the list of items found when a drag block is initiated.
|
||||||
* items are those selected in window block an some items outside this area but
|
* items are those selected in window block an some items outside this area but
|
||||||
* connected to a selected item (connected wires to a component or an entry )
|
* connected to a selected item (connected wires to a component or an entry )
|
||||||
*/
|
*/
|
||||||
|
@ -624,14 +627,14 @@ static void CollectStructsToDrag( SCH_SCREEN* screen )
|
||||||
/* Remove the displacement of segment and undo the selection. */
|
/* Remove the displacement of segment and undo the selection. */
|
||||||
for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ )
|
for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ )
|
||||||
{
|
{
|
||||||
Struct = (SCH_ITEM*)(SCH_ITEM*) pickedlist->GetPickedItem( ii );
|
Struct = (SCH_ITEM*)pickedlist->GetPickedItem( ii );
|
||||||
if( Struct->Type() == SCH_LINE_T )
|
if( Struct->Type() == SCH_LINE_T )
|
||||||
{
|
{
|
||||||
SegmStruct = (SCH_LINE*) Struct;
|
SegmStruct = (SCH_LINE*) Struct;
|
||||||
if( !screen->m_BlockLocate.Inside( SegmStruct->m_Start ) )
|
if( !screen->m_BlockLocate.Contains( SegmStruct->m_Start ) )
|
||||||
SegmStruct->m_Flags |= STARTPOINT;
|
SegmStruct->m_Flags |= STARTPOINT;
|
||||||
|
|
||||||
if( !screen->m_BlockLocate.Inside( SegmStruct->m_End ) )
|
if( !screen->m_BlockLocate.Contains( SegmStruct->m_End ) )
|
||||||
SegmStruct->m_Flags |= ENDPOINT;
|
SegmStruct->m_Flags |= ENDPOINT;
|
||||||
|
|
||||||
// Save m_Flags for Undo/redo drag operations:
|
// Save m_Flags for Undo/redo drag operations:
|
||||||
|
@ -642,17 +645,16 @@ static void CollectStructsToDrag( SCH_SCREEN* screen )
|
||||||
/* Search for other items to drag. They are end wires connected to selected
|
/* Search for other items to drag. They are end wires connected to selected
|
||||||
* items
|
* items
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ )
|
for( unsigned ii = 0; ii < pickedlist->GetCount(); ii++ )
|
||||||
{
|
{
|
||||||
Struct = (SCH_ITEM*)(SCH_ITEM*) pickedlist->GetPickedItem( ii );
|
Struct = (SCH_ITEM*)pickedlist->GetPickedItem( ii );
|
||||||
if( ( Struct->Type() == SCH_LABEL_T )
|
if( ( Struct->Type() == SCH_LABEL_T )
|
||||||
|| ( Struct->Type() == SCH_GLOBAL_LABEL_T )
|
|| ( Struct->Type() == SCH_GLOBAL_LABEL_T )
|
||||||
|| ( Struct->Type() == SCH_HIERARCHICAL_LABEL_T ) )
|
|| ( Struct->Type() == SCH_HIERARCHICAL_LABEL_T ) )
|
||||||
{
|
{
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#define STRUCT ( (SCH_TEXT*) Struct )
|
#define STRUCT ( (SCH_TEXT*) Struct )
|
||||||
if( !screen->m_BlockLocate.Inside( STRUCT->m_Pos ) )
|
if( !screen->m_BlockLocate.Contains( STRUCT->m_Pos ) )
|
||||||
{
|
{
|
||||||
AddPickedItem( screen, STRUCT->m_Pos );
|
AddPickedItem( screen, STRUCT->m_Pos );
|
||||||
}
|
}
|
||||||
|
@ -661,20 +663,20 @@ static void CollectStructsToDrag( SCH_SCREEN* screen )
|
||||||
if( Struct->Type() == SCH_COMPONENT_T )
|
if( Struct->Type() == SCH_COMPONENT_T )
|
||||||
{
|
{
|
||||||
// Add all pins of the selected component to list
|
// Add all pins of the selected component to list
|
||||||
LIB_PIN* pin;
|
|
||||||
wxPoint pos;
|
wxPoint pos;
|
||||||
pin = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos, true );
|
LIB_PIN* pin = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos, NULL );
|
||||||
while( pin )
|
while( pin )
|
||||||
{
|
{
|
||||||
if( !screen->m_BlockLocate.Inside( pos ) )
|
if( !screen->m_BlockLocate.Contains( pos ) )
|
||||||
{
|
{
|
||||||
// This pin is outside area,
|
// This pin is outside area,
|
||||||
// but because it it the pin of a selected component
|
// but because it is a pin of a selected component
|
||||||
// we must also select connected items to this pin
|
// we must also select connected items to this pin
|
||||||
|
// and mainly wires
|
||||||
AddPickedItem( screen, pos );
|
AddPickedItem( screen, pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
pin = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos, false );
|
pin = GetNextPinPosition( (SCH_COMPONENT*) Struct, pos, pin );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -774,7 +776,6 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
||||||
{
|
{
|
||||||
Struct->m_Flags = SELECTED | ENDPOINT | STARTPOINT;
|
Struct->m_Flags = SELECTED | ENDPOINT | STARTPOINT;
|
||||||
Struct->m_Flags &= ~STARTPOINT;
|
Struct->m_Flags &= ~STARTPOINT;
|
||||||
|
|
||||||
// Save m_Flags for Undo/redo drag operations:
|
// Save m_Flags for Undo/redo drag operations:
|
||||||
picker.m_PickerFlags = Struct->m_Flags;
|
picker.m_PickerFlags = Struct->m_Flags;
|
||||||
pickedlist->PushItem( picker );
|
pickedlist->PushItem( picker );
|
||||||
|
@ -783,7 +784,6 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
||||||
{
|
{
|
||||||
Struct->m_Flags = SELECTED | ENDPOINT | STARTPOINT;
|
Struct->m_Flags = SELECTED | ENDPOINT | STARTPOINT;
|
||||||
Struct->m_Flags &= ~ENDPOINT;
|
Struct->m_Flags &= ~ENDPOINT;
|
||||||
|
|
||||||
// Save m_Flags for Undo/redo drag operations:
|
// Save m_Flags for Undo/redo drag operations:
|
||||||
picker.m_PickerFlags = Struct->m_Flags;
|
picker.m_PickerFlags = Struct->m_Flags;
|
||||||
pickedlist->PushItem( picker );
|
pickedlist->PushItem( picker );
|
||||||
|
@ -856,53 +856,45 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
||||||
|
|
||||||
/** GetNextPinPosition()
|
/** GetNextPinPosition()
|
||||||
* calculate position of the "next" pin of the aDrawLibItem component
|
* calculate position of the "next" pin of the aDrawLibItem component
|
||||||
* @param aDrawLibItem = component to test.
|
* @param aComponent = component to test.
|
||||||
* @param aPosition = the calculated pin position, according to the component
|
* @param aPosition = the calculated pin position, according to the component
|
||||||
* orientation and position
|
* orientation and position
|
||||||
* @param aSearchFirst = if true, search for the first pin
|
* @param aSearchFirst = if true, search for the first pin
|
||||||
* @return a pointer to the pin
|
* @return a pointer to the pin
|
||||||
*/
|
*/
|
||||||
static LIB_PIN* GetNextPinPosition( SCH_COMPONENT* aDrawLibItem,
|
static LIB_PIN* GetNextPinPosition( SCH_COMPONENT* aComponent,
|
||||||
wxPoint& aPosition,
|
wxPoint& aPosition,
|
||||||
bool aSearchFirst )
|
LIB_PIN* aPin )
|
||||||
{
|
{
|
||||||
static LIB_COMPONENT* Entry;
|
static LIB_COMPONENT* Entry;
|
||||||
static int Multi, convert;
|
|
||||||
TRANSFORM transform;
|
|
||||||
static wxPoint CmpPosition;
|
|
||||||
static LIB_PIN* Pin;
|
|
||||||
|
|
||||||
if( aSearchFirst )
|
if( aPin == NULL )
|
||||||
{
|
{
|
||||||
Entry = CMP_LIBRARY::FindLibraryComponent( aDrawLibItem->GetLibName() );
|
Entry = CMP_LIBRARY::FindLibraryComponent( aComponent->GetLibName() );
|
||||||
|
|
||||||
if( Entry == NULL )
|
if( Entry == NULL )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
Pin = Entry->GetNextPin();
|
|
||||||
Multi = aDrawLibItem->GetUnit();
|
|
||||||
convert = aDrawLibItem->GetConvert();
|
|
||||||
CmpPosition = aDrawLibItem->m_Pos;
|
|
||||||
transform = aDrawLibItem->GetTransform();
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
Pin = Entry->GetNextPin( Pin );
|
|
||||||
|
|
||||||
for( ; Pin != NULL; Pin = Entry->GetNextPin( Pin ) )
|
aPin = Entry->GetNextPin( aPin );
|
||||||
|
|
||||||
|
int multi = aComponent->GetUnit();
|
||||||
|
int convert = aComponent->GetConvert();
|
||||||
|
for( ; aPin != NULL; aPin = Entry->GetNextPin( aPin ) )
|
||||||
{
|
{
|
||||||
wxASSERT( Pin->Type() == LIB_PIN_T );
|
wxASSERT( aPin->Type() == LIB_PIN_T );
|
||||||
|
|
||||||
/* Skip items not used for this part */
|
/* Skip items not used for this part */
|
||||||
if( Multi && Pin->GetUnit() && ( Pin->GetUnit() != Multi ) )
|
if( multi && aPin->GetUnit() && ( aPin->GetUnit() != multi ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if( convert && Pin->GetConvert() && ( Pin->GetConvert() != convert ) )
|
if( convert && aPin->GetConvert() && ( aPin->GetConvert() != convert ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Calculate the pin position (according to the component orientation)
|
/* Calculate the pin position (according to the component orientation)
|
||||||
*/
|
*/
|
||||||
aPosition = DefaultTransform.TransformCoordinate( Pin->GetPosition() ) + CmpPosition;
|
aPosition = aComponent->GetPinPhysicalPosition( aPin );
|
||||||
return Pin;
|
return aPin;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -748,7 +748,12 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* DC, int hotkey, EDA_ITEM* DrawStruct )
|
||||||
|
|
||||||
case SCH_LINE_T:
|
case SCH_LINE_T:
|
||||||
if( ( (SCH_ITEM*) DrawStruct )->GetLayer() == LAYER_WIRE )
|
if( ( (SCH_ITEM*) DrawStruct )->GetLayer() == LAYER_WIRE )
|
||||||
wxPostEvent( this, eventDragWire );
|
{
|
||||||
|
if( HK_Descr->m_Idcommand == HK_DRAG )
|
||||||
|
wxPostEvent( this, eventDragWire );
|
||||||
|
else
|
||||||
|
wxPostEvent( this, eventMoveItem );
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -263,8 +263,8 @@ void LIB_ARC::DoOffset( const wxPoint& aOffset )
|
||||||
|
|
||||||
bool LIB_ARC::DoTestInside( EDA_Rect& aRect ) const
|
bool LIB_ARC::DoTestInside( EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
return aRect.Inside( m_ArcStart.x, -m_ArcStart.y )
|
return aRect.Contains( m_ArcStart.x, -m_ArcStart.y )
|
||||||
|| aRect.Inside( m_ArcEnd.x, -m_ArcEnd.y );
|
|| aRect.Contains( m_ArcEnd.x, -m_ArcEnd.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,7 @@ bool LIB_BEZIER::DoTestInside( EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
for( size_t i = 0; i < m_PolyPoints.size(); i++ )
|
for( size_t i = 0; i < m_PolyPoints.size(); i++ )
|
||||||
{
|
{
|
||||||
if( aRect.Inside( m_PolyPoints[i].x, -m_PolyPoints[i].y ) )
|
if( aRect.Contains( m_PolyPoints[i].x, -m_PolyPoints[i].y ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -152,7 +152,7 @@ bool LIB_CIRCLE::DoTestInside( EDA_Rect& aRect ) const
|
||||||
* FIXME: This fails to take into account the radius around the center
|
* FIXME: This fails to take into account the radius around the center
|
||||||
* point.
|
* point.
|
||||||
*/
|
*/
|
||||||
return aRect.Inside( m_Pos.x, -m_Pos.y );
|
return aRect.Contains( m_Pos.x, -m_Pos.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -466,7 +466,7 @@ bool LIB_FIELD::DoTestInside( EDA_Rect& rect ) const
|
||||||
* FIXME: This fails to take into acount the size and/or orientation of
|
* FIXME: This fails to take into acount the size and/or orientation of
|
||||||
* the text.
|
* the text.
|
||||||
*/
|
*/
|
||||||
return rect.Inside( m_Pos.x, -m_Pos.y );
|
return rect.Contains( m_Pos.x, -m_Pos.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1653,7 +1653,7 @@ bool LIB_PIN::DoTestInside( EDA_Rect& rect ) const
|
||||||
{
|
{
|
||||||
wxPoint end = ReturnPinEndPoint();
|
wxPoint end = ReturnPinEndPoint();
|
||||||
|
|
||||||
return rect.Inside( m_position.x, -m_position.y ) || rect.Inside( end.x, -end.y );
|
return rect.Contains( m_position.x, -m_position.y ) || rect.Contains( end.x, -end.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -162,7 +162,7 @@ bool LIB_POLYLINE::DoTestInside( EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
for( size_t i = 0; i < m_PolyPoints.size(); i++ )
|
for( size_t i = 0; i < m_PolyPoints.size(); i++ )
|
||||||
{
|
{
|
||||||
if( aRect.Inside( m_PolyPoints[i].x, -m_PolyPoints[i].y ) )
|
if( aRect.Contains( m_PolyPoints[i].x, -m_PolyPoints[i].y ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,7 @@ void LIB_RECTANGLE::DoOffset( const wxPoint& aOffset )
|
||||||
|
|
||||||
bool LIB_RECTANGLE::DoTestInside( EDA_Rect& aRect ) const
|
bool LIB_RECTANGLE::DoTestInside( EDA_Rect& aRect ) const
|
||||||
{
|
{
|
||||||
return aRect.Inside( m_Pos.x, -m_Pos.y ) || aRect.Inside( m_End.x, -m_End.y );
|
return aRect.Contains( m_Pos.x, -m_Pos.y ) || aRect.Contains( m_End.x, -m_End.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -223,7 +223,7 @@ bool LIB_TEXT::DoTestInside( EDA_Rect& rect ) const
|
||||||
* FIXME: This should calculate the text size and justification and
|
* FIXME: This should calculate the text size and justification and
|
||||||
* use rectangle instect.
|
* use rectangle instect.
|
||||||
*/
|
*/
|
||||||
return rect.Inside( m_Pos.x, -m_Pos.y );
|
return rect.Contains( m_Pos.x, -m_Pos.y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -139,6 +139,7 @@ int PickItemsInBlock( BLOCK_SELECTOR& aBlock, SCH_SCREEN* aScreen )
|
||||||
|
|
||||||
for( ; item != NULL; item = item->Next() )
|
for( ; item != NULL; item = item->Next() )
|
||||||
{
|
{
|
||||||
|
// an item is picked if its bounding box intersects the reference area
|
||||||
if( item->HitTest( area ) )
|
if( item->HitTest( area ) )
|
||||||
{
|
{
|
||||||
/* Put this structure in the picked list: */
|
/* Put this structure in the picked list: */
|
||||||
|
@ -310,7 +311,7 @@ bool SnapPoint2( const wxPoint& aPosRef, int SearchMask, SCH_ITEM* DrawList )
|
||||||
|
|
||||||
EDA_Rect BoundaryBox = field->GetBoundingBox();
|
EDA_Rect BoundaryBox = field->GetBoundingBox();
|
||||||
|
|
||||||
if( BoundaryBox.Inside( aPosRef ) )
|
if( BoundaryBox.Contains( aPosRef ) )
|
||||||
{
|
{
|
||||||
LastSnappedStruct = field;
|
LastSnappedStruct = field;
|
||||||
return true;
|
return true;
|
||||||
|
@ -323,7 +324,7 @@ bool SnapPoint2( const wxPoint& aPosRef, int SearchMask, SCH_ITEM* DrawList )
|
||||||
#define STRUCT ( (SCH_COMPONENT*) DrawList )
|
#define STRUCT ( (SCH_COMPONENT*) DrawList )
|
||||||
EDA_Rect BoundaryBox = STRUCT->GetBoundingBox();
|
EDA_Rect BoundaryBox = STRUCT->GetBoundingBox();
|
||||||
|
|
||||||
if( BoundaryBox.Inside( aPosRef ) )
|
if( BoundaryBox.Contains( aPosRef ) )
|
||||||
{
|
{
|
||||||
LastSnappedStruct = DrawList;
|
LastSnappedStruct = DrawList;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1664,7 +1664,7 @@ bool SCH_COMPONENT::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_
|
||||||
bBox = GetField( ii )->GetBoundingBox();
|
bBox = GetField( ii )->GetBoundingBox();
|
||||||
bBox.Inflate( aAccuracy );
|
bBox.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( bBox.Inside( aPoint ) )
|
if( bBox.Contains( aPoint ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1674,7 +1674,7 @@ bool SCH_COMPONENT::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_
|
||||||
bBox = GetBodyBoundingBox();
|
bBox = GetBodyBoundingBox();
|
||||||
bBox.Inflate( aAccuracy );
|
bBox.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( bBox.Inside( aPoint ) )
|
if( bBox.Contains( aPoint ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1689,7 +1689,7 @@ bool SCH_COMPONENT::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccu
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -469,7 +469,7 @@ bool SCH_FIELD::DoHitTest( const wxPoint& aPoint, int aAccuracy ) const
|
||||||
|
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
return rect.Inside( aPoint );
|
return rect.Contains( aPoint );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -484,7 +484,7 @@ bool SCH_FIELD::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -262,7 +262,7 @@ bool SCH_BUS_ENTRY::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccu
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
@ -433,7 +433,7 @@ bool SCH_JUNCTION::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T
|
||||||
|
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
return rect.Inside( aPoint );
|
return rect.Contains( aPoint );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -444,7 +444,7 @@ bool SCH_JUNCTION::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccur
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
@ -628,7 +628,7 @@ bool SCH_NO_CONNECT::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAcc
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
@ -1048,7 +1048,7 @@ bool SCH_LINE::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
@ -1278,7 +1278,7 @@ bool SCH_POLYLINE::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccur
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -1145,7 +1145,7 @@ bool SCH_SHEET::DoHitTest( const wxPoint& aPoint, int aAccuracy, SCH_FILTER_T aF
|
||||||
|
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
return rect.Inside( aPoint );
|
return rect.Contains( aPoint );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1156,7 +1156,7 @@ bool SCH_SHEET::DoHitTest( const EDA_Rect& aRect, bool aContained, int aAccuracy
|
||||||
rect.Inflate( aAccuracy );
|
rect.Inflate( aAccuracy );
|
||||||
|
|
||||||
if( aContained )
|
if( aContained )
|
||||||
return rect.Inside( GetBoundingBox() );
|
return rect.Contains( GetBoundingBox() );
|
||||||
|
|
||||||
return rect.Intersects( GetBoundingBox() );
|
return rect.Intersects( GetBoundingBox() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -454,7 +454,6 @@ void SCH_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
|
|
||||||
case ID_POPUP_SCH_DRAG_WIRE_REQUEST:
|
case ID_POPUP_SCH_DRAG_WIRE_REQUEST:
|
||||||
DrawPanel->MouseToCursorSchema();
|
DrawPanel->MouseToCursorSchema();
|
||||||
|
|
||||||
// The easiest way to handle a drag component is to simulate a
|
// The easiest way to handle a drag component is to simulate a
|
||||||
// block drag command
|
// block drag command
|
||||||
if( screen->m_BlockLocate.m_State == STATE_NO_BLOCK )
|
if( screen->m_BlockLocate.m_State == STATE_NO_BLOCK )
|
||||||
|
@ -472,13 +471,12 @@ void SCH_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
// TODO: a better way to drag only wires
|
// TODO: a better way to drag only wires
|
||||||
SCH_LINE* segm = (SCH_LINE*) screen->GetCurItem();
|
SCH_LINE* segm = (SCH_LINE*) screen->GetCurItem();
|
||||||
|
|
||||||
if( !screen->m_BlockLocate.Inside( segm->m_Start )
|
if( !screen->m_BlockLocate.Contains( segm->m_Start )
|
||||||
&& !screen->m_BlockLocate.Inside( segm->m_End ) )
|
&& !screen->m_BlockLocate.Contains( segm->m_End ) )
|
||||||
{
|
{
|
||||||
screen->m_BlockLocate.SetOrigin( segm->m_Start );
|
screen->m_BlockLocate.SetOrigin( segm->m_Start );
|
||||||
screen->m_BlockLocate.SetEnd( segm->m_End );
|
screen->m_BlockLocate.SetEnd( segm->m_End );
|
||||||
}
|
}
|
||||||
|
|
||||||
HandleBlockEnd( &dc );
|
HandleBlockEnd( &dc );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -668,10 +668,10 @@ bool GERBER_DRAW_ITEM::HitTest( EDA_Rect& aRefArea )
|
||||||
{
|
{
|
||||||
wxPoint pos = GetABPosition( m_Start );
|
wxPoint pos = GetABPosition( m_Start );
|
||||||
|
|
||||||
if( aRefArea.Inside( pos ) )
|
if( aRefArea.Contains( pos ) )
|
||||||
return true;
|
return true;
|
||||||
pos = GetABPosition( m_End );
|
pos = GetABPosition( m_End );
|
||||||
if( aRefArea.Inside( pos ) )
|
if( aRefArea.Contains( pos ) )
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,7 +146,9 @@ public:
|
||||||
* Class EDA_Rect
|
* Class EDA_Rect
|
||||||
* handles the component boundary box.
|
* handles the component boundary box.
|
||||||
* This class is similar to wxRect, but some wxRect functions are very curious,
|
* This class is similar to wxRect, but some wxRect functions are very curious,
|
||||||
* so I prefer this suitable class
|
* and are working only if dimensions are >= 0 (not always the case in kicad)
|
||||||
|
* and also kicad needs some specific method.
|
||||||
|
* so I prefer this more suitable class
|
||||||
*/
|
*/
|
||||||
class EDA_Rect
|
class EDA_Rect
|
||||||
{
|
{
|
||||||
|
@ -173,11 +175,33 @@ public:
|
||||||
*/
|
*/
|
||||||
void Move( const wxPoint& aMoveVector );
|
void Move( const wxPoint& aMoveVector );
|
||||||
|
|
||||||
void Normalize(); // Ensure the height and width are >= 0
|
/**
|
||||||
bool Inside( const wxPoint& point ) const; // Return TRUE if point is in Rect
|
* Function Normalize
|
||||||
|
* Ensure the height and width are >= 0
|
||||||
|
*/
|
||||||
|
void Normalize();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Contains
|
||||||
|
* @param aPoint = the wxPoint to test
|
||||||
|
* @return true if aPoint is inside the boundary box. A point on a edge is seen as inside
|
||||||
|
*/
|
||||||
|
bool Contains( const wxPoint& aPoint ) const;
|
||||||
|
/**
|
||||||
|
* Function Contains
|
||||||
|
* @param x = the x coordinate of the point to test
|
||||||
|
* @param y = the x coordinate of the point to test
|
||||||
|
* @return true if point is inside the boundary box. A point on a edge is seen as inside
|
||||||
|
*/
|
||||||
|
bool Contains( int x, int y ) const { return Contains( wxPoint( x, y ) ); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function Contains
|
||||||
|
* @param aRect = the EDA_Rect to test
|
||||||
|
* @return true if aRect is Contained. A common edge is seen as contained
|
||||||
|
*/
|
||||||
|
bool Contains( const EDA_Rect& aRect ) const;
|
||||||
|
|
||||||
bool Inside( int x, int y ) const { return Inside( wxPoint( x, y ) ); }
|
|
||||||
bool Inside( const EDA_Rect& aRect ) const;
|
|
||||||
wxSize GetSize() const { return m_Size; }
|
wxSize GetSize() const { return m_Size; }
|
||||||
int GetX() const { return m_Pos.x; }
|
int GetX() const { return m_Pos.x; }
|
||||||
int GetY() const { return m_Pos.y; }
|
int GetY() const { return m_Pos.y; }
|
||||||
|
@ -209,8 +233,9 @@ public:
|
||||||
/**
|
/**
|
||||||
* Function Intersects
|
* Function Intersects
|
||||||
* @return bool - true if the argument rectangle intersects this rectangle.
|
* @return bool - true if the argument rectangle intersects this rectangle.
|
||||||
|
* (i.e. if the 2 rectangles have at least a common point)
|
||||||
*/
|
*/
|
||||||
bool Intersects( const EDA_Rect aRect ) const;
|
bool Intersects( const EDA_Rect& aRect ) const;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -137,17 +137,18 @@ void DisplayHotkeyList( WinEDA_DrawFrame* aFrame
|
||||||
*/
|
*/
|
||||||
Ki_HotkeyInfo* GetDescriptorFromHotkey( int aKey, Ki_HotkeyInfo** aList );
|
Ki_HotkeyInfo* GetDescriptorFromHotkey( int aKey, Ki_HotkeyInfo** aList );
|
||||||
|
|
||||||
/** function ReadHotkeyConfig * Read hotkey configuration for a given
|
/**
|
||||||
app, possibly before the frame for that app has been created
|
* Function ReadHotkeyConfig
|
||||||
|
* Read hotkey configuration for a given app,
|
||||||
@param Appname = the value of the app's m_FrameName
|
* possibly before the frame for that app has been created
|
||||||
@param DescList = the hotkey data
|
* @param Appname = the value of the app's m_FrameName
|
||||||
|
* @param aDescList = the hotkey data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ReadHotkeyConfig( const wxString& Appname,
|
void ReadHotkeyConfig( const wxString& Appname,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* DescList );
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList );
|
||||||
|
|
||||||
void ParseHotkeyConfig( const wxString& data,
|
void ParseHotkeyConfig( const wxString& data,
|
||||||
struct Ki_HotkeyInfoSectionDescriptor* DescList );
|
struct Ki_HotkeyInfoSectionDescriptor* aDescList );
|
||||||
|
|
||||||
|
|
||||||
// common hotkeys event id
|
// common hotkeys event id
|
||||||
|
|
|
@ -271,11 +271,11 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function HitTest().
|
* Function HitTest().
|
||||||
* Test if \a aRect intersects or is contained within the bounding box of an item.
|
* Test if \a aRect intersects or contains the bounding box of me.
|
||||||
*
|
*
|
||||||
* @param aRect - Rectangle to test.
|
* @param aRect - Rectangle to test.
|
||||||
* @param aContained - Set to true to test for containment instead of an intersection.
|
* @param aContained - Set to true to test for containment instead of an intersection.
|
||||||
* @param aAccuracy - Increase the item bounding box by this amount.
|
* @param aAccuracy - Increase aRect by this amount.
|
||||||
* @return True if \a aRect contains or intersects the item bounding box.
|
* @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
|
bool HitTest( const EDA_Rect& aRect, bool aContained = false, int aAccuracy = 0 ) const
|
||||||
|
|
|
@ -224,7 +224,7 @@ void WinEDA_PcbFrame::AutoMoveModulesOnPcb( bool PlaceModulesHorsPcb )
|
||||||
Module = moduleList[ii];
|
Module = moduleList[ii];
|
||||||
if( PlaceModulesHorsPcb && edgesExists )
|
if( PlaceModulesHorsPcb && edgesExists )
|
||||||
{
|
{
|
||||||
if( GetBoard()->m_BoundaryBox.Inside( Module->m_Pos ) )
|
if( GetBoard()->m_BoundaryBox.Contains( Module->m_Pos ) )
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
surface += Module->m_Surface;
|
surface += Module->m_Surface;
|
||||||
|
@ -243,7 +243,7 @@ void WinEDA_PcbFrame::AutoMoveModulesOnPcb( bool PlaceModulesHorsPcb )
|
||||||
|
|
||||||
if( PlaceModulesHorsPcb && edgesExists )
|
if( PlaceModulesHorsPcb && edgesExists )
|
||||||
{
|
{
|
||||||
if( GetBoard()->m_BoundaryBox.Inside( Module->m_Pos ) )
|
if( GetBoard()->m_BoundaryBox.Contains( Module->m_Pos ) )
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -150,7 +150,7 @@ void WinEDA_PcbFrame::AutoPlaceModule( MODULE* Module,
|
||||||
Module->m_ModuleStatus &= ~MODULE_is_PLACED;
|
Module->m_ModuleStatus &= ~MODULE_is_PLACED;
|
||||||
if( Module->m_ModuleStatus & MODULE_is_LOCKED )
|
if( Module->m_ModuleStatus & MODULE_is_LOCKED )
|
||||||
break;
|
break;
|
||||||
if( !GetBoard()->m_BoundaryBox.Inside( Module->m_Pos ) )
|
if( !GetBoard()->m_BoundaryBox.Contains( Module->m_Pos ) )
|
||||||
Module->m_ModuleStatus |= MODULE_to_PLACE;
|
Module->m_ModuleStatus |= MODULE_to_PLACE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -657,7 +657,7 @@ int MarkItemsInBloc( MODULE* module, EDA_Rect& Rect )
|
||||||
{
|
{
|
||||||
pad->m_Selected = 0;
|
pad->m_Selected = 0;
|
||||||
pos = pad->GetPosition();
|
pos = pad->GetPosition();
|
||||||
if( Rect.Inside( pos ) )
|
if( Rect.Contains( pos ) )
|
||||||
{
|
{
|
||||||
pad->m_Selected = IS_SELECTED;
|
pad->m_Selected = IS_SELECTED;
|
||||||
ItemsCount++;
|
ItemsCount++;
|
||||||
|
@ -673,13 +673,13 @@ int MarkItemsInBloc( MODULE* module, EDA_Rect& Rect )
|
||||||
{
|
{
|
||||||
case TYPE_EDGE_MODULE:
|
case TYPE_EDGE_MODULE:
|
||||||
pos = ( (EDGE_MODULE*) item )->m_Start;
|
pos = ( (EDGE_MODULE*) item )->m_Start;
|
||||||
if( Rect.Inside( pos ) )
|
if( Rect.Contains( pos ) )
|
||||||
{
|
{
|
||||||
item->m_Selected = IS_SELECTED;
|
item->m_Selected = IS_SELECTED;
|
||||||
ItemsCount++;
|
ItemsCount++;
|
||||||
}
|
}
|
||||||
pos = ( (EDGE_MODULE*) item )->m_End;
|
pos = ( (EDGE_MODULE*) item )->m_End;
|
||||||
if( Rect.Inside( pos ) )
|
if( Rect.Contains( pos ) )
|
||||||
{
|
{
|
||||||
item->m_Selected = IS_SELECTED;
|
item->m_Selected = IS_SELECTED;
|
||||||
ItemsCount++;
|
ItemsCount++;
|
||||||
|
@ -688,7 +688,7 @@ int MarkItemsInBloc( MODULE* module, EDA_Rect& Rect )
|
||||||
|
|
||||||
case TYPE_TEXTE_MODULE:
|
case TYPE_TEXTE_MODULE:
|
||||||
pos = ( (TEXTE_MODULE*) item )->GetPosition();
|
pos = ( (TEXTE_MODULE*) item )->GetPosition();
|
||||||
if( Rect.Inside( pos ) )
|
if( Rect.Contains( pos ) )
|
||||||
{
|
{
|
||||||
item->m_Selected = IS_SELECTED;
|
item->m_Selected = IS_SELECTED;
|
||||||
ItemsCount++;
|
ItemsCount++;
|
||||||
|
|
|
@ -738,7 +738,7 @@ bool DIMENSION::HitTest( const wxPoint& ref_pos )
|
||||||
*/
|
*/
|
||||||
bool DIMENSION::HitTest( EDA_Rect& refArea )
|
bool DIMENSION::HitTest( EDA_Rect& refArea )
|
||||||
{
|
{
|
||||||
if( refArea.Inside( m_Pos ) )
|
if( refArea.Contains( m_Pos ) )
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -487,9 +487,9 @@ bool DRAWSEGMENT::HitTest( const wxPoint& ref_pos )
|
||||||
*/
|
*/
|
||||||
bool DRAWSEGMENT::HitTest( EDA_Rect& refArea )
|
bool DRAWSEGMENT::HitTest( EDA_Rect& refArea )
|
||||||
{
|
{
|
||||||
if( refArea.Inside( m_Start ) )
|
if( refArea.Contains( m_Start ) )
|
||||||
return true;
|
return true;
|
||||||
if( refArea.Inside( m_End ) )
|
if( refArea.Contains( m_End ) )
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -200,7 +200,7 @@ bool MIREPCB::HitTest( const wxPoint& refPos )
|
||||||
*/
|
*/
|
||||||
bool MIREPCB::HitTest( EDA_Rect& refArea )
|
bool MIREPCB::HitTest( EDA_Rect& refArea )
|
||||||
{
|
{
|
||||||
if( refArea.Inside( m_Pos ) )
|
if( refArea.Contains( m_Pos ) )
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -875,13 +875,12 @@ void MODULE::DisplayInfo( WinEDA_DrawFrame* frame )
|
||||||
bool MODULE::HitTest( const wxPoint& refPos )
|
bool MODULE::HitTest( const wxPoint& refPos )
|
||||||
{
|
{
|
||||||
/* Calculation of the cursor coordinate relative to module */
|
/* Calculation of the cursor coordinate relative to module */
|
||||||
int spot_cX = refPos.x - m_Pos.x;
|
wxPoint pos = refPos - m_Pos;
|
||||||
int spot_cY = refPos.y - m_Pos.y;
|
|
||||||
|
|
||||||
RotatePoint( &spot_cX, &spot_cY, -m_Orient );
|
RotatePoint( &pos, -m_Orient );
|
||||||
|
|
||||||
/* Check if cursor is in the rectangle. */
|
/* Check if cursor is in the rectangle. */
|
||||||
if( m_BoundaryBox.Inside( spot_cX, spot_cY ) )
|
if( m_BoundaryBox.Contains( pos ) )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -291,7 +291,7 @@ bool TEXTE_MODULE::HitTest( const wxPoint& refPos )
|
||||||
rel_pos = refPos;
|
rel_pos = refPos;
|
||||||
RotatePoint( &rel_pos, m_Pos, -GetDrawRotation() );
|
RotatePoint( &rel_pos, m_Pos, -GetDrawRotation() );
|
||||||
|
|
||||||
if( area.Inside( rel_pos ) )
|
if( area.Contains( rel_pos ) )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -1175,9 +1175,9 @@ bool TRACK::HitTest( const wxPoint& ref_pos )
|
||||||
*/
|
*/
|
||||||
bool TRACK::HitTest( EDA_Rect& refArea )
|
bool TRACK::HitTest( EDA_Rect& refArea )
|
||||||
{
|
{
|
||||||
if( refArea.Inside( m_Start ) )
|
if( refArea.Contains( m_Start ) )
|
||||||
return true;
|
return true;
|
||||||
if( refArea.Inside( m_End ) )
|
if( refArea.Contains( m_End ) )
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ void ZONE_CONTAINER::Test_For_Copper_Island_And_Remove_Insulated_Islands( BOARD
|
||||||
ic++ )
|
ic++ )
|
||||||
{ // test if this area is connected to a board item:
|
{ // test if this area is connected to a board item:
|
||||||
wxPoint pos = ListPointsCandidates[ic];
|
wxPoint pos = ListPointsCandidates[ic];
|
||||||
if( !bbox.Inside( pos ) )
|
if( !bbox.Contains( pos ) )
|
||||||
continue;
|
continue;
|
||||||
if( TestPointInsidePolygon(
|
if( TestPointInsidePolygon(
|
||||||
m_FilledPolysList, indexstart,
|
m_FilledPolysList, indexstart,
|
||||||
|
|
|
@ -130,7 +130,7 @@ void BOARD::Test_Connections_To_Copper_Areas( int aNetcode )
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
bool connected = false;
|
bool connected = false;
|
||||||
if( bbox.Inside( pos1 ) )
|
if( bbox.Contains( pos1 ) )
|
||||||
{
|
{
|
||||||
if( TestPointInsidePolygon( curr_zone->m_FilledPolysList, indexstart,
|
if( TestPointInsidePolygon( curr_zone->m_FilledPolysList, indexstart,
|
||||||
indexend, pos1.x, pos1.y ) )
|
indexend, pos1.x, pos1.y ) )
|
||||||
|
@ -138,7 +138,7 @@ void BOARD::Test_Connections_To_Copper_Areas( int aNetcode )
|
||||||
}
|
}
|
||||||
if( !connected && (pos1 != pos2 ) )
|
if( !connected && (pos1 != pos2 ) )
|
||||||
{
|
{
|
||||||
if( bbox.Inside( pos2 ) )
|
if( bbox.Contains( pos2 ) )
|
||||||
if( TestPointInsidePolygon( curr_zone->m_FilledPolysList, indexstart,
|
if( TestPointInsidePolygon( curr_zone->m_FilledPolysList, indexstart,
|
||||||
indexend, pos2.x, pos2.y ) )
|
indexend, pos2.x, pos2.y ) )
|
||||||
connected = true;
|
connected = true;
|
||||||
|
|
Loading…
Reference in New Issue