Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
1047e60e
Commit
1047e60e
authored
Dec 08, 2011
by
Wayne Stambaugh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Encapsulate SCH_POLYLINE, SCH_SHEET, and SCH_TEXT classes.
parent
eb52f4ba
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
573 additions
and
464 deletions
+573
-464
build_BOM.cpp
eeschema/build_BOM.cpp
+30
-6
bus-wire-junction.cpp
eeschema/bus-wire-junction.cpp
+5
-5
dialog_edit_label.cpp
eeschema/dialogs/dialog_edit_label.cpp
+40
-9
edit_label.cpp
eeschema/edit_label.cpp
+4
-4
erc.cpp
eeschema/erc.cpp
+4
-4
hierarch.cpp
eeschema/hierarch.cpp
+1
-1
sch_polyline.cpp
eeschema/sch_polyline.cpp
+51
-26
sch_polyline.h
eeschema/sch_polyline.h
+40
-9
sch_screen.cpp
eeschema/sch_screen.cpp
+1
-1
sch_sheet.cpp
eeschema/sch_sheet.cpp
+137
-132
sch_sheet.h
eeschema/sch_sheet.h
+82
-72
sch_sheet_path.cpp
eeschema/sch_sheet_path.cpp
+1
-1
sch_sheet_pin.cpp
eeschema/sch_sheet_pin.cpp
+40
-50
sch_text.cpp
eeschema/sch_text.cpp
+64
-67
sch_text.h
eeschema/sch_text.h
+39
-45
sheet.cpp
eeschema/sheet.cpp
+20
-19
sheetlab.cpp
eeschema/sheetlab.cpp
+6
-5
base_struct.h
include/base_struct.h
+8
-8
No files found.
eeschema/build_BOM.cpp
View file @
1047e60e
/////////////////////////////////////////////////////////////////////////////
/*
// Name: build_BOM.cpp
* This program source code file is part of KiCad, a free EDA CAD application.
// Author: jean-pierre Charras
*
// License: GPL license
* Copyright (C) 2009 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
/////////////////////////////////////////////////////////////////////////////
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
* Copyright (C) 1992-2011 KiCad Developers, see AUTHORS.txt for contributors.
*
* This program is free software; you can redistribute it and/or
* 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 <algorithm> // to use sort vector
#include <algorithm> // to use sort vector
#include <vector>
#include <vector>
...
@@ -159,7 +183,7 @@ int PrintListeGLabel( FILE* f, LABEL_OBJECT_LIST& aList )
...
@@ -159,7 +183,7 @@ int PrintListeGLabel( FILE* f, LABEL_OBJECT_LIST& aList )
case
SCH_SHEET_PIN_T
:
case
SCH_SHEET_PIN_T
:
{
{
pinsheet
=
(
SCH_SHEET_PIN
*
)
aList
[
ii
].
m_Label
;
pinsheet
=
(
SCH_SHEET_PIN
*
)
aList
[
ii
].
m_Label
;
int
jj
=
pinsheet
->
m_Shape
;
int
jj
=
pinsheet
->
GetShape
()
;
if
(
jj
<
0
)
if
(
jj
<
0
)
jj
=
NET_TMAX
;
jj
=
NET_TMAX
;
...
...
eeschema/bus-wire-junction.cpp
View file @
1047e60e
...
@@ -424,18 +424,18 @@ void SCH_EDIT_FRAME::DeleteCurrentSegment( wxDC* DC )
...
@@ -424,18 +424,18 @@ void SCH_EDIT_FRAME::DeleteCurrentSegment( wxDC* DC )
endpos
=
screen
->
GetCrossHairPosition
();
endpos
=
screen
->
GetCrossHairPosition
();
int
idx
=
polyLine
->
GetCornerCount
()
-
1
;
int
idx
=
polyLine
->
GetCornerCount
()
-
1
;
wxPoint
pt
=
(
*
polyLine
)[
idx
];
if
(
g_HVLines
)
if
(
g_HVLines
)
{
{
/* Coerce the line to vertical or horizontal one: */
/* Coerce the line to vertical or horizontal one: */
if
(
ABS
(
endpos
.
x
-
polyLine
->
m_PolyPoints
[
idx
].
x
)
<
if
(
ABS
(
endpos
.
x
-
pt
.
x
)
<
ABS
(
endpos
.
y
-
pt
.
y
)
)
ABS
(
endpos
.
y
-
polyLine
->
m_PolyPoints
[
idx
].
y
)
)
endpos
.
x
=
pt
.
x
;
endpos
.
x
=
polyLine
->
m_PolyPoints
[
idx
].
x
;
else
else
endpos
.
y
=
p
olyLine
->
m_PolyPoints
[
idx
]
.
y
;
endpos
.
y
=
p
t
.
y
;
}
}
polyLine
->
m_PolyPoints
[
idx
]
=
endpos
;
polyLine
->
SetPoint
(
idx
,
endpos
)
;
polyLine
->
Draw
(
DrawPanel
,
DC
,
wxPoint
(
0
,
0
),
g_XorMode
);
polyLine
->
Draw
(
DrawPanel
,
DC
,
wxPoint
(
0
,
0
),
g_XorMode
);
}
}
else
else
...
...
eeschema/dialogs/dialog_edit_label.cpp
View file @
1047e60e
/////////////////////////////////////////////////////////////////////////////
/*
// Name: dialog_edit_label.cpp
* This program source code file is part of KiCad, a free EDA CAD application.
// Author: jean-pierre Charras
*
// Modified by:
* Copyright (C) 2008 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
// Created: 18/12/2008 15:46:26
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
// Licence: GPL
* 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 "fctsys.h"
#include "wx/valgen.h"
#include "wx/valgen.h"
...
@@ -98,6 +120,7 @@ void DialogLabelEditor::InitDialog()
...
@@ -98,6 +120,7 @@ void DialogLabelEditor::InitDialog()
int
MINTEXTWIDTH
=
40
;
// M's are big characters, a few establish a lot of width
int
MINTEXTWIDTH
=
40
;
// M's are big characters, a few establish a lot of width
int
max_len
=
0
;
int
max_len
=
0
;
if
(
!
multiLine
)
if
(
!
multiLine
)
{
{
max_len
=
m_CurrentText
->
m_Text
.
Length
();
max_len
=
m_CurrentText
->
m_Text
.
Length
();
...
@@ -108,6 +131,7 @@ void DialogLabelEditor::InitDialog()
...
@@ -108,6 +131,7 @@ void DialogLabelEditor::InitDialog()
// we cannot use the length of the entire text that has no meaning
// we cannot use the length of the entire text that has no meaning
int
curr_len
=
MINTEXTWIDTH
;
int
curr_len
=
MINTEXTWIDTH
;
int
imax
=
m_CurrentText
->
m_Text
.
Len
();
int
imax
=
m_CurrentText
->
m_Text
.
Len
();
for
(
int
count
=
0
;
count
<
imax
;
count
++
)
for
(
int
count
=
0
;
count
<
imax
;
count
++
)
{
{
if
(
m_CurrentText
->
m_Text
[
count
]
==
'\n'
||
if
(
m_CurrentText
->
m_Text
[
count
]
==
'\n'
||
...
@@ -118,11 +142,13 @@ void DialogLabelEditor::InitDialog()
...
@@ -118,11 +142,13 @@ void DialogLabelEditor::InitDialog()
else
else
{
{
curr_len
++
;
curr_len
++
;
if
(
max_len
<
curr_len
)
if
(
max_len
<
curr_len
)
max_len
=
curr_len
;
max_len
=
curr_len
;
}
}
}
}
}
}
if
(
max_len
<
MINTEXTWIDTH
)
if
(
max_len
<
MINTEXTWIDTH
)
max_len
=
MINTEXTWIDTH
;
max_len
=
MINTEXTWIDTH
;
...
@@ -132,11 +158,13 @@ void DialogLabelEditor::InitDialog()
...
@@ -132,11 +158,13 @@ void DialogLabelEditor::InitDialog()
// Set validators
// Set validators
m_TextOrient
->
SetSelection
(
m_CurrentText
->
GetOrientation
()
);
m_TextOrient
->
SetSelection
(
m_CurrentText
->
GetOrientation
()
);
m_TextShape
->
SetSelection
(
m_CurrentText
->
m_Shape
);
m_TextShape
->
SetSelection
(
m_CurrentText
->
GetShape
()
);
int
style
=
0
;
int
style
=
0
;
if
(
m_CurrentText
->
m_Italic
)
if
(
m_CurrentText
->
m_Italic
)
style
=
1
;
style
=
1
;
if
(
m_CurrentText
->
m_Bold
)
if
(
m_CurrentText
->
m_Bold
)
style
+=
2
;
style
+=
2
;
...
@@ -203,6 +231,7 @@ void DialogLabelEditor::TextPropertiesAccept( wxCommandEvent& aEvent )
...
@@ -203,6 +231,7 @@ void DialogLabelEditor::TextPropertiesAccept( wxCommandEvent& aEvent )
m_Parent
->
DrawPanel
->
RefreshDrawingRect
(
m_CurrentText
->
GetBoundingBox
()
);
m_Parent
->
DrawPanel
->
RefreshDrawingRect
(
m_CurrentText
->
GetBoundingBox
()
);
text
=
m_textLabel
->
GetValue
();
text
=
m_textLabel
->
GetValue
();
if
(
!
text
.
IsEmpty
()
)
if
(
!
text
.
IsEmpty
()
)
m_CurrentText
->
m_Text
=
text
;
m_CurrentText
->
m_Text
=
text
;
else
if
(
(
m_CurrentText
->
m_Flags
&
IS_NEW
)
==
0
)
else
if
(
(
m_CurrentText
->
m_Flags
&
IS_NEW
)
==
0
)
...
@@ -212,10 +241,12 @@ void DialogLabelEditor::TextPropertiesAccept( wxCommandEvent& aEvent )
...
@@ -212,10 +241,12 @@ void DialogLabelEditor::TextPropertiesAccept( wxCommandEvent& aEvent )
text
=
m_TextSize
->
GetValue
();
text
=
m_TextSize
->
GetValue
();
value
=
ReturnValueFromString
(
g_UserUnit
,
text
,
m_Parent
->
m_InternalUnits
);
value
=
ReturnValueFromString
(
g_UserUnit
,
text
,
m_Parent
->
m_InternalUnits
);
m_CurrentText
->
m_Size
.
x
=
m_CurrentText
->
m_Size
.
y
=
value
;
m_CurrentText
->
m_Size
.
x
=
m_CurrentText
->
m_Size
.
y
=
value
;
if
(
m_TextShape
)
if
(
m_TextShape
)
m_CurrentText
->
m_Shape
=
m_TextShape
->
GetSelection
(
);
m_CurrentText
->
SetShape
(
m_TextShape
->
GetSelection
()
);
int
style
=
m_TextStyle
->
GetSelection
();
int
style
=
m_TextStyle
->
GetSelection
();
if
(
(
style
&
1
)
)
if
(
(
style
&
1
)
)
m_CurrentText
->
m_Italic
=
1
;
m_CurrentText
->
m_Italic
=
1
;
else
else
...
...
eeschema/edit_label.cpp
View file @
1047e60e
...
@@ -87,12 +87,12 @@ SCH_TEXT* SCH_EDIT_FRAME::CreateNewText( wxDC* aDC, int aType )
...
@@ -87,12 +87,12 @@ SCH_TEXT* SCH_EDIT_FRAME::CreateNewText( wxDC* aDC, int aType )
case
LAYER_HIERLABEL
:
case
LAYER_HIERLABEL
:
textItem
=
new
SCH_HIERLABEL
(
GetScreen
()
->
GetCrossHairPosition
()
);
textItem
=
new
SCH_HIERLABEL
(
GetScreen
()
->
GetCrossHairPosition
()
);
textItem
->
m_Shape
=
lastGlobalLabelShape
;
textItem
->
SetShape
(
lastGlobalLabelShape
)
;
break
;
break
;
case
LAYER_GLOBLABEL
:
case
LAYER_GLOBLABEL
:
textItem
=
new
SCH_GLOBALLABEL
(
GetScreen
()
->
GetCrossHairPosition
()
);
textItem
=
new
SCH_GLOBALLABEL
(
GetScreen
()
->
GetCrossHairPosition
()
);
textItem
->
m_Shape
=
lastGlobalLabelShape
;
textItem
->
SetShape
(
lastGlobalLabelShape
)
;
break
;
break
;
default
:
default
:
...
@@ -121,7 +121,7 @@ SCH_TEXT* SCH_EDIT_FRAME::CreateNewText( wxDC* aDC, int aType )
...
@@ -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
)
)
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
);
textItem
->
Draw
(
DrawPanel
,
aDC
,
wxPoint
(
0
,
0
),
GR_DEFAULT_DRAWMODE
);
...
@@ -207,7 +207,7 @@ void SCH_EDIT_FRAME::OnConvertTextType( wxCommandEvent& aEvent )
...
@@ -207,7 +207,7 @@ void SCH_EDIT_FRAME::OnConvertTextType( wxCommandEvent& aEvent )
* text item type.
* text item type.
*/
*/
newtext
->
SetFlags
(
text
->
GetFlags
()
);
newtext
->
SetFlags
(
text
->
GetFlags
()
);
newtext
->
m_Shape
=
text
->
m_Shape
;
newtext
->
SetShape
(
text
->
GetShape
()
)
;
newtext
->
SetOrientation
(
text
->
GetOrientation
()
);
newtext
->
SetOrientation
(
text
->
GetOrientation
()
);
newtext
->
m_Size
=
text
->
m_Size
;
newtext
->
m_Size
=
text
->
m_Size
;
newtext
->
m_Thickness
=
text
->
m_Thickness
;
newtext
->
m_Thickness
=
text
->
m_Thickness
;
...
...
eeschema/erc.cpp
View file @
1047e60e
...
@@ -197,8 +197,8 @@ int TestDuplicateSheetNames( bool aCreateMarker )
...
@@ -197,8 +197,8 @@ int TestDuplicateSheetNames( bool aCreateMarker )
continue
;
continue
;
// We have found a second sheet: compare names
// We have found a second sheet: compare names
if
(
(
(
SCH_SHEET
*
)
item
)
->
m_SheetName
.
CmpNoCase
(
if
(
(
(
SCH_SHEET
*
)
item
)
->
GetName
()
.
CmpNoCase
(
(
(
SCH_SHEET
*
)
test_item
)
->
m_SheetName
)
==
0
)
(
(
SCH_SHEET
*
)
test_item
)
->
GetName
()
)
==
0
)
{
{
if
(
aCreateMarker
)
if
(
aCreateMarker
)
{
{
...
@@ -206,9 +206,9 @@ int TestDuplicateSheetNames( bool aCreateMarker )
...
@@ -206,9 +206,9 @@ int TestDuplicateSheetNames( bool aCreateMarker )
SCH_MARKER
*
marker
=
new
SCH_MARKER
();
SCH_MARKER
*
marker
=
new
SCH_MARKER
();
marker
->
m_TimeStamp
=
GetNewTimeStamp
();
marker
->
m_TimeStamp
=
GetNewTimeStamp
();
marker
->
SetData
(
ERCE_DUPLICATE_SHEET_NAME
,
marker
->
SetData
(
ERCE_DUPLICATE_SHEET_NAME
,
(
(
SCH_SHEET
*
)
test_item
)
->
m_Pos
,
(
(
SCH_SHEET
*
)
test_item
)
->
GetPosition
()
,
_
(
"Duplicate sheet name"
),
_
(
"Duplicate sheet name"
),
(
(
SCH_SHEET
*
)
test_item
)
->
m_Pos
);
(
(
SCH_SHEET
*
)
test_item
)
->
GetPosition
()
);
marker
->
SetMarkerType
(
MARK_ERC
);
marker
->
SetMarkerType
(
MARK_ERC
);
marker
->
SetErrorLevel
(
ERR
);
marker
->
SetErrorLevel
(
ERR
);
marker
->
SetNext
(
screen
->
GetDrawItems
()
);
marker
->
SetNext
(
screen
->
GetDrawItems
()
);
...
...
eeschema/hierarch.cpp
View file @
1047e60e
...
@@ -197,7 +197,7 @@ void HIERARCHY_NAVIG_DLG::BuildSheetsTree( SCH_SHEET_PATH* list, wxTreeItemId*
...
@@ -197,7 +197,7 @@ void HIERARCHY_NAVIG_DLG::BuildSheetsTree( SCH_SHEET_PATH* list, wxTreeItemId*
{
{
SCH_SHEET
*
sheet
=
(
SCH_SHEET
*
)
schitem
;
SCH_SHEET
*
sheet
=
(
SCH_SHEET
*
)
schitem
;
m_nbsheets
++
;
m_nbsheets
++
;
menu
=
m_Tree
->
AppendItem
(
*
previousmenu
,
sheet
->
m_SheetName
,
0
,
1
);
menu
=
m_Tree
->
AppendItem
(
*
previousmenu
,
sheet
->
GetName
()
,
0
,
1
);
list
->
Push
(
sheet
);
list
->
Push
(
sheet
);
m_Tree
->
SetItemData
(
menu
,
new
TreeItemData
(
*
list
)
);
m_Tree
->
SetItemData
(
menu
,
new
TreeItemData
(
*
list
)
);
int
ll
=
m_Tree
->
GetItemText
(
menu
).
Len
();
int
ll
=
m_Tree
->
GetItemText
(
menu
).
Len
();
...
...
eeschema/sch_polyline.cpp
View file @
1047e60e
/**********************/
/*
/* 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 <stambaughw@verizon.net>
* 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 "fctsys.h"
#include "gr_basic.h"
#include "gr_basic.h"
...
@@ -18,7 +43,7 @@
...
@@ -18,7 +43,7 @@
SCH_POLYLINE
::
SCH_POLYLINE
(
int
layer
)
:
SCH_POLYLINE
::
SCH_POLYLINE
(
int
layer
)
:
SCH_ITEM
(
NULL
,
SCH_POLYLINE_T
)
SCH_ITEM
(
NULL
,
SCH_POLYLINE_T
)
{
{
m_
W
idth
=
0
;
m_
w
idth
=
0
;
switch
(
layer
)
switch
(
layer
)
{
{
...
@@ -38,8 +63,8 @@ SCH_POLYLINE::SCH_POLYLINE( int layer ) :
...
@@ -38,8 +63,8 @@ SCH_POLYLINE::SCH_POLYLINE( int layer ) :
SCH_POLYLINE
::
SCH_POLYLINE
(
const
SCH_POLYLINE
&
aPolyLine
)
:
SCH_POLYLINE
::
SCH_POLYLINE
(
const
SCH_POLYLINE
&
aPolyLine
)
:
SCH_ITEM
(
aPolyLine
)
SCH_ITEM
(
aPolyLine
)
{
{
m_
Width
=
aPolyLine
.
m_W
idth
;
m_
width
=
aPolyLine
.
m_w
idth
;
m_
PolyPoints
=
aPolyLine
.
m_PolyP
oints
;
m_
points
=
aPolyLine
.
m_p
oints
;
}
}
...
@@ -74,7 +99,7 @@ bool SCH_POLYLINE::Save( FILE* aFile ) const
...
@@ -74,7 +99,7 @@ bool SCH_POLYLINE::Save( FILE* aFile ) const
for
(
unsigned
ii
=
0
;
ii
<
GetCornerCount
();
ii
++
)
for
(
unsigned
ii
=
0
;
ii
<
GetCornerCount
();
ii
++
)
{
{
if
(
fprintf
(
aFile
,
"
\t
%-4d %-4d
\n
"
,
m_
PolyPoints
[
ii
].
x
,
m_PolyP
oints
[
ii
].
y
)
==
EOF
)
if
(
fprintf
(
aFile
,
"
\t
%-4d %-4d
\n
"
,
m_
points
[
ii
].
x
,
m_p
oints
[
ii
].
y
)
==
EOF
)
{
{
success
=
false
;
success
=
false
;
break
;
break
;
...
@@ -133,7 +158,7 @@ bool SCH_POLYLINE::Load( LINE_READER& aLine, wxString& aErrorMsg )
...
@@ -133,7 +158,7 @@ bool SCH_POLYLINE::Load( LINE_READER& aLine, wxString& aErrorMsg )
int
SCH_POLYLINE
::
GetPenSize
()
const
int
SCH_POLYLINE
::
GetPenSize
()
const
{
{
int
pensize
=
(
m_
Width
==
0
)
?
g_DrawDefaultLineThickness
:
m_W
idth
;
int
pensize
=
(
m_
width
==
0
)
?
g_DrawDefaultLineThickness
:
m_w
idth
;
return
pensize
;
return
pensize
;
}
}
...
@@ -157,19 +182,19 @@ void SCH_POLYLINE::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffs
...
@@ -157,19 +182,19 @@ void SCH_POLYLINE::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffs
width
*=
3
;
width
*=
3
;
}
}
GRMoveTo
(
m_
PolyPoints
[
0
].
x
,
m_PolyP
oints
[
0
].
y
);
GRMoveTo
(
m_
points
[
0
].
x
,
m_p
oints
[
0
].
y
);
if
(
m_Layer
==
LAYER_NOTES
)
if
(
m_Layer
==
LAYER_NOTES
)
{
{
for
(
unsigned
i
=
1
;
i
<
GetCornerCount
();
i
++
)
for
(
unsigned
i
=
1
;
i
<
GetCornerCount
();
i
++
)
GRDashedLineTo
(
&
aPanel
->
m_ClipBox
,
aDC
,
m_
PolyP
oints
[
i
].
x
+
aOffset
.
x
,
GRDashedLineTo
(
&
aPanel
->
m_ClipBox
,
aDC
,
m_
p
oints
[
i
].
x
+
aOffset
.
x
,
m_
PolyP
oints
[
i
].
y
+
aOffset
.
y
,
width
,
color
);
m_
p
oints
[
i
].
y
+
aOffset
.
y
,
width
,
color
);
}
}
else
else
{
{
for
(
unsigned
i
=
1
;
i
<
GetCornerCount
();
i
++
)
for
(
unsigned
i
=
1
;
i
<
GetCornerCount
();
i
++
)
GRLineTo
(
&
aPanel
->
m_ClipBox
,
aDC
,
m_
PolyP
oints
[
i
].
x
+
aOffset
.
x
,
GRLineTo
(
&
aPanel
->
m_ClipBox
,
aDC
,
m_
p
oints
[
i
].
x
+
aOffset
.
x
,
m_
PolyP
oints
[
i
].
y
+
aOffset
.
y
,
width
,
color
);
m_
p
oints
[
i
].
y
+
aOffset
.
y
,
width
,
color
);
}
}
}
}
...
@@ -178,9 +203,9 @@ void SCH_POLYLINE::Mirror_X( int aXaxis_position )
...
@@ -178,9 +203,9 @@ void SCH_POLYLINE::Mirror_X( int aXaxis_position )
{
{
for
(
unsigned
ii
=
0
;
ii
<
GetCornerCount
();
ii
++
)
for
(
unsigned
ii
=
0
;
ii
<
GetCornerCount
();
ii
++
)
{
{
m_
PolyP
oints
[
ii
].
y
-=
aXaxis_position
;
m_
p
oints
[
ii
].
y
-=
aXaxis_position
;
NEGATE
(
m_
PolyP
oints
[
ii
].
y
);
NEGATE
(
m_
p
oints
[
ii
].
y
);
m_
PolyP
oints
[
ii
].
y
=
aXaxis_position
;
m_
p
oints
[
ii
].
y
=
aXaxis_position
;
}
}
}
}
...
@@ -189,9 +214,9 @@ void SCH_POLYLINE::Mirror_Y( int aYaxis_position )
...
@@ -189,9 +214,9 @@ void SCH_POLYLINE::Mirror_Y( int aYaxis_position )
{
{
for
(
unsigned
ii
=
0
;
ii
<
GetCornerCount
();
ii
++
)
for
(
unsigned
ii
=
0
;
ii
<
GetCornerCount
();
ii
++
)
{
{
m_
PolyP
oints
[
ii
].
x
-=
aYaxis_position
;
m_
p
oints
[
ii
].
x
-=
aYaxis_position
;
NEGATE
(
m_
PolyP
oints
[
ii
].
x
);
NEGATE
(
m_
p
oints
[
ii
].
x
);
m_
PolyP
oints
[
ii
].
x
=
aYaxis_position
;
m_
p
oints
[
ii
].
x
=
aYaxis_position
;
}
}
}
}
...
@@ -200,7 +225,7 @@ void SCH_POLYLINE::Rotate( wxPoint rotationPoint )
...
@@ -200,7 +225,7 @@ void SCH_POLYLINE::Rotate( wxPoint rotationPoint )
{
{
for
(
unsigned
ii
=
0
;
ii
<
GetCornerCount
();
ii
++
)
for
(
unsigned
ii
=
0
;
ii
<
GetCornerCount
();
ii
++
)
{
{
RotatePoint
(
&
m_
PolyP
oints
[
ii
],
rotationPoint
,
900
);
RotatePoint
(
&
m_
p
oints
[
ii
],
rotationPoint
,
900
);
}
}
}
}
...
@@ -227,7 +252,7 @@ wxString SCH_POLYLINE::GetSelectMenuText() const
...
@@ -227,7 +252,7 @@ wxString SCH_POLYLINE::GetSelectMenuText() const
fmt
=
_
(
"Polyline on Unkown Layer with %d Points"
);
fmt
=
_
(
"Polyline on Unkown Layer with %d Points"
);
}
}
menuText
.
Printf
(
fmt
,
m_
PolyP
oints
.
size
()
);
menuText
.
Printf
(
fmt
,
m_
p
oints
.
size
()
);
return
menuText
;
return
menuText
;
}
}
...
@@ -246,9 +271,9 @@ BITMAP_DEF SCH_POLYLINE::GetMenuImage() const
...
@@ -246,9 +271,9 @@ BITMAP_DEF SCH_POLYLINE::GetMenuImage() const
bool
SCH_POLYLINE
::
doHitTest
(
const
wxPoint
&
aPoint
,
int
aAccuracy
)
const
bool
SCH_POLYLINE
::
doHitTest
(
const
wxPoint
&
aPoint
,
int
aAccuracy
)
const
{
{
for
(
size_t
i
=
0
;
i
<
m_
PolyP
oints
.
size
()
-
1
;
i
++
)
for
(
size_t
i
=
0
;
i
<
m_
p
oints
.
size
()
-
1
;
i
++
)
{
{
if
(
TestSegmentHit
(
aPoint
,
m_
PolyPoints
[
i
],
m_PolyP
oints
[
i
+
1
],
aAccuracy
)
)
if
(
TestSegmentHit
(
aPoint
,
m_
points
[
i
],
m_p
oints
[
i
+
1
],
aAccuracy
)
)
return
true
;
return
true
;
}
}
...
@@ -271,9 +296,9 @@ bool SCH_POLYLINE::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccur
...
@@ -271,9 +296,9 @@ bool SCH_POLYLINE::doHitTest( const EDA_RECT& aRect, bool aContained, int aAccur
void
SCH_POLYLINE
::
doSetPosition
(
const
wxPoint
&
aPosition
)
void
SCH_POLYLINE
::
doSetPosition
(
const
wxPoint
&
aPosition
)
{
{
wxPoint
offset
=
m_
PolyP
oints
[
0
]
-
aPosition
;
wxPoint
offset
=
m_
p
oints
[
0
]
-
aPosition
;
for
(
size_t
i
=
0
;
i
<
m_
PolyP
oints
.
size
();
i
++
)
for
(
size_t
i
=
0
;
i
<
m_
p
oints
.
size
();
i
++
)
m_
PolyPoints
[
i
]
=
m_PolyP
oints
[
i
]
-
offset
;
m_
points
[
i
]
=
m_p
oints
[
i
]
-
offset
;
}
}
eeschema/sch_polyline.h
View file @
1047e60e
...
@@ -37,9 +37,8 @@
...
@@ -37,9 +37,8 @@
class
SCH_POLYLINE
:
public
SCH_ITEM
class
SCH_POLYLINE
:
public
SCH_ITEM
{
{
public
:
int
m_width
;
/* Thickness */
int
m_Width
;
/* Thickness */
std
::
vector
<
wxPoint
>
m_points
;
// list of points (>= 2)
std
::
vector
<
wxPoint
>
m_PolyPoints
;
// list of points (>= 2)
public
:
public
:
SCH_POLYLINE
(
int
layer
=
LAYER_NOTES
);
SCH_POLYLINE
(
int
layer
=
LAYER_NOTES
);
...
@@ -77,19 +76,36 @@ public:
...
@@ -77,19 +76,36 @@ public:
/**
/**
* Function AddPoint
* Function AddPoint
* add a corner to m_
PolyP
oints
* add a corner to m_
p
oints
*/
*/
void
AddPoint
(
const
wxPoint
&
point
)
void
AddPoint
(
const
wxPoint
&
point
)
{
{
m_
PolyP
oints
.
push_back
(
point
);
m_
p
oints
.
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
* Function GetCornerCount
* @return the number of corners
* @return the number of corners
*/
*/
unsigned
GetCornerCount
()
const
{
return
m_points
.
size
();
}
unsigned
GetCornerCount
()
const
{
return
m_PolyPoints
.
size
();
}
/**
/**
* Function GetPenSize
* Function GetPenSize
...
@@ -105,7 +121,7 @@ public:
...
@@ -105,7 +121,7 @@ public:
virtual
void
Move
(
const
wxPoint
&
aMoveVector
)
virtual
void
Move
(
const
wxPoint
&
aMoveVector
)
{
{
for
(
unsigned
ii
=
0
;
ii
<
GetCornerCount
();
ii
++
)
for
(
unsigned
ii
=
0
;
ii
<
GetCornerCount
();
ii
++
)
m_
PolyP
oints
[
ii
]
+=
aMoveVector
;
m_
p
oints
[
ii
]
+=
aMoveVector
;
}
}
/**
/**
...
@@ -123,11 +139,26 @@ public:
...
@@ -123,11 +139,26 @@ public:
virtual
BITMAP_DEF
GetMenuImage
()
const
;
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
:
private
:
virtual
bool
doHitTest
(
const
wxPoint
&
aPoint
,
int
aAccuracy
)
const
;
virtual
bool
doHitTest
(
const
wxPoint
&
aPoint
,
int
aAccuracy
)
const
;
virtual
bool
doHitTest
(
const
EDA_RECT
&
aRect
,
bool
aContained
,
int
aAccuracy
)
const
;
virtual
bool
doHitTest
(
const
EDA_RECT
&
aRect
,
bool
aContained
,
int
aAccuracy
)
const
;
virtual
EDA_ITEM
*
doClone
()
const
;
virtual
EDA_ITEM
*
doClone
()
const
;
virtual
wxPoint
doGetPosition
()
const
{
return
m_
PolyP
oints
[
0
];
}
virtual
wxPoint
doGetPosition
()
const
{
return
m_
p
oints
[
0
];
}
virtual
void
doSetPosition
(
const
wxPoint
&
aPosition
);
virtual
void
doSetPosition
(
const
wxPoint
&
aPosition
);
};
};
...
...
eeschema/sch_screen.cpp
View file @
1047e60e
...
@@ -720,7 +720,7 @@ SCH_SHEET* SCH_SCREEN::GetSheet( const wxString& aName )
...
@@ -720,7 +720,7 @@ SCH_SHEET* SCH_SCREEN::GetSheet( const wxString& aName )
SCH_SHEET
*
sheet
=
(
SCH_SHEET
*
)
item
;
SCH_SHEET
*
sheet
=
(
SCH_SHEET
*
)
item
;
if
(
aName
.
CmpNoCase
(
sheet
->
m_SheetName
)
==
0
)
if
(
aName
.
CmpNoCase
(
sheet
->
GetName
()
)
==
0
)
return
sheet
;
return
sheet
;
}
}
...
...
eeschema/sch_sheet.cpp
View file @
1047e60e
This diff is collapsed.
Click to expand it.
eeschema/sch_sheet.h
View file @
1047e60e
...
@@ -28,8 +28,8 @@
...
@@ -28,8 +28,8 @@
* @brief Definition of the SCH_SHEET class for Eeschema.
* @brief Definition of the SCH_SHEET class for Eeschema.
*/
*/
#ifndef
CLASS_DRAWSH
EET_H
#ifndef
SCH_SHE
EET_H
#define
CLASS_DRAWSH
EET_H
#define
SCH_SHE
EET_H
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/foreach.hpp>
#include <boost/foreach.hpp>
...
@@ -50,7 +50,8 @@ class SCH_EDIT_FRAME;
...
@@ -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
* 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
* pin is used in a component. It connects the objects in the sheet object
...
@@ -59,23 +60,24 @@ class SCH_EDIT_FRAME;
...
@@ -59,23 +60,24 @@ class SCH_EDIT_FRAME;
* connected to a wire, bus, or label. In the schematic page represented by
* connected to a wire, bus, or label. In the schematic page represented by
* the sheet, it corresponds to a hierarchical label.
* the sheet, it corresponds to a hierarchical label.
*/
*/
class
SCH_SHEET_PIN
:
public
SCH_HIERLABEL
class
SCH_SHEET_PIN
:
public
SCH_HIERLABEL
{
{
private
:
private
:
int
m_
N
umber
;
///< Label number use for saving sheet label to file.
int
m_
n
umber
;
///< Label number use for saving sheet label to file.
///< Sheet label numbering begins at 2.
///< Sheet label numbering begins at 2.
///< 0 is reserved for the sheet name.
///< 0 is reserved for the sheet name.
///< 1 is reserve for the sheet file 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
* Defines the edge of the sheet that the sheet pin is positioned
* 1: pin on right side
* 0: pin on left side
* 2: pin on top side
* 1: pin on right side
* 3: pin on bottom side
* 2: pin on top side
* for compatibility reasons, this does not follow same values as text
* 3: pin on bottom side
* orientation.
*
*/
* For compatibility reasons, this does not follow same values as text orientation.
*/
int
m_edge
;
virtual
EDA_ITEM
*
doClone
()
const
;
virtual
EDA_ITEM
*
doClone
()
const
;
...
@@ -118,7 +120,7 @@ public:
...
@@ -118,7 +120,7 @@ public:
*
*
* @return Number of the sheet label.
* @return Number of the sheet label.
*/
*/
int
GetNumber
()
const
{
return
m_
N
umber
;
}
int
GetNumber
()
const
{
return
m_
n
umber
;
}
/**
/**
* Set the sheet label number.
* Set the sheet label number.
...
@@ -202,15 +204,7 @@ public:
...
@@ -202,15 +204,7 @@ public:
virtual
void
Mirror_X
(
int
aXaxis_position
);
virtual
void
Mirror_X
(
int
aXaxis_position
);
/**
/**
* Function Matches
* @copydoc EDA_ITEM::Matches(wxFindReplaceData&,void*,wxPoint*)
* 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.
*/
*/
virtual
bool
Matches
(
wxFindReplaceData
&
aSearchData
,
void
*
aAuxData
,
wxPoint
*
aFindLocation
);
virtual
bool
Matches
(
wxFindReplaceData
&
aSearchData
,
void
*
aAuxData
,
wxPoint
*
aFindLocation
);
...
@@ -233,33 +227,40 @@ private:
...
@@ -233,33 +227,40 @@ private:
typedef
boost
::
ptr_vector
<
SCH_SHEET_PIN
>
SCH_SHEET_PINS
;
typedef
boost
::
ptr_vector
<
SCH_SHEET_PIN
>
SCH_SHEET_PINS
;
/*
class SCH_SHEET
/*
*
*
This class is the sheet symbol placed in a schematic, and is the entry point
*
Class SCH_SHEET
*
for a sub schematic
*
is the sheet symbol placed in a schematic, and is the entry point for a sub schematic.
*/
*/
class
SCH_SHEET
:
public
SCH_ITEM
class
SCH_SHEET
:
public
SCH_ITEM
{
{
SCH_SCREEN
*
m_AssociatedScreen
;
///< Screen that contains the physical data for
/// Screen that contains the physical data for the sheet. In complex hierarchies
///< the sheet. In complex hierarchies multiple
/// multiple sheets can share a common screen.
///< sheets can share a common screen.
SCH_SCREEN
*
m_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. */
public
:
/// The list of sheet connection points.
wxString
m_SheetName
;
/* this is equivalent to C101 for
SCH_SHEET_PINS
m_pins
;
* components: it is stored in F0 ...
* of the file. */
/// The file name is also in the #SCH_SCREEN object associated with the sheet. It is
public
:
/// also needed here for loading after reading the sheet description from file.
int
m_SheetNameSize
;
/* Size (height) of the text, used to
wxString
m_fileName
;
* draw the sheet name */
int
m_FileNameSize
;
/* Size (height) of the text, used to
/// This is equivalent to the reference designator for components and is stored in F0
* draw the file name */
/// sheet pin in the schematic file.
wxPoint
m_Pos
;
wxString
m_name
;
wxSize
m_Size
;
/* Position and Size of *sheet symbol */
/// 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
:
public
:
SCH_SHEET
(
const
wxPoint
&
pos
=
wxPoint
(
0
,
0
)
);
SCH_SHEET
(
const
wxPoint
&
pos
=
wxPoint
(
0
,
0
)
);
...
@@ -273,7 +274,24 @@ public:
...
@@ -273,7 +274,24 @@ public:
return
wxT
(
"SCH_SHEET"
);
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
* Function SetScreen
...
@@ -462,9 +480,9 @@ public:
...
@@ -462,9 +480,9 @@ public:
/**
/**
* Function Load.
* Function Load.
* for the sheet: load the file m_
F
ileName
* for the sheet: load the file m_
f
ileName
* if a screen already exists, the file is already read.
* if a screen already exists, the file is already read.
* m_
AssociatedS
creen point on the screen, and its m_RefCount is
* m_
s
creen point on the screen, and its m_RefCount is
* incremented
* incremented
* else creates a new associated screen and load the data file.
* else creates a new associated screen and load the data file.
* @param aFrame = a SCH_EDIT_FRAME pointer to the maim schematic frame
* @param aFrame = a SCH_EDIT_FRAME pointer to the maim schematic frame
...
@@ -483,14 +501,14 @@ public:
...
@@ -483,14 +501,14 @@ public:
/**
/**
* Function LocatePathOfScreen
* Function LocatePathOfScreen
*
search the existing hierarchy for an instance of screen "FileName".
* search the existing hierarchy for an instance of screen "FileName".
*
don't bother looking at the root sheet - it must be unique,
* don't bother looking at the root sheet - it must be unique,
*
no other references to its m_AssociatedS
creen otherwise there would be
*
no other references to its m_s
creen otherwise there would be
*
loops
*
loops in the hierarchy.
*
in the hierarchy.
*
*
@param
aScreen = the SCH_SCREEN* screen that we search for
*
@param
aScreen = the SCH_SCREEN* screen that we search for
*
@param aList = the SCH_SHEET_PATH* that must be used
* @param aList = the SCH_SHEET_PATH* that must be used
*
@return true if found
* @return true if found
*/
*/
bool
LocatePathOfScreen
(
SCH_SCREEN
*
aScreen
,
SCH_SHEET_PATH
*
aList
);
bool
LocatePathOfScreen
(
SCH_SCREEN
*
aScreen
,
SCH_SHEET_PATH
*
aList
);
...
@@ -512,7 +530,7 @@ public:
...
@@ -512,7 +530,7 @@ public:
// Set a new filename without changing anything else
// Set a new filename without changing anything else
void
SetFileName
(
const
wxString
&
aFilename
)
void
SetFileName
(
const
wxString
&
aFilename
)
{
{
m_
F
ileName
=
aFilename
;
m_
f
ileName
=
aFilename
;
}
}
bool
ChangeFileName
(
SCH_EDIT_FRAME
*
aFrame
,
const
wxString
&
aFileName
);
bool
ChangeFileName
(
SCH_EDIT_FRAME
*
aFrame
,
const
wxString
&
aFileName
);
...
@@ -529,7 +547,7 @@ public:
...
@@ -529,7 +547,7 @@ public:
*/
*/
virtual
void
Move
(
const
wxPoint
&
aMoveVector
)
virtual
void
Move
(
const
wxPoint
&
aMoveVector
)
{
{
m_
P
os
+=
aMoveVector
;
m_
p
os
+=
aMoveVector
;
BOOST_FOREACH
(
SCH_SHEET_PIN
&
pin
,
m_pins
)
BOOST_FOREACH
(
SCH_SHEET_PIN
&
pin
,
m_pins
)
{
{
...
@@ -546,15 +564,7 @@ public:
...
@@ -546,15 +564,7 @@ public:
virtual
void
Rotate
(
wxPoint
rotationPoint
);
virtual
void
Rotate
(
wxPoint
rotationPoint
);
/**
/**
* Compare schematic sheet file and sheet name against search string.
* @copydoc EDA_ITEM::Matches(wxFindReplaceData&,void*,wxPoint*)
*
* @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.
*/
*/
virtual
bool
Matches
(
wxFindReplaceData
&
aSearchData
,
void
*
aAuxData
,
wxPoint
*
aFindLocation
);
virtual
bool
Matches
(
wxFindReplaceData
&
aSearchData
,
void
*
aAuxData
,
wxPoint
*
aFindLocation
);
...
@@ -627,11 +637,11 @@ private:
...
@@ -627,11 +637,11 @@ private:
virtual
bool
doHitTest
(
const
EDA_RECT
&
aRect
,
bool
aContained
,
int
aAccuracy
)
const
;
virtual
bool
doHitTest
(
const
EDA_RECT
&
aRect
,
bool
aContained
,
int
aAccuracy
)
const
;
virtual
EDA_ITEM
*
doClone
()
const
;
virtual
EDA_ITEM
*
doClone
()
const
;
virtual
void
doPlot
(
PLOTTER
*
aPlotter
);
virtual
void
doPlot
(
PLOTTER
*
aPlotter
);
virtual
wxPoint
doGetPosition
()
const
{
return
m_
P
os
;
}
virtual
wxPoint
doGetPosition
()
const
{
return
m_
p
os
;
}
virtual
void
doSetPosition
(
const
wxPoint
&
aPosition
)
{
m_
P
os
=
aPosition
;
}
virtual
void
doSetPosition
(
const
wxPoint
&
aPosition
)
{
m_
p
os
=
aPosition
;
}
};
};
typedef
std
::
vector
<
SCH_SHEET
*
>
SCH_SHEETS
;
typedef
std
::
vector
<
SCH_SHEET
*
>
SCH_SHEETS
;
#endif
/*
CLASS_DRAWSH
EET_H */
#endif
/*
SCH_SHE
EET_H */
eeschema/sch_sheet_path.cpp
View file @
1047e60e
...
@@ -217,7 +217,7 @@ wxString SCH_SHEET_PATH::PathHumanReadable() const
...
@@ -217,7 +217,7 @@ wxString SCH_SHEET_PATH::PathHumanReadable() const
// start at 1 to avoid the root sheet, as above.
// start at 1 to avoid the root sheet, as above.
for
(
unsigned
i
=
1
;
i
<
m_numSheets
;
i
++
)
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
;
return
s
;
...
...
eeschema/sch_sheet_pin.cpp
View file @
1047e60e
...
@@ -43,16 +43,6 @@
...
@@ -43,16 +43,6 @@
#include "kicad_string.h"
#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_SHEET_PIN
::
SCH_SHEET_PIN
(
SCH_SHEET
*
parent
,
const
wxPoint
&
pos
,
const
wxString
&
text
)
:
SCH_HIERLABEL
(
pos
,
text
,
SCH_SHEET_PIN_T
)
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
...
@@ -66,17 +56,17 @@ SCH_SHEET_PIN::SCH_SHEET_PIN( SCH_SHEET* parent, const wxPoint& pos, const wxStr
else
else
SetEdge
(
0
);
SetEdge
(
0
);
m_
S
hape
=
NET_INPUT
;
m_
s
hape
=
NET_INPUT
;
m_
I
sDangling
=
true
;
m_
i
sDangling
=
true
;
m_
N
umber
=
2
;
m_
n
umber
=
2
;
}
}
SCH_SHEET_PIN
::
SCH_SHEET_PIN
(
const
SCH_SHEET_PIN
&
aSheetLabel
)
:
SCH_SHEET_PIN
::
SCH_SHEET_PIN
(
const
SCH_SHEET_PIN
&
aSheetLabel
)
:
SCH_HIERLABEL
(
aSheetLabel
)
SCH_HIERLABEL
(
aSheetLabel
)
{
{
m_
Number
=
aSheetLabel
.
m_N
umber
;
m_
number
=
aSheetLabel
.
m_n
umber
;
m_
Edge
=
aSheetLabel
.
m_E
dge
;
m_
edge
=
aSheetLabel
.
m_e
dge
;
}
}
...
@@ -132,7 +122,7 @@ void SCH_SHEET_PIN::SetNumber( int aNumber )
...
@@ -132,7 +122,7 @@ void SCH_SHEET_PIN::SetNumber( int aNumber )
{
{
wxASSERT
(
aNumber
>=
2
);
wxASSERT
(
aNumber
>=
2
);
m_
N
umber
=
aNumber
;
m_
n
umber
=
aNumber
;
}
}
...
@@ -168,27 +158,27 @@ void SCH_SHEET_PIN::SetEdge( int aEdge )
...
@@ -168,27 +158,27 @@ void SCH_SHEET_PIN::SetEdge( int aEdge )
/* use -1 to adjust text orientation without changing edge*/
/* use -1 to adjust text orientation without changing edge*/
if
(
aEdge
>
-
1
)
if
(
aEdge
>
-
1
)
m_
E
dge
=
aEdge
;
m_
e
dge
=
aEdge
;
switch
(
m_
E
dge
)
switch
(
m_
e
dge
)
{
{
case
0
:
/* pin on left side*/
case
0
:
/* pin on left side*/
m_Pos
.
x
=
Sheet
->
m_
P
os
.
x
;
m_Pos
.
x
=
Sheet
->
m_
p
os
.
x
;
SetOrientation
(
2
);
/* Orientation horiz inverse */
SetOrientation
(
2
);
/* Orientation horiz inverse */
break
;
break
;
case
1
:
/* pin on right side*/
case
1
:
/* pin on right side*/
m_Pos
.
x
=
Sheet
->
m_
Pos
.
x
+
Sheet
->
m_S
ize
.
x
;
m_Pos
.
x
=
Sheet
->
m_
pos
.
x
+
Sheet
->
m_s
ize
.
x
;
SetOrientation
(
0
);
/* Orientation horiz normal */
SetOrientation
(
0
);
/* Orientation horiz normal */
break
;
break
;
case
2
:
/* pin on top side*/
case
2
:
/* pin on top side*/
m_Pos
.
y
=
Sheet
->
m_
P
os
.
y
;
m_Pos
.
y
=
Sheet
->
m_
p
os
.
y
;
SetOrientation
(
3
);
/* Orientation vert BOTTOM */
SetOrientation
(
3
);
/* Orientation vert BOTTOM */
break
;
break
;
case
3
:
/* pin on bottom side*/
case
3
:
/* pin on bottom side*/
m_Pos
.
y
=
Sheet
->
m_
Pos
.
y
+
Sheet
->
m_S
ize
.
y
;
m_Pos
.
y
=
Sheet
->
m_
pos
.
y
+
Sheet
->
m_s
ize
.
y
;
SetOrientation
(
1
);
/* Orientation vert UP */
SetOrientation
(
1
);
/* Orientation vert UP */
break
;
break
;
}
}
...
@@ -197,7 +187,7 @@ void SCH_SHEET_PIN::SetEdge( int aEdge )
...
@@ -197,7 +187,7 @@ void SCH_SHEET_PIN::SetEdge( int aEdge )
int
SCH_SHEET_PIN
::
GetEdge
()
const
int
SCH_SHEET_PIN
::
GetEdge
()
const
{
{
return
m_
E
dge
;
return
m_
e
dge
;
}
}
...
@@ -208,9 +198,9 @@ void SCH_SHEET_PIN::ConstrainOnEdge( wxPoint Pos )
...
@@ -208,9 +198,9 @@ void SCH_SHEET_PIN::ConstrainOnEdge( wxPoint Pos )
if
(
Sheet
==
NULL
)
if
(
Sheet
==
NULL
)
return
;
return
;
if
(
m_
E
dge
<
2
)
/*horizontal sheetpin*/
if
(
m_
e
dge
<
2
)
/*horizontal sheetpin*/
{
{
if
(
Pos
.
x
>
(
Sheet
->
m_
Pos
.
x
+
(
Sheet
->
m_S
ize
.
x
/
2
)
)
)
if
(
Pos
.
x
>
(
Sheet
->
m_
pos
.
x
+
(
Sheet
->
m_s
ize
.
x
/
2
)
)
)
{
{
SetEdge
(
1
);
SetEdge
(
1
);
}
}
...
@@ -221,15 +211,15 @@ void SCH_SHEET_PIN::ConstrainOnEdge( wxPoint Pos )
...
@@ -221,15 +211,15 @@ void SCH_SHEET_PIN::ConstrainOnEdge( wxPoint Pos )
m_Pos
.
y
=
Pos
.
y
;
m_Pos
.
y
=
Pos
.
y
;
if
(
m_Pos
.
y
<
Sheet
->
m_
P
os
.
y
)
if
(
m_Pos
.
y
<
Sheet
->
m_
p
os
.
y
)
m_Pos
.
y
=
Sheet
->
m_
P
os
.
y
;
m_Pos
.
y
=
Sheet
->
m_
p
os
.
y
;
if
(
m_Pos
.
y
>
(
Sheet
->
m_
Pos
.
y
+
Sheet
->
m_S
ize
.
y
)
)
if
(
m_Pos
.
y
>
(
Sheet
->
m_
pos
.
y
+
Sheet
->
m_s
ize
.
y
)
)
m_Pos
.
y
=
Sheet
->
m_
Pos
.
y
+
Sheet
->
m_S
ize
.
y
;
m_Pos
.
y
=
Sheet
->
m_
pos
.
y
+
Sheet
->
m_s
ize
.
y
;
}
}
else
/* vertical sheetpin*/
else
/* vertical sheetpin*/
{
{
if
(
Pos
.
y
>
(
Sheet
->
m_
Pos
.
y
+
(
Sheet
->
m_S
ize
.
y
/
2
)
)
)
if
(
Pos
.
y
>
(
Sheet
->
m_
pos
.
y
+
(
Sheet
->
m_s
ize
.
y
/
2
)
)
)
{
{
SetEdge
(
3
);
//bottom
SetEdge
(
3
);
//bottom
}
}
...
@@ -240,11 +230,11 @@ void SCH_SHEET_PIN::ConstrainOnEdge( wxPoint Pos )
...
@@ -240,11 +230,11 @@ void SCH_SHEET_PIN::ConstrainOnEdge( wxPoint Pos )
m_Pos
.
x
=
Pos
.
x
;
m_Pos
.
x
=
Pos
.
x
;
if
(
m_Pos
.
x
<
Sheet
->
m_
P
os
.
x
)
if
(
m_Pos
.
x
<
Sheet
->
m_
p
os
.
x
)
m_Pos
.
x
=
Sheet
->
m_
P
os
.
x
;
m_Pos
.
x
=
Sheet
->
m_
p
os
.
x
;
if
(
m_Pos
.
x
>
(
Sheet
->
m_
Pos
.
x
+
Sheet
->
m_S
ize
.
x
)
)
if
(
m_Pos
.
x
>
(
Sheet
->
m_
pos
.
x
+
Sheet
->
m_s
ize
.
x
)
)
m_Pos
.
x
=
Sheet
->
m_
Pos
.
x
+
Sheet
->
m_S
ize
.
x
;
m_Pos
.
x
=
Sheet
->
m_
pos
.
x
+
Sheet
->
m_s
ize
.
x
;
}
}
}
}
...
@@ -256,7 +246,7 @@ bool SCH_SHEET_PIN::Save( FILE* aFile ) const
...
@@ -256,7 +246,7 @@ bool SCH_SHEET_PIN::Save( FILE* aFile ) const
if
(
m_Text
.
IsEmpty
()
)
if
(
m_Text
.
IsEmpty
()
)
return
true
;
return
true
;
switch
(
m_
E
dge
)
switch
(
m_
e
dge
)
{
{
case
0
:
//pin on left side
case
0
:
//pin on left side
side
=
'L'
;
side
=
'L'
;
...
@@ -275,7 +265,7 @@ bool SCH_SHEET_PIN::Save( FILE* aFile ) const
...
@@ -275,7 +265,7 @@ bool SCH_SHEET_PIN::Save( FILE* aFile ) const
break
;
break
;
}
}
switch
(
m_
S
hape
)
switch
(
m_
s
hape
)
{
{
case
NET_INPUT
:
case
NET_INPUT
:
type
=
'I'
;
break
;
type
=
'I'
;
break
;
...
@@ -293,7 +283,7 @@ bool SCH_SHEET_PIN::Save( FILE* aFile ) const
...
@@ -293,7 +283,7 @@ bool SCH_SHEET_PIN::Save( FILE* aFile ) const
type
=
'U'
;
break
;
type
=
'U'
;
break
;
}
}
if
(
fprintf
(
aFile
,
"F%d %s %c %c %-3d %-3d %-3d
\n
"
,
m_
N
umber
,
if
(
fprintf
(
aFile
,
"F%d %s %c %c %-3d %-3d %-3d
\n
"
,
m_
n
umber
,
EscapedUTF8
(
m_Text
).
c_str
(),
// supplies wrapping quotes
EscapedUTF8
(
m_Text
).
c_str
(),
// supplies wrapping quotes
type
,
side
,
m_Pos
.
x
,
m_Pos
.
y
,
type
,
side
,
m_Pos
.
x
,
m_Pos
.
y
,
m_Size
.
x
)
==
EOF
)
m_Size
.
x
)
==
EOF
)
...
@@ -359,23 +349,23 @@ bool SCH_SHEET_PIN::Load( LINE_READER& aLine, wxString& aErrorMsg )
...
@@ -359,23 +349,23 @@ bool SCH_SHEET_PIN::Load( LINE_READER& aLine, wxString& aErrorMsg )
switch
(
connectType
[
0
]
)
switch
(
connectType
[
0
]
)
{
{
case
'I'
:
case
'I'
:
m_
S
hape
=
NET_INPUT
;
m_
s
hape
=
NET_INPUT
;
break
;
break
;
case
'O'
:
case
'O'
:
m_
S
hape
=
NET_OUTPUT
;
m_
s
hape
=
NET_OUTPUT
;
break
;
break
;
case
'B'
:
case
'B'
:
m_
S
hape
=
NET_BIDI
;
m_
s
hape
=
NET_BIDI
;
break
;
break
;
case
'T'
:
case
'T'
:
m_
S
hape
=
NET_TRISTATE
;
m_
s
hape
=
NET_TRISTATE
;
break
;
break
;
case
'U'
:
case
'U'
:
m_
S
hape
=
NET_UNSPECIFIED
;
m_
s
hape
=
NET_UNSPECIFIED
;
break
;
break
;
}
}
...
@@ -429,7 +419,7 @@ void SCH_SHEET_PIN::Mirror_X( int aXaxis_position )
...
@@ -429,7 +419,7 @@ void SCH_SHEET_PIN::Mirror_X( int aXaxis_position )
m_Pos
.
y
=
aXaxis_position
-
p
;
m_Pos
.
y
=
aXaxis_position
-
p
;
switch
(
m_
E
dge
)
switch
(
m_
e
dge
)
{
{
case
2
:
case
2
:
SetEdge
(
3
);
SetEdge
(
3
);
...
@@ -448,7 +438,7 @@ void SCH_SHEET_PIN::Mirror_Y( int aYaxis_position )
...
@@ -448,7 +438,7 @@ void SCH_SHEET_PIN::Mirror_Y( int aYaxis_position )
m_Pos
.
x
=
aYaxis_position
-
p
;
m_Pos
.
x
=
aYaxis_position
-
p
;
switch
(
m_
E
dge
)
switch
(
m_
e
dge
)
{
{
case
0
:
case
0
:
SetEdge
(
1
);
SetEdge
(
1
);
...
@@ -465,7 +455,7 @@ void SCH_SHEET_PIN::Rotate( wxPoint rotationPoint )
...
@@ -465,7 +455,7 @@ void SCH_SHEET_PIN::Rotate( wxPoint rotationPoint )
{
{
RotatePoint
(
&
m_Pos
,
rotationPoint
,
900
);
RotatePoint
(
&
m_Pos
,
rotationPoint
,
900
);
switch
(
m_
E
dge
)
switch
(
m_
e
dge
)
{
{
case
0
:
//pin on left side
case
0
:
//pin on left side
SetEdge
(
3
);
SetEdge
(
3
);
...
@@ -493,16 +483,16 @@ void SCH_SHEET_PIN::CreateGraphicShape( std::vector <wxPoint>& aPoints, const wx
...
@@ -493,16 +483,16 @@ void SCH_SHEET_PIN::CreateGraphicShape( std::vector <wxPoint>& aPoints, const wx
* for INPUT type the icon is the OUTPUT shape of SCH_HIERLABEL
* for INPUT type the icon is the OUTPUT shape of SCH_HIERLABEL
* for OUTPUT type the icon is the INPUT shape of SCH_HIERLABEL
* for OUTPUT type the icon is the INPUT shape of SCH_HIERLABEL
*/
*/
int
tmp
=
m_
S
hape
;
int
tmp
=
m_
s
hape
;
switch
(
m_
S
hape
)
switch
(
m_
s
hape
)
{
{
case
NET_INPUT
:
case
NET_INPUT
:
m_
S
hape
=
NET_OUTPUT
;
m_
s
hape
=
NET_OUTPUT
;
break
;
break
;
case
NET_OUTPUT
:
case
NET_OUTPUT
:
m_
S
hape
=
NET_INPUT
;
m_
s
hape
=
NET_INPUT
;
break
;
break
;
default
:
default
:
...
@@ -510,7 +500,7 @@ void SCH_SHEET_PIN::CreateGraphicShape( std::vector <wxPoint>& aPoints, const wx
...
@@ -510,7 +500,7 @@ void SCH_SHEET_PIN::CreateGraphicShape( std::vector <wxPoint>& aPoints, const wx
}
}
SCH_HIERLABEL
::
CreateGraphicShape
(
aPoints
,
aPos
);
SCH_HIERLABEL
::
CreateGraphicShape
(
aPoints
,
aPos
);
m_
S
hape
=
tmp
;
m_
s
hape
=
tmp
;
}
}
...
...
eeschema/sch_text.cpp
View file @
1047e60e
This diff is collapsed.
Click to expand it.
eeschema/sch_text.h
View file @
1047e60e
...
@@ -56,27 +56,23 @@ extern const char* SheetLabelType[]; /* names of types of labels */
...
@@ -56,27 +56,23 @@ extern const char* SheetLabelType[]; /* names of types of labels */
class
SCH_TEXT
:
public
SCH_ITEM
,
public
EDA_TEXT
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
:
protected
:
int
m_SchematicOrientation
;
/* orientation of texts (comments) and
int
m_shape
;
* labels in schematic
* 0 = normal (horizontal, left
/// True if not connected to another object if the object derive from SCH_TEXT
* justified)
.
/// supports connections
.
* 1 = up (vertical)
bool
m_isDangling
;
* 2 = (horizontal, right justified).
* This can be seen as the mirrored
/**
* position of 0
* The orientation of text and any associated drawing elements of derived objects.
* 3 = bottom . This can be seen as the
* 0 is the horizontal and left justified.
* mirrored position of up
* 1 is vertical and top justified.
* this is perhaps a duplicate of m_Orient
* 2 is horizontal and right justified. It is the equivalent of the mirrored 0 orentation.
* and m_HJustified or m_VJustified,
* 3 is veritcal and bottom justifiend. It is the equivalent of the mirrored 1 orentation.
* but is more easy to handle that 3
* This is a duplicattion of m_Orient, m_HJustified, and m_VJustified in #EDA_TEXT but is
* parameters in editions, Reading and
* easier to handle that 3 parameters when editing and reading and saving files.
* Saving file
*/
*/
int
m_schematicOrientation
;
public
:
public
:
SCH_TEXT
(
const
wxPoint
&
pos
=
wxPoint
(
0
,
0
),
SCH_TEXT
(
const
wxPoint
&
pos
=
wxPoint
(
0
,
0
),
...
@@ -100,10 +96,10 @@ public:
...
@@ -100,10 +96,10 @@ public:
/**
/**
* Function SetOrientation
* Function SetOrientation
* Set m_
S
chematicOrientation, and initialize
* Set m_
s
chematicOrientation, and initialize
* m_orient,m_HJustified and m_VJustified, according to the value of
* m_orient,m_HJustified and m_VJustified, according to the value of
* m_
S
chematicOrientation (for a text )
* m_
s
chematicOrientation (for a text )
* must be called after changing m_
S
chematicOrientation
* must be called after changing m_
s
chematicOrientation
* @param aSchematicOrientation =
* @param aSchematicOrientation =
* 0 = normal (horizontal, left justified).
* 0 = normal (horizontal, left justified).
* 1 = up (vertical)
* 1 = up (vertical)
...
@@ -113,15 +109,18 @@ public:
...
@@ -113,15 +109,18 @@ public:
*/
*/
virtual
void
SetOrientation
(
int
aSchematicOrientation
);
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)
* Function GetSchematicTextOffset (virtual)
* @return the offset between the SCH_TEXT position and the text itself
* @return the offset between the SCH_TEXT position and the text itself position
* position
*
* This offset depend on orientation, and the type of text
* This offset depends on the orientation, the type of text, and the area required to
* (room to draw an associated graphic symbol, or put the text above a
* draw the associated graphic symbol or to put the text above a wire.
* wire)
*/
*/
virtual
wxPoint
GetSchematicTextOffset
()
const
;
virtual
wxPoint
GetSchematicTextOffset
()
const
;
...
@@ -203,12 +202,7 @@ public:
...
@@ -203,12 +202,7 @@ public:
virtual
void
Mirror_X
(
int
aXaxis_position
);
virtual
void
Mirror_X
(
int
aXaxis_position
);
/**
/**
* Compare schematic text entry against search string.
* @copydoc EDA_ITEM::Matches(wxFindReplaceData&,void*,wxPoint*)
*
* @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.
*/
*/
virtual
bool
Matches
(
wxFindReplaceData
&
aSearchData
,
void
*
aAuxData
,
wxPoint
*
aFindLocation
);
virtual
bool
Matches
(
wxFindReplaceData
&
aSearchData
,
void
*
aAuxData
,
wxPoint
*
aFindLocation
);
...
@@ -216,7 +210,7 @@ public:
...
@@ -216,7 +210,7 @@ public:
virtual
bool
IsDanglingStateChanged
(
std
::
vector
<
DANGLING_END_ITEM
>&
aItemList
);
virtual
bool
IsDanglingStateChanged
(
std
::
vector
<
DANGLING_END_ITEM
>&
aItemList
);
virtual
bool
IsDangling
()
const
{
return
m_
I
sDangling
;
}
virtual
bool
IsDangling
()
const
{
return
m_
i
sDangling
;
}
virtual
bool
IsSelectStateChanged
(
const
wxRect
&
aRect
);
virtual
bool
IsSelectStateChanged
(
const
wxRect
&
aRect
);
...
@@ -267,10 +261,10 @@ public:
...
@@ -267,10 +261,10 @@ public:
/**
/**
* Function SetOrientation
* Function SetOrientation
* Set m_
S
chematicOrientation, and initialize
* Set m_
s
chematicOrientation, and initialize
* m_orient,m_HJustified and m_VJustified, according to the value of
* m_orient,m_HJustified and m_VJustified, according to the value of
* m_
S
chematicOrientation (for a label)
* m_
s
chematicOrientation (for a label)
* must be called after changing m_
S
chematicOrientation
* must be called after changing m_
s
chematicOrientation
* @param aSchematicOrientation =
* @param aSchematicOrientation =
* 0 = normal (horizontal, left justified).
* 0 = normal (horizontal, left justified).
* 1 = up (vertical)
* 1 = up (vertical)
...
@@ -362,10 +356,10 @@ public:
...
@@ -362,10 +356,10 @@ public:
/**
/**
* Function SetOrientation
* Function SetOrientation
* Set m_
S
chematicOrientation, and initialize
* Set m_
s
chematicOrientation, and initialize
* m_orient,m_HJustified and m_VJustified, according to the value of
* m_orient,m_HJustified and m_VJustified, according to the value of
* m_
S
chematicOrientation
* m_
s
chematicOrientation
* must be called after changing m_
S
chematicOrientation
* must be called after changing m_
s
chematicOrientation
* @param aSchematicOrientation =
* @param aSchematicOrientation =
* 0 = normal (horizontal, left justified).
* 0 = normal (horizontal, left justified).
* 1 = up (vertical)
* 1 = up (vertical)
...
@@ -468,10 +462,10 @@ public:
...
@@ -468,10 +462,10 @@ public:
/**
/**
* Function SetOrientation
* Function SetOrientation
* Set m_
S
chematicOrientation, and initialize
* Set m_
s
chematicOrientation, and initialize
* m_orient,m_HJustified and m_VJustified, according to the value of
* m_orient,m_HJustified and m_VJustified, according to the value of
* m_
S
chematicOrientation
* m_
s
chematicOrientation
* must be called after changing m_
S
chematicOrientation
* must be called after changing m_
s
chematicOrientation
* @param aSchematicOrientation =
* @param aSchematicOrientation =
* 0 = normal (horizontal, left justified).
* 0 = normal (horizontal, left justified).
* 1 = up (vertical)
* 1 = up (vertical)
...
...
eeschema/sheet.cpp
View file @
1047e60e
...
@@ -50,12 +50,12 @@ bool SCH_EDIT_FRAME::EditSheet( SCH_SHEET* aSheet, wxDC* aDC )
...
@@ -50,12 +50,12 @@ bool SCH_EDIT_FRAME::EditSheet( SCH_SHEET* aSheet, wxDC* aDC )
wxString
units
=
GetUnitsLabel
(
g_UserUnit
);
wxString
units
=
GetUnitsLabel
(
g_UserUnit
);
dlg
.
SetFileName
(
aSheet
->
GetFileName
()
);
dlg
.
SetFileName
(
aSheet
->
GetFileName
()
);
dlg
.
SetFileNameTextSize
(
ReturnStringFromValue
(
g_UserUnit
,
dlg
.
SetFileNameTextSize
(
ReturnStringFromValue
(
g_UserUnit
,
aSheet
->
m_FileNameSize
,
aSheet
->
GetFileNameSize
()
,
m_InternalUnits
)
);
m_InternalUnits
)
);
dlg
.
SetFileNameTextSizeUnits
(
units
);
dlg
.
SetFileNameTextSizeUnits
(
units
);
dlg
.
SetSheetName
(
aSheet
->
m_SheetName
);
dlg
.
SetSheetName
(
aSheet
->
GetName
()
);
dlg
.
SetSheetNameTextSize
(
ReturnStringFromValue
(
g_UserUnit
,
dlg
.
SetSheetNameTextSize
(
ReturnStringFromValue
(
g_UserUnit
,
aSheet
->
m_SheetNameSize
,
aSheet
->
GetSheetNameSize
()
,
m_InternalUnits
)
);
m_InternalUnits
)
);
dlg
.
SetSheetNameTextSizeUnits
(
units
);
dlg
.
SetSheetNameTextSizeUnits
(
units
);
...
@@ -192,16 +192,16 @@ bool SCH_EDIT_FRAME::EditSheet( SCH_SHEET* aSheet, wxDC* aDC )
...
@@ -192,16 +192,16 @@ bool SCH_EDIT_FRAME::EditSheet( SCH_SHEET* aSheet, wxDC* aDC )
else
if
(
loadFromFile
)
else
if
(
loadFromFile
)
aSheet
->
Load
(
this
);
aSheet
->
Load
(
this
);
aSheet
->
m_FileNameSize
=
ReturnValueFromString
(
g_UserUnit
,
aSheet
->
SetFileNameSize
(
ReturnValueFromString
(
g_UserUnit
,
dlg
.
GetFileNameTextSize
(),
dlg
.
GetFileNameTextSize
(),
m_InternalUnits
);
m_InternalUnits
)
)
;
aSheet
->
m_SheetName
=
dlg
.
GetSheetName
(
);
aSheet
->
SetName
(
dlg
.
GetSheetName
()
);
aSheet
->
m_SheetNameSize
=
ReturnValueFromString
(
g_UserUnit
,
aSheet
->
SetSheetNameSize
(
ReturnValueFromString
(
g_UserUnit
,
dlg
.
GetSheetNameTextSize
(),
dlg
.
GetSheetNameTextSize
(),
m_InternalUnits
);
m_InternalUnits
)
)
;
if
(
aSheet
->
m_SheetName
.
IsEmpty
()
)
if
(
aSheet
->
GetName
()
.
IsEmpty
()
)
aSheet
->
m_SheetName
.
Printf
(
wxT
(
"Sheet%8.8lX"
),
aSheet
->
GetTimeStamp
(
)
);
aSheet
->
SetName
(
wxString
::
Format
(
wxT
(
"Sheet%8.8lX"
),
aSheet
->
GetTimeStamp
()
)
);
DrawPanel
->
MoveCursorToCrossHair
();
DrawPanel
->
MoveCursorToCrossHair
();
DrawPanel
->
m_IgnoreMouseEvents
=
false
;
DrawPanel
->
m_IgnoreMouseEvents
=
false
;
...
@@ -225,10 +225,12 @@ static void MoveOrResizeSheet( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint&
...
@@ -225,10 +225,12 @@ static void MoveOrResizeSheet( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint&
if
(
aErase
)
if
(
aErase
)
sheet
->
Draw
(
aPanel
,
aDC
,
wxPoint
(
0
,
0
),
g_XorMode
);
sheet
->
Draw
(
aPanel
,
aDC
,
wxPoint
(
0
,
0
),
g_XorMode
);
wxPoint
pos
=
sheet
->
GetPosition
();
if
(
sheet
->
IsResized
()
)
if
(
sheet
->
IsResized
()
)
{
{
int
width
=
screen
->
GetCrossHairPosition
().
x
-
sheet
->
m_Pos
.
x
;
int
width
=
screen
->
GetCrossHairPosition
().
x
-
sheet
->
GetPosition
()
.
x
;
int
height
=
screen
->
GetCrossHairPosition
().
y
-
sheet
->
m_Pos
.
y
;
int
height
=
screen
->
GetCrossHairPosition
().
y
-
sheet
->
GetPosition
()
.
y
;
// If the sheet doesn't have any pins, clamp the minimum size to the default values.
// 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
;
width
=
(
width
<
MIN_SHEET_WIDTH
)
?
MIN_SHEET_WIDTH
:
width
;
...
@@ -241,18 +243,17 @@ static void MoveOrResizeSheet( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint&
...
@@ -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.
// If the sheet has pins, use the pin positions to clamp the minimum height.
height
=
(
height
<
sheet
->
GetMinHeight
()
+
gridSizeY
)
?
height
=
(
height
<
sheet
->
GetMinHeight
()
+
gridSizeY
)
?
sheet
->
GetMinHeight
()
+
gridSizeY
:
height
;
sheet
->
GetMinHeight
()
+
gridSizeY
:
height
;
width
=
(
width
<
sheet
->
GetMinWidth
()
+
gridSizeX
)
?
width
=
(
width
<
sheet
->
GetMinWidth
()
+
gridSizeX
)
?
sheet
->
GetMinWidth
()
+
gridSizeX
:
width
;
sheet
->
GetMinWidth
()
+
gridSizeX
:
width
;
}
}
wxPoint
grid
=
screen
->
GetNearestGridPosition
(
wxPoint
(
sheet
->
m_Pos
.
x
+
width
,
wxPoint
grid
=
screen
->
GetNearestGridPosition
(
wxPoint
(
pos
.
x
+
width
,
pos
.
y
+
height
)
);
sheet
->
m_Pos
.
y
+
height
)
);
sheet
->
Resize
(
wxSize
(
grid
.
x
-
pos
.
x
,
grid
.
y
-
pos
.
y
)
);
sheet
->
Resize
(
wxSize
(
grid
.
x
-
sheet
->
m_Pos
.
x
,
grid
.
y
-
sheet
->
m_Pos
.
y
)
);
}
}
else
if
(
sheet
->
IsMoving
()
)
else
if
(
sheet
->
IsMoving
()
)
{
{
moveVector
=
screen
->
GetCrossHairPosition
()
-
sheet
->
m_P
os
;
moveVector
=
screen
->
GetCrossHairPosition
()
-
p
os
;
sheet
->
Move
(
moveVector
);
sheet
->
Move
(
moveVector
);
}
}
...
@@ -361,7 +362,7 @@ void SCH_EDIT_FRAME::StartMoveSheet( SCH_SHEET* aSheet, wxDC* aDC )
...
@@ -361,7 +362,7 @@ void SCH_EDIT_FRAME::StartMoveSheet( SCH_SHEET* aSheet, wxDC* aDC )
return
;
return
;
DrawPanel
->
CrossHairOff
(
aDC
);
DrawPanel
->
CrossHairOff
(
aDC
);
GetScreen
()
->
SetCrossHairPosition
(
aSheet
->
m_Pos
);
GetScreen
()
->
SetCrossHairPosition
(
aSheet
->
GetPosition
()
);
DrawPanel
->
MoveCursorToCrossHair
();
DrawPanel
->
MoveCursorToCrossHair
();
if
(
!
aSheet
->
IsNew
()
)
if
(
!
aSheet
->
IsNew
()
)
...
...
eeschema/sheetlab.cpp
View file @
1047e60e
...
@@ -60,7 +60,7 @@ int SCH_EDIT_FRAME::EditSheetPin( SCH_SHEET_PIN* aSheetPin, wxDC* aDC )
...
@@ -60,7 +60,7 @@ int SCH_EDIT_FRAME::EditSheetPin( SCH_SHEET_PIN* aSheetPin, wxDC* aDC )
dlg
.
SetTextHeightUnits
(
GetUnitsLabel
(
g_UserUnit
)
);
dlg
.
SetTextHeightUnits
(
GetUnitsLabel
(
g_UserUnit
)
);
dlg
.
SetTextWidth
(
ReturnStringFromValue
(
g_UserUnit
,
aSheetPin
->
m_Size
.
x
,
m_InternalUnits
)
);
dlg
.
SetTextWidth
(
ReturnStringFromValue
(
g_UserUnit
,
aSheetPin
->
m_Size
.
x
,
m_InternalUnits
)
);
dlg
.
SetTextWidthUnits
(
GetUnitsLabel
(
g_UserUnit
)
);
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
/* 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
* 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 )
...
@@ -86,7 +86,7 @@ int SCH_EDIT_FRAME::EditSheetPin( SCH_SHEET_PIN* aSheetPin, wxDC* aDC )
aSheetPin
->
m_Text
=
dlg
.
GetLabelName
();
aSheetPin
->
m_Text
=
dlg
.
GetLabelName
();
aSheetPin
->
m_Size
.
y
=
ReturnValueFromString
(
g_UserUnit
,
dlg
.
GetTextHeight
(),
m_InternalUnits
);
aSheetPin
->
m_Size
.
y
=
ReturnValueFromString
(
g_UserUnit
,
dlg
.
GetTextHeight
(),
m_InternalUnits
);
aSheetPin
->
m_Size
.
x
=
ReturnValueFromString
(
g_UserUnit
,
dlg
.
GetTextWidth
(),
m_InternalUnits
);
aSheetPin
->
m_Size
.
x
=
ReturnValueFromString
(
g_UserUnit
,
dlg
.
GetTextWidth
(),
m_InternalUnits
);
aSheetPin
->
m_Shape
=
dlg
.
GetConnectionType
(
);
aSheetPin
->
SetShape
(
dlg
.
GetConnectionType
()
);
if
(
aDC
)
if
(
aDC
)
aSheetPin
->
Draw
(
DrawPanel
,
aDC
,
wxPoint
(
0
,
0
),
GR_DEFAULT_DRAWMODE
);
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 )
...
@@ -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
=
new
SCH_SHEET_PIN
(
aSheet
,
wxPoint
(
0
,
0
),
line
);
sheetPin
->
SetFlags
(
IS_NEW
);
sheetPin
->
SetFlags
(
IS_NEW
);
sheetPin
->
m_Size
=
m_lastSheetPinTextSize
;
sheetPin
->
m_Size
=
m_lastSheetPinTextSize
;
sheetPin
->
m_Shape
=
m_lastSheetPinType
;
sheetPin
->
SetShape
(
m_lastSheetPinType
)
;
int
response
=
EditSheetPin
(
sheetPin
,
NULL
);
int
response
=
EditSheetPin
(
sheetPin
,
NULL
);
...
@@ -113,7 +113,7 @@ SCH_SHEET_PIN* SCH_EDIT_FRAME::CreateSheetPin( SCH_SHEET* aSheet, wxDC* aDC )
...
@@ -113,7 +113,7 @@ SCH_SHEET_PIN* SCH_EDIT_FRAME::CreateSheetPin( SCH_SHEET* aSheet, wxDC* aDC )
return
NULL
;
return
NULL
;
}
}
m_lastSheetPinType
=
sheetPin
->
m_Shape
;
m_lastSheetPinType
=
sheetPin
->
GetShape
()
;
m_lastSheetPinTextSize
=
sheetPin
->
m_Size
;
m_lastSheetPinTextSize
=
sheetPin
->
m_Size
;
MoveItem
(
(
SCH_ITEM
*
)
sheetPin
,
aDC
);
MoveItem
(
(
SCH_ITEM
*
)
sheetPin
,
aDC
);
...
@@ -157,7 +157,8 @@ SCH_SHEET_PIN* SCH_EDIT_FRAME::ImportSheetPin( SCH_SHEET* aSheet, wxDC* 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
=
new
SCH_SHEET_PIN
(
aSheet
,
wxPoint
(
0
,
0
),
label
->
m_Text
);
sheetPin
->
SetFlags
(
IS_NEW
);
sheetPin
->
SetFlags
(
IS_NEW
);
sheetPin
->
m_Size
=
m_lastSheetPinTextSize
;
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
);
MoveItem
(
(
SCH_ITEM
*
)
sheetPin
,
aDC
);
...
...
include/base_struct.h
View file @
1047e60e
...
@@ -162,16 +162,16 @@ public:
...
@@ -162,16 +162,16 @@ public:
/**
/**
* Function Inspect
* Function Inspect
* is the examining function within the INSPECTOR which is passed to the
* is the examining function within the INSPECTOR which is passed to the
*
Iterate function. It is used primarily for searching, but not limited
*
EDA_ITEM::Iterate() function. It is used primarily for searching, but
* to that. It can also collect or modify the scanned objects.
*
not limited
to that. It can also collect or modify the scanned objects.
*
*
* @param
test
Item An EDA_ITEM to examine.
* @param
a
Item An EDA_ITEM to examine.
* @param
t
estData is arbitrary data needed by the inspector to determine
* @param
aT
estData is arbitrary data needed by the inspector to determine
* if the EDA_ITEM under test meets its match criteria.
*
if the EDA_ITEM under test meets its match criteria.
* @return
SEARCH_RESULT SEARCH_QUIT if the Iterator is to stop the scan,
* @return
A #SEARCH_RESULT type #SEARCH_QUIT if the iterator function is to
*
else SCAN
_CONTINUE;
*
stop the scan, else #SEARCH
_CONTINUE;
*/
*/
SEARCH_RESULT
virtual
Inspect
(
EDA_ITEM
*
testItem
,
const
void
*
t
estData
)
=
0
;
SEARCH_RESULT
virtual
Inspect
(
EDA_ITEM
*
aItem
,
const
void
*
aT
estData
)
=
0
;
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment