Commit a0c413a6 authored by charras's avatar charras
Browse files

solved a minor bug (pcbnew): arcs incorrectly printed in mirror mode

parent c88f9b1c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -121,7 +121,7 @@ bool DrawPage( WinEDA_DrawPanel* panel )
        {
            dc.SetClippingRegion( DrawArea );
        }
        panel->PrintPage( &dc, Print_Sheet_Ref, -1 );
        panel->PrintPage( &dc, Print_Sheet_Ref, -1, false );
        g_IsPrinting     = FALSE;
        panel->m_ClipBox = tmp;
        wxMetafile* mf = dc.Close();
+4 −3
Original line number Diff line number Diff line
@@ -134,15 +134,16 @@ void WinEDA_SchematicFrame::RedrawActiveWindow( wxDC* DC, bool EraseBg )
}


/*******************************************************************************/
void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int PrintMask )
/*******************************************************************************/
/******************************************************************************************************/
void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int PrintMask, bool aPrintMirrorMode )
/******************************************************************************************************/
/** PrintPage
 * used to print a page.
 * Print the page pointed by ActiveScreen, set by the calling print function
 * @param DC = wxDC given by the calling print function
 * @param Print_Sheet_Ref = true to print page references
 * @param PrintMask = not used here
 * @param aPrintMirrorMode = not used here (Set when printing in mirror mode)
 */
{
    wxBeginBusyCursor();
+7 −3
Original line number Diff line number Diff line
@@ -22,9 +22,9 @@
/* Variables Locales */


/**********************************************************************************/
void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmasklayer )
/**********************************************************************************/
/************************************************************************************************************/
void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmasklayer, bool aPrintMirrorMode )
/*************************************************************************************************************/
/* routine de trace du pcb, avec selection des couches */
{
    DISPLAY_OPTIONS save_opt;
@@ -47,11 +47,15 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmaskl
	DisplayPolygonsModeImg = g_DisplayPolygonsModeSketch;
	g_DisplayPolygonsModeSketch = 0;

    m_PrintIsMirrored = aPrintMirrorMode;

    ( (WinEDA_GerberFrame*) m_Parent )->Trace_Gerber( DC, GR_COPY, printmasklayer );

    if( Print_Sheet_Ref )
        m_Parent->TraceWorkSheet( DC, GetScreen(), 0 );

    m_PrintIsMirrored = false;

    DisplayOpt = save_opt;
	g_DisplayPolygonsModeSketch = DisplayPolygonsModeImg;
}
+3 −1
Original line number Diff line number Diff line
@@ -43,6 +43,8 @@ public:

    bool              m_Block_Enable;       // TRUE to accept Block Commands
    int               m_CanStartBlock;      // >= 0 (or >= n) if a block can start
    bool              m_PrintIsMirrored;    // True when drawing in mirror mode. Used in draw arc function,
                                            // because arcs are oriented, and in mirror mode, orientations are reversed
    // usefull to avoid false start block in certain cases (like switch from a sheet to an other scheet
    int               m_PanelDefaultCursor; // Current mouse cursor default shape id for this window
    int               m_PanelCursor;        // Current mouse cursor shape id for this window
@@ -71,7 +73,7 @@ public:
    void    OnSize( wxSizeEvent& event );
    void    SetBoundaryBox();
    void    ReDraw( wxDC* DC, bool erasebg = TRUE );
    void    PrintPage( wxDC* DC, bool Print_Sheet_Ref, int PrintMask );
    void    PrintPage( wxDC* DC, bool Print_Sheet_Ref, int PrintMask, bool aPrintMirrorMode );
    void    DrawBackGround( wxDC* DC );
    void    m_Draw_Auxiliary_Axis( wxDC* DC, int drawmode );
    void    OnEraseBackground( wxEraseEvent& event );
+11 −2
Original line number Diff line number Diff line
@@ -244,8 +244,17 @@ void DRAWSEGMENT::Draw( WinEDA_DrawPanel* panel, wxDC* DC,
            StAngle  = (int) ArcTangente( dy - uy0, dx - ux0 );
            EndAngle = StAngle + m_Angle;

            if ( ! panel->m_PrintIsMirrored)
            {
                if( StAngle > EndAngle )
                    EXCHG( StAngle, EndAngle );
            }
            else    //Mirrored mode: arc orientation is reversed
            {
                if( StAngle < EndAngle )
                    EXCHG( StAngle, EndAngle );
            }


            if( mode == FILAIRE )
                GRArc( &panel->m_ClipBox, DC, ux0, uy0, StAngle, EndAngle, rayon, color );
Loading