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
beeaf53a
Commit
beeaf53a
authored
Dec 16, 2008
by
charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code cleaning. Removed obscure code to draw texts
parent
de78cdb1
Changes
19
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
495 additions
and
633 deletions
+495
-633
3d_draw.cpp
3d-viewer/3d_draw.cpp
+61
-64
base_struct.cpp
common/base_struct.cpp
+50
-342
drawtxt.cpp
common/drawtxt.cpp
+63
-48
class_hierarchical_PIN_sheet.cpp
eeschema/class_hierarchical_PIN_sheet.cpp
+1
-1
class_sch_cmp_field.cpp
eeschema/class_sch_cmp_field.cpp
+6
-28
class_sch_cmp_field.h
eeschema/class_sch_cmp_field.h
+0
-1
classes_body_items.h
eeschema/classes_body_items.h
+92
-69
edit_component_in_lib.cpp
eeschema/edit_component_in_lib.cpp
+2
-2
eelibs_draw_components.cpp
eeschema/eelibs_draw_components.cpp
+52
-9
eelibs_read_libraryfiles.cpp
eeschema/eelibs_read_libraryfiles.cpp
+3
-3
load_one_schematic_file.cpp
eeschema/load_one_schematic_file.cpp
+2
-2
plot.cpp
eeschema/plot.cpp
+51
-8
base_struct.h
include/base_struct.h
+50
-38
common.h
include/common.h
+13
-2
block.cpp
pcbnew/block.cpp
+0
-3
class_pcb_text.cpp
pcbnew/class_pcb_text.cpp
+4
-4
class_track.cpp
pcbnew/class_track.cpp
+45
-2
cotation.cpp
pcbnew/cotation.cpp
+0
-3
pcbtexte.cpp
pcbnew/pcbtexte.cpp
+0
-4
No files found.
3d-viewer/3d_draw.cpp
View file @
beeaf53a
...
...
@@ -308,6 +308,7 @@ void Pcb3D_GLCanvas::Draw3D_Via( SEGVIA* via )
continue
;
SetGLColor
(
color
);
// SetGLColor( LIGHTGRAY );
glNormal3f
(
0.0
,
0.0
,
(
layer
==
COPPER_LAYER_N
)
?
-
1.0
:
1.0
);
if
(
layer
==
COPPER_LAYER_N
)
...
...
@@ -395,52 +396,48 @@ void Pcb3D_GLCanvas::Draw3D_DrawSegment( DRAWSEGMENT* segment )
}
/* function to draw 3D segments, called by DrawGraphicText
* When DrawGraphicText is called to draw a text to an OpenGL DC
* it calls Draw3dTextSegm to each segment to draw.
* 2 parameters used by Draw3D_FilledSegment are not handled by DrawGraphicText
* but are used in Draw3D_FilledSegment().
* they are 2 local variables. This is an ugly, but trivial code.
* Using DrawGraphicText to draw all texts ensure texts have the same shape
* in all contexts
*/
static
double
s_Text3DWidth
,
s_Text3DZPos
;
static
void
Draw3dTextSegm
(
int
x0
,
int
y0
,
int
xf
,
int
yf
)
{
double
startx
=
x0
*
g_Parm_3D_Visu
.
m_BoardScale
;
double
starty
=
y0
*
g_Parm_3D_Visu
.
m_BoardScale
;
double
endx
=
xf
*
g_Parm_3D_Visu
.
m_BoardScale
;
double
endy
=
yf
*
g_Parm_3D_Visu
.
m_BoardScale
;
Draw3D_FilledSegment
(
startx
,
-
starty
,
endx
,
-
endy
,
s_Text3DWidth
,
s_Text3DZPos
);
}
/*************************************************************/
void
Pcb3D_GLCanvas
::
Draw3D_DrawText
(
TEXTE_PCB
*
text
)
/*************************************************************/
{
if
(
!
Get3DLayerEnable
(
layer
)
)
return
;
int
layer
=
text
->
GetLayer
();
double
x
,
y
,
xf
,
yf
;
double
zpos
,
w
;
int
color
=
g_Parm_3D_Visu
.
m_BoardSettings
->
m_LayerColor
[
layer
];
#define BUFFSIZE 50
int
coord
[(
BUFFSIZE
+
2
)
*
2
];
int
ii
,
jj
,
kk
,
ll
,
nbpoints
;
if
(
Get3DLayerEnable
(
layer
)
)
{
zpos
=
g_Parm_3D_Visu
.
m_LayerZcoord
[
layer
];
glNormal3f
(
0.0
,
0.0
,
Get3DLayerSide
(
layer
)
);
jj
=
5
;
ii
=
jj
+
1
;
while
(
ii
<
text
->
m_TextDrawingsSize
)
{
nbpoints
=
text
->
m_TextDrawings
[
jj
];
if
(
nbpoints
>
BUFFSIZE
)
nbpoints
=
BUFFSIZE
;
for
(
kk
=
0
,
ll
=
0
;
(
kk
<
nbpoints
)
&&
(
ii
<
text
->
m_TextDrawingsSize
);
kk
++
)
{
coord
[
ll
++
]
=
text
->
m_TextDrawings
[
ii
++
]
+
text
->
m_Pos
.
x
;
coord
[
ll
++
]
=
text
->
m_TextDrawings
[
ii
++
]
+
text
->
m_Pos
.
y
;
}
jj
=
ii
++
;
for
(
kk
=
0
,
ll
=
0
;
kk
<
(
nbpoints
-
1
);
kk
++
,
ll
+=
2
)
{
SetGLColor
(
color
);
w
=
text
->
m_Width
*
g_Parm_3D_Visu
.
m_BoardScale
;
x
=
coord
[
ll
]
*
g_Parm_3D_Visu
.
m_BoardScale
;
y
=
coord
[
ll
+
1
]
*
g_Parm_3D_Visu
.
m_BoardScale
;
xf
=
coord
[
ll
+
2
]
*
g_Parm_3D_Visu
.
m_BoardScale
;
yf
=
coord
[
ll
+
3
]
*
g_Parm_3D_Visu
.
m_BoardScale
;
Draw3D_FilledSegment
(
x
,
-
y
,
xf
,
-
yf
,
w
,
zpos
);
}
}
}
s_Text3DZPos
=
g_Parm_3D_Visu
.
m_LayerZcoord
[
layer
]
;
s_Text3DWidth
=
text
->
m_Width
*
g_Parm_3D_Visu
.
m_BoardScale
;
glNormal3f
(
0.0
,
0.0
,
Get3DLayerSide
(
layer
)
)
;
DrawGraphicText
(
NULL
,
NULL
,
text
->
m_Pos
,
(
EDA_Colors
)
color
,
text
->
m_Text
,
text
->
m_Orient
,
text
->
m_Size
,
text
->
m_HJustify
,
text
->
m_VJustify
,
text
->
m_Width
,
text
->
m_Italic
,
Draw3dTextSegm
);
}
...
...
@@ -682,10 +679,10 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas )
RotatePoint
(
&
delta_cx
,
&
delta_cy
,
angle
);
{
double
ox
,
oy
,
fx
,
fy
;
ox
=
(
double
)
(
ux0
+
delta_cx
)
*
scale
;
oy
=
(
double
)
(
uy0
+
delta_cy
)
*
scale
;
fx
=
(
double
)
(
ux0
-
delta_cx
)
*
scale
;
fy
=
(
double
)
(
uy0
-
delta_cy
)
*
scale
;
ox
=
(
double
)
(
ux0
+
delta_cx
)
*
scale
;
oy
=
(
double
)
(
uy0
+
delta_cy
)
*
scale
;
fx
=
(
double
)
(
ux0
-
delta_cx
)
*
scale
;
fy
=
(
double
)
(
uy0
-
delta_cy
)
*
scale
;
for
(
layer
=
FIRST_COPPER_LAYER
;
layer
<=
LAST_COPPER_LAYER
;
layer
++
)
{
if
(
layer
&&
(
layer
==
nlmax
)
)
...
...
@@ -738,8 +735,8 @@ void D_PAD::Draw3D( Pcb3D_GLCanvas* glcanvas )
coord
[
ii
][
0
]
+=
ux0
;
coord
[
ii
][
1
]
+=
uy0
;
ll
=
ii
*
2
;
fcoord
[
ll
][
0
]
=
coord
[
ii
][
0
]
*
scale
;
fcoord
[
ll
][
1
]
=
coord
[
ii
][
1
]
*
scale
;
fcoord
[
ll
][
0
]
=
coord
[
ii
][
0
]
*
scale
;
fcoord
[
ll
][
1
]
=
coord
[
ii
][
1
]
*
scale
;
}
for
(
ii
=
0
;
ii
<
7
;
ii
+=
2
)
...
...
common/base_struct.cpp
View file @
beeaf53a
This diff is collapsed.
Click to expand it.
common/drawtxt.cpp
View file @
beeaf53a
...
...
@@ -23,25 +23,34 @@
/****************************************************************************************************/
void
DrawGraphicText
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
DC
,
const
wxPoint
&
aPos
,
enum
EDA_Colors
aColor
,
const
wxString
&
aText
,
int
aOrient
,
const
wxSize
&
aSize
,
int
aH_justify
,
int
aV_justify
,
int
aWidth
)
const
wxPoint
&
aPos
,
EDA_Colors
aColor
,
const
wxString
&
aText
,
int
aOrient
,
const
wxSize
&
aSize
,
enum
GRTextHorizJustifyType
aH_justify
,
enum
GRTextVertJustifyType
aV_justify
,
int
aWidth
,
bool
aItalic
,
void
(
*
aCallback
)
(
int
x0
,
int
y0
,
int
xf
,
int
yf
))
/****************************************************************************************************/
/** Function DrawGraphicText
* Draw a graphic text (like module texts)
* Draw a graphic text (like module texts)
* @param aPanel = the current DrawPanel
* @param aPos = text position (according to
aH_justify, aV
_justify)
* @param aPos = text position (according to
h_justify, v
_justify)
* @param aColor (enum EDA_Colors) = text color
* @param aText = text to draw
* @param aOrient = angle in 0.1 degree
* @param aSize = text size (size.x or size.y can be < 0 for mirrored texts)
* @param aH_justify = horizontal justification (Left, center, right)
* @param aV_justify = vertical justification (bottom, center, top)
* @param aWidth = line aWidth (pen aWidth) (default = 0)
* @param aWidth = line width (pen width) (default = 0)
* if width < 0 : draw segments in sketch mode, width = abs(width)
* @param aItalic = true to simulate an italic font
* @param aCallback() = function called (if non null) to draw each segment.
* used only to draw 3D texts
*/
{
int
ii
,
kk
,
nbchar
,
AsciiCode
,
endcar
;
int
k1
,
k2
,
x0
,
y0
;
int
ii
,
kk
,
char_count
,
AsciiCode
,
endcar
;
int
x0
,
y0
;
int
zoom
;
int
size_h
,
size_v
,
espacement
;
SH_CODE
f_cod
,
plume
=
'U'
;
...
...
@@ -51,9 +60,12 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
int
cX
,
cY
;
// Texte center
int
ox
,
oy
;
// Draw coordinates for the current char
int
coord
[
100
];
// Buffer coordinate used to draw polylines (char shapes)
bool
sketch_mode
=
FALSE
;
bool
sketch_mode
=
false
;
if
(
aPanel
)
zoom
=
aPanel
->
GetZoom
();
else
zoom
=
1
;
size_h
=
aSize
.
x
;
size_v
=
aSize
.
y
;
...
...
@@ -63,14 +75,20 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
aWidth
=
-
aWidth
;
sketch_mode
=
TRUE
;
}
kk
=
0
;
ptr
=
0
;
/* ptr = text index */
nbchar
=
aText
.
Len
();
if
(
nbchar
==
0
)
char_count
=
aText
.
Len
();
if
(
char_count
==
0
)
return
;
espacement
=
(
10
*
size_h
)
/
9
;
// this is the pitch between chars
if
(
espacement
>
0
)
espacement
+=
ABS
(
aWidth
);
else
espacement
-=
ABS
(
aWidth
);
ox
=
cX
=
aPos
.
x
;
oy
=
cY
=
aPos
.
y
;
...
...
@@ -79,7 +97,7 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
{
int
xm
,
ym
,
ll
,
xc
,
yc
;
int
textsize
=
ABS
(
espacement
);
ll
=
(
textsize
*
nbchar
)
/
zoom
;
ll
=
(
textsize
*
char_count
)
/
zoom
;
xc
=
GRMapX
(
cX
);
yc
=
GRMapY
(
cY
);
...
...
@@ -101,7 +119,7 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
/* Compute the position ux0, uy0 of the first letter , next */
dx
=
(
espacement
*
nbchar
)
/
2
;
dx
=
(
espacement
*
char_count
)
/
2
;
dy
=
size_v
/
2
;
/* dx, dy = draw offset between first letter and text center */
ux0
=
uy0
=
0
;
/* Decalage du centre du texte / coord de ref */
...
...
@@ -178,7 +196,7 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
if
(
ABS
(
(
aSize
.
x
/
zoom
)
)
<
3
)
/* chars trop petits pour etre dessines */
{
/* le texte est symbolise par une barre */
dx
=
(
espacement
*
nbchar
)
/
2
;
dx
=
(
espacement
*
char_count
)
/
2
;
dy
=
size_v
/
2
;
/* Decalage du debut du texte / centre */
ux0
=
cX
-
dx
;
...
...
@@ -190,34 +208,15 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
RotatePoint
(
&
ux0
,
&
uy0
,
cX
,
cY
,
aOrient
);
RotatePoint
(
&
dx
,
&
dy
,
cX
,
cY
,
aOrient
);
if
(
aCallback
)
aCallback
(
ux0
,
uy0
,
dx
,
dy
);
else
GRLine
(
&
aPanel
->
m_ClipBox
,
DC
,
ux0
,
uy0
,
dx
,
dy
,
aWidth
,
aColor
);
return
;
}
#if 0
dx = (espacement * nbchar) / 2;
dy = size_v / 2;/* Decalage du debut du texte / centre */
ux0 = cX - dx;
uy0 = cY;
dx += cX;
dy = cY;
RotatePoint( &ux0, &uy0, cX, cY, aOrient );
RotatePoint( &dx, &dy, cX, cY, aOrient );
DC->SetTextForeground( wxColour(
ColorRefs[aColor].r,
ColorRefs[aColor].g,
ColorRefs[aColor].b ) );
DC->DrawRotatedText( Text, GRMapX( ux0 ), GRMapY( uy0 ), (double) aOrient / 10.0 );
return;
#endif
while
(
kk
++
<
nbchar
)
while
(
kk
++
<
char_count
)
{
x0
=
0
;
y0
=
0
;
#if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC)
...
...
@@ -247,8 +246,16 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
if
(
ii
&&
(
plume
==
'D'
)
)
{
if
(
aWidth
<=
1
)
GRPoly
(
&
aPanel
->
m_ClipBox
,
DC
,
ii
/
2
,
coord
,
0
,
0
,
aColor
,
aColor
);
aWidth
=
0
;
if
(
aCallback
)
{
int
ik
,
*
coordptr
;
coordptr
=
coord
;
for
(
ik
=
0
;
ik
<
(
ii
-
2
);
ik
+=
2
,
coordptr
+=
2
)
aCallback
(
*
coordptr
,
*
(
coordptr
+
1
),
*
(
coordptr
+
2
),
*
(
coordptr
+
3
)
);
}
else
if
(
sketch_mode
)
{
int
ik
,
*
coordptr
;
...
...
@@ -270,7 +277,8 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
default
:
{
k1
=
f_cod
;
/* trace sur axe V */
int
y
,
k1
,
k2
;
y
=
k1
=
f_cod
;
/* trace sur axe V */
k1
=
-
(
(
k1
*
size_v
)
/
9
);
ptcar
++
;
...
...
@@ -278,6 +286,9 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
k2
=
f_cod
;
/* trace sur axe H */
k2
=
(
k2
*
size_h
)
/
9
;
// To simulate an italic font, add a x offset depending on the y offset
if
(
aItalic
)
k2
-=
k1
/
8
;
dx
=
k2
+
ox
;
dy
=
k1
+
oy
;
RotatePoint
(
&
dx
,
&
dy
,
cX
,
cY
,
aOrient
);
...
...
@@ -290,19 +301,20 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* DC,
/* end switch */
}
/* end
boucle for = end trace de 1 caractere
*/
/* end
draw 1 char
*/
ptr
++
;
ox
+=
espacement
;
}
/* end trace du texte */
}
/******************************************************************************************/
void
PlotGraphicText
(
int
aFormat_plot
,
const
wxPoint
&
aPos
,
enum
EDA_Colors
aColor
,
const
wxString
&
aText
,
int
aOrient
,
const
wxSize
&
aSize
,
int
aH_justify
,
int
aV_justify
)
int
aOrient
,
const
wxSize
&
aSize
,
enum
GRTextHorizJustifyType
aH_justify
,
enum
GRTextVertJustifyType
aV_justify
,
bool
aItalic
)
/******************************************************************************************/
/** Function PlotGraphicText
...
...
@@ -317,7 +329,7 @@ void PlotGraphicText( int aFormat_plot, const wxPoint& aPos, enum EDA_Colors aCo
* @param aV_justify = vertical justification (bottom, center, top)
*/
{
int
kk
,
nbchar
,
end
,
AsciiCode
;
int
kk
,
char_count
,
end
,
AsciiCode
;
int
k1
,
k2
,
x0
,
y0
,
ox
,
oy
;
int
size_h
,
size_v
,
espacement
;
SH_CODE
f_cod
,
plume
=
'U'
;
...
...
@@ -357,14 +369,14 @@ void PlotGraphicText( int aFormat_plot, const wxPoint& aPos, enum EDA_Colors aCo
ptr
=
0
;
/* ptr = text index */
/* calcul de la position du debut des textes: ox et oy */
nbchar
=
aText
.
Len
();
char_count
=
aText
.
Len
();
espacement
=
(
10
*
size_h
)
/
9
;
ox
=
cX
=
aPos
.
x
;
oy
=
cY
=
aPos
.
y
;
/* Calcul du cadrage du texte */
dx
=
(
espacement
*
nbchar
)
/
2
;
dx
=
(
espacement
*
char_count
)
/
2
;
dy
=
size_v
/
2
;
/* Decalage du debut du texte / centre */
ux0
=
uy0
=
0
;
/* Decalage du centre du texte / ccord de ref */
...
...
@@ -438,7 +450,7 @@ void PlotGraphicText( int aFormat_plot, const wxPoint& aPos, enum EDA_Colors aCo
FctPlume
(
wxPoint
(
0
,
0
),
'Z'
);
while
(
kk
++
<
nbchar
)
while
(
kk
++
<
char_count
)
{
#if defined(wxUSE_UNICODE) && defined(KICAD_CYRILLIC)
AsciiCode
=
aText
.
GetChar
(
ptr
)
&
0x7FF
;
...
...
@@ -474,6 +486,9 @@ void PlotGraphicText( int aFormat_plot, const wxPoint& aPos, enum EDA_Colors aCo
k2
=
f_cod
;
/* trace sur axe H */
k2
=
(
k2
*
size_h
)
/
9
;
// To simulate an italic font, add a x offset depending on the y offset
if
(
aItalic
)
k2
-=
k1
/
8
;
dx
=
k2
+
ox
;
dy
=
k1
+
oy
;
...
...
eeschema/class_hierarchical_PIN_sheet.cpp
View file @
beeaf53a
...
...
@@ -72,7 +72,7 @@ void Hierarchical_PIN_Sheet_Struct::Draw( WinEDA_DrawPanel* panel, wxDC* DC, con
/********************************************************************************************/
/* Routine de dessin des Labels type hierarchie */
{
int
side
;
GRTextHorizJustifyType
side
;
EDA_Colors
txtcolor
;
int
posx
,
tposx
,
posy
,
size2
;
wxSize
size
;
...
...
eeschema/class_sch_cmp_field.cpp
View file @
beeaf53a
...
...
@@ -53,36 +53,12 @@ void SCH_CMP_FIELD::SwapData( SCH_CMP_FIELD* copyitem )
EXCHG
(
m_Orient
,
copyitem
->
m_Orient
);
EXCHG
(
m_Miroir
,
copyitem
->
m_Miroir
);
EXCHG
(
m_Attributs
,
copyitem
->
m_Attributs
);
EXCHG
(
m_
CharType
,
copyitem
->
m_CharType
);
EXCHG
(
m_
Italic
,
copyitem
->
m_Italic
);
EXCHG
(
m_HJustify
,
copyitem
->
m_HJustify
);
EXCHG
(
m_VJustify
,
copyitem
->
m_VJustify
);
EXCHG
(
m_ZoomLevelDrawable
,
copyitem
->
m_ZoomLevelDrawable
);
EXCHG
(
m_TextDrawings
,
copyitem
->
m_TextDrawings
);
EXCHG
(
m_TextDrawingsSize
,
copyitem
->
m_TextDrawingsSize
);
}
#if 0
/***********************************************************/
void SCH_CMP_FIELD::PartTextCopy( SCH_CMP_FIELD* target )
/***********************************************************/
{
target->m_Text = m_Text;
if( m_FieldId >= FIELD1 )
target->m_Name = m_Name;
target->m_Layer = m_Layer;
target->m_Pos = m_Pos;
target->m_Size = m_Size;
target->m_Attributs = m_Attributs;
target->m_FieldId = m_FieldId;
target->m_Orient = m_Orient;
target->m_HJustify = m_HJustify;
target->m_VJustify = m_VJustify;
target->m_Flags = m_Flags;
}
#endif
/*********************************/
bool
SCH_CMP_FIELD
::
IsVoid
()
/*********************************/
...
...
@@ -92,8 +68,8 @@ bool SCH_CMP_FIELD::IsVoid()
*/
{
if
(
m_Text
.
IsEmpty
()
||
m_Text
==
wxT
(
"~"
)
)
return
TRUE
;
return
FALSE
;
return
true
;
return
false
;
}
...
...
@@ -142,7 +118,7 @@ EDA_Rect SCH_CMP_FIELD::GetBoundaryBox() const
y2
=
pos
.
y
+
(
DrawLibItem
->
m_Transform
[
1
][
0
]
*
x1
)
+
(
DrawLibItem
->
m_Transform
[
1
][
1
]
*
y1
);
/* If the component orientation is +/- 90 deg, the text orienation must be changed */
/* If the component orientation is +/- 90 deg, the text orien
t
ation must be changed */
if
(
DrawLibItem
->
m_Transform
[
0
][
1
]
)
{
if
(
orient
==
TEXT_ORIENT_HORIZ
)
...
...
@@ -206,7 +182,9 @@ EDA_Rect SCH_CMP_FIELD::GetBoundaryBox() const
}
/*********************************************/
bool
SCH_CMP_FIELD
::
Save
(
FILE
*
aFile
)
const
/*********************************************/
{
char
hjustify
=
'C'
;
if
(
m_HJustify
==
GR_TEXT_HJUSTIFY_LEFT
)
...
...
eeschema/class_sch_cmp_field.h
View file @
beeaf53a
...
...
@@ -44,7 +44,6 @@ public:
}
void
PartTextCopy
(
SCH_CMP_FIELD
*
target
);
void
Place
(
WinEDA_SchematicFrame
*
frame
,
wxDC
*
DC
);
EDA_Rect
GetBoundaryBox
()
const
;
...
...
eeschema/classes_body_items.h
View file @
beeaf53a
...
...
@@ -107,7 +107,7 @@ public:
EDA_LibComponentStruct
*
m_Entry
;
// Pointer to the component in lib
bool
m_DrawPinText
;
// Are pin texts drawn ?
DrawPinPrms
(
EDA_LibComponentStruct
*
entry
,
bool
drawpintext
=
true
)
DrawPinPrms
(
EDA_LibComponentStruct
*
entry
,
bool
drawpintext
=
true
)
{
m_Entry
=
entry
;
m_DrawPinText
=
drawpintext
;
...
...
@@ -158,7 +158,7 @@ public:
* @param aTransformMatrix = Transform Matrix (rotaion, mirror ..)
*/
virtual
void
Draw
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aOffset
,
int
aColor
,
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
)
=
0
;
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
)
=
0
;
/**
* Function Save
...
...
@@ -202,6 +202,7 @@ public:
return
wxT
(
"LibDrawPin"
);
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
...
...
@@ -220,7 +221,7 @@ public:
void
SetPinNumFromString
(
wxString
&
buffer
);
void
Draw
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aOffset
,
int
aColor
,
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
void
DrawPinSymbol
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
const
wxPoint
&
pin_pos
,
int
orient
,
...
...
@@ -253,6 +254,8 @@ public:
{
return
wxT
(
"LibDrawArc"
);
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
...
...
@@ -263,8 +266,9 @@ public:
LibDrawArc
*
GenCopy
();
void
Draw
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aOffset
,
int
aColor
,
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
};
/*****************************/
...
...
@@ -282,6 +286,8 @@ public:
{
return
wxT
(
"LibDrawCircle"
);
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
...
...
@@ -292,8 +298,9 @@ public:
LibDrawCircle
*
GenCopy
();
void
Draw
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aOffset
,
int
aColor
,
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
};
...
...
@@ -318,6 +325,8 @@ public:
{
return
wxT
(
"LibDrawText"
);
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
...
...
@@ -328,8 +337,9 @@ public:
LibDrawText
*
GenCopy
();
void
Draw
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aOffset
,
int
aColor
,
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
};
...
...
@@ -348,6 +358,8 @@ public:
{
return
wxT
(
"LibDrawSquare"
);
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
...
...
@@ -358,8 +370,9 @@ public:
LibDrawSquare
*
GenCopy
();
void
Draw
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aOffset
,
int
aColor
,
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
};
/**********************************/
...
...
@@ -377,6 +390,8 @@ public:
{
return
wxT
(
"LibDrawSegment"
);
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
...
...
@@ -387,8 +402,9 @@ public:
LibDrawSegment
*
GenCopy
();
void
Draw
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aOffset
,
int
aColor
,
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
};
/*********************************************/
...
...
@@ -414,6 +430,7 @@ public:
return
wxT
(
"LibDrawPolyline"
);
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
...
...
@@ -424,8 +441,9 @@ public:
LibDrawPolyline
*
GenCopy
();
void
AddPoint
(
const
wxPoint
&
point
);
void
Draw
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aOffset
,
int
aColor
,
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
};
...
...
@@ -450,7 +468,8 @@ public:
wxSize
m_Size
;
int
m_Orient
;
/* Orientation */
int
m_Attributs
;
/* Attributes (Non visible ...) */
int
m_HJustify
,
m_VJustify
;
/* Horiz and Vert Text Justifications */
enum
GRTextHorizJustifyType
m_HJustify
;
/* Horizontal Text Justify */
enum
GRTextVertJustifyType
m_VJustify
;
/* Vertical Text Justify */
wxString
m_Text
;
/* Field Data */
wxString
m_Name
;
/* Field Name */
...
...
@@ -466,6 +485,8 @@ public:
{
return
wxT
(
"LibDrawField"
);
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
...
...
@@ -477,8 +498,10 @@ public:
LibDrawField
*
GenCopy
();
void
Copy
(
LibDrawField
*
Target
);
void
Draw
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aOffset
,
int
aColor
,
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
int
aDrawMode
,
void
*
aData
,
int
aTransformMatrix
[
2
][
2
]
);
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
...
...
eeschema/edit_component_in_lib.cpp
View file @
beeaf53a
...
...
@@ -106,11 +106,11 @@ void WinEDA_PartPropertiesFrame::CopyBufferToFieldData( LibDrawField* Field )
* field "Field"
*/
{
int
hjustify
[
3
]
=
{
GRTextHorizJustifyType
hjustify
[
3
]
=
{
GR_TEXT_HJUSTIFY_LEFT
,
GR_TEXT_HJUSTIFY_CENTER
,
GR_TEXT_HJUSTIFY_RIGHT
};
int
vjustify
[
3
]
=
{
GRTextVertJustifyType
vjustify
[
3
]
=
{
GR_TEXT_VJUSTIFY_BOTTOM
,
GR_TEXT_VJUSTIFY_CENTER
,
GR_TEXT_VJUSTIFY_TOP
};
...
...
eeschema/eelibs_draw_components.cpp
View file @
beeaf53a
...
...
@@ -253,7 +253,8 @@ void SCH_CMP_FIELD::Draw( WinEDA_DrawPanel* panel,
EDA_Colors
color
;
wxPoint
pos
;
/* Position des textes */
SCH_COMPONENT
*
DrawLibItem
=
(
SCH_COMPONENT
*
)
m_Parent
;
int
hjustify
,
vjustify
;
GRTextHorizJustifyType
hjustify
;
GRTextVertJustifyType
vjustify
;
int
LineWidth
=
MAX
(
m_Width
,
g_DrawMinimunLineWidth
);
if
(
m_Attributs
&
TEXT_NO_VISIBLE
)
...
...
@@ -280,19 +281,61 @@ void SCH_CMP_FIELD::Draw( WinEDA_DrawPanel* panel,
else
orient
=
TEXT_ORIENT_HORIZ
;
/* Y a t-il rotation, miroir (pour les justifications)*/
EXCHG
(
hjustify
,
vjustify
);
GRTextHorizJustifyType
tmp
=
hjustify
;
hjustify
=
(
GRTextHorizJustifyType
)
vjustify
;
vjustify
=
(
GRTextVertJustifyType
)
tmp
;
if
(
DrawLibItem
->
m_Transform
[
1
][
0
]
<
0
)
vjustify
=
-
vjustify
;
switch
(
vjustify
)
{
case
GR_TEXT_VJUSTIFY_BOTTOM
:
vjustify
=
GR_TEXT_VJUSTIFY_TOP
;
break
;
case
GR_TEXT_VJUSTIFY_TOP
:
vjustify
=
GR_TEXT_VJUSTIFY_BOTTOM
;
break
;
default
:
break
;
}
if
(
DrawLibItem
->
m_Transform
[
1
][
0
]
>
0
)
hjustify
=
-
hjustify
;
switch
(
hjustify
)
{
case
GR_TEXT_HJUSTIFY_LEFT
:
hjustify
=
GR_TEXT_HJUSTIFY_RIGHT
;
break
;
case
GR_TEXT_HJUSTIFY_RIGHT
:
hjustify
=
GR_TEXT_HJUSTIFY_LEFT
;
break
;
default
:
break
;
}
}
else
{
/* Texte horizontal: Y a t-il miroir (pour les justifications)*/
if
(
DrawLibItem
->
m_Transform
[
0
][
0
]
<
0
)
hjustify
=
-
hjustify
;
switch
(
hjustify
)
{
case
GR_TEXT_HJUSTIFY_LEFT
:
hjustify
=
GR_TEXT_HJUSTIFY_RIGHT
;
break
;
case
GR_TEXT_HJUSTIFY_RIGHT
:
hjustify
=
GR_TEXT_HJUSTIFY_LEFT
;
break
;
default
:
break
;
}
if
(
DrawLibItem
->
m_Transform
[
1
][
1
]
>
0
)
vjustify
=
-
vjustify
;
switch
(
vjustify
)
{
case
GR_TEXT_VJUSTIFY_BOTTOM
:
vjustify
=
GR_TEXT_VJUSTIFY_TOP
;
break
;
case
GR_TEXT_VJUSTIFY_TOP
:
vjustify
=
GR_TEXT_VJUSTIFY_BOTTOM
;
break
;
default
:
break
;
}
}
if
(
m_FieldId
==
REFERENCE
)
...
...
@@ -309,9 +352,9 @@ void SCH_CMP_FIELD::Draw( WinEDA_DrawPanel* panel,
m_Size
,
hjustify
,
vjustify
,
LineWidth
);
}
else
//
Si il y a plusieurs parts par boitier, ajouter a la reference l'identification de la selection ( A, B ...
)
else
//
For more than one part per package, we must add the part selection to the reference
)
{
/*
On ajoute alors A ou B ... a la
reference */
/*
Adding A ou B ... or .1 .2 ... to the
reference */
wxString
fulltext
=
m_Text
;
#if defined(KICAD_GOST)
fulltext
.
Append
(
'.'
);
...
...
@@ -320,7 +363,7 @@ void SCH_CMP_FIELD::Draw( WinEDA_DrawPanel* panel,
fulltext
.
Append
(
'A'
-
1
+
DrawLibItem
->
m_Multi
);
#endif
DrawGraphicText
(
panel
,
DC
,
pos
,
color
,
fulltext
.
GetData
()
,
DrawGraphicText
(
panel
,
DC
,
pos
,
color
,
fulltext
,
orient
?
TEXT_ORIENT_VERT
:
TEXT_ORIENT_HORIZ
,
m_Size
,
hjustify
,
vjustify
,
LineWidth
);
...
...
eeschema/eelibs_read_libraryfiles.cpp
View file @
beeaf53a
...
...
@@ -871,7 +871,7 @@ GetLibEntryField (EDA_LibComponentStruct* LibEntry,
* ou n = 0 (REFERENCE), 1 (VALUE) , 2 .. 11 = autres champs, facultatifs
*/
{
int
posx
,
posy
,
size
,
orient
,
hjustify
,
vjustify
;
int
posx
,
posy
,
size
,
orient
;
bool
draw
;
char
*
Text
,
Char1
[
256
],
Char2
[
256
],
...
...
@@ -919,8 +919,8 @@ GetLibEntryField (EDA_LibComponentStruct* LibEntry,
draw
=
TRUE
;
if
(
Char2
[
0
]
==
'I'
)
draw
=
FALSE
;
hjustify
=
GR_TEXT_HJUSTIFY_CENTER
;
vjustify
=
GR_TEXT_VJUSTIFY_CENTER
;
GRTextHorizJustifyType
hjustify
=
GR_TEXT_HJUSTIFY_CENTER
;
GRTextVertJustifyType
vjustify
=
GR_TEXT_VJUSTIFY_CENTER
;
if
(
nbparam
>=
6
)
{
...
...
eeschema/load_one_schematic_file.cpp
View file @
beeaf53a
...
...
@@ -670,8 +670,8 @@ static int ReadPartDescr( wxWindow* frame, char* Line, FILE* f,
int
fieldNdx
;
char
FieldUserName
[
1024
];
int
hjustify
=
GR_TEXT_HJUSTIFY_CENTER
;
int
vjustify
=
GR_TEXT_VJUSTIFY_CENTER
;
GRTextHorizJustifyType
hjustify
=
GR_TEXT_HJUSTIFY_CENTER
;
GRTextVertJustifyType
vjustify
=
GR_TEXT_VJUSTIFY_CENTER
;
FieldUserName
[
0
]
=
0
;
...
...
eeschema/plot.cpp
View file @
beeaf53a
...
...
@@ -376,7 +376,6 @@ static void PlotTextField( SCH_COMPONENT* DrawLibItem,
{
wxPoint
textpos
;
/* Position des textes */
SCH_CMP_FIELD
*
field
=
DrawLibItem
->
GetField
(
FieldNumber
);
int
hjustify
,
vjustify
;
int
orient
;
EDA_Colors
color
=
UNSPECIFIED_COLOR
;
...
...
@@ -391,7 +390,8 @@ static void PlotTextField( SCH_COMPONENT* DrawLibItem,
/* Calcul de la position des textes, selon orientation du composant */
orient
=
field
->
m_Orient
;
hjustify
=
field
->
m_HJustify
;
vjustify
=
field
->
m_VJustify
;
GRTextHorizJustifyType
hjustify
=
field
->
m_HJustify
;
GRTextVertJustifyType
vjustify
=
field
->
m_VJustify
;
textpos
=
field
->
m_Pos
-
DrawLibItem
->
m_Pos
;
// textpos is the text position relative to the component anchor
textpos
=
TransformCoordinate
(
DrawLibItem
->
m_Transform
,
textpos
)
+
DrawLibItem
->
m_Pos
;
...
...
@@ -404,19 +404,62 @@ static void PlotTextField( SCH_COMPONENT* DrawLibItem,
else
orient
=
TEXT_ORIENT_HORIZ
;
/* Y a t-il rotation, miroir (pour les justifications)*/
EXCHG
(
hjustify
,
vjustify
);
GRTextHorizJustifyType
tmp
=
hjustify
;
hjustify
=
(
GRTextHorizJustifyType
)
vjustify
;
vjustify
=
(
GRTextVertJustifyType
)
tmp
;
if
(
DrawLibItem
->
m_Transform
[
1
][
0
]
<
0
)
vjustify
=
-
vjustify
;
switch
(
vjustify
)
{
case
GR_TEXT_VJUSTIFY_BOTTOM
:
vjustify
=
GR_TEXT_VJUSTIFY_TOP
;
break
;
case
GR_TEXT_VJUSTIFY_TOP
:
vjustify
=
GR_TEXT_VJUSTIFY_BOTTOM
;
break
;
default
:
break
;
}
if
(
DrawLibItem
->
m_Transform
[
1
][
0
]
>
0
)
hjustify
=
-
hjustify
;
switch
(
hjustify
)
{
case
GR_TEXT_HJUSTIFY_LEFT
:
hjustify
=
GR_TEXT_HJUSTIFY_RIGHT
;
break
;
case
GR_TEXT_HJUSTIFY_RIGHT
:
hjustify
=
GR_TEXT_HJUSTIFY_LEFT
;
break
;
default
:
break
;
}
}
else
{
/* Texte horizontal: Y a t-il miroir (pour les justifications)*/
if
(
DrawLibItem
->
m_Transform
[
0
][
0
]
<
0
)
hjustify
=
-
hjustify
;
switch
(
hjustify
)
{
case
GR_TEXT_HJUSTIFY_LEFT
:
hjustify
=
GR_TEXT_HJUSTIFY_RIGHT
;
break
;
case
GR_TEXT_HJUSTIFY_RIGHT
:
hjustify
=
GR_TEXT_HJUSTIFY_LEFT
;
break
;
default
:
break
;
}
if
(
DrawLibItem
->
m_Transform
[
1
][
1
]
>
0
)
vjustify
=
-
vjustify
;
switch
(
vjustify
)
{
case
GR_TEXT_VJUSTIFY_BOTTOM
:
vjustify
=
GR_TEXT_VJUSTIFY_TOP
;
break
;
case
GR_TEXT_VJUSTIFY_TOP
:
vjustify
=
GR_TEXT_VJUSTIFY_BOTTOM
;
break
;
default
:
break
;
}
}
SetCurrentLineWidth
(
-
1
);
...
...
@@ -686,7 +729,6 @@ static void PlotSheetLabelStruct( Hierarchical_PIN_Sheet_Struct* Struct )
/***********************************************************************/
/* Routine de dessin des Sheet Labels type hierarchie */
{
int
side
;
EDA_Colors
txtcolor
=
UNSPECIFIED_COLOR
;
int
posx
,
tposx
,
posy
,
size
,
size2
;
int
coord
[
16
];
...
...
@@ -695,6 +737,7 @@ static void PlotSheetLabelStruct( Hierarchical_PIN_Sheet_Struct* Struct )
txtcolor
=
ReturnLayerColor
(
Struct
->
GetLayer
()
);
posx
=
Struct
->
m_Pos
.
x
;
posy
=
Struct
->
m_Pos
.
y
;
size
=
Struct
->
m_Size
.
x
;
GRTextHorizJustifyType
side
;
if
(
Struct
->
m_Edge
)
{
tposx
=
posx
-
size
;
...
...
include/base_struct.h
View file @
beeaf53a
...
...
@@ -5,6 +5,7 @@
#ifndef BASE_STRUCT_H
#define BASE_STRUCT_H
#include "colors.h"
#if defined (DEBUG)
#include <iostream> // needed for Show()
...
...
@@ -127,7 +128,6 @@ public:
};
/**
* Class EDA_Rect
* handles the component boundary box.
...
...
@@ -144,8 +144,9 @@ public:
EDA_Rect
()
{
};
EDA_Rect
(
const
wxPoint
&
aPos
,
const
wxSize
&
aSize
)
:
m_Pos
(
aPos
),
m_Size
(
aSize
)
{}
m_Pos
(
aPos
)
,
m_Size
(
aSize
)
{
}
wxPoint
Centre
()
{
...
...
@@ -182,6 +183,7 @@ public:
m_Size
.
x
=
pos
.
x
-
m_Pos
.
x
;
m_Size
.
y
=
pos
.
y
-
m_Pos
.
y
;
}
/**
* Function Intersects
* @return bool - true if the argument rectangle intersects this rectangle.
...
...
@@ -202,8 +204,7 @@ public:
* mainly used to calculate bounding boxes
* @param aRect = given rect to merge with this
*/
void
Merge
(
const
EDA_Rect
&
aRect
);
void
Merge
(
const
EDA_Rect
&
aRect
);
};
...
...
@@ -320,6 +321,7 @@ public:
m_Status
=
new_status
;
}
/**
* Function Display_Infos
* has knowledge about the frame and how and where to put status information
...
...
@@ -343,6 +345,7 @@ public:
return
false
;
// derived classes should override this function
}
/**
* Function HitTest (overlayed)
* tests if the given EDA_Rect intersect this object.
...
...
@@ -355,6 +358,7 @@ public:
return
false
;
// derived classes should override this function
}
/**
* Function GetBoundingBox
* returns the orthogonal, bounding box of this object for display purposes.
...
...
@@ -365,14 +369,16 @@ public:
virtual
EDA_Rect
GetBoundingBox
()
{
#if defined (DEBUG)
printf
(
"Missing GetBoundingBox()
\n
"
);
printf
(
"Missing GetBoundingBox()
\n
"
);
Show
(
0
,
std
::
cout
);
// tell me which classes still need GetBoundingBox support
#endif
// return a zero-sized box per default. derived classes should override this
EDA_Rect
ret
(
wxPoint
(
0
,
0
),
wxSize
(
0
,
0
)
);
return
ret
;
}
/**
* Function IterateForward
* walks through the object tree calling the inspector() on each object
...
...
@@ -449,26 +455,27 @@ public:
};
// Text justify:
//
Graphic
Text justify:
// Values -1,0,1 are used in computations, do not change them
typedef
enum
{
enum
GRTextHorizJustifyType
{
GR_TEXT_HJUSTIFY_LEFT
=
-
1
,
GR_TEXT_HJUSTIFY_CENTER
=
0
,
GR_TEXT_HJUSTIFY_RIGHT
=
1
}
GRTextHorizJustifyType
;
};
typedef
enum
{
enum
GRTextVertJustifyType
{
GR_TEXT_VJUSTIFY_TOP
=
-
1
,
GR_TEXT_VJUSTIFY_CENTER
=
0
,
GR_TEXT_VJUSTIFY_BOTTOM
=
1
}
GRTextVertJustifyType
;
};
/* controle des remplissages a l'ecran (Segments textes...)*/
#define FILAIRE 0
#define FILLED 1
#define SKETCH 2
/* Options to show solid segments (segments, texts...) */
enum
GRFillMode
{
FILAIRE
=
0
,
// segments are drawn as lines
FILLED
,
// normal mode: segments have thickness
SKETCH
// skect mode: segments have thickness, but are not filled
};
#define DEFAULT_SIZE_TEXT 60
/* default text height (in mils or 1/1000") */
...
...
@@ -489,18 +496,13 @@ public:
int
m_Orient
;
/* Orient in 0.1 degrees */
int
m_Miroir
;
// Display Normal / mirror
int
m_Attributs
;
/* flags (visible...) */
int
m_CharType
;
/* normal, bold, italic ... */
int
m_HJustify
,
m_VJustify
;
/* Horiz and Vert Justifications */
int
m_ZoomLevelDrawable
;
/* zoom level to draw text.
* if zoom < m_ZoomLevelDrawable: the text is drawn as a single line
*/
int
*
m_TextDrawings
;
/* list of segments to draw, for the Draw function */
int
m_TextDrawingsSize
;
/* segment count */
bool
m_Italic
;
/* true to simulate an italic font... */
GRTextHorizJustifyType
m_HJustify
;
/* Horiz Justify */
GRTextVertJustifyType
m_VJustify
;
/* Vertical and Vert Justify */
public
:
EDA_TextStruct
(
const
wxString
&
text
=
wxEmptyString
);
virtual
~
EDA_TextStruct
();
void
CreateDrawData
();
int
GetLength
()
const
{
return
m_Text
.
Length
();
};
...
...
@@ -510,9 +512,19 @@ public:
*/
int
Pitch
();
void
Draw
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
const
wxPoint
&
offset
,
int
color
,
int
draw_mode
,
int
display_mode
=
FILAIRE
,
int
anchor_color
=
-
1
);
/** Function Draw
* @param aPanel = the current DrawPanel
* @param aDC = the current Device Context
* @param aOffset = draw offset (usually (0,0))
* @param EDA_Colors aColor = text color
* @param aDraw_mode = GR_OR, GR_XOR.., -1 to use the current mode.
* @param GRFillMode aDisplay_mode = FILAIRE, FILLED or SKETCH
* @param EDA_Colors aAnchor_color = anchor color ( UNSPECIFIED_COLOR = do not draw anchor ).
*/
void
Draw
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aOffset
,
EDA_Colors
aColor
,
int
aDisplayMode
,
GRFillMode
aDisplay_mode
=
FILAIRE
,
EDA_Colors
aAnchor_color
=
UNSPECIFIED_COLOR
);
/**
* Function HitTest
...
...
include/common.h
View file @
beeaf53a
...
...
@@ -439,10 +439,17 @@ double round( double aNumber );
* @param aV_justify = vertical justification (bottom, center, top)
* @param aWidth = line width (pen width) (default = 0)
* if width < 0 : draw segments in sketch mode, width = abs(width)
* @param aItalic = true to simulate an italic font
* @param aCallback() = function called (if non null) to draw each segment.
* used only to draw 3D texts
*/
void
DrawGraphicText
(
WinEDA_DrawPanel
*
aPanel
,
wxDC
*
aDC
,
const
wxPoint
&
aPos
,
enum
EDA_Colors
aColor
,
const
wxString
&
aText
,
int
aOrient
,
const
wxSize
&
aSize
,
int
aH_justify
,
int
aV_justify
,
int
aWidth
=
0
);
int
aOrient
,
const
wxSize
&
aSize
,
enum
GRTextHorizJustifyType
aH_justify
,
enum
GRTextVertJustifyType
aV_justify
,
int
aWidth
=
0
,
bool
aItalic
=
false
,
void
(
*
aCallback
)(
int
x0
,
int
y0
,
int
xf
,
int
yf
)
=
NULL
);
/** Function PlotGraphicText
* same as DrawGraphicText, but plot graphic text insteed of draw it
...
...
@@ -454,10 +461,14 @@ void DrawGraphicText( WinEDA_DrawPanel* aPanel, wxDC* aDC,
* @param aSize = text size (size.x or size.y can be < 0 for mirrored texts)
* @param aH_justify = horizontal justification (Left, center, right)
* @param aV_justify = vertical justification (bottom, center, top)
* @param aItalic = true to simulate an italic font
*/
void
PlotGraphicText
(
int
aFormat_plot
,
const
wxPoint
&
aPos
,
enum
EDA_Colors
aColor
,
const
wxString
&
aText
,
int
aOrient
,
const
wxSize
&
aSize
,
int
aH_justify
,
int
aV_justify
);
int
aOrient
,
const
wxSize
&
aSize
,
enum
GRTextHorizJustifyType
aH_justify
,
enum
GRTextVertJustifyType
aV_justify
,
bool
aItalic
=
false
);
/***************/
/* CONFIRM.CPP */
...
...
pcbnew/block.cpp
View file @
beeaf53a
...
...
@@ -710,8 +710,6 @@ void WinEDA_BasePcbFrame::Block_Rotate( wxDC* DC )
STRUCT
->
m_Orient
+=
900
;
if
(
STRUCT
->
m_Orient
>=
3600
)
STRUCT
->
m_Orient
-=
3600
;
STRUCT
->
CreateDrawData
();
break
;
case
TYPE_MIRE
:
...
...
@@ -896,7 +894,6 @@ void WinEDA_BasePcbFrame::Block_Invert( wxDC* DC )
STRUCT
->
m_Miroir
^=
1
;
/* inverse miroir */
}
STRUCT
->
SetLayer
(
ChangeSideNumLayer
(
STRUCT
->
GetLayer
()
)
);
STRUCT
->
CreateDrawData
();
break
;
case
TYPE_MIRE
:
...
...
pcbnew/class_pcb_text.cpp
View file @
beeaf53a
...
...
@@ -40,7 +40,7 @@ void TEXTE_PCB::Copy( TEXTE_PCB* source )
m_Layer
=
source
->
m_Layer
;
m_Width
=
source
->
m_Width
;
m_Attributs
=
source
->
m_Attributs
;
m_
CharType
=
source
->
m_CharType
;
m_
Italic
=
source
->
m_Italic
;
m_HJustify
=
source
->
m_HJustify
;
m_VJustify
=
source
->
m_VJustify
;
...
...
@@ -135,9 +135,9 @@ void TEXTE_PCB::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
if
(
color
&
ITEM_NOT_SHOW
)
return
;
EDA_TextStruct
::
Draw
(
panel
,
DC
,
offset
,
color
,
DrawMode
,
DisplayOpt
.
DisplayDrawItems
,
(
g_AnchorColor
&
ITEM_NOT_SHOW
)
?
-
1
:
(
g_AnchorColor
&
MASKCOLOR
)
);
EDA_TextStruct
::
Draw
(
panel
,
DC
,
offset
,
(
EDA_Colors
)
color
,
DrawMode
,
(
GRFillMode
)
DisplayOpt
.
DisplayDrawItems
,
(
g_AnchorColor
&
ITEM_NOT_SHOW
)
?
UNSPECIFIED_COLOR
:
(
EDA_Colors
)
g_AnchorColor
);
}
...
...
pcbnew/class_track.cpp
View file @
beeaf53a
...
...
@@ -635,6 +635,49 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoin
m_End
.
x
,
m_End
.
y
,
m_Width
+
(
g_DesignSettings
.
m_TrackClearence
*
2
),
color
);
}
/* Display the short netname:
* we must filter tracks, to avoid a lot of texts.
* - only horizontal or vertical tracks are eligible
* - only tracks with a length > 10 * thickness are eligible
*/
#define THRESHOLD 10
if
(
(
m_End
.
x
-
m_Start
.
x
)
!=
0
&&
(
m_End
.
y
-
m_Start
.
y
)
!=
0
)
return
;
int
len
=
ABS
(
(
m_End
.
x
-
m_Start
.
x
)
+
(
m_End
.
y
-
m_Start
.
y
)
);
if
(
len
<
THRESHOLD
*
m_Width
)
return
;
if
(
GetNet
()
==
0
)
return
;
EQUIPOT
*
net
=
(
(
BOARD
*
)
GetParent
()
)
->
FindNet
(
GetNet
()
);
if
(
net
==
NULL
)
return
;
int
textlen
=
net
->
GetShortNetname
().
Len
();
if
(
textlen
>
0
)
{
// calculate a good size for the text
int
tsize
=
MIN
(
m_Width
,
len
/
textlen
);
wxPoint
tpos
=
m_Start
+
m_End
;
tpos
.
x
/=
2
;
tpos
.
y
/=
2
;
// Calculate angle: if the track segment is vertical, angle = 90 degrees
int
angle
=
0
;
if
(
(
m_End
.
x
-
m_Start
.
x
)
==
0
)
// Vertical segment
angle
=
900
;
// angle is in 0.1 degree
if
(
(
tsize
/
zoom
)
>=
6
)
{
tsize
=
(
tsize
*
8
)
/
10
;
// small reduction to give a better look
DrawGraphicText
(
panel
,
DC
,
tpos
,
WHITE
,
net
->
GetShortNetname
(),
angle
,
wxSize
(
tsize
,
tsize
),
GR_TEXT_HJUSTIFY_CENTER
,
GR_TEXT_VJUSTIFY_CENTER
,
tsize
/
7
);
}
}
}
...
...
@@ -768,12 +811,12 @@ void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoi
// Display the short netname:
if
(
GetNet
()
==
0
)
return
;
EQUIPOT
*
net
=
(
(
BOARD
*
)
GetParent
()
)
->
FindNet
(
GetNet
()
);
EQUIPOT
*
net
=
(
(
BOARD
*
)
GetParent
()
)
->
FindNet
(
GetNet
()
);
if
(
net
==
NULL
)
return
;
int
len
=
net
->
GetShortNetname
().
Len
();
if
(
len
>
0
)
if
(
len
>
0
)
{
// calculate a good size for the text
int
tsize
=
m_Width
/
len
;
...
...
pcbnew/cotation.cpp
View file @
beeaf53a
...
...
@@ -178,8 +178,6 @@ void WinEDA_CotationPropertiesFrame::OnOkClick( wxCommandEvent& event )
CurrentCotation
->
SetLayer
(
m_SelLayerBox
->
GetChoice
()
+
FIRST_NO_COPPER_LAYER
);
CurrentCotation
->
m_Text
->
SetLayer
(
m_SelLayerBox
->
GetChoice
()
+
FIRST_NO_COPPER_LAYER
);
CurrentCotation
->
m_Text
->
CreateDrawData
();
if
(
m_DC
)
// Affichage nouveau texte
{
/* Redessin du Texte */
...
...
@@ -482,5 +480,4 @@ static void Ajuste_Details_Cotation( COTATION* Cotation )
Cotation
->
m_Value
=
mesure
;
valeur_param
(
Cotation
->
m_Value
,
msg
);
Cotation
->
SetText
(
msg
);
Cotation
->
m_Text
->
CreateDrawData
();
}
pcbnew/pcbtexte.cpp
View file @
beeaf53a
...
...
@@ -233,7 +233,6 @@ void WinEDA_TextPCBPropertiesFrame::OnOkClick( wxCommandEvent& event )
CurrentTextPCB
->
m_Miroir
=
(
m_Mirror
->
GetSelection
()
==
0
)
?
1
:
0
;
CurrentTextPCB
->
m_Orient
=
m_Orient
->
GetSelection
()
*
900
;
CurrentTextPCB
->
SetLayer
(
m_SelLayerBox
->
GetChoice
()
);
CurrentTextPCB
->
CreateDrawData
();
if
(
m_DC
)
// Affichage nouveau texte
{
...
...
@@ -283,7 +282,6 @@ void WinEDA_PcbFrame::Place_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC )
if
(
TextePcb
==
NULL
)
return
;
TextePcb
->
CreateDrawData
();
TextePcb
->
Draw
(
DrawPanel
,
DC
,
GR_OR
);
DrawPanel
->
ManageCurseur
=
NULL
;
DrawPanel
->
ForceCloseManageCurseur
=
NULL
;
...
...
@@ -407,8 +405,6 @@ void WinEDA_PcbFrame::Rotate_Texte_Pcb( TEXTE_PCB* TextePcb, wxDC* DC )
if
(
TextePcb
->
m_Orient
<
0
)
TextePcb
->
m_Orient
+=
3600
;
TextePcb
->
CreateDrawData
();
/* Redessin du Texte */
TextePcb
->
Draw
(
DrawPanel
,
DC
,
drawmode
);
TextePcb
->
Display_Infos
(
this
);
...
...
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