Commit a041ef9d authored by jean-pierre charras's avatar jean-pierre charras
Browse files

Workaround for zoom levels < 1 in eeschema, with wxMSW version < 2.9

parents cfc3d6df 58c96471
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
#endif

#ifndef KICAD_BUILD_VERSION
#define KICAD_BUILD_VERSION "(2011-03-29)"
#define KICAD_BUILD_VERSION "(2011-03-30)"
#endif

// uncomment this line only when creating a stable version
+11 −1
Original line number Diff line number Diff line
@@ -389,7 +389,17 @@ int LIB_EDIT_FRAME::BestZoom()
    ii = wxRound( ( (double) dx / (double) size.x ) * (double) GetScreen()->m_ZoomScalar );
    jj = wxRound( ( (double) dy / (double) size.y ) * (double) GetScreen()->m_ZoomScalar );

    return MAX( ii + 1, jj + 1 );
    int bestzoom = MAX( ii + 1, jj + 1 );
#if defined( __WINDOWS__ ) && !wxCHECK_VERSION(2, 9, 1)
    /* This is a workaround: wxWidgets (wxMSW) before version 2.9 seems have
     * problems with scale values < 1
     * corresponding to values < GetScreen()->m_ZoomScalar
     * So we keep bestzoom >= GetScreen()->m_ZoomScalar
     */
    if( bestzoom < GetScreen()->m_ZoomScalar )
        bestzoom = GetScreen()->m_ZoomScalar;
#endif
    return bestzoom;
}


+15 −0
Original line number Diff line number Diff line
@@ -30,10 +30,25 @@
/* Default EESchema zoom values. Limited to 17 values to keep a decent size
 * to menus
 */
#if defined( __WINDOWS__ ) && !wxCHECK_VERSION(2, 9, 1)
/* Please, note: wxWidgets (wxMSW) before version 2.9 seems have
 * problems with scale values < 1
 * because  scale value is SchematicZoomList[x] / 10
 * ( in fact is SchematicZoomList[x] / m_ZoomScalar )
 * do not use values smaller than 10 without testing them under wxWidgets versions < 2.9
 * value like 0.5 seems work
 */
static int SchematicZoomList[] =
{
    5, 10, 15, 20, 30, 40, 60, 80, 120, 160, 230, 320, 480, 640, 800, 1280
};

#else
static int SchematicZoomList[] =
{
    5, 7, 10, 15, 20, 30, 40, 60, 80, 120, 160, 230, 320, 480, 640, 800, 1280
};
#endif

#define SCHEMATIC_ZOOM_LIST_CNT  ( sizeof( SchematicZoomList ) / sizeof( int ) )
#define MM_TO_SCH_UNITS 1000.0 / 25.4       //schematic internal unites are mils
+14 −3
Original line number Diff line number Diff line
@@ -393,17 +393,28 @@ int SCH_EDIT_FRAME::BestZoom()
{
    int    dx, dy;
    wxSize size;
    double zoom;

    dx = GetScreen()->m_CurrentSheetDesc->m_Size.x;
    dy = GetScreen()->m_CurrentSheetDesc->m_Size.y;

    size = DrawPanel->GetClientSize();
    zoom = MAX( (double) dx / (double) size.x, (double) dy / (double) size.y );
    int ii = wxRound( (double) dx / size.x * (double) GetScreen()->m_ZoomScalar );
    int jj = wxRound( (double) dx / size.x * (double) GetScreen()->m_ZoomScalar );
    int bestzoom = MAX( ii, jj );

    GetScreen()->SetScrollCenterPosition( wxPoint( dx / 2, dy / 2 ) );

    return wxRound( zoom * (double) GetScreen()->m_ZoomScalar );
#if defined( __WINDOWS__ ) && !wxCHECK_VERSION(2, 9, 1)
    /* This is a workaround: wxWidgets (wxMSW) before version 2.9 seems have
     * problems with scale values < 1
     * corresponding to values < GetScreen()->m_ZoomScalar
     * So we keep bestzoom >= GetScreen()->m_ZoomScalar
     */
    if( bestzoom < GetScreen()->m_ZoomScalar )
        bestzoom = GetScreen()->m_ZoomScalar;
#endif

    return bestzoom;
}


+10 −0
Original line number Diff line number Diff line
@@ -358,6 +358,16 @@ int LIB_VIEW_FRAME::BestZoom()
                    (double) GetScreen()->m_ZoomScalar );
    bestzoom = MAX( ii, jj ) + 1;

#if defined( __WINDOWS__ ) && !wxCHECK_VERSION(2, 9, 1)
    /* This is a workaround: wxWidgets (wxMSW) before version 2.9 seems have
     * problems with scale values < 1
     * corresponding to values < GetScreen()->m_ZoomScalar
     * So we keep bestzoom >= GetScreen()->m_ZoomScalar
     */
    if( bestzoom < GetScreen()->m_ZoomScalar )
        bestzoom = GetScreen()->m_ZoomScalar;
#endif

    GetScreen()->SetScrollCenterPosition( BoundaryBox.Centre() );

    return bestzoom;
Loading