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
7559e134
Commit
7559e134
authored
Feb 22, 2008
by
dickelbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
specctra_export: add support for dsn outline
parent
923ece9c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
134 additions
and
37 deletions
+134
-37
change_log.txt
change_log.txt
+19
-11
class_edge_mod.cpp
pcbnew/class_edge_mod.cpp
+19
-9
class_edge_mod.h
pcbnew/class_edge_mod.h
+21
-13
specctra.h
pcbnew/specctra.h
+10
-0
specctra_export.cpp
pcbnew/specctra_export.cpp
+65
-4
No files found.
change_log.txt
View file @
7559e134
...
@@ -5,18 +5,26 @@ Started 2007-June-11
...
@@ -5,18 +5,26 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
Please add newer entries at the top, list the date and your name with
email address.
email address.
2008-Feb-22 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
+pcbnew
specctra_export.cpp: added DSN 'outline' support from EDGE_MODULEs.
lines and circles, not arcs.
factored out EDGE_MODULE::ShowShape() from EDGE_MODULE::Show().
2008-Feb-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
2008-Feb-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
================================================================================
+eeschema
+eeschema
added : full text conversion between text, label, global label and hierarchical label
added : full text conversion between text, label, global label and hierarchical label
some problems fixed:
some problems fixed:
- annotation incorrectly cleared.
- annotation incorrectly cleared.
- reference not copied in component copy.
- reference not copied in component copy.
- incorrect redo when changing the chip name in component edition
- incorrect redo when changing the chip name in component edition
bugs not fixed:
bugs not fixed:
- incorrect annotation in complex hierarchy with multi parts per package (duplicates created).
- incorrect annotation in complex hierarchy with multi parts per package (duplicates created).
2008-Feb-20 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
2008-Feb-20 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
...
@@ -24,8 +32,8 @@ email address.
...
@@ -24,8 +32,8 @@ email address.
+eeschema
+eeschema
Fixed bug in getpart.cpp:
Fixed bug in getpart.cpp:
eeschema crashed when aborting a new component place command
eeschema crashed when aborting a new component place command
Global Symbols now have their shapes
Global Symbols now have their shapes
Bad global label shape fixed when reading a schematic file
Bad global label shape fixed when reading a schematic file
2008-Feb-20 UPDATE Dick Hollenbeck <dick@softplc.com>
2008-Feb-20 UPDATE Dick Hollenbeck <dick@softplc.com>
...
...
pcbnew/class_edge_mod.cpp
View file @
7559e134
...
@@ -540,18 +540,13 @@ bool EDGE_MODULE::HitTest( const wxPoint& ref_pos )
...
@@ -540,18 +540,13 @@ bool EDGE_MODULE::HitTest( const wxPoint& ref_pos )
#if defined(DEBUG)
#if defined(DEBUG)
/**
* Function Show
* is used to output the object tree, currently for debugging only.
const
char
*
EDGE_MODULE
::
ShowShape
(
int
aShape
)
* @param nestLevel An aid to prettier tree indenting, and is the level
* of nesting of this object within the overall tree.
* @param os The ostream& to output to.
*/
void
EDGE_MODULE
::
Show
(
int
nestLevel
,
std
::
ostream
&
os
)
{
{
const
char
*
cp
;
const
char
*
cp
;
switch
(
m_
Shape
)
switch
(
a
Shape
)
{
{
case
S_SEGMENT
:
cp
=
"line"
;
break
;
case
S_SEGMENT
:
cp
=
"line"
;
break
;
case
S_RECT
:
cp
=
"rect"
;
break
;
case
S_RECT
:
cp
=
"rect"
;
break
;
...
@@ -565,6 +560,21 @@ void EDGE_MODULE::Show( int nestLevel, std::ostream& os )
...
@@ -565,6 +560,21 @@ void EDGE_MODULE::Show( int nestLevel, std::ostream& os )
default
:
cp
=
"??EDGE??"
;
break
;
default
:
cp
=
"??EDGE??"
;
break
;
}
}
return
cp
;
}
/**
* Function Show
* is used to output the object tree, currently for debugging only.
* @param nestLevel An aid to prettier tree indenting, and is the level
* of nesting of this object within the overall tree.
* @param os The ostream& to output to.
*/
void
EDGE_MODULE
::
Show
(
int
nestLevel
,
std
::
ostream
&
os
)
{
const
char
*
cp
=
ShowShape
(
m_Shape
);
// for now, make it look like XML:
// for now, make it look like XML:
NestedSpace
(
nestLevel
,
os
)
<<
'<'
<<
GetClass
().
Lower
().
mb_str
()
<<
NestedSpace
(
nestLevel
,
os
)
<<
'<'
<<
GetClass
().
Lower
().
mb_str
()
<<
" type=
\"
"
<<
cp
<<
"
\"
>"
;
" type=
\"
"
<<
cp
<<
"
\"
>"
;
...
...
pcbnew/class_edge_mod.h
View file @
7559e134
...
@@ -13,13 +13,13 @@ public:
...
@@ -13,13 +13,13 @@ public:
int
m_Width
;
// 0 = line, > 0 = tracks, bus ...
int
m_Width
;
// 0 = line, > 0 = tracks, bus ...
wxPoint
m_Start
;
// Line start point
wxPoint
m_Start
;
// Line start point
wxPoint
m_End
;
// Line end point
wxPoint
m_End
;
// Line end point
int
m_Shape
;
// voir "enum Track_Shapes"
int
m_Shape
;
// voir "enum Track_Shapes"
wxPoint
m_Start0
;
// coord relatives a l'ancre du point de depart(Orient 0)
wxPoint
m_Start0
;
// coord relatives a l'ancre du point de depart(Orient 0)
wxPoint
m_End0
;
// coord relatives a l'ancre du point de fin (Orient 0)
wxPoint
m_End0
;
// coord relatives a l'ancre du point de fin (Orient 0)
int
m_Angle
;
// pour les arcs de cercle: longueur de l'arc en 0,1 degres
int
m_Angle
;
// pour les arcs de cercle: longueur de l'arc en 0,1 degres
int
m_PolyCount
;
// For polygons: number of points (> 2)
int
m_PolyCount
;
// For polygons: number of points (> 2)
int
*
m_PolyList
;
// For polygons: coord list (1 point = 2 coord)
int
*
m_PolyList
;
// For polygons: coord list (1 point = 2 coord)
// Coord are relative to Origin, orient 0
// Coord are relative to Origin, orient 0
...
@@ -29,7 +29,7 @@ public:
...
@@ -29,7 +29,7 @@ public:
EDGE_MODULE
(
EDGE_MODULE
*
edge
);
EDGE_MODULE
(
EDGE_MODULE
*
edge
);
~
EDGE_MODULE
();
~
EDGE_MODULE
();
/**
/**
* Function GetPosition
* Function GetPosition
* returns the position of this object.
* returns the position of this object.
...
@@ -39,8 +39,8 @@ public:
...
@@ -39,8 +39,8 @@ public:
{
{
return
m_Start
;
return
m_Start
;
}
}
/* supprime du chainage la structure Struct */
/* supprime du chainage la structure Struct */
void
UnLink
();
void
UnLink
();
...
@@ -51,9 +51,9 @@ public:
...
@@ -51,9 +51,9 @@ public:
* writes the data structures for this object out to a FILE in "*.brd" format.
* writes the data structures for this object out to a FILE in "*.brd" format.
* @param aFile The FILE to write to.
* @param aFile The FILE to write to.
* @return bool - true if success writing else false.
* @return bool - true if success writing else false.
*/
*/
bool
Save
(
FILE
*
aFile
)
const
;
bool
Save
(
FILE
*
aFile
)
const
;
int
ReadDescr
(
char
*
Line
,
FILE
*
File
,
int
*
LineNum
=
NULL
);
int
ReadDescr
(
char
*
Line
,
FILE
*
File
,
int
*
LineNum
=
NULL
);
// Mise a jour des coordon�s pour l'affichage
// Mise a jour des coordon�s pour l'affichage
...
@@ -71,10 +71,10 @@ public:
...
@@ -71,10 +71,10 @@ public:
* about this object into the frame's message panel.
* about this object into the frame's message panel.
* Is virtual from EDA_BaseStruct.
* Is virtual from EDA_BaseStruct.
* @param frame A WinEDA_DrawFrame in which to print status information.
* @param frame A WinEDA_DrawFrame in which to print status information.
*/
*/
void
Display_Infos
(
WinEDA_DrawFrame
*
frame
);
void
Display_Infos
(
WinEDA_DrawFrame
*
frame
);
/**
/**
* Function HitTest
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* tests if the given wxPoint is within the bounds of this object.
...
@@ -82,7 +82,7 @@ public:
...
@@ -82,7 +82,7 @@ public:
* @return bool - true if a hit, else false
* @return bool - true if a hit, else false
*/
*/
bool
HitTest
(
const
wxPoint
&
refPos
);
bool
HitTest
(
const
wxPoint
&
refPos
);
/**
/**
* Function GetClass
* Function GetClass
* returns the class name.
* returns the class name.
...
@@ -98,10 +98,18 @@ public:
...
@@ -98,10 +98,18 @@ public:
/**
/**
* Function Show
* Function Show
* is used to output the object tree, currently for debugging only.
* is used to output the object tree, currently for debugging only.
* @param nestLevel An aid to prettier tree indenting, and is the level
* @param nestLevel An aid to prettier tree indenting, and is the level
* of nesting of this object within the overall tree.
* of nesting of this object within the overall tree.
* @param os The ostream& to output to.
* @param os The ostream& to output to.
*/
*/
virtual
void
Show
(
int
nestLevel
,
std
::
ostream
&
os
);
virtual
void
Show
(
int
nestLevel
,
std
::
ostream
&
os
);
/**
* Function ShowShape
* converts the enum Track_Shapes integer value to a C string.
*/
static
const
char
*
ShowShape
(
int
aShape
);
#endif
#endif
};
};
pcbnew/specctra.h
View file @
7559e134
...
@@ -693,6 +693,11 @@ public:
...
@@ -693,6 +693,11 @@ public:
layer_id
=
aLayerId
;
layer_id
=
aLayerId
;
}
}
void
SetAperture
(
double
aWidth
)
{
aperture_width
=
aWidth
;
}
void
Format
(
OUTPUTFORMATTER
*
out
,
int
nestLevel
)
throw
(
IOError
)
void
Format
(
OUTPUTFORMATTER
*
out
,
int
nestLevel
)
throw
(
IOError
)
{
{
const
char
*
newline
=
nestLevel
?
"
\n
"
:
""
;
const
char
*
newline
=
nestLevel
?
"
\n
"
:
""
;
...
@@ -1883,6 +1888,11 @@ class SHAPE : public WINDOW
...
@@ -1883,6 +1888,11 @@ class SHAPE : public WINDOW
WINDOWS
windows
;
WINDOWS
windows
;
public
:
public
:
/**
* Constructor SHAPE
* alternatively takes a DSN_T aType of T_outline
*/
SHAPE
(
ELEM
*
aParent
,
DSN_T
aType
=
T_shape
)
:
SHAPE
(
ELEM
*
aParent
,
DSN_T
aType
=
T_shape
)
:
WINDOW
(
aParent
,
aType
)
WINDOW
(
aParent
,
aType
)
{
{
...
...
pcbnew/specctra_export.cpp
View file @
7559e134
...
@@ -545,21 +545,21 @@ typedef std::map<wxString, int, wxString_less_than> PINMAP;
...
@@ -545,21 +545,21 @@ typedef std::map<wxString, int, wxString_less_than> PINMAP;
IMAGE
*
SPECCTRA_DB
::
makeIMAGE
(
BOARD
*
aBoard
,
MODULE
*
aModule
)
IMAGE
*
SPECCTRA_DB
::
makeIMAGE
(
BOARD
*
aBoard
,
MODULE
*
aModule
)
{
{
PINMAP
pinmap
;
PINMAP
pinmap
;
TYPE_COLLECTOR
pad
s
;
TYPE_COLLECTOR
moduleItem
s
;
wxString
padName
;
wxString
padName
;
// get all the MODULE's pads.
// get all the MODULE's pads.
pad
s
.
Collect
(
aModule
,
scanPADs
);
moduleItem
s
.
Collect
(
aModule
,
scanPADs
);
IMAGE
*
image
=
new
IMAGE
(
0
);
IMAGE
*
image
=
new
IMAGE
(
0
);
image
->
image_id
=
CONV_TO_UTF8
(
aModule
->
m_LibRef
);
image
->
image_id
=
CONV_TO_UTF8
(
aModule
->
m_LibRef
);
// from the pads, and make an IMAGE using collated padstacks.
// from the pads, and make an IMAGE using collated padstacks.
for
(
int
p
=
0
;
p
<
pad
s
.
GetCount
();
++
p
)
for
(
int
p
=
0
;
p
<
moduleItem
s
.
GetCount
();
++
p
)
{
{
D_PAD
*
pad
=
(
D_PAD
*
)
pad
s
[
p
];
D_PAD
*
pad
=
(
D_PAD
*
)
moduleItem
s
[
p
];
// see if this pad is a through hole with no copper on its perimeter
// see if this pad is a through hole with no copper on its perimeter
if
(
isKeepout
(
pad
)
)
if
(
isKeepout
(
pad
)
)
...
@@ -636,6 +636,67 @@ IMAGE* SPECCTRA_DB::makeIMAGE( BOARD* aBoard, MODULE* aModule )
...
@@ -636,6 +636,67 @@ IMAGE* SPECCTRA_DB::makeIMAGE( BOARD* aBoard, MODULE* aModule )
}
}
}
}
static
const
KICAD_T
scanEDGEs
[]
=
{
TYPEEDGEMODULE
,
EOT
};
// get all the MODULE's EDGE_MODULEs and convert those to DSN outlines.
moduleItems
.
Collect
(
aModule
,
scanEDGEs
);
for
(
int
i
=
0
;
i
<
moduleItems
.
GetCount
();
++
i
)
{
EDGE_MODULE
*
graphic
=
(
EDGE_MODULE
*
)
moduleItems
[
i
];
SHAPE
*
outline
;
PATH
*
path
;
switch
(
graphic
->
m_Shape
)
{
case
S_SEGMENT
:
outline
=
new
SHAPE
(
image
,
T_outline
);
image
->
Append
(
outline
);
path
=
new
PATH
(
outline
);
outline
->
SetShape
(
path
);
path
->
SetAperture
(
scale
(
graphic
->
m_Width
)
);
path
->
SetLayerId
(
"signal"
);
path
->
AppendPoint
(
mapPt
(
graphic
->
m_Start0
)
);
path
->
AppendPoint
(
mapPt
(
graphic
->
m_End0
)
);
break
;
case
S_CIRCLE
:
{
// this is best done by 4 QARC's but freerouter does not yet support QARCs.
// for now, support by using line segments.
outline
=
new
SHAPE
(
image
,
T_outline
);
image
->
Append
(
outline
);
path
=
new
PATH
(
outline
);
outline
->
SetShape
(
path
);
path
->
SetAperture
(
scale
(
graphic
->
m_Width
)
);
path
->
SetLayerId
(
"signal"
);
double
radius
=
hypot
(
scale
(
graphic
->
m_Start
.
x
-
graphic
->
m_End
.
x
),
scale
(
graphic
->
m_Start
.
y
-
graphic
->
m_End
.
y
)
);
POINT
offset
=
mapPt
(
graphic
->
m_Start0
);
// better if evenly divisible into 360
const
int
DEGREE_INTERVAL
=
18
;
// 18 means 20 line segments
for
(
double
radians
=
0.0
;
radians
<
2
*
M_PI
;
radians
+=
DEGREE_INTERVAL
*
M_PI
/
180.0
)
{
POINT
point
(
radius
*
cos
(
radians
),
radius
*
sin
(
radians
)
);
point
+=
offset
;
path
->
AppendPoint
(
point
);
}
}
break
;
case
S_RECT
:
case
S_ARC
:
default
:
D
(
printf
(
"makeIMAGE(): unsupported shape %s
\n
"
,
EDGE_MODULE
::
ShowShape
(
graphic
->
m_Shape
)
);)
continue
;
}
}
return
image
;
return
image
;
}
}
...
...
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