Commit 88b1c9b7 authored by charras's avatar charras

bug solved: netlist calculations could crash eeschema under very rare...

bug solved: netlist calculations could crash eeschema under very rare circumstances. See also changelog
parent c10fdc42
...@@ -5,6 +5,15 @@ Started 2007-June-11 ...@@ -5,6 +5,15 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2008-Aug-22 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+eeschema:
bug solved: netlist calculations could crash eeschema under very rare circumstances.
recent bug solved: background filled shapes (filled but not solid: texts are readables inside shapes)
were drawn (and plotted) as filled (solid) shapes
enhancements needed for plotting background filled shapes, in color mode
(cannot be filled in black and white mode)
2008-Aug-18 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2008-Aug-18 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================ ================================================================================
+pcbnew: +pcbnew:
......
...@@ -238,7 +238,7 @@ class LibDrawArc : public LibEDA_BaseStruct ...@@ -238,7 +238,7 @@ class LibDrawArc : public LibEDA_BaseStruct
{ {
public: public:
int m_Rayon; int m_Rayon;
bool m_Fill; int m_Fill; // NO_FILL, FILLED_SHAPE or FILLED_WITH_BG_BODYCOLOR
int t1, t2; /* position des 2 extremites de l'arc en 0,1 degres */ int t1, t2; /* position des 2 extremites de l'arc en 0,1 degres */
wxPoint m_ArcStart, m_ArcEnd; /* position des 2 extremites de l'arc en coord reelles*/ wxPoint m_ArcStart, m_ArcEnd; /* position des 2 extremites de l'arc en coord reelles*/
...@@ -259,7 +259,7 @@ class LibDrawCircle : public LibEDA_BaseStruct ...@@ -259,7 +259,7 @@ class LibDrawCircle : public LibEDA_BaseStruct
{ {
public: public:
int m_Rayon; int m_Rayon;
bool m_Fill; int m_Fill;
public: public:
LibDrawCircle(); LibDrawCircle();
...@@ -299,7 +299,7 @@ class LibDrawSquare : public LibEDA_BaseStruct ...@@ -299,7 +299,7 @@ class LibDrawSquare : public LibEDA_BaseStruct
{ {
public: public:
wxPoint m_End; wxPoint m_End;
bool m_Fill; int m_Fill;
public: public:
LibDrawSquare(); LibDrawSquare();
...@@ -337,7 +337,7 @@ class LibDrawPolyline : public LibEDA_BaseStruct ...@@ -337,7 +337,7 @@ class LibDrawPolyline : public LibEDA_BaseStruct
public: public:
int n; int n;
int* PolyList; int* PolyList;
bool m_Fill; int m_Fill;
public: public:
LibDrawPolyline(); LibDrawPolyline();
......
This diff is collapsed.
...@@ -219,7 +219,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem ) ...@@ -219,7 +219,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem )
pos.y = PartY + TransMat[1][0] * Arc->m_Pos.x + pos.y = PartY + TransMat[1][0] * Arc->m_Pos.x +
TransMat[1][1] * Arc->m_Pos.y; TransMat[1][1] * Arc->m_Pos.y;
MapAngles( &t1, &t2, TransMat ); MapAngles( &t1, &t2, TransMat );
PlotArc( pos, t1, t2, Arc->m_Rayon, Arc->m_Fill, Arc->m_Width ); PlotArc( pos, t1, t2, Arc->m_Rayon, Arc->m_Fill == FILLED_SHAPE ? true : false, Arc->m_Width );
} }
break; break;
...@@ -230,7 +230,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem ) ...@@ -230,7 +230,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem )
TransMat[0][1] * Circle->m_Pos.y; TransMat[0][1] * Circle->m_Pos.y;
pos.y = PartY + TransMat[1][0] * Circle->m_Pos.x + pos.y = PartY + TransMat[1][0] * Circle->m_Pos.x +
TransMat[1][1] * Circle->m_Pos.y; TransMat[1][1] * Circle->m_Pos.y;
PlotCercle( pos, Circle->m_Rayon * 2, Circle->m_Fill, Circle->m_Width ); PlotCercle( pos, Circle->m_Rayon * 2, Circle->m_Fill == FILLED_SHAPE ? true : false, Circle->m_Width );
} }
break; break;
...@@ -266,7 +266,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem ) ...@@ -266,7 +266,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem )
y2 = PartY + TransMat[1][0] * Square->m_End.x y2 = PartY + TransMat[1][0] * Square->m_End.x
+ TransMat[1][1] * Square->m_End.y; + TransMat[1][1] * Square->m_End.y;
PlotRect( wxPoint(x1, y1), wxPoint(x2, y2), Square->m_Fill, Square->m_Width ); PlotRect( wxPoint(x1, y1), wxPoint(x2, y2), Square->m_Fill == FILLED_SHAPE ? true : false, Square->m_Width );
} }
break; break;
...@@ -311,7 +311,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem ) ...@@ -311,7 +311,7 @@ void PlotLibPart( SCH_COMPONENT* DrawLibItem )
TransMat[1][1] * polyline->PolyList[ii * 2 + 1]; TransMat[1][1] * polyline->PolyList[ii * 2 + 1];
} }
PlotPoly( ii, Poly, polyline->m_Fill, polyline->m_Width ); PlotPoly( ii, Poly, polyline->m_Fill == FILLED_SHAPE ? true : false, polyline->m_Width );
MyFree( Poly ); MyFree( Poly );
} }
break; break;
......
No preview for this file type
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -494,7 +494,7 @@ void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame ) ...@@ -494,7 +494,7 @@ void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
Affiche_1_Parametre( frame, 1, _( "Module" ), Line, DARKCYAN ); Affiche_1_Parametre( frame, 1, _( "Module" ), Line, DARKCYAN );
Line = m_Text; Line = m_Text;
Affiche_1_Parametre( frame, 10, _( "Text" ), Line, YELLOW ); Affiche_1_Parametre( frame, 10, _( "Text" ), Line, BROWN );
ii = m_Type; ii = m_Type;
if( ii > 2 ) if( ii > 2 )
...@@ -510,18 +510,16 @@ void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame ) ...@@ -510,18 +510,16 @@ void TEXTE_MODULE::Display_Infos( WinEDA_DrawFrame* frame )
ii = m_Layer; ii = m_Layer;
if( ii < NB_LAYERS ) if( ii < NB_LAYERS )
Affiche_1_Parametre( frame, 28, _( "Layer" ), board->GetLayerName( ii ), DARKGREEN ); msg = board->GetLayerName( ii );
else else
{
msg.Printf( wxT( "%d" ), ii ); msg.Printf( wxT( "%d" ), ii );
Affiche_1_Parametre( frame, 28, _( "Layer" ), msg, DARKGREEN ); Affiche_1_Parametre( frame, 31, _( "Layer" ), msg, DARKGREEN );
}
msg = wxT( " Yes" ); msg = wxT( " Yes" );
if( m_Miroir & 1 ) if( m_Miroir & 1 )
msg = wxT( " No" ); msg = wxT( " No" );
Affiche_1_Parametre( frame, 36, _( "Mirror" ), msg, DARKGREEN ); Affiche_1_Parametre( frame, 37, _( "Mirror" ), msg, DARKGREEN );
msg.Printf( wxT( "%.1f" ), (float) m_Orient / 10 ); msg.Printf( wxT( "%.1f" ), (float) m_Orient / 10 );
Affiche_1_Parametre( frame, 43, _( "Orient" ), msg, DARKGREEN ); Affiche_1_Parametre( frame, 43, _( "Orient" ), msg, DARKGREEN );
......
...@@ -237,8 +237,10 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu ) ...@@ -237,8 +237,10 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_STOP_CURRENT_DRAWING, ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_STOP_CURRENT_DRAWING,
_( "End Drawing" ), apply_xpm ); _( "End Drawing" ), apply_xpm );
} }
aPopMenu->Append( ID_POPUP_PCB_EDIT_DRAWING, _( "Edit Drawing" ) ); ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_EDIT_DRAWING,
aPopMenu->Append( ID_POPUP_PCB_DELETE_DRAWING, _( "Delete Drawing" ) ); _( "Edit Drawing" ), edit_xpm );
ADD_MENUITEM( aPopMenu, ID_POPUP_PCB_DELETE_DRAWING,
_( "Delete Drawing" ), delete_xpm );
break; break;
case TYPEZONE: // Item used to fill a zone case TYPEZONE: // Item used to fill a zone
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment