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
b18eedb4
Commit
b18eedb4
authored
Oct 08, 2008
by
charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More about copper zones filled without grid (by polygons) - work still in progress
parent
1a9c5320
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
81 additions
and
49 deletions
+81
-49
eeredraw.cpp
eeschema/eeredraw.cpp
+2
-3
build_version.h
include/build_version.h
+2
-2
class_zone.cpp
pcbnew/class_zone.cpp
+62
-20
ioascii.cpp
pcbnew/ioascii.cpp
+0
-7
tracepcb.cpp
pcbnew/tracepcb.cpp
+14
-16
zones_convert_brd_items_to_polygons.cpp
pcbnew/zones_convert_brd_items_to_polygons.cpp
+1
-1
No files found.
eeschema/eeredraw.cpp
View file @
b18eedb4
...
...
@@ -379,7 +379,6 @@ void DrawJunctionStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint&
int
DrawMode
,
int
Color
)
{
int
color
;
int
Width
=
DRAWJUNCTION_SIZE
;
if
(
Color
>=
0
)
color
=
Color
;
...
...
@@ -387,8 +386,8 @@ void DrawJunctionStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint&
color
=
ReturnLayerColor
(
m_Layer
);
GRSetDrawMode
(
DC
,
DrawMode
);
GRFilled
Rect
(
&
panel
->
m_ClipBox
,
DC
,
m_Pos
.
x
-
Width
+
offset
.
x
,
m_Pos
.
y
-
Width
+
offset
.
y
,
m_Pos
.
x
+
Width
+
offset
.
x
,
m_Pos
.
y
+
Width
+
offset
.
y
,
color
,
color
);
GRFilled
Circle
(
&
panel
->
m_ClipBox
,
DC
,
m_Pos
.
x
+
offset
.
x
,
m_Pos
.
y
+
offset
.
y
,
DRAWJUNCTION_SIZE
,
0
,
color
,
color
);
}
...
...
include/build_version.h
View file @
b18eedb4
...
...
@@ -9,7 +9,7 @@ COMMON_GLOBL wxString g_BuildVersion
# include "config.h"
(
wxT
(
KICAD_SVN_VERSION
))
# else
(
wxT
(
"(2008100
2
-unstable)"
))
/* main program version */
(
wxT
(
"(2008100
8
-unstable)"
))
/* main program version */
# endif
#endif
;
...
...
@@ -20,7 +20,7 @@ COMMON_GLOBL wxString g_BuildAboutVersion
# include "config.h"
(
wxT
(
KICAD_ABOUT_VERSION
))
# else
(
wxT
(
"(2008100
2
-unstable)"
))
/* svn date & rev (normally overridden) */
(
wxT
(
"(2008100
8
-unstable)"
))
/* svn date & rev (normally overridden) */
# endif
#endif
;
...
...
pcbnew/class_zone.cpp
View file @
b18eedb4
...
...
@@ -84,8 +84,8 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const
// Save the outline main info
ret
=
fprintf
(
aFile
,
"ZInfo %8.8lX %d
\"
%s
\"\n
"
,
m_TimeStamp
,
m_NetCode
,
CONV_TO_UTF8
(
m_Netname
)
);
m_TimeStamp
,
m_NetCode
,
CONV_TO_UTF8
(
m_Netname
)
);
if
(
ret
<
3
)
return
false
;
...
...
@@ -136,7 +136,7 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const
if
(
ret
<
2
)
return
false
;
ret
=
fprintf
(
aFile
,
"ZOptions %d
\n
"
,
m_GridFillValue
);
ret
=
fprintf
(
aFile
,
"ZOptions %d
\n
"
,
m_GridFillValue
);
if
(
ret
<
1
)
return
false
;
...
...
@@ -145,12 +145,27 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const
for
(
item_pos
=
0
;
item_pos
<
corners_count
;
item_pos
++
)
{
ret
=
fprintf
(
aFile
,
"ZCorner %d %d %d
\n
"
,
m_Poly
->
corner
[
item_pos
].
x
,
m_Poly
->
corner
[
item_pos
].
y
,
m_Poly
->
corner
[
item_pos
].
end_contour
);
m_Poly
->
corner
[
item_pos
].
x
,
m_Poly
->
corner
[
item_pos
].
y
,
m_Poly
->
corner
[
item_pos
].
end_contour
);
if
(
ret
<
3
)
return
false
;
}
// Save the PolysList
if
(
m_FilledPolysList
.
size
()
)
{
fprintf
(
aFile
,
"$POLYSCORNERS
\n
"
);
for
(
item_pos
=
0
;
item_pos
<
m_FilledPolysList
.
size
();
item_pos
++
)
{
const
CPolyPt
*
corner
=
&
m_FilledPolysList
[
item_pos
];
ret
=
fprintf
(
aFile
,
"%d %d %d
\n
"
,
corner
->
x
,
corner
->
y
,
corner
->
end_contour
);
if
(
ret
<
3
)
return
false
;
}
fprintf
(
aFile
,
"$endPOLYSCORNERS
\n
"
);
}
fprintf
(
aFile
,
"$endCZONE_OUTLINE
\n
"
);
return
true
;
...
...
@@ -255,7 +270,7 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
{
int
gridsize
=
50
;
text
=
Line
+
8
;
ret
=
sscanf
(
text
,
"%d"
,
&
gridsize
);
ret
=
sscanf
(
text
,
"%d"
,
&
gridsize
);
if
(
ret
<
1
)
return
false
;
else
...
...
@@ -292,6 +307,24 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
}
}
}
if
(
strnicmp
(
Line
,
"$POLYSCORNERS"
,
13
)
==
0
)
// Read the PolysList (polygons used for fill areas in the zone)
{
while
(
GetLine
(
aFile
,
Line
,
aLineNum
,
sizeof
(
Line
)
-
1
)
!=
NULL
)
{
if
(
strnicmp
(
Line
,
"$endPOLYSCORNERS"
,
4
)
==
0
)
break
;
CPolyPt
corner
;
int
itmp
;
ret
=
sscanf
(
Line
,
"%d %d %d"
,
&
corner
.
x
,
&
corner
.
y
,
&
itmp
);
if
(
ret
<
3
)
return
false
;
corner
.
end_contour
=
itmp
?
true
:
false
;
m_FilledPolysList
.
push_back
(
corner
);
}
}
if
(
strnicmp
(
Line
,
"$end"
,
4
)
==
0
)
// end of description
{
break
;
...
...
@@ -392,7 +425,7 @@ void ZONE_CONTAINER::DrawFilledArea( WinEDA_DrawPanel* panel,
{
static
int
*
CornersBuffer
=
NULL
;
static
unsigned
CornersBufferSize
=
0
;
bool
sketch_mode
=
false
;
// true to show areas outlines only (test and debug purposes)
bool
sketch_mode
=
false
;
// true to show areas outlines only (test and debug purposes)
if
(
DC
==
NULL
)
return
;
...
...
@@ -455,12 +488,12 @@ void ZONE_CONTAINER::DrawFilledArea( WinEDA_DrawPanel* panel,
corners_count
++
;
if
(
corner
->
end_contour
)
{
// Draw the current filled area
if
(
sketch_mode
)
if
(
sketch_mode
)
GRClosedPoly
(
&
panel
->
m_ClipBox
,
DC
,
corners_count
,
CornersBuffer
,
false
,
0
,
color
,
color
);
false
,
0
,
color
,
color
);
else
GRPoly
(
&
panel
->
m_ClipBox
,
DC
,
corners_count
,
CornersBuffer
,
true
,
0
,
color
,
color
);
true
,
0
,
color
,
color
);
corners_count
=
0
;
ii
=
0
;
}
...
...
@@ -655,11 +688,11 @@ int ZONE_CONTAINER::HitTestForEdge( const wxPoint& refPos )
/* test the dist between segment and ref point */
dist
=
(
int
)
GetPointToLineSegmentDistance
(
refPos
.
x
,
refPos
.
y
,
m_Poly
->
corner
[
item_pos
].
x
,
m_Poly
->
corner
[
item_pos
].
y
,
m_Poly
->
corner
[
end_segm
].
x
,
m_Poly
->
corner
[
end_segm
].
y
);
refPos
.
y
,
m_Poly
->
corner
[
item_pos
].
x
,
m_Poly
->
corner
[
item_pos
].
y
,
m_Poly
->
corner
[
end_segm
].
x
,
m_Poly
->
corner
[
end_segm
].
y
);
if
(
dist
<=
min_dist
)
{
m_CornerSelection
=
item_pos
;
...
...
@@ -751,7 +784,7 @@ void ZONE_CONTAINER::Display_Infos( WinEDA_DrawFrame* frame )
msg
.
Printf
(
wxT
(
"%d"
),
GetNet
()
);
Affiche_1_Parametre
(
frame
,
text_pos
,
_
(
"NetCode"
),
msg
,
RED
);
text_pos
+=
8
;
text_pos
+=
6
;
msg
=
board
->
GetLayerName
(
m_Layer
);
Affiche_1_Parametre
(
frame
,
text_pos
,
_
(
"Layer"
),
msg
,
BROWN
);
...
...
@@ -759,15 +792,24 @@ void ZONE_CONTAINER::Display_Infos( WinEDA_DrawFrame* frame )
msg
.
Printf
(
wxT
(
"%d"
),
m_Poly
->
corner
.
size
()
);
Affiche_1_Parametre
(
frame
,
text_pos
,
_
(
"Corners"
),
msg
,
BLUE
);
text_pos
+=
8
;
if
(
m_GridFillValue
)
text_pos
+=
6
;
if
(
m_GridFillValue
)
msg
.
Printf
(
wxT
(
"%d"
),
m_GridFillValue
);
else
msg
=
_
(
"No Grid"
);
else
msg
=
_
(
"No Grid"
);
Affiche_1_Parametre
(
frame
,
text_pos
,
_
(
"Fill Grid"
),
msg
,
BROWN
);
text_pos
+=
8
;
// Useful for statistics :
text_pos
+=
9
;
msg
.
Printf
(
wxT
(
"%d"
),
m_Poly
->
m_HatchLines
.
size
()
);
Affiche_1_Parametre
(
frame
,
text_pos
,
_
(
"Hatch lines"
),
msg
,
BLUE
);
if
(
m_FilledPolysList
.
size
()
)
{
text_pos
+=
9
;
msg
.
Printf
(
wxT
(
"%d"
),
m_FilledPolysList
.
size
()
);
Affiche_1_Parametre
(
frame
,
text_pos
,
_
(
"Corners in DrawList"
),
msg
,
BLUE
);
}
}
...
...
pcbnew/ioascii.cpp
View file @
b18eedb4
...
...
@@ -1010,13 +1010,6 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
BestZoom
();
#ifdef PCBNEW
if
(
m_Pcb
->
m_ZoneDescriptorList
.
size
()
>
0
)
{
// Build filled areas
for
(
unsigned
ia
=
0
;
ia
<
m_Pcb
->
m_ZoneDescriptorList
.
size
();
ia
++
)
m_Pcb
->
m_ZoneDescriptorList
[
ia
]
->
BuildFilledPolysListData
(
m_Pcb
);
}
// Build connectivity info
Compile_Ratsnest
(
NULL
,
TRUE
);
#endif
...
...
pcbnew/tracepcb.cpp
View file @
b18eedb4
...
...
@@ -20,8 +20,6 @@
#include "protos.h"
using
namespace
std
;
/**********************************************************************/
void
WinEDA_ModuleEditFrame
::
RedrawActiveWindow
(
wxDC
*
DC
,
bool
EraseBg
)
...
...
@@ -111,20 +109,6 @@ void BOARD::Draw( WinEDA_DrawPanel* aPanel, wxDC* DC,
/********************************************************************/
/* Redraw the BOARD items but not cursors, axis or grid */
{
/* Draw areas (i.e. zones) */
for
(
int
ii
=
0
;
ii
<
GetAreaCount
();
ii
++
)
{
ZONE_CONTAINER
*
zone
=
GetArea
(
ii
);
// Areas must be drawn here only if not moved or dragged,
// because these areas are drawn by ManageCursor() in a specific manner
if
(
(
zone
->
m_Flags
&
(
IN_EDIT
|
IS_DRAGGED
|
IS_MOVED
))
==
0
)
{
zone
->
Draw
(
aPanel
,
DC
,
aDrawMode
);
zone
->
DrawFilledArea
(
aPanel
,
DC
,
aDrawMode
);
}
}
for
(
MODULE
*
module
=
m_Modules
;
module
;
module
=
module
->
Next
()
)
{
bool
display
=
true
;
...
...
@@ -188,6 +172,20 @@ void BOARD::Draw( WinEDA_DrawPanel* aPanel, wxDC* DC,
zone
->
Draw
(
aPanel
,
DC
,
aDrawMode
);
}
/* Draw areas (i.e. zones) */
for
(
int
ii
=
0
;
ii
<
GetAreaCount
();
ii
++
)
{
ZONE_CONTAINER
*
zone
=
GetArea
(
ii
);
// Areas must be drawn here only if not moved or dragged,
// because these areas are drawn by ManageCursor() in a specific manner
if
(
(
zone
->
m_Flags
&
(
IN_EDIT
|
IS_DRAGGED
|
IS_MOVED
))
==
0
)
{
zone
->
Draw
(
aPanel
,
DC
,
aDrawMode
);
zone
->
DrawFilledArea
(
aPanel
,
DC
,
aDrawMode
);
}
}
// draw the BOARD's markers.
for
(
unsigned
i
=
0
;
i
<
m_markers
.
size
();
++
i
)
...
...
pcbnew/zones_convert_brd_items_to_polygons.cpp
View file @
b18eedb4
...
...
@@ -30,7 +30,7 @@ void AddTextBoxWithClearancePolygon( Bool_Engine* aBooleng,
// Local Variables:
/* how many segments are used to create a polygon from a circle: */
static
int
s_CircleToSegmentsCount
=
32
;
static
int
s_CircleToSegmentsCount
=
16
;
/** function AddClearanceAreasPolygonsToPolysList
* Add non copper areas polygons (pads and tracks with clearence)
...
...
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