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
aba115f0
Commit
aba115f0
authored
Oct 03, 2007
by
dickelbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
improved pcbnew marker support
parent
d985f2d6
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
257 additions
and
172 deletions
+257
-172
change_log.txt
change_log.txt
+3
-0
base_screen.cpp
common/base_screen.cpp
+1
-0
msgpanel.cpp
common/msgpanel.cpp
+92
-91
hotkeys.cpp
eeschema/hotkeys.cpp
+1
-1
pcbstruct.h
include/pcbstruct.h
+17
-0
class_board_item.cpp
pcbnew/class_board_item.cpp
+1
-1
class_track.cpp
pcbnew/class_track.cpp
+2
-1
classpcb.cpp
pcbnew/classpcb.cpp
+30
-0
collectors.cpp
pcbnew/collectors.cpp
+6
-0
cursors.cpp
pcbnew/cursors.cpp
+51
-47
drc.cpp
pcbnew/drc.cpp
+17
-9
find.cpp
pcbnew/find.cpp
+29
-22
drawframe.cpp
share/drawframe.cpp
+2
-0
todo.txt
todo.txt
+5
-0
No files found.
change_log.txt
View file @
aba115f0
...
@@ -13,6 +13,9 @@ email address.
...
@@ -13,6 +13,9 @@ email address.
added EDA_BaseStruct::DeleteStructList()
added EDA_BaseStruct::DeleteStructList()
deleted gerbview/struct.cpp, pcbnew/struct.cpp,
deleted gerbview/struct.cpp, pcbnew/struct.cpp,
BOARD::~BOARD() now deletes objects that it owns.
BOARD::~BOARD() now deletes objects that it owns.
Collectors now finds MARQUEURs also
added MARQUEURS::Display_Infos()
added MARQUEURS::HitTest()
2007-Oct-2 UPDATE Dick Hollenbeck <dick@softplc.com>
2007-Oct-2 UPDATE Dick Hollenbeck <dick@softplc.com>
...
...
common/base_screen.cpp
View file @
aba115f0
...
@@ -190,6 +190,7 @@ void BASE_SCREEN::SetZoomList( int* zoomlist )
...
@@ -190,6 +190,7 @@ void BASE_SCREEN::SetZoomList( int* zoomlist )
// Init liste
// Init liste
if
(
m_ZoomList
)
if
(
m_ZoomList
)
free
(
m_ZoomList
);
free
(
m_ZoomList
);
m_ZoomList
=
(
int
*
)
MyZMalloc
(
nbitems
*
sizeof
(
int
)
);
m_ZoomList
=
(
int
*
)
MyZMalloc
(
nbitems
*
sizeof
(
int
)
);
for
(
ii
=
0
,
zoom
=
zoomlist
;
ii
<
nbitems
;
zoom
++
,
ii
++
)
for
(
ii
=
0
,
zoom
=
zoomlist
;
ii
<
nbitems
;
zoom
++
,
ii
++
)
...
...
common/msgpanel.cpp
View file @
aba115f0
/******************************************************************/
/******************************************************************/
/* msgpanel.cpp - fonctions des classes du type WinEDA_MsgPanel */
/* msgpanel.cpp - fonctions des classes du type WinEDA_MsgPanel */
/******************************************************************/
/******************************************************************/
#ifdef __GNUG__
#ifdef __GNUG__
#pragma implementation
#pragma implementation
...
@@ -14,131 +14,132 @@
...
@@ -14,131 +14,132 @@
#include "common.h"
#include "common.h"
/* table des evenements captes par un WinEDA_MsgPanel */
/* table des evenements captes par un WinEDA_MsgPanel */
BEGIN_EVENT_TABLE
(
WinEDA_MsgPanel
,
wxPanel
)
BEGIN_EVENT_TABLE
(
WinEDA_MsgPanel
,
wxPanel
)
EVT_PAINT
(
WinEDA_MsgPanel
::
OnPaint
)
EVT_PAINT
(
WinEDA_MsgPanel
::
OnPaint
)
END_EVENT_TABLE
()
END_EVENT_TABLE
()
/***********************************************************/
/* Fonctions de base de WinEDA_MsgPanel: l'ecran de messages */
/***********************************************************/
/***********************************************************/
WinEDA_MsgPanel
::
WinEDA_MsgPanel
(
WinEDA_DrawFrame
*
parent
,
int
id
,
/* Fonctions de base de WinEDA_MsgPanel: l'ecran de messages */
const
wxPoint
&
pos
,
const
wxSize
&
size
)
:
/***********************************************************/
wxPanel
(
parent
,
id
,
pos
,
size
)
WinEDA_MsgPanel
::
WinEDA_MsgPanel
(
WinEDA_DrawFrame
*
parent
,
int
id
,
const
wxPoint
&
pos
,
const
wxSize
&
size
)
:
wxPanel
(
parent
,
id
,
pos
,
size
)
{
{
m_Parent
=
parent
;
m_Parent
=
parent
;
SetFont
(
*
g_MsgFont
);
SetFont
(
*
g_MsgFont
);
}
}
WinEDA_MsgPanel
::~
WinEDA_MsgPanel
()
WinEDA_MsgPanel
::~
WinEDA_MsgPanel
()
{
{
}
}
/*************************************************/
/*************************************************/
void
WinEDA_MsgPanel
::
OnPaint
(
wxPaintEvent
&
event
)
void
WinEDA_MsgPanel
::
OnPaint
(
wxPaintEvent
&
event
)
/*************************************************/
/*************************************************/
{
{
wxPaintDC
dc
(
this
);
wxPaintDC
dc
(
this
);
EraseMsgBox
(
&
dc
);
event
.
Skip
();
EraseMsgBox
(
&
dc
);
event
.
Skip
();
}
}
/*****************************************************************************/
/*****************************************************************************/
void
WinEDA_MsgPanel
::
Affiche_1_Parametre
(
int
pos_X
,
const
wxString
&
texte_H
,
void
WinEDA_MsgPanel
::
Affiche_1_Parametre
(
int
pos_X
,
const
wxString
&
texte_H
,
const
wxString
&
texte_L
,
int
color
)
const
wxString
&
texte_L
,
int
color
)
/*****************************************************************************/
/*****************************************************************************/
/*
/*
Routine d'affichage d'un parametre.
*
Routine d'affichage d'un parametre.
pos_X = cadrage horizontal
*
pos_X = cadrage horizontal
si pos_X < 0 : la position horizontale est la derniere
*
si pos_X < 0 : la position horizontale est la derniere
valeur demandee >= 0
*
valeur demandee >= 0
texte_H = texte a afficher en ligne superieure.
*
texte_H = texte a afficher en ligne superieure.
si "", par d'affichage sur cette ligne
*
si "", par d'affichage sur cette ligne
texte_L = texte a afficher en ligne inferieure.
*
texte_L = texte a afficher en ligne inferieure.
si "", par d'affichage sur cette ligne
*
si "", par d'affichage sur cette ligne
color = couleur d'affichage
*
color = couleur d'affichage
*/
*/
{
{
static
int
old_pos_X
;
static
int
old_pos_X
;
wxPoint
pos
;
wxPoint
pos
;
wxSize
FontSizeInPixels
,
DrawSize
;
wxSize
FontSizeInPixels
,
DrawSize
;
wxClientDC
dc
(
this
);
wxClientDC
dc
(
this
);
DrawSize
=
GetClientSize
();
DrawSize
=
GetClientSize
();
dc
.
SetBackground
(
*
wxBLACK_BRUSH
);
dc
.
SetBackgroundMode
(
wxSOLID
);
dc
.
SetBackground
(
*
wxBLACK_BRUSH
);
dc
.
SetBackgroundMode
(
wxSOLID
);
// dc.SetBackgroundMode(wxTRANSPARENT);
// dc.SetBackgroundMode(wxTRANSPARENT);
dc
.
SetTextBackground
(
GetBackgroundColour
());
dc
.
SetTextBackground
(
GetBackgroundColour
()
);
dc
.
SetFont
(
*
g_MsgFont
);
dc
.
SetFont
(
*
g_MsgFont
);
dc
.
GetTextExtent
(
wxT
(
"W"
),
&
FontSizeInPixels
.
x
,
&
FontSizeInPixels
.
y
);
dc
.
GetTextExtent
(
wxT
(
"W"
),
&
FontSizeInPixels
.
x
,
&
FontSizeInPixels
.
y
);
if
(
color
>=
0
)
if
(
color
>=
0
)
{
{
color
&=
MASKCOLOR
;
color
&=
MASKCOLOR
;
dc
.
SetTextForeground
(
wxColour
(
dc
.
SetTextForeground
(
wxColour
(
ColorRefs
[
color
].
m_Red
,
ColorRefs
[
color
].
m_Green
,
ColorRefs
[
color
].
m_Red
,
ColorRefs
[
color
].
m_Green
,
ColorRefs
[
color
].
m_Blue
)
);
ColorRefs
[
color
].
m_Blue
)
);
}
}
if
(
pos_X
>=
0
)
if
(
pos_X
>=
0
)
{
{
old_pos_X
=
pos
.
x
=
pos_X
*
(
FontSizeInPixels
.
x
+
2
);
old_pos_X
=
pos
.
x
=
pos_X
*
(
FontSizeInPixels
.
x
+
2
);
}
}
else
pos
.
x
=
old_pos_X
;
else
pos
.
x
=
old_pos_X
;
if
(
!
texte_H
.
IsEmpty
())
if
(
!
texte_H
.
IsEmpty
()
)
{
{
pos
.
y
=
(
DrawSize
.
y
/
2
)
-
FontSizeInPixels
.
y
;;
pos
.
y
=
(
DrawSize
.
y
/
2
)
-
FontSizeInPixels
.
y
;;
dc
.
DrawText
(
texte_H
.
GetData
(),
pos
.
x
,
pos
.
y
);
dc
.
DrawText
(
texte_H
.
GetData
(),
pos
.
x
,
pos
.
y
);
}
}
if
(
!
texte_L
.
IsEmpty
())
{
if
(
!
texte_L
.
IsEmpty
()
)
pos
.
y
=
DrawSize
.
y
-
FontSizeInPixels
.
y
;
{
dc
.
DrawText
(
texte_L
.
GetData
(),
pos
.
x
,
pos
.
y
);
pos
.
y
=
DrawSize
.
y
-
FontSizeInPixels
.
y
;
}
dc
.
DrawText
(
texte_L
.
GetData
(),
pos
.
x
,
pos
.
y
);
}
}
}
/****************************************/
/****************************************/
void
WinEDA_MsgPanel
::
EraseMsgBox
()
void
WinEDA_MsgPanel
::
EraseMsgBox
()
/****************************************/
/****************************************/
/* Effacement de la fenetre d'affichage des messages de bas d'ecran
/* Effacement de la fenetre d'affichage des messages de bas d'ecran
*/
*/
{
{
wxClientDC
dc
(
this
);
wxClientDC
dc
(
this
);
EraseMsgBox
(
&
dc
);
EraseMsgBox
(
&
dc
);
}
}
/*******************************************/
/*******************************************/
void
WinEDA_MsgPanel
::
EraseMsgBox
(
wxDC
*
DC
)
void
WinEDA_MsgPanel
::
EraseMsgBox
(
wxDC
*
DC
)
/*******************************************/
/*******************************************/
{
{
wxSize
size
;
wxSize
size
;
wxColor
color
;
wxColor
color
;
wxPen
pen
;
wxPen
pen
;
wxBrush
brush
;
wxBrush
brush
;
size
=
GetClientSize
();
size
=
GetClientSize
();
color
=
GetBackgroundColour
();
color
=
GetBackgroundColour
();
pen
.
SetColour
(
color
);
pen
.
SetColour
(
color
);
brush
.
SetColour
(
color
);
brush
.
SetColour
(
color
);
brush
.
SetStyle
(
wxSOLID
);
brush
.
SetStyle
(
wxSOLID
);
DC
->
SetPen
(
pen
);
DC
->
SetPen
(
pen
);
DC
->
SetBrush
(
brush
);
DC
->
SetBrush
(
brush
);
DC
->
DrawRectangle
(
0
,
0
,
size
.
x
,
size
.
y
);
DC
->
DrawRectangle
(
0
,
0
,
size
.
x
,
size
.
y
);
DC
->
SetBrush
(
wxNullBrush
);
DC
->
SetBrush
(
wxNullBrush
);
DC
->
SetPen
(
wxNullPen
);
DC
->
SetPen
(
wxNullPen
);
}
}
eeschema/hotkeys.cpp
View file @
aba115f0
...
@@ -225,7 +225,7 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey,
...
@@ -225,7 +225,7 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey,
case
HK_NEXT_SEARCH
:
case
HK_NEXT_SEARCH
:
if
(
ItemInEdit
)
if
(
ItemInEdit
)
break
;
break
;
if
(
g_LastSearchIsMarker
)
if
(
g_LastSearchIsMarker
)
WinEDA_SchematicFrame
::
FindMarker
(
1
);
WinEDA_SchematicFrame
::
FindMarker
(
1
);
else
else
FindSchematicItem
(
wxEmptyString
,
2
);
FindSchematicItem
(
wxEmptyString
,
2
);
...
...
include/pcbstruct.h
View file @
aba115f0
...
@@ -448,6 +448,23 @@ public:
...
@@ -448,6 +448,23 @@ public:
~
MARQUEUR
();
~
MARQUEUR
();
void
UnLink
();
void
UnLink
();
void
Draw
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
int
DrawMode
);
void
Draw
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
int
DrawMode
);
/**
* Function Display_Infos
* has knowledge about the frame and how and where to put status information
* about this object into the frame's message panel.
* @param frame A WinEDA_DrawFrame in which to print status information.
*/
void
Display_Infos
(
WinEDA_DrawFrame
*
frame
);
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
* @param ref_pos A wxPoint to test
* @return bool - true if a hit, else false
*/
bool
HitTest
(
const
wxPoint
&
ref_pos
);
};
};
...
...
pcbnew/class_board_item.cpp
View file @
aba115f0
...
@@ -179,7 +179,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
...
@@ -179,7 +179,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
break
;
break
;
case
TYPEMARQUEUR
:
case
TYPEMARQUEUR
:
text
<<
_
(
"Marker"
);
text
<<
_
(
"Marker"
)
<<
wxT
(
" @("
)
<<
((
MARQUEUR
*
)
item
)
->
m_Pos
.
x
<<
wxT
(
","
)
<<
((
MARQUEUR
*
)
item
)
->
m_Pos
.
y
<<
wxT
(
")"
)
;
break
;
break
;
case
TYPECOTATION
:
case
TYPECOTATION
:
...
...
pcbnew/class_track.cpp
View file @
aba115f0
...
@@ -681,7 +681,7 @@ void TRACK::Display_Infos( WinEDA_DrawFrame* frame )
...
@@ -681,7 +681,7 @@ void TRACK::Display_Infos( WinEDA_DrawFrame* frame )
switch
(
Type
()
)
switch
(
Type
()
)
{
{
case
TYPEVIA
:
case
TYPEVIA
:
msg
=
g_ViaType_Name
[
m_Shape
&
255
];
msg
=
g_ViaType_Name
[
Shape
()
];
break
;
break
;
case
TYPETRACK
:
case
TYPETRACK
:
...
@@ -764,6 +764,7 @@ void TRACK::Display_Infos( WinEDA_DrawFrame* frame )
...
@@ -764,6 +764,7 @@ void TRACK::Display_Infos( WinEDA_DrawFrame* frame )
int
drill_value
=
m_Drill
>=
0
?
int
drill_value
=
m_Drill
>=
0
?
m_Drill
:
g_DesignSettings
.
m_ViaDrill
;
m_Drill
:
g_DesignSettings
.
m_ViaDrill
;
valeur_param
(
(
unsigned
)
drill_value
,
msg
);
valeur_param
(
(
unsigned
)
drill_value
,
msg
);
text_pos
+=
8
;
text_pos
+=
8
;
...
...
pcbnew/classpcb.cpp
View file @
aba115f0
...
@@ -303,6 +303,36 @@ void MARQUEUR::UnLink()
...
@@ -303,6 +303,36 @@ void MARQUEUR::UnLink()
}
}
void
MARQUEUR
::
Display_Infos
(
WinEDA_DrawFrame
*
frame
)
{
int
text_pos
;
frame
->
MsgPanel
->
EraseMsgBox
();
text_pos
=
1
;
Affiche_1_Parametre
(
frame
,
text_pos
,
_
(
"Type"
),
_
(
"Marker"
),
DARKCYAN
);
text_pos
=
12
;
Affiche_1_Parametre
(
frame
,
text_pos
,
_
(
"Marker Error Text"
),
m_Diag
,
RED
);
}
bool
MARQUEUR
::
HitTest
(
const
wxPoint
&
refPos
)
{
// currently the MARKER is about 14 pixels by 14 pixels
int
xCenter
=
m_Pos
.
x
+
7
;
int
yCenter
=
m_Pos
.
y
+
7
;
int
dx
=
refPos
.
x
-
xCenter
;
int
dy
=
refPos
.
y
-
yCenter
;
if
(
ABS
(
dx
)
<=
7
&&
ABS
(
dy
)
<=
7
)
return
true
;
else
return
false
;
}
/**************************************************/
/**************************************************/
/* Class SCREEN: classe de gestion d'un affichage */
/* Class SCREEN: classe de gestion d'un affichage */
/***************************************************/
/***************************************************/
...
...
pcbnew/collectors.cpp
View file @
aba115f0
...
@@ -33,8 +33,12 @@
...
@@ -33,8 +33,12 @@
// see collectors.h
// see collectors.h
const
KICAD_T
GENERAL_COLLECTOR
::
AllBoardItems
[]
=
{
const
KICAD_T
GENERAL_COLLECTOR
::
AllBoardItems
[]
=
{
// there are some restrictions on the order of items in the general case.
// all items in m_Drawings for instance should be contiguous.
TYPETEXTE
,
TYPETEXTE
,
TYPEDRAWSEGMENT
,
TYPEDRAWSEGMENT
,
TYPEMARQUEUR
,
TYPECOTATION
,
TYPECOTATION
,
TYPEVIA
,
TYPEVIA
,
TYPETRACK
,
TYPETRACK
,
...
@@ -49,6 +53,7 @@ const KICAD_T GENERAL_COLLECTOR::AllBoardItems[] = {
...
@@ -49,6 +53,7 @@ const KICAD_T GENERAL_COLLECTOR::AllBoardItems[] = {
const
KICAD_T
GENERAL_COLLECTOR
::
PrimaryItems
[]
=
{
const
KICAD_T
GENERAL_COLLECTOR
::
PrimaryItems
[]
=
{
TYPETEXTE
,
TYPETEXTE
,
TYPEDRAWSEGMENT
,
TYPEDRAWSEGMENT
,
TYPEMARQUEUR
,
TYPECOTATION
,
TYPECOTATION
,
TYPEVIA
,
TYPEVIA
,
TYPETRACK
,
TYPETRACK
,
...
@@ -60,6 +65,7 @@ const KICAD_T GENERAL_COLLECTOR::PrimaryItems[] = {
...
@@ -60,6 +65,7 @@ const KICAD_T GENERAL_COLLECTOR::PrimaryItems[] = {
const
KICAD_T
GENERAL_COLLECTOR
::
AllButZones
[]
=
{
const
KICAD_T
GENERAL_COLLECTOR
::
AllButZones
[]
=
{
TYPETEXTE
,
TYPETEXTE
,
TYPEDRAWSEGMENT
,
TYPEDRAWSEGMENT
,
TYPEMARQUEUR
,
TYPECOTATION
,
TYPECOTATION
,
TYPEVIA
,
TYPEVIA
,
TYPETRACK
,
TYPETRACK
,
...
...
pcbnew/cursors.cpp
View file @
aba115f0
/****************************************************************/
/****************************************************************/
/* Routines generales d'affichage des curseurs et des marqueurs */
/* Routines generales d'affichage des curseurs et des marqueurs */
/****************************************************************/
/****************************************************************/
/* fichier curseurs.cpp */
/* fichier curseurs.cpp */
#include "fctsys.h"
#include "fctsys.h"
#include "gr_basic.h"
#include "gr_basic.h"
...
@@ -14,57 +14,61 @@
...
@@ -14,57 +14,61 @@
/* Routines Locales : */
/* Routines Locales : */
/* Forme (bit_map) du marqueur */
/* Forme (bit_map) du marqueur */
static
char
Default_MarkerBitmap
[]
=
static
char
Default_MarkerBitmap
[]
=
{
{
12
,
12
,
/* Dimensions x et y du dessin de marqueurs*/
12
,
12
,
/* Dimensions x et y du dessin de marqueurs*/
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
/* bitmap: 1 = color, 0 = notrace */
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
/* bitmap: 1 = color, 0 = notrace */
1
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
};
};
/**********************************************************************/
/**********************************************************************/
void
MARQUEUR
::
Draw
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
int
DrawMode
)
void
MARQUEUR
::
Draw
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
int
DrawMode
)
/**********************************************************************/
/**********************************************************************/
/*
/*
Trace un repere sur l'ecran au point de coordonnees PCB pos
*
Trace un repere sur l'ecran au point de coordonnees PCB pos
Le marqueur est defini par un tableau de 2 + (lig*col) elements:
*
Le marqueur est defini par un tableau de 2 + (lig*col) elements:
1er element: dim nbre ligne
*
1er element: dim nbre ligne
2er element: dim nbre col
*
2er element: dim nbre col
suite: lig * col elements a 0 ou 1 : si 1 mise a color du pixel
*
suite: lig * col elements a 0 ou 1 : si 1 mise a color du pixel
*/
*/
{
{
int
px
,
py
;
int
px
,
py
;
int
ii
,
ii_max
,
jj
,
jj_max
;
int
ii
,
ii_max
,
jj
,
jj_max
;
char
*
pt_bitmap
=
m_Bitmap
;
char
*
pt_bitmap
=
m_Bitmap
;
if
(
pt_bitmap
==
NULL
)
pt_bitmap
=
Default_MarkerBitmap
;
GRSetDrawMode
(
DC
,
DrawMode
);
if
(
pt_bitmap
==
NULL
)
pt_bitmap
=
Default_MarkerBitmap
;
px
=
GRMapX
(
m_Pos
.
x
);
py
=
GRMapY
(
m_Pos
.
y
);
GRSetDrawMode
(
DC
,
DrawMode
);
/* Lecture des dimensions */
px
=
GRMapX
(
m_Pos
.
x
);
ii_max
=
*
(
pt_bitmap
++
);
jj_max
=
*
(
pt_bitmap
++
);
py
=
GRMapY
(
m_Pos
.
y
);
/* Trace du bitmap */
/* Lecture des dimensions */
for
(
ii
=
0
;
ii
<
ii_max
;
ii
++
)
ii_max
=
*
(
pt_bitmap
++
);
{
jj_max
=
*
(
pt_bitmap
++
);
for
(
jj
=
0
;
jj
<
jj_max
;
jj
++
,
pt_bitmap
++
)
{
if
(
*
pt_bitmap
)
GRSPutPixel
(
&
panel
->
m_ClipBox
,
DC
,
px
+
ii
,
py
+
jj
,
m_Color
);
}
}
}
/* Trace du bitmap */
for
(
ii
=
0
;
ii
<
ii_max
;
ii
++
)
{
for
(
jj
=
0
;
jj
<
jj_max
;
jj
++
,
pt_bitmap
++
)
{
if
(
*
pt_bitmap
)
GRSPutPixel
(
&
panel
->
m_ClipBox
,
DC
,
px
+
ii
,
py
+
jj
,
m_Color
);
}
}
}
pcbnew/drc.cpp
View file @
aba115f0
...
@@ -46,10 +46,12 @@ static bool Test_Pad_to_Pads_Drc( WinEDA_BasePcbFrame* frame,
...
@@ -46,10 +46,12 @@ static bool Test_Pad_to_Pads_Drc( WinEDA_BasePcbFrame* frame,
static
int
TestClearanceSegmToPad
(
const
D_PAD
*
pad_to_test
,
int
seg_width
,
int
isol
);
static
int
TestClearanceSegmToPad
(
const
D_PAD
*
pad_to_test
,
int
seg_width
,
int
isol
);
static
int
TestMarginToCircle
(
int
cx
,
int
cy
,
int
rayon
,
int
longueur
);
static
int
TestMarginToCircle
(
int
cx
,
int
cy
,
int
rayon
,
int
longueur
);
static
int
Tst_Ligne
(
int
x1
,
int
y1
,
int
x2
,
int
y2
);
static
int
Tst_Ligne
(
int
x1
,
int
y1
,
int
x2
,
int
y2
);
static
void
Affiche_Erreur_DRC
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
BOARD
*
Pcb
,
static
void
Affiche_Erreur_DRC
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
BOARD
*
Pcb
,
TRACK
*
pt_ref
,
BOARD_ITEM
*
pt_item
,
int
errnumber
);
TRACK
*
pt_ref
,
BOARD_ITEM
*
pt_item
,
int
errnumber
);
static
void
Affiche_Erreur_DRC
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
BOARD
*
Pcb
,
D_PAD
*
pad1
,
D_PAD
*
pad2
);
static
void
Affiche_Erreur_DRC
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
BOARD
*
Pcb
,
D_PAD
*
pad1
,
D_PAD
*
pad2
);
/*******************************************/
/*******************************************/
...
@@ -923,6 +925,7 @@ static bool Test_Pad_to_Pads_Drc( WinEDA_BasePcbFrame* frame,
...
@@ -923,6 +925,7 @@ static bool Test_Pad_to_Pads_Drc( WinEDA_BasePcbFrame* frame,
MaskLayer
=
pad_ref
->
m_Masque_Layer
&
ALL_CU_LAYERS
;
MaskLayer
=
pad_ref
->
m_Masque_Layer
&
ALL_CU_LAYERS
;
int
x_limite
=
max_size
+
g_DesignSettings
.
m_TrackClearence
+
int
x_limite
=
max_size
+
g_DesignSettings
.
m_TrackClearence
+
pad_ref
->
m_Rayon
+
pad_ref
->
m_Pos
.
x
;
pad_ref
->
m_Rayon
+
pad_ref
->
m_Pos
.
x
;
for
(
;
pad_list
<
end_buffer
;
pad_list
++
)
for
(
;
pad_list
<
end_buffer
;
pad_list
++
)
{
{
pad
=
*
pad_list
;
pad
=
*
pad_list
;
...
@@ -939,11 +942,11 @@ static bool Test_Pad_to_Pads_Drc( WinEDA_BasePcbFrame* frame,
...
@@ -939,11 +942,11 @@ static bool Test_Pad_to_Pads_Drc( WinEDA_BasePcbFrame* frame,
continue
;
continue
;
/* The pad must be in a net (i.e pt_pad->m_NetCode != 0 ),
/* The pad must be in a net (i.e pt_pad->m_NetCode != 0 ),
* But no
e probleme
if pads have the same netcode (same net)*/
* But no
problem
if pads have the same netcode (same net)*/
if
(
pad
->
m_NetCode
&&
(
pad_ref
->
m_NetCode
==
pad
->
m_NetCode
)
)
if
(
pad
->
m_NetCode
&&
(
pad_ref
->
m_NetCode
==
pad
->
m_NetCode
)
)
continue
;
continue
;
/* No proble if pads are from the same footprint
/* No proble
m
if pads are from the same footprint
* and have the same pad number ( equivalent pads ) */
* and have the same pad number ( equivalent pads ) */
if
(
(
pad
->
m_Parent
==
pad_ref
->
m_Parent
)
&&
(
pad
->
m_NumPadName
==
pad_ref
->
m_NumPadName
)
)
if
(
(
pad
->
m_Parent
==
pad_ref
->
m_Parent
)
&&
(
pad
->
m_NumPadName
==
pad_ref
->
m_NumPadName
)
)
continue
;
continue
;
...
@@ -1151,6 +1154,7 @@ static int TestClearanceSegmToPad( const D_PAD* pad_to_test, int w_segm, int dis
...
@@ -1151,6 +1154,7 @@ static int TestClearanceSegmToPad( const D_PAD* pad_to_test, int w_segm, int dis
if
(
bflag
==
OK_DRC
)
if
(
bflag
==
OK_DRC
)
return
OK_DRC
;
return
OK_DRC
;
/* Erreur DRC : analyse fine de la forme de la pastille */
/* Erreur DRC : analyse fine de la forme de la pastille */
switch
(
pad_to_test
->
m_PadShape
)
switch
(
pad_to_test
->
m_PadShape
)
...
@@ -1360,7 +1364,7 @@ static void Affiche_Erreur_DRC( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb,
...
@@ -1360,7 +1364,7 @@ static void Affiche_Erreur_DRC( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb,
wxString
module_name
=
(
(
MODULE
*
)
(
pad
->
m_Parent
)
)
->
m_Reference
->
m_Text
;
wxString
module_name
=
(
(
MODULE
*
)
(
pad
->
m_Parent
)
)
->
m_Reference
->
m_Text
;
msg
.
Printf
(
_
(
"%d Drc Err %d %s (net %s)and PAD %s (%s) net %s @ %d,%d
\n
"
),
msg
.
Printf
(
_
(
"%d Drc Err %d %s (net %s)
and PAD %s (%s) net %s @ %d,%d
\n
"
),
ErrorsDRC_Count
,
errnumber
,
tracktype
.
GetData
(),
ErrorsDRC_Count
,
errnumber
,
tracktype
.
GetData
(),
netname1
.
GetData
(),
netname1
.
GetData
(),
pad_name
.
GetData
(),
module_name
.
GetData
(),
pad_name
.
GetData
(),
module_name
.
GetData
(),
...
@@ -1437,12 +1441,14 @@ static void Affiche_Erreur_DRC( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb,
...
@@ -1437,12 +1441,14 @@ static void Affiche_Erreur_DRC( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb,
wxString
pad_name2
=
pad2
->
ReturnStringPadName
();
wxString
pad_name2
=
pad2
->
ReturnStringPadName
();
wxString
module_name2
=
(
(
MODULE
*
)
(
pad2
->
m_Parent
)
)
->
m_Reference
->
m_Text
;
wxString
module_name2
=
(
(
MODULE
*
)
(
pad2
->
m_Parent
)
)
->
m_Reference
->
m_Text
;
wxString
netname1
,
netname2
;
wxString
netname1
,
netname2
;
EQUIPOT
*
equipot
=
Pcb
->
FindNet
(
pad1
->
m_NetCode
);
EQUIPOT
*
equipot
=
Pcb
->
FindNet
(
pad1
->
m_NetCode
);
if
(
equipot
)
if
(
equipot
)
netname1
=
equipot
->
m_Netname
;
netname1
=
equipot
->
m_Netname
;
else
else
netname1
=
wxT
(
"<noname>"
);
netname1
=
wxT
(
"<noname>"
);
equipot
=
Pcb
->
FindNet
(
pad2
->
m_NetCode
);
equipot
=
Pcb
->
FindNet
(
pad2
->
m_NetCode
);
if
(
equipot
)
if
(
equipot
)
netname2
=
equipot
->
m_Netname
;
netname2
=
equipot
->
m_Netname
;
...
@@ -1450,19 +1456,21 @@ static void Affiche_Erreur_DRC( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb,
...
@@ -1450,19 +1456,21 @@ static void Affiche_Erreur_DRC( WinEDA_DrawPanel* panel, wxDC* DC, BOARD* Pcb,
netname2
=
wxT
(
"<noname>"
);
netname2
=
wxT
(
"<noname>"
);
msg
.
Printf
(
_
(
"%d Drc Err: PAD %s (%s) net %s @ %d,%d and PAD %s (%s) net %s @ %d,%d
\n
"
),
msg
.
Printf
(
_
(
"%d Drc Err: PAD %s (%s) net %s @ %d,%d and PAD %s (%s) net %s @ %d,%d
\n
"
),
ErrorsDRC_Count
,
pad_name1
.
GetData
(),
module_name1
.
GetData
(),
ErrorsDRC_Count
,
netname1
.
GetData
(),
pad1
->
m_Pos
.
x
,
pad1
->
m_Pos
.
y
,
pad_name1
.
GetData
(),
module_name1
.
GetData
(),
netname1
.
GetData
(),
pad1
->
m_Pos
.
x
,
pad1
->
m_Pos
.
y
,
pad_name2
.
GetData
(),
module_name2
.
GetData
(),
pad_name2
.
GetData
(),
module_name2
.
GetData
(),
netname2
.
GetData
(),
pad2
->
m_Pos
.
x
,
pad2
->
m_Pos
.
y
);
netname2
.
GetData
(),
pad2
->
m_Pos
.
x
,
pad2
->
m_Pos
.
y
);
if
(
DrcFrame
)
if
(
DrcFrame
)
DrcFrame
->
m_logWindow
->
AppendText
(
msg
);
DrcFrame
->
m_logWindow
->
AppendText
(
msg
);
else
else
panel
->
m_Parent
->
Affiche_Message
(
msg
);
panel
->
m_Parent
->
Affiche_Message
(
msg
);
if
(
s_RptFile
)
if
(
s_RptFile
)
fprintf
(
s_RptFile
,
"%s"
,
CONV_TO_UTF8
(
msg
)
);
fprintf
(
s_RptFile
,
"%s"
,
CONV_TO_UTF8
(
msg
)
);
if
(
current_marqueur
==
NULL
)
if
(
current_marqueur
==
NULL
)
current_marqueur
=
new
MARQUEUR
(
Pcb
);
current_marqueur
=
new
MARQUEUR
(
Pcb
);
current_marqueur
->
m_Pos
=
pad1
->
m_Pos
;
current_marqueur
->
m_Pos
=
pad1
->
m_Pos
;
current_marqueur
->
m_Color
=
WHITE
;
current_marqueur
->
m_Color
=
WHITE
;
current_marqueur
->
m_Diag
=
msg
;
current_marqueur
->
m_Diag
=
msg
;
...
...
pcbnew/find.cpp
View file @
aba115f0
...
@@ -47,10 +47,9 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
...
@@ -47,10 +47,9 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
PCB_SCREEN
*
screen
=
m_Parent
->
GetScreen
();
PCB_SCREEN
*
screen
=
m_Parent
->
GetScreen
();
wxPoint
locate_pos
;
wxPoint
locate_pos
;
wxString
msg
;
wxString
msg
;
bool
succes
=
FALSE
;
bool
FindMarker
=
FALSE
;
bool
FindMarker
=
FALSE
;
MODULE
*
Module
;
int
StartCount
;
int
StartCount
;
BOARD_ITEM
*
foundItem
=
0
;
switch
(
event
.
GetId
()
)
switch
(
event
.
GetId
()
)
{
{
...
@@ -60,6 +59,7 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
...
@@ -60,6 +59,7 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
case
ID_FIND_MARKER
:
case
ID_FIND_MARKER
:
s_MarkerCount
=
0
;
s_MarkerCount
=
0
;
// fall thru
case
ID_FIND_NEXT_MARKER
:
case
ID_FIND_NEXT_MARKER
:
FindMarker
=
TRUE
;
FindMarker
=
TRUE
;
...
@@ -73,16 +73,17 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
...
@@ -73,16 +73,17 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
if
(
FindMarker
)
if
(
FindMarker
)
{
{
MARQUEUR
*
M
arker
=
(
MARQUEUR
*
)
m_Parent
->
m_Pcb
->
m_Drawings
;
MARQUEUR
*
m
arker
=
(
MARQUEUR
*
)
m_Parent
->
m_Pcb
->
m_Drawings
;
for
(
;
Marker
!=
NULL
;
Marker
=
(
MARQUEUR
*
)
Marker
->
Pnext
)
for
(
;
marker
;
marker
=
(
MARQUEUR
*
)
marker
->
Next
()
)
{
{
if
(
M
arker
->
Type
()
!=
TYPEMARQUEUR
)
if
(
m
arker
->
Type
()
!=
TYPEMARQUEUR
)
continue
;
continue
;
StartCount
++
;
StartCount
++
;
if
(
StartCount
>
s_MarkerCount
)
if
(
StartCount
>
s_MarkerCount
)
{
{
succes
=
TRUE
;
foundItem
=
marker
;
locate_pos
=
M
arker
->
m_Pos
;
locate_pos
=
m
arker
->
m_Pos
;
s_MarkerCount
++
;
s_MarkerCount
++
;
break
;
break
;
}
}
...
@@ -90,27 +91,27 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
...
@@ -90,27 +91,27 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
}
}
else
else
{
{
for
(
M
odule
=
m_Parent
->
m_Pcb
->
m_Modules
;
Module
!=
NULL
;
Module
=
(
MODULE
*
)
Module
->
Pnext
)
for
(
M
ODULE
*
module
=
m_Parent
->
m_Pcb
->
m_Modules
;
module
;
module
=
(
MODULE
*
)
module
->
Next
()
)
{
{
if
(
WildCompareString
(
s_OldStringFound
,
Module
->
m_Reference
->
m_Text
.
GetData
(),
if
(
WildCompareString
(
s_OldStringFound
,
module
->
GetReference
()
.
GetData
(),
FALSE
)
)
FALSE
)
)
{
{
StartCount
++
;
StartCount
++
;
if
(
StartCount
>
s_ItemCount
)
if
(
StartCount
>
s_ItemCount
)
{
{
succes
=
TRUE
;
foundItem
=
module
;
locate_pos
=
M
odule
->
m_Pos
;
locate_pos
=
m
odule
->
m_Pos
;
s_ItemCount
++
;
s_ItemCount
++
;
break
;
break
;
}
}
}
}
if
(
WildCompareString
(
s_OldStringFound
,
M
odule
->
m_Value
->
m_Text
.
GetData
(),
FALSE
)
)
if
(
WildCompareString
(
s_OldStringFound
,
m
odule
->
m_Value
->
m_Text
.
GetData
(),
FALSE
)
)
{
{
StartCount
++
;
StartCount
++
;
if
(
StartCount
>
s_ItemCount
)
if
(
StartCount
>
s_ItemCount
)
{
{
succes
=
TRUE
;
foundItem
=
module
;
locate_pos
=
M
odule
->
m_Pos
;
locate_pos
=
m
odule
->
m_Pos
;
s_ItemCount
++
;
s_ItemCount
++
;
break
;
break
;
}
}
...
@@ -118,8 +119,17 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
...
@@ -118,8 +119,17 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
}
}
}
}
if
(
succes
)
if
(
foundItem
)
{
{
m_Parent
->
SetCurItem
(
foundItem
);
if
(
FindMarker
)
msg
=
_
(
"Marker found"
);
else
msg
.
Printf
(
_
(
"<%s> Found"
),
s_OldStringFound
.
GetData
()
);
m_Parent
->
Affiche_Message
(
msg
);
/* Il y a peut-etre necessite de recadrer le dessin: */
/* Il y a peut-etre necessite de recadrer le dessin: */
if
(
!
m_Parent
->
DrawPanel
->
IsPointOnDisplay
(
locate_pos
)
)
if
(
!
m_Parent
->
DrawPanel
->
IsPointOnDisplay
(
locate_pos
)
)
{
{
...
@@ -135,21 +145,18 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
...
@@ -135,21 +145,18 @@ void WinEDA_PcbFindFrame::FindItem( wxCommandEvent& event )
m_Parent
->
DrawPanel
->
MouseToCursorSchema
();
m_Parent
->
DrawPanel
->
MouseToCursorSchema
();
m_Parent
->
DrawPanel
->
CursorOn
(
m_DC
);
m_Parent
->
DrawPanel
->
CursorOn
(
m_DC
);
}
}
if
(
FindMarker
)
msg
=
_
(
"Marker found"
);
else
msg
.
Printf
(
_
(
"<%s> Found"
),
s_OldStringFound
.
GetData
()
);
m_Parent
->
Affiche_Message
(
msg
);
EndModal
(
1
);
EndModal
(
1
);
}
}
else
else
{
{
m_Parent
->
Affiche_Message
(
wxEmptyString
);
m_Parent
->
Affiche_Message
(
wxEmptyString
);
if
(
FindMarker
)
if
(
FindMarker
)
msg
=
_
(
"Marker not found"
);
msg
=
_
(
"Marker not found"
);
else
else
msg
.
Printf
(
_
(
"<%s> Not Found"
),
s_OldStringFound
.
GetData
()
);
msg
.
Printf
(
_
(
"<%s> Not Found"
),
s_OldStringFound
.
GetData
()
);
DisplayError
(
this
,
msg
,
10
);
DisplayError
(
this
,
msg
,
10
);
EndModal
(
0
);
EndModal
(
0
);
}
}
...
...
share/drawframe.cpp
View file @
aba115f0
...
@@ -565,6 +565,7 @@ void WinEDA_DrawFrame::OnZoom( int zoom_type )
...
@@ -565,6 +565,7 @@ void WinEDA_DrawFrame::OnZoom( int zoom_type )
case
ID_POPUP_ZOOM_PLUS
:
case
ID_POPUP_ZOOM_PLUS
:
case
ID_ZOOM_PLUS_KEY
:
case
ID_ZOOM_PLUS_KEY
:
move_mouse_cursor
=
TRUE
;
move_mouse_cursor
=
TRUE
;
// fall thru
case
ID_ZOOM_PLUS_BUTT
:
case
ID_ZOOM_PLUS_BUTT
:
if
(
zoom_type
==
ID_ZOOM_PLUS_BUTT
)
if
(
zoom_type
==
ID_ZOOM_PLUS_BUTT
)
...
@@ -576,6 +577,7 @@ void WinEDA_DrawFrame::OnZoom( int zoom_type )
...
@@ -576,6 +577,7 @@ void WinEDA_DrawFrame::OnZoom( int zoom_type )
case
ID_POPUP_ZOOM_MOINS
:
case
ID_POPUP_ZOOM_MOINS
:
case
ID_ZOOM_MOINS_KEY
:
case
ID_ZOOM_MOINS_KEY
:
move_mouse_cursor
=
TRUE
;
move_mouse_cursor
=
TRUE
;
// fall thru
case
ID_ZOOM_MOINS_BUTT
:
case
ID_ZOOM_MOINS_BUTT
:
if
(
zoom_type
==
ID_ZOOM_MOINS_BUTT
)
if
(
zoom_type
==
ID_ZOOM_MOINS_BUTT
)
...
...
todo.txt
View file @
aba115f0
...
@@ -51,3 +51,8 @@ understanding by new developers.
...
@@ -51,3 +51,8 @@ understanding by new developers.
*** Implement the graying in/out of "Edit/Undo", "Edit/Redo" menu items,
*** Implement the graying in/out of "Edit/Undo", "Edit/Redo" menu items,
when Undo/Redo stack is empty/filled.
when Undo/Redo stack is empty/filled.
*** Implement action for ID_POPUP_PCB_DELETE_MARKER, since onrightclick.cpp
can now identify a marker. To see where the user gets a menu to delete a marker:
void WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
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