Commit c5f41a3a authored by charras's avatar charras
Browse files

eeschema: fixed minor issues.

parent 1fdd229e
Loading
Loading
Loading
Loading
+44 −3
Original line number Diff line number Diff line
@@ -242,6 +242,49 @@ void LIB_COMPONENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDc,

    GRSetDrawMode( aDc, aDrawMode );

    /* draw background for filled items using background option
     * Solid lines will be drawn after the background
     * Note also, background is not drawn when:
     *   printing in black and white
     *   If the color is not the default color (aColor != -1 )
     */
    if( ! (screen->m_IsPrinting && GetGRForceBlackPenState()) && (aColor == -1) )
    {
        BOOST_FOREACH( LIB_DRAW_ITEM& drawItem, drawings )
        {
            if( drawItem.m_Fill != FILLED_WITH_BG_BODYCOLOR )
                continue;

            if( aOnlySelected && drawItem.m_Selected == 0 )
                continue;

            // Do not draw an item while moving (the cursor handler does that)
            if( drawItem.m_Flags & IS_MOVED )
                continue;

            /* Do not draw items not attached to the current part */
            if( aMulti && drawItem.m_Unit && ( drawItem.m_Unit != aMulti ) )
                continue;

            if( aConvert && drawItem.m_Convert && ( drawItem.m_Convert != aConvert ) )
                continue;

            if( drawItem.Type() == COMPONENT_FIELD_DRAW_TYPE )
                continue;

            if( drawItem.Type() == COMPONENT_FIELD_DRAW_TYPE )
            {
                drawItem.Draw( aPanel, aDc, aOffset, aColor, aDrawMode,
                               (void*) NULL, aTransformMatrix );
            }

            // Now, draw only the background for items with
            // m_Fill == FILLED_WITH_BG_BODYCOLOR:
            drawItem.Draw( aPanel, aDc, aOffset, aColor, aDrawMode,
                           (void*) false, aTransformMatrix );
        }
    }

    BOOST_FOREACH( LIB_DRAW_ITEM& drawItem, drawings )
    {
        if( aOnlySelected && drawItem.m_Selected == 0 )
@@ -273,9 +316,7 @@ void LIB_COMPONENT::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDc,
        }
        else
        {
            bool forceNoFill = ( screen->m_IsPrinting
                                 && drawItem.m_Fill == FILLED_WITH_BG_BODYCOLOR
                                 && GetGRForceBlackPenState() );
            bool forceNoFill = drawItem.m_Fill == FILLED_WITH_BG_BODYCOLOR;
            drawItem.Draw( aPanel, aDc, aOffset, aColor, aDrawMode,
                           (void*) forceNoFill, aTransformMatrix );
        }
+10 −5
Original line number Diff line number Diff line
@@ -433,7 +433,8 @@ void LIB_ARC::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,

    if( fill == FILLED_WITH_BG_BODYCOLOR )
        GRFilledArc( &aPanel->m_ClipBox, aDC, posc.x, posc.y, pt1, pt2,
                     m_Radius, GetPenSize( ), color,
                     m_Radius, GetPenSize( ),
                     (m_Flags & IS_MOVED) ? color : ReturnLayerColor( LAYER_DEVICE_BACKGROUND ),
                     ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) );
    else if( fill == FILLED_SHAPE && !aData )
        GRFilledArc( &aPanel->m_ClipBox, aDC, posc.x, posc.y, pt1, pt2,
@@ -751,7 +752,8 @@ void LIB_CIRCLE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,

    if( fill == FILLED_WITH_BG_BODYCOLOR )
        GRFilledCircle( &aPanel->m_ClipBox, aDC, pos1.x, pos1.y,
                        m_Radius, GetPenSize( ), color,
                        m_Radius, GetPenSize( ),
                        (m_Flags & IS_MOVED) ? color : ReturnLayerColor( LAYER_DEVICE_BACKGROUND ),
                        ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) );
    else if( fill == FILLED_SHAPE )
        GRFilledCircle( &aPanel->m_ClipBox, aDC, pos1.x, pos1.y,
@@ -991,7 +993,8 @@ void LIB_RECTANGLE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,

    if( fill == FILLED_WITH_BG_BODYCOLOR && !aData )
        GRFilledRect( &aPanel->m_ClipBox, aDC, pos1.x, pos1.y, pos2.x, pos2.y,
                      GetPenSize( ), color,
                      GetPenSize( ),
                      (m_Flags & IS_MOVED) ? color : ReturnLayerColor( LAYER_DEVICE_BACKGROUND ),
                      ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) );
    else if( m_Fill == FILLED_SHAPE  && !aData )
        GRFilledRect( &aPanel->m_ClipBox, aDC, pos1.x, pos1.y, pos2.x, pos2.y,
@@ -1591,7 +1594,8 @@ void LIB_POLYLINE::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,

    if( fill == FILLED_WITH_BG_BODYCOLOR )
        GRPoly( &aPanel->m_ClipBox, aDC, m_PolyPoints.size(),
                Buf_Poly_Drawings, 1, GetPenSize( ), color,
                Buf_Poly_Drawings, 1, GetPenSize( ),
                (m_Flags & IS_MOVED) ? color : ReturnLayerColor( LAYER_DEVICE_BACKGROUND ),
                ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) );
    else if( fill == FILLED_SHAPE  )
        GRPoly( &aPanel->m_ClipBox, aDC, m_PolyPoints.size(),
@@ -1959,7 +1963,8 @@ void LIB_BEZIER::Draw( WinEDA_DrawPanel* aPanel, wxDC* aDC,

    if( fill == FILLED_WITH_BG_BODYCOLOR )
        GRPoly( &aPanel->m_ClipBox, aDC, m_PolyPoints.size(),
                &PolyPointsTraslated[0], 1, GetPenSize(), color,
                &PolyPointsTraslated[0], 1, GetPenSize(),
                (m_Flags & IS_MOVED) ? color : ReturnLayerColor( LAYER_DEVICE_BACKGROUND ),
                ReturnLayerColor( LAYER_DEVICE_BACKGROUND ) );
    else if( fill == FILLED_SHAPE  )
        GRPoly( &aPanel->m_ClipBox, aDC, m_PolyPoints.size(),
+32 −19
Original line number Diff line number Diff line
@@ -14,11 +14,11 @@
#include "gestfich.h"

#include "dialog_SVG_print_base.h"

#include "dcsvg.h"

#include "program.h"
#include "general.h"
#include "libeditframe.h"

// Keys for configuration
#define PLOTSVGMODECOLOR_KEY  wxT( "PlotSVGModeColor" )
@@ -35,7 +35,6 @@ class DIALOG_SVG_PRINT : public DIALOG_SVG_PRINT_base
{
private:
    WinEDA_DrawFrame * m_Parent;
    int m_ImageXSize_mm;
    wxConfig* m_Config;

public:
@@ -51,8 +50,11 @@ private:
    void OnSetColorModeSelected( wxCommandEvent& event );
    void SetPenWidth();
    void PrintSVGDoc( bool aPrintAll, bool aPrint_Sheet_Ref );
    bool DrawPage( const wxString& FullFileName, BASE_SCREEN* screen,
                   bool aPrint_Sheet_Ref );
public:
    static bool DrawSVGPage( WinEDA_DrawFrame * frame,
                   const wxString& FullFileName, BASE_SCREEN* screen,
                   bool aPrintBlackAndWhite = false,
                   bool aPrint_Sheet_Ref = false);
};


@@ -66,6 +68,15 @@ void WinEDA_DrawFrame::SVG_Print( wxCommandEvent& event )
    frame.ShowModal();
}

/* Creates the SVG print file for the current edited component.
 */
void WinEDA_LibeditFrame::SVG_Print_Component( const wxString& FullFileName )
{
    DIALOG_SVG_PRINT::DrawSVGPage( this, FullFileName, GetScreen() );
}




/*!
 * DIALOG_SVG_PRINT functions
@@ -82,7 +93,6 @@ void DIALOG_SVG_PRINT::OnInitDialog( wxInitDialogEvent& event )
{
    SetFocus();     // Make ESC key working

    m_ImageXSize_mm = 270;
    if( m_Config )
    {
        m_Config->Read( PLOTSVGMODECOLOR_KEY, &s_PlotBlackAndWhite );
@@ -130,6 +140,9 @@ void DIALOG_SVG_PRINT::PrintSVGDoc( bool aPrintAll, bool aPrint_Sheet_Ref )

    SetPenWidth();

    g_DrawDefaultLineThickness =
        ReturnValueFromTextCtrl( *m_DialogPenWidth, m_Parent->m_InternalUnits );

    BASE_SCREEN* screen    = m_Parent->GetBaseScreen();
    BASE_SCREEN* oldscreen = screen;

@@ -162,7 +175,8 @@ void DIALOG_SVG_PRINT::PrintSVGDoc( bool aPrintAll, bool aPrint_Sheet_Ref )

            fn = schframe->GetUniqueFilenameForCurrentSheet( ) + wxT( ".svg" );

            bool success = DrawPage( fn.GetFullPath(), schscreen,
            bool success = DrawSVGPage( m_Parent, fn.GetFullPath(), schscreen,
                                     m_ModeColorOption->GetSelection() == 0 ? false : true,
                                     aPrint_Sheet_Ref );
            msg = _( "Create file " ) + fn.GetFullPath();
            if( !success )
@@ -182,8 +196,11 @@ void DIALOG_SVG_PRINT::PrintSVGDoc( bool aPrintAll, bool aPrint_Sheet_Ref )
            fn = screen->m_FileName;

        fn.SetExt( wxT( "svg" ) );
        fn.MakeAbsolute( );

        bool success = DrawPage( fn.GetFullPath(), screen, aPrint_Sheet_Ref );
        bool success = DrawSVGPage( m_Parent, fn.GetFullPath(), screen,
                                 m_ModeColorOption->GetSelection() == 0 ? false : true,
                                 aPrint_Sheet_Ref );
        msg = _( "Create file " ) + fn.GetFullPath();

        if( !success )
@@ -196,16 +213,16 @@ void DIALOG_SVG_PRINT::PrintSVGDoc( bool aPrintAll, bool aPrint_Sheet_Ref )
    ActiveScreen = oldscreen;
}


bool DIALOG_SVG_PRINT::DrawPage( const wxString& FullFileName,
bool DIALOG_SVG_PRINT::DrawSVGPage( WinEDA_DrawFrame * frame,
                                 const wxString& FullFileName,
                                 BASE_SCREEN* screen,
                                 bool aPrintBlackAndWhite,
                                 bool aPrint_Sheet_Ref)
{
    int     tmpzoom;
    wxPoint tmp_startvisu;
    wxSize  SheetSize;  // Sheet size in internal units
    wxPoint old_org;
    double   dpi;
    bool    success = true;

    tmp_startvisu = screen->m_StartVisu;
@@ -216,17 +233,13 @@ bool DIALOG_SVG_PRINT::DrawPage( const wxString& FullFileName,
    SheetSize    = screen->ReturnPageSize( );

    screen->SetScalingFactor( 1.0 );
    dpi = (double) SheetSize.x * 25.4 / m_ImageXSize_mm;

    WinEDA_DrawPanel* panel = m_Parent->DrawPanel;
    WinEDA_DrawPanel* panel = frame->DrawPanel;

    wxSVGFileDC dc( FullFileName, SheetSize.x, SheetSize.y, dpi );
    wxSVGFileDC dc( FullFileName, SheetSize.x, SheetSize.y );

    EDA_Rect tmp = panel->m_ClipBox;
    GRResetPenAndBrush( &dc );
    g_DrawDefaultLineThickness =
        ReturnValueFromTextCtrl( *m_DialogPenWidth, m_Parent->m_InternalUnits );
    GRForceBlackPen( m_ModeColorOption->GetSelection() == 0 ? false : true );
    GRForceBlackPen( aPrintBlackAndWhite );


    panel->m_ClipBox.SetX( -0x3FFFFF0 );
@@ -237,13 +250,13 @@ bool DIALOG_SVG_PRINT::DrawPage( const wxString& FullFileName,
    screen->m_IsPrinting = true;
    SetLocaleTo_C_standard( );   // Switch the locale to standard C (needed
                                 // to print floating point numbers like 1.3)
    m_Parent->PrintPage( &dc, aPrint_Sheet_Ref, 1, false );
    frame->PrintPage( &dc, aPrint_Sheet_Ref, 1, false );
    SetLocaleTo_Default( );      // revert to the current  locale
    screen->m_IsPrinting = false;
    panel->m_ClipBox = tmp;


    GRForceBlackPen( FALSE );
    GRForceBlackPen( false );

    screen->m_StartVisu = tmp_startvisu;
    screen->m_DrawOrg   = old_org;
+18 −7
Original line number Diff line number Diff line
@@ -25,6 +25,9 @@
void WinEDA_LibeditFrame::OnPlotCurrentComponent( wxCommandEvent& event )
{
    LIB_COMPONENT* cmp = GetComponent();
    wxString   FullFileName;
    wxString   file_ext;
    wxString   mask;

    if( cmp == NULL )
    {
@@ -38,13 +41,12 @@ void WinEDA_LibeditFrame::OnPlotCurrentComponent( wxCommandEvent& event )
    {
        bool       fmt_is_jpeg = false; // could be selectable later. so keep this option.

        wxString   file_ext = fmt_is_jpeg ? wxT( "jpg" ) : wxT( "png" );
        wxString   mask     = wxT( "*." ) + file_ext;
        file_ext = fmt_is_jpeg ? wxT( "jpg" ) : wxT( "png" );
        mask     = wxT( "*." ) + file_ext;
        wxFileName fn( cmp->GetName() );
        fn.SetExt( file_ext );

        wxString   FullFileName =
            EDA_FileSelector( _( "Filename:" ), wxGetCwd(),
        FullFileName = EDA_FileSelector( _( "Filename:" ), wxGetCwd(),
                              fn.GetFullName(), file_ext, mask, this,
                              wxFD_SAVE, TRUE );

@@ -57,7 +59,17 @@ void WinEDA_LibeditFrame::OnPlotCurrentComponent( wxCommandEvent& event )

    case ID_LIBEDIT_GEN_SVG_FILE:
    {
        GetScreen()->m_FileName = cmp->GetName();
        file_ext = wxT( "svg" );
        mask     = wxT( "*." ) + file_ext;
        wxFileName fn( cmp->GetName() );
        fn.SetExt( file_ext );
        FullFileName = EDA_FileSelector( _( "Filename:" ), wxGetCwd(),
                              fn.GetFullName(), file_ext, mask, this,
                              wxFD_SAVE, TRUE );

        if( FullFileName.IsEmpty() )
            return;

        /* Give a size to the SVG draw area = component size + margin
         * the margin is 10% the size of the component size
         */
@@ -67,9 +79,8 @@ void WinEDA_LibeditFrame::OnPlotCurrentComponent( wxCommandEvent& event )
        // Add a small margin to the plot bounding box
        componentSize.x = (int)(componentSize.x * 1.2);
        componentSize.y = (int)(componentSize.y * 1.2);

        GetScreen()->SetPageSize( componentSize );
        WinEDA_DrawFrame::SVG_Print( event );
        SVG_Print_Component( FullFileName );
        GetScreen()->SetPageSize( pagesize );
    }
        break;
+7 −0
Original line number Diff line number Diff line
@@ -296,6 +296,13 @@ protected:
                    int aPrintMask, bool aPrintMirrorMode,
                    void * aData = NULL);

    /** function SVG_Print_component
     * Creates the SVG print file for the current edited component.
     * @param aFullFileName = the full filename of the file
    */
    void SVG_Print_Component( const wxString& aFullFileName );


    DECLARE_EVENT_TABLE()
};

Loading