Loading gerbview/trpiste.cpp +2 −95 Original line number Original line Diff line number Diff line Loading @@ -221,103 +221,10 @@ void Trace_Segment( WinEDA_DrawPanel* panel, wxDC* DC, TRACK* track, int draw_mo void Trace_DrawSegmentPcb( WinEDA_DrawPanel* panel, wxDC* DC, void Trace_DrawSegmentPcb( WinEDA_DrawPanel* panel, wxDC* DC, DRAWSEGMENT* PtDrawSegment, int draw_mode ) DRAWSEGMENT* PtDrawSegment, int draw_mode ) /**************************************************************************/ /**************************************************************************/ /* Affichage d'un segment type drawing PCB: * Entree : ox, oy = offset de trace * draw_mode = mode de trace ( GR_OR, GR_XOR, GrAND) * Les contours sont de differents type: * segment * cercle * arc */ { int ux0, uy0, dx, dy; int l_piste; int color, mode; int zoom = panel->GetZoom(); int rayon; color = g_DesignSettings.m_LayerColor[PtDrawSegment->GetLayer()]; if( color & ITEM_NOT_SHOW ) return; GRSetDrawMode( DC, draw_mode ); l_piste = PtDrawSegment->m_Width >> 1; /* l_piste = demi largeur piste */ /* coord de depart */ ux0 = PtDrawSegment->m_Start.x; uy0 = PtDrawSegment->m_Start.y; /* coord d'arrivee */ dx = PtDrawSegment->m_End.x; dy = PtDrawSegment->m_End.y; mode = DisplayOpt.DisplayPcbTrackFill ? FILLED : SKETCH; if( PtDrawSegment->m_Flags & FORCE_SKETCH ) mode = SKETCH; if( l_piste < (L_MIN_DESSIN * zoom) ) mode = FILAIRE; switch( PtDrawSegment->m_Shape ) { case S_CIRCLE: rayon = (int) hypot( (double) (dx - ux0), (double) (dy - uy0) ); if( mode == FILAIRE ) { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon, 0, color ); } else if( mode == SKETCH ) { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon - l_piste, 0, color ); GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon + l_piste, 0, color ); } else { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon, PtDrawSegment->m_Width, color ); } break; case S_ARC: { { int StAngle, EndAngle; // @todo Replace all calls to Trace_DrawSegmentPcb() with this call: rayon = (int) hypot( (double) (dx - ux0), (double) (dy - uy0) ); StAngle = (int) ArcTangente( dy - uy0, dx - ux0 ); EndAngle = StAngle + PtDrawSegment->m_Angle; if( mode == FILAIRE ) GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon, 0, color ); else if( mode == SKETCH ) { GRArc( &panel->m_ClipBox, DC, ux0, uy0, 0, StAngle, EndAngle, rayon - l_piste, color ); GRArc( &panel->m_ClipBox, DC, ux0, uy0, 0, StAngle, EndAngle, rayon + l_piste, color ); } else { GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon, PtDrawSegment->m_Width, color ); } } break; default: PtDrawSegment->Draw( panel, DC, draw_mode ); if( mode == FILAIRE ) GRLine( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, 0, color ); else if( mode == SKETCH ) { GRCSegm( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, PtDrawSegment->m_Width, color ); } else { GRFillCSegm( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, PtDrawSegment->m_Width, color ); } break; } } } Loading include/base_struct.h +1 −3 Original line number Original line Diff line number Diff line Loading @@ -612,9 +612,7 @@ public: * BOARD_ITEMs which have their own color information. * BOARD_ITEMs which have their own color information. */ */ virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int aDrawMode, const wxPoint& offset = ZeroOffset ) int aDrawMode, const wxPoint& offset = ZeroOffset ) = 0; { } /** /** Loading pcbnew/block.cpp +4 −5 Original line number Original line Diff line number Diff line Loading @@ -503,12 +503,11 @@ void WinEDA_BasePcbFrame::Block_Delete( wxDC* DC ) switch( PtStruct->Type() ) switch( PtStruct->Type() ) { { case TYPEDRAWSEGMENT: case TYPEDRAWSEGMENT: #undef STRUCT if( (g_TabOneLayerMask[PtStruct->GetLayer()] & masque_layer) == 0 ) #define STRUCT ( (DRAWSEGMENT*) PtStruct ) if( (g_TabOneLayerMask[STRUCT->GetLayer()] & masque_layer) == 0 ) break; break; if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) break; break; /* l'element est ici bon a etre efface */ /* l'element est ici bon a etre efface */ Trace_DrawSegmentPcb( DrawPanel, DC, (DRAWSEGMENT*) PtStruct, GR_XOR ); Trace_DrawSegmentPcb( DrawPanel, DC, (DRAWSEGMENT*) PtStruct, GR_XOR ); PtStruct->DeleteStructure(); PtStruct->DeleteStructure(); Loading @@ -526,7 +525,7 @@ void WinEDA_BasePcbFrame::Block_Delete( wxDC* DC ) break; break; case TYPEMIRE: case TYPEMIRE: if( (g_TabOneLayerMask[STRUCT->GetLayer()] & masque_layer) == 0 ) if( (g_TabOneLayerMask[PtStruct->GetLayer()] & masque_layer) == 0 ) break; break; if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) break; break; Loading @@ -535,7 +534,7 @@ void WinEDA_BasePcbFrame::Block_Delete( wxDC* DC ) break; break; case TYPECOTATION: case TYPECOTATION: if( (g_TabOneLayerMask[STRUCT->GetLayer()] & masque_layer) == 0 ) if( (g_TabOneLayerMask[PtStruct->GetLayer()] & masque_layer) == 0 ) break; break; if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) break; break; Loading pcbnew/class_board.h +7 −0 Original line number Original line Diff line number Diff line Loading @@ -252,6 +252,13 @@ public: */ */ void Display_Infos( WinEDA_DrawFrame* frame ); void Display_Infos( WinEDA_DrawFrame* frame ); void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int aDrawMode, const wxPoint& offset = ZeroOffset ) { // void WinEDA_PcbFrame::Trace_Pcb( wxDC* DC, int mode ) // goes here. } /** /** * Function Visit * Function Visit Loading pcbnew/class_drawsegment.cpp +100 −0 Original line number Original line Diff line number Diff line Loading @@ -144,6 +144,106 @@ bool DRAWSEGMENT::ReadDrawSegmentDescr( FILE* File, int* LineNum ) } } void DRAWSEGMENT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoint& notUsed ) { int ux0, uy0, dx, dy; int l_piste; int color, mode; int zoom; int rayon; color = g_DesignSettings.m_LayerColor[GetLayer()]; if( color & ITEM_NOT_SHOW ) return; if( panel ) zoom = panel->GetZoom(); else zoom = ActiveScreen->GetZoom(); GRSetDrawMode( DC, draw_mode ); l_piste = m_Width >> 1; /* l_piste = demi largeur piste */ /* coord de depart */ ux0 = m_Start.x; uy0 = m_Start.y; /* coord d'arrivee */ dx = m_End.x; dy = m_End.y; mode = DisplayOpt.DisplayDrawItems; if( m_Flags & FORCE_SKETCH ) mode = SKETCH; if( l_piste < (L_MIN_DESSIN * zoom) ) mode = FILAIRE; switch( m_Shape ) { case S_CIRCLE: rayon = (int) hypot( (double) (dx - ux0), (double) (dy - uy0) ); if( mode == FILAIRE ) { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon, color ); } else if( mode == SKETCH ) { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon - l_piste, color ); GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon + l_piste, color ); } else { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon, m_Width, color ); } break; case S_ARC: { int StAngle, EndAngle; rayon = (int) hypot( (double) (dx - ux0), (double) (dy - uy0) ); StAngle = (int) ArcTangente( dy - uy0, dx - ux0 ); EndAngle = StAngle + m_Angle; if( StAngle > EndAngle ) EXCHG( StAngle, EndAngle ); if( mode == FILAIRE ) GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon, color ); else if( mode == SKETCH ) { GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon - l_piste, color ); GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon + l_piste, color ); } else { GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon, m_Width, color ); } } break; default: if( mode == FILAIRE ) GRLine( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, 0, color ); else if( mode == SKETCH ) { GRCSegm( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, m_Width, color ); } else { GRFillCSegm( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, m_Width, color ); } break; } } // see pcbstruct.h // see pcbstruct.h void DRAWSEGMENT::Display_Infos( WinEDA_DrawFrame* frame ) void DRAWSEGMENT::Display_Infos( WinEDA_DrawFrame* frame ) { { Loading Loading
gerbview/trpiste.cpp +2 −95 Original line number Original line Diff line number Diff line Loading @@ -221,103 +221,10 @@ void Trace_Segment( WinEDA_DrawPanel* panel, wxDC* DC, TRACK* track, int draw_mo void Trace_DrawSegmentPcb( WinEDA_DrawPanel* panel, wxDC* DC, void Trace_DrawSegmentPcb( WinEDA_DrawPanel* panel, wxDC* DC, DRAWSEGMENT* PtDrawSegment, int draw_mode ) DRAWSEGMENT* PtDrawSegment, int draw_mode ) /**************************************************************************/ /**************************************************************************/ /* Affichage d'un segment type drawing PCB: * Entree : ox, oy = offset de trace * draw_mode = mode de trace ( GR_OR, GR_XOR, GrAND) * Les contours sont de differents type: * segment * cercle * arc */ { int ux0, uy0, dx, dy; int l_piste; int color, mode; int zoom = panel->GetZoom(); int rayon; color = g_DesignSettings.m_LayerColor[PtDrawSegment->GetLayer()]; if( color & ITEM_NOT_SHOW ) return; GRSetDrawMode( DC, draw_mode ); l_piste = PtDrawSegment->m_Width >> 1; /* l_piste = demi largeur piste */ /* coord de depart */ ux0 = PtDrawSegment->m_Start.x; uy0 = PtDrawSegment->m_Start.y; /* coord d'arrivee */ dx = PtDrawSegment->m_End.x; dy = PtDrawSegment->m_End.y; mode = DisplayOpt.DisplayPcbTrackFill ? FILLED : SKETCH; if( PtDrawSegment->m_Flags & FORCE_SKETCH ) mode = SKETCH; if( l_piste < (L_MIN_DESSIN * zoom) ) mode = FILAIRE; switch( PtDrawSegment->m_Shape ) { case S_CIRCLE: rayon = (int) hypot( (double) (dx - ux0), (double) (dy - uy0) ); if( mode == FILAIRE ) { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon, 0, color ); } else if( mode == SKETCH ) { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon - l_piste, 0, color ); GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon + l_piste, 0, color ); } else { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon, PtDrawSegment->m_Width, color ); } break; case S_ARC: { { int StAngle, EndAngle; // @todo Replace all calls to Trace_DrawSegmentPcb() with this call: rayon = (int) hypot( (double) (dx - ux0), (double) (dy - uy0) ); StAngle = (int) ArcTangente( dy - uy0, dx - ux0 ); EndAngle = StAngle + PtDrawSegment->m_Angle; if( mode == FILAIRE ) GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon, 0, color ); else if( mode == SKETCH ) { GRArc( &panel->m_ClipBox, DC, ux0, uy0, 0, StAngle, EndAngle, rayon - l_piste, color ); GRArc( &panel->m_ClipBox, DC, ux0, uy0, 0, StAngle, EndAngle, rayon + l_piste, color ); } else { GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon, PtDrawSegment->m_Width, color ); } } break; default: PtDrawSegment->Draw( panel, DC, draw_mode ); if( mode == FILAIRE ) GRLine( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, 0, color ); else if( mode == SKETCH ) { GRCSegm( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, PtDrawSegment->m_Width, color ); } else { GRFillCSegm( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, PtDrawSegment->m_Width, color ); } break; } } } Loading
include/base_struct.h +1 −3 Original line number Original line Diff line number Diff line Loading @@ -612,9 +612,7 @@ public: * BOARD_ITEMs which have their own color information. * BOARD_ITEMs which have their own color information. */ */ virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, virtual void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int aDrawMode, const wxPoint& offset = ZeroOffset ) int aDrawMode, const wxPoint& offset = ZeroOffset ) = 0; { } /** /** Loading
pcbnew/block.cpp +4 −5 Original line number Original line Diff line number Diff line Loading @@ -503,12 +503,11 @@ void WinEDA_BasePcbFrame::Block_Delete( wxDC* DC ) switch( PtStruct->Type() ) switch( PtStruct->Type() ) { { case TYPEDRAWSEGMENT: case TYPEDRAWSEGMENT: #undef STRUCT if( (g_TabOneLayerMask[PtStruct->GetLayer()] & masque_layer) == 0 ) #define STRUCT ( (DRAWSEGMENT*) PtStruct ) if( (g_TabOneLayerMask[STRUCT->GetLayer()] & masque_layer) == 0 ) break; break; if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) break; break; /* l'element est ici bon a etre efface */ /* l'element est ici bon a etre efface */ Trace_DrawSegmentPcb( DrawPanel, DC, (DRAWSEGMENT*) PtStruct, GR_XOR ); Trace_DrawSegmentPcb( DrawPanel, DC, (DRAWSEGMENT*) PtStruct, GR_XOR ); PtStruct->DeleteStructure(); PtStruct->DeleteStructure(); Loading @@ -526,7 +525,7 @@ void WinEDA_BasePcbFrame::Block_Delete( wxDC* DC ) break; break; case TYPEMIRE: case TYPEMIRE: if( (g_TabOneLayerMask[STRUCT->GetLayer()] & masque_layer) == 0 ) if( (g_TabOneLayerMask[PtStruct->GetLayer()] & masque_layer) == 0 ) break; break; if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) break; break; Loading @@ -535,7 +534,7 @@ void WinEDA_BasePcbFrame::Block_Delete( wxDC* DC ) break; break; case TYPECOTATION: case TYPECOTATION: if( (g_TabOneLayerMask[STRUCT->GetLayer()] & masque_layer) == 0 ) if( (g_TabOneLayerMask[PtStruct->GetLayer()] & masque_layer) == 0 ) break; break; if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) if( ! PtStruct->HitTest( GetScreen()->BlockLocate ) ) break; break; Loading
pcbnew/class_board.h +7 −0 Original line number Original line Diff line number Diff line Loading @@ -252,6 +252,13 @@ public: */ */ void Display_Infos( WinEDA_DrawFrame* frame ); void Display_Infos( WinEDA_DrawFrame* frame ); void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int aDrawMode, const wxPoint& offset = ZeroOffset ) { // void WinEDA_PcbFrame::Trace_Pcb( wxDC* DC, int mode ) // goes here. } /** /** * Function Visit * Function Visit Loading
pcbnew/class_drawsegment.cpp +100 −0 Original line number Original line Diff line number Diff line Loading @@ -144,6 +144,106 @@ bool DRAWSEGMENT::ReadDrawSegmentDescr( FILE* File, int* LineNum ) } } void DRAWSEGMENT::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoint& notUsed ) { int ux0, uy0, dx, dy; int l_piste; int color, mode; int zoom; int rayon; color = g_DesignSettings.m_LayerColor[GetLayer()]; if( color & ITEM_NOT_SHOW ) return; if( panel ) zoom = panel->GetZoom(); else zoom = ActiveScreen->GetZoom(); GRSetDrawMode( DC, draw_mode ); l_piste = m_Width >> 1; /* l_piste = demi largeur piste */ /* coord de depart */ ux0 = m_Start.x; uy0 = m_Start.y; /* coord d'arrivee */ dx = m_End.x; dy = m_End.y; mode = DisplayOpt.DisplayDrawItems; if( m_Flags & FORCE_SKETCH ) mode = SKETCH; if( l_piste < (L_MIN_DESSIN * zoom) ) mode = FILAIRE; switch( m_Shape ) { case S_CIRCLE: rayon = (int) hypot( (double) (dx - ux0), (double) (dy - uy0) ); if( mode == FILAIRE ) { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon, color ); } else if( mode == SKETCH ) { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon - l_piste, color ); GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon + l_piste, color ); } else { GRCircle( &panel->m_ClipBox, DC, ux0, uy0, rayon, m_Width, color ); } break; case S_ARC: { int StAngle, EndAngle; rayon = (int) hypot( (double) (dx - ux0), (double) (dy - uy0) ); StAngle = (int) ArcTangente( dy - uy0, dx - ux0 ); EndAngle = StAngle + m_Angle; if( StAngle > EndAngle ) EXCHG( StAngle, EndAngle ); if( mode == FILAIRE ) GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon, color ); else if( mode == SKETCH ) { GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon - l_piste, color ); GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon + l_piste, color ); } else { GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon, m_Width, color ); } } break; default: if( mode == FILAIRE ) GRLine( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, 0, color ); else if( mode == SKETCH ) { GRCSegm( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, m_Width, color ); } else { GRFillCSegm( &panel->m_ClipBox, DC, ux0, uy0, dx, dy, m_Width, color ); } break; } } // see pcbstruct.h // see pcbstruct.h void DRAWSEGMENT::Display_Infos( WinEDA_DrawFrame* frame ) void DRAWSEGMENT::Display_Infos( WinEDA_DrawFrame* frame ) { { Loading