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
daeb1901
Commit
daeb1901
authored
Jun 28, 2009
by
charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
minor changes
parent
2a801170
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
362 additions
and
324 deletions
+362
-324
about_kicad.cpp
common/about_kicad.cpp
+2
-1
common_plotGERBER_functions.cpp
common/common_plotGERBER_functions.cpp
+245
-210
plot.cpp
eeschema/plot.cpp
+115
-113
No files found.
common/about_kicad.cpp
View file @
daeb1901
...
...
@@ -8,7 +8,7 @@
#include "appl_wxstruct.h"
#define BUILD_VERSION "(2009062
1
-unstable)"
#define BUILD_VERSION "(2009062
8
-unstable)"
#ifdef HAVE_SVN_VERSION
...
...
@@ -133,6 +133,7 @@ void InitKiCadAbout( wxAboutDialogInfo& info )
info
.
AddDeveloper
(
SetMsg
(
wxT
(
"Jerry Jacobs <jerkejacobs@gmail.com>"
)
)
);
info
.
AddDeveloper
(
SetMsg
(
wxT
(
"Jonas Diemer <diemer@gmx.de>"
)
)
);
info
.
AddDeveloper
(
SetMsg
(
wxT
(
"KBool Library <http://boolean.klaasholwerda.nl/bool.html>"
)
)
);
info
.
AddDeveloper
(
SetMsg
(
wxT
(
"Lorenzo <lomarcan@tin.it>"
)
)
);
info
.
AddDeveloper
(
SetMsg
(
wxT
(
"Marco Serantoni <marco.serantoni@gmail.com>"
)
)
);
info
.
AddDeveloper
(
SetMsg
(
wxT
(
"Rok Markovic <rok@kanardia.eu>"
)
)
);
info
.
AddDeveloper
(
SetMsg
(
wxT
(
"Tim Hanson <sideskate@gmail.com>"
)
)
);
...
...
common/common_plotGERBER_functions.cpp
View file @
daeb1901
...
...
@@ -24,20 +24,21 @@ void Gerber_Plotter::set_viewport( wxPoint offset,
* @param aScale = coordinate scale (scale coefficient for coordinates)
*/
{
wxASSERT
(
!
output_file
);
wxASSERT
(
orient
==
0
);
wxASSERT
(
!
output_file
);
wxASSERT
(
orient
==
0
);
plot_orient_options
=
0
;
plot_offset
=
offset
;
wxASSERT
(
aScale
==
1
);
wxASSERT
(
aScale
==
1
);
plot_scale
=
1
;
device_scale
=
1
;
set_default_line_width
(
100
);
/* epaisseur du trait standard en 1/1000 pouce */
set_default_line_width
(
100
);
/* epaisseur du trait standard en 1/1000 pouce */
}
/******************************************************************/
void
Gerber_Plotter
::
start_plot
(
FILE
*
aFile
)
void
Gerber_Plotter
::
start_plot
(
FILE
*
aFile
)
/*****************************************************************/
/** Function start_plot
* Write GERBER header to file
* initialize global variable g_Plot_PlotOutputFile
...
...
@@ -46,7 +47,7 @@ void Gerber_Plotter::start_plot( FILE *aFile )
{
char
Line
[
1024
];
wxASSERT
(
!
output_file
);
wxASSERT
(
!
output_file
);
final_file
=
aFile
;
work_file
=
tmpfile
();
output_file
=
work_file
;
...
...
@@ -60,24 +61,25 @@ void Gerber_Plotter::start_plot( FILE *aFile )
/* Set gerber format to 3.4 */
fputs
(
"G04 Gerber Fmt 3.4, Leading zero omitted, Abs format*
\n
%FSLAX34Y34*%
\n
"
,
output_file
);
output_file
);
fputs
(
"G04 APERTURE LIST*
\n
"
,
output_file
);
/* Select the default aperture */
set_current_line_width
(
-
1
);
set_current_line_width
(
-
1
);
}
/******************************************************************/
void
Gerber_Plotter
::
end_plot
(
)
void
Gerber_Plotter
::
end_plot
()
/*****************************************************************/
{
char
line
[
1024
];
wxString
msg
;
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
/* Outfile is actually a temporary file! */
fputs
(
"M02*
\n
"
,
output_file
);
fflush
(
output_file
);
fflush
(
output_file
);
rewind
(
work_file
);
// work_file == output_file !!!
output_file
=
final_file
;
...
...
@@ -98,6 +100,7 @@ void Gerber_Plotter::end_plot( )
output_file
=
0
;
}
/*************************************************************************************/
void
Gerber_Plotter
::
set_default_line_width
(
int
width
)
/*************************************************************************************/
...
...
@@ -109,6 +112,7 @@ void Gerber_Plotter::set_default_line_width( int width )
current_aperture
=
apertures
.
end
();
}
/***************************************/
void
Gerber_Plotter
::
set_current_line_width
(
int
width
)
/***************************************/
...
...
@@ -123,67 +127,75 @@ void Gerber_Plotter::set_current_line_width( int width )
else
pen_width
=
default_pen_width
;
select_aperture
(
wxSize
(
pen_width
,
pen_width
),
Aperture
::
Plotting
);
select_aperture
(
wxSize
(
pen_width
,
pen_width
),
Aperture
::
Plotting
);
current_pen_width
=
pen_width
;
}
/******************************************************/
vector
<
Aperture
>::
iterator
Gerber_Plotter
::
get_aperture
(
const
wxSize
&
size
,
Aperture
::
Aperture_Type
type
)
vector
<
Aperture
>::
iterator
Gerber_Plotter
::
get_aperture
(
const
wxSize
&
size
,
Aperture
::
Aperture_Type
type
)
/******************************************************/
{
int
last_D_code
=
9
;
// Search an existing aperture
vector
<
Aperture
>::
iterator
tool
=
apertures
.
begin
();
while
(
tool
!=
apertures
.
end
())
{
while
(
tool
!=
apertures
.
end
()
)
{
last_D_code
=
tool
->
D_code
;
if
(
(
tool
->
type
==
type
)
&&
(
tool
->
size
==
size
)
)
if
(
(
tool
->
type
==
type
)
&&
(
tool
->
size
==
size
)
)
return
tool
;
tool
++
;
}
// Allocate a new aperture
Aperture
new_tool
;
new_tool
.
size
=
size
;
new_tool
.
type
=
type
;
new_tool
.
D_code
=
last_D_code
+
1
;
apertures
.
push_back
(
new_tool
);
return
apertures
.
end
()
-
1
;
new_tool
.
D_code
=
last_D_code
+
1
;
apertures
.
push_back
(
new_tool
);
return
apertures
.
end
()
-
1
;
}
/******************************************************/
void
Gerber_Plotter
::
select_aperture
(
const
wxSize
&
size
,
Aperture
::
Aperture_Type
type
)
void
Gerber_Plotter
::
select_aperture
(
const
wxSize
&
size
,
Aperture
::
Aperture_Type
type
)
/******************************************************/
{
wxASSERT
(
output_file
);
if
((
current_aperture
==
apertures
.
end
()
)
wxASSERT
(
output_file
);
if
(
(
current_aperture
==
apertures
.
end
()
)
||
(
current_aperture
->
type
!=
type
)
||
(
current_aperture
->
size
!=
size
))
{
||
(
current_aperture
->
size
!=
size
)
)
{
/* Pick an existing aperture or create a new one */
current_aperture
=
get_aperture
(
size
,
type
);
current_aperture
=
get_aperture
(
size
,
type
);
fprintf
(
output_file
,
"G54D%d*
\n
"
,
current_aperture
->
D_code
);
}
}
/******************************************************/
void
Gerber_Plotter
::
write_aperture_list
(
)
void
Gerber_Plotter
::
write_aperture_list
()
/******************************************************/
/* Genere la liste courante des D_CODES
* Retourne le nombre de D_Codes utilises
* Genere une sequence RS274X
*/
{
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
char
cbuf
[
1024
];
/* Init : */
for
(
vector
<
Aperture
>::
iterator
tool
=
apertures
.
begin
();
tool
!=
apertures
.
end
();
tool
++
)
for
(
vector
<
Aperture
>::
iterator
tool
=
apertures
.
begin
();
tool
!=
apertures
.
end
();
tool
++
)
{
const
float
fscale
=
0.0001
f
*
plot_scale
;
// For 3.4 format
char
*
text
;
text
=
cbuf
+
sprintf
(
cbuf
,
"%%ADD%d"
,
tool
->
D_code
);
text
=
cbuf
+
sprintf
(
cbuf
,
"%%ADD%d"
,
tool
->
D_code
);
switch
(
tool
->
type
)
{
...
...
@@ -210,13 +222,14 @@ void Gerber_Plotter::write_aperture_list( )
}
}
/**********************************************/
void
Gerber_Plotter
::
pen_to
(
wxPoint
aPos
,
char
plume
)
{
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
user_to_device_coordinates
(
aPos
);
switch
(
plume
)
switch
(
plume
)
{
case
'Z'
:
break
;
...
...
@@ -228,49 +241,54 @@ void Gerber_Plotter::pen_to( wxPoint aPos, char plume )
case
'D'
:
fprintf
(
output_file
,
"X%5.5dY%5.5dD01*
\n
"
,
aPos
.
x
,
aPos
.
y
);
}
pen_state
=
plume
;
}
/************************************************************/
/**************************************************************************/
void
Gerber_Plotter
::
rect
(
wxPoint
p1
,
wxPoint
p2
,
FILL_T
fill
,
int
width
)
/************************************************************/
/************************************************************
**************
/
{
wxASSERT
(
output_file
);
int
coord
[
10
]
=
{
wxASSERT
(
output_file
);
int
coord
[
10
]
=
{
p1
.
x
,
p1
.
y
,
p1
.
x
,
p2
.
y
,
p2
.
x
,
p2
.
y
,
p2
.
x
,
p1
.
y
,
p1
.
x
,
p1
.
y
};
poly
(
5
,
coord
,
fill
,
width
);
poly
(
5
,
coord
,
fill
,
width
);
}
/********************************************************************/
void
Gerber_Plotter
::
circle
(
wxPoint
pos
,
int
diametre
,
FILL_T
fill
,
int
width
)
/********************************************************************/
/** Function PlotCircle_GERBER
/*************************************************************************************/
void
Gerber_Plotter
::
circle
(
wxPoint
aCentre
,
int
aDiameter
,
FILL_T
fill
,
int
aWidth
)
/*************************************************************************************/
/** Function circle
* writes a non filled circle to output file
* Plot one circle as segments (6 to 16 depending on its radius
* @param aCentre = centre coordintes
* @param a
Radius = radius
of the circle
* @param a
Diameter = diameter
of the circle
* @param aWidth = line width
*/
*/
{
wxASSERT
(
output_file
);
wxPoint
start
,
end
;
double
aRadius
=
diametre
/
2
;
const
int
delta
=
3600
/
32
;
/* increment (in 0.1 degrees) to draw circles */
start
.
x
=
pos
.
x
+
aR
adius
;
start
.
y
=
pos
.
y
;
set_current_line_width
(
width
);
move_to
(
start
);
for
(
int
ii
=
delta
;
ii
<
3600
;
ii
+=
delta
)
wxASSERT
(
output_file
);
wxPoint
start
,
end
;
double
radius
=
aDiameter
/
2
;
const
int
delta
=
3600
/
32
;
/* increment (in 0.1 degrees) to draw circles */
start
.
x
=
aCentre
.
x
+
r
adius
;
start
.
y
=
aCentre
.
y
;
set_current_line_width
(
aWidth
);
move_to
(
start
);
for
(
int
ii
=
delta
;
ii
<
3600
;
ii
+=
delta
)
{
end
.
x
=
pos
.
x
+
(
int
)
(
aRadius
*
fcosinus
[
ii
]
);
end
.
y
=
pos
.
y
+
(
int
)
(
aRadius
*
fsinus
[
ii
]
);
line_to
(
end
);
end
.
x
=
aCentre
.
x
+
(
int
)
(
radius
*
fcosinus
[
ii
]
);
end
.
y
=
aCentre
.
y
+
(
int
)
(
radius
*
fsinus
[
ii
]
);
line_to
(
end
);
}
finish_to
(
start
);
...
...
@@ -278,32 +296,36 @@ void Gerber_Plotter::circle( wxPoint pos, int diametre, FILL_T fill, int width )
/***************************************************************/
void
Gerber_Plotter
::
poly
(
int
nb_segm
,
int
*
coord
,
FILL_T
fill
,
int
w
idth
)
void
Gerber_Plotter
::
poly
(
int
aCornersCount
,
int
*
aCoord
,
FILL_T
aFill
,
int
aW
idth
)
/***************************************************************/
/** Function PlotFilledPolygon_GERBER
* writes a filled polyline to output file
* @param aCornersCount = numer of corners
* @param aCoord = buffer of corners coordinates
*/
* @param aFill = plot option (NO_FILL, FILLED_SHAPE, FILLED_WITH_BG_BODYCOLOR)
* @param aCoord = buffer of corners coordinates
*/
{
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
wxPoint
pos
,
startpos
;
set_current_line_width
(
width
);
set_current_line_width
(
aWidth
);
if
(
fill
)
if
(
aFill
)
fputs
(
"G36*
\n
"
,
output_file
);
startpos
.
x
=
*
c
oord
++
;
startpos
.
y
=
*
c
oord
++
;
move_to
(
startpos
);
for
(
int
ii
=
1
;
ii
<
nb_segm
;
ii
++
)
startpos
.
x
=
*
aC
oord
++
;
startpos
.
y
=
*
aC
oord
++
;
move_to
(
startpos
);
for
(
int
ii
=
1
;
ii
<
aCornersCount
;
ii
++
)
{
pos
.
x
=
*
c
oord
++
;
pos
.
y
=
*
c
oord
++
;
pos
.
x
=
*
aC
oord
++
;
pos
.
y
=
*
aC
oord
++
;
line_to
(
pos
);
}
if
(
fill
)
if
(
aFill
)
{
finish_to
(
startpos
);
finish_to
(
startpos
);
fputs
(
"G37*
\n
"
,
output_file
);
}
else
...
...
@@ -312,31 +334,36 @@ void Gerber_Plotter::poly( int nb_segm, int* coord, FILL_T fill, int width )
}
}
void
Gerber_Plotter
::
flash_pad_circle
(
wxPoint
pos
,
int
diametre
,
GRTraceMode
trace_mode
)
/
* Plot a circular pad or via at the user position pos
/* Function flash_pad_circle
* Plot a circular pad or via at the user position pos
*/
void
Gerber_Plotter
::
flash_pad_circle
(
wxPoint
pos
,
int
diametre
,
GRTraceMode
trace_mode
)
{
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
wxSize
size
(
diametre
,
diametre
);
switch
(
trace_mode
)
switch
(
trace_mode
)
{
case
FILAIRE
:
case
SKETCH
:
set_current_line_width
(
-
1
);
circle
(
pos
,
diametre
-
current_pen_width
,
NO_FILL
);
set_current_line_width
(
-
1
);
circle
(
pos
,
diametre
-
current_pen_width
,
NO_FILL
);
break
;
case
FILLED
:
user_to_device_coordinates
(
pos
);
select_aperture
(
size
,
Aperture
::
Circle
);
select_aperture
(
size
,
Aperture
::
Circle
);
fprintf
(
output_file
,
"X%5.5dY%5.5dD03*
\n
"
,
pos
.
x
,
pos
.
y
);
break
;
}
}
void
Gerber_Plotter
::
flash_pad_oval
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
)
void
Gerber_Plotter
::
flash_pad_oval
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
)
/* Trace 1 pastille PAD_OVAL en position pos_X,Y:
* dimensions dx, dy,
* orientation orient
...
...
@@ -344,17 +371,17 @@ void Gerber_Plotter::flash_pad_oval(wxPoint pos, wxSize size, int orient,
* Pour une orientation quelconque la forme est tracee comme un segment
*/
{
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
int
x0
,
y0
,
x1
,
y1
,
delta
;
/* Trace de la forme flashee */
if
((
orient
==
0
||
orient
==
900
||
orient
==
1800
||
orient
==
2700
)
&&
trace_mode
==
FILLED
)
if
(
(
orient
==
0
||
orient
==
900
||
orient
==
1800
||
orient
==
2700
)
&&
trace_mode
==
FILLED
)
{
if
(
orient
==
900
||
orient
==
2700
)
/* orient tournee de 90 deg */
EXCHG
(
size
.
x
,
size
.
y
);
user_to_device_coordinates
(
pos
);
select_aperture
(
size
,
Aperture
::
Oval
);
select_aperture
(
size
,
Aperture
::
Oval
);
fprintf
(
output_file
,
"X%5.5dY%5.5dD03*
\n
"
,
pos
.
x
,
pos
.
y
);
}
else
/* Forme tracee comme un segment */
...
...
@@ -367,7 +394,7 @@ void Gerber_Plotter::flash_pad_oval(wxPoint pos, wxSize size, int orient,
else
orient
-=
2700
;
}
if
(
trace_mode
==
FILLED
)
if
(
trace_mode
==
FILLED
)
{
/* la pastille est ramenee a une pastille ovale avec dy > dx */
delta
=
size
.
y
-
size
.
x
;
...
...
@@ -380,20 +407,23 @@ void Gerber_Plotter::flash_pad_oval(wxPoint pos, wxSize size, int orient,
thick_segment
(
wxPoint
(
pos
.
x
+
x0
,
pos
.
y
+
y0
),
wxPoint
(
pos
.
x
+
x1
,
pos
.
y
+
y1
),
size
.
x
,
trace_mode
);
}
else
sketch_oval
(
pos
,
size
,
orient
,
-
1
);
}
else
sketch_oval
(
pos
,
size
,
orient
,
-
1
);
}
}
void
Gerber_Plotter
::
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
)
void
Gerber_Plotter
::
flash_pad_rect
(
wxPoint
pos
,
wxSize
size
,
int
orient
,
GRTraceMode
trace_mode
)
/* Plot 1 rectangular pad
* donne par son centre, ses dimensions, et son orientation
* For a vertical or horizontal shape, the shape is an aperture (Dcode) and it is flashed
* For others orientations the shape is plotted as a polygon
*/
{
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
/* Trace de la forme flashee */
switch
(
orient
)
{
...
...
@@ -405,22 +435,25 @@ void Gerber_Plotter::flash_pad_rect(wxPoint pos, wxSize size,
case
0
:
case
1800
:
switch
(
trace_mode
)
{
switch
(
trace_mode
)
{
case
FILAIRE
:
case
SKETCH
:
set_current_line_width
(
-
1
);
rect
(
wxPoint
(
pos
.
x
-
(
size
.
x
-
current_pen_width
)
/
2
,
pos
.
y
-
(
size
.
y
-
current_pen_width
)
/
2
),
wxPoint
(
pos
.
x
+
(
size
.
x
-
current_pen_width
)
/
2
,
pos
.
y
+
(
size
.
y
-
current_pen_width
)
/
2
),
NO_FILL
);
set_current_line_width
(
-
1
);
rect
(
wxPoint
(
pos
.
x
-
(
size
.
x
-
current_pen_width
)
/
2
,
pos
.
y
-
(
size
.
y
-
current_pen_width
)
/
2
),
wxPoint
(
pos
.
x
+
(
size
.
x
-
current_pen_width
)
/
2
,
pos
.
y
+
(
size
.
y
-
current_pen_width
)
/
2
),
NO_FILL
);
break
;
case
FILLED
:
user_to_device_coordinates
(
pos
);
select_aperture
(
size
,
Aperture
::
Rect
);
select_aperture
(
size
,
Aperture
::
Rect
);
fprintf
(
output_file
,
"X%5.5dY%5.5dD03*
\n
"
,
pos
.
x
,
pos
.
y
);
break
;
}
break
;
default
:
/* plot pad shape as polygon */
...
...
@@ -429,8 +462,10 @@ void Gerber_Plotter::flash_pad_rect(wxPoint pos, wxSize size,
}
}
void
Gerber_Plotter
::
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
trace_mode
)
void
Gerber_Plotter
::
flash_pad_trapez
(
wxPoint
pos
,
wxSize
size
,
wxSize
delta
,
int
orient
,
GRTraceMode
trace_mode
)
/* Trace 1 pad trapezoidal donne par :
* son centre pos.x,pos.y
* ses dimensions size.x et size.y
...
...
@@ -472,7 +507,7 @@ void Gerber_Plotter::flash_pad_trapez(wxPoint pos, wxSize size, wxSize delta,
* " 1 "
*/
{
wxASSERT
(
output_file
);
wxASSERT
(
output_file
);
int
ii
,
jj
;
int
dx
,
dy
;
wxPoint
polygon
[
4
];
/* polygon corners */
...
...
@@ -507,10 +542,10 @@ void Gerber_Plotter::flash_pad_trapez(wxPoint pos, wxSize size, wxSize delta,
coord
[
jj
]
=
polygon
[
ii
].
y
+=
pos
.
y
;
jj
++
;
}
coord
[
8
]
=
coord
[
0
];
coord
[
9
]
=
coord
[
1
];
set_current_line_width
(
-
1
);
poly
(
5
,
coord
,
trace_mode
==
FILLED
?
FILLED_SHAPE
:
NO_FILL
);
}
coord
[
8
]
=
coord
[
0
];
coord
[
9
]
=
coord
[
1
];
set_current_line_width
(
-
1
);
poly
(
5
,
coord
,
trace_mode
==
FILLED
?
FILLED_SHAPE
:
NO_FILL
);
}
eeschema/plot.cpp
View file @
daeb1901
...
...
@@ -17,17 +17,17 @@
#include "protos.h"
/* Local Variables : */
static
void
Plot_Hierarchical_PIN_Sheet
(
Plotter
*
plotter
,
static
void
Plot_Hierarchical_PIN_Sheet
(
Plotter
*
plotter
,
Hierarchical_PIN_Sheet_Struct
*
Struct
);
static
void
PlotTextField
(
Plotter
*
plotter
,
SCH_COMPONENT
*
DrawLibItem
,
static
void
PlotTextField
(
Plotter
*
plotter
,
SCH_COMPONENT
*
DrawLibItem
,
int
FieldNumber
,
int
IsMulti
,
int
DrawMode
);
static
void
PlotPinSymbol
(
Plotter
*
plotter
,
const
wxPoint
&
pos
,
static
void
PlotPinSymbol
(
Plotter
*
plotter
,
const
wxPoint
&
pos
,
int
len
,
int
orient
,
int
Shape
);
/***/
/**********************************************************/
static
void
PlotNoConnectStruct
(
Plotter
*
plotter
,
DrawNoConnectStruct
*
Struct
)
static
void
PlotNoConnectStruct
(
Plotter
*
plotter
,
DrawNoConnectStruct
*
Struct
)
/**********************************************************/
/* Routine de dessin des symboles de "No Connexion" ..
...
...
@@ -47,7 +47,7 @@ static void PlotNoConnectStruct(Plotter *plotter, DrawNoConnectStruct* Struct )
/*************************************************/
static
void
PlotLibPart
(
Plotter
*
plotter
,
SCH_COMPONENT
*
DrawLibItem
)
static
void
PlotLibPart
(
Plotter
*
plotter
,
SCH_COMPONENT
*
DrawLibItem
)
/*************************************************/
/* Polt a component */
{
...
...
@@ -65,7 +65,7 @@ static void PlotLibPart(Plotter *plotter, SCH_COMPONENT* DrawLibItem )
Multi
=
DrawLibItem
->
m_Multi
;
convert
=
DrawLibItem
->
m_Convert
;
for
(
LibEDA_BaseStruct
*
DEntry
=
Entry
->
m_Drawings
;
for
(
LibEDA_BaseStruct
*
DEntry
=
Entry
->
m_Drawings
;
DEntry
!=
NULL
;
DEntry
=
DEntry
->
Next
()
)
{
/* Elimination des elements non relatifs a l'unite */
...
...
@@ -167,7 +167,7 @@ static void PlotLibPart(Plotter *plotter, SCH_COMPONENT* DrawLibItem )
pos
=
TransformCoordinate
(
TransMat
,
Pin
->
m_Pos
)
+
DrawLibItem
->
m_Pos
;
/* Dessin de la pin et du symbole special associe */
PlotPinSymbol
(
plotter
,
pos
,
Pin
->
m_PinLen
,
orient
,
Pin
->
m_PinShape
);
PlotPinSymbol
(
plotter
,
pos
,
Pin
->
m_PinLen
,
orient
,
Pin
->
m_PinShape
);
int
thickness
=
g_DrawDefaultLineThickness
;
Pin
->
PlotPinTexts
(
plotter
,
pos
,
orient
,
Entry
->
m_TextInside
,
...
...
@@ -180,7 +180,7 @@ static void PlotLibPart(Plotter *plotter, SCH_COMPONENT* DrawLibItem )
{
LibDrawPolyline
*
polyline
=
(
LibDrawPolyline
*
)
DEntry
;
Poly
=
(
int
*
)
MyMalloc
(
sizeof
(
int
)
*
2
*
polyline
->
GetCornerCount
()
);
for
(
ii
=
0
;
ii
<
(
int
)
polyline
->
GetCornerCount
();
ii
++
)
for
(
ii
=
0
;
ii
<
(
int
)
polyline
->
GetCornerCount
();
ii
++
)
{
pos
=
polyline
->
m_PolyPoints
[
ii
];
pos
=
TransformCoordinate
(
TransMat
,
pos
)
+
DrawLibItem
->
m_Pos
;
...
...
@@ -238,23 +238,23 @@ static void PlotLibPart(Plotter *plotter, SCH_COMPONENT* DrawLibItem )
if
(
(
Entry
->
m_Prefix
.
m_Attributs
&
TEXT_NO_VISIBLE
)
==
0
)
{
if
(
Entry
->
m_UnitCount
>
1
)
PlotTextField
(
plotter
,
DrawLibItem
,
REFERENCE
,
1
,
0
);
PlotTextField
(
plotter
,
DrawLibItem
,
REFERENCE
,
1
,
0
);
else
PlotTextField
(
plotter
,
DrawLibItem
,
REFERENCE
,
0
,
0
);
PlotTextField
(
plotter
,
DrawLibItem
,
REFERENCE
,
0
,
0
);
}
if
(
(
Entry
->
m_Name
.
m_Attributs
&
TEXT_NO_VISIBLE
)
==
0
)
PlotTextField
(
plotter
,
DrawLibItem
,
VALUE
,
0
,
0
);
PlotTextField
(
plotter
,
DrawLibItem
,
VALUE
,
0
,
0
);
for
(
ii
=
2
;
ii
<
NUMBER_OF_FIELDS
;
ii
++
)
{
PlotTextField
(
plotter
,
DrawLibItem
,
ii
,
0
,
0
);
PlotTextField
(
plotter
,
DrawLibItem
,
ii
,
0
,
0
);
}
}
/*************************************************************/
static
void
PlotTextField
(
Plotter
*
plotter
,
SCH_COMPONENT
*
DrawLibItem
,
static
void
PlotTextField
(
Plotter
*
plotter
,
SCH_COMPONENT
*
DrawLibItem
,
int
FieldNumber
,
int
IsMulti
,
int
DrawMode
)
/**************************************************************/
...
...
@@ -402,7 +402,7 @@ static void PlotTextField( Plotter *plotter, SCH_COMPONENT* DrawLibItem,
/**************************************************************************/
static
void
PlotPinSymbol
(
Plotter
*
plotter
,
const
wxPoint
&
pos
,
static
void
PlotPinSymbol
(
Plotter
*
plotter
,
const
wxPoint
&
pos
,
int
len
,
int
orient
,
int
Shape
)
/**************************************************************************/
...
...
@@ -448,7 +448,7 @@ static void PlotPinSymbol(Plotter *plotter, const wxPoint& pos,
-
1
);
// width
plotter
->
move_to
(
wxPoint
(
MapX1
*
INVERT_PIN_RADIUS
*
2
+
x1
,
MapY1
*
INVERT_PIN_RADIUS
*
2
+
y1
)
);
MapY1
*
INVERT_PIN_RADIUS
*
2
+
y1
)
);
plotter
->
finish_to
(
pos
);
}
else
...
...
@@ -509,7 +509,7 @@ static void PlotPinSymbol(Plotter *plotter, const wxPoint& pos,
/*******************************************/
static
void
PlotTextStruct
(
Plotter
*
plotter
,
EDA_BaseStruct
*
Struct
)
static
void
PlotTextStruct
(
Plotter
*
plotter
,
EDA_BaseStruct
*
Struct
)
/*******************************************/
/*
...
...
@@ -561,7 +561,6 @@ static void PlotTextStruct(Plotter *plotter, EDA_BaseStruct* Struct )
delete
(
list
);
}
else
plotter
->
text
(
textpos
,
color
,
schText
->
m_Text
,
schText
->
m_Orient
,
schText
->
m_Size
,
...
...
@@ -583,7 +582,7 @@ static void PlotTextStruct(Plotter *plotter, EDA_BaseStruct* Struct )
/*****************************************************************************************/
static
void
Plot_Hierarchical_PIN_Sheet
(
Plotter
*
plotter
,
static
void
Plot_Hierarchical_PIN_Sheet
(
Plotter
*
plotter
,
Hierarchical_PIN_Sheet_Struct
*
aHierarchical_PIN
)
/****************************************************************************************/
...
...
@@ -612,8 +611,12 @@ static void Plot_Hierarchical_PIN_Sheet(Plotter *plotter,
side
=
GR_TEXT_HJUSTIFY_LEFT
;
}
int
thickness
=
(
aHierarchical_PIN
->
m_Width
==
0
)
?
g_DrawDefaultLineThickness
:
aHierarchical_PIN
->
m_Width
;
thickness
=
Clamp_Text_PenSize
(
thickness
,
aHierarchical_PIN
->
m_Size
,
aHierarchical_PIN
->
m_Bold
);
int
thickness
=
(
aHierarchical_PIN
->
m_Width
==
0
)
?
g_DrawDefaultLineThickness
:
aHierarchical_PIN
->
m_Width
;
thickness
=
Clamp_Text_PenSize
(
thickness
,
aHierarchical_PIN
->
m_Size
,
aHierarchical_PIN
->
m_Bold
);
plotter
->
set_current_line_width
(
thickness
);
plotter
->
text
(
wxPoint
(
tposx
,
posy
),
txtcolor
,
...
...
@@ -629,7 +632,7 @@ static void Plot_Hierarchical_PIN_Sheet(Plotter *plotter,
/*************************************************/
static
void
PlotSheetStruct
(
Plotter
*
plotter
,
DrawSheetStruct
*
Struct
)
static
void
PlotSheetStruct
(
Plotter
*
plotter
,
DrawSheetStruct
*
Struct
)
/*************************************************/
/* Routine de dessin du bloc type hierarchie */
{
...
...
@@ -691,13 +694,14 @@ static void PlotSheetStruct(Plotter *plotter, DrawSheetStruct* Struct )
while
(
SheetLabelStruct
!=
NULL
)
{
Plot_Hierarchical_PIN_Sheet
(
plotter
,
SheetLabelStruct
);
Plot_Hierarchical_PIN_Sheet
(
plotter
,
SheetLabelStruct
);
SheetLabelStruct
=
SheetLabelStruct
->
Next
();
}
}
/*************************************************/
void
PlotDrawlist
(
Plotter
*
plotter
,
SCH_ITEM
*
drawlist
)
void
PlotDrawlist
(
Plotter
*
plotter
,
SCH_ITEM
*
drawlist
)
/*************************************************/
{
while
(
drawlist
)
/* tracage */
...
...
@@ -718,30 +722,28 @@ void PlotDrawlist(Plotter *plotter, SCH_ITEM* drawlist )
case
DRAW_SEGMENT_STRUCT_TYPE
:
#undef STRUCT
#define STRUCT ( (EDA_DrawLineStruct*) drawlist )
if
(
drawlist
->
Type
()
==
DRAW_SEGMENT_STRUCT_TYPE
)
{
StartPos
=
STRUCT
->
m_Start
;
EndPos
=
STRUCT
->
m_End
;
layer
=
STRUCT
->
GetLayer
();
}
plotter
->
set_color
(
ReturnLayerColor
(
layer
)
);
switch
(
layer
)
{
case
LAYER_NOTES
:
/* Trace en pointilles */
plotter
->
set_current_line_width
(
g_DrawDefaultLineThickness
);
plotter
->
set_dash
(
true
);
plotter
->
set_dash
(
true
);
plotter
->
move_to
(
StartPos
);
plotter
->
finish_to
(
EndPos
);
plotter
->
set_dash
(
false
);
plotter
->
set_dash
(
false
);
break
;
case
LAYER_BUS
:
/* Trait large */
{
int
thickness
=
wxRound
(
g_DrawDefaultLineThickness
*
2
);
if
(
thickness
<
3
)
thickness
=
3
;
if
(
thickness
<
3
)
thickness
=
3
;
/* We NEED it to be thick, even on HPGL */
plotter
->
thick_segment
(
StartPos
,
EndPos
,
thickness
,
FILLED
);
plotter
->
thick_segment
(
StartPos
,
EndPos
,
thickness
,
FILLED
);
plotter
->
set_current_line_width
(
g_DrawDefaultLineThickness
);
}
break
;
...
...
@@ -752,6 +754,7 @@ void PlotDrawlist(Plotter *plotter, SCH_ITEM* drawlist )
plotter
->
finish_to
(
EndPos
);
break
;
}
break
;
case
DRAW_JUNCTION_STRUCT_TYPE
:
...
...
@@ -765,12 +768,12 @@ void PlotDrawlist(Plotter *plotter, SCH_ITEM* drawlist )
case
TYPE_SCH_LABEL
:
case
TYPE_SCH_GLOBALLABEL
:
case
TYPE_SCH_HIERLABEL
:
PlotTextStruct
(
plotter
,
drawlist
);
PlotTextStruct
(
plotter
,
drawlist
);
break
;
case
TYPE_SCH_COMPONENT
:
DrawLibItem
=
(
SCH_COMPONENT
*
)
drawlist
;
PlotLibPart
(
plotter
,
DrawLibItem
);
PlotLibPart
(
plotter
,
DrawLibItem
);
break
;
case
DRAW_PICK_ITEM_STRUCT_TYPE
:
...
...
@@ -788,14 +791,14 @@ void PlotDrawlist(Plotter *plotter, SCH_ITEM* drawlist )
case
DRAW_SHEET_STRUCT_TYPE
:
#undef STRUCT
#define STRUCT ( (DrawSheetStruct*) drawlist )
PlotSheetStruct
(
plotter
,
STRUCT
);
PlotSheetStruct
(
plotter
,
STRUCT
);
break
;
case
DRAW_NOCONNECT_STRUCT_TYPE
:
#undef STRUCT
#define STRUCT ( (DrawNoConnectStruct*) drawlist )
plotter
->
set_color
(
ReturnLayerColor
(
LAYER_NOCONNECT
)
);
PlotNoConnectStruct
(
plotter
,
STRUCT
);
PlotNoConnectStruct
(
plotter
,
STRUCT
);
break
;
default
:
...
...
@@ -804,4 +807,3 @@ void PlotDrawlist(Plotter *plotter, SCH_ITEM* drawlist )
drawlist
=
drawlist
->
Next
();
}
}
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