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,
...
@@ -319,51 +319,21 @@ void DXF_PLOTTER::flash_pad_rect( wxPoint pos, wxSize padsize,
/*
/*
* Plot trapezoidal pad.
* Plot trapezoidal pad.
* pos its center, pos.y
* aPadPos is pad position, aCorners the corners position of the basic shape
* Dimensions dim X and dimy
* Orientation aPadOrient in 0.1 degrees
* DeltaX and variations deltaY
* Plot mode = FILLED, SKETCH (unused)
* 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
*/
*/
void
DXF_PLOTTER
::
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
],
void
DXF_PLOTTER
::
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
aPadOrient
,
GRTraceMode
aTrace_Mode
)
int
orient
,
GRTraceMode
trace_mode
)
{
{
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
wxPoint
polygone
[
4
];
/* coord of vertex or center of the pad */
wxPoint
coord
[
4
];
/* coord actual corners of a trapezoidal trace */
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
++
)
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
{
{
coord
[
ii
]
.
x
=
polygone
[
ii
].
x
+
pos
.
x
;
coord
[
ii
]
=
aCorners
[
ii
]
;
coord
[
ii
].
y
=
polygone
[
ii
].
y
+
pos
.
y
;
RotatePoint
(
&
coord
[
ii
],
aPadOrient
)
;
RotatePoint
(
&
coord
[
ii
],
pos
,
orient
)
;
coord
[
ii
]
+=
aPadPos
;
}
}
// Plot edge:
// Plot edge:
...
...
common/common_plotGERBER_functions.cpp
View file @
e162ffee
...
@@ -450,94 +450,53 @@ void GERBER_PLOTTER::flash_pad_rect( wxPoint pos, wxSize size,
...
@@ -450,94 +450,53 @@ void GERBER_PLOTTER::flash_pad_rect( wxPoint pos, wxSize size,
break
;
break
;
default
:
/* plot pad shape as polygon */
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
;
break
;
}
}
}
}
/* Plot trapezoidal pad.
/* Plot trapezoidal pad.
* Pos is pad center
* aPadPos is pad position, aCorners the corners positions of the basic shape
* Dimensions size.x and size.y
* Orientation aPadOrient in 0.1 degrees
* Changes delta.x and delta.y (1 of at least two must be zero)
* Plot mode = FILLED or SKETCH
* 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 "
*/
*/
void
GERBER_PLOTTER
::
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
void
GERBER_PLOTTER
::
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
orient
,
GRTraceMode
trace_m
ode
)
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
)
{
{
wxASSERT
(
output_file
);
wxPoint
polygon
[
5
];
// polygon corners list
int
ii
,
jj
;
int
dx
,
dy
;
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
wxPoint
polygon
[
4
];
/* polygon corners */
polygon
[
ii
]
=
aCorners
[
ii
];
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
;
/* Draw the polygon and fill the interior as required. */
/* 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
);
RotatePoint
(
&
polygon
[
ii
],
aPadOrient
);
coord
[
jj
]
=
polygon
[
ii
].
x
+=
pos
.
x
;
polygon
[
ii
]
+=
aPadPos
;
jj
++
;
coord
[
jj
]
=
polygon
[
ii
].
y
+=
pos
.
y
;
jj
++
;
}
}
// Close the polygon
coord
[
8
]
=
coord
[
0
];
polygon
[
4
]
=
polygon
[
0
];
coord
[
9
]
=
coord
[
1
];
set_current_line_width
(
-
1
);
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,
...
@@ -440,106 +440,57 @@ void HPGL_PLOTTER::flash_pad_rect( wxPoint pos, wxSize padsize,
/* Plot trapezoidal pad.
/* Plot trapezoidal pad.
* Pos is pad center
* aPadPos is pad position, aCorners the corners position of the basic shape
* Dimensions size.x and size.y
* Orientation aPadOrient in 0.1 degrees
* Changes delta.x and delta.y (1 of at least two must be zero)
* Plot mode FILLED or SKETCH
* 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 "
*/
*/
void
HPGL_PLOTTER
::
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
void
HPGL_PLOTTER
::
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
orient
,
GRTraceMode
trace_m
ode
)
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
)
{
{
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
wxPoint
polygone
[
4
];
wxPoint
polygone
[
4
];
// coordinates of corners relatives to the pad
wxPoint
coord
[
4
];
wxPoint
coord
[
4
];
// absolute coordinates of corners (coordinates in plotter space)
int
moveX
,
moveY
;
int
move
;
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
;
/* Trace the outline. */
move
=
wxRound
(
pen_diameter
);
polygone
[
0
].
x
+=
moveX
;
polygone
[
0
].
y
-=
moveY
;
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
polygone
[
1
].
x
+=
moveX
;
polygone
[
ii
]
=
aCorners
[
ii
];
polygone
[
1
].
y
+=
moveY
;
polygone
[
2
].
x
-=
moveX
;
polygone
[
2
].
y
+=
moveY
;
polygone
[
3
].
x
-=
moveX
;
polygone
[
3
].
y
-=
moveY
;
// 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
++
)
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
{
{
coord
[
ii
]
.
x
=
polygone
[
ii
].
x
+
pos
.
x
;
coord
[
ii
]
=
polygone
[
ii
]
;
coord
[
ii
].
y
=
polygone
[
ii
].
y
+
pos
.
y
;
RotatePoint
(
&
coord
[
ii
],
aPadOrient
)
;
RotatePoint
(
&
coord
[
ii
],
pos
,
orient
)
;
coord
[
ii
]
+=
aPadPos
;
}
}
// Plot edge:
move_to
(
coord
[
0
]
);
move_to
(
coord
[
0
]
);
line_to
(
coord
[
1
]
);
line_to
(
coord
[
1
]
);
line_to
(
coord
[
2
]
);
line_to
(
coord
[
2
]
);
line_to
(
coord
[
3
]
);
line_to
(
coord
[
3
]
);
finish_to
(
coord
[
0
]
);
finish_to
(
coord
[
0
]
);
if
(
trace_mode
==
FILLED
)
// Fill shape:
if
(
aTrace_Mode
==
FILLED
)
{
{
// TODO: replace this par the HPGL plot polygon.
int
jj
;
int
jj
;
/* Fill the shape */
/* Fill the shape */
move
X
=
moveY
=
wxRound
(
pen_diameter
-
pen_overlap
);
move
=
wxRound
(
pen_diameter
-
pen_overlap
);
/* Calculate fill height. */
/* 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. */
/* 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,
...
@@ -548,14 +499,14 @@ void HPGL_PLOTTER::flash_pad_trapez( wxPoint pos, wxSize size, wxSize delta,
/* Trace the outline. */
/* Trace the outline. */
for
(
;
jj
>
0
;
jj
--
)
for
(
;
jj
>
0
;
jj
--
)
{
{
polygone
[
0
].
x
+=
move
X
;
polygone
[
0
].
x
+=
move
;
polygone
[
0
].
y
-=
move
Y
;
polygone
[
0
].
y
-=
move
;
polygone
[
1
].
x
+=
move
X
;
polygone
[
1
].
x
+=
move
;
polygone
[
1
].
y
+=
move
Y
;
polygone
[
1
].
y
+=
move
;
polygone
[
2
].
x
-=
move
X
;
polygone
[
2
].
x
-=
move
;
polygone
[
2
].
y
+=
move
Y
;
polygone
[
2
].
y
+=
move
;
polygone
[
3
].
x
-=
move
X
;
polygone
[
3
].
x
-=
move
;
polygone
[
3
].
y
-=
move
Y
;
polygone
[
3
].
y
-=
move
;
/* Test for crossed vertexes. */
/* Test for crossed vertexes. */
if
(
polygone
[
0
].
x
>
polygone
[
3
].
x
)
/* X axis intersection on
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,
...
@@ -581,9 +532,9 @@ void HPGL_PLOTTER::flash_pad_trapez( wxPoint pos, wxSize size, wxSize delta,
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
{
{
coord
[
ii
]
.
x
=
polygone
[
ii
].
x
+
pos
.
x
;
coord
[
ii
]
=
polygone
[
ii
]
;
coord
[
ii
].
y
=
polygone
[
ii
].
y
+
pos
.
y
;
RotatePoint
(
&
coord
[
ii
],
aPadOrient
)
;
RotatePoint
(
&
coord
[
ii
],
pos
,
orient
)
;
coord
[
ii
]
+=
aPadPos
;
}
}
move_to
(
coord
[
0
]
);
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,
...
@@ -479,75 +479,50 @@ void PS_PLOTTER::flash_pad_rect( wxPoint pos, wxSize size,
/* Plot trapezoidal pad.
/* Plot trapezoidal pad.
* Pos is pad center
* aPadPos is pad position, aCorners the corners position of the basic shape
* Dimensions size.x and size.y
* Orientation aPadOrient in 0.1 degrees
* Changes delta.x and delta.y (1 of at least two must be zero)
* Plot mode FILLED or SKETCH
* 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 "
*/
*/
void
PS_PLOTTER
::
flash_pad_trapez
(
wxPoint
centre
,
wxSize
size
,
wxSize
delta
,
void
PS_PLOTTER
::
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
orient
,
GRTraceMode
modetrac
e
)
int
aPadOrient
,
GRTraceMode
aTrace_Mod
e
)
{
{
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
set_current_line_width
(
-
1
);
wxPoint
coord
[
5
];
int
w
=
current_pen_width
;
int
dx
,
dy
;
int
ddx
,
ddy
;
dx
=
(
size
.
x
-
w
)
/
2
;
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
dy
=
(
size
.
y
-
w
)
/
2
;
coord
[
ii
]
=
aCorners
[
ii
];
ddx
=
delta
.
x
/
2
;
ddy
=
delta
.
y
/
2
;
i
nt
coord
[
10
]
=
i
f
(
aTrace_Mode
==
FILLED
)
{
{
-
dx
-
ddy
,
+
dy
+
ddx
,
set_current_line_width
(
0
);
-
dx
+
ddy
,
-
dy
-
ddx
,
}
+
dx
-
ddy
,
-
dy
+
ddx
,
else
+
dx
+
ddy
,
+
dy
-
ddx
,
{
0
,
0
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
++
)
for
(
int
ii
=
0
;
ii
<
4
;
ii
++
)
{
{
RotatePoint
(
&
coord
[
ii
*
2
],
&
coord
[
ii
*
2
+
1
],
orient
);
RotatePoint
(
&
coord
[
ii
],
aPadOrient
);
coord
[
ii
*
2
]
+=
centre
.
x
;
coord
[
ii
]
+=
aPadPos
;
coord
[
ii
*
2
+
1
]
+=
centre
.
y
;
}
}
coord
[
8
]
=
coord
[
0
];
coord
[
4
]
=
coord
[
0
];
coord
[
9
]
=
coord
[
1
];
poly
(
5
,
&
coord
[
0
].
x
,
(
aTrace_Mode
==
FILLED
)
?
FILLED_SHAPE
:
NO_FILL
);
poly
(
5
,
coord
,
(
modetrace
==
FILLED
)
?
FILLED_SHAPE
:
NO_FILL
);
}
}
common/drawpanel.cpp
View file @
e162ffee
...
@@ -832,12 +832,20 @@ void WinEDA_DrawPanel::DrawGrid( wxDC* DC )
...
@@ -832,12 +832,20 @@ void WinEDA_DrawPanel::DrawGrid( wxDC* DC )
break
;
break
;
xpos
=
org
.
x
+
xg
;
xpos
=
org
.
x
+
xg
;
xpos
=
GRMapX
(
xpos
);
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
++
)
for
(
jj
=
0
;
;
jj
++
)
{
{
yg
=
wxRound
(
jj
*
screen_grid_size
.
y
);
yg
=
wxRound
(
jj
*
screen_grid_size
.
y
);
if
(
yg
>
size
.
y
)
if
(
yg
>
size
.
y
)
break
;
break
;
ypos
=
org
.
y
+
yg
;
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
)
);
DC
->
DrawPoint
(
xpos
,
GRMapY
(
ypos
)
);
}
}
}
}
...
@@ -858,7 +866,7 @@ void WinEDA_DrawPanel::DrawGrid( wxDC* DC )
...
@@ -858,7 +866,7 @@ void WinEDA_DrawPanel::DrawGrid( wxDC* DC )
wxMemoryDC
tmpDC
;
wxMemoryDC
tmpDC
;
wxBitmap
tmpBM
(
1
,
screenSize
.
y
);
wxBitmap
tmpBM
(
1
,
screenSize
.
y
);
tmpDC
.
SelectObject
(
tmpBM
);
tmpDC
.
SelectObject
(
tmpBM
);
GRSetColorPen
(
&
tmpDC
,
g_DrawBgColor
);
GRSetColorPen
(
&
tmpDC
,
WHITE
/*g_DrawBgColor*/
);
tmpDC
.
DrawLine
(
0
,
0
,
0
,
screenSize
.
y
-
1
);
// init background
tmpDC
.
DrawLine
(
0
,
0
,
0
,
screenSize
.
y
-
1
);
// init background
GRSetColorPen
(
&
tmpDC
,
m_Parent
->
GetGridColor
()
);
GRSetColorPen
(
&
tmpDC
,
m_Parent
->
GetGridColor
()
);
for
(
jj
=
0
;
;
jj
++
)
// draw grid points
for
(
jj
=
0
;
;
jj
++
)
// draw grid points
...
@@ -878,6 +886,7 @@ void WinEDA_DrawPanel::DrawGrid( wxDC* DC )
...
@@ -878,6 +886,7 @@ void WinEDA_DrawPanel::DrawGrid( wxDC* DC )
break
;
break
;
xpos
=
GRMapX
(
org
.
x
+
xg
);
xpos
=
GRMapX
(
org
.
x
+
xg
);
if
(
xpos
<
m_ClipBox
.
GetOrigin
().
x
)
// column not in active screen area.
if
(
xpos
<
m_ClipBox
.
GetOrigin
().
x
)
// column not in active screen area.
continue
;
if
(
xpos
>
m_ClipBox
.
GetEnd
().
x
)
// end of active area reached.
if
(
xpos
>
m_ClipBox
.
GetEnd
().
x
)
// end of active area reached.
break
;
break
;
DC
->
Blit
(
xpos
,
ypos
,
1
,
screenSize
.
y
,
&
tmpDC
,
0
,
0
);
DC
->
Blit
(
xpos
,
ypos
,
1
,
screenSize
.
y
,
&
tmpDC
,
0
,
0
);
...
...
include/plot_common.h
View file @
e162ffee
...
@@ -115,8 +115,15 @@ public:
...
@@ -115,8 +115,15 @@ public:
GRTraceMode
trace_mode
)
=
0
;
GRTraceMode
trace_mode
)
=
0
;
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
)
=
0
;
int
orient
,
GRTraceMode
trace_mode
)
=
0
;
virtual
void
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
/** virtual function flash_pad_trapez
int
orient
,
GRTraceMode
trace_mode
)
=
0
;
* 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 */
/* Convenience functions */
void
move_to
(
wxPoint
pos
)
void
move_to
(
wxPoint
pos
)
...
@@ -257,8 +264,8 @@ public:
...
@@ -257,8 +264,8 @@ public:
GRTraceMode
trace_mode
);
GRTraceMode
trace_mode
);
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
);
int
orient
,
GRTraceMode
trace_mode
);
virtual
void
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
virtual
void
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
orient
,
GRTraceMode
trace_m
ode
);
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
);
protected
:
protected
:
void
pen_control
(
int
plume
);
void
pen_control
(
int
plume
);
...
@@ -306,8 +313,8 @@ public:
...
@@ -306,8 +313,8 @@ public:
GRTraceMode
trace_mode
);
GRTraceMode
trace_mode
);
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
);
int
orient
,
GRTraceMode
trace_mode
);
virtual
void
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
virtual
void
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
orient
,
GRTraceMode
trace_m
ode
);
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
);
protected
:
protected
:
double
plot_scale_adjX
,
plot_scale_adjY
;
double
plot_scale_adjX
,
plot_scale_adjY
;
...
@@ -364,8 +371,8 @@ public:
...
@@ -364,8 +371,8 @@ public:
GRTraceMode
trace_mode
);
GRTraceMode
trace_mode
);
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
);
int
orient
,
GRTraceMode
trace_mode
);
virtual
void
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
virtual
void
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
orient
,
GRTraceMode
trace_m
ode
);
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
);
protected
:
protected
:
void
select_aperture
(
const
wxSize
&
size
,
void
select_aperture
(
const
wxSize
&
size
,
...
@@ -424,8 +431,8 @@ public:
...
@@ -424,8 +431,8 @@ public:
GRTraceMode
trace_mode
);
GRTraceMode
trace_mode
);
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
virtual
void
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
);
int
orient
,
GRTraceMode
trace_mode
);
virtual
void
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
virtual
void
flash_pad_trapez
(
wxPoint
aPadPos
,
wxPoint
aCorners
[
4
]
,
int
orient
,
GRTraceMode
trace_m
ode
);
int
aPadOrient
,
GRTraceMode
aTrace_M
ode
);
protected
:
protected
:
int
current_color
;
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,
...
@@ -26,55 +26,37 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter,
int
masque_layer
,
int
masque_layer
,
GRTraceMode
trace_mode
)
GRTraceMode
trace_mode
)
{
{
wxPoint
pos
,
shape_pos
;
wxSize
size
;
bool
trace_val
,
trace_ref
;
bool
trace_val
,
trace_ref
;
D_PAD
*
pt_pad
;
TEXTE_MODULE
*
pt_texte
;
TEXTE_MODULE
*
pt_texte
;
EDA_BaseStruct
*
PtStruct
;
EDA_BaseStruct
*
PtStruct
;
/* Plot edge layer and graphic items */
/* Plot edge layer and graphic items */
for
(
PtStruct
=
m_Pcb
->
m_Drawings
;
for
(
PtStruct
=
m_Pcb
->
m_Drawings
;
PtStruct
!=
NULL
;
PtStruct
=
PtStruct
->
Next
()
)
PtStruct
!=
NULL
;
PtStruct
=
PtStruct
->
Next
()
)
{
{
switch
(
PtStruct
->
Type
()
)
switch
(
PtStruct
->
Type
()
)
{
{
case
TYPE_DRAWSEGMENT
:
case
TYPE_DRAWSEGMENT
:
PlotDrawSegment
(
plotter
,
PlotDrawSegment
(
plotter
,
(
DRAWSEGMENT
*
)
PtStruct
,
masque_layer
,
trace_mode
);
(
DRAWSEGMENT
*
)
PtStruct
,
masque_layer
,
trace_mode
);
break
;
break
;
case
TYPE_TEXTE
:
case
TYPE_TEXTE
:
PlotTextePcb
(
plotter
,
PlotTextePcb
(
plotter
,
(
TEXTE_PCB
*
)
PtStruct
,
masque_layer
,
trace_mode
);
(
TEXTE_PCB
*
)
PtStruct
,
masque_layer
,
trace_mode
);
break
;
break
;
case
TYPE_DIMENSION
:
case
TYPE_DIMENSION
:
PlotDimension
(
plotter
,
PlotDimension
(
plotter
,
(
DIMENSION
*
)
PtStruct
,
masque_layer
,
trace_mode
);
(
DIMENSION
*
)
PtStruct
,
masque_layer
,
trace_mode
);
break
;
break
;
case
TYPE_MIRE
:
case
TYPE_MIRE
:
PlotMirePcb
(
plotter
,
PlotMirePcb
(
plotter
,
(
MIREPCB
*
)
PtStruct
,
masque_layer
,
trace_mode
);
(
MIREPCB
*
)
PtStruct
,
masque_layer
,
trace_mode
);
break
;
break
;
case
TYPE_MARKER_PCB
:
case
TYPE_MARKER_PCB
:
break
;
break
;
default
:
default
:
DisplayError
(
this
,
DisplayError
(
this
,
wxT
(
"Plot_Serigraphie() error: unexpected Type()"
)
);
wxT
(
"Plot_Serigraphie() error: unexpected Type()"
)
);
break
;
break
;
}
}
}
}
...
@@ -85,49 +67,37 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter,
...
@@ -85,49 +67,37 @@ void WinEDA_BasePcbFrame::Plot_Serigraphie( PLOTTER* plotter,
/* Plot pads (creates pads outlines, for pads on silkscreen layers) */
/* Plot pads (creates pads outlines, for pads on silkscreen layers) */
if
(
g_pcb_plot_options
.
PlotPadsOnSilkLayer
)
if
(
g_pcb_plot_options
.
PlotPadsOnSilkLayer
)
{
{
for
(
MODULE
*
Module
=
m_Pcb
->
m_Modules
;
for
(
MODULE
*
Module
=
m_Pcb
->
m_Modules
;
Module
;
Module
=
Module
->
Next
()
)
Module
;
Module
=
Module
->
Next
()
)
{
{
for
(
pt_pad
=
(
D_PAD
*
)
Module
->
m_Pads
;
for
(
D_PAD
*
pad
=
Module
->
m_Pads
;
pad
!=
NULL
;
pad
=
pad
->
Next
()
)
pt_pad
!=
NULL
;
pt_pad
=
pt_pad
->
Next
()
)
{
{
/* See if the pad is on this layer */
/* 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
;
continue
;
shape_pos
=
pt_pad
->
ReturnShapePos
();
wxPoint
shape_pos
=
pad
->
ReturnShapePos
();
pos
=
shape_pos
;
size
=
pt_pad
->
m_Size
;
switch
(
p
t_p
ad
->
m_PadShape
&
0x7F
)
switch
(
pad
->
m_PadShape
&
0x7F
)
{
{
case
PAD_CIRCLE
:
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
;
break
;
case
PAD_OVAL
:
case
PAD_OVAL
:
plotter
->
flash_pad_oval
(
pos
,
size
,
plotter
->
flash_pad_oval
(
shape_pos
,
pad
->
m_Size
,
pad
->
m_Orient
,
FILAIRE
);
pt_pad
->
m_Orient
,
FILAIRE
);
break
;
break
;
case
PAD_TRAPEZOID
:
case
PAD_TRAPEZOID
:
{
{
wxSize
delta
;
wxPoint
coord
[
4
];
delta
=
pt_pad
->
m_DeltaSize
;
pad
->
BuildPadPolygon
(
coord
,
wxSize
(
0
,
0
),
0
);
plotter
->
flash_pad_trapez
(
pos
,
size
,
plotter
->
flash_pad_trapez
(
shape_pos
,
coord
,
pad
->
m_Orient
,
FILAIRE
);
delta
,
pt_pad
->
m_Orient
,
FILAIRE
);
break
;
break
;
}
}
case
PAD_RECT
:
case
PAD_RECT
:
default
:
default
:
plotter
->
flash_pad_rect
(
pos
,
plotter
->
flash_pad_rect
(
shape_pos
,
pad
->
m_Size
,
pad
->
m_Orient
,
FILAIRE
);
size
,
pt_pad
->
m_Orient
,
FILAIRE
);
break
;
break
;
}
}
}
}
...
@@ -892,12 +862,9 @@ void WinEDA_BasePcbFrame::Plot_Standard_Layer( PLOTTER* aPlotter,
...
@@ -892,12 +862,9 @@ void WinEDA_BasePcbFrame::Plot_Standard_Layer( PLOTTER* aPlotter,
case
PAD_TRAPEZOID
:
case
PAD_TRAPEZOID
:
{
{
wxSize
delta
=
pad
->
m_DeltaSize
;
wxPoint
coord
[
4
];
aPlotter
->
flash_pad_trapez
(
pos
,
pad
->
BuildPadPolygon
(
coord
,
margin
,
0
);
size
,
aPlotter
->
flash_pad_trapez
(
pos
,
coord
,
pad
->
m_Orient
,
aPlotMode
);
delta
,
pad
->
m_Orient
,
aPlotMode
);
}
}
break
;
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