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
dda28ed6
Commit
dda28ed6
authored
Aug 06, 2007
by
dickelbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
more new search stuff, beautification
parent
6f7209aa
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
247 additions
and
229 deletions
+247
-229
base_struct.cpp
common/base_struct.cpp
+2
-2
base_struct.h
include/base_struct.h
+16
-13
class_board.cpp
pcbnew/class_board.cpp
+3
-3
class_module.cpp
pcbnew/class_module.cpp
+1
-1
class_module.h
pcbnew/class_module.h
+1
-1
classpcb.cpp
pcbnew/classpcb.cpp
+224
-209
No files found.
common/base_struct.cpp
View file @
dda28ed6
...
...
@@ -231,7 +231,7 @@ std::ostream& EDA_BaseStruct::NestedSpace( int nestLevel, std::ostream& os )
// see base_struct.h
SEARCH_RESULT
EDA_BaseStruct
::
IterateForward
(
EDA_BaseStruct
*
listStart
,
INSPECTOR
*
inspector
,
void
*
testData
,
const
KICAD_T
scanTypes
[]
)
INSPECTOR
*
inspector
,
const
void
*
testData
,
const
KICAD_T
scanTypes
[]
)
{
EDA_BaseStruct
*
p
=
listStart
;
for
(
;
p
;
p
=
p
->
Pnext
)
...
...
@@ -245,7 +245,7 @@ SEARCH_RESULT EDA_BaseStruct::IterateForward( EDA_BaseStruct* listStart,
// see base_struct.h
SEARCH_RESULT
EDA_BaseStruct
::
Traverse
(
INSPECTOR
*
inspector
,
void
*
testData
,
SEARCH_RESULT
EDA_BaseStruct
::
Traverse
(
INSPECTOR
*
inspector
,
const
void
*
testData
,
const
KICAD_T
scanTypes
[]
)
{
KICAD_T
stype
;
...
...
include/base_struct.h
View file @
dda28ed6
...
...
@@ -88,7 +88,7 @@ class EDA_BaseStruct;
* Class INSPECTOR
* is an abstract class that is used to inspect and possibly collect the
* (search) results of Iterating over a list or tree of KICAD_T objects.
* Extend from this class and implment the Inspect function and provide for
* Extend from this class and impl
e
ment the Inspect function and provide for
* a way for the extension to collect the results of the search/scan data and
* provide them to the caller.
*/
...
...
@@ -99,15 +99,18 @@ public:
/**
* Function Inspect
* is the function type that can be passed to the Iterate function,
* used primarily for searching, but not exclusively.
* 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.
*
* @param testItem An EDA_BaseStruct to examine.
* @param testData is arbitrary data needed by the inspector to determine
* if the EDA_BaseStruct under test meets its match criteria.
* @return SEARCH_RESULT - SEARCH_QUIT if the Iterator is to stop the scan,
* else SCAN_CONTINUE;
*/
SEARCH_RESULT
virtual
Inspect
(
EDA_BaseStruct
*
testItem
,
void
*
testData
)
=
0
;
const
void
*
testData
)
=
0
;
// derived classes add more functions for collecting and subsequent
// retrieval here.
...
...
@@ -199,27 +202,27 @@ public:
/**
* Function IterateForward
* walks through the object tree calling the testFunc on each object
* type requested in s
truct
Types.
* type requested in s
can
Types.
*
* @param listStart The first in a list of EDA_BaseStructs to iterate over.
* @param inspector Is an INSPECTOR to call on each object that is o
f o
ne of
* the requested
item
Types.
* @param inspector Is an INSPECTOR to call on each object that is one of
* the requested
scan
Types.
* @param testData Is an aid to testFunc, and should be sufficient to
* allow it to fully determine if an item meets the match criteria, but it
* may also be used to collect output.
* @param scanTypes
Is a char array of KICAD_T
that is EOT
* @param scanTypes
A KICAD_T array
that is EOT
* terminated, and provides both the order and interest level of of
* the types of objects to be iterated over.
* @return SEARCH_RESULT - SEARCH_QUIT if the
Iterator is to stop the scan,
* else SCAN_CONTINUE;
* @return SEARCH_RESULT - SEARCH_QUIT if the
called INSPECTOR returned
*
SEARCH_QUIT,
else SCAN_CONTINUE;
*/
static
SEARCH_RESULT
IterateForward
(
EDA_BaseStruct
*
listStart
,
INSPECTOR
*
inspector
,
void
*
testData
,
const
KICAD_T
scanTypes
[]
);
INSPECTOR
*
inspector
,
const
void
*
testData
,
const
KICAD_T
scanTypes
[]
);
/**
* Function Traverse
* should be re-implemented for each der
r
ived class in order to handle
* should be re-implemented for each derived class in order to handle
* all the types given by its member data. Implementations should call
* inspector->Inspect() on types in scanTypes[], and may use IterateForward()
* to do so on lists of such data.
...
...
@@ -230,7 +233,7 @@ public:
* @return SEARCH_RESULT - SEARCH_QUIT if the Iterator is to stop the scan,
* else SCAN_CONTINUE;
*/
virtual
SEARCH_RESULT
Traverse
(
INSPECTOR
*
inspector
,
void
*
testData
,
virtual
SEARCH_RESULT
Traverse
(
INSPECTOR
*
inspector
,
const
void
*
testData
,
const
KICAD_T
scanTypes
[]
);
...
...
pcbnew/class_board.cpp
View file @
dda28ed6
...
...
@@ -300,7 +300,7 @@ public:
{
}
SEARCH_RESULT
Inspect
(
EDA_BaseStruct
*
testItem
,
void
*
testData
)
SEARCH_RESULT
Inspect
(
EDA_BaseStruct
*
testItem
,
const
void
*
testData
)
{
const
wxPoint
*
refPos
=
(
const
wxPoint
*
)
testData
;
...
...
@@ -336,9 +336,9 @@ EDA_BaseStruct* BOARD::FindModuleOrPad( const wxPoint& refPos )
{
ModuleOrPad
inspector
;
static
const
KICAD_T
scanTypes
[]
=
{
TYPE
MODULE
,
TYPEPAD
,
EOT
};
static
const
KICAD_T
scanTypes
[]
=
{
TYPE
PAD
,
TYPEMODULE
,
EOT
};
if
(
SEARCH_QUIT
==
IterateForward
(
m_Modules
,
&
inspector
,
(
void
*
)
&
refPos
,
scanTypes
)
)
if
(
SEARCH_QUIT
==
IterateForward
(
m_Modules
,
&
inspector
,
&
refPos
,
scanTypes
)
)
return
inspector
.
found
;
return
NULL
;
...
...
pcbnew/class_module.cpp
View file @
dda28ed6
...
...
@@ -1188,7 +1188,7 @@ void MODULE::Show( int nestLevel, std::ostream& os )
// see class_module.h
SEARCH_RESULT
MODULE
::
Traverse
(
INSPECTOR
*
inspector
,
void
*
testData
,
SEARCH_RESULT
MODULE
::
Traverse
(
INSPECTOR
*
inspector
,
const
void
*
testData
,
const
KICAD_T
scanTypes
[]
)
{
KICAD_T
stype
;
...
...
pcbnew/class_module.h
View file @
dda28ed6
...
...
@@ -157,7 +157,7 @@ public:
* @return SEARCH_RESULT - SEARCH_QUIT if the Iterator is to stop the scan,
* else SCAN_CONTINUE;
*/
virtual
SEARCH_RESULT
Traverse
(
INSPECTOR
*
inspector
,
void
*
testData
,
virtual
SEARCH_RESULT
Traverse
(
INSPECTOR
*
inspector
,
const
void
*
testData
,
const
KICAD_T
scanTypes
[]
);
#endif
...
...
pcbnew/classpcb.cpp
View file @
dda28ed6
...
...
@@ -19,72 +19,76 @@
/**************************************************************/
void
EDA_BaseStruct
::
Place
(
WinEDA_DrawFrame
*
frame
,
wxDC
*
DC
)
void
EDA_BaseStruct
::
Place
(
WinEDA_DrawFrame
*
frame
,
wxDC
*
DC
)
/**************************************************************/
/* fonction virtuelle de placement: non utilisee en pcbnew (utilisee eeschema)
---- A mieux utiliser (TODO...)
*/
*
---- A mieux utiliser (TODO...)
*/
{
}
/**********************/
/* Classe EDGE_ZONE */
/**********************/
/**********************/
/* Classe EDGE_ZONE */
/**********************/
/* Classe EDGE_ZONE: constructeur */
EDGE_ZONE
::
EDGE_ZONE
(
EDA_BaseStruct
*
parent
)
:
DRAWSEGMENT
(
parent
,
TYPEEDGEZONE
)
EDGE_ZONE
::
EDGE_ZONE
(
EDA_BaseStruct
*
parent
)
:
DRAWSEGMENT
(
parent
,
TYPEEDGEZONE
)
{
}
/* Effacement memoire de la structure */
EDGE_ZONE
::
~
EDGE_ZONE
(
void
)
EDGE_ZONE
::
~
EDGE_ZONE
(
void
)
{
}
/**********************/
/* Classe DRAWSEGMENT */
/**********************/
/**********************/
/* Classe DRAWSEGMENT */
/**********************/
/* Classe DRAWSEGMENT: constructeur */
DRAWSEGMENT
::
DRAWSEGMENT
(
EDA_BaseStruct
*
StructFather
,
DrawStructureType
idtype
)
:
EDA_BaseLineStruct
(
StructFather
,
idtype
)
DRAWSEGMENT
::
DRAWSEGMENT
(
EDA_BaseStruct
*
StructFather
,
DrawStructureType
idtype
)
:
EDA_BaseLineStruct
(
StructFather
,
idtype
)
{
m_Flags
=
m_Shape
=
m_Type
=
m_Angle
=
0
;
}
/* Effacement memoire de la structure */
DRAWSEGMENT
::
~
DRAWSEGMENT
(
void
)
DRAWSEGMENT
::
~
DRAWSEGMENT
(
void
)
{
}
void
DRAWSEGMENT
::
UnLink
(
void
)
{
/* Modification du chainage arriere */
if
(
Pback
)
{
if
(
Pback
->
m_StructType
!=
TYPEPCB
)
if
(
Pback
->
m_StructType
!=
TYPEPCB
)
{
Pback
->
Pnext
=
Pnext
;
}
else
/* Le chainage arriere pointe sur la structure "Pere" */
{
((
BOARD
*
)
Pback
)
->
m_Drawings
=
Pnext
;
(
(
BOARD
*
)
Pback
)
->
m_Drawings
=
Pnext
;
}
}
/* Modification du chainage avant */
if
(
Pnext
)
Pnext
->
Pback
=
Pback
;
if
(
Pnext
)
Pnext
->
Pback
=
Pback
;
Pnext
=
Pback
=
NULL
;
}
/*******************************************/
void
DRAWSEGMENT
::
Copy
(
DRAWSEGMENT
*
source
)
void
DRAWSEGMENT
::
Copy
(
DRAWSEGMENT
*
source
)
/*******************************************/
{
m_Type
=
source
->
m_Type
;
...
...
@@ -99,131 +103,137 @@ void DRAWSEGMENT::Copy(DRAWSEGMENT * source)
/********************************************************/
bool
DRAWSEGMENT
::
WriteDrawSegmentDescr
(
FILE
*
File
)
bool
DRAWSEGMENT
::
WriteDrawSegmentDescr
(
FILE
*
File
)
/********************************************************/
{
if
(
GetState
(
DELETED
)
)
return
FALSE
;
if
(
GetState
(
DELETED
)
)
return
FALSE
;
fprintf
(
File
,
"$DRAWSEGMENT
\n
"
);
fprintf
(
File
,
"Po %d %d %d %d %d %d
\n
"
,
fprintf
(
File
,
"$DRAWSEGMENT
\n
"
);
fprintf
(
File
,
"Po %d %d %d %d %d %d
\n
"
,
m_Shape
,
m_Start
.
x
,
m_Start
.
y
,
m_End
.
x
,
m_End
.
y
,
m_Width
);
fprintf
(
File
,
"De %d %d %d %lX %X
\n
"
,
fprintf
(
File
,
"De %d %d %d %lX %X
\n
"
,
m_Layer
,
m_Type
,
m_Angle
,
m_TimeStamp
,
ReturnStatus
()
);
fprintf
(
File
,
"$EndDRAWSEGMENT
\n
"
);
m_TimeStamp
,
ReturnStatus
()
);
fprintf
(
File
,
"$EndDRAWSEGMENT
\n
"
);
return
TRUE
;
}
/******************************************************************/
bool
DRAWSEGMENT
::
ReadDrawSegmentDescr
(
FILE
*
File
,
int
*
LineNum
)
bool
DRAWSEGMENT
::
ReadDrawSegmentDescr
(
FILE
*
File
,
int
*
LineNum
)
/******************************************************************/
/* Lecture de la description de 1 segment type Drawing PCB
*/
*/
{
char
Line
[
2048
];
char
Line
[
2048
];
while
(
GetLine
(
File
,
Line
,
LineNum
)
!=
NULL
)
while
(
GetLine
(
File
,
Line
,
LineNum
)
!=
NULL
)
{
if
(
strnicmp
(
Line
,
"$End"
,
4
)
==
0
)
return
TRUE
;
/* fin de liste */
if
(
Line
[
0
]
==
'P'
)
if
(
strnicmp
(
Line
,
"$End"
,
4
)
==
0
)
return
TRUE
;
/* fin de liste */
if
(
Line
[
0
]
==
'P'
)
{
sscanf
(
Line
+
2
,
" %d %d %d %d %d %d"
,
sscanf
(
Line
+
2
,
" %d %d %d %d %d %d"
,
&
m_Shape
,
&
m_Start
.
x
,
&
m_Start
.
y
,
&
m_End
.
x
,
&
m_End
.
y
,
&
m_Width
);
if
(
m_Width
<
0
)
m_Width
=
0
;
if
(
m_Width
<
0
)
m_Width
=
0
;
}
if
(
Line
[
0
]
==
'D'
)
if
(
Line
[
0
]
==
'D'
)
{
int
status
;
sscanf
(
Line
+
2
,
" %d %d %d %lX %X"
,
sscanf
(
Line
+
2
,
" %d %d %d %lX %X"
,
&
m_Layer
,
&
m_Type
,
&
m_Angle
,
&
m_TimeStamp
,
&
status
);
&
m_TimeStamp
,
&
status
);
if
(
m_Layer
<
FIRST_NO_COPPER_LAYER
)
if
(
m_Layer
<
FIRST_NO_COPPER_LAYER
)
m_Layer
=
FIRST_NO_COPPER_LAYER
;
if
(
m_Layer
>
LAST_NO_COPPER_LAYER
)
if
(
m_Layer
>
LAST_NO_COPPER_LAYER
)
m_Layer
=
LAST_NO_COPPER_LAYER
;
SetState
(
status
,
ON
);
SetState
(
status
,
ON
);
}
}
return
FALSE
;
}
/*******************/
/* Classe MARQUEUR */
/*******************/
/*******************/
/* Classe MARQUEUR */
/*******************/
MARQUEUR
::
MARQUEUR
(
EDA_BaseStruct
*
StructFather
)
:
EDA_BaseStruct
(
StructFather
,
TYPEMARQUEUR
)
MARQUEUR
::
MARQUEUR
(
EDA_BaseStruct
*
StructFather
)
:
EDA_BaseStruct
(
StructFather
,
TYPEMARQUEUR
)
{
m_Bitmap
=
NULL
;
m_Type
=
0
;
m_Color
=
RED
;
}
/* Effacement memoire de la structure */
MARQUEUR
::
~
MARQUEUR
(
void
)
MARQUEUR
::
~
MARQUEUR
(
void
)
{
}
/* supprime du chainage la structure Struct
les structures arrieres et avant sont chainees directement
*
les structures arrieres et avant sont chainees directement
*/
void
MARQUEUR
::
UnLink
(
void
)
{
/* Modification du chainage arriere */
if
(
Pback
)
{
if
(
Pback
->
m_StructType
!=
TYPEPCB
)
if
(
Pback
->
m_StructType
!=
TYPEPCB
)
{
Pback
->
Pnext
=
Pnext
;
}
else
/* Le chainage arriere pointe sur la structure "Pere" */
{
((
BOARD
*
)
Pback
)
->
m_Drawings
=
Pnext
;
(
(
BOARD
*
)
Pback
)
->
m_Drawings
=
Pnext
;
}
}
/* Modification du chainage avant */
if
(
Pnext
)
Pnext
->
Pback
=
Pback
;
if
(
Pnext
)
Pnext
->
Pback
=
Pback
;
Pnext
=
Pback
=
NULL
;
}
/**************************************************/
/* Class SCREEN: classe de gestion d'un affichage */
/***************************************************/
/**************************************************/
/* Class SCREEN: classe de gestion d'un affichage */
/***************************************************/
/* Constructeur de SCREEN */
PCB_SCREEN
::
PCB_SCREEN
(
int
idscreen
)
:
BASE_SCREEN
(
TYPESCREEN
)
PCB_SCREEN
::
PCB_SCREEN
(
int
idscreen
)
:
BASE_SCREEN
(
TYPESCREEN
)
{
int
zoom_list
[]
=
{
1
,
2
,
4
,
8
,
16
,
32
,
64
,
128
,
256
,
512
,
1024
,
2048
,
0
};
int
zoom_list
[]
=
{
1
,
2
,
4
,
8
,
16
,
32
,
64
,
128
,
256
,
512
,
1024
,
2048
,
0
};
m_Type
=
idscreen
;
SetGridList
(
g_GridList
);
SetZoomList
(
zoom_list
);
SetGridList
(
g_GridList
);
SetZoomList
(
zoom_list
);
Init
();
}
/***************************/
PCB_SCREEN
::~
PCB_SCREEN
(
void
)
PCB_SCREEN
::~
PCB_SCREEN
(
void
)
/***************************/
{
}
/*************************/
void
PCB_SCREEN
::
Init
(
void
)
void
PCB_SCREEN
::
Init
(
void
)
/*************************/
{
InitDatas
();
...
...
@@ -231,18 +241,19 @@ void PCB_SCREEN::Init(void)
m_Route_Layer_TOP
=
CMP_N
;
/* ref couches par defaut pour vias (Cu.. Cmp) */
m_Route_Layer_BOTTOM
=
CUIVRE_N
;
m_Zoom
=
128
;
/* valeur */
m_Grid
=
wxSize
(
500
,
500
);
/* pas de la grille en 1/10000 "*/
m_Grid
=
wxSize
(
500
,
500
);
/* pas de la grille en 1/10000 "*/
}
/*************************/
/* class DISPLAY_OPTIONS */
/*************************/
/*
Options diverses d'affichage l'c
ran:
*/
* Options diverses d'affichage �l'�
ran:
*/
DISPLAY_OPTIONS
::
DISPLAY_OPTIONS
(
void
)
DISPLAY_OPTIONS
::
DISPLAY_OPTIONS
(
void
)
{
DisplayPadFill
=
TRUE
;
DisplayPadNum
=
TRUE
;
...
...
@@ -266,12 +277,13 @@ DISPLAY_OPTIONS::DISPLAY_OPTIONS(void)
/*****************************************************/
EDA_BoardDesignSettings
::
EDA_BoardDesignSettings
(
void
)
EDA_BoardDesignSettings
::
EDA_BoardDesignSettings
(
void
)
/*****************************************************/
// Default values for designing boards
{
int
ii
;
int
default_layer_color
[
32
]
=
{
int
ii
;
int
default_layer_color
[
32
]
=
{
GREEN
,
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
,
...
...
@@ -286,29 +298,33 @@ int default_layer_color[32]= {
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
,
LIGHTGRAY
};
LIGHTGRAY
};
m_CopperLayerCount
=
2
;
// Default design is a double sided board
m_ViaDrill
=
250
;
// via drill (for the entire board)
m_CurrentViaSize
=
450
;
// Current via size
m_CurrentViaType
=
VIA_NORMALE
;
/* via type (BLIND, TROUGHT ...), bits 1 and 2 (not 0 and 1)*/
m_CurrentTrackWidth
=
170
;
// current track width
for
(
ii
=
0
;
ii
<
HIST0RY_NUMBER
;
ii
++
)
for
(
ii
=
0
;
ii
<
HIST0RY_NUMBER
;
ii
++
)
{
m_TrackWidhtHistory
[
ii
]
=
0
;
// Last HIST0RY_NUMBER used track widths
m_ViaSizeHistory
[
ii
]
=
0
;
// Last HIST0RY_NUMBER used via sizes
}
m_DrawSegmentWidth
=
100
;
// current graphic line width (not EDGE layer)
m_EdgeSegmentWidth
=
100
;
// current graphic line width (EDGE layer only)
m_PcbTextWidth
=
100
;
// current Pcb (not module) Text width
m_PcbTextSize
=
wxSize
(
500
,
500
);
// current Pcb (not module) Text size
m_PcbTextSize
=
wxSize
(
500
,
500
);
// current Pcb (not module) Text size
m_TrackClearence
=
100
;
// track to track and track to pads clearance
m_ZoneClearence
=
150
;
// zone to track and zone to pads clearance
m_MaskMargin
=
150
;
// Solder mask margin
/* Color options for screen display of the Printed Board: */
m_PcbGridColor
=
DARKGRAY
;
// Grid color
for
(
ii
=
0
;
ii
<
32
;
ii
++
)
m_LayerColor
[
ii
]
=
default_layer_color
[
ii
];
// Layer colors (tracks and graphic items)
for
(
ii
=
0
;
ii
<
32
;
ii
++
)
m_LayerColor
[
ii
]
=
default_layer_color
[
ii
];
// Layer colors (tracks and graphic items)
m_ViaColor
[
VIA_BORGNE
]
=
CYAN
;
m_ViaColor
[
VIA_ENTERREE
]
=
BROWN
;
m_ViaColor
[
VIA_NORMALE
]
=
WHITE
;
...
...
@@ -320,4 +336,3 @@ int default_layer_color[32]= {
m_PadCMPColor
=
RED
;
// Pad color for the COPPER side of the pad
m_RatsnestColor
=
WHITE
;
// Ratsnest color
}
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