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
e162ffee
Commit
e162ffee
authored
Sep 13, 2010
by
jean-pierre charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use D_PAD::BuildPadPolygon() in plot functions
parent
59d33db4
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
3292 additions
and
3454 deletions
+3292
-3454
common_plotDXF_functions.cpp
common/common_plotDXF_functions.cpp
+8
-38
common_plotGERBER_functions.cpp
common/common_plotGERBER_functions.cpp
+36
-77
common_plotHPGL_functions.cpp
common/common_plotHPGL_functions.cpp
+41
-90
common_plotPS_functions.cpp
common/common_plotPS_functions.cpp
+35
-60
drawpanel.cpp
common/drawpanel.cpp
+10
-1
plot_common.h
include/plot_common.h
+17
-10
dialog_pad_properties_base.fbp
pcbnew/dialog_pad_properties_base.fbp
+3125
-3125
plot_rtn.cpp
pcbnew/plot_rtn.cpp
+20
-53
No files found.
common/common_plotDXF_functions.cpp
View file @
e162ffee
...
...
@@ -319,51 +319,21 @@ void DXF_PLOTTER::flash_pad_rect( wxPoint pos, wxSize padsize,
/*
* Plot trapezoidal pad.
* pos its center, pos.y
* Dimensions dim X and dimy
* DeltaX and variations deltaY
* Orientation and 0.1 degrees east
* Plot mode (FILLED, SKETCH, WIRED)
* The evidence is that a trapezoid, ie that deltaX or deltaY
* = 0.
*
* The rating of the vertexes are (vis a vis the plotter)
* 0 ------------- 3
* . .
* . .
* . .
* 1 --- 2
* aPadPos is pad position, aCorners the corners position of the basic shape
* Orientation aPadOrient in 0.1 degrees
* Plot mode = FILLED, SKETCH (unused)
*/
void
DXF_PLOTTER
::
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
trace_mode
)
void
DXF_PLOTTER
::
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
],
int
aPadOrient
,
GRTraceMode
aTrace_Mode
)
{
wxASSERT
(
output_file
);
wxPoint
polygone
[
4
];
/* coord of vertex or center of the pad */
wxPoint
coord
[
4
];
/* coord actual corners of a trapezoidal trace */
int
moveX
,
moveY
;
/* change pen position by X and Y axis to
* fill the trapezoid */
moveX
=
moveY
=
0
;
size
.
x
/=
2
;
size
.
y
/=
2
;
delta
.
x
/=
2
;
delta
.
y
/=
2
;
polygone
[
0
].
x
=
-
size
.
x
-
delta
.
y
;
polygone
[
0
].
y
=
+
size
.
y
+
delta
.
x
;
polygone
[
1
].
x
=
-
size
.
x
+
delta
.
y
;
polygone
[
1
].
y
=
-
size
.
y
-
delta
.
x
;
polygone
[
2
].
x
=
+
size
.
x
-
delta
.
y
;
polygone
[
2
].
y
=
-
size
.
y
+
delta
.
x
;
polygone
[
3
].
x
=
+
size
.
x
+
delta
.
y
;
polygone
[
3
].
y
=
+
size
.
y
-
delta
.
x
;
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
{
coord
[
ii
]
.
x
=
polygone
[
ii
].
x
+
pos
.
x
;
coord
[
ii
].
y
=
polygone
[
ii
].
y
+
pos
.
y
;
RotatePoint
(
&
coord
[
ii
],
pos
,
orient
)
;
coord
[
ii
]
=
aCorners
[
ii
]
;
RotatePoint
(
&
coord
[
ii
],
aPadOrient
)
;
coord
[
ii
]
+=
aPadPos
;
}
// Plot edge:
...
...
common/common_plotGERBER_functions.cpp
View file @
e162ffee
...
...
@@ -450,94 +450,53 @@ void GERBER_PLOTTER::flash_pad_rect( wxPoint pos, wxSize size,
break
;
default
:
/* plot pad shape as polygon */
flash_pad_trapez
(
pos
,
size
,
wxSize
(
0
,
0
),
orient
,
trace_mode
);
{
wxPoint
coord
[
4
];
// coord[0] is assumed the lower left
// coord[1] is assumed the upper left
// coord[2] is assumed the upper right
// coord[3] is assumed the lower right
/* Trace the outline. */
coord
[
0
].
x
=
-
size
.
x
;
// lower left
coord
[
0
].
y
=
size
.
y
;
coord
[
1
].
x
=
-
size
.
x
;
// upper left
coord
[
1
].
y
=
-
size
.
y
;
coord
[
2
].
x
=
size
.
x
;
// upper right
coord
[
2
].
y
=
-
size
.
y
;
coord
[
3
].
x
=
size
.
x
;
//lower right
coord
[
3
].
y
=
size
.
y
;
flash_pad_trapez
(
pos
,
coord
,
orient
,
trace_mode
);
}
break
;
}
}
/* Plot trapezoidal pad.
* Pos is pad center
* Dimensions size.x and size.y
* Changes delta.x and delta.y (1 of at least two must be zero)
* Orientation east to 0.1 degrees
* Plot mode (FILLED, SKETCH, WIRED)
*
* The evidence is that a trapezoid, ie that delta.x or delta.y = 0.
*
* The rating of the vertexes are (vis a vis the plotter)
*
* " 0 ------------- 3 "
* " . . "
* " . O . "
* " . . "
* " 1 ---- 2 "
*
*
* Example delta.y > 0, delta.x = 0
* " 1 ---- 2 "
* " . . "
* " . O . "
* " . . "
* " 0 ------------- 3 "
*
*
* Example delta.y = 0, delta.x > 0
* " 0 "
* " . . "
* " . . "
* " . 3 "
* " . . "
* " . O . "
* " . . "
* " . 2 "
* " . . "
* " . . "
* " 1 "
* aPadPos is pad position, aCorners the corners positions of the basic shape
* Orientation aPadOrient in 0.1 degrees
* Plot mode = FILLED or SKETCH
*/
void
GERBER_PLOTTER
::
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
trace_m
ode
)
void
GERBER_PLOTTER
::
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
)
{
wxASSERT
(
output_file
);
int
ii
,
jj
;
int
dx
,
dy
;
wxPoint
polygon
[
4
];
/* polygon corners */
int
coord
[
10
];
int
ddx
,
ddy
;
/* Calculate the optimum size of the spot chosen by 1 / 4 of the
*smallest dimension */
dx
=
size
.
x
-
abs
(
delta
.
y
);
dy
=
size
.
y
-
abs
(
delta
.
x
);
dx
=
size
.
x
/
2
;
dy
=
size
.
y
/
2
;
ddx
=
delta
.
x
/
2
;
ddy
=
delta
.
y
/
2
;
polygon
[
0
].
x
=
-
dx
-
ddy
;
polygon
[
0
].
y
=
+
dy
+
ddx
;
polygon
[
1
].
x
=
-
dx
+
ddy
;
polygon
[
1
].
y
=
-
dy
-
ddx
;
polygon
[
2
].
x
=
+
dx
-
ddy
;
polygon
[
2
].
y
=
-
dy
+
ddx
;
polygon
[
3
].
x
=
+
dx
+
ddy
;
polygon
[
3
].
y
=
+
dy
-
ddx
;
wxPoint
polygon
[
5
];
// polygon corners list
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
polygon
[
ii
]
=
aCorners
[
ii
];
/* Draw the polygon and fill the interior as required. */
for
(
i
i
=
0
,
jj
=
0
;
ii
<
4
;
ii
++
)
for
(
i
nt
ii
=
0
;
ii
<
4
;
ii
++
)
{
RotatePoint
(
&
polygon
[
ii
].
x
,
&
polygon
[
ii
].
y
,
orient
);
coord
[
jj
]
=
polygon
[
ii
].
x
+=
pos
.
x
;
jj
++
;
coord
[
jj
]
=
polygon
[
ii
].
y
+=
pos
.
y
;
jj
++
;
RotatePoint
(
&
polygon
[
ii
],
aPadOrient
);
polygon
[
ii
]
+=
aPadPos
;
}
coord
[
8
]
=
coord
[
0
];
coord
[
9
]
=
coord
[
1
];
// Close the polygon
polygon
[
4
]
=
polygon
[
0
];
set_current_line_width
(
-
1
);
poly
(
5
,
coord
,
trace_m
ode
==
FILLED
?
FILLED_SHAPE
:
NO_FILL
);
poly
(
5
,
&
polygon
[
0
].
x
,
aTrace_M
ode
==
FILLED
?
FILLED_SHAPE
:
NO_FILL
);
}
common/common_plotHPGL_functions.cpp
View file @
e162ffee
...
...
@@ -440,106 +440,57 @@ void HPGL_PLOTTER::flash_pad_rect( wxPoint pos, wxSize padsize,
/* Plot trapezoidal pad.
* Pos is pad center
* Dimensions size.x and size.y
* Changes delta.x and delta.y (1 of at least two must be zero)
* Orientation east to 0.1 degrees
* Plot mode (FILLED, SKETCH, WIRED)
*
* The evidence is that a trapezoid, ie that delta.x or delta.y = 0.
*
* The rating of the vertexes are (vis a vis the plotter)
*
* " 0 ------------- 3 "
* " . . "
* " . O . "
* " . . "
* " 1 ---- 2 "
*
*
* Example delta.y > 0, delta.x = 0
* " 1 ---- 2 "
* " . . "
* " . O . "
* " . . "
* " 0 ------------- 3 "
*
*
* Example delta.y = 0, delta.x > 0
* " 0 "
* " . . "
* " . . "
* " . 3 "
* " . . "
* " . O . "
* " . . "
* " . 2 "
* " . . "
* " . . "
* " 1 "
* aPadPos is pad position, aCorners the corners position of the basic shape
* Orientation aPadOrient in 0.1 degrees
* Plot mode FILLED or SKETCH
*/
void
HPGL_PLOTTER
::
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
trace_m
ode
)
void
HPGL_PLOTTER
::
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
)
{
wxASSERT
(
output_file
);
wxPoint
polygone
[
4
];
wxPoint
coord
[
4
];
int
moveX
,
moveY
;
moveX
=
moveY
=
wxRound
(
pen_diameter
);
size
.
x
/=
2
;
size
.
y
/=
2
;
delta
.
x
/=
2
;
delta
.
y
/=
2
;
polygone
[
0
].
x
=
-
size
.
x
-
delta
.
y
;
polygone
[
0
].
y
=
+
size
.
y
+
delta
.
x
;
polygone
[
1
].
x
=
-
size
.
x
+
delta
.
y
;
polygone
[
1
].
y
=
-
size
.
y
-
delta
.
x
;
polygone
[
2
].
x
=
+
size
.
x
-
delta
.
y
;
polygone
[
2
].
y
=
-
size
.
y
+
delta
.
x
;
polygone
[
3
].
x
=
+
size
.
x
+
delta
.
y
;
polygone
[
3
].
y
=
+
size
.
y
-
delta
.
x
;
wxPoint
polygone
[
4
];
// coordinates of corners relatives to the pad
wxPoint
coord
[
4
];
// absolute coordinates of corners (coordinates in plotter space)
int
move
;
/* Trace the outline. */
polygone
[
0
].
x
+=
moveX
;
polygone
[
0
].
y
-=
moveY
;
polygone
[
1
].
x
+=
moveX
;
polygone
[
1
].
y
+=
moveY
;
polygone
[
2
].
x
-=
moveX
;
polygone
[
2
].
y
+=
moveY
;
polygone
[
3
].
x
-=
moveX
;
polygone
[
3
].
y
-=
moveY
;
move
=
wxRound
(
pen_diameter
);
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
polygone
[
ii
]
=
aCorners
[
ii
];
// polygone[0] is assumed the lower left
// polygone[1] is assumed the upper left
// polygone[2] is assumed the upper right
// polygone[3] is assumed the lower right
// Plot the outline:
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
{
coord
[
ii
]
.
x
=
polygone
[
ii
].
x
+
pos
.
x
;
coord
[
ii
].
y
=
polygone
[
ii
].
y
+
pos
.
y
;
RotatePoint
(
&
coord
[
ii
],
pos
,
orient
)
;
coord
[
ii
]
=
polygone
[
ii
]
;
RotatePoint
(
&
coord
[
ii
],
aPadOrient
)
;
coord
[
ii
]
+=
aPadPos
;
}
// Plot edge:
move_to
(
coord
[
0
]
);
line_to
(
coord
[
1
]
);
line_to
(
coord
[
2
]
);
line_to
(
coord
[
3
]
);
finish_to
(
coord
[
0
]
);
if
(
trace_mode
==
FILLED
)
// Fill shape:
if
(
aTrace_Mode
==
FILLED
)
{
// TODO: replace this par the HPGL plot polygon.
int
jj
;
/* Fill the shape */
move
X
=
moveY
=
wxRound
(
pen_diameter
-
pen_overlap
);
move
=
wxRound
(
pen_diameter
-
pen_overlap
);
/* Calculate fill height. */
if
(
delta
.
y
)
/* Horizontal */
if
(
polygone
[
0
].
y
==
polygone
[
3
]
.
y
)
/* Horizontal */
{
jj
=
size
.
y
-
(
int
)
(
pen_diameter
+
(
2
*
pen_overlap
)
);
jj
=
polygone
[
3
]
.
y
-
(
int
)
(
pen_diameter
+
(
2
*
pen_overlap
)
);
}
else
else
// vertical
{
jj
=
size
.
x
-
(
int
)
(
pen_diameter
+
(
2
*
pen_overlap
)
);
jj
=
polygone
[
3
]
.
x
-
(
int
)
(
pen_diameter
+
(
2
*
pen_overlap
)
);
}
/* Calculation of dd = number of segments was traced to fill. */
...
...
@@ -548,14 +499,14 @@ void HPGL_PLOTTER::flash_pad_trapez( wxPoint pos, wxSize size, wxSize delta,
/* Trace the outline. */
for
(
;
jj
>
0
;
jj
--
)
{
polygone
[
0
].
x
+=
move
X
;
polygone
[
0
].
y
-=
move
Y
;
polygone
[
1
].
x
+=
move
X
;
polygone
[
1
].
y
+=
move
Y
;
polygone
[
2
].
x
-=
move
X
;
polygone
[
2
].
y
+=
move
Y
;
polygone
[
3
].
x
-=
move
X
;
polygone
[
3
].
y
-=
move
Y
;
polygone
[
0
].
x
+=
move
;
polygone
[
0
].
y
-=
move
;
polygone
[
1
].
x
+=
move
;
polygone
[
1
].
y
+=
move
;
polygone
[
2
].
x
-=
move
;
polygone
[
2
].
y
+=
move
;
polygone
[
3
].
x
-=
move
;
polygone
[
3
].
y
-=
move
;
/* Test for crossed vertexes. */
if
(
polygone
[
0
].
x
>
polygone
[
3
].
x
)
/* X axis intersection on
...
...
@@ -581,9 +532,9 @@ void HPGL_PLOTTER::flash_pad_trapez( wxPoint pos, wxSize size, wxSize delta,
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
{
coord
[
ii
]
.
x
=
polygone
[
ii
].
x
+
pos
.
x
;
coord
[
ii
].
y
=
polygone
[
ii
].
y
+
pos
.
y
;
RotatePoint
(
&
coord
[
ii
],
pos
,
orient
)
;
coord
[
ii
]
=
polygone
[
ii
]
;
RotatePoint
(
&
coord
[
ii
],
aPadOrient
)
;
coord
[
ii
]
+=
aPadPos
;
}
move_to
(
coord
[
0
]
);
...
...
common/common_plotPS_functions.cpp
View file @
e162ffee
...
...
@@ -479,75 +479,50 @@ void PS_PLOTTER::flash_pad_rect( wxPoint pos, wxSize size,
/* Plot trapezoidal pad.
* Pos is pad center
* Dimensions size.x and size.y
* Changes delta.x and delta.y (1 of at least two must be zero)
* Orientation east to 0.1 degrees
* Plot mode (FILLED, SKETCH, WIRED)
*
* The evidence is that a trapezoid, ie that delta.x or delta.y = 0.
*
* The rating of the vertexes are (vis a vis the plotter)
*
* " 0 ------------- 3 "
* " . . "
* " . O . "
* " . . "
* " 1 ---- 2 "
*
*
* Example delta.y > 0, delta.x = 0
* " 1 ---- 2 "
* " . . "
* " . O . "
* " . . "
* " 0 ------------- 3 "
*
*
* Example delta.y = 0, delta.x > 0
* " 0 "
* " . . "
* " . . "
* " . 3 "
* " . . "
* " . O . "
* " . . "
* " . 2 "
* " . . "
* " . . "
* " 1 "
* aPadPos is pad position, aCorners the corners position of the basic shape
* Orientation aPadOrient in 0.1 degrees
* Plot mode FILLED or SKETCH
*/
void
PS_PLOTTER
::
flash_pad_trapez
(
wxPoint
centre
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
modetrac
e
)
void
PS_PLOTTER
::
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
aPadOrient
,
GRTraceMode
aTrace_Mod
e
)
{
wxASSERT
(
output_file
);
set_current_line_width
(
-
1
);
int
w
=
current_pen_width
;
int
dx
,
dy
;
int
ddx
,
ddy
;
wxPoint
coord
[
5
];
dx
=
(
size
.
x
-
w
)
/
2
;
dy
=
(
size
.
y
-
w
)
/
2
;
ddx
=
delta
.
x
/
2
;
ddy
=
delta
.
y
/
2
;
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
coord
[
ii
]
=
aCorners
[
ii
];
i
nt
coord
[
10
]
=
i
f
(
aTrace_Mode
==
FILLED
)
{
-
dx
-
ddy
,
+
dy
+
ddx
,
-
dx
+
ddy
,
-
dy
-
ddx
,
+
dx
-
ddy
,
-
dy
+
ddx
,
+
dx
+
ddy
,
+
dy
-
ddx
,
0
,
0
};
set_current_line_width
(
0
);
}
else
{
set_current_line_width
(
-
1
);
int
w
=
current_pen_width
;
// offset polygon by w
// coord[0] is assumed the lower left
// coord[1] is assumed the upper left
// coord[2] is assumed the upper right
// coord[3] is assumed the lower right
/* Trace the outline. */
coord
[
0
].
x
+=
w
;
coord
[
0
].
y
-=
w
;
coord
[
1
].
x
+=
w
;
coord
[
1
].
y
+=
w
;
coord
[
2
].
x
-=
w
;
coord
[
2
].
y
+=
w
;
coord
[
3
].
x
-=
w
;
coord
[
3
].
y
-=
w
;
}
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
{
RotatePoint
(
&
coord
[
ii
*
2
],
&
coord
[
ii
*
2
+
1
],
orient
);
coord
[
ii
*
2
]
+=
centre
.
x
;
coord
[
ii
*
2
+
1
]
+=
centre
.
y
;
RotatePoint
(
&
coord
[
ii
],
aPadOrient
);
coord
[
ii
]
+=
aPadPos
;
}
coord
[
8
]
=
coord
[
0
];
coord
[
9
]
=
coord
[
1
];
poly
(
5
,
coord
,
(
modetrace
==
FILLED
)
?
FILLED_SHAPE
:
NO_FILL
);
coord
[
4
]
=
coord
[
0
];
poly
(
5
,
&
coord
[
0
].
x
,
(
aTrace_Mode
==
FILLED
)
?
FILLED_SHAPE
:
NO_FILL
);
}
common/drawpanel.cpp
View file @
e162ffee
...
...
@@ -832,12 +832,20 @@ void WinEDA_DrawPanel::DrawGrid( wxDC* DC )
break
;
xpos
=
org
.
x
+
xg
;
xpos
=
GRMapX
(
xpos
);
if
(
xpos
<
m_ClipBox
.
GetOrigin
().
x
)
// column not in active screen area.
continue
;
if
(
xpos
>
m_ClipBox
.
GetEnd
().
x
)
// end of active area reached.
break
;
for
(
jj
=
0
;
;
jj
++
)
{
yg
=
wxRound
(
jj
*
screen_grid_size
.
y
);
if
(
yg
>
size
.
y
)
break
;
ypos
=
org
.
y
+
yg
;
if
(
ypos
<
m_ClipBox
.
GetOrigin
().
y
)
// column not in active screen area.
continue
;
if
(
ypos
>
m_ClipBox
.
GetEnd
().
y
)
// end of active area reached.
break
;
DC
->
DrawPoint
(
xpos
,
GRMapY
(
ypos
)
);
}
}
...
...
@@ -858,7 +866,7 @@ void WinEDA_DrawPanel::DrawGrid( wxDC* DC )
wxMemoryDC
tmpDC
;
wxBitmap
tmpBM
(
1
,
screenSize
.
y
);
tmpDC
.
SelectObject
(
tmpBM
);
GRSetColorPen
(
&
tmpDC
,
g_DrawBgColor
);
GRSetColorPen
(
&
tmpDC
,
WHITE
/*g_DrawBgColor*/
);
tmpDC
.
DrawLine
(
0
,
0
,
0
,
screenSize
.
y
-
1
);
// init background
GRSetColorPen
(
&
tmpDC
,
m_Parent
->
GetGridColor
()
);
for
(
jj
=
0
;
;
jj
++
)
// draw grid points
...
...
@@ -878,6 +886,7 @@ void WinEDA_DrawPanel::DrawGrid( wxDC* DC )
break
;
xpos
=
GRMapX
(
org
.
x
+
xg
);
if
(
xpos
<
m_ClipBox
.
GetOrigin
().
x
)
// column not in active screen area.
continue
;
if
(
xpos
>
m_ClipBox
.
GetEnd
().
x
)
// end of active area reached.
break
;
DC
->
Blit
(
xpos
,
ypos
,
1
,
screenSize
.
y
,
&
tmpDC
,
0
,
0
);
...
...
include/plot_common.h
View file @
e162ffee
...
...
@@ -115,8 +115,15 @@ public:
GRTraceMode
trace_mode
)
=
0
;
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
)
=
0
;
virtual
void
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
trace_mode
)
=
0
;
/** virtual function flash_pad_trapez
* flash a trapezoidal pad
* @param aPadPos = the position of the shape
* @param aCorners = the list of 4 corners positions, relative to the shape position, pad orientation 0
* @param aPadOrient = the rotation of the shape
* @param aTrace_Mode = FILLED or SKETCH
*/
virtual
void
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
],
int
aPadOrient
,
GRTraceMode
aTrace_Mode
)
=
0
;
/* Convenience functions */
void
move_to
(
wxPoint
pos
)
...
...
@@ -257,8 +264,8 @@ public:
GRTraceMode
trace_mode
);
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
);
virtual
void
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
trace_m
ode
);
virtual
void
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
);
protected
:
void
pen_control
(
int
plume
);
...
...
@@ -306,8 +313,8 @@ public:
GRTraceMode
trace_mode
);
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
);
virtual
void
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
trace_m
ode
);
virtual
void
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
);
protected
:
double
plot_scale_adjX
,
plot_scale_adjY
;
...
...
@@ -364,8 +371,8 @@ public:
GRTraceMode
trace_mode
);
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
);
virtual
void
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
trace_m
ode
);
virtual
void
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
);
protected
:
void
select_aperture
(
const
wxSize
&
size
,
...
...
@@ -424,8 +431,8 @@ public:
GRTraceMode
trace_mode
);
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
);
virtual
void
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
trace_m
ode
);
virtual
void
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
);
protected
:
int
current_color
;
...
...
pcbnew/dialog_pad_properties_base.fbp
View file @
e162ffee
This source diff could not be displayed because it is too large. You can
view the blob
instead.
pcbnew/plot_rtn.cpp
View file @
e162ffee
...
...
@@ -26,55 +26,37 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter,
int
masque_layer
,
GRTraceMode
trace_mode
)
{
wxPoint
pos
,
shape_pos
;
wxSize
size
;
bool
trace_val
,
trace_ref
;
D_PAD
*
pt_pad
;
TEXTE_MODULE
*
pt_texte
;
EDA_BaseStruct
*
PtStruct
;
/* Plot edge layer and graphic items */
for
(
PtStruct
=
m_Pcb
->
m_Drawings
;
PtStruct
!=
NULL
;
PtStruct
=
PtStruct
->
Next
()
)
for
(
PtStruct
=
m_Pcb
->
m_Drawings
;
PtStruct
!=
NULL
;
PtStruct
=
PtStruct
->
Next
()
)
{
switch
(
PtStruct
->
Type
()
)
{
case
TYPE_DRAWSEGMENT
:
PlotDrawSegment
(
plotter
,
(
DRAWSEGMENT
*
)
PtStruct
,
masque_layer
,
trace_mode
);
PlotDrawSegment
(
plotter
,
(
DRAWSEGMENT
*
)
PtStruct
,
masque_layer
,
trace_mode
);
break
;
case
TYPE_TEXTE
:
PlotTextePcb
(
plotter
,
(
TEXTE_PCB
*
)
PtStruct
,
masque_layer
,
trace_mode
);
PlotTextePcb
(
plotter
,
(
TEXTE_PCB
*
)
PtStruct
,
masque_layer
,
trace_mode
);
break
;
case
TYPE_DIMENSION
:
PlotDimension
(
plotter
,
(
DIMENSION
*
)
PtStruct
,
masque_layer
,
trace_mode
);
PlotDimension
(
plotter
,
(
DIMENSION
*
)
PtStruct
,
masque_layer
,
trace_mode
);
break
;
case
TYPE_MIRE
:
PlotMirePcb
(
plotter
,
(
MIREPCB
*
)
PtStruct
,
masque_layer
,
trace_mode
);
PlotMirePcb
(
plotter
,
(
MIREPCB
*
)
PtStruct
,
masque_layer
,
trace_mode
);
break
;
case
TYPE_MARKER_PCB
:
break
;
default
:
DisplayError
(
this
,
wxT
(
"Plot_Serigraphie() error: unexpected Type()"
)
);
DisplayError
(
this
,
wxT
(
"Plot_Serigraphie() error: unexpected Type()"
)
);
break
;
}
}
...
...
@@ -85,49 +67,37 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter,
/* Plot pads (creates pads outlines, for pads on silkscreen layers) */
if
(
g_pcb_plot_options
.
PlotPadsOnSilkLayer
)
{
for
(
MODULE
*
Module
=
m_Pcb
->
m_Modules
;
Module
;
Module
=
Module
->
Next
()
)
for
(
MODULE
*
Module
=
m_Pcb
->
m_Modules
;
Module
;
Module
=
Module
->
Next
()
)
{
for
(
pt_pad
=
(
D_PAD
*
)
Module
->
m_Pads
;
pt_pad
!=
NULL
;
pt_pad
=
pt_pad
->
Next
()
)
for
(
D_PAD
*
pad
=
Module
->
m_Pads
;
pad
!=
NULL
;
pad
=
pad
->
Next
()
)
{
/* See if the pad is on this layer */
if
(
(
p
t_p
ad
->
m_Masque_Layer
&
masque_layer
)
==
0
)
if
(
(
pad
->
m_Masque_Layer
&
masque_layer
)
==
0
)
continue
;
shape_pos
=
pt_pad
->
ReturnShapePos
();
pos
=
shape_pos
;
size
=
pt_pad
->
m_Size
;
wxPoint
shape_pos
=
pad
->
ReturnShapePos
();
switch
(
p
t_p
ad
->
m_PadShape
&
0x7F
)
switch
(
pad
->
m_PadShape
&
0x7F
)
{
case
PAD_CIRCLE
:
plotter
->
flash_pad_circle
(
pos
,
s
ize
.
x
,
FILAIRE
);
plotter
->
flash_pad_circle
(
shape_pos
,
pad
->
m_S
ize
.
x
,
FILAIRE
);
break
;
case
PAD_OVAL
:
plotter
->
flash_pad_oval
(
pos
,
size
,
pt_pad
->
m_Orient
,
FILAIRE
);
plotter
->
flash_pad_oval
(
shape_pos
,
pad
->
m_Size
,
pad
->
m_Orient
,
FILAIRE
);
break
;
case
PAD_TRAPEZOID
:
{
wxSize
delta
;
delta
=
pt_pad
->
m_DeltaSize
;
plotter
->
flash_pad_trapez
(
pos
,
size
,
delta
,
pt_pad
->
m_Orient
,
FILAIRE
);
wxPoint
coord
[
4
];
pad
->
BuildPadPolygon
(
coord
,
wxSize
(
0
,
0
),
0
);
plotter
->
flash_pad_trapez
(
shape_pos
,
coord
,
pad
->
m_Orient
,
FILAIRE
);
break
;
}
case
PAD_RECT
:
default
:
plotter
->
flash_pad_rect
(
pos
,
size
,
pt_pad
->
m_Orient
,
FILAIRE
);
plotter
->
flash_pad_rect
(
shape_pos
,
pad
->
m_Size
,
pad
->
m_Orient
,
FILAIRE
);
break
;
}
}
...
...
@@ -892,12 +862,9 @@ void WinEDA_BasePcbFrame::Plot_Standard_Layer( PLOTTER* aPlotter,
case
PAD_TRAPEZOID
:
{
wxSize
delta
=
pad
->
m_DeltaSize
;
aPlotter
->
flash_pad_trapez
(
pos
,
size
,
delta
,
pad
->
m_Orient
,
aPlotMode
);
wxPoint
coord
[
4
];
pad
->
BuildPadPolygon
(
coord
,
margin
,
0
);
aPlotter
->
flash_pad_trapez
(
pos
,
coord
,
pad
->
m_Orient
,
aPlotMode
);
}
break
;
...
...
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