Fix zoom issues in Eeschema (F1 to F4 and popup zoom commands) Fix also not saving the Gal Canvas type on eeschema exit.

This commit is contained in:
jean-pierre charras 2018-09-14 10:15:10 +02:00 committed by Jeff Young
parent f283667fb0
commit 33386ec980
5 changed files with 122 additions and 69 deletions

View File

@ -237,7 +237,7 @@ EDA_DRAW_FRAME::~EDA_DRAW_FRAME()
socket->Destroy(); socket->Destroy();
} }
if( m_canvasTypeDirty ) if( m_canvasTypeDirty ) // the canvas type has changed: save the new type
saveCanvasTypeSetting( m_canvasType ); saveCanvasTypeSetting( m_canvasType );
delete m_actions; delete m_actions;
@ -1076,7 +1076,7 @@ EDA_DRAW_PANEL_GAL::GAL_TYPE EDA_DRAW_FRAME::LoadCanvasTypeSetting()
if( canvasType < EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE if( canvasType < EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE
|| canvasType >= EDA_DRAW_PANEL_GAL::GAL_TYPE_LAST ) || canvasType >= EDA_DRAW_PANEL_GAL::GAL_TYPE_LAST )
{ {
assert( false ); wxASSERT( false );
canvasType = EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE; canvasType = EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE;
} }
@ -1089,7 +1089,7 @@ bool EDA_DRAW_FRAME::saveCanvasTypeSetting( EDA_DRAW_PANEL_GAL::GAL_TYPE aCanvas
if( aCanvasType < EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE if( aCanvasType < EDA_DRAW_PANEL_GAL::GAL_TYPE_NONE
|| aCanvasType >= EDA_DRAW_PANEL_GAL::GAL_TYPE_LAST ) || aCanvasType >= EDA_DRAW_PANEL_GAL::GAL_TYPE_LAST )
{ {
assert( false ); wxASSERT( false );
return false; return false;
} }
@ -1364,9 +1364,9 @@ void EDA_DRAW_FRAME::OnZoom( wxCommandEvent& event )
return; return;
int id = event.GetId(); int id = event.GetId();
bool zoom_at_cursor = false; bool warp_cursor = false;
BASE_SCREEN* screen = GetScreen(); VECTOR2D cpos = GetCrossHairPosition();//GetGalCanvas()->GetViewControls()->GetCursorPosition();
wxPoint center = GetScrollCenterPosition(); wxPoint zoom_center( (int)cpos.x, (int)cpos.y );
if ( id == ID_KEY_ZOOM_IN ) if ( id == ID_KEY_ZOOM_IN )
{ {
@ -1382,39 +1382,27 @@ void EDA_DRAW_FRAME::OnZoom( wxCommandEvent& event )
switch( id ) switch( id )
{ {
case ID_OFFCENTER_ZOOM_IN: case ID_OFFCENTER_ZOOM_IN:
center = m_canvas->ToDeviceXY( GetCrossHairPosition() ); SetPreviousZoomAndRedraw( zoom_center,warp_cursor );
if( screen->SetPreviousZoom() )
RedrawScreen2( center );
break; break;
case ID_POPUP_ZOOM_IN: case ID_POPUP_ZOOM_IN:
zoom_at_cursor = true; warp_cursor = true;
center = GetCrossHairPosition(); // fall thru
// fall thru
case ID_VIEWER_ZOOM_IN: case ID_VIEWER_ZOOM_IN:
case ID_ZOOM_IN: case ID_ZOOM_IN:
if( screen->SetPreviousZoom() ) SetPreviousZoomAndRedraw( zoom_center,warp_cursor );
RedrawScreen( center, zoom_at_cursor );
break; break;
case ID_OFFCENTER_ZOOM_OUT: case ID_OFFCENTER_ZOOM_OUT:
center = m_canvas->ToDeviceXY( GetCrossHairPosition() ); SetNextZoomAndRedraw( zoom_center, warp_cursor );
if( screen->SetNextZoom() )
RedrawScreen2( center );
break; break;
case ID_POPUP_ZOOM_OUT: case ID_POPUP_ZOOM_OUT:
zoom_at_cursor = true; warp_cursor = true;
center = GetCrossHairPosition(); // fall thru
// fall thru
case ID_VIEWER_ZOOM_OUT: case ID_VIEWER_ZOOM_OUT:
case ID_ZOOM_OUT: case ID_ZOOM_OUT:
if( screen->SetNextZoom() ) SetNextZoomAndRedraw( zoom_center, warp_cursor );
RedrawScreen( center, zoom_at_cursor );
break; break;
case ID_VIEWER_ZOOM_REDRAW: case ID_VIEWER_ZOOM_REDRAW:
@ -1425,8 +1413,8 @@ void EDA_DRAW_FRAME::OnZoom( wxCommandEvent& event )
break; break;
case ID_POPUP_ZOOM_CENTER: case ID_POPUP_ZOOM_CENTER:
center = GetCrossHairPosition(); GetGalCanvas()->GetView()->SetScale( GetGalCanvas()->GetView()->GetScale(), zoom_center );
RedrawScreen( center, true ); GetGalCanvas()->GetViewControls()->CenterOnCursor();
break; break;
case ID_POPUP_ZOOM_PAGE: case ID_POPUP_ZOOM_PAGE:
@ -1462,6 +1450,64 @@ void EDA_DRAW_FRAME::SetPrevZoom()
} }
void EDA_DRAW_FRAME::SetNextZoomAndRedraw( const wxPoint& aCenterPoint, bool aWarpPointer )
{
double zoom = GetGalCanvas()->GetLegacyZoom();
zoom *= 1.3;
// Now look for the next closest menu step
std::vector<double>& zoomList = GetScreen()->m_ZoomList;
int idx;
for( idx = 0; idx < (int)zoomList.size(); ++idx )
{
if( zoomList[idx] > zoom )
break;
}
if( idx >= (int)zoomList.size() )
return;
VECTOR2D cpos = GetGalCanvas()->GetViewControls()->GetCursorPosition();
wxPoint center( (int)cpos.x, (int)cpos.y );
if( m_zoomSelectBox )
m_zoomSelectBox->SetSelection( idx );
if( GetScreen()->SetZoom( GetScreen()->m_ZoomList[idx] ) )
RedrawScreen( aCenterPoint, true );
}
void EDA_DRAW_FRAME::SetPreviousZoomAndRedraw( const wxPoint& aCenterPoint, bool aWarpPointer )
{
double zoom = GetGalCanvas()->GetLegacyZoom();
zoom /= 1.3;
// Now look for the next closest menu step
std::vector<double>& zoomList = GetScreen()->m_ZoomList;
int idx;
for( idx = zoomList.size() - 1; idx >= 0; --idx )
{
if( zoomList[idx] < zoom )
break;
}
if( idx < 0 )
return;
VECTOR2D cpos = GetGalCanvas()->GetViewControls()->GetCursorPosition();
wxPoint center( (int)cpos.x, (int)cpos.y );
if( m_zoomSelectBox )
m_zoomSelectBox->SetSelection( idx );
if( GetScreen()->SetZoom( GetScreen()->m_ZoomList[idx] ) )
RedrawScreen( aCenterPoint, aWarpPointer );
}
void EDA_DRAW_FRAME::SetPresetZoom( int aIndex ) void EDA_DRAW_FRAME::SetPresetZoom( int aIndex )
{ {
BASE_SCREEN* screen = GetScreen(); BASE_SCREEN* screen = GetScreen();

View File

@ -143,6 +143,8 @@ void SCH_BASE_FRAME::OnSwitchCanvas( wxCommandEvent& aEvent )
return; return;
GetGalCanvas()->SwitchBackend( new_type ); GetGalCanvas()->SwitchBackend( new_type );
m_canvasTypeDirty = true; // force saving new canvas type in config
m_canvasType = new_type;
} }
@ -461,7 +463,7 @@ void SCH_BASE_FRAME::RedrawScreen( const wxPoint& aCenterPoint, bool aWarpPointe
GetCanvas()->GetView()->SetScale( scale ); GetCanvas()->GetView()->SetScale( scale );
if( aWarpPointer ) if( aWarpPointer )
GetCanvas()->GetViewControls()->WarpCursor( aCenterPoint ); GetCanvas()->GetViewControls()->CenterOnCursor();
GetCanvas()->Refresh(); GetCanvas()->Refresh();
} }

View File

@ -40,10 +40,9 @@
using namespace std::placeholders; using namespace std::placeholders;
// Events used by EDA_DRAW_PANEL // Events used by EDA_DRAW_PANEL
// GAL TODO: some (most?) of these need to be implemented... // GAL TODO: some (most?) of these need to be implemented...
BEGIN_EVENT_TABLE( SCH_DRAW_PANEL, wxScrolledWindow ) BEGIN_EVENT_TABLE( SCH_DRAW_PANEL, wxScrolledCanvas )
// EVT_LEAVE_WINDOW( EDA_DRAW_PANEL::OnMouseLeaving ) // EVT_LEAVE_WINDOW( EDA_DRAW_PANEL::OnMouseLeaving )
// EVT_ENTER_WINDOW( EDA_DRAW_PANEL::OnMouseEntering ) // EVT_ENTER_WINDOW( EDA_DRAW_PANEL::OnMouseEntering )
// EVT_MOUSEWHEEL( EDA_DRAW_PANEL::OnMouseWheel ) // EVT_MOUSEWHEEL( EDA_DRAW_PANEL::OnMouseWheel )
@ -381,17 +380,7 @@ void SCH_DRAW_PANEL::OnMouseEvent( wxMouseEvent& event )
if( event.MiddleIsDown() ) if( event.MiddleIsDown() )
{ {
/* Not used in GAL canvas // already managed by EDA_DRAW_PANEL_GAL mouse event handler.
wxPoint currentPosition = event.GetPosition();
double scale = GetParent()->GetScreen()->GetScalingFactor();
int x = m_PanStartCenter.x +
KiROUND( (double) ( m_PanStartEventPosition.x - currentPosition.x ) / scale );
int y = m_PanStartCenter.y +
KiROUND( (double) ( m_PanStartEventPosition.y - currentPosition.y ) / scale );
GetParent()->RedrawScreen( wxPoint( x, y ), false );
*/
return; return;
} }

View File

@ -72,7 +72,6 @@ class EDA_DRAW_FRAME : public KIWAY_PLAYER
BASE_SCREEN* m_currentScreen; ///< current used SCREEN BASE_SCREEN* m_currentScreen; ///< current used SCREEN
bool m_snapToGrid; ///< Indicates if cursor should be snapped to grid. bool m_snapToGrid; ///< Indicates if cursor should be snapped to grid.
bool m_galCanvasActive; ///< whether to use new GAL engine
EDA_DRAW_PANEL_GAL* m_galCanvas; EDA_DRAW_PANEL_GAL* m_galCanvas;
@ -80,6 +79,7 @@ class EDA_DRAW_FRAME : public KIWAY_PLAYER
KIGFX::GAL_DISPLAY_OPTIONS m_galDisplayOptions; KIGFX::GAL_DISPLAY_OPTIONS m_galDisplayOptions;
protected: protected:
bool m_galCanvasActive; ///< whether to use new GAL engine
bool m_useSingleCanvasPane; bool m_useSingleCanvasPane;
wxSocketServer* m_socketServer; wxSocketServer* m_socketServer;
@ -648,12 +648,28 @@ public:
*/ */
void SetNextZoom(); void SetNextZoom();
/**
* changes the zoom to the next one available redraws the screen
* and warp the mouse pointer on request.
* @param aCenterPoint is the reference point for zooming
* @param aWarpPointer = true to move the pointer to the aCenterPoint
*/
void SetNextZoomAndRedraw( const wxPoint& aCenterPoint, bool aWarpPointer );
/** /**
* Function SetPrevZoom() * Function SetPrevZoom()
* changes the zoom to the previous one available. * changes the zoom to the previous one available.
*/ */
void SetPrevZoom(); void SetPrevZoom();
/**
* changes the zoom to the previous one available redraws the screen
* and warp the mouse pointer on request.
* @param aCenterPoint is the reference point for zooming
* @param aWarpPointer = true to move the pointer to the aCenterPoint
*/
void SetPreviousZoomAndRedraw( const wxPoint& aCenterPoint, bool aWarpPointer );
/** /**
* Function SetPresetZoom() * Function SetPresetZoom()
* changes zoom to one of the preset values. * changes zoom to one of the preset values.

View File

@ -94,7 +94,7 @@ public:
* A way to pass info to draw functions. * A way to pass info to draw functions.
* this is just an accessor to the GetDisplayOptions() parent frame function. * this is just an accessor to the GetDisplayOptions() parent frame function.
*/ */
virtual void* GetDisplayOptions() { printf("Unimplemented\n"); assert(false); return nullptr; }; virtual void* GetDisplayOptions() { printf("EDA_DRAW_PANEL:Unimplemented\n"); wxASSERT(false); return nullptr; };
virtual BASE_SCREEN* GetScreen() = 0; virtual BASE_SCREEN* GetScreen() = 0;
@ -143,7 +143,7 @@ public:
* X and Y axis * X and Y axis
* X and Y auxiliary axis * X and Y auxiliary axis
*/ */
virtual void DrawBackGround( wxDC* DC ) { printf("Unimplemented\n"); }; virtual void DrawBackGround( wxDC* DC ) { printf("EDA_DRAW_PANEL:Unimplemented1\n"); };
/** /**
* Function DrawGrid * Function DrawGrid
@ -153,7 +153,7 @@ public:
* @see EDA_DRAW_FRAME::GetGridColor() for the color of the grid. * @see EDA_DRAW_FRAME::GetGridColor() for the color of the grid.
* @param aDC The device context to draw the grid. * @param aDC The device context to draw the grid.
*/ */
virtual void DrawGrid( wxDC* aDC ) { printf("Unimplemented\n"); }; virtual void DrawGrid( wxDC* aDC ) { printf("EDA_DRAW_PANEL:Unimplemented2\n"); };
/** /**
* Function DrawAuxiliaryAxis * Function DrawAuxiliaryAxis
@ -162,7 +162,7 @@ public:
* @param aDC = current Device Context * @param aDC = current Device Context
* @param aDrawMode = draw mode (GR_COPY, GR_OR ..) * @param aDrawMode = draw mode (GR_COPY, GR_OR ..)
*/ */
virtual void DrawAuxiliaryAxis( wxDC* aDC, GR_DRAWMODE aDrawMode ) { printf("Unimplemented\n");}; virtual void DrawAuxiliaryAxis( wxDC* aDC, GR_DRAWMODE aDrawMode ) { printf("EDA_DRAW_PANEL:Unimplemented2\n");};
/** /**
* Function DrawGridAxis * Function DrawGridAxis
@ -172,7 +172,7 @@ public:
* @param aDrawMode = draw mode (GR_COPY, GR_OR ..) * @param aDrawMode = draw mode (GR_COPY, GR_OR ..)
* @param aGridOrigin = the absolute coordinate of grid origin for snap. * @param aGridOrigin = the absolute coordinate of grid origin for snap.
*/ */
virtual void DrawGridAxis( wxDC* aDC, GR_DRAWMODE aDrawMode, const wxPoint& aGridOrigin ) { printf("Unimplemented\n"); }; virtual void DrawGridAxis( wxDC* aDC, GR_DRAWMODE aDrawMode, const wxPoint& aGridOrigin ) { printf("EDA_DRAW_PANEL:Unimplemented4\n"); };
/** /**
* Function DeviceToLogical * Function DeviceToLogical
@ -184,7 +184,7 @@ public:
* @param aDC The device context used for the conversion. * @param aDC The device context used for the conversion.
* @return A rectangle converted to drawing units. * @return A rectangle converted to drawing units.
*/ */
virtual wxRect DeviceToLogical( const wxRect& aRect, wxDC& aDC ) { printf("Unimplemented\n");assert(false); return wxRect(); }; virtual wxRect DeviceToLogical( const wxRect& aRect, wxDC& aDC ) { printf("EDA_DRAW_PANEL:Unimplemented5\n");wxASSERT(false); return wxRect(); };
/* Mouse and keys events */ /* Mouse and keys events */
@ -198,13 +198,13 @@ public:
*</p> *</p>
*/ */
virtual void EraseScreen( wxDC* DC ) { printf("Unimplemented\n"); };; virtual void EraseScreen( wxDC* DC ) { printf("EDA_DRAW_PANEL:Unimplemented6\n"); };;
virtual void SetZoom( double mode ) { printf("Unimplemented\n"); };; virtual void SetZoom( double mode ) { printf("EDA_DRAW_PANEL:Unimplemented7\n"); };;
virtual double GetZoom() { printf("Unimplemented\n"); return 1.0; };; virtual double GetZoom() { printf("EDA_DRAW_PANEL:Unimplemented8\n"); return 1.0; };;
//virtual void SetGrid( const wxRealPoint& size ) { printf("Unimplemented\n"); };; //virtual void SetGrid( const wxRealPoint& size ) { printf("EDA_DRAW_PANEL:Unimplemented\n"); };;
//virtual wxRealPoint GetGrid() { printf("Unimplemented\n"); return wxRealPoint(1.0, 1.0); };; //virtual wxRealPoint GetGrid() { printf("EDA_DRAW_PANEL:Unimplemented\n"); return wxRealPoint(1.0, 1.0); };;
/** /**
@ -213,7 +213,7 @@ public:
* @return true if \a aPosition is visible on the screen. * @return true if \a aPosition is visible on the screen.
* false if \a aPosition is not visible on the screen. * false if \a aPosition is not visible on the screen.
*/ */
virtual bool IsPointOnDisplay( const wxPoint& aPosition ) { printf("Unimplemented\n"); return false; };; virtual bool IsPointOnDisplay( const wxPoint& aPosition ) { printf("EDA_DRAW_PANEL:Unimplemented9\n"); return false; };;
/** /**
* Function SetClipBox * Function SetClipBox
@ -231,9 +231,9 @@ public:
* @param aRect The clip rectangle in device units or NULL for the entire visible area * @param aRect The clip rectangle in device units or NULL for the entire visible area
* of the screen. * of the screen.
*/ */
virtual void SetClipBox( wxDC& aDC, const wxRect* aRect = NULL ) { printf("Unimplemented\n"); };; virtual void SetClipBox( wxDC& aDC, const wxRect* aRect = NULL ) { printf("EDA_DRAW_PANEL:Unimplemented10\n"); };;
virtual void ReDraw( wxDC* aDC, bool aEraseBackground = true ) { printf("Unimplemented\n"); };; virtual void ReDraw( wxDC* aDC, bool aEraseBackground = true ) { printf("EDA_DRAW_PANEL:Unimplemented11\n"); };;
/** /**
* Function RefreshDrawingRect * Function RefreshDrawingRect
@ -242,7 +242,7 @@ public:
* @param aRect The rectangle to repaint. * @param aRect The rectangle to repaint.
* @param aEraseBackground Erases the background if true. * @param aEraseBackground Erases the background if true.
*/ */
virtual void RefreshDrawingRect( const EDA_RECT& aRect, bool aEraseBackground = true ) { printf("Unimplemented\n"); };; virtual void RefreshDrawingRect( const EDA_RECT& aRect, bool aEraseBackground = true ) { printf("EDA_DRAW_PANEL:Unimplemented12\n"); };;
/// @copydoc wxWindow::Refresh() /// @copydoc wxWindow::Refresh()
//virtual void Refresh( bool eraseBackground = true, const wxRect* rect = NULL ); //virtual void Refresh( bool eraseBackground = true, const wxRect* rect = NULL );
@ -251,32 +251,32 @@ public:
* Function GetScreenCenterLogicalPosition * Function GetScreenCenterLogicalPosition
* @return The current screen center position in logical (drawing) units. * @return The current screen center position in logical (drawing) units.
*/ */
virtual wxPoint GetScreenCenterLogicalPosition() { printf("Unimplemented\n"); return wxPoint(0, 0); };; virtual wxPoint GetScreenCenterLogicalPosition() { printf("EDA_DRAW_PANEL:Unimplemented13\n"); return wxPoint(0, 0); };;
/** /**
* Function MoveCursorToCrossHair * Function MoveCursorToCrossHair
* warps the cursor to the current cross hair position. * warps the cursor to the current cross hair position.
*/ */
virtual void MoveCursorToCrossHair() { printf("Unimplemented\n"); };; virtual void MoveCursorToCrossHair() { printf("EDA_DRAW_PANEL:Unimplemented14\n"); };;
/** /**
* Function ToDeviceXY * Function ToDeviceXY
* transforms logical to device coordinates * transforms logical to device coordinates
*/ */
virtual wxPoint ToDeviceXY( const wxPoint& pos ) { printf("Unimplemented\n"); return wxPoint(0, 0); };; virtual wxPoint ToDeviceXY( const wxPoint& pos ) { printf("EDA_DRAW_PANEL:Unimplemented15\n"); return wxPoint(0, 0); };;
/** /**
* Function ToLogicalXY * Function ToLogicalXY
* transforms device to logical coordinates * transforms device to logical coordinates
*/ */
virtual wxPoint ToLogicalXY( const wxPoint& pos ) { printf("Unimplemented\n"); return wxPoint(0, 0); };; virtual wxPoint ToLogicalXY( const wxPoint& pos ) { printf("EDA_DRAW_PANEL:Unimplemented16\n"); return wxPoint(0, 0); };;
/** /**
* Function MoveCursor * Function MoveCursor
* moves the mouse pointer to \a aPosition in logical (drawing) units. * moves the mouse pointer to \a aPosition in logical (drawing) units.
* @param aPosition The position in logical units to move the cursor. * @param aPosition The position in logical units to move the cursor.
*/ */
virtual void MoveCursor( const wxPoint& aPosition ) { printf("Unimplemented\n"); };; virtual void MoveCursor( const wxPoint& aPosition ) { printf("EDA_DRAW_PANEL:Unimplemented17\n"); };;
/* Cursor functions */ /* Cursor functions */
/** /**
@ -291,13 +291,13 @@ public:
* @param aDC - the device context to draw the cursor * @param aDC - the device context to draw the cursor
* @param aColor - the color to draw the cursor * @param aColor - the color to draw the cursor
*/ */
virtual void DrawCrossHair( wxDC* aDC=nullptr, COLOR4D aColor = COLOR4D::WHITE ) { printf("Unimplemented\n"); };; virtual void DrawCrossHair( wxDC* aDC=nullptr, COLOR4D aColor = COLOR4D::WHITE ) { printf("EDA_DRAW_PANEL:Unimplemented18\n"); };;
// Hide the cross hair. // Hide the cross hair.
virtual void CrossHairOff( wxDC* DC=nullptr ) { printf("Unimplemented\n"); };; virtual void CrossHairOff( wxDC* DC=nullptr ) { printf("EDA_DRAW_PANEL:Unimplemented19\n"); };;
// Show the cross hair. // Show the cross hair.
virtual void CrossHairOn( wxDC* DC=nullptr ) { printf("Unimplemented\n"); };; virtual void CrossHairOn( wxDC* DC=nullptr ) { printf("EDA_DRAW_PANEL:Unimplemented20\n"); };;
/** /**
* Function SetMouseCapture * Function SetMouseCapture
@ -332,7 +332,7 @@ public:
*/ */
virtual void EndMouseCapture( int aId = -1, int aCursorId = -1, virtual void EndMouseCapture( int aId = -1, int aCursorId = -1,
const wxString& aTitle = wxEmptyString, const wxString& aTitle = wxEmptyString,
bool aCallEndFunc = true ) { printf("Unimplemented\n"); assert(false); };; bool aCallEndFunc = true ) { printf("EDA_DRAW_PANEL:Unimplemented21\n"); wxASSERT(false); };;
inline bool IsMouseCaptured() const { return m_mouseCaptureCallback != NULL; } inline bool IsMouseCaptured() const { return m_mouseCaptureCallback != NULL; }
@ -346,7 +346,7 @@ public:
* @param aErase True indicates the item being drawn should be erase before drawing * @param aErase True indicates the item being drawn should be erase before drawing
* it a \a aPosition. * it a \a aPosition.
*/ */
virtual void CallMouseCapture( wxDC* aDC, const wxPoint& aPosition, bool aErase ) { printf("Unimplemented\n"); assert(false); };; virtual void CallMouseCapture( wxDC* aDC, const wxPoint& aPosition, bool aErase ) { printf("EDA_DRAW_PANEL:Unimplemented22\n"); wxASSERT(false); };;
/** /**
* Function CallEndMouseCapture * Function CallEndMouseCapture
@ -354,7 +354,7 @@ public:
* *
* @param aDC A point to a wxDC object to perform any drawing upon. * @param aDC A point to a wxDC object to perform any drawing upon.
*/ */
virtual void CallEndMouseCapture( wxDC* aDC ) { printf("Unimplemented\n"); assert(false); };; virtual void CallEndMouseCapture( wxDC* aDC ) { printf("EDA_DRAW_PANEL:Unimplemented23\n"); wxASSERT(false); };;
virtual void Refresh( bool eraseBackground = true, const wxRect* rect = NULL ) {} virtual void Refresh( bool eraseBackground = true, const wxRect* rect = NULL ) {}