From 1047e60e35e55f26cf00bd78c00d61d2f415b3d5 Mon Sep 17 00:00:00 2001 From: Wayne Stambaugh Date: Thu, 8 Dec 2011 10:45:01 -0500 Subject: [PATCH] Encapsulate SCH_POLYLINE, SCH_SHEET, and SCH_TEXT classes. --- eeschema/build_BOM.cpp | 36 +++- eeschema/bus-wire-junction.cpp | 10 +- eeschema/dialogs/dialog_edit_label.cpp | 49 ++++- eeschema/edit_label.cpp | 8 +- eeschema/erc.cpp | 8 +- eeschema/hierarch.cpp | 2 +- eeschema/sch_polyline.cpp | 77 ++++--- eeschema/sch_polyline.h | 49 ++++- eeschema/sch_screen.cpp | 2 +- eeschema/sch_sheet.cpp | 271 +++++++++++++------------ eeschema/sch_sheet.h | 154 +++++++------- eeschema/sch_sheet_path.cpp | 2 +- eeschema/sch_sheet_pin.cpp | 90 ++++---- eeschema/sch_text.cpp | 131 ++++++------ eeschema/sch_text.h | 84 ++++---- eeschema/sheet.cpp | 39 ++-- eeschema/sheetlab.cpp | 11 +- include/base_struct.h | 16 +- 18 files changed, 574 insertions(+), 465 deletions(-) diff --git a/eeschema/build_BOM.cpp b/eeschema/build_BOM.cpp index 564fdc2395..7e42ff7af4 100644 --- a/eeschema/build_BOM.cpp +++ b/eeschema/build_BOM.cpp @@ -1,8 +1,32 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: build_BOM.cpp -// Author: jean-pierre Charras -// License: GPL license -///////////////////////////////////////////////////////////////////////////// +/* + * 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) 2011 Wayne Stambaugh + * 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 build_BOM.cpp + * @brief Code used to generate bill of materials. + */ #include // to use sort vector #include @@ -159,7 +183,7 @@ int PrintListeGLabel( FILE* f, LABEL_OBJECT_LIST& aList ) case SCH_SHEET_PIN_T: { pinsheet = (SCH_SHEET_PIN*) aList[ii].m_Label; - int jj = pinsheet->m_Shape; + int jj = pinsheet->GetShape(); if( jj < 0 ) jj = NET_TMAX; diff --git a/eeschema/bus-wire-junction.cpp b/eeschema/bus-wire-junction.cpp index 38df1d3cd3..8a5121b3e3 100644 --- a/eeschema/bus-wire-junction.cpp +++ b/eeschema/bus-wire-junction.cpp @@ -424,18 +424,18 @@ void SCH_EDIT_FRAME::DeleteCurrentSegment( wxDC* DC ) endpos = screen->GetCrossHairPosition(); int idx = polyLine->GetCornerCount() - 1; + wxPoint pt = (*polyLine)[idx]; if( g_HVLines ) { /* Coerce the line to vertical or horizontal one: */ - if( ABS( endpos.x - polyLine->m_PolyPoints[idx].x ) < - ABS( endpos.y - polyLine->m_PolyPoints[idx].y ) ) - endpos.x = polyLine->m_PolyPoints[idx].x; + if( ABS( endpos.x - pt.x ) < ABS( endpos.y - pt.y ) ) + endpos.x = pt.x; else - endpos.y = polyLine->m_PolyPoints[idx].y; + endpos.y = pt.y; } - polyLine->m_PolyPoints[idx] = endpos; + polyLine->SetPoint( idx, endpos ); polyLine->Draw( DrawPanel, DC, wxPoint( 0, 0 ), g_XorMode ); } else diff --git a/eeschema/dialogs/dialog_edit_label.cpp b/eeschema/dialogs/dialog_edit_label.cpp index a845245ba5..0fc8ee9302 100644 --- a/eeschema/dialogs/dialog_edit_label.cpp +++ b/eeschema/dialogs/dialog_edit_label.cpp @@ -1,10 +1,32 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog_edit_label.cpp -// Author: jean-pierre Charras -// Modified by: -// Created: 18/12/2008 15:46:26 -// Licence: GPL -///////////////////////////////////////////////////////////////////////////// +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2008 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com + * Copyright (C) 2011 Wayne Stambaugh + * 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_text.h + * @brief Implementation of the label properties dialog. + */ #include "fctsys.h" #include "wx/valgen.h" @@ -98,6 +120,7 @@ void DialogLabelEditor::InitDialog() int MINTEXTWIDTH = 40; // M's are big characters, a few establish a lot of width int max_len = 0; + if ( !multiLine ) { max_len =m_CurrentText->m_Text.Length(); @@ -108,6 +131,7 @@ void DialogLabelEditor::InitDialog() // we cannot use the length of the entire text that has no meaning int curr_len = MINTEXTWIDTH; int imax = m_CurrentText->m_Text.Len(); + for( int count = 0; count < imax; count++ ) { if( m_CurrentText->m_Text[count] == '\n' || @@ -118,11 +142,13 @@ void DialogLabelEditor::InitDialog() else { curr_len++; + if ( max_len < curr_len ) max_len = curr_len; } } } + if( max_len < MINTEXTWIDTH ) max_len = MINTEXTWIDTH; @@ -132,11 +158,13 @@ void DialogLabelEditor::InitDialog() // Set validators m_TextOrient->SetSelection( m_CurrentText->GetOrientation() ); - m_TextShape->SetSelection( m_CurrentText->m_Shape ); + m_TextShape->SetSelection( m_CurrentText->GetShape() ); int style = 0; + if( m_CurrentText->m_Italic ) style = 1; + if( m_CurrentText->m_Bold ) style += 2; @@ -203,6 +231,7 @@ void DialogLabelEditor::TextPropertiesAccept( wxCommandEvent& aEvent ) m_Parent->DrawPanel->RefreshDrawingRect( m_CurrentText->GetBoundingBox() ); text = m_textLabel->GetValue(); + if( !text.IsEmpty() ) m_CurrentText->m_Text = text; else if( (m_CurrentText->m_Flags & IS_NEW) == 0 ) @@ -212,10 +241,12 @@ void DialogLabelEditor::TextPropertiesAccept( wxCommandEvent& aEvent ) text = m_TextSize->GetValue(); value = ReturnValueFromString( g_UserUnit, text, m_Parent->m_InternalUnits ); m_CurrentText->m_Size.x = m_CurrentText->m_Size.y = value; + if( m_TextShape ) - m_CurrentText->m_Shape = m_TextShape->GetSelection(); + m_CurrentText->SetShape( m_TextShape->GetSelection() ); int style = m_TextStyle->GetSelection(); + if( ( style & 1 ) ) m_CurrentText->m_Italic = 1; else diff --git a/eeschema/edit_label.cpp b/eeschema/edit_label.cpp index d5fd510197..b110e98a1b 100644 --- a/eeschema/edit_label.cpp +++ b/eeschema/edit_label.cpp @@ -87,12 +87,12 @@ SCH_TEXT* SCH_EDIT_FRAME::CreateNewText( wxDC* aDC, int aType ) case LAYER_HIERLABEL: textItem = new SCH_HIERLABEL( GetScreen()->GetCrossHairPosition() ); - textItem->m_Shape = lastGlobalLabelShape; + textItem->SetShape( lastGlobalLabelShape ); break; case LAYER_GLOBLABEL: textItem = new SCH_GLOBALLABEL( GetScreen()->GetCrossHairPosition() ); - textItem->m_Shape = lastGlobalLabelShape; + textItem->SetShape( lastGlobalLabelShape ); break; default: @@ -121,7 +121,7 @@ SCH_TEXT* SCH_EDIT_FRAME::CreateNewText( wxDC* aDC, int aType ) if( (aType == SCH_GLOBAL_LABEL_T) || (aType == SCH_HIERARCHICAL_LABEL_T) ) { - lastGlobalLabelShape = textItem->m_Shape; + lastGlobalLabelShape = textItem->GetShape(); } textItem->Draw( DrawPanel, aDC, wxPoint( 0, 0 ), GR_DEFAULT_DRAWMODE ); @@ -207,7 +207,7 @@ void SCH_EDIT_FRAME::OnConvertTextType( wxCommandEvent& aEvent ) * text item type. */ newtext->SetFlags( text->GetFlags() ); - newtext->m_Shape = text->m_Shape; + newtext->SetShape( text->GetShape() ); newtext->SetOrientation( text->GetOrientation() ); newtext->m_Size = text->m_Size; newtext->m_Thickness = text->m_Thickness; diff --git a/eeschema/erc.cpp b/eeschema/erc.cpp index 7d50ae8e85..67731a730f 100644 --- a/eeschema/erc.cpp +++ b/eeschema/erc.cpp @@ -197,8 +197,8 @@ int TestDuplicateSheetNames( bool aCreateMarker ) continue; // We have found a second sheet: compare names - if( ( (SCH_SHEET*) item )->m_SheetName.CmpNoCase( - ( ( SCH_SHEET* ) test_item )-> m_SheetName ) == 0 ) + if( ( (SCH_SHEET*) item )->GetName().CmpNoCase( + ( ( SCH_SHEET* ) test_item )->GetName() ) == 0 ) { if( aCreateMarker ) { @@ -206,9 +206,9 @@ int TestDuplicateSheetNames( bool aCreateMarker ) SCH_MARKER* marker = new SCH_MARKER(); marker->m_TimeStamp = GetNewTimeStamp(); marker->SetData( ERCE_DUPLICATE_SHEET_NAME, - ( (SCH_SHEET*) test_item )->m_Pos, + ( (SCH_SHEET*) test_item )->GetPosition(), _( "Duplicate sheet name" ), - ( (SCH_SHEET*) test_item )->m_Pos ); + ( (SCH_SHEET*) test_item )->GetPosition() ); marker->SetMarkerType( MARK_ERC ); marker->SetErrorLevel( ERR ); marker->SetNext( screen->GetDrawItems() ); diff --git a/eeschema/hierarch.cpp b/eeschema/hierarch.cpp index b2cbc2d629..9a68710233 100644 --- a/eeschema/hierarch.cpp +++ b/eeschema/hierarch.cpp @@ -197,7 +197,7 @@ void HIERARCHY_NAVIG_DLG::BuildSheetsTree( SCH_SHEET_PATH* list, wxTreeItemId* { SCH_SHEET* sheet = (SCH_SHEET*) schitem; m_nbsheets++; - menu = m_Tree->AppendItem( *previousmenu, sheet->m_SheetName, 0, 1 ); + menu = m_Tree->AppendItem( *previousmenu, sheet->GetName(), 0, 1 ); list->Push( sheet ); m_Tree->SetItemData( menu, new TreeItemData( *list ) ); int ll = m_Tree->GetItemText( menu ).Len(); diff --git a/eeschema/sch_polyline.cpp b/eeschema/sch_polyline.cpp index baacbca650..7e131b1f68 100644 --- a/eeschema/sch_polyline.cpp +++ b/eeschema/sch_polyline.cpp @@ -1,6 +1,31 @@ -/**********************/ -/* Class SCH_POLYLINE */ -/**********************/ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com + * Copyright (C) 2008-2011 Wayne Stambaugh + * Copyright (C) 2004-2011 KiCad Developers, see change_log.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_polyline.cpp + */ #include "fctsys.h" #include "gr_basic.h" @@ -18,7 +43,7 @@ SCH_POLYLINE::SCH_POLYLINE( int layer ) : SCH_ITEM( NULL, SCH_POLYLINE_T ) { - m_Width = 0; + m_width = 0; switch( layer ) { @@ -38,8 +63,8 @@ SCH_POLYLINE::SCH_POLYLINE( int layer ) : SCH_POLYLINE::SCH_POLYLINE( const SCH_POLYLINE& aPolyLine ) : SCH_ITEM( aPolyLine ) { - m_Width = aPolyLine.m_Width; - m_PolyPoints = aPolyLine.m_PolyPoints; + m_width = aPolyLine.m_width; + m_points = aPolyLine.m_points; } @@ -74,7 +99,7 @@ bool SCH_POLYLINE::Save( FILE* aFile ) const for( unsigned ii = 0; ii < GetCornerCount(); ii++ ) { - if( fprintf( aFile, "\t%-4d %-4d\n", m_PolyPoints[ii ].x, m_PolyPoints[ii].y ) == EOF ) + if( fprintf( aFile, "\t%-4d %-4d\n", m_points[ii ].x, m_points[ii].y ) == EOF ) { success = false; break; @@ -133,7 +158,7 @@ bool SCH_POLYLINE::Load( LINE_READER& aLine, wxString& aErrorMsg ) int SCH_POLYLINE::GetPenSize() const { - int pensize = ( m_Width == 0 ) ? g_DrawDefaultLineThickness : m_Width; + int pensize = ( m_width == 0 ) ? g_DrawDefaultLineThickness : m_width; return pensize; } @@ -157,19 +182,19 @@ void SCH_POLYLINE::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffs width *= 3; } - GRMoveTo( m_PolyPoints[0].x, m_PolyPoints[0].y ); + GRMoveTo( m_points[0].x, m_points[0].y ); if( m_Layer == LAYER_NOTES ) { for( unsigned i = 1; i < GetCornerCount(); i++ ) - GRDashedLineTo( &aPanel->m_ClipBox, aDC, m_PolyPoints[i].x + aOffset.x, - m_PolyPoints[i].y + aOffset.y, width, color ); + GRDashedLineTo( &aPanel->m_ClipBox, aDC, m_points[i].x + aOffset.x, + m_points[i].y + aOffset.y, width, color ); } else { for( unsigned i = 1; i < GetCornerCount(); i++ ) - GRLineTo( &aPanel->m_ClipBox, aDC, m_PolyPoints[i].x + aOffset.x, - m_PolyPoints[i].y + aOffset.y, width, color ); + GRLineTo( &aPanel->m_ClipBox, aDC, m_points[i].x + aOffset.x, + m_points[i].y + aOffset.y, width, color ); } } @@ -178,9 +203,9 @@ void SCH_POLYLINE::Mirror_X( int aXaxis_position ) { for( unsigned ii = 0; ii < GetCornerCount(); ii++ ) { - m_PolyPoints[ii].y -= aXaxis_position; - NEGATE( m_PolyPoints[ii].y ); - m_PolyPoints[ii].y = aXaxis_position; + m_points[ii].y -= aXaxis_position; + NEGATE( m_points[ii].y ); + m_points[ii].y = aXaxis_position; } } @@ -189,9 +214,9 @@ void SCH_POLYLINE::Mirror_Y( int aYaxis_position ) { for( unsigned ii = 0; ii < GetCornerCount(); ii++ ) { - m_PolyPoints[ii].x -= aYaxis_position; - NEGATE( m_PolyPoints[ii].x ); - m_PolyPoints[ii].x = aYaxis_position; + m_points[ii].x -= aYaxis_position; + NEGATE( m_points[ii].x ); + m_points[ii].x = aYaxis_position; } } @@ -200,7 +225,7 @@ void SCH_POLYLINE::Rotate( wxPoint rotationPoint ) { for( unsigned ii = 0; ii < GetCornerCount(); ii++ ) { - RotatePoint( &m_PolyPoints[ii], rotationPoint, 900 ); + RotatePoint( &m_points[ii], rotationPoint, 900 ); } } @@ -227,7 +252,7 @@ wxString SCH_POLYLINE::GetSelectMenuText() const fmt = _( "Polyline on Unkown Layer with %d Points" ); } - menuText.Printf( fmt, m_PolyPoints.size() ); + menuText.Printf( fmt, m_points.size() ); return menuText; } @@ -246,9 +271,9 @@ BITMAP_DEF SCH_POLYLINE::GetMenuImage() const bool SCH_POLYLINE::doHitTest( const wxPoint& aPoint, int aAccuracy ) const { - for( size_t i = 0; i < m_PolyPoints.size() - 1; i++ ) + for( size_t i = 0; i < m_points.size() - 1; i++ ) { - if( TestSegmentHit( aPoint, m_PolyPoints[i], m_PolyPoints[i + 1], aAccuracy ) ) + if( TestSegmentHit( aPoint, m_points[i], m_points[i + 1], aAccuracy ) ) return true; } @@ -271,9 +296,9 @@ bool SCH_POLYLINE::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccur void SCH_POLYLINE::doSetPosition( const wxPoint& aPosition ) { - wxPoint offset = m_PolyPoints[0] - aPosition; + wxPoint offset = m_points[0] - aPosition; - for( size_t i = 0; i < m_PolyPoints.size(); i++ ) - m_PolyPoints[i] = m_PolyPoints[i] - offset; + for( size_t i = 0; i < m_points.size(); i++ ) + m_points[i] = m_points[i] - offset; } diff --git a/eeschema/sch_polyline.h b/eeschema/sch_polyline.h index 1d4f848ce5..162c489000 100644 --- a/eeschema/sch_polyline.h +++ b/eeschema/sch_polyline.h @@ -37,9 +37,8 @@ class SCH_POLYLINE : public SCH_ITEM { -public: - int m_Width; /* Thickness */ - std::vector m_PolyPoints; // list of points (>= 2) + int m_width; /* Thickness */ + std::vector m_points; // list of points (>= 2) public: SCH_POLYLINE( int layer = LAYER_NOTES ); @@ -77,19 +76,36 @@ public: /** * Function AddPoint - * add a corner to m_PolyPoints + * add a corner to m_points */ void AddPoint( const wxPoint& point ) { - m_PolyPoints.push_back( point ); + m_points.push_back( point ); } + + /** + * Function SetPoint + * sets the point at \a aIndex in the list to \a aPoint. + * + * @param aIndex The index in the point list. + * @param aPoint The new point value. + */ + void SetPoint( int aIndex, const wxPoint& aPoint ) + { + // (unsigned) excludes aIndex<0 also + wxCHECK_RET( (unsigned)aIndex < m_points.size(), + wxT( "Invalid SCH_POLYLINE point list index." ) ); + + m_points[ aIndex ] = aPoint; + } + + /** * Function GetCornerCount * @return the number of corners */ - - unsigned GetCornerCount() const { return m_PolyPoints.size(); } + unsigned GetCornerCount() const { return m_points.size(); } /** * Function GetPenSize @@ -105,7 +121,7 @@ public: virtual void Move( const wxPoint& aMoveVector ) { for( unsigned ii = 0; ii < GetCornerCount(); ii++ ) - m_PolyPoints[ii] += aMoveVector; + m_points[ii] += aMoveVector; } /** @@ -123,11 +139,26 @@ public: virtual BITMAP_DEF GetMenuImage() const; + /** + * Function operator[] + * is used for read only access and returns the point at \a aIndex. + * @param aIndex The index of the list of points to return. + * @return A wxPoint object containing the point at \a aIndex. + */ + wxPoint operator[]( int aIndex ) const + { + // (unsigned) excludes aIndex<0 also + wxCHECK_MSG( (unsigned)aIndex < m_points.size(), wxDefaultPosition, + wxT( "Invalid SCH_POLYLINE point list index." ) ); + + return m_points[ aIndex ]; + } + 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_PolyPoints[0]; } + virtual wxPoint doGetPosition() const { return m_points[0]; } virtual void doSetPosition( const wxPoint& aPosition ); }; diff --git a/eeschema/sch_screen.cpp b/eeschema/sch_screen.cpp index 70e170d20a..ec0b2b586d 100644 --- a/eeschema/sch_screen.cpp +++ b/eeschema/sch_screen.cpp @@ -720,7 +720,7 @@ SCH_SHEET* SCH_SCREEN::GetSheet( const wxString& aName ) SCH_SHEET* sheet = (SCH_SHEET*) item; - if( aName.CmpNoCase( sheet->m_SheetName ) == 0 ) + if( aName.CmpNoCase( sheet->GetName() ) == 0 ) return sheet; } diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp index 19704fa7c1..90c2129f2a 100644 --- a/eeschema/sch_sheet.cpp +++ b/eeschema/sch_sheet.cpp @@ -51,50 +51,50 @@ SCH_SHEET::SCH_SHEET( const wxPoint& pos ) : SCH_ITEM( NULL, SCH_SHEET_T ) { m_Layer = LAYER_SHEET; - m_Pos = pos; - m_Size = wxSize( MIN_SHEET_WIDTH, MIN_SHEET_HEIGHT ); + m_pos = pos; + m_size = wxSize( MIN_SHEET_WIDTH, MIN_SHEET_HEIGHT ); m_TimeStamp = GetNewTimeStamp(); - m_SheetNameSize = m_FileNameSize = 60; - m_AssociatedScreen = NULL; - m_SheetName.Printf( wxT( "Sheet%8.8lX" ), m_TimeStamp ); - m_FileName.Printf( wxT( "file%8.8lX.sch" ), m_TimeStamp ); + m_sheetNameSize = m_fileNameSize = 60; + m_screen = NULL; + m_name.Printf( wxT( "Sheet%8.8lX" ), m_TimeStamp ); + m_fileName.Printf( wxT( "file%8.8lX.sch" ), m_TimeStamp ); } SCH_SHEET::SCH_SHEET( const SCH_SHEET& aSheet ) : SCH_ITEM( aSheet ) { - m_Pos = aSheet.m_Pos; - m_Size = aSheet.m_Size; + m_pos = aSheet.m_pos; + m_size = aSheet.m_size; m_Layer = aSheet.m_Layer; m_TimeStamp = aSheet.m_TimeStamp; - m_SheetNameSize = aSheet.m_SheetNameSize; - m_FileNameSize = aSheet.m_FileNameSize; - m_AssociatedScreen = aSheet.m_AssociatedScreen; - m_SheetName = aSheet.m_SheetName; - m_FileName = aSheet.m_FileName; + m_sheetNameSize = aSheet.m_sheetNameSize; + m_fileNameSize = aSheet.m_fileNameSize; + m_screen = aSheet.m_screen; + m_name = aSheet.m_name; + m_fileName = aSheet.m_fileName; m_pins = aSheet.m_pins; for( size_t i = 0; i < m_pins.size(); i++ ) m_pins[i].SetParent( this ); - if( m_AssociatedScreen ) - m_AssociatedScreen->IncRefCount(); + if( m_screen ) + m_screen->IncRefCount(); } SCH_SHEET::~SCH_SHEET() { - wxLogDebug( wxT( "Destroying sheet " ) + m_SheetName ); + wxLogDebug( wxT( "Destroying sheet " ) + m_name ); // also, look at the associated sheet & its reference count // perhaps it should be deleted also. - if( m_AssociatedScreen ) + if( m_screen ) { - m_AssociatedScreen->DecRefCount(); + m_screen->DecRefCount(); - if( m_AssociatedScreen->GetRefCount() == 0 ) - delete m_AssociatedScreen; + if( m_screen->GetRefCount() == 0 ) + delete m_screen; } } @@ -107,33 +107,33 @@ EDA_ITEM* SCH_SHEET::doClone() const void SCH_SHEET::SetScreen( SCH_SCREEN* aScreen ) { - if( aScreen == m_AssociatedScreen ) + if( aScreen == m_screen ) return; - if( m_AssociatedScreen != NULL ) + if( m_screen != NULL ) { - m_AssociatedScreen->DecRefCount(); + m_screen->DecRefCount(); - if( m_AssociatedScreen->GetRefCount() == 0 ) + if( m_screen->GetRefCount() == 0 ) { - delete m_AssociatedScreen; - m_AssociatedScreen = NULL; + delete m_screen; + m_screen = NULL; } } - m_AssociatedScreen = aScreen; + m_screen = aScreen; - if( m_AssociatedScreen ) - m_AssociatedScreen->IncRefCount(); + if( m_screen ) + m_screen->IncRefCount(); } int SCH_SHEET::GetScreenCount() const { - if( m_AssociatedScreen == NULL ) + if( m_screen == NULL ) return 0; - return m_AssociatedScreen->GetRefCount(); + return m_screen->GetRefCount(); } @@ -141,7 +141,7 @@ bool SCH_SHEET::Save( FILE* aFile ) const { if( fprintf( aFile, "$Sheet\n" ) == EOF || fprintf( aFile, "S %-4d %-4d %-4d %-4d\n", - m_Pos.x, m_Pos.y, m_Size.x, m_Size.y ) == EOF ) + m_pos.x, m_pos.y, m_size.x, m_size.y ) == EOF ) return false; //save the unique timestamp, like other schematic parts. @@ -149,17 +149,17 @@ bool SCH_SHEET::Save( FILE* aFile ) const return false; /* Save schematic sheetname and filename. */ - if( !m_SheetName.IsEmpty() ) + if( !m_name.IsEmpty() ) { - if( fprintf( aFile, "F0 %s %d\n", EscapedUTF8( m_SheetName ).c_str(), - m_SheetNameSize ) == EOF ) + if( fprintf( aFile, "F0 %s %d\n", EscapedUTF8( m_name ).c_str(), + m_sheetNameSize ) == EOF ) return false; } - if( !m_FileName.IsEmpty() ) + if( !m_fileName.IsEmpty() ) { - if( fprintf( aFile, "F1 %s %d\n", EscapedUTF8( m_FileName ).c_str(), - m_FileNameSize ) == EOF ) + if( fprintf( aFile, "F1 %s %d\n", EscapedUTF8( m_fileName ).c_str(), + m_fileNameSize ) == EOF ) return false; } @@ -204,7 +204,7 @@ bool SCH_SHEET::Load( LINE_READER& aLine, wxString& aErrorMsg ) /* Next line: must be "S xx yy nn mm" with xx, yy = sheet position * ( upper left corner ) et nn,mm = sheet size */ if( ( sscanf( &((char*)aLine)[1], "%d %d %d %d", - &m_Pos.x, &m_Pos.y, &m_Size.x, &m_Size.y ) != 4 ) + &m_pos.x, &m_pos.y, &m_size.x, &m_size.y ) != 4 ) || ( ((char*)aLine)[0] != 'S' ) ) { aErrorMsg.Printf( wxT( " ** Eeschema file sheet struct error at line %d, aborted\n" ), @@ -239,6 +239,7 @@ bool SCH_SHEET::Load( LINE_READER& aLine, wxString& aErrorMsg ) * F1 and "text" for filename */ ptcar = ((char*)aLine); + while( *ptcar && ( *ptcar != '"' ) ) ptcar++; @@ -270,18 +271,19 @@ bool SCH_SHEET::Load( LINE_READER& aLine, wxString& aErrorMsg ) aErrorMsg << FROM_UTF8( (char*) aLine ); } + if( size == 0 ) size = DEFAULT_SIZE_TEXT; if( fieldNdx == 0 ) { - m_SheetName = sheetName; - m_SheetNameSize = size; + m_name = sheetName; + m_sheetNameSize = size; } else { SetFileName( sheetName ); - m_FileNameSize = size; + m_fileNameSize = size; } } @@ -320,11 +322,11 @@ void SCH_SHEET::SwapData( SCH_ITEM* aItem ) SCH_SHEET* sheet = ( SCH_SHEET* ) aItem; - EXCHG( m_Pos, sheet->m_Pos ); - EXCHG( m_Size, sheet->m_Size ); - EXCHG( m_SheetName, sheet->m_SheetName ); - EXCHG( m_SheetNameSize, sheet->m_SheetNameSize ); - EXCHG( m_FileNameSize, sheet->m_FileNameSize ); + EXCHG( m_pos, sheet->m_pos ); + EXCHG( m_size, sheet->m_size ); + EXCHG( m_name, sheet->m_name ); + EXCHG( m_sheetNameSize, sheet->m_sheetNameSize ); + EXCHG( m_fileNameSize, sheet->m_fileNameSize ); m_pins.swap( sheet->m_pins ); // Ensure sheet labels have their .m_Parent member pointing really on their @@ -369,7 +371,7 @@ void SCH_SHEET::RemovePin( SCH_SHEET_PIN* aSheetPin ) } wxLogDebug( wxT( "Fix me: attempt to remove label %s which is not in sheet %s." ), - GetChars( aSheetPin->m_Text ), GetChars( m_SheetName ) ); + GetChars( aSheetPin->m_Text ), GetChars( m_name ) ); } @@ -401,7 +403,7 @@ bool SCH_SHEET::HasUndefinedPins() BOOST_FOREACH( SCH_SHEET_PIN pin, m_pins ) { /* Search the schematic for a hierarchical label corresponding to this sheet label. */ - EDA_ITEM* DrawStruct = m_AssociatedScreen->GetDrawItems(); + EDA_ITEM* DrawStruct = m_screen->GetDrawItems(); SCH_HIERLABEL* HLabel = NULL; for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() ) @@ -465,7 +467,7 @@ int SCH_SHEET::GetMinHeight() const for( size_t i = 0; i < m_pins.size(); i++ ) { - int pinY = m_pins[i].m_Pos.y - m_Pos.y; + int pinY = m_pins[i].m_Pos.y - m_pos.y; if( pinY > height ) height = pinY; @@ -509,7 +511,7 @@ void SCH_SHEET::CleanupSheet() while( i != m_pins.end() ) { /* Search the schematic for a hierarchical label corresponding to this sheet label. */ - EDA_ITEM* DrawStruct = m_AssociatedScreen->GetDrawItems(); + EDA_ITEM* DrawStruct = m_screen->GetDrawItems(); SCH_HIERLABEL* HLabel = NULL; for( ; DrawStruct != NULL; DrawStruct = DrawStruct->Next() ) @@ -553,11 +555,12 @@ int SCH_SHEET::GetPenSize() const wxPoint SCH_SHEET::GetSheetNamePosition() { - wxPoint pos = m_Pos; + wxPoint pos = m_pos; + if( IsVerticalOrientation() ) { pos.x -= 8; - pos.y += m_Size.y; + pos.y += m_size.y; } else { @@ -570,17 +573,17 @@ wxPoint SCH_SHEET::GetSheetNamePosition() wxPoint SCH_SHEET::GetFileNamePosition() { - wxPoint pos = m_Pos; + wxPoint pos = m_pos; int margin = GetPenSize() + 4; if( IsVerticalOrientation() ) { - pos.x += m_Size.x + margin; - pos.y += m_Size.y; + pos.x += m_size.x + margin; + pos.y += m_size.y; } else { - pos.y += m_Size.y + margin; + pos.y += m_size.y + margin; } return pos; @@ -595,7 +598,7 @@ void SCH_SHEET::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, int color; int name_orientation; wxPoint pos_sheetname,pos_filename; - wxPoint pos = m_Pos + aOffset; + wxPoint pos = m_pos + aOffset; int lineWidth = GetPenSize(); if( aColor >= 0 ) @@ -606,7 +609,7 @@ void SCH_SHEET::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, GRSetDrawMode( aDC, aDrawMode ); GRRect( &aPanel->m_ClipBox, aDC, pos.x, pos.y, - pos.x + m_Size.x, pos.y + m_Size.y, lineWidth, color ); + pos.x + m_size.x, pos.y + m_size.y, lineWidth, color ); pos_sheetname = GetSheetNamePosition() + aOffset; pos_filename = GetFileNamePosition() + aOffset; @@ -622,10 +625,10 @@ void SCH_SHEET::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, else txtcolor = ReturnLayerColor( LAYER_SHEETNAME ); - Text = wxT( "Sheet: " ) + m_SheetName; + Text = wxT( "Sheet: " ) + m_name; DrawGraphicText( aPanel, aDC, pos_sheetname, (EDA_Colors) txtcolor, Text, name_orientation, - wxSize( m_SheetNameSize, m_SheetNameSize ), + wxSize( m_sheetNameSize, m_sheetNameSize ), GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_BOTTOM, lineWidth, false, false ); @@ -635,10 +638,10 @@ void SCH_SHEET::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, else txtcolor = ReturnLayerColor( LAYER_SHEETFILENAME ); - Text = wxT( "File: " ) + m_FileName; + Text = wxT( "File: " ) + m_fileName; DrawGraphicText( aPanel, aDC, pos_filename, (EDA_Colors) txtcolor, Text, name_orientation, - wxSize( m_FileNameSize, m_FileNameSize ), + wxSize( m_fileNameSize, m_fileNameSize ), GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_TOP, lineWidth, false, false ); @@ -655,26 +658,26 @@ void SCH_SHEET::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, EDA_RECT SCH_SHEET::GetBoundingBox() const { wxPoint end; - EDA_RECT box( m_Pos, m_Size ); + EDA_RECT box( m_pos, m_size ); int lineWidth = GetPenSize(); // Determine length of texts - wxString text = wxT( "Sheet: " ) + m_SheetName; - int textlen = ReturnGraphicTextWidth( text, m_SheetNameSize, false, lineWidth ); - text = wxT( "File: " ) + m_FileName; - int textlen2 = ReturnGraphicTextWidth( text, m_FileNameSize, false, lineWidth ); + wxString text = wxT( "Sheet: " ) + m_name; + int textlen = ReturnGraphicTextWidth( text, m_sheetNameSize, false, lineWidth ); + text = wxT( "File: " ) + m_fileName; + int textlen2 = ReturnGraphicTextWidth( text, m_fileNameSize, false, lineWidth ); // Calculate bounding box X size: textlen = MAX( textlen, textlen2 ); - end.x = MAX( m_Size.x, textlen ); + end.x = MAX( m_size.x, textlen ); // Calculate bounding box pos: - end.y = m_Size.y; - end += m_Pos; + end.y = m_size.y; + end += m_pos; // Move upper and lower limits to include texts: - box.m_Pos.y -= wxRound( m_SheetNameSize * 1.3 ) + 8; - end.y += wxRound( m_FileNameSize * 1.3 ) + 8; + box.m_Pos.y -= wxRound( m_sheetNameSize * 1.3 ) + 8; + end.y += wxRound( m_fileNameSize * 1.3 ) + 8; box.SetEnd( end ); box.Inflate( lineWidth / 2 ); @@ -687,11 +690,11 @@ int SCH_SHEET::ComponentCount() { int n = 0; - if( m_AssociatedScreen ) + if( m_screen ) { EDA_ITEM* bs; - for( bs = m_AssociatedScreen->GetDrawItems(); bs != NULL; bs = bs->Next() ) + for( bs = m_screen->GetDrawItems(); bs != NULL; bs = bs->Next() ) { if( bs->Type() == SCH_COMPONENT_T ) { @@ -715,9 +718,9 @@ int SCH_SHEET::ComponentCount() bool SCH_SHEET::SearchHierarchy( const wxString& aFilename, SCH_SCREEN** aScreen ) { - if( m_AssociatedScreen ) + if( m_screen ) { - EDA_ITEM* item = m_AssociatedScreen->GetDrawItems(); + EDA_ITEM* item = m_screen->GetDrawItems(); while( item ) { @@ -725,10 +728,10 @@ bool SCH_SHEET::SearchHierarchy( const wxString& aFilename, SCH_SCREEN** aScreen { SCH_SHEET* sheet = (SCH_SHEET*) item; - if( sheet->m_AssociatedScreen - && sheet->m_AssociatedScreen->GetFileName().CmpNoCase( aFilename ) == 0 ) + if( sheet->m_screen + && sheet->m_screen->GetFileName().CmpNoCase( aFilename ) == 0 ) { - *aScreen = sheet->m_AssociatedScreen; + *aScreen = sheet->m_screen; return true; } @@ -746,14 +749,14 @@ bool SCH_SHEET::SearchHierarchy( const wxString& aFilename, SCH_SCREEN** aScreen bool SCH_SHEET::LocatePathOfScreen( SCH_SCREEN* aScreen, SCH_SHEET_PATH* aList ) { - if( m_AssociatedScreen ) + if( m_screen ) { aList->Push( this ); - if( m_AssociatedScreen == aScreen ) + if( m_screen == aScreen ) return true; - EDA_ITEM* strct = m_AssociatedScreen->GetDrawItems(); + EDA_ITEM* strct = m_screen->GetDrawItems(); while( strct ) { @@ -778,10 +781,10 @@ bool SCH_SHEET::Load( SCH_EDIT_FRAME* aFrame ) { bool success = true; - if( !m_AssociatedScreen ) + if( !m_screen ) { SCH_SCREEN* screen = NULL; - g_RootSheet->SearchHierarchy( m_FileName, &screen ); + g_RootSheet->SearchHierarchy( m_fileName, &screen ); if( screen ) { @@ -792,11 +795,11 @@ bool SCH_SHEET::Load( SCH_EDIT_FRAME* aFrame ) else { SetScreen( new SCH_SCREEN() ); - success = aFrame->LoadOneEEFile( m_AssociatedScreen, m_FileName ); + success = aFrame->LoadOneEEFile( m_screen, m_fileName ); if( success ) { - EDA_ITEM* bs = m_AssociatedScreen->GetDrawItems(); + EDA_ITEM* bs = m_screen->GetDrawItems(); while( bs ) { @@ -822,9 +825,9 @@ int SCH_SHEET::CountSheets() { int count = 1; //1 = this!! - if( m_AssociatedScreen ) + if( m_screen ) { - EDA_ITEM* strct = m_AssociatedScreen->GetDrawItems(); + EDA_ITEM* strct = m_screen->GetDrawItems(); for( ; strct; strct = strct->Next() ) { @@ -841,18 +844,19 @@ int SCH_SHEET::CountSheets() wxString SCH_SHEET::GetFileName( void ) const { - return m_FileName; + return m_fileName; } void SCH_SHEET::DisplayInfo( EDA_DRAW_FRAME* frame ) { frame->ClearMsgPanel(); - frame->AppendMsgPanel( _( "Sheet name" ), m_SheetName, CYAN ); - frame->AppendMsgPanel( _( "File name" ), m_FileName, BROWN ); + frame->AppendMsgPanel( _( "Sheet name" ), m_name, CYAN ); + frame->AppendMsgPanel( _( "File name" ), m_fileName, BROWN ); + #if 0 // Set to 1 to display the sheet time stamp (mainly for test) wxString msg; - msg.Printf(wxT("%.8X"), m_TimeStamp ); + msg.Printf( wxT( "%.8X" ), m_TimeStamp ); frame->AppendMsgPanel( _( "Time Stamp" ), msg, BLUE ); #endif } @@ -860,19 +864,19 @@ void SCH_SHEET::DisplayInfo( EDA_DRAW_FRAME* frame ) void SCH_SHEET::Rotate(wxPoint rotationPoint) { - RotatePoint( &m_Pos, rotationPoint, 900 ); - RotatePoint( &m_Size.x, &m_Size.y, 900 ); + RotatePoint( &m_pos, rotationPoint, 900 ); + RotatePoint( &m_size.x, &m_size.y, 900 ); - if( m_Size.x < 0 ) + if( m_size.x < 0 ) { - m_Pos.x += m_Size.x; - NEGATE( m_Size.x ); + m_pos.x += m_size.x; + NEGATE( m_size.x ); } - if( m_Size.y < 0 ) + if( m_size.y < 0 ) { - m_Pos.y += m_Size.y; - NEGATE( m_Size.y ); + m_pos.y += m_size.y; + NEGATE( m_size.y ); } BOOST_FOREACH( SCH_SHEET_PIN& sheetPin, m_pins ) @@ -884,10 +888,10 @@ void SCH_SHEET::Rotate(wxPoint rotationPoint) void SCH_SHEET::Mirror_X( int aXaxis_position ) { - m_Pos.y -= aXaxis_position; - NEGATE( m_Pos.y ); - m_Pos.y += aXaxis_position; - m_Pos.y -= m_Size.y; + m_pos.y -= aXaxis_position; + NEGATE( m_pos.y ); + m_pos.y += aXaxis_position; + m_pos.y -= m_size.y; BOOST_FOREACH( SCH_SHEET_PIN& sheetPin, m_pins ) { @@ -898,10 +902,10 @@ void SCH_SHEET::Mirror_X( int aXaxis_position ) void SCH_SHEET::Mirror_Y( int aYaxis_position ) { - m_Pos.x -= aYaxis_position; - NEGATE( m_Pos.x ); - m_Pos.x += aYaxis_position; - m_Pos.x -= m_Size.x; + m_pos.x -= aYaxis_position; + NEGATE( m_pos.x ); + m_pos.x += aYaxis_position; + m_pos.x -= m_size.x; BOOST_FOREACH( SCH_SHEET_PIN& label, m_pins ) { @@ -912,10 +916,10 @@ void SCH_SHEET::Mirror_Y( int aYaxis_position ) void SCH_SHEET::Resize( const wxSize& aSize ) { - if( aSize == m_Size ) + if( aSize == m_size ) return; - m_Size = aSize; + m_size = aSize; /* Move the sheet labels according to the new sheet size. */ BOOST_FOREACH( SCH_SHEET_PIN& label, m_pins ) @@ -929,7 +933,7 @@ bool SCH_SHEET::Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxPoint { wxLogTrace( traceFindReplace, wxT( " item " ) + GetSelectMenuText() ); - if( SCH_ITEM::Matches( m_FileName, aSearchData ) ) + if( SCH_ITEM::Matches( m_fileName, aSearchData ) ) { if( aFindLocation ) *aFindLocation = GetFileNamePosition(); @@ -937,7 +941,7 @@ bool SCH_SHEET::Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxPoint return true; } - if( SCH_ITEM::Matches( m_SheetName, aSearchData ) ) + if( SCH_ITEM::Matches( m_name, aSearchData ) ) { if( aFindLocation ) *aFindLocation = GetSheetNamePosition(); @@ -1056,7 +1060,7 @@ SEARCH_RESULT SCH_SHEET::Visit( INSPECTOR* aInspector, const void* aTestData, wxString SCH_SHEET::GetSelectMenuText() const { wxString tmp; - tmp.Printf( _( "Hierarchical Sheet %s" ), GetChars( m_SheetName ) ); + tmp.Printf( _( "Hierarchical Sheet %s" ), GetChars( m_name ) ); return tmp; } @@ -1086,7 +1090,7 @@ bool SCH_SHEET::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy wxPoint SCH_SHEET::GetResizePosition() const { - return wxPoint( m_Pos.x + m_Size.GetWidth(), m_Pos.y + m_Size.GetHeight() ); + return wxPoint( m_pos.x + m_size.GetWidth(), m_pos.y + m_size.GetHeight() ); } @@ -1104,7 +1108,7 @@ void SCH_SHEET::GetNetListItem( vector& aNetListItems, item->m_Comp = &m_pins[i]; item->m_Link = this; item->m_Type = NET_SHEETLABEL; - item->m_ElectricalType = m_pins[i].m_Shape; + item->m_ElectricalType = m_pins[i].GetShape(); item->m_Label = m_pins[i].m_Text; item->m_Start = item->m_End = m_pins[i].m_Pos; aNetListItems.push_back( item ); @@ -1129,37 +1133,38 @@ void SCH_SHEET::doPlot( PLOTTER* aPlotter ) int thickness = GetPenSize(); aPlotter->set_current_line_width( thickness ); - aPlotter->move_to( m_Pos ); - pos = m_Pos; - pos.x += m_Size.x; + aPlotter->move_to( m_pos ); + pos = m_pos; + pos.x += m_size.x; aPlotter->line_to( pos ); - pos.y += m_Size.y; + pos.y += m_size.y; aPlotter->line_to( pos ); - pos = m_Pos; - pos.y += m_Size.y; + pos = m_pos; + pos.y += m_size.y; aPlotter->line_to( pos ); - aPlotter->finish_to( m_Pos ); + aPlotter->finish_to( m_pos ); if( IsVerticalOrientation() ) { - pos_sheetname = wxPoint( m_Pos.x - 8, m_Pos.y + m_Size.y ); - pos_filename = wxPoint( m_Pos.x + m_Size.x + 4, m_Pos.y + m_Size.y ); + pos_sheetname = wxPoint( m_pos.x - 8, m_pos.y + m_size.y ); + pos_filename = wxPoint( m_pos.x + m_size.x + 4, m_pos.y + m_size.y ); name_orientation = TEXT_ORIENT_VERT; } else { - pos_sheetname = wxPoint( m_Pos.x, m_Pos.y - 4 ); - pos_filename = wxPoint( m_Pos.x, m_Pos.y + m_Size.y + 4 ); + pos_sheetname = wxPoint( m_pos.x, m_pos.y - 4 ); + pos_filename = wxPoint( m_pos.x, m_pos.y + m_size.y + 4 ); name_orientation = TEXT_ORIENT_HORIZ; } - /* Draw texts: SheetName */ - Text = m_SheetName; - size = wxSize( m_SheetNameSize, m_SheetNameSize ); - //pos = m_Pos; pos.y -= 4; + /* Draw texts: SheetName */ + Text = m_name; + size = wxSize( m_sheetNameSize, m_sheetNameSize ); + + //pos = m_pos; pos.y -= 4; thickness = g_DrawDefaultLineThickness; thickness = Clamp_Text_PenSize( thickness, size, false ); @@ -1172,7 +1177,7 @@ void SCH_SHEET::doPlot( PLOTTER* aPlotter ) /*Draw texts : FileName */ Text = GetFileName(); - size = wxSize( m_FileNameSize, m_FileNameSize ); + size = wxSize( m_fileNameSize, m_fileNameSize ); thickness = g_DrawDefaultLineThickness; thickness = Clamp_Text_PenSize( thickness, size, false ); @@ -1200,7 +1205,7 @@ void SCH_SHEET::Show( int nestLevel, std::ostream& os ) wxString s = GetClass(); NestedSpace( nestLevel, os ) << '<' << s.Lower().mb_str() << ">" << " sheet_name=\"" - << TO_UTF8( m_SheetName ) << '"' << ">\n"; + << TO_UTF8( m_name ) << '"' << ">\n"; // show all the pins, and check the linked list integrity BOOST_FOREACH( SCH_SHEET_PIN& label, m_pins ) diff --git a/eeschema/sch_sheet.h b/eeschema/sch_sheet.h index 4efa6c2083..d579e7837c 100644 --- a/eeschema/sch_sheet.h +++ b/eeschema/sch_sheet.h @@ -28,8 +28,8 @@ * @brief Definition of the SCH_SHEET class for Eeschema. */ -#ifndef CLASS_DRAWSHEET_H -#define CLASS_DRAWSHEET_H +#ifndef SCH_SHEEET_H +#define SCH_SHEEET_H #include #include @@ -50,7 +50,8 @@ class SCH_EDIT_FRAME; /** - * Pin (label) used in sheets to create hierarchical schematics. + * Class SCH_SHEET_PIN + * defines a sheet pin (label) used in sheets to create hierarchical schematics. * * A SCH_SHEET_PIN is used to create a hierarchical sheet in the same way a * pin is used in a component. It connects the objects in the sheet object @@ -59,23 +60,24 @@ class SCH_EDIT_FRAME; * connected to a wire, bus, or label. In the schematic page represented by * the sheet, it corresponds to a hierarchical label. */ - class SCH_SHEET_PIN : public SCH_HIERLABEL { private: - int m_Number; ///< Label number use for saving sheet label to file. + int m_number; ///< Label number use for saving sheet label to file. ///< Sheet label numbering begins at 2. ///< 0 is reserved for the sheet name. ///< 1 is reserve for the sheet file name. - int m_Edge; /* For pin labels only: sheet edge (0 to 3) of the pin - * m_Edge define on which edge the pin is positioned: - * 0: pin on left side - * 1: pin on right side - * 2: pin on top side - * 3: pin on bottom side - * for compatibility reasons, this does not follow same values as text - * orientation. - */ + + /** + * Defines the edge of the sheet that the sheet pin is positioned + * 0: pin on left side + * 1: pin on right side + * 2: pin on top side + * 3: pin on bottom side + * + * For compatibility reasons, this does not follow same values as text orientation. + */ + int m_edge; virtual EDA_ITEM* doClone() const; @@ -118,7 +120,7 @@ public: * * @return Number of the sheet label. */ - int GetNumber() const { return m_Number; } + int GetNumber() const { return m_number; } /** * Set the sheet label number. @@ -202,15 +204,7 @@ public: virtual void Mirror_X( int aXaxis_position ); /** - * Function Matches - * Compare hierarchical pin name against search string. - * - * @param aSearchData - Criteria to search against. - * @param aAuxData - a pointer on auxiliary data, if needed. - * When searching string in REFERENCE field we must know the sheet path - * This param is used in this case - * @param aFindLocation - a wxPoint where to put the location of matched item. can be NULL. - * @return True if this item matches the search criteria. + * @copydoc EDA_ITEM::Matches(wxFindReplaceData&,void*,wxPoint*) */ virtual bool Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxPoint* aFindLocation ); @@ -233,33 +227,40 @@ private: typedef boost::ptr_vector SCH_SHEET_PINS; -/* class SCH_SHEET - * This class is the sheet symbol placed in a schematic, and is the entry point - * for a sub schematic +/** + * Class SCH_SHEET + * is the sheet symbol placed in a schematic, and is the entry point for a sub schematic. */ - class SCH_SHEET : public SCH_ITEM { - SCH_SCREEN* m_AssociatedScreen; ///< Screen that contains the physical data for - ///< the sheet. In complex hierarchies multiple - ///< sheets can share a common screen. - SCH_SHEET_PINS m_pins; ///< List of sheet connection points. - wxString m_FileName; /* also in SCH_SCREEN (redundant), - * but need it here for loading after - * reading the sheet description from - * file. */ + /// Screen that contains the physical data for the sheet. In complex hierarchies + /// multiple sheets can share a common screen. + SCH_SCREEN* m_screen; -public: - wxString m_SheetName; /* this is equivalent to C101 for - * components: it is stored in F0 ... - * of the file. */ -public: - int m_SheetNameSize; /* Size (height) of the text, used to - * draw the sheet name */ - int m_FileNameSize; /* Size (height) of the text, used to - * draw the file name */ - wxPoint m_Pos; - wxSize m_Size; /* Position and Size of *sheet symbol */ + /// The list of sheet connection points. + SCH_SHEET_PINS m_pins; + + /// The file name is also in the #SCH_SCREEN object associated with the sheet. It is + /// also needed here for loading after reading the sheet description from file. + wxString m_fileName; + + /// This is equivalent to the reference designator for components and is stored in F0 + /// sheet pin in the schematic file. + wxString m_name; + + /// The height of the text used to draw the sheet name. + int m_sheetNameSize; + + /// The height of the text used to draw the file name. + int m_fileNameSize; + + /// The position of the sheet. + wxPoint m_pos; + + /// The size of the sheet. + wxSize m_size; + + friend class SCH_SHEET_PIN; public: SCH_SHEET( const wxPoint& pos = wxPoint( 0, 0 ) ); @@ -273,7 +274,24 @@ public: return wxT( "SCH_SHEET" ); } - SCH_SCREEN* GetScreen() { return m_AssociatedScreen; } + + wxString GetName() const { return m_name; } + + void SetName( const wxString& aName ) { m_name = aName; } + + int GetSheetNameSize() const { return m_sheetNameSize; } + + void SetSheetNameSize( int aSize ) { m_sheetNameSize = aSize; } + + int GetFileNameSize() const { return m_fileNameSize; } + + void SetFileNameSize( int aSize ) { m_fileNameSize = aSize; } + + SCH_SCREEN* GetScreen() { return m_screen; } + + wxSize GetSize() { return m_size; } + + void SetSize( const wxSize& aSize ) { m_size = aSize; } /** * Function SetScreen @@ -462,9 +480,9 @@ public: /** * Function Load. - * for the sheet: load the file m_FileName + * for the sheet: load the file m_fileName * if a screen already exists, the file is already read. - * m_AssociatedScreen point on the screen, and its m_RefCount is + * m_screen point on the screen, and its m_RefCount is * incremented * else creates a new associated screen and load the data file. * @param aFrame = a SCH_EDIT_FRAME pointer to the maim schematic frame @@ -483,14 +501,14 @@ public: /** * Function LocatePathOfScreen - * search the existing hierarchy for an instance of screen "FileName". - * don't bother looking at the root sheet - it must be unique, - * no other references to its m_AssociatedScreen otherwise there would be - * loops - * in the hierarchy. - * @param aScreen = the SCH_SCREEN* screen that we search for - * @param aList = the SCH_SHEET_PATH* that must be used - * @return true if found + * search the existing hierarchy for an instance of screen "FileName". + * don't bother looking at the root sheet - it must be unique, + * no other references to its m_screen otherwise there would be + * loops in the hierarchy. + * + * @param aScreen = the SCH_SCREEN* screen that we search for + * @param aList = the SCH_SHEET_PATH* that must be used + * @return true if found */ bool LocatePathOfScreen( SCH_SCREEN* aScreen, SCH_SHEET_PATH* aList ); @@ -512,7 +530,7 @@ public: // Set a new filename without changing anything else void SetFileName( const wxString& aFilename ) { - m_FileName = aFilename; + m_fileName = aFilename; } bool ChangeFileName( SCH_EDIT_FRAME* aFrame, const wxString& aFileName ); @@ -529,7 +547,7 @@ public: */ virtual void Move( const wxPoint& aMoveVector ) { - m_Pos += aMoveVector; + m_pos += aMoveVector; BOOST_FOREACH( SCH_SHEET_PIN& pin, m_pins ) { @@ -546,15 +564,7 @@ public: virtual void Rotate( wxPoint rotationPoint ); /** - * Compare schematic sheet file and sheet name against search string. - * - * @param aSearchData - Criteria to search against. - * @param aAuxData - a pointer on auxiliary data, if needed. - * When searching string in REFERENCE field we must know the sheet path - * This param is used in this case - * @param aFindLocation - a wxPoint where to put the location of matched item. can be NULL. - * - * @return True if this item matches the search criteria. + * @copydoc EDA_ITEM::Matches(wxFindReplaceData&,void*,wxPoint*) */ virtual bool Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxPoint* aFindLocation ); @@ -627,11 +637,11 @@ private: 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; } + virtual wxPoint doGetPosition() const { return m_pos; } + virtual void doSetPosition( const wxPoint& aPosition ) { m_pos = aPosition; } }; typedef std::vector< SCH_SHEET* > SCH_SHEETS; -#endif /* CLASS_DRAWSHEET_H */ +#endif /* SCH_SHEEET_H */ diff --git a/eeschema/sch_sheet_path.cpp b/eeschema/sch_sheet_path.cpp index 3603a596b7..0f5c71df42 100644 --- a/eeschema/sch_sheet_path.cpp +++ b/eeschema/sch_sheet_path.cpp @@ -217,7 +217,7 @@ wxString SCH_SHEET_PATH::PathHumanReadable() const // start at 1 to avoid the root sheet, as above. for( unsigned i = 1; i< m_numSheets; i++ ) { - s = s + m_sheets[i]->m_SheetName + wxT( "/" ); + s = s + m_sheets[i]->GetName() + wxT( "/" ); } return s; diff --git a/eeschema/sch_sheet_pin.cpp b/eeschema/sch_sheet_pin.cpp index 96f0b7e4e6..294af7a7b3 100644 --- a/eeschema/sch_sheet_pin.cpp +++ b/eeschema/sch_sheet_pin.cpp @@ -43,16 +43,6 @@ #include "kicad_string.h" -/* m_Edge define on which edge the pin is positioned: - * - * 0: pin on left side - * 1: pin on right side - * 2: pin on top side - * 3: pin on bottom side - * for compatibility reasons, this does not follow same values as text - * orientation. - */ - SCH_SHEET_PIN::SCH_SHEET_PIN( SCH_SHEET* parent, const wxPoint& pos, const wxString& text ) : SCH_HIERLABEL( pos, text, SCH_SHEET_PIN_T ) { @@ -66,17 +56,17 @@ SCH_SHEET_PIN::SCH_SHEET_PIN( SCH_SHEET* parent, const wxPoint& pos, const wxStr else SetEdge( 0 ); - m_Shape = NET_INPUT; - m_IsDangling = true; - m_Number = 2; + m_shape = NET_INPUT; + m_isDangling = true; + m_number = 2; } SCH_SHEET_PIN::SCH_SHEET_PIN( const SCH_SHEET_PIN& aSheetLabel ) : SCH_HIERLABEL( aSheetLabel ) { - m_Number = aSheetLabel.m_Number; - m_Edge = aSheetLabel.m_Edge; + m_number = aSheetLabel.m_number; + m_edge = aSheetLabel.m_edge; } @@ -132,7 +122,7 @@ void SCH_SHEET_PIN::SetNumber( int aNumber ) { wxASSERT( aNumber >= 2 ); - m_Number = aNumber; + m_number = aNumber; } @@ -168,27 +158,27 @@ void SCH_SHEET_PIN::SetEdge( int aEdge ) /* use -1 to adjust text orientation without changing edge*/ if( aEdge > -1 ) - m_Edge = aEdge; + m_edge = aEdge; - switch( m_Edge ) + switch( m_edge ) { case 0: /* pin on left side*/ - m_Pos.x = Sheet->m_Pos.x; + m_Pos.x = Sheet->m_pos.x; SetOrientation( 2 ); /* Orientation horiz inverse */ break; case 1: /* pin on right side*/ - m_Pos.x = Sheet->m_Pos.x + Sheet->m_Size.x; + m_Pos.x = Sheet->m_pos.x + Sheet->m_size.x; SetOrientation( 0 ); /* Orientation horiz normal */ break; case 2: /* pin on top side*/ - m_Pos.y = Sheet->m_Pos.y; + m_Pos.y = Sheet->m_pos.y; SetOrientation( 3 ); /* Orientation vert BOTTOM */ break; case 3: /* pin on bottom side*/ - m_Pos.y = Sheet->m_Pos.y + Sheet->m_Size.y; + m_Pos.y = Sheet->m_pos.y + Sheet->m_size.y; SetOrientation( 1 ); /* Orientation vert UP */ break; } @@ -197,7 +187,7 @@ void SCH_SHEET_PIN::SetEdge( int aEdge ) int SCH_SHEET_PIN::GetEdge() const { - return m_Edge; + return m_edge; } @@ -208,9 +198,9 @@ void SCH_SHEET_PIN::ConstrainOnEdge( wxPoint Pos ) if( Sheet == NULL ) return; - if( m_Edge<2 ) /*horizontal sheetpin*/ + if( m_edge<2 ) /*horizontal sheetpin*/ { - if( Pos.x > ( Sheet->m_Pos.x + ( Sheet->m_Size.x / 2 ) ) ) + if( Pos.x > ( Sheet->m_pos.x + ( Sheet->m_size.x / 2 ) ) ) { SetEdge( 1 ); } @@ -221,15 +211,15 @@ void SCH_SHEET_PIN::ConstrainOnEdge( wxPoint Pos ) m_Pos.y = Pos.y; - if( m_Pos.y < Sheet->m_Pos.y ) - m_Pos.y = Sheet->m_Pos.y; + if( m_Pos.y < Sheet->m_pos.y ) + m_Pos.y = Sheet->m_pos.y; - if( m_Pos.y > (Sheet->m_Pos.y + Sheet->m_Size.y) ) - m_Pos.y = Sheet->m_Pos.y + Sheet->m_Size.y; + if( m_Pos.y > (Sheet->m_pos.y + Sheet->m_size.y) ) + m_Pos.y = Sheet->m_pos.y + Sheet->m_size.y; } else /* vertical sheetpin*/ { - if( Pos.y > ( Sheet->m_Pos.y + ( Sheet->m_Size.y / 2 ) ) ) + if( Pos.y > ( Sheet->m_pos.y + ( Sheet->m_size.y / 2 ) ) ) { SetEdge( 3 ); //bottom } @@ -240,11 +230,11 @@ void SCH_SHEET_PIN::ConstrainOnEdge( wxPoint Pos ) m_Pos.x = Pos.x; - if( m_Pos.x < Sheet->m_Pos.x ) - m_Pos.x = Sheet->m_Pos.x; + if( m_Pos.x < Sheet->m_pos.x ) + m_Pos.x = Sheet->m_pos.x; - if( m_Pos.x > (Sheet->m_Pos.x + Sheet->m_Size.x) ) - m_Pos.x = Sheet->m_Pos.x + Sheet->m_Size.x; + if( m_Pos.x > (Sheet->m_pos.x + Sheet->m_size.x) ) + m_Pos.x = Sheet->m_pos.x + Sheet->m_size.x; } } @@ -256,7 +246,7 @@ bool SCH_SHEET_PIN::Save( FILE* aFile ) const if( m_Text.IsEmpty() ) return true; - switch( m_Edge ) + switch( m_edge ) { case 0: //pin on left side side = 'L'; @@ -275,7 +265,7 @@ bool SCH_SHEET_PIN::Save( FILE* aFile ) const break; } - switch( m_Shape ) + switch( m_shape ) { case NET_INPUT: type = 'I'; break; @@ -293,7 +283,7 @@ bool SCH_SHEET_PIN::Save( FILE* aFile ) const type = 'U'; break; } - if( fprintf( aFile, "F%d %s %c %c %-3d %-3d %-3d\n", m_Number, + if( fprintf( aFile, "F%d %s %c %c %-3d %-3d %-3d\n", m_number, EscapedUTF8( m_Text ).c_str(), // supplies wrapping quotes type, side, m_Pos.x, m_Pos.y, m_Size.x ) == EOF ) @@ -359,23 +349,23 @@ bool SCH_SHEET_PIN::Load( LINE_READER& aLine, wxString& aErrorMsg ) switch( connectType[0] ) { case 'I': - m_Shape = NET_INPUT; + m_shape = NET_INPUT; break; case 'O': - m_Shape = NET_OUTPUT; + m_shape = NET_OUTPUT; break; case 'B': - m_Shape = NET_BIDI; + m_shape = NET_BIDI; break; case 'T': - m_Shape = NET_TRISTATE; + m_shape = NET_TRISTATE; break; case 'U': - m_Shape = NET_UNSPECIFIED; + m_shape = NET_UNSPECIFIED; break; } @@ -429,7 +419,7 @@ void SCH_SHEET_PIN::Mirror_X( int aXaxis_position ) m_Pos.y = aXaxis_position - p; - switch( m_Edge ) + switch( m_edge ) { case 2: SetEdge( 3 ); @@ -448,7 +438,7 @@ void SCH_SHEET_PIN::Mirror_Y( int aYaxis_position ) m_Pos.x = aYaxis_position - p; - switch( m_Edge ) + switch( m_edge ) { case 0: SetEdge( 1 ); @@ -465,7 +455,7 @@ void SCH_SHEET_PIN::Rotate( wxPoint rotationPoint ) { RotatePoint( &m_Pos, rotationPoint, 900 ); - switch( m_Edge ) + switch( m_edge ) { case 0: //pin on left side SetEdge( 3 ); @@ -493,16 +483,16 @@ void SCH_SHEET_PIN::CreateGraphicShape( std::vector & aPoints, const wx * for INPUT type the icon is the OUTPUT shape of SCH_HIERLABEL * for OUTPUT type the icon is the INPUT shape of SCH_HIERLABEL */ - int tmp = m_Shape; + int tmp = m_shape; - switch( m_Shape ) + switch( m_shape ) { case NET_INPUT: - m_Shape = NET_OUTPUT; + m_shape = NET_OUTPUT; break; case NET_OUTPUT: - m_Shape = NET_INPUT; + m_shape = NET_INPUT; break; default: @@ -510,7 +500,7 @@ void SCH_SHEET_PIN::CreateGraphicShape( std::vector & aPoints, const wx } SCH_HIERLABEL::CreateGraphicShape( aPoints, aPos ); - m_Shape = tmp; + m_shape = tmp; } diff --git a/eeschema/sch_text.cpp b/eeschema/sch_text.cpp index 71f35bf2ac..e8eca4e3a8 100644 --- a/eeschema/sch_text.cpp +++ b/eeschema/sch_text.cpp @@ -104,10 +104,10 @@ SCH_TEXT::SCH_TEXT( const wxPoint& pos, const wxString& text, KICAD_T aType ) : { m_Layer = LAYER_NOTES; m_Pos = pos; - m_Shape = 0; - m_IsDangling = false; + m_shape = 0; + m_isDangling = false; m_MultilineAllowed = true; - m_SchematicOrientation = 0; + m_schematicOrientation = 0; } @@ -116,10 +116,10 @@ SCH_TEXT::SCH_TEXT( const SCH_TEXT& aText ) : EDA_TEXT( aText ) { m_Pos = aText.m_Pos; - m_Shape = aText.m_Shape; + m_shape = aText.m_shape; m_MultilineAllowed = aText.m_MultilineAllowed; - m_SchematicOrientation = aText.m_SchematicOrientation; - m_IsDangling = false; + m_schematicOrientation = aText.m_schematicOrientation; + m_isDangling = false; } @@ -141,7 +141,7 @@ wxPoint SCH_TEXT::GetSchematicTextOffset() const // add a small offset (TXTMARGE) to x ( or y) position to allow a text to // be on a wire or a line and be readable - switch( m_SchematicOrientation ) + switch( m_schematicOrientation ) { default: case 0: /* Horiz Normal Orientation (left justified) */ @@ -301,9 +301,9 @@ void SCH_TEXT::Rotate( wxPoint rotationPoint ) void SCH_TEXT::SetOrientation( int aOrientation ) { - m_SchematicOrientation = aOrientation; + m_schematicOrientation = aOrientation; - switch( m_SchematicOrientation ) + switch( m_schematicOrientation ) { default: case 0: /* Horiz Normal Orientation (left justified) */ @@ -341,14 +341,14 @@ void SCH_TEXT::SwapData( SCH_ITEM* aItem ) EXCHG( m_Pos, item->m_Pos ); EXCHG( m_Size, item->m_Size ); EXCHG( m_Thickness, item->m_Thickness ); - EXCHG( m_Shape, item->m_Shape ); + EXCHG( m_shape, item->m_shape ); EXCHG( m_Orient, item->m_Orient ); EXCHG( m_Layer, item->m_Layer ); EXCHG( m_HJustify, item->m_HJustify ); EXCHG( m_VJustify, item->m_VJustify ); - EXCHG( m_IsDangling, item->m_IsDangling ); - EXCHG( m_SchematicOrientation, item->m_SchematicOrientation ); + EXCHG( m_isDangling, item->m_isDangling ); + EXCHG( m_schematicOrientation, item->m_schematicOrientation ); } @@ -390,7 +390,7 @@ void SCH_TEXT::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, const wxPoint& aOffset, EDA_TEXT::Draw( panel, DC, text_offset, color, DrawMode, FILLED, UNSPECIFIED_COLOR ); EXCHG( linewidth, m_Thickness ); // set initial value - if( m_IsDangling ) + if( m_isDangling ) DrawDanglingSymbol( panel, DC, m_Pos + aOffset, color ); // Enable these line to draw the bounding box (debug tests purposes only) @@ -403,12 +403,6 @@ void SCH_TEXT::Draw( EDA_DRAW_PANEL* panel, wxDC* DC, const wxPoint& aOffset, } -/** - * Function Save - * writes the data structures for this object out to a FILE in "*.brd" format. - * @param aFile The FILE to write to. - * @return bool - true if success writing else false. - */ bool SCH_TEXT::Save( FILE* aFile ) const { bool success = true; @@ -439,7 +433,7 @@ bool SCH_TEXT::Save( FILE* aFile ) const if( fprintf( aFile, "Text Notes %-4d %-4d %-4d %-4d %s %d\n%s\n", - m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x, + m_Pos.x, m_Pos.y, m_schematicOrientation, m_Size.x, shape, m_Thickness, TO_UTF8( text ) ) == EOF ) { success = false; @@ -494,6 +488,7 @@ bool SCH_TEXT::Load( LINE_READER& aLine, wxString& aErrorMsg ) } wxString val = FROM_UTF8( text ); + for( ; ; ) { int i = val.find( wxT( "\\n" ) ); @@ -540,8 +535,8 @@ bool SCH_TEXT::IsDanglingStateChanged( std::vector< DANGLING_END_ITEM >& aItemLi if( Type() == SCH_TEXT_T ) return false; - bool previousState = m_IsDangling; - m_IsDangling = true; + bool previousState = m_isDangling; + m_isDangling = true; for( unsigned ii = 0; ii < aItemList.size(); ii++ ) { @@ -556,7 +551,7 @@ bool SCH_TEXT::IsDanglingStateChanged( std::vector< DANGLING_END_ITEM >& aItemLi case LABEL_END: case SHEET_LABEL_END: if( m_Pos == item.GetPosition() ) - m_IsDangling = false; + m_isDangling = false; break; @@ -567,11 +562,11 @@ bool SCH_TEXT::IsDanglingStateChanged( std::vector< DANGLING_END_ITEM >& aItemLi // a paranoid programmer, I'll check just in case. ii++; - wxCHECK_MSG( ii < aItemList.size(), previousState != m_IsDangling, + wxCHECK_MSG( ii < aItemList.size(), previousState != m_isDangling, wxT( "Dangling end type list overflow. Bad programmer!" ) ); DANGLING_END_ITEM & nextItem = aItemList[ii]; - m_IsDangling = !SegmentIntersect( item.GetPosition(), nextItem.GetPosition(), m_Pos ); + m_isDangling = !SegmentIntersect( item.GetPosition(), nextItem.GetPosition(), m_Pos ); } break; @@ -579,11 +574,11 @@ bool SCH_TEXT::IsDanglingStateChanged( std::vector< DANGLING_END_ITEM >& aItemLi break; } - if( m_IsDangling == false ) + if( m_isDangling == false ) break; } - return previousState != m_IsDangling; + return previousState != m_isDangling; } @@ -744,8 +739,8 @@ void SCH_TEXT::Show( int nestLevel, std::ostream& os ) NestedSpace( nestLevel, os ) << '<' << s.Lower().mb_str() << " layer=\"" << m_Layer << '"' - << " shape=\"" << m_Shape << '"' - << " dangling=\"" << m_IsDangling << '"' + << " shape=\"" << m_shape << '"' + << " dangling=\"" << m_isDangling << '"' << '>' << TO_UTF8( m_Text ) << "\n"; @@ -758,8 +753,8 @@ SCH_LABEL::SCH_LABEL( const wxPoint& pos, const wxString& text ) : SCH_TEXT( pos, text, SCH_LABEL_T ) { m_Layer = LAYER_LOCLABEL; - m_Shape = NET_INPUT; - m_IsDangling = true; + m_shape = NET_INPUT; + m_isDangling = true; m_MultilineAllowed = false; } @@ -819,7 +814,7 @@ bool SCH_LABEL::Save( FILE* aFile ) const shape = "Italic"; if( fprintf( aFile, "Text Label %-4d %-4d %-4d %-4d %s %d\n%s\n", - m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x, shape, + m_Pos.x, m_Pos.y, m_schematicOrientation, m_Size.x, shape, m_Thickness, TO_UTF8( m_Text ) ) == EOF ) { success = false; @@ -909,7 +904,7 @@ EDA_RECT SCH_LABEL::GetBoundingBox() const height = m_Size.y + width; dx = dy = 0; - switch( m_SchematicOrientation ) + switch( m_schematicOrientation ) { case 0: /* Horiz Normal Orientation (left justified) */ dx = 2 * DANGLING_SYMBOL_SIZE + length; @@ -966,8 +961,8 @@ SCH_GLOBALLABEL::SCH_GLOBALLABEL( const wxPoint& pos, const wxString& text ) : SCH_TEXT( pos, text, SCH_GLOBAL_LABEL_T ) { m_Layer = LAYER_GLOBLABEL; - m_Shape = NET_BIDI; - m_IsDangling = true; + m_shape = NET_BIDI; + m_isDangling = true; m_MultilineAllowed = false; } @@ -993,8 +988,8 @@ bool SCH_GLOBALLABEL::Save( FILE* aFile ) const shape = "Italic"; if( fprintf( aFile, "Text GLabel %-4d %-4d %-4d %-4d %s %s %d\n%s\n", - m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x, - SheetLabelType[m_Shape], shape, m_Thickness, TO_UTF8( m_Text ) ) == EOF ) + m_Pos.x, m_Pos.y, m_schematicOrientation, m_Size.x, + SheetLabelType[m_shape], shape, m_Thickness, TO_UTF8( m_Text ) ) == EOF ) { success = false; } @@ -1013,6 +1008,7 @@ bool SCH_GLOBALLABEL::Load( LINE_READER& aLine, wxString& aErrorMsg ) Name1[0] = 0; Name2[0] = 0; Name3[0] = 0; char* sline = (char*) aLine; + while( (*sline != ' ' ) && *sline ) sline++; @@ -1049,21 +1045,21 @@ bool SCH_GLOBALLABEL::Load( LINE_READER& aLine, wxString& aErrorMsg ) m_Text = FROM_UTF8( text ); m_Size.x = m_Size.y = size; SetOrientation( orient ); - m_Shape = NET_INPUT; + m_shape = NET_INPUT; m_Bold = ( thickness != 0 ); m_Thickness = m_Bold ? GetPenSizeForBold( size ) : 0; if( stricmp( Name2, SheetLabelType[NET_OUTPUT] ) == 0 ) - m_Shape = NET_OUTPUT; + m_shape = NET_OUTPUT; if( stricmp( Name2, SheetLabelType[NET_BIDI] ) == 0 ) - m_Shape = NET_BIDI; + m_shape = NET_BIDI; if( stricmp( Name2, SheetLabelType[NET_TRISTATE] ) == 0 ) - m_Shape = NET_TRISTATE; + m_shape = NET_TRISTATE; if( stricmp( Name2, SheetLabelType[NET_UNSPECIFIED] ) == 0 ) - m_Shape = NET_UNSPECIFIED; + m_shape = NET_UNSPECIFIED; if( stricmp( Name3, "Italic" ) == 0 ) m_Italic = 1; @@ -1131,7 +1127,7 @@ wxPoint SCH_GLOBALLABEL::GetSchematicTextOffset() const int HalfSize = m_Size.x / 2; int offset = width; - switch( m_Shape ) + switch( m_shape ) { case NET_INPUT: case NET_BIDI: @@ -1148,7 +1144,7 @@ wxPoint SCH_GLOBALLABEL::GetSchematicTextOffset() const break; } - switch( m_SchematicOrientation ) + switch( m_schematicOrientation ) { case 0: /* Orientation horiz normal */ text_offset.x -= offset; @@ -1173,9 +1169,9 @@ wxPoint SCH_GLOBALLABEL::GetSchematicTextOffset() const void SCH_GLOBALLABEL::SetOrientation( int aOrientation ) { - m_SchematicOrientation = aOrientation; + m_schematicOrientation = aOrientation; - switch( m_SchematicOrientation ) + switch( m_schematicOrientation ) { default: case 0: /* Horiz Normal Orientation */ @@ -1231,7 +1227,7 @@ void SCH_GLOBALLABEL::Draw( EDA_DRAW_PANEL* panel, CreateGraphicShape( Poly, m_Pos + aOffset ); GRPoly( &panel->m_ClipBox, DC, Poly.size(), &Poly[0], 0, linewidth, color, color ); - if( m_IsDangling ) + if( m_isDangling ) DrawDanglingSymbol( panel, DC, m_Pos + aOffset, color ); // Enable these line to draw the bounding box (debug tests purposes only) @@ -1271,7 +1267,7 @@ void SCH_GLOBALLABEL::CreateGraphicShape( std::vector & aPoints, const int x_offset = 0; - switch( m_Shape ) + switch( m_shape ) { case NET_INPUT: x_offset = -HalfSize; @@ -1296,7 +1292,7 @@ void SCH_GLOBALLABEL::CreateGraphicShape( std::vector & aPoints, const int angle = 0; - switch( m_SchematicOrientation ) + switch( m_schematicOrientation ) { case 0: /* Orientation horiz normal */ break; @@ -1318,8 +1314,10 @@ void SCH_GLOBALLABEL::CreateGraphicShape( std::vector & aPoints, const for( unsigned ii = 0; ii < aPoints.size(); ii++ ) { aPoints[ii].x += x_offset; + if( angle ) RotatePoint( &aPoints[ii], angle ); + aPoints[ii] += Pos; } @@ -1341,7 +1339,7 @@ EDA_RECT SCH_GLOBALLABEL::GetBoundingBox() const // text X size add height for triangular shapes(bidirectional) length = LenSize( m_Text ) + height + DANGLING_SYMBOL_SIZE; - switch( m_SchematicOrientation ) // respect orientation + switch( m_schematicOrientation ) // respect orientation { case 0: /* Horiz Normal Orientation (left justified) */ dx = -length; @@ -1398,8 +1396,8 @@ SCH_HIERLABEL::SCH_HIERLABEL( const wxPoint& pos, const wxString& text, KICAD_T SCH_TEXT( pos, text, aType ) { m_Layer = LAYER_HIERLABEL; - m_Shape = NET_INPUT; - m_IsDangling = true; + m_shape = NET_INPUT; + m_isDangling = true; m_MultilineAllowed = false; } @@ -1425,8 +1423,8 @@ bool SCH_HIERLABEL::Save( FILE* aFile ) const shape = "Italic"; if( fprintf( aFile, "Text HLabel %-4d %-4d %-4d %-4d %s %s %d\n%s\n", - m_Pos.x, m_Pos.y, m_SchematicOrientation, m_Size.x, - SheetLabelType[m_Shape], shape, m_Thickness, TO_UTF8( m_Text ) ) == EOF ) + m_Pos.x, m_Pos.y, m_schematicOrientation, m_Size.x, + SheetLabelType[m_shape], shape, m_Thickness, TO_UTF8( m_Text ) ) == EOF ) { success = false; } @@ -1482,21 +1480,21 @@ bool SCH_HIERLABEL::Load( LINE_READER& aLine, wxString& aErrorMsg ) m_Text = FROM_UTF8( text ); m_Size.x = m_Size.y = size; SetOrientation( orient ); - m_Shape = NET_INPUT; + m_shape = NET_INPUT; m_Bold = ( thickness != 0 ); m_Thickness = m_Bold ? GetPenSizeForBold( size ) : 0; if( stricmp( Name2, SheetLabelType[NET_OUTPUT] ) == 0 ) - m_Shape = NET_OUTPUT; + m_shape = NET_OUTPUT; if( stricmp( Name2, SheetLabelType[NET_BIDI] ) == 0 ) - m_Shape = NET_BIDI; + m_shape = NET_BIDI; if( stricmp( Name2, SheetLabelType[NET_TRISTATE] ) == 0 ) - m_Shape = NET_TRISTATE; + m_shape = NET_TRISTATE; if( stricmp( Name2, SheetLabelType[NET_UNSPECIFIED] ) == 0 ) - m_Shape = NET_UNSPECIFIED; + m_shape = NET_UNSPECIFIED; if( stricmp( Name3, "Italic" ) == 0 ) m_Italic = 1; @@ -1507,9 +1505,9 @@ bool SCH_HIERLABEL::Load( LINE_READER& aLine, wxString& aErrorMsg ) void SCH_HIERLABEL::SetOrientation( int aOrientation ) { - m_SchematicOrientation = aOrientation; + m_schematicOrientation = aOrientation; - switch( m_SchematicOrientation ) + switch( m_schematicOrientation ) { default: case 0: /* Horiz Normal Orientation */ @@ -1566,7 +1564,7 @@ void SCH_HIERLABEL::Draw( EDA_DRAW_PANEL* panel, CreateGraphicShape( Poly, m_Pos + offset ); GRPoly( &panel->m_ClipBox, DC, Poly.size(), &Poly[0], 0, linewidth, color, color ); - if( m_IsDangling ) + if( m_isDangling ) DrawDanglingSymbol( panel, DC, m_Pos + offset, color ); // Enable these line to draw the bounding box (debug tests purposes only) @@ -1581,7 +1579,7 @@ void SCH_HIERLABEL::Draw( EDA_DRAW_PANEL* panel, void SCH_HIERLABEL::CreateGraphicShape( std::vector & aPoints, const wxPoint& Pos ) { - int* Template = TemplateShape[m_Shape][m_SchematicOrientation]; + int* Template = TemplateShape[m_shape][m_schematicOrientation]; int HalfSize = m_Size.x / 2; int imax = *Template; Template++; @@ -1616,10 +1614,9 @@ EDA_RECT SCH_HIERLABEL::GetBoundingBox() const + height // add height for triangular shapes + 2 * DANGLING_SYMBOL_SIZE; - switch( m_SchematicOrientation ) // respect orientation + switch( m_schematicOrientation ) // respect orientation { - case 0: /* Horiz Normal Orientation (left - *justified) */ + case 0: /* Horiz Normal Orientation (left justified) */ dx = -length; dy = height; x += DANGLING_SYMBOL_SIZE; @@ -1662,7 +1659,7 @@ wxPoint SCH_HIERLABEL::GetSchematicTextOffset() const int ii = m_Size.x + TXTMARGE + width; - switch( m_SchematicOrientation ) + switch( m_schematicOrientation ) { case 0: /* Orientation horiz normale */ text_offset.x = -ii; diff --git a/eeschema/sch_text.h b/eeschema/sch_text.h index 33508884ff..c67a805eea 100644 --- a/eeschema/sch_text.h +++ b/eeschema/sch_text.h @@ -56,27 +56,23 @@ extern const char* SheetLabelType[]; /* names of types of labels */ class SCH_TEXT : public SCH_ITEM, public EDA_TEXT { -public: - int m_Shape; - bool m_IsDangling; // true if not connected (used to draw the "not - // connected" symbol protected: - int m_SchematicOrientation; /* orientation of texts (comments) and - * labels in schematic - * 0 = normal (horizontal, left - * justified). - * 1 = up (vertical) - * 2 = (horizontal, right justified). - * This can be seen as the mirrored - * position of 0 - * 3 = bottom . This can be seen as the - * mirrored position of up - * this is perhaps a duplicate of m_Orient - * and m_HJustified or m_VJustified, - * but is more easy to handle that 3 - * parameters in editions, Reading and - * Saving file - */ + int m_shape; + + /// True if not connected to another object if the object derive from SCH_TEXT + /// supports connections. + bool m_isDangling; + + /** + * The orientation of text and any associated drawing elements of derived objects. + * 0 is the horizontal and left justified. + * 1 is vertical and top justified. + * 2 is horizontal and right justified. It is the equivalent of the mirrored 0 orentation. + * 3 is veritcal and bottom justifiend. It is the equivalent of the mirrored 1 orentation. + * This is a duplicattion of m_Orient, m_HJustified, and m_VJustified in #EDA_TEXT but is + * easier to handle that 3 parameters when editing and reading and saving files. + */ + int m_schematicOrientation; public: SCH_TEXT( const wxPoint& pos = wxPoint( 0, 0 ), @@ -100,10 +96,10 @@ public: /** * Function SetOrientation - * Set m_SchematicOrientation, and initialize + * Set m_schematicOrientation, and initialize * m_orient,m_HJustified and m_VJustified, according to the value of - * m_SchematicOrientation (for a text ) - * must be called after changing m_SchematicOrientation + * m_schematicOrientation (for a text ) + * must be called after changing m_schematicOrientation * @param aSchematicOrientation = * 0 = normal (horizontal, left justified). * 1 = up (vertical) @@ -113,15 +109,18 @@ public: */ virtual void SetOrientation( int aSchematicOrientation ); - int GetOrientation() { return m_SchematicOrientation; } + int GetOrientation() { return m_schematicOrientation; } + + int GetShape() const { return m_shape; } + + void SetShape( int aShape ) { m_shape = aShape; } /** * Function GetSchematicTextOffset (virtual) - * @return the offset between the SCH_TEXT position and the text itself - * position - * This offset depend on orientation, and the type of text - * (room to draw an associated graphic symbol, or put the text above a - * wire) + * @return the offset between the SCH_TEXT position and the text itself position + * + * This offset depends on the orientation, the type of text, and the area required to + * draw the associated graphic symbol or to put the text above a wire. */ virtual wxPoint GetSchematicTextOffset() const; @@ -203,12 +202,7 @@ public: virtual void Mirror_X( int aXaxis_position ); /** - * Compare schematic text entry against search string. - * - * @param aSearchData - Criterial to search against. - * @param aAuxData - a pointer on auxiliary data, if needed. Can be null - * @param aFindLocation - a wxPoint where to put the location of matched item. can be NULL. - * @return True if this schematic text item matches the search criteria. + * @copydoc EDA_ITEM::Matches(wxFindReplaceData&,void*,wxPoint*) */ virtual bool Matches( wxFindReplaceData& aSearchData, void* aAuxData, wxPoint* aFindLocation ); @@ -216,7 +210,7 @@ public: virtual bool IsDanglingStateChanged( std::vector< DANGLING_END_ITEM >& aItemList ); - virtual bool IsDangling() const { return m_IsDangling; } + virtual bool IsDangling() const { return m_isDangling; } virtual bool IsSelectStateChanged( const wxRect& aRect ); @@ -267,10 +261,10 @@ public: /** * Function SetOrientation - * Set m_SchematicOrientation, and initialize + * Set m_schematicOrientation, and initialize * m_orient,m_HJustified and m_VJustified, according to the value of - * m_SchematicOrientation (for a label) - * must be called after changing m_SchematicOrientation + * m_schematicOrientation (for a label) + * must be called after changing m_schematicOrientation * @param aSchematicOrientation = * 0 = normal (horizontal, left justified). * 1 = up (vertical) @@ -362,10 +356,10 @@ public: /** * Function SetOrientation - * Set m_SchematicOrientation, and initialize + * Set m_schematicOrientation, and initialize * m_orient,m_HJustified and m_VJustified, according to the value of - * m_SchematicOrientation - * must be called after changing m_SchematicOrientation + * m_schematicOrientation + * must be called after changing m_schematicOrientation * @param aSchematicOrientation = * 0 = normal (horizontal, left justified). * 1 = up (vertical) @@ -468,10 +462,10 @@ public: /** * Function SetOrientation - * Set m_SchematicOrientation, and initialize + * Set m_schematicOrientation, and initialize * m_orient,m_HJustified and m_VJustified, according to the value of - * m_SchematicOrientation - * must be called after changing m_SchematicOrientation + * m_schematicOrientation + * must be called after changing m_schematicOrientation * @param aSchematicOrientation = * 0 = normal (horizontal, left justified). * 1 = up (vertical) diff --git a/eeschema/sheet.cpp b/eeschema/sheet.cpp index 1f7d52ee7b..c680c76327 100644 --- a/eeschema/sheet.cpp +++ b/eeschema/sheet.cpp @@ -50,12 +50,12 @@ bool SCH_EDIT_FRAME::EditSheet( SCH_SHEET* aSheet, wxDC* aDC ) wxString units = GetUnitsLabel( g_UserUnit ); dlg.SetFileName( aSheet->GetFileName() ); dlg.SetFileNameTextSize( ReturnStringFromValue( g_UserUnit, - aSheet->m_FileNameSize, + aSheet->GetFileNameSize(), m_InternalUnits ) ); dlg.SetFileNameTextSizeUnits( units ); - dlg.SetSheetName( aSheet->m_SheetName ); + dlg.SetSheetName( aSheet->GetName() ); dlg.SetSheetNameTextSize( ReturnStringFromValue( g_UserUnit, - aSheet->m_SheetNameSize, + aSheet->GetSheetNameSize(), m_InternalUnits ) ); dlg.SetSheetNameTextSizeUnits( units ); @@ -192,16 +192,16 @@ bool SCH_EDIT_FRAME::EditSheet( SCH_SHEET* aSheet, wxDC* aDC ) else if( loadFromFile ) aSheet->Load( this ); - aSheet->m_FileNameSize = ReturnValueFromString( g_UserUnit, + aSheet->SetFileNameSize( ReturnValueFromString( g_UserUnit, dlg.GetFileNameTextSize(), - m_InternalUnits ); - aSheet->m_SheetName = dlg.GetSheetName(); - aSheet->m_SheetNameSize = ReturnValueFromString( g_UserUnit, + m_InternalUnits ) ); + aSheet->SetName( dlg.GetSheetName() ); + aSheet->SetSheetNameSize( ReturnValueFromString( g_UserUnit, dlg.GetSheetNameTextSize(), - m_InternalUnits ); + m_InternalUnits ) ); - if( aSheet->m_SheetName.IsEmpty() ) - aSheet->m_SheetName.Printf( wxT( "Sheet%8.8lX" ), aSheet->GetTimeStamp() ); + if( aSheet->GetName().IsEmpty() ) + aSheet->SetName( wxString::Format( wxT( "Sheet%8.8lX" ), aSheet->GetTimeStamp() ) ); DrawPanel->MoveCursorToCrossHair(); DrawPanel->m_IgnoreMouseEvents = false; @@ -225,10 +225,12 @@ static void MoveOrResizeSheet( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& if( aErase ) sheet->Draw( aPanel, aDC, wxPoint( 0, 0 ), g_XorMode ); + wxPoint pos = sheet->GetPosition(); + if( sheet->IsResized() ) { - int width = screen->GetCrossHairPosition().x - sheet->m_Pos.x; - int height = screen->GetCrossHairPosition().y - sheet->m_Pos.y; + int width = screen->GetCrossHairPosition().x - sheet->GetPosition().x; + int height = screen->GetCrossHairPosition().y - sheet->GetPosition().y; // If the sheet doesn't have any pins, clamp the minimum size to the default values. width = ( width < MIN_SHEET_WIDTH ) ? MIN_SHEET_WIDTH : width; @@ -241,18 +243,17 @@ static void MoveOrResizeSheet( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& // If the sheet has pins, use the pin positions to clamp the minimum height. height = ( height < sheet->GetMinHeight() + gridSizeY ) ? - sheet->GetMinHeight() + gridSizeY : height; + sheet->GetMinHeight() + gridSizeY : height; width = ( width < sheet->GetMinWidth() + gridSizeX ) ? - sheet->GetMinWidth() + gridSizeX : width; + sheet->GetMinWidth() + gridSizeX : width; } - wxPoint grid = screen->GetNearestGridPosition( wxPoint( sheet->m_Pos.x + width, - sheet->m_Pos.y + height ) ); - sheet->Resize( wxSize( grid.x - sheet->m_Pos.x, grid.y - sheet->m_Pos.y ) ); + wxPoint grid = screen->GetNearestGridPosition( wxPoint( pos.x + width, pos.y + height ) ); + sheet->Resize( wxSize( grid.x - pos.x, grid.y - pos.y ) ); } else if( sheet->IsMoving() ) { - moveVector = screen->GetCrossHairPosition() - sheet->m_Pos; + moveVector = screen->GetCrossHairPosition() - pos; sheet->Move( moveVector ); } @@ -361,7 +362,7 @@ void SCH_EDIT_FRAME::StartMoveSheet( SCH_SHEET* aSheet, wxDC* aDC ) return; DrawPanel->CrossHairOff( aDC ); - GetScreen()->SetCrossHairPosition( aSheet->m_Pos ); + GetScreen()->SetCrossHairPosition( aSheet->GetPosition() ); DrawPanel->MoveCursorToCrossHair(); if( !aSheet->IsNew() ) diff --git a/eeschema/sheetlab.cpp b/eeschema/sheetlab.cpp index 7f1c119970..8397497b9e 100644 --- a/eeschema/sheetlab.cpp +++ b/eeschema/sheetlab.cpp @@ -60,7 +60,7 @@ int SCH_EDIT_FRAME::EditSheetPin( SCH_SHEET_PIN* aSheetPin, wxDC* aDC ) dlg.SetTextHeightUnits( GetUnitsLabel( g_UserUnit ) ); dlg.SetTextWidth( ReturnStringFromValue( g_UserUnit, aSheetPin->m_Size.x, m_InternalUnits ) ); dlg.SetTextWidthUnits( GetUnitsLabel( g_UserUnit ) ); - dlg.SetConnectionType( aSheetPin->m_Shape ); + dlg.SetConnectionType( aSheetPin->GetShape() ); /* This ugly hack fixes a bug in wxWidgets 2.8.7 and likely earlier versions for * the flex grid sizer in wxGTK that prevents the last column from being sized @@ -86,7 +86,7 @@ int SCH_EDIT_FRAME::EditSheetPin( SCH_SHEET_PIN* aSheetPin, wxDC* aDC ) aSheetPin->m_Text = dlg.GetLabelName(); aSheetPin->m_Size.y = ReturnValueFromString( g_UserUnit, dlg.GetTextHeight(), m_InternalUnits ); aSheetPin->m_Size.x = ReturnValueFromString( g_UserUnit, dlg.GetTextWidth(), m_InternalUnits ); - aSheetPin->m_Shape = dlg.GetConnectionType(); + aSheetPin->SetShape( dlg.GetConnectionType() ); if( aDC ) aSheetPin->Draw( DrawPanel, aDC, wxPoint( 0, 0 ), GR_DEFAULT_DRAWMODE ); @@ -103,7 +103,7 @@ SCH_SHEET_PIN* SCH_EDIT_FRAME::CreateSheetPin( SCH_SHEET* aSheet, wxDC* aDC ) sheetPin = new SCH_SHEET_PIN( aSheet, wxPoint( 0, 0 ), line ); sheetPin->SetFlags( IS_NEW ); sheetPin->m_Size = m_lastSheetPinTextSize; - sheetPin->m_Shape = m_lastSheetPinType; + sheetPin->SetShape( m_lastSheetPinType ); int response = EditSheetPin( sheetPin, NULL ); @@ -113,7 +113,7 @@ SCH_SHEET_PIN* SCH_EDIT_FRAME::CreateSheetPin( SCH_SHEET* aSheet, wxDC* aDC ) return NULL; } - m_lastSheetPinType = sheetPin->m_Shape; + m_lastSheetPinType = sheetPin->GetShape(); m_lastSheetPinTextSize = sheetPin->m_Size; MoveItem( (SCH_ITEM*) sheetPin, aDC ); @@ -157,7 +157,8 @@ SCH_SHEET_PIN* SCH_EDIT_FRAME::ImportSheetPin( SCH_SHEET* aSheet, wxDC* aDC ) sheetPin = new SCH_SHEET_PIN( aSheet, wxPoint( 0, 0 ), label->m_Text ); sheetPin->SetFlags( IS_NEW ); sheetPin->m_Size = m_lastSheetPinTextSize; - m_lastSheetPinType = sheetPin->m_Shape = label->m_Shape; + m_lastSheetPinType = label->GetShape(); + sheetPin->SetShape( label->GetShape() ); MoveItem( (SCH_ITEM*) sheetPin, aDC ); diff --git a/include/base_struct.h b/include/base_struct.h index 900e7f42d4..e5157cd4f5 100644 --- a/include/base_struct.h +++ b/include/base_struct.h @@ -162,16 +162,16 @@ public: /** * Function Inspect * is the examining function within the INSPECTOR which is passed to the - * Iterate function. It is used primarily for searching, but not limited - * to that. It can also collect or modify the scanned objects. + * EDA_ITEM::Iterate() function. It is used primarily for searching, but + * not limited to that. It can also collect or modify the scanned objects. * - * @param testItem An EDA_ITEM to examine. - * @param testData is arbitrary data needed by the inspector to determine - * if the EDA_ITEM under test meets its match criteria. - * @return SEARCH_RESULT SEARCH_QUIT if the Iterator is to stop the scan, - * else SCAN_CONTINUE; + * @param aItem An EDA_ITEM to examine. + * @param aTestData is arbitrary data needed by the inspector to determine + * if the EDA_ITEM under test meets its match criteria. + * @return A #SEARCH_RESULT type #SEARCH_QUIT if the iterator function is to + * stop the scan, else #SEARCH_CONTINUE; */ - SEARCH_RESULT virtual Inspect( EDA_ITEM* testItem, const void* testData ) = 0; + SEARCH_RESULT virtual Inspect( EDA_ITEM* aItem, const void* aTestData ) = 0; };