See changelog. work in progress about ERC and markers in eeschema
This commit is contained in:
parent
f467074cc0
commit
0d2ee0c023
|
@ -4,6 +4,22 @@ KiCad ChangeLog 2009
|
||||||
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.
|
||||||
|
|
||||||
|
|
||||||
|
2009-july-06 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
|
||||||
|
================================================================================
|
||||||
|
++All:
|
||||||
|
Use a common class for markers in pcbnew and eeschema:
|
||||||
|
created a basic class called MARKER_BASE
|
||||||
|
class DRC_ITEM is also common to pcbnew and eeschema
|
||||||
|
class MARKER (in pcbnew) and class MARKER_SCH (eeschema) are derived
|
||||||
|
from this basic class.
|
||||||
|
The main goal is to use a common class for pcbnew and eeschema to handle
|
||||||
|
errors and to have similar dialogs
|
||||||
|
and have more comprehensive ERC messages errors in eeschema
|
||||||
|
This is a work in progress
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
2009-july-05 UPDATE Jerry Jacobs <jerkejacobs@gmail.com
|
2009-july-05 UPDATE Jerry Jacobs <jerkejacobs@gmail.com
|
||||||
================================================================================
|
================================================================================
|
||||||
+ Closing bug 2802441, No single error messages any more, 2009-06-07 over2there.
|
+ Closing bug 2802441, No single error messages any more, 2009-06-07 over2there.
|
||||||
|
|
|
@ -13,6 +13,7 @@ set(COMMON_SRCS
|
||||||
bezier_curves.cpp
|
bezier_curves.cpp
|
||||||
block_commande.cpp
|
block_commande.cpp
|
||||||
class_drawpickedstruct.cpp
|
class_drawpickedstruct.cpp
|
||||||
|
class_marker_base.cpp
|
||||||
common.cpp
|
common.cpp
|
||||||
common_plot_functions.cpp
|
common_plot_functions.cpp
|
||||||
common_plotHPGL_functions.cpp
|
common_plotHPGL_functions.cpp
|
||||||
|
|
|
@ -0,0 +1,175 @@
|
||||||
|
/**********************************************************************************
|
||||||
|
* class MARKER_BASE; markers are used to show something (usually a drc/erc problem)
|
||||||
|
* Markers in pcbnew and eeschema are derived from this basic class
|
||||||
|
**********************************************************************************/
|
||||||
|
|
||||||
|
/* file class_marker_base.cpp
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "fctsys.h"
|
||||||
|
#include "gr_basic.h"
|
||||||
|
#include "class_base_screen.h"
|
||||||
|
#include "common.h"
|
||||||
|
#include "class_drawpanel.h"
|
||||||
|
#include "class_marker_base.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Default bitmap shape for markers */
|
||||||
|
static char Default_MarkerBitmap[] =
|
||||||
|
{
|
||||||
|
12, 12, /* x and y size of the bitmap */
|
||||||
|
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, 1, 0, 0, 0, 1, 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, 0, 1, 1, 1, 0, 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, 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, 0, 1, 1, 1,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*******************/
|
||||||
|
/* Classe MARKER_BASE */
|
||||||
|
/*******************/
|
||||||
|
|
||||||
|
void MARKER_BASE::init()
|
||||||
|
{
|
||||||
|
m_Bitmap = NULL;
|
||||||
|
m_MarkerType = 0;
|
||||||
|
m_Color = RED;
|
||||||
|
m_Bitmap = Default_MarkerBitmap;
|
||||||
|
m_Size.x = Default_MarkerBitmap[0];
|
||||||
|
m_Size.y = Default_MarkerBitmap[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
MARKER_BASE::MARKER_BASE( )
|
||||||
|
{
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MARKER_BASE::MARKER_BASE( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos,
|
||||||
|
const wxString& bText, const wxPoint& bPos )
|
||||||
|
{
|
||||||
|
init();
|
||||||
|
|
||||||
|
SetData( aErrorCode,aMarkerPos,
|
||||||
|
aText, aPos,
|
||||||
|
bText, bPos );
|
||||||
|
}
|
||||||
|
|
||||||
|
MARKER_BASE::MARKER_BASE( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos )
|
||||||
|
{
|
||||||
|
init();
|
||||||
|
|
||||||
|
SetData( aErrorCode, aMarkerPos, aText, aPos );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Effacement memoire de la structure */
|
||||||
|
MARKER_BASE::~MARKER_BASE()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MARKER_BASE::SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos,
|
||||||
|
const wxString& bText, const wxPoint& bPos )
|
||||||
|
{
|
||||||
|
m_Pos = aMarkerPos;
|
||||||
|
m_drc.SetData( aErrorCode,
|
||||||
|
aText, bText, aPos, bPos );
|
||||||
|
|
||||||
|
// @todo: switch on error code to set error code specific color, and possibly bitmap.
|
||||||
|
m_Color = WHITE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MARKER_BASE::SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos )
|
||||||
|
{
|
||||||
|
m_Pos = aMarkerPos;
|
||||||
|
m_drc.SetData( aErrorCode,
|
||||||
|
aText, aPos );
|
||||||
|
|
||||||
|
// @todo: switch on error code to set error code specific color, and possibly bitmap.
|
||||||
|
m_Color = WHITE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************/
|
||||||
|
bool MARKER_BASE::HitTestMarker( const wxPoint& refPos )
|
||||||
|
/**********************************************/
|
||||||
|
{
|
||||||
|
// the MARKER_BASE is 12 pixels by 12 pixels, but is not resized with zoom, so
|
||||||
|
// as zoom changes, the effective real size (in user units) of the MARKER_BASE changes.
|
||||||
|
|
||||||
|
wxSize TrueSize = m_Size;
|
||||||
|
if ( ActiveScreen )
|
||||||
|
{
|
||||||
|
ActiveScreen->Unscale( TrueSize );
|
||||||
|
}
|
||||||
|
|
||||||
|
wxPoint pos = m_Pos;
|
||||||
|
|
||||||
|
int dx = refPos.x - pos.x;
|
||||||
|
int dy = refPos.y - pos.y;
|
||||||
|
|
||||||
|
/* is refPos in the box: Marker size to right an bottom,
|
||||||
|
or size/2 to left or top */
|
||||||
|
if( dx <= TrueSize.x && dy <= TrueSize.y &&
|
||||||
|
dx >= -TrueSize.x/2 && dy >= -TrueSize.y/2 )
|
||||||
|
return true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************/
|
||||||
|
void MARKER_BASE::DrawMarker( WinEDA_DrawPanel* panel, wxDC* DC, int DrawMode,
|
||||||
|
const wxPoint& offset )
|
||||||
|
/**********************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Trace un repere sur l'ecran au point de coordonnees PCB pos
|
||||||
|
* Le marqueur est defini par un tableau de 2 + (lig*col) elements:
|
||||||
|
* 1er element: dim nbre ligne
|
||||||
|
* 2er element: dim nbre col
|
||||||
|
* suite: lig * col elements a 0 ou 1 : si 1 mise a color du pixel
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
int ii, jj;
|
||||||
|
char* pt_bitmap = m_Bitmap;
|
||||||
|
|
||||||
|
if( pt_bitmap == NULL ) return;
|
||||||
|
|
||||||
|
GRSetDrawMode( DC, DrawMode );
|
||||||
|
|
||||||
|
wxPoint pos = m_Pos;
|
||||||
|
pos.x = GRMapX( pos.x );
|
||||||
|
pos.y = GRMapY( pos.y );
|
||||||
|
|
||||||
|
/* Get the bitmap size */
|
||||||
|
m_Size.x = *(pt_bitmap++);
|
||||||
|
m_Size.y = *(pt_bitmap++);
|
||||||
|
|
||||||
|
/* Draw the bitmap */
|
||||||
|
for( ii = 0; ii < m_Size.x; ii++ )
|
||||||
|
{
|
||||||
|
for( jj = 0; jj < m_Size.y; jj++, pt_bitmap++ )
|
||||||
|
{
|
||||||
|
if( *pt_bitmap )
|
||||||
|
GRSPutPixel( &panel->m_ClipBox, DC,
|
||||||
|
pos.x + ii, pos.y + jj, m_Color );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -640,7 +640,7 @@ void MirrorOneStruct( SCH_ITEM* DrawStruct, wxPoint& Center )
|
||||||
SCH_COMPONENT* DrawLibItem;
|
SCH_COMPONENT* DrawLibItem;
|
||||||
DrawSheetStruct* DrawSheet;
|
DrawSheetStruct* DrawSheet;
|
||||||
Hierarchical_PIN_Sheet_Struct* DrawSheetLabel;
|
Hierarchical_PIN_Sheet_Struct* DrawSheetLabel;
|
||||||
DrawMarkerStruct* DrawMarker;
|
MARKER_SCH* DrawMarker;
|
||||||
DrawNoConnectStruct* DrawNoConnect;
|
DrawNoConnectStruct* DrawNoConnect;
|
||||||
SCH_TEXT* DrawText;
|
SCH_TEXT* DrawText;
|
||||||
wxPoint px;
|
wxPoint px;
|
||||||
|
@ -692,7 +692,7 @@ void MirrorOneStruct( SCH_ITEM* DrawStruct, wxPoint& Center )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
DrawMarker = (DrawMarkerStruct*) DrawStruct;
|
DrawMarker = (MARKER_SCH*) DrawStruct;
|
||||||
MirrorYPoint( DrawMarker->m_Pos, Center );
|
MirrorYPoint( DrawMarker->m_Pos, Center );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1198,7 +1198,7 @@ void MoveOneStruct( SCH_ITEM* DrawStruct, const wxPoint& move_vector )
|
||||||
SCH_COMPONENT* DrawLibItem;
|
SCH_COMPONENT* DrawLibItem;
|
||||||
DrawSheetStruct* DrawSheet;
|
DrawSheetStruct* DrawSheet;
|
||||||
Hierarchical_PIN_Sheet_Struct* DrawSheetLabel;
|
Hierarchical_PIN_Sheet_Struct* DrawSheetLabel;
|
||||||
DrawMarkerStruct* DrawMarker;
|
MARKER_SCH* DrawMarker;
|
||||||
DrawNoConnectStruct* DrawNoConnect;
|
DrawNoConnectStruct* DrawNoConnect;
|
||||||
|
|
||||||
if( !DrawStruct )
|
if( !DrawStruct )
|
||||||
|
@ -1241,7 +1241,7 @@ void MoveOneStruct( SCH_ITEM* DrawStruct, const wxPoint& move_vector )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
DrawMarker = (DrawMarkerStruct*) DrawStruct;
|
DrawMarker = (MARKER_SCH*) DrawStruct;
|
||||||
DrawMarker->m_Pos += move_vector;
|
DrawMarker->m_Pos += move_vector;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1337,7 +1337,7 @@ SCH_ITEM* DuplicateStruct( SCH_ITEM* DrawStruct )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
NewDrawStruct = ( (DrawMarkerStruct*) DrawStruct )->GenCopy();
|
NewDrawStruct = ( (MARKER_SCH*) DrawStruct )->GenCopy();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DRAW_NOCONNECT_STRUCT_TYPE:
|
case DRAW_NOCONNECT_STRUCT_TYPE:
|
||||||
|
@ -1672,7 +1672,7 @@ static void AddPickedItem( SCH_SCREEN* screen, wxPoint position )
|
||||||
|
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#define STRUCT ( (DrawMarkerStruct*) Struct )
|
#define STRUCT ( (MARKER_SCH*) Struct )
|
||||||
if( Struct->m_Flags & SELECTED )
|
if( Struct->m_Flags & SELECTED )
|
||||||
break; /* Already in list */
|
break; /* Already in list */
|
||||||
if( STRUCT->m_Pos != position )
|
if( STRUCT->m_Pos != position )
|
||||||
|
|
|
@ -363,73 +363,33 @@ void DrawNoConnectStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
|
|
||||||
|
|
||||||
/**************************/
|
/**************************/
|
||||||
/* class DrawMarkerStruct */
|
/* class MARKER_SCH */
|
||||||
/**************************/
|
/**************************/
|
||||||
|
|
||||||
char marq_bitmap[] =
|
|
||||||
{
|
|
||||||
12, 12, 0, 0, /* Dimensions x et y, offsets x et y du bitmap de marqueurs*/
|
|
||||||
YELLOW, /* Couleur */
|
|
||||||
1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, /* bitmap: >= 1 : color, */
|
|
||||||
1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, /* 0 = notrace */
|
|
||||||
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, 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, 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, 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, 0, 1, 1, 1,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
|
|
||||||
};
|
|
||||||
|
|
||||||
char marqERC_bitmap[] =
|
MARKER_SCH::MARKER_SCH( const wxPoint& pos, const wxString& text ) :
|
||||||
{
|
SCH_ITEM( NULL, DRAW_MARKER_STRUCT_TYPE ),
|
||||||
8, 8, 0, 0, /* Dimensions x et y , offsets x et y du bitmap de marqueurs*/
|
MARKER_BASE(0, pos, text, pos)
|
||||||
-1, /* Color: -1 = couleur non pr<70>cis<69>e */
|
|
||||||
1, 1, 1, 1, 1, 0, 0, 0,
|
|
||||||
1, 1, 1, 0, 1, 0, 0, 0,
|
|
||||||
1, 1, 1, 1, 0, 0, 0, 0,
|
|
||||||
1, 0, 1, 1, 1, 0, 0, 0,
|
|
||||||
1, 1, 0, 1, 1, 1, 0, 0,
|
|
||||||
0, 0, 0, 0, 1, 1, 1, 0,
|
|
||||||
0, 0, 0, 0, 0, 1, 1, 1,
|
|
||||||
0, 0, 0, 0, 0, 0, 1, 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
DrawMarkerStruct::DrawMarkerStruct( const wxPoint& pos, const wxString& text ) :
|
|
||||||
SCH_ITEM( NULL, DRAW_MARKER_STRUCT_TYPE )
|
|
||||||
{
|
|
||||||
m_Pos = pos; /* XY coordinates of marker. */
|
|
||||||
m_Type = MARQ_UNSPEC;
|
|
||||||
m_MarkFlags = 0; // complements d'information
|
|
||||||
m_Comment = text;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
DrawMarkerStruct::~DrawMarkerStruct()
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DrawMarkerStruct* DrawMarkerStruct::GenCopy()
|
MARKER_SCH::~MARKER_SCH()
|
||||||
{
|
{
|
||||||
DrawMarkerStruct* newitem = new DrawMarkerStruct( m_Pos, m_Comment );
|
}
|
||||||
|
|
||||||
newitem->m_Type = m_Type;
|
|
||||||
newitem->m_MarkFlags = m_MarkFlags;
|
MARKER_SCH* MARKER_SCH::GenCopy()
|
||||||
|
{
|
||||||
|
MARKER_SCH* newitem = new MARKER_SCH( GetPos(), GetErrorText() );
|
||||||
|
|
||||||
|
newitem->SetMarkerType( GetMarkerType());
|
||||||
|
newitem->SetErrorLevel( GetErrorLevel());
|
||||||
|
|
||||||
return newitem;
|
return newitem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
wxString DrawMarkerStruct::GetComment()
|
|
||||||
{
|
|
||||||
return m_Comment;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
|
|
||||||
|
@ -440,10 +400,10 @@ wxString DrawMarkerStruct::GetComment()
|
||||||
* 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.
|
||||||
*/
|
*/
|
||||||
void DrawMarkerStruct::Show( int nestLevel, std::ostream& os )
|
void MARKER_SCH::Show( int nestLevel, std::ostream& os )
|
||||||
{
|
{
|
||||||
// for now, make it look like XML:
|
// for now, make it look like XML:
|
||||||
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << m_Pos
|
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() << GetPos()
|
||||||
<< "/>\n";
|
<< "/>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -456,13 +416,13 @@ void DrawMarkerStruct::Show( int nestLevel, std::ostream& os )
|
||||||
* @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 DrawMarkerStruct::Save( FILE* aFile ) const
|
bool MARKER_SCH::Save( FILE* aFile ) const
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
wxString msg = GetErrorText();
|
||||||
if( fprintf( aFile, "Kmarq %c %-4d %-4d \"%s\" F=%X\n",
|
if( fprintf( aFile, "Kmarq %c %-4d %-4d \"%s\" F=%X\n",
|
||||||
int(m_Type) + 'A', m_Pos.x, m_Pos.y,
|
GetMarkerType() + 'A', GetPos().x, GetPos().y,
|
||||||
CONV_TO_UTF8( m_Comment ), m_MarkFlags ) == EOF )
|
CONV_TO_UTF8( msg ), GetErrorLevel() ) == EOF )
|
||||||
{
|
{
|
||||||
success = false;
|
success = false;
|
||||||
}
|
}
|
||||||
|
@ -471,26 +431,22 @@ bool DrawMarkerStruct::Save( FILE* aFile ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DrawMarkerStruct::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
void MARKER_SCH::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
const wxPoint& offset, int DrawMode, int Color )
|
const wxPoint& offset, int DrawMode, int Color )
|
||||||
{
|
{
|
||||||
#define WAR 1 // utilis<EFBFBD> aussi dans erc.cpp
|
#define WAR 1 // see erc.cpp
|
||||||
|
|
||||||
if( m_Type == MARQ_ERC )
|
if( GetMarkerType() == MARQ_ERC )
|
||||||
{
|
{
|
||||||
int color = Color;
|
|
||||||
if( Color <= 0 )
|
if( Color <= 0 )
|
||||||
{
|
{
|
||||||
color = (m_MarkFlags == WAR ) ?
|
Color = (GetErrorLevel() == WAR ) ?
|
||||||
g_LayerDescr.LayerColor[LAYER_ERC_WARN] :
|
g_LayerDescr.LayerColor[LAYER_ERC_WARN] :
|
||||||
g_LayerDescr.LayerColor[LAYER_ERC_ERR];
|
g_LayerDescr.LayerColor[LAYER_ERC_ERR];
|
||||||
}
|
}
|
||||||
|
|
||||||
Draw_Marqueur( panel, DC, m_Pos + offset, marqERC_bitmap, DrawMode,
|
|
||||||
color );
|
|
||||||
}
|
}
|
||||||
else
|
m_Color = Color;
|
||||||
Draw_Marqueur( panel, DC, m_Pos + offset, marq_bitmap, DrawMode, Color );
|
DrawMarker( panel, DC, DrawMode, offset );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,9 @@
|
||||||
#ifndef CLASS_SCHEMATIC_ITEMS_H
|
#ifndef CLASS_SCHEMATIC_ITEMS_H
|
||||||
#define CLASS_SCHEMATIC_ITEMS_H
|
#define CLASS_SCHEMATIC_ITEMS_H
|
||||||
|
|
||||||
|
#include "class_marker_base.h"
|
||||||
|
|
||||||
#define DRAWJUNCTION_DIAMETER 32 /* Size (diameter) of junctions between wires */
|
#define DRAWJUNCTION_DIAMETER 32 /* Size (diameter) of junctions between wires */
|
||||||
#define DRAWMARKER_SIZE 16 /* Rayon du symbole marqueur */
|
|
||||||
#define DRAWNOCONNECT_SIZE 48 /* Rayon du symbole No Connexion */
|
#define DRAWNOCONNECT_SIZE 48 /* Rayon du symbole No Connexion */
|
||||||
|
|
||||||
/* flags pour BUS ENTRY (bus to bus ou wire to bus */
|
/* flags pour BUS ENTRY (bus to bus ou wire to bus */
|
||||||
|
@ -89,32 +90,37 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class DrawMarkerStruct : public SCH_ITEM /* marqueurs */
|
class MARKER_SCH : public SCH_ITEM , public MARKER_BASE
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxPoint m_Pos; /* XY coordinates of marker. */
|
MARKER_SCH( const wxPoint& aPos, const wxString& aText );
|
||||||
TypeMarker m_Type;
|
~MARKER_SCH();
|
||||||
int m_MarkFlags; // complements d'information
|
|
||||||
wxString m_Comment; /* Texte (commentaireassocie eventuel */
|
|
||||||
|
|
||||||
public:
|
|
||||||
DrawMarkerStruct( const wxPoint& pos, const wxString& text );
|
|
||||||
~DrawMarkerStruct();
|
|
||||||
virtual wxString GetClass() const
|
virtual wxString GetClass() const
|
||||||
{
|
{
|
||||||
return wxT( "DrawMarker" );
|
return wxT( "MARKER_SCH" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DrawMarkerStruct* GenCopy();
|
MARKER_SCH* GenCopy();
|
||||||
wxString GetComment();
|
|
||||||
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
const wxPoint& offset, int draw_mode,
|
const wxPoint& offset, int draw_mode,
|
||||||
int Color = -1 );
|
int Color = -1 );
|
||||||
|
|
||||||
|
|
||||||
|
wxString GetErrorText( ) const
|
||||||
|
{
|
||||||
|
wxString text = m_drc.GetMainText();
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetErrorText( wxString aText)
|
||||||
|
{
|
||||||
|
SetData( m_drc.GetErrorCode(), GetPos(), aText, GetPos() );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Save
|
* Function Save
|
||||||
* writes the data structures for this object out to a FILE in "*.brd"
|
* writes the data structures for this object out to a FILE in "*.sch"
|
||||||
* format.
|
* 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.
|
||||||
|
@ -127,6 +133,14 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual int GetPenSize( ) { return 0; };
|
virtual int GetPenSize( ) { return 0; };
|
||||||
|
|
||||||
|
/** Function HitTest
|
||||||
|
* @return true if the point aPosRef is within item area
|
||||||
|
* @param aPosRef = a wxPoint to test
|
||||||
|
*/
|
||||||
|
bool HitTest( const wxPoint& aPosRef )
|
||||||
|
{
|
||||||
|
return HitTestMarker( aPosRef );
|
||||||
|
}
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
void Show( int nestLevel, std::ostream& os );
|
void Show( int nestLevel, std::ostream& os );
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -125,11 +125,11 @@ SCH_ITEM* WinEDA_SchematicFrame:: SchematicGeneralLocateAndDisplay( const wxPoin
|
||||||
DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), MARKERITEM );
|
DrawStruct = (SCH_ITEM*) PickStruct( refpoint, GetScreen(), MARKERITEM );
|
||||||
if( DrawStruct )
|
if( DrawStruct )
|
||||||
{
|
{
|
||||||
DrawMarkerStruct* Marker = (DrawMarkerStruct*) DrawStruct;
|
MARKER_SCH* Marker = (MARKER_SCH*) DrawStruct;
|
||||||
ii = Marker->m_Type;
|
Text = Marker->GetErrorText();
|
||||||
Text = Marker->GetComment();
|
|
||||||
if( Text.IsEmpty() )
|
if( Text.IsEmpty() )
|
||||||
Text = wxT( "NoComment" );
|
Text = wxT( "???" );
|
||||||
|
ii = Marker->GetMarkerType();
|
||||||
msg = NameMarqueurType[ii]; msg << wxT( " << " ) << Text;
|
msg = NameMarqueurType[ii]; msg << wxT( " << " ) << Text;
|
||||||
Affiche_Message( msg );
|
Affiche_Message( msg );
|
||||||
return DrawStruct;
|
return DrawStruct;
|
||||||
|
|
|
@ -493,7 +493,7 @@ void DeleteAllMarkers( int type )
|
||||||
{
|
{
|
||||||
SCH_SCREEN* screen;
|
SCH_SCREEN* screen;
|
||||||
SCH_ITEM * DrawStruct, * NextStruct;
|
SCH_ITEM * DrawStruct, * NextStruct;
|
||||||
DrawMarkerStruct* Marker;
|
MARKER_SCH* Marker;
|
||||||
|
|
||||||
EDA_ScreenList ScreenList;
|
EDA_ScreenList ScreenList;
|
||||||
|
|
||||||
|
@ -506,8 +506,8 @@ void DeleteAllMarkers( int type )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Marqueur trouve */
|
/* Marqueur trouve */
|
||||||
Marker = (DrawMarkerStruct*) DrawStruct;
|
Marker = (MARKER_SCH*) DrawStruct;
|
||||||
if( Marker->m_Type != type )
|
if( Marker->GetMarkerType() != type )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Suppression du marqueur */
|
/* Suppression du marqueur */
|
||||||
|
|
|
@ -15,10 +15,6 @@
|
||||||
#include "general.h"
|
#include "general.h"
|
||||||
#include "protos.h"
|
#include "protos.h"
|
||||||
|
|
||||||
|
|
||||||
extern char marq_bitmap[];
|
|
||||||
|
|
||||||
|
|
||||||
static EDA_BaseStruct* HighLightStruct = NULL;
|
static EDA_BaseStruct* HighLightStruct = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
@ -309,51 +305,3 @@ void DrawStructsInGhost( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Place un repere sur l'ecran au point de coordonnees PCB pos_X, pos_Y
|
|
||||||
* Le marqueur est defini par un tableau de 2 + (lig*col) elements:
|
|
||||||
* 1er element: dim nbre ligne
|
|
||||||
* 2er element: dim nbre col
|
|
||||||
* suite: lig * col elements a 0 ou 1 : si 1 mise a color du pixel
|
|
||||||
*
|
|
||||||
* copie la description du marqueur en current_marqueur (global)
|
|
||||||
*/
|
|
||||||
void Draw_Marqueur( WinEDA_DrawPanel* panel, wxDC* DC,
|
|
||||||
wxPoint pos, char* pt_bitmap, int DrawMode, int Color )
|
|
||||||
{
|
|
||||||
int px, py, color;
|
|
||||||
char ii, ii_max, jj, jj_max;
|
|
||||||
|
|
||||||
if( pt_bitmap == NULL )
|
|
||||||
pt_bitmap = marq_bitmap;
|
|
||||||
|
|
||||||
px = GRMapX( pos.x );
|
|
||||||
py = GRMapY( pos.y );
|
|
||||||
|
|
||||||
/* Lecture des dimensions */
|
|
||||||
ii_max = *(pt_bitmap++);
|
|
||||||
jj_max = *(pt_bitmap++);
|
|
||||||
|
|
||||||
/* lecture des offsets */
|
|
||||||
px += *(pt_bitmap++);
|
|
||||||
py += *(pt_bitmap++);
|
|
||||||
|
|
||||||
color = *(pt_bitmap++);
|
|
||||||
if( (Color > 0) )
|
|
||||||
color = Color;
|
|
||||||
if( color < 0 )
|
|
||||||
color = 0;
|
|
||||||
GRSetDrawMode( DC, DrawMode );
|
|
||||||
|
|
||||||
/* 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, color );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -26,10 +26,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/* fonctions exportees */
|
|
||||||
|
|
||||||
/* fonctions importees */
|
|
||||||
|
|
||||||
/* fonctions locales */
|
/* fonctions locales */
|
||||||
static bool WriteDiagnosticERC( const wxString& FullFileName );
|
static bool WriteDiagnosticERC( const wxString& FullFileName );
|
||||||
static void Diagnose( WinEDA_DrawPanel* panel,
|
static void Diagnose( WinEDA_DrawPanel* panel,
|
||||||
|
@ -217,12 +213,12 @@ void DIALOG_ERC::TestErc( wxTextCtrl* aMessagesList )
|
||||||
m_SheetName ) == 0 )
|
m_SheetName ) == 0 )
|
||||||
{
|
{
|
||||||
/* Create a new marker type ERC error*/
|
/* Create a new marker type ERC error*/
|
||||||
DrawMarkerStruct* Marker =
|
MARKER_SCH* Marker =
|
||||||
new DrawMarkerStruct( ( (DrawSheetStruct*) item_to_test )->m_Pos,
|
new MARKER_SCH( ( (DrawSheetStruct*) item_to_test )->m_Pos,
|
||||||
_( "Duplicate Sheet name" ) );
|
_( "Duplicate Sheet name" ) );
|
||||||
|
|
||||||
Marker->m_Type = MARQ_ERC;
|
Marker->SetMarkerType( MARQ_ERC );
|
||||||
Marker->m_MarkFlags = ERR;
|
Marker->SetErrorLevel( ERR );
|
||||||
Marker->SetNext( Screen->EEDrawList );
|
Marker->SetNext( Screen->EEDrawList );
|
||||||
Screen->EEDrawList = Marker;
|
Screen->EEDrawList = Marker;
|
||||||
g_EESchemaVar.NbErrorErc++;
|
g_EESchemaVar.NbErrorErc++;
|
||||||
|
@ -356,15 +352,15 @@ void DIALOG_ERC::DisplayERC_MarkersList( )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Marqueur trouve */
|
/* Marqueur trouve */
|
||||||
DrawMarkerStruct* Marker = (DrawMarkerStruct*) DrawStruct;
|
MARKER_SCH* Marker = (MARKER_SCH*) DrawStruct;
|
||||||
if( Marker->m_Type != MARQ_ERC )
|
if( Marker->GetMarkerType() != MARQ_ERC )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Display diag */
|
/* Display diag */
|
||||||
wxString msg;
|
wxString msg;
|
||||||
msg.Printf(_("sheet %s: %s\n"),
|
msg.Printf(_("sheet %s: %s\n"),
|
||||||
Sheet->PathHumanReadable().GetData(),
|
Sheet->PathHumanReadable().GetData(),
|
||||||
Marker->GetComment().GetData() );
|
Marker->GetErrorText().GetData() );
|
||||||
m_MessagesList->AppendText( msg );
|
m_MessagesList->AppendText( msg );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -445,7 +441,7 @@ static void Diagnose( WinEDA_DrawPanel* aPanel,
|
||||||
* if MinConn < 0: this is an error on labels
|
* if MinConn < 0: this is an error on labels
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
DrawMarkerStruct* Marker = NULL;
|
MARKER_SCH* Marker = NULL;
|
||||||
wxString DiagLevel;
|
wxString DiagLevel;
|
||||||
SCH_SCREEN* screen;
|
SCH_SCREEN* screen;
|
||||||
int ii, jj;
|
int ii, jj;
|
||||||
|
@ -454,27 +450,30 @@ static void Diagnose( WinEDA_DrawPanel* aPanel,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Creation du nouveau marqueur type Erreur ERC */
|
/* Creation du nouveau marqueur type Erreur ERC */
|
||||||
Marker = new DrawMarkerStruct( aNetItemRef->m_Start, wxEmptyString );
|
Marker = new MARKER_SCH( aNetItemRef->m_Start, wxEmptyString );
|
||||||
|
|
||||||
Marker->m_Type = MARQ_ERC;
|
Marker->SetMarkerType( MARQ_ERC );
|
||||||
Marker->m_MarkFlags = WAR;
|
Marker->SetErrorLevel( WAR );
|
||||||
screen = aNetItemRef->m_SheetList.LastScreen();
|
screen = aNetItemRef->m_SheetList.LastScreen();
|
||||||
Marker->SetNext( screen->EEDrawList );
|
Marker->SetNext( screen->EEDrawList );
|
||||||
screen->EEDrawList = Marker;
|
screen->EEDrawList = Marker;
|
||||||
g_EESchemaVar.NbErrorErc++;
|
g_EESchemaVar.NbErrorErc++;
|
||||||
g_EESchemaVar.NbWarningErc++;
|
g_EESchemaVar.NbWarningErc++;
|
||||||
|
|
||||||
|
wxString msg;
|
||||||
if( aMinConn < 0 ) // Traitement des erreurs sur labels
|
if( aMinConn < 0 ) // Traitement des erreurs sur labels
|
||||||
{
|
{
|
||||||
if( (aNetItemRef->m_Type == NET_HIERLABEL)
|
if( (aNetItemRef->m_Type == NET_HIERLABEL)
|
||||||
|| (aNetItemRef->m_Type == NET_HIERBUSLABELMEMBER) )
|
|| (aNetItemRef->m_Type == NET_HIERBUSLABELMEMBER) )
|
||||||
{
|
{
|
||||||
Marker->m_Comment.Printf( _( "Warning HLabel %s not connected to SheetLabel" ),
|
msg.Printf( _( "Warning HLabel %s not connected to SheetLabel" ),
|
||||||
aNetItemRef->m_Label->GetData() );
|
aNetItemRef->m_Label->GetData() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Marker->m_Comment.Printf( _( "Warning SheetLabel %s not connected to HLabel" ),
|
msg.Printf( _( "Warning SheetLabel %s not connected to HLabel" ),
|
||||||
aNetItemRef->m_Label->GetData() );
|
aNetItemRef->m_Label->GetData() );
|
||||||
|
|
||||||
|
Marker->SetErrorText(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -493,8 +492,9 @@ static void Diagnose( WinEDA_DrawPanel* aPanel,
|
||||||
{
|
{
|
||||||
if( aMinConn == NOC ) /* 1 seul element dans le net */
|
if( aMinConn == NOC ) /* 1 seul element dans le net */
|
||||||
{
|
{
|
||||||
Marker->m_Comment.Printf( _( "Warning Cmp %s, Pin %s (%s) Unconnected" ),
|
msg.Printf( _( "Warning Cmp %s, Pin %s (%s) Unconnected" ),
|
||||||
cmp_ref.GetData(), string_pinnum.GetData(), MsgPinElectricType[ii] );
|
cmp_ref.GetData(), string_pinnum.GetData(), MsgPinElectricType[ii] );
|
||||||
|
Marker->SetErrorText(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -502,18 +502,20 @@ static void Diagnose( WinEDA_DrawPanel* aPanel,
|
||||||
{
|
{
|
||||||
if ( aNetItemRef->m_Type == NET_PIN && aNetItemRef->m_Link )
|
if ( aNetItemRef->m_Type == NET_PIN && aNetItemRef->m_Link )
|
||||||
cmp_ref = ((SCH_COMPONENT*)aNetItemRef->m_Link)->GetRef( &aNetItemRef->m_SheetList );
|
cmp_ref = ((SCH_COMPONENT*)aNetItemRef->m_Link)->GetRef( &aNetItemRef->m_SheetList );
|
||||||
Marker->m_Comment.Printf(
|
msg.Printf(
|
||||||
_( "Warning Cmp %s, Pin %s (%s) not driven (Net %d)" ),
|
_( "Warning Cmp %s, Pin %s (%s) not driven (Net %d)" ),
|
||||||
cmp_ref.GetData(), string_pinnum.GetData(),
|
cmp_ref.GetData(), string_pinnum.GetData(),
|
||||||
MsgPinElectricType[ii], aNetItemRef->GetNet() );
|
MsgPinElectricType[ii], aNetItemRef->GetNet() );
|
||||||
|
Marker->SetErrorText(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( aDiag == UNC )
|
if( aDiag == UNC )
|
||||||
{
|
{
|
||||||
Marker->m_Comment.Printf(
|
msg.Printf(
|
||||||
_( "Warning More than 1 Pin connected to UnConnect symbol @X=%f"", Y=%f""" ),
|
_( "Warning More than 1 Pin connected to UnConnect symbol @X=%f"", Y=%f""" ),
|
||||||
(float)Marker->m_Pos.x/1000, (float)Marker->m_Pos.y/1000);
|
(float)Marker->GetPos().x/1000, (float)Marker->GetPos().y/1000);
|
||||||
|
Marker->SetErrorText(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -525,7 +527,7 @@ static void Diagnose( WinEDA_DrawPanel* aPanel,
|
||||||
if( aDiag == ERR )
|
if( aDiag == ERR )
|
||||||
{
|
{
|
||||||
DiagLevel = _( "Error" );
|
DiagLevel = _( "Error" );
|
||||||
Marker->m_MarkFlags = ERR;
|
Marker->SetErrorLevel( ERR );
|
||||||
g_EESchemaVar.NbWarningErc--;
|
g_EESchemaVar.NbWarningErc--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -535,11 +537,12 @@ static void Diagnose( WinEDA_DrawPanel* aPanel,
|
||||||
alt_cmp = wxT("?");
|
alt_cmp = wxT("?");
|
||||||
if ( aNetItemTst->m_Type == NET_PIN && aNetItemTst->m_Link )
|
if ( aNetItemTst->m_Type == NET_PIN && aNetItemTst->m_Link )
|
||||||
alt_cmp = ((SCH_COMPONENT*)aNetItemTst->m_Link)->GetRef( &aNetItemTst->m_SheetList );
|
alt_cmp = ((SCH_COMPONENT*)aNetItemTst->m_Link)->GetRef( &aNetItemTst->m_SheetList );
|
||||||
Marker->m_Comment.Printf( _("%s: Cmp %s, Pin %s (%s) connected to Cmp %s, Pin %s (%s) (net %d)" ),
|
msg.Printf( _("%s: Cmp %s, Pin %s (%s) connected to Cmp %s, Pin %s (%s) (net %d)" ),
|
||||||
DiagLevel.GetData(),
|
DiagLevel.GetData(),
|
||||||
cmp_ref.GetData(), string_pinnum.GetData(), MsgPinElectricType[ii],
|
cmp_ref.GetData(), string_pinnum.GetData(), MsgPinElectricType[ii],
|
||||||
alt_cmp.GetData(), alt_string_pinnum.GetData(),MsgPinElectricType[jj],
|
alt_cmp.GetData(), alt_string_pinnum.GetData(),MsgPinElectricType[jj],
|
||||||
aNetItemRef->GetNet() );
|
aNetItemRef->GetNet() );
|
||||||
|
Marker->SetErrorText(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -641,8 +644,8 @@ static bool WriteDiagnosticERC( const wxString& FullFileName )
|
||||||
/* Create the Diagnostic file (<xxx>.erc file)
|
/* Create the Diagnostic file (<xxx>.erc file)
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
EDA_BaseStruct* DrawStruct;
|
SCH_ITEM* DrawStruct;
|
||||||
DrawMarkerStruct* Marker;
|
MARKER_SCH* Marker;
|
||||||
char Line[256];
|
char Line[256];
|
||||||
static FILE* OutErc;
|
static FILE* OutErc;
|
||||||
DrawSheetPath* Sheet;
|
DrawSheetPath* Sheet;
|
||||||
|
@ -679,15 +682,15 @@ static bool WriteDiagnosticERC( const wxString& FullFileName )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Marqueur trouve */
|
/* Marqueur trouve */
|
||||||
Marker = (DrawMarkerStruct*) DrawStruct;
|
Marker = (MARKER_SCH*) DrawStruct;
|
||||||
if( Marker->m_Type != MARQ_ERC )
|
if( Marker->GetMarkerType() != MARQ_ERC )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Write diag marqueur */
|
/* Write diag marqueur */
|
||||||
msg.Printf( _( "ERC: %s (X= %2.3f inches, Y= %2.3f inches\n" ),
|
msg.Printf( _( "ERC: %s (X= %2.3f inches, Y= %2.3f inches\n" ),
|
||||||
Marker->GetComment().GetData(),
|
Marker->GetErrorText().GetData(),
|
||||||
(float) Marker->m_Pos.x / 1000,
|
(float) Marker->GetPos().x / 1000,
|
||||||
(float) Marker->m_Pos.y / 1000 );
|
(float) Marker->GetPos().y / 1000 );
|
||||||
|
|
||||||
fprintf( OutErc, "%s", CONV_TO_UTF8( msg ) );
|
fprintf( OutErc, "%s", CONV_TO_UTF8( msg ) );
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,7 +267,7 @@ SCH_ITEM* WinEDA_SchematicFrame::FindMarker( int SearchType )
|
||||||
{
|
{
|
||||||
DrawSheetPath* sheet, * FirstSheet = NULL;
|
DrawSheetPath* sheet, * FirstSheet = NULL;
|
||||||
SCH_ITEM* DrawList, * FirstStruct = NULL, * Struct = NULL;
|
SCH_ITEM* DrawList, * FirstStruct = NULL, * Struct = NULL;
|
||||||
DrawMarkerStruct* Marker = NULL;
|
MARKER_SCH* Marker = NULL;
|
||||||
int StartCount;
|
int StartCount;
|
||||||
bool NotFound;
|
bool NotFound;
|
||||||
wxPoint firstpos, pos;
|
wxPoint firstpos, pos;
|
||||||
|
@ -292,7 +292,7 @@ SCH_ITEM* WinEDA_SchematicFrame::FindMarker( int SearchType )
|
||||||
{
|
{
|
||||||
if( DrawList->Type() == DRAW_MARKER_STRUCT_TYPE )
|
if( DrawList->Type() == DRAW_MARKER_STRUCT_TYPE )
|
||||||
{
|
{
|
||||||
Marker = (DrawMarkerStruct*) DrawList;
|
Marker = (MARKER_SCH*) DrawList;
|
||||||
NotFound = FALSE;
|
NotFound = FALSE;
|
||||||
pos = Marker->m_Pos;
|
pos = Marker->m_Pos;
|
||||||
if( FirstSheet == NULL ) /* First item found */
|
if( FirstSheet == NULL ) /* First item found */
|
||||||
|
|
|
@ -49,7 +49,7 @@ bool WinEDA_SchematicFrame::LoadOneEEFile( SCH_SCREEN* screen,
|
||||||
DrawPolylineStruct* PolylineStruct;
|
DrawPolylineStruct* PolylineStruct;
|
||||||
EDA_DrawLineStruct* SegmentStruct;
|
EDA_DrawLineStruct* SegmentStruct;
|
||||||
DrawBusEntryStruct* RaccordStruct;
|
DrawBusEntryStruct* RaccordStruct;
|
||||||
DrawMarkerStruct* MarkerStruct;
|
MARKER_SCH* Marker;
|
||||||
DrawNoConnectStruct* NoConnectStruct;
|
DrawNoConnectStruct* NoConnectStruct;
|
||||||
int LineCount;
|
int LineCount;
|
||||||
wxString MsgDiag; /* Error and log messages */
|
wxString MsgDiag; /* Error and log messages */
|
||||||
|
@ -335,22 +335,23 @@ at line %d, aborted" ),
|
||||||
{
|
{
|
||||||
char* text;
|
char* text;
|
||||||
char BufLine[1024];
|
char BufLine[1024];
|
||||||
MarkerStruct = new DrawMarkerStruct( pos, wxEmptyString );
|
Marker = new MARKER_SCH( pos, wxEmptyString );
|
||||||
|
|
||||||
ii = ReadDelimitedText( BufLine, Line, 256 );
|
ii = ReadDelimitedText( BufLine, Line, 256 );
|
||||||
MarkerStruct->m_Type = (TypeMarker) ( (Name1[0] & 255) - 'A' );
|
int type = (TypeMarker) ( (Name1[0] & 255) - 'A' );
|
||||||
if( MarkerStruct->m_Type < 0 )
|
if( type < 0 )
|
||||||
MarkerStruct->m_Type = MARQ_UNSPEC;
|
type = MARQ_UNSPEC;
|
||||||
|
Marker->SetMarkerType( type );
|
||||||
if( ii )
|
if( ii )
|
||||||
MarkerStruct->m_Comment = CONV_FROM_UTF8( BufLine );
|
Marker->SetErrorText( CONV_FROM_UTF8( BufLine ) );
|
||||||
text = strstr( Line, " F=" );
|
text = strstr( Line, " F=" );
|
||||||
if( text )
|
if( text )
|
||||||
{
|
{
|
||||||
sscanf( text + 3, "%X", &ii );
|
sscanf( text + 3, "%X", &ii );
|
||||||
MarkerStruct->m_MarkFlags = ii;
|
Marker->SetErrorLevel( ii );
|
||||||
}
|
}
|
||||||
MarkerStruct->SetNext( screen->EEDrawList );
|
Marker->SetNext( screen->EEDrawList );
|
||||||
screen->EEDrawList = MarkerStruct;
|
screen->EEDrawList = Marker;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -297,12 +297,10 @@ bool SnapPoint2( const wxPoint& aPosRef, int SearchMask,
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
{
|
{
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#define STRUCT ( (DrawMarkerStruct*) DrawList )
|
#define STRUCT ( (MARKER_SCH*) DrawList )
|
||||||
if( !(SearchMask & MARKERITEM) )
|
if( !(SearchMask & MARKERITEM) )
|
||||||
break;
|
break;
|
||||||
int size = (int) ( (DRAWMARKER_SIZE / aScaleFactor) / 2 );
|
if( STRUCT->HitTest(aPosRef) )
|
||||||
wxPoint dist = aPosRef - STRUCT->m_Pos;
|
|
||||||
if( (abs( dist.x ) <= size) && (abs( dist.y ) <= size) )
|
|
||||||
{
|
{
|
||||||
LastSnappedStruct = DrawList;
|
LastSnappedStruct = DrawList;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -472,7 +470,7 @@ bool DrawStructInBox( int x1, int y1, int x2, int y2, SCH_ITEM* DrawStruct )
|
||||||
|
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
#undef STRUCT
|
#undef STRUCT
|
||||||
#define STRUCT ( (DrawMarkerStruct*) DrawStruct )
|
#define STRUCT ( (MARKER_SCH*) DrawStruct )
|
||||||
if( (STRUCT->m_Pos.x >= x1) && (STRUCT->m_Pos.x <= x2)
|
if( (STRUCT->m_Pos.x >= x1) && (STRUCT->m_Pos.x <= x2)
|
||||||
&& (STRUCT->m_Pos.y >= y1) && (STRUCT->m_Pos.y <= y2) )
|
&& (STRUCT->m_Pos.y >= y1) && (STRUCT->m_Pos.y <= y2) )
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
|
@ -167,9 +167,6 @@ Hierarchical_PIN_Sheet_Struct * LocateAnyPinSheet(const wxPoint & RefPos,
|
||||||
void DrawDanglingSymbol(WinEDA_DrawPanel * panel,wxDC * DC,
|
void DrawDanglingSymbol(WinEDA_DrawPanel * panel,wxDC * DC,
|
||||||
const wxPoint & pos, int Color);
|
const wxPoint & pos, int Color);
|
||||||
|
|
||||||
void Draw_Marqueur(WinEDA_DrawPanel * panel, wxDC * DC,
|
|
||||||
wxPoint pos, char* pt_bitmap, int DrawMode, int Color);
|
|
||||||
|
|
||||||
void DrawStructsInGhost(WinEDA_DrawPanel * panel, wxDC * DC,
|
void DrawStructsInGhost(WinEDA_DrawPanel * panel, wxDC * DC,
|
||||||
SCH_ITEM * DrawStruct, int dx, int dy );
|
SCH_ITEM * DrawStruct, int dx, int dy );
|
||||||
void SetHighLightStruct(SCH_ITEM *HighLight);
|
void SetHighLightStruct(SCH_ITEM *HighLight);
|
||||||
|
|
|
@ -137,8 +137,8 @@ void SwapData( EDA_BaseStruct* Item )
|
||||||
case DRAW_MARKER_STRUCT_TYPE:
|
case DRAW_MARKER_STRUCT_TYPE:
|
||||||
#undef SOURCE
|
#undef SOURCE
|
||||||
#undef DEST
|
#undef DEST
|
||||||
#define SOURCE ( (DrawMarkerStruct*) Item )
|
#define SOURCE ( (MARKER_SCH*) Item )
|
||||||
#define DEST ( (DrawMarkerStruct*) image )
|
#define DEST ( (MARKER_SCH*) image )
|
||||||
EXCHG( SOURCE->m_Pos, DEST->m_Pos );
|
EXCHG( SOURCE->m_Pos, DEST->m_Pos );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,219 @@
|
||||||
|
/*
|
||||||
|
* This program source code file is part of KICAD, a free EDA CAD application.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007 Dick Hollenbeck, dick@softplc.com
|
||||||
|
* Copyright (C) 2007 Kicad Developers, see change_log.txt for contributors.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, you may find one here:
|
||||||
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||||
|
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||||
|
* or you may write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CLASS_DRC_ITEM_H
|
||||||
|
#define _CLASS_DRC_ITEM_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class DRC_ITEM
|
||||||
|
* is a holder for a DRC (in Pcbnew) or ERC (in Eeschema) error item.
|
||||||
|
* It is generated when two objects are too close (DRC)
|
||||||
|
* or two connected objects (pins) have incompatibleelectrical type (ERC).
|
||||||
|
* There are holders for information on two items. The
|
||||||
|
* information held is the board coordinate and the MenuText for each item.
|
||||||
|
* Also held is the type of error by number and the location of the MARKER.
|
||||||
|
* A function is provided to translate that number into text.
|
||||||
|
* Some errors involve only one item (item with an incorrect param) so
|
||||||
|
* m_hasSecondItem is set to false in this case.
|
||||||
|
*/
|
||||||
|
class DRC_ITEM
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
int m_ErrorCode; ///< the error code's numeric value
|
||||||
|
wxString m_MainText; ///< text for the first BOARD_ITEM or SCH_ITEM
|
||||||
|
wxString m_AuxiliaryText; ///< text for the second BOARD_ITEM or SCH_ITEM
|
||||||
|
wxPoint m_MainPosition; ///< the location of the first (or main ) BOARD_ITEM or SCH_ITEM. This is also the position of the marker
|
||||||
|
wxPoint m_AuxiliaryPosition; ///< the location of the second BOARD_ITEM or SCH_ITEM
|
||||||
|
bool m_hasSecondItem; ///< true when 2 items create a DRC/ERC error, false if only one item
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
DRC_ITEM()
|
||||||
|
{
|
||||||
|
m_ErrorCode = 0;
|
||||||
|
m_hasSecondItem = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DRC_ITEM( int aErrorCode,
|
||||||
|
const wxString& aMainText, const wxString& bAuxiliaryText,
|
||||||
|
const wxPoint& aMainPos, const wxPoint& bAuxiliaryPos )
|
||||||
|
{
|
||||||
|
SetData( aErrorCode,
|
||||||
|
aMainText, bAuxiliaryText,
|
||||||
|
aMainPos, bAuxiliaryPos );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DRC_ITEM( int aErrorCode,
|
||||||
|
const wxString& aText, const wxPoint& aPos )
|
||||||
|
{
|
||||||
|
SetData( aErrorCode, aText, aPos );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SetData( int aErrorCode,
|
||||||
|
const wxString& aMainText, const wxPoint& aMainPos )
|
||||||
|
{
|
||||||
|
SetData( aErrorCode,
|
||||||
|
aMainText, aMainText,
|
||||||
|
aMainPos, aMainPos );
|
||||||
|
m_hasSecondItem = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SetData( int aErrorCode,
|
||||||
|
const wxString& aMainText, const wxString& bAuxiliaryText,
|
||||||
|
const wxPoint& aMainPos, const wxPoint& bAuxiliaryPos )
|
||||||
|
{
|
||||||
|
m_ErrorCode = aErrorCode;
|
||||||
|
m_MainText = aMainText;
|
||||||
|
m_AuxiliaryText = bAuxiliaryText;
|
||||||
|
m_MainPosition = aMainPos;
|
||||||
|
m_AuxiliaryPosition = bAuxiliaryPos;
|
||||||
|
m_hasSecondItem = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool HasSecondItem() const { return m_hasSecondItem; }
|
||||||
|
|
||||||
|
/** acces to A and B texts
|
||||||
|
*/
|
||||||
|
wxString GetMainText() const { return m_MainText; }
|
||||||
|
wxString GetAuxiliaryText() const { return m_AuxiliaryText; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function ShowHtml
|
||||||
|
* translates this object into a fragment of HTML suitable for the
|
||||||
|
* wxWidget's wxHtmlListBox class.
|
||||||
|
* @return wxString - the html text.
|
||||||
|
*/
|
||||||
|
wxString ShowHtml() const
|
||||||
|
{
|
||||||
|
wxString ret;
|
||||||
|
|
||||||
|
if( m_hasSecondItem )
|
||||||
|
{
|
||||||
|
// an html fragment for the entire message in the listbox. feel free
|
||||||
|
// to add color if you want:
|
||||||
|
ret.Printf( _( "ErrType(%d): <b>%s</b><ul><li> %s: %s </li><li> %s: %s </li></ul>" ),
|
||||||
|
m_ErrorCode,
|
||||||
|
GetErrorText().GetData(),
|
||||||
|
ShowCoord( m_MainPosition ).GetData(), m_MainText.GetData(),
|
||||||
|
ShowCoord( m_AuxiliaryPosition ).GetData(), m_AuxiliaryText.GetData() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret.Printf( _( "ErrType(%d): <b>%s</b><ul><li> %s: %s </li></ul>" ),
|
||||||
|
m_ErrorCode,
|
||||||
|
GetErrorText().GetData(),
|
||||||
|
ShowCoord( m_MainPosition ).GetData(), m_MainText.GetData() );
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function ShowReport
|
||||||
|
* translates this object into a text string suitable for saving
|
||||||
|
* to disk in a report.
|
||||||
|
* @return wxString - the simple multi-line report text.
|
||||||
|
*/
|
||||||
|
wxString ShowReport() const
|
||||||
|
{
|
||||||
|
wxString ret;
|
||||||
|
|
||||||
|
if( m_hasSecondItem )
|
||||||
|
{
|
||||||
|
ret.Printf( wxT( "ErrType(%d): %s\n %s: %s\n %s: %s\n" ),
|
||||||
|
m_ErrorCode,
|
||||||
|
GetErrorText().GetData(),
|
||||||
|
ShowCoord( m_MainPosition ).GetData(), m_MainText.GetData(),
|
||||||
|
ShowCoord( m_AuxiliaryPosition ).GetData(), m_AuxiliaryText.GetData() );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret.Printf( wxT( "ErrType(%d): %s\n %s: %s\n" ),
|
||||||
|
m_ErrorCode,
|
||||||
|
GetErrorText().GetData(),
|
||||||
|
ShowCoord( m_MainPosition ).GetData(), m_MainText.GetData() );
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetErrorCode
|
||||||
|
* returns the error code.
|
||||||
|
*/
|
||||||
|
int GetErrorCode() const
|
||||||
|
{
|
||||||
|
return m_ErrorCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetErrorText
|
||||||
|
* returns the string form of a drc error code.
|
||||||
|
*/
|
||||||
|
wxString GetErrorText() const;
|
||||||
|
|
||||||
|
const wxString& GetTextA() const
|
||||||
|
{
|
||||||
|
return m_MainText;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const wxString& GetTextB() const
|
||||||
|
{
|
||||||
|
return m_AuxiliaryText;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const wxPoint& GetPointA() const
|
||||||
|
{
|
||||||
|
return m_MainPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const wxPoint& GetPointB() const
|
||||||
|
{
|
||||||
|
return m_AuxiliaryPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function ShowCoord
|
||||||
|
* formats a coordinate or position to text.
|
||||||
|
* @param aPos The position to format
|
||||||
|
* @return wxString - The formated string
|
||||||
|
*/
|
||||||
|
static wxString ShowCoord( const wxPoint& aPos );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _CLASS_DRC_ITEM_H
|
|
@ -0,0 +1,147 @@
|
||||||
|
/***************************************/
|
||||||
|
/* Markers: used to show a drc problem */
|
||||||
|
/***************************************/
|
||||||
|
|
||||||
|
#ifndef _CLASS_MARKER_BASE_H
|
||||||
|
#define _CLASS_MARKER_BASE_H
|
||||||
|
|
||||||
|
#include "class_drc_item.h"
|
||||||
|
|
||||||
|
class MARKER_BASE
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxPoint m_Pos; ///< position of the marker
|
||||||
|
protected:
|
||||||
|
char* m_Bitmap; ///< Shape (bitmap)
|
||||||
|
int m_MarkerType; ///< Can be used as a flag
|
||||||
|
int m_Color; ///< color
|
||||||
|
wxSize m_Size; ///< Size of the graphic symbol
|
||||||
|
|
||||||
|
DRC_ITEM m_drc;
|
||||||
|
|
||||||
|
void init();
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
MARKER_BASE( );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
* @param aErrorCode The categorizing identifier for an error
|
||||||
|
* @param aMarkerPos The position of the MARKER on the BOARD
|
||||||
|
* @param aText Text describing the first of two objects
|
||||||
|
* @param aPos The position of the first of two objects
|
||||||
|
* @param bText Text describing the second of the two conflicting objects
|
||||||
|
* @param bPos The position of the second of two objects
|
||||||
|
*/
|
||||||
|
MARKER_BASE( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos,
|
||||||
|
const wxString& bText, const wxPoint& bPos );
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
* @param aErrorCode The categorizing identifier for an error
|
||||||
|
* @param aMarkerPos The position of the MARKER on the BOARD
|
||||||
|
* @param aText Text describing the object
|
||||||
|
* @param aPos The position of the object
|
||||||
|
*/
|
||||||
|
MARKER_BASE( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos );
|
||||||
|
|
||||||
|
|
||||||
|
~MARKER_BASE();
|
||||||
|
|
||||||
|
/** Function DrawMarker
|
||||||
|
*/
|
||||||
|
void DrawMarker( WinEDA_DrawPanel* panel, wxDC* DC, int DrawMode, const wxPoint& offset );
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetPos
|
||||||
|
* returns the position of this MARKER, const.
|
||||||
|
*/
|
||||||
|
const wxPoint& GetPos() const
|
||||||
|
{
|
||||||
|
return m_Pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Function to set/get error levels (warning, fatal ..)
|
||||||
|
* this value is stored in m_MarkerType
|
||||||
|
*/
|
||||||
|
void SetErrorLevel(int aErrorLevel )
|
||||||
|
{
|
||||||
|
m_MarkerType &= 0xFF00;
|
||||||
|
m_MarkerType &= 0xFF;
|
||||||
|
m_MarkerType |= aErrorLevel << 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
int GetErrorLevel( ) const
|
||||||
|
{
|
||||||
|
return (m_MarkerType >> 8) & 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Functions to set/get marker type (DRC, ERC, or other)
|
||||||
|
* this value is stored in m_MarkerType
|
||||||
|
*/
|
||||||
|
void SetMarkerType(int aMarkerType )
|
||||||
|
{
|
||||||
|
m_MarkerType &= 0xFF;
|
||||||
|
aMarkerType &= 0xFF;
|
||||||
|
m_MarkerType |= aMarkerType;
|
||||||
|
}
|
||||||
|
|
||||||
|
int GetMarkerType( ) const
|
||||||
|
{
|
||||||
|
return m_MarkerType & 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function SetData
|
||||||
|
* fills in all the reportable data associated with a MARKER.
|
||||||
|
* @param aErrorCode The categorizing identifier for an error
|
||||||
|
* @param aMarkerPos The position of the MARKER on the BOARD
|
||||||
|
* @param aText Text describing the first of two objects
|
||||||
|
* @param aPos The position of the first of two objects
|
||||||
|
* @param bText Text describing the second of the two conflicting objects
|
||||||
|
* @param bPos The position of the second of two objects
|
||||||
|
*/
|
||||||
|
void SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos,
|
||||||
|
const wxString& bText, const wxPoint& bPos );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function SetData
|
||||||
|
* fills in all the reportable data associated with a MARKER.
|
||||||
|
* @param aErrorCode The categorizing identifier for an error
|
||||||
|
* @param aMarkerPos The position of the MARKER on the BOARD
|
||||||
|
* @param aText Text describing the object
|
||||||
|
* @param aPos The position of the object
|
||||||
|
*/
|
||||||
|
void SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
|
const wxString& aText, const wxPoint& aPos );
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function GetReporter
|
||||||
|
* returns the DRC_ITEM held within this MARKER so that its
|
||||||
|
* interface may be used.
|
||||||
|
* @return const& DRC_ITEM
|
||||||
|
*/
|
||||||
|
const DRC_ITEM& GetReporter() const
|
||||||
|
{
|
||||||
|
return m_drc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function HitTestMarker
|
||||||
|
* 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 HitTestMarker( const wxPoint& ref_pos );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _CLASS_MARKER_BASE_H
|
|
@ -13,106 +13,40 @@
|
||||||
#include "class_marker.h"
|
#include "class_marker.h"
|
||||||
|
|
||||||
|
|
||||||
/* Routines Locales : */
|
|
||||||
|
|
||||||
|
|
||||||
/* Default bitmap shape for markers */
|
|
||||||
static char Default_MarkerBitmap[] =
|
|
||||||
{
|
|
||||||
12, 12, /* x and y size of the bitmap */
|
|
||||||
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, 1, 0, 0, 0, 1, 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, 0, 1, 1, 1, 0, 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, 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, 0, 1, 1, 1,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*******************/
|
/*******************/
|
||||||
/* Classe MARKER */
|
/* Classe MARKER */
|
||||||
/*******************/
|
/*******************/
|
||||||
|
|
||||||
void MARKER::init()
|
|
||||||
{
|
|
||||||
m_Bitmap = NULL;
|
|
||||||
m_Type = 0;
|
|
||||||
m_Color = RED;
|
|
||||||
m_Bitmap = Default_MarkerBitmap;
|
|
||||||
m_Size.x = Default_MarkerBitmap[0];
|
|
||||||
m_Size.y = Default_MarkerBitmap[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
MARKER::MARKER( BOARD_ITEM* aParent ) :
|
MARKER::MARKER( BOARD_ITEM* aParent ) :
|
||||||
BOARD_ITEM( aParent, TYPE_MARKER ),
|
BOARD_ITEM( aParent, TYPE_MARKER ),
|
||||||
m_drc()
|
MARKER_BASE( )
|
||||||
{
|
{
|
||||||
init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MARKER::MARKER( int aErrorCode, const wxPoint& aMarkerPos,
|
MARKER::MARKER( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
const wxString& aText, const wxPoint& aPos,
|
const wxString& aText, const wxPoint& aPos,
|
||||||
const wxString& bText, const wxPoint& bPos ) :
|
const wxString& bText, const wxPoint& bPos ) :
|
||||||
BOARD_ITEM( NULL, TYPE_MARKER ) // parent set during BOARD::Add()
|
BOARD_ITEM( NULL, TYPE_MARKER ), // parent set during BOARD::Add()
|
||||||
{
|
MARKER_BASE( aErrorCode, aMarkerPos, aText, aPos, bText, bPos )
|
||||||
init();
|
|
||||||
|
|
||||||
SetData( aErrorCode, aMarkerPos,
|
{
|
||||||
aText, aPos,
|
|
||||||
bText, bPos );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MARKER::MARKER( int aErrorCode, const wxPoint& aMarkerPos,
|
MARKER::MARKER( int aErrorCode, const wxPoint& aMarkerPos,
|
||||||
const wxString& aText, const wxPoint& aPos ) :
|
const wxString& aText, const wxPoint& aPos ) :
|
||||||
BOARD_ITEM( NULL, TYPE_MARKER ) // parent set during BOARD::Add()
|
BOARD_ITEM( NULL, TYPE_MARKER ), // parent set during BOARD::Add()
|
||||||
|
MARKER_BASE( aErrorCode, aMarkerPos, aText, aPos )
|
||||||
{
|
{
|
||||||
init();
|
|
||||||
|
|
||||||
SetData( aErrorCode, aMarkerPos,
|
|
||||||
aText, aPos );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Effacement memoire de la structure */
|
/* Effacement memoire de la structure */
|
||||||
MARKER::~MARKER()
|
MARKER::~MARKER()
|
||||||
{
|
{
|
||||||
#if defined(DEBUG)
|
|
||||||
printf("MARKER %p deleted\n", this );
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MARKER::SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
|
||||||
const wxString& aText, const wxPoint& aPos,
|
|
||||||
const wxString& bText, const wxPoint& bPos )
|
|
||||||
{
|
|
||||||
m_drc.SetData( aErrorCode, aMarkerPos,
|
|
||||||
aText, bText,
|
|
||||||
aPos, bPos );
|
|
||||||
|
|
||||||
// @todo: switch on error code to set error code specific color, and possibly bitmap.
|
|
||||||
m_Color = WHITE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void MARKER::SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
|
||||||
const wxString& aText, const wxPoint& aPos )
|
|
||||||
{
|
|
||||||
m_drc.SetData( aErrorCode, aMarkerPos,
|
|
||||||
aText, aPos );
|
|
||||||
|
|
||||||
// @todo: switch on error code to set error code specific color, and possibly bitmap.
|
|
||||||
m_Color = WHITE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* supprime du chainage la structure Struct
|
/* supprime du chainage la structure Struct
|
||||||
* les structures arrieres et avant sont chainees directement
|
* les structures arrieres et avant sont chainees directement
|
||||||
*/
|
*/
|
||||||
|
@ -150,72 +84,3 @@ void MARKER::DisplayInfo( WinEDA_DrawFrame* frame )
|
||||||
text_pos = 25;
|
text_pos = 25;
|
||||||
Affiche_1_Parametre( frame, text_pos, txtA, txtB, DARKBROWN );
|
Affiche_1_Parametre( frame, text_pos, txtA, txtB, DARKBROWN );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**********************************************/
|
|
||||||
bool MARKER::HitTest( const wxPoint& refPos )
|
|
||||||
/**********************************************/
|
|
||||||
{
|
|
||||||
// the MARKER is 12 pixels by 12 pixels, but is not resized with zoom, so
|
|
||||||
// as zoom changes, the effective real size (in user units) of the MARKER changes.
|
|
||||||
|
|
||||||
wxSize TrueSize = m_Size;
|
|
||||||
if ( ActiveScreen )
|
|
||||||
{
|
|
||||||
ActiveScreen->Unscale( TrueSize );
|
|
||||||
}
|
|
||||||
|
|
||||||
wxPoint pos = GetPosition();
|
|
||||||
|
|
||||||
int dx = refPos.x - pos.x;
|
|
||||||
int dy = refPos.y - pos.y;
|
|
||||||
|
|
||||||
/* is refPos in the box: Marker size to right an bottom,
|
|
||||||
or size/2 to left or top */
|
|
||||||
if( dx <= TrueSize.x && dy <= TrueSize.y &&
|
|
||||||
dx >= -TrueSize.x/2 && dy >= -TrueSize.y/2 )
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************/
|
|
||||||
void MARKER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int DrawMode, const wxPoint& offset )
|
|
||||||
/**********************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Trace un repere sur l'ecran au point de coordonnees PCB pos
|
|
||||||
* Le marqueur est defini par un tableau de 2 + (lig*col) elements:
|
|
||||||
* 1er element: dim nbre ligne
|
|
||||||
* 2er element: dim nbre col
|
|
||||||
* suite: lig * col elements a 0 ou 1 : si 1 mise a color du pixel
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
int px, py;
|
|
||||||
int ii, jj;
|
|
||||||
char* pt_bitmap = m_Bitmap;
|
|
||||||
|
|
||||||
if( pt_bitmap == NULL ) return;
|
|
||||||
|
|
||||||
GRSetDrawMode( DC, DrawMode );
|
|
||||||
|
|
||||||
px = GRMapX( GetPosition().x );
|
|
||||||
py = GRMapY( GetPosition().y );
|
|
||||||
|
|
||||||
/* Get the bitmap size */
|
|
||||||
m_Size.x = *(pt_bitmap++);
|
|
||||||
m_Size.y = *(pt_bitmap++);
|
|
||||||
|
|
||||||
/* Draw the bitmap */
|
|
||||||
for( ii = 0; ii < m_Size.x; ii++ )
|
|
||||||
{
|
|
||||||
for( jj = 0; jj < m_Size.y; jj++, pt_bitmap++ )
|
|
||||||
{
|
|
||||||
if( *pt_bitmap )
|
|
||||||
GRSPutPixel( &panel->m_ClipBox, DC,
|
|
||||||
px + ii, py + jj, m_Color );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -9,17 +9,8 @@
|
||||||
|
|
||||||
#include "drc_stuff.h"
|
#include "drc_stuff.h"
|
||||||
|
|
||||||
class MARKER : public BOARD_ITEM
|
class MARKER : public BOARD_ITEM, public MARKER_BASE
|
||||||
{
|
{
|
||||||
protected:
|
|
||||||
char* m_Bitmap; ///< Shape (bitmap)
|
|
||||||
int m_Type;
|
|
||||||
int m_Color; ///< color
|
|
||||||
wxSize m_Size; ///< Size of the graphic symbol
|
|
||||||
|
|
||||||
DRC_ITEM m_drc;
|
|
||||||
|
|
||||||
void init();
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -50,68 +41,35 @@ public:
|
||||||
|
|
||||||
~MARKER();
|
~MARKER();
|
||||||
|
|
||||||
void UnLink();
|
void UnLink(); // Deprecated
|
||||||
void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int DrawMode, const wxPoint& offset = ZeroOffset );
|
|
||||||
|
|
||||||
|
|
||||||
|
/** Function Draw
|
||||||
|
*/
|
||||||
|
void Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC, int aDrawMode, const wxPoint& aOffset = ZeroOffset )
|
||||||
|
{
|
||||||
|
DrawMarker( aPanel, aDC, aDrawMode, aOffset );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetPosition
|
* Function GetPosition
|
||||||
* returns the position of this MARKER.
|
* returns the position of this MARKER.
|
||||||
*/
|
*/
|
||||||
wxPoint& GetPosition()
|
wxPoint& GetPosition()
|
||||||
{
|
{
|
||||||
return (wxPoint&) m_drc.GetPosition();
|
return (wxPoint&) m_Pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/** Function HitTest
|
||||||
* Function GetPos
|
* @return true if the point aPosRef is within item area
|
||||||
* returns the position of this MARKER, const.
|
* @param aPosRef = a wxPoint to test
|
||||||
*/
|
*/
|
||||||
const wxPoint& GetPos() const
|
bool HitTest( const wxPoint& aPosRef )
|
||||||
{
|
{
|
||||||
return m_drc.GetPosition();
|
return HitTestMarker( aPosRef );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function SetData
|
|
||||||
* fills in all the reportable data associated with a MARKER.
|
|
||||||
* @param aErrorCode The categorizing identifier for an error
|
|
||||||
* @param aMarkerPos The position of the MARKER on the BOARD
|
|
||||||
* @param aText Text describing the first of two objects
|
|
||||||
* @param aPos The position of the first of two objects
|
|
||||||
* @param bText Text describing the second of the two conflicting objects
|
|
||||||
* @param bPos The position of the second of two objects
|
|
||||||
*/
|
|
||||||
void SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
|
||||||
const wxString& aText, const wxPoint& aPos,
|
|
||||||
const wxString& bText, const wxPoint& bPos );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function SetData
|
|
||||||
* fills in all the reportable data associated with a MARKER.
|
|
||||||
* @param aErrorCode The categorizing identifier for an error
|
|
||||||
* @param aMarkerPos The position of the MARKER on the BOARD
|
|
||||||
* @param aText Text describing the object
|
|
||||||
* @param aPos The position of the object
|
|
||||||
*/
|
|
||||||
void SetData( int aErrorCode, const wxPoint& aMarkerPos,
|
|
||||||
const wxString& aText, const wxPoint& aPos );
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetReporter
|
|
||||||
* returns the DRC_ITEM held within this MARKER so that its
|
|
||||||
* interface may be used.
|
|
||||||
* @return const& DRC_ITEM
|
|
||||||
*/
|
|
||||||
const DRC_ITEM& GetReporter() const
|
|
||||||
{
|
|
||||||
return m_drc;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function DisplayInfo
|
* Function DisplayInfo
|
||||||
* has knowledge about the frame and how and where to put status information
|
* has knowledge about the frame and how and where to put status information
|
||||||
|
@ -133,15 +91,6 @@ public:
|
||||||
// "pure" virtual-ness
|
// "pure" virtual-ness
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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 );
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -313,7 +313,7 @@ void DIALOG_DRC_CONTROL::OnLeftDClickClearance( wxMouseEvent& event )
|
||||||
* ::wxPostEvent( GetEventHandler(), cmd );
|
* ::wxPostEvent( GetEventHandler(), cmd );
|
||||||
*/
|
*/
|
||||||
|
|
||||||
m_Parent->CursorGoto( item->GetPosition() );
|
m_Parent->CursorGoto( item->GetPointA() );
|
||||||
|
|
||||||
// turn control over to m_Parent, hide this DIALOG_DRC_CONTROL window,
|
// turn control over to m_Parent, hide this DIALOG_DRC_CONTROL window,
|
||||||
// no destruction so we can preserve listbox cursor
|
// no destruction so we can preserve listbox cursor
|
||||||
|
@ -453,7 +453,7 @@ void DIALOG_DRC_CONTROL::OnLeftDClickUnconnected( wxMouseEvent& event )
|
||||||
const DRC_ITEM* item = m_UnconnectedListBox->GetItem( selection );
|
const DRC_ITEM* item = m_UnconnectedListBox->GetItem( selection );
|
||||||
if( item )
|
if( item )
|
||||||
{
|
{
|
||||||
m_Parent->CursorGoto( item->GetPosition() );
|
m_Parent->CursorGoto( item->GetPointA() );
|
||||||
|
|
||||||
Hide();
|
Hide();
|
||||||
|
|
||||||
|
|
|
@ -346,7 +346,7 @@ void DRC::testUnconnected()
|
||||||
D_PAD* padStart = rat->m_PadStart;
|
D_PAD* padStart = rat->m_PadStart;
|
||||||
D_PAD* padEnd = rat->m_PadEnd;
|
D_PAD* padEnd = rat->m_PadEnd;
|
||||||
|
|
||||||
DRC_ITEM* uncItem = new DRC_ITEM( DRCE_UNCONNECTED_PADS, padStart->GetPosition(),
|
DRC_ITEM* uncItem = new DRC_ITEM( DRCE_UNCONNECTED_PADS,
|
||||||
padStart->MenuText( m_pcb ), padEnd->MenuText( m_pcb ),
|
padStart->MenuText( m_pcb ), padEnd->MenuText( m_pcb ),
|
||||||
padStart->GetPosition(), padEnd->GetPosition() );
|
padStart->GetPosition(), padEnd->GetPosition() );
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
|
|
||||||
#include "fctsys.h"
|
#include "fctsys.h"
|
||||||
|
#include "class_marker_base.h"
|
||||||
|
|
||||||
|
|
||||||
#define OK_DRC 0
|
#define OK_DRC 0
|
||||||
|
@ -64,199 +65,6 @@
|
||||||
#define DRCE_TOO_SMALL_VIA 28 ///< Too small via size
|
#define DRCE_TOO_SMALL_VIA 28 ///< Too small via size
|
||||||
#define DRCE_TOO_SMALL_MICROVIA 29 ///< Too small micro via size
|
#define DRCE_TOO_SMALL_MICROVIA 29 ///< Too small micro via size
|
||||||
|
|
||||||
/**
|
|
||||||
* Class DRC_ITEM
|
|
||||||
* is a holder for a DRC error item. It is generated when two objects are
|
|
||||||
* too close. There are holders for information on two items. The
|
|
||||||
* information held is the board coordinate and the MenuText for each item.
|
|
||||||
* Also held is the type of error by number and the location of the MARKER.
|
|
||||||
* A function is provided to translate that number into text.
|
|
||||||
* Some errors involve only one item (item with an incorrect param) so
|
|
||||||
* m_hasSecondItem is set to false in this case.
|
|
||||||
*/
|
|
||||||
class DRC_ITEM
|
|
||||||
{
|
|
||||||
protected:
|
|
||||||
int m_ErrorCode; ///< the error code's numeric value
|
|
||||||
wxPoint m_Pos; ///< position of the issue
|
|
||||||
wxString m_AText; ///< text for the first BOARD_ITEM
|
|
||||||
wxString m_BText; ///< text for the second BOARD_ITEM
|
|
||||||
wxPoint m_APos; ///< the location of the first (or main ) BOARD_ITEM
|
|
||||||
wxPoint m_BPos; ///< the location of the second BOARD_ITEM
|
|
||||||
bool m_hasSecondItem; ///< true when 2 items create a DRC error, false if only one item
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
DRC_ITEM() :
|
|
||||||
m_ErrorCode( 0 )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
DRC_ITEM( int aErrorCode, const wxPoint& aIssuePos,
|
|
||||||
const wxString& aText, const wxString& bText,
|
|
||||||
const wxPoint& aPos, const wxPoint& bPos )
|
|
||||||
{
|
|
||||||
SetData( aErrorCode, aIssuePos,
|
|
||||||
aText, bText,
|
|
||||||
aPos, bPos );
|
|
||||||
}
|
|
||||||
|
|
||||||
DRC_ITEM( int aErrorCode, const wxPoint& aIssuePos,
|
|
||||||
const wxString& aText, const wxPoint& aPos )
|
|
||||||
{
|
|
||||||
SetData( aErrorCode, aIssuePos, aText, aPos );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void SetData( int aErrorCode, const wxPoint& aIssuePos,
|
|
||||||
const wxString& aText, const wxPoint& aPos )
|
|
||||||
{
|
|
||||||
SetData( aErrorCode, aIssuePos,
|
|
||||||
aText, aText,
|
|
||||||
aPos, aPos );
|
|
||||||
m_hasSecondItem = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetData( int aErrorCode, const wxPoint& aIssuePos,
|
|
||||||
const wxString& aText, const wxString& bText,
|
|
||||||
const wxPoint& aPos, const wxPoint& bPos )
|
|
||||||
{
|
|
||||||
m_ErrorCode = aErrorCode;
|
|
||||||
m_Pos = aIssuePos;
|
|
||||||
m_AText = aText;
|
|
||||||
m_BText = bText;
|
|
||||||
m_APos = aPos;
|
|
||||||
m_BPos = bPos;
|
|
||||||
m_hasSecondItem = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool HasSecondItem() const { return m_hasSecondItem; }
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function ShowHtml
|
|
||||||
* translates this object into a fragment of HTML suitable for the
|
|
||||||
* wxWidget's wxHtmlListBox class.
|
|
||||||
* @return wxString - the html text.
|
|
||||||
*/
|
|
||||||
wxString ShowHtml() const
|
|
||||||
{
|
|
||||||
wxString ret;
|
|
||||||
|
|
||||||
if( m_hasSecondItem )
|
|
||||||
{
|
|
||||||
// an html fragment for the entire message in the listbox. feel free
|
|
||||||
// to add color if you want:
|
|
||||||
ret.Printf( _( "ErrType(%d): <b>%s</b><ul><li> %s: %s </li><li> %s: %s </li></ul>" ),
|
|
||||||
m_ErrorCode,
|
|
||||||
GetErrorText().GetData(),
|
|
||||||
ShowCoord( m_APos ).GetData(), m_AText.GetData(),
|
|
||||||
ShowCoord( m_BPos ).GetData(), m_BText.GetData() );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ret.Printf( _( "ErrType(%d): <b>%s</b><ul><li> %s: %s </li></ul>" ),
|
|
||||||
m_ErrorCode,
|
|
||||||
GetErrorText().GetData(),
|
|
||||||
ShowCoord( m_APos ).GetData(), m_AText.GetData() );
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function ShowReport
|
|
||||||
* translates this object into a text string suitable for saving
|
|
||||||
* to disk in a report.
|
|
||||||
* @return wxString - the simple multi-line report text.
|
|
||||||
*/
|
|
||||||
wxString ShowReport() const
|
|
||||||
{
|
|
||||||
wxString ret;
|
|
||||||
|
|
||||||
if( m_hasSecondItem )
|
|
||||||
{
|
|
||||||
ret.Printf( wxT( "ErrType(%d): %s\n %s: %s\n %s: %s\n" ),
|
|
||||||
m_ErrorCode,
|
|
||||||
GetErrorText().GetData(),
|
|
||||||
ShowCoord( m_APos ).GetData(), m_AText.GetData(),
|
|
||||||
ShowCoord( m_BPos ).GetData(), m_BText.GetData() );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ret.Printf( wxT( "ErrType(%d): %s\n %s: %s\n" ),
|
|
||||||
m_ErrorCode,
|
|
||||||
GetErrorText().GetData(),
|
|
||||||
ShowCoord( m_APos ).GetData(), m_AText.GetData() );
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetErrorCode
|
|
||||||
* returns the error code.
|
|
||||||
*/
|
|
||||||
int GetErrorCode() const
|
|
||||||
{
|
|
||||||
return m_ErrorCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetErrorText
|
|
||||||
* returns the string form of a drc error code.
|
|
||||||
*/
|
|
||||||
wxString GetErrorText() const;
|
|
||||||
|
|
||||||
const wxString& GetTextA() const
|
|
||||||
{
|
|
||||||
return m_AText;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const wxString& GetTextB() const
|
|
||||||
{
|
|
||||||
return m_BText;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const wxPoint& GetPointA() const
|
|
||||||
{
|
|
||||||
return m_APos;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const wxPoint& GetPointB() const
|
|
||||||
{
|
|
||||||
return m_BPos;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function GetPosition
|
|
||||||
* @return wxPoint& - the position of this report item within
|
|
||||||
* the drawing.
|
|
||||||
*/
|
|
||||||
const wxPoint& GetPosition() const
|
|
||||||
{
|
|
||||||
return m_Pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function ShowCoord
|
|
||||||
* formats a coordinate or position to text.
|
|
||||||
* @param aPos The position to format
|
|
||||||
* @return wxString - The formated string
|
|
||||||
*/
|
|
||||||
static wxString ShowCoord( const wxPoint& aPos );
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class WinEDA_DrawPanel;
|
class WinEDA_DrawPanel;
|
||||||
class MARKER;
|
class MARKER;
|
||||||
|
|
Loading…
Reference in New Issue