Build fixes for VC8, compiler warnings fixed, and some minor wxDC zoom changes.
* Added modified version of FindwxWidgets.cmake to prevent manifest build and link errors with VC8. * Fixed ambiguous math function ( sqrt, atan, cos, etc. ) call errors when building with MSVC. * Moved bitmap copy bitmap source file destination to the build path to prevent source tree pollution and library rebuilds when building on different platforms.
This commit is contained in:
parent
ddd8bf4870
commit
17bf24354e
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,71 @@
|
|||
# - Convenience include for using wxWidgets library
|
||||
# Finds if wxWidgets is installed
|
||||
# and set the appropriate libs, incdirs, flags etc.
|
||||
# INCLUDE_DIRECTORIES, LINK_DIRECTORIES and ADD_DEFINITIONS
|
||||
# are called.
|
||||
#
|
||||
# USAGE
|
||||
# SET( wxWidgets_USE_LIBS gl xml xrc ) # optionally: more than wx std libs
|
||||
# FIND_PACKAGE(wxWidgets REQUIRED)
|
||||
# INCLUDE( ${xWidgets_USE_FILE} )
|
||||
# ... add your targets here, e.g. ADD_EXECUTABLE/ ADD_LIBRARY ...
|
||||
# TARGET_LINK_LIBRARIERS( <yourWxDependantTarget> ${wxWidgets_LIBRARIES})
|
||||
#
|
||||
# DEPRECATED
|
||||
# LINK_LIBRARIES is not called in favor of adding dependencies per target.
|
||||
#
|
||||
# AUTHOR
|
||||
# Jan Woetzel <jw -at- mip.informatik.uni-kiel.de>
|
||||
|
||||
|
||||
# debug message and logging.
|
||||
# comment these out for distribution
|
||||
IF (NOT LOGFILE )
|
||||
# SET(LOGFILE "${PROJECT_BINARY_DIR}/CMakeOutput.log")
|
||||
ENDIF (NOT LOGFILE )
|
||||
MACRO(MSG _MSG)
|
||||
# FILE(APPEND ${LOGFILE} "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}\n")
|
||||
# MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
|
||||
ENDMACRO(MSG)
|
||||
|
||||
|
||||
MSG("wxWidgets_FOUND=${wxWidgets_FOUND}")
|
||||
IF (wxWidgets_FOUND)
|
||||
IF (wxWidgets_INCLUDE_DIRS)
|
||||
IF(wxWidgets_INCLUDE_DIRS_NO_SYSTEM)
|
||||
INCLUDE_DIRECTORIES(${wxWidgets_INCLUDE_DIRS})
|
||||
ELSE(wxWidgets_INCLUDE_DIRS_NO_SYSTEM)
|
||||
INCLUDE_DIRECTORIES(SYSTEM ${wxWidgets_INCLUDE_DIRS})
|
||||
ENDIF(wxWidgets_INCLUDE_DIRS_NO_SYSTEM)
|
||||
MSG("wxWidgets_INCLUDE_DIRS=${wxWidgets_INCLUDE_DIRS}")
|
||||
ENDIF(wxWidgets_INCLUDE_DIRS)
|
||||
|
||||
IF (wxWidgets_LIBRARY_DIRS)
|
||||
LINK_DIRECTORIES(${wxWidgets_LIBRARY_DIRS})
|
||||
MSG("wxWidgets_LIBRARY_DIRS=${wxWidgets_LIBRARY_DIRS}")
|
||||
ENDIF(wxWidgets_LIBRARY_DIRS)
|
||||
|
||||
IF (wxWidgets_DEFINITIONS)
|
||||
ADD_DEFINITIONS( ${wxWidgets_DEFINITIONS} )
|
||||
MSG("wxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}")
|
||||
ENDIF(wxWidgets_DEFINITIONS)
|
||||
|
||||
IF (wxWidgets_CXX_FLAGS)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${wxWidgets_CXX_FLAGS}")
|
||||
MSG("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
|
||||
ENDIF(wxWidgets_CXX_FLAGS)
|
||||
|
||||
# DEPRECATED JW
|
||||
# just for backward compatibility: add deps to all targets
|
||||
# library projects better use advanced FIND_PACKAGE(wxWidgets) directly.
|
||||
#IF(wxWidgets_LIBRARIES)
|
||||
# LINK_LIBRARIES(${wxWidgets_LIBRARIES})
|
||||
# # BUG: str too long: MSG("wxWidgets_LIBRARIES=${wxWidgets_LIBRARIES}")
|
||||
# IF(LOGFILE)
|
||||
# FILE(APPEND ${LOGFILE} "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${wxWidgets_LIBRARIES}\n")
|
||||
# ENDIF(LOGFILE)
|
||||
#ENDIF(wxWidgets_LIBRARIES)
|
||||
|
||||
ELSE (wxWidgets_FOUND)
|
||||
MESSAGE("wxWidgets requested but not found.")
|
||||
ENDIF(wxWidgets_FOUND)
|
|
@ -394,7 +394,7 @@ set(PATH ${CMAKE_CURRENT_SOURCE_DIR})
|
|||
|
||||
# The name of the directory to put the copied and renamed *.xpm files into.
|
||||
# As files are copied they are renamed to *.cpp.
|
||||
set(XPM_CPP_PATH "${PATH}/auto_renamed_to_cpp"
|
||||
set(XPM_CPP_PATH "${CMAKE_BINARY_DIR}/bitmaps/auto_renamed_to_cpp"
|
||||
CACHE PATH "path to store renamed .xpm files for compilation")
|
||||
|
||||
foreach(LOOP_VAR ${BITMAP_SRCS})
|
||||
|
|
|
@ -104,7 +104,7 @@ void recursive_bezier( int x1, int y1, int x2, int y2, int x3, int y3, int level
|
|||
|
||||
int dx = x3 - x1;
|
||||
int dy = y3 - y1;
|
||||
double d = fabs( ( (x2 - x3) * dy - (y2 - y3) * dx ) );
|
||||
double d = fabs( (double) ( (x2 - x3) * dy - (y2 - y3) * dx ) );
|
||||
double da;
|
||||
|
||||
if( d > bezier_curve_collinearity_epsilon )
|
||||
|
@ -124,7 +124,8 @@ void recursive_bezier( int x1, int y1, int x2, int y2, int x3, int y3, int level
|
|||
|
||||
// Angle & Cusp Condition
|
||||
//----------------------
|
||||
da = fabs( atan2( y3 - y2, x3 - x2 ) - atan2( y2 - y1, x2 - x1 ) );
|
||||
da = fabs( atan2( (double) ( y3 - y2 ), (double) ( x3 - x2 ) ) -
|
||||
atan2( (double) ( y2 - y1 ), (double) ( x2 - x1 ) ) );
|
||||
if( da >=M_PI )
|
||||
da = 2 * M_PI - da;
|
||||
|
||||
|
@ -160,7 +161,8 @@ void recursive_bezier( int x1, int y1, int x2, int y2, int x3, int y3, int level
|
|||
else if( d >= 1 )
|
||||
d = calc_sq_distance( x2, y2, x3, y3 );
|
||||
else
|
||||
d = calc_sq_distance( x2, y2, x1 + d * dx, y1 + d * dy );
|
||||
d = calc_sq_distance( x2, y2, x1 + (int) d * dx,
|
||||
y1 + (int) d * dy );
|
||||
}
|
||||
if( d < bezier_distance_tolerance_square )
|
||||
{
|
||||
|
@ -204,8 +206,8 @@ void recursive_bezier( int x1, int y1, int x2, int y2, int x3, int y3, int x4, i
|
|||
int dx = x4 - x1;
|
||||
int dy = y4 - y1;
|
||||
|
||||
double d2 = fabs( ( (x2 - x4) * dy - (y2 - y4) * dx ) );
|
||||
double d3 = fabs( ( (x3 - x4) * dy - (y3 - y4) * dx ) );
|
||||
double d2 = fabs( (double) ( (x2 - x4) * dy - (y2 - y4) * dx ) );
|
||||
double d3 = fabs( (double) ( (x3 - x4) * dy - (y3 - y4) * dx ) );
|
||||
double da1, da2, k;
|
||||
|
||||
switch( (int(d2 > bezier_curve_collinearity_epsilon) << 1) +
|
||||
|
@ -241,14 +243,16 @@ void recursive_bezier( int x1, int y1, int x2, int y2, int x3, int y3, int x4, i
|
|||
else if( d2 >= 1 )
|
||||
d2 = calc_sq_distance( x2, y2, x4, y4 );
|
||||
else
|
||||
d2 = calc_sq_distance( x2, y2, x1 + d2 * dx, y1 + d2 * dy );
|
||||
d2 = calc_sq_distance( x2, y2, x1 + (int) d2 * dx,
|
||||
y1 + (int) d2 * dy );
|
||||
|
||||
if( d3 <= 0 )
|
||||
d3 = calc_sq_distance( x3, y3, x1, y1 );
|
||||
else if( d3 >= 1 )
|
||||
d3 = calc_sq_distance( x3, y3, x4, y4 );
|
||||
else
|
||||
d3 = calc_sq_distance( x3, y3, x1 + d3 * dx, y1 + d3 * dy );
|
||||
d3 = calc_sq_distance( x3, y3, x1 + (int) d3 * dx,
|
||||
y1 + (int) d3 * dy );
|
||||
}
|
||||
if( d2 > d3 )
|
||||
{
|
||||
|
@ -282,7 +286,8 @@ void recursive_bezier( int x1, int y1, int x2, int y2, int x3, int y3, int x4, i
|
|||
|
||||
// Angle Condition
|
||||
//----------------------
|
||||
da1 = fabs( atan2( y4 - y3, x4 - x3 ) - atan2( y3 - y2, x3 - x2 ) );
|
||||
da1 = fabs( atan2( (double) ( y4 - y3 ), (double) ( x4 - x3 ) ) -
|
||||
atan2( (double) ( y3 - y2 ), (double) ( x3 - x2 ) ) );
|
||||
if( da1 >= M_PI )
|
||||
da1 = 2 * M_PI - da1;
|
||||
|
||||
|
@ -318,7 +323,8 @@ void recursive_bezier( int x1, int y1, int x2, int y2, int x3, int y3, int x4, i
|
|||
|
||||
// Angle Condition
|
||||
//----------------------
|
||||
da1 = fabs( atan2( y3 - y2, x3 - x2 ) - atan2( y2 - y1, x2 - x1 ) );
|
||||
da1 = fabs( atan2( (double) ( y3 - y2 ), (double) ( x3 - x2 ) ) -
|
||||
atan2( (double) ( y2 - y1 ), (double) ( x2 - x1 ) ) );
|
||||
if( da1 >= M_PI )
|
||||
da1 = 2 * M_PI - da1;
|
||||
|
||||
|
@ -357,9 +363,11 @@ void recursive_bezier( int x1, int y1, int x2, int y2, int x3, int y3, int x4, i
|
|||
|
||||
// Angle & Cusp Condition
|
||||
//----------------------
|
||||
k = atan2( y3 - y2, x3 - x2 );
|
||||
da1 = fabs( k - atan2( y2 - y1, x2 - x1 ) );
|
||||
da2 = fabs( atan2( y4 - y3, x4 - x3 ) - k );
|
||||
k = atan2( (double) ( y3 - y2 ), (double) ( x3 - x2 ) );
|
||||
da1 = fabs( k - atan2( (double) ( y2 - y1 ),
|
||||
(double) ( x2 - x1 ) ) );
|
||||
da2 = fabs( atan2( (double) ( y4 - y3 ),
|
||||
(double) ( x4 - x3 ) ) - k );
|
||||
if( da1 >= M_PI )
|
||||
da1 = 2 * M_PI - da1;
|
||||
if( da2 >= M_PI )
|
||||
|
|
|
@ -508,7 +508,6 @@ int WinEDA_DrawFrame::HandleBlockEnd( wxDC* DC )
|
|||
void WinEDA_DrawFrame::AdjustScrollBars()
|
||||
/*********************************************/
|
||||
{
|
||||
#ifndef WX_ZOOM
|
||||
int xUnit, yUnit;
|
||||
wxSize draw_size, panel_size;
|
||||
wxSize scrollbar_number;
|
||||
|
@ -544,6 +543,7 @@ void WinEDA_DrawFrame::AdjustScrollBars()
|
|||
screen->m_DrawOrg.y = -panel_size.y / 2;
|
||||
}
|
||||
|
||||
#ifndef WX_ZOOM
|
||||
// Calculate the number of scroll bar units for the given zoom level. */
|
||||
scrollbar_number.x =
|
||||
wxRound( (double) draw_size.x /
|
||||
|
@ -583,18 +583,26 @@ void WinEDA_DrawFrame::AdjustScrollBars()
|
|||
screen->m_ScrollbarNumber.y,
|
||||
screen->m_ScrollbarPos.x,
|
||||
screen->m_ScrollbarPos.y, TRUE );
|
||||
// #else
|
||||
// BASE_SCREEN* screen = GetBaseScreen();
|
||||
// wxSize drawingSize = screen->ReturnPageSize() * 2;
|
||||
// wxCoord x, y;
|
||||
// wxClientDC DC( this );
|
||||
// DrawPanel->PrepareGraphicContext( &DC );
|
||||
// x = DC.LogicalToDeviceXRel( drawingSize.GetWidth() );
|
||||
// y = DC.LogicalToDeviceYRel( drawingSize.GetHeight() );
|
||||
// DrawPanel->SetScrollbars( 1, 1, x, y,
|
||||
// DC.LogicalToDeviceX( screen->m_Curseur.x ),
|
||||
// DC.LogicalToDeviceY( screen->m_Curseur.y ),
|
||||
// true );
|
||||
#else
|
||||
int x, y, scroll_x, scroll_y;
|
||||
double scale_x, scale_y;
|
||||
|
||||
wxClientDC DC( this );
|
||||
|
||||
DrawPanel->PrepareGraphicContext( &DC );
|
||||
x = DC.LogicalToDeviceXRel( draw_size.GetWidth() );
|
||||
y = DC.LogicalToDeviceYRel( draw_size.GetHeight() );
|
||||
|
||||
scrollbar_pos = screen->m_Curseur - screen->m_DrawOrg;
|
||||
scrollbar_pos.x -= panel_size.x / 2;
|
||||
scrollbar_pos.y -= panel_size.y / 2;
|
||||
scroll_x = DC.LogicalToDeviceXRel( scrollbar_pos.x );
|
||||
scroll_y = DC.LogicalToDeviceYRel( scrollbar_pos.y );
|
||||
|
||||
wxLogDebug( wxT( "SetScrollbars(1, 1, %d, %d, %d, %d)" ),
|
||||
x, y, scroll_x, scroll_y );
|
||||
|
||||
DrawPanel->SetScrollbars( 1, 1, x, y, scroll_x, scroll_y );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -197,27 +197,10 @@ void WinEDA_DrawPanel::PrepareGraphicContext( wxDC* DC )
|
|||
GRResetPenAndBrush( DC );
|
||||
DC->SetBackgroundMode( wxTRANSPARENT );
|
||||
#ifdef WX_ZOOM
|
||||
int clientWidth, clientHeight;
|
||||
GetClientSize( &clientWidth, &clientHeight );
|
||||
|
||||
wxSize drawingSize = GetScreen()->ReturnPageSize() * 2;
|
||||
|
||||
double scale = GetScreen()->GetScalingFactor();
|
||||
int dx = 0, dy = 0;
|
||||
int drawingWidth = wxRound( (double)drawingSize.GetWidth() * scale );
|
||||
int drawingHeight = wxRound( (double)drawingSize.GetHeight() * scale );
|
||||
|
||||
if( drawingWidth < clientWidth )
|
||||
dx = ( clientWidth - drawingWidth ) / 2;
|
||||
if( drawingHeight < clientHeight )
|
||||
dy = ( clientHeight - drawingHeight ) / 2;
|
||||
|
||||
wxCoord x, y;
|
||||
DC->GetDeviceOrigin( &x, &y );
|
||||
DC->SetUserScale( scale, scale );
|
||||
DC->SetDeviceOrigin( x + dx, y + dy );
|
||||
// wxSize size = GetScreen()->ReturnPageSize() * 2 * scale;
|
||||
// DC->SetLogicalOrigin( origin.x, origin.y );
|
||||
wxPoint origin = GetScreen()->m_DrawOrg;
|
||||
DC->SetLogicalOrigin( origin.x, origin.y );
|
||||
#endif
|
||||
SetBoundaryBox();
|
||||
}
|
||||
|
@ -613,6 +596,12 @@ void WinEDA_DrawPanel::EraseScreen( wxDC* DC )
|
|||
void WinEDA_DrawPanel::OnPaint( wxPaintEvent& event )
|
||||
/***************************************************/
|
||||
{
|
||||
if( GetScreen() == NULL )
|
||||
{
|
||||
event.Skip();
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef USE_GCDC_IN_KICAD
|
||||
wxPaintDC pDC( this );
|
||||
wxGCDC paintDC(pDC); // Following line should be disabled on MSW and OS X
|
||||
|
@ -647,10 +636,23 @@ void WinEDA_DrawPanel::OnPaint( wxPaintEvent& event )
|
|||
#endif
|
||||
|
||||
#ifdef WX_ZOOM
|
||||
m_ClipBox.m_Pos.x = paintDC.DeviceToLogicalX( m_ClipBox.m_Pos.x );
|
||||
m_ClipBox.m_Pos.y = paintDC.DeviceToLogicalY( m_ClipBox.m_Pos.y );
|
||||
m_ClipBox.m_Size.SetWidth( paintDC.DeviceToLogicalXRel( m_ClipBox.m_Size.GetWidth() ) );
|
||||
m_ClipBox.m_Size.SetHeight( paintDC.DeviceToLogicalYRel( m_ClipBox.m_Size.GetHeight() ) );
|
||||
wxLogDebug( wxT( "1) PaintClipBox=(%d, %d, %d, %d) org=(%d, %d) " \
|
||||
"m_ClipBox=(%d, %d, %d, %d)\n" ), PaintClipBox.x,
|
||||
PaintClipBox.y, PaintClipBox.width, PaintClipBox.height,
|
||||
org.x, org.y, m_ClipBox.m_Pos.x, m_ClipBox.m_Pos.y,
|
||||
m_ClipBox.m_Size.x, m_ClipBox.m_Size.y );
|
||||
|
||||
wxSize drawing_size = GetScreen()->ReturnPageSize() * 2;
|
||||
m_ClipBox.m_Pos.x = 0;
|
||||
m_ClipBox.m_Pos.y = 0;
|
||||
m_ClipBox.SetWidth( drawing_size.x );
|
||||
m_ClipBox.SetHeight( drawing_size.y );
|
||||
|
||||
wxLogDebug( wxT( "2) PaintClipBox=(%d, %d, %d, %d) org=(%d, %d) " \
|
||||
"m_ClipBox=(%d, %d, %d, %d)\n" ), PaintClipBox.x,
|
||||
PaintClipBox.y, PaintClipBox.width, PaintClipBox.height,
|
||||
org.x, org.y, m_ClipBox.m_Pos.x, m_ClipBox.m_Pos.y,
|
||||
m_ClipBox.m_Size.x, m_ClipBox.m_Size.y );
|
||||
#else
|
||||
PaintClipBox.Offset( org );
|
||||
m_ClipBox.SetX( PaintClipBox.GetX() );
|
||||
|
@ -677,8 +679,9 @@ void WinEDA_DrawPanel::OnPaint( wxPaintEvent& event )
|
|||
|
||||
// call ~wxDCClipper() before ~wxPaintDC()
|
||||
{
|
||||
#ifndef WX_ZOOM
|
||||
wxDCClipper dcclip( paintDC, PaintClipBox );
|
||||
|
||||
#endif
|
||||
ReDraw( &paintDC, true );
|
||||
|
||||
#ifdef WX_ZOOM
|
||||
|
|
|
@ -194,7 +194,8 @@ bool LibDrawArc::HitTest( wxPoint aRefPoint, int aThreshold, const int aTransMat
|
|||
NEGATE( relpos.y ); // reverse Y axis
|
||||
|
||||
relpos -= m_Pos;
|
||||
int dist = wxRound( sqrt( ( (double) relpos.x * relpos.x ) + ( (double) relpos.y * relpos.y ) ) );
|
||||
int dist = wxRound( sqrt( ( (double) relpos.x * (double) relpos.x ) +
|
||||
( (double) relpos.y * (double) relpos.y ) ) );
|
||||
|
||||
if( abs( dist - m_Rayon ) > aThreshold )
|
||||
return false;
|
||||
|
@ -202,7 +203,7 @@ bool LibDrawArc::HitTest( wxPoint aRefPoint, int aThreshold, const int aTransMat
|
|||
// We are on the circle, ensure we are only on the arc, i.e. between m_ArcStart and m_ArcEnd
|
||||
int astart = t1; // arc starting point ( in 0.1 degree)
|
||||
int aend = t2; // arc ending point ( in 0.1 degree)
|
||||
int atest = wxRound( atan2( relpos.y, relpos.x ) * 1800.0 / M_PI );
|
||||
int atest = wxRound( atan2( (double) relpos.y, (double) relpos.x ) * 1800.0 / M_PI );
|
||||
NORMALIZE_ANGLE_180( atest );
|
||||
NORMALIZE_ANGLE_180( astart );
|
||||
NORMALIZE_ANGLE_180( aend );
|
||||
|
|
|
@ -422,8 +422,8 @@ void WinEDA_SchematicFrame::OnUpdateBlockSelected( wxUpdateUIEvent& event )
|
|||
|
||||
void WinEDA_SchematicFrame::OnUpdatePaste( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Enable( g_BlockSaveDataList );
|
||||
m_HToolBar->EnableTool( wxID_PASTE, g_BlockSaveDataList );
|
||||
event.Enable( g_BlockSaveDataList != NULL );
|
||||
m_HToolBar->EnableTool( wxID_PASTE, g_BlockSaveDataList != NULL );
|
||||
}
|
||||
|
||||
void WinEDA_SchematicFrame::OnUpdateSchematicUndo( wxUpdateUIEvent& event )
|
||||
|
|
Loading…
Reference in New Issue