#include "wx/plot/plot.h"
#include "wx/bmpbuttn.h"
+#include "wx/module.h"
#include <math.h>
#include "wx/plot/plot_dwn.xpm"
#endif
+//----------------------------------------------------------------------------
+// event types
+//----------------------------------------------------------------------------
+
+const int wxEVT_PLOT_SEL_CHANGING = wxNewEventType();
+const int wxEVT_PLOT_SEL_CHANGED = wxNewEventType();
+const int wxEVT_PLOT_CLICKED = wxNewEventType();
+const int wxEVT_PLOT_DOUBLECLICKED = wxNewEventType();
+const int wxEVT_PLOT_ZOOM_IN = wxNewEventType();
+const int wxEVT_PLOT_ZOOM_OUT = wxNewEventType();
+const int wxEVT_PLOT_VALUE_SEL_CREATING = wxNewEventType();
+const int wxEVT_PLOT_VALUE_SEL_CREATED = wxNewEventType();
+const int wxEVT_PLOT_VALUE_SEL_CHANGING = wxNewEventType();
+const int wxEVT_PLOT_VALUE_SEL_CHANGED = wxNewEventType();
+const int wxEVT_PLOT_AREA_SEL_CREATING = wxNewEventType();
+const int wxEVT_PLOT_AREA_SEL_CREATED = wxNewEventType();
+const int wxEVT_PLOT_AREA_SEL_CHANGING = wxNewEventType();
+const int wxEVT_PLOT_AREA_SEL_CHANGED = wxNewEventType();
+const int wxEVT_PLOT_BEGIN_X_LABEL_EDIT = wxNewEventType();
+const int wxEVT_PLOT_END_X_LABEL_EDIT = wxNewEventType();
+const int wxEVT_PLOT_BEGIN_Y_LABEL_EDIT = wxNewEventType();
+const int wxEVT_PLOT_END_Y_LABEL_EDIT = wxNewEventType();
+const int wxEVT_PLOT_BEGIN_TITLE_EDIT = wxNewEventType();
+const int wxEVT_PLOT_END_TITLE_EDIT = wxNewEventType();
+const int wxEVT_PLOT_AREA_CREATE = wxNewEventType();
+
//----------------------------------------------------------------------------
// accessor functions for the bitmaps (may return NULL, check for it!)
//----------------------------------------------------------------------------
static wxBitmap *GetUpBitmap();
static wxBitmap *GetDownBitmap();
-//----------------------------------------------------------------------------
-// event types
-//----------------------------------------------------------------------------
-
-int wxEVT_PLOT_SEL_CHANGING;
-int wxEVT_PLOT_SEL_CHANGED;
-int wxEVT_PLOT_CLICKED;
-int wxEVT_PLOT_DOUBLECLICKED;
-int wxEVT_PLOT_ZOOM_IN;
-int wxEVT_PLOT_ZOOM_OUT;
-int wxEVT_PLOT_VALUE_SEL_CREATING;
-int wxEVT_PLOT_VALUE_SEL_CREATED;
-int wxEVT_PLOT_VALUE_SEL_CHANGING;
-int wxEVT_PLOT_VALUE_SEL_CHANGED;
-int wxEVT_PLOT_AREA_SEL_CREATING;
-int wxEVT_PLOT_AREA_SEL_CREATED;
-int wxEVT_PLOT_AREA_SEL_CHANGING;
-int wxEVT_PLOT_AREA_SEL_CHANGED;
-int wxEVT_PLOT_BEGIN_X_LABEL_EDIT;
-int wxEVT_PLOT_END_X_LABEL_EDIT;
-int wxEVT_PLOT_BEGIN_Y_LABEL_EDIT;
-int wxEVT_PLOT_END_Y_LABEL_EDIT;
-int wxEVT_PLOT_BEGIN_TITLE_EDIT;
-int wxEVT_PLOT_END_TITLE_EDIT;
-int wxEVT_PLOT_AREA_CREATE;
-
//-----------------------------------------------------------------------------
// consts
//-----------------------------------------------------------------------------
void wxPlotOnOffCurve::Add( wxInt32 on, wxInt32 off, void *clientData )
{
- wxASSERT_MSG( on > 0, wxT("plot index < 0") );
+ wxASSERT_MSG( on > 0, _T("plot index < 0") );
wxASSERT( on <= off );
if (m_minX == -1)
END_EVENT_TABLE()
wxPlotArea::wxPlotArea( wxPlotWindow *parent )
- : wxWindow( parent, -1, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER, "plotarea" )
+ : wxWindow( parent, -1, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER, _T("plotarea") )
{
m_owner = parent;
x += view_x;
y += view_y;
- wxNode *node = m_owner->m_curves.First();
+ wxList::compatibility_iterator node = m_owner->m_curves.GetFirst();
while (node)
{
- wxPlotCurve *curve = (wxPlotCurve*)node->Data();
+ wxPlotCurve *curve = (wxPlotCurve*)node->GetData();
double double_client_height = (double)client_height;
double range = curve->GetEndY() - curve->GetStartY();
event1.SetPosition( (int)floor(x/m_owner->GetZoom()) );
m_owner->GetEventHandler()->ProcessEvent( event1 );
- if (curve != m_owner->GetCurrent())
+ if (curve != m_owner->GetCurrentCurve())
{
wxPlotEvent event2( wxEVT_PLOT_SEL_CHANGING, m_owner->GetId() );
event2.SetEventObject( m_owner );
event2.SetCurve( curve );
if (!m_owner->GetEventHandler()->ProcessEvent( event2 ) || event2.IsAllowed())
{
- m_owner->SetCurrent( curve );
+ m_owner->SetCurrentCurve( curve );
}
}
return;
}
- node = node->Next();
+ node = node->GetNext();
}
}
double end = curve->GetEndY();
wxCoord offset_y = curve->GetOffsetY();
- wxCoord y=0,last_y=0;
+ wxCoord last_y=0;
for (int x = start_x; x < end_x; x++)
{
double dy = (end - curve->GetY( (wxInt32)(x/zoom) )) / range;
- y = (wxCoord)(dy * double_client_height) - offset_y - 1;
+ wxCoord y = (wxCoord)(dy * double_client_height) - offset_y - 1;
if (x != start_x)
dc->DrawLine( x-1, last_y, x, y );
while (upd)
{
- int update_x = upd.GetX();
- int update_y = upd.GetY();
+ int update_x = upd.GetX() + view_x;
+#if 0
+ // unused var
+ int update_y = upd.GetY() + view_y;
+#endif
int update_width = upd.GetWidth();
- update_x += view_x;
- update_y += view_y;
-
/*
if (m_owner->m_current)
{
}
*/
- wxNode *node = m_owner->m_curves.First();
+ wxList::compatibility_iterator node = m_owner->m_curves.GetFirst();
while (node)
{
- wxPlotCurve *curve = (wxPlotCurve*) node->Data();
+ wxPlotCurve *curve = (wxPlotCurve*) node->GetData();
- if (curve == m_owner->GetCurrent())
+ if (curve == m_owner->GetCurrentCurve())
dc.SetPen( *wxBLACK_PEN );
else
dc.SetPen( *wxGREY_PEN );
DrawCurve( &dc, curve, update_x-1, update_x+update_width+2 );
- node = node->Next();
+ node = node->GetNext();
}
dc.SetPen( *wxRED_PEN );
- node = m_owner->m_onOffCurves.First();
+ node = m_owner->m_onOffCurves.GetFirst();
while (node)
{
- wxPlotOnOffCurve *curve = (wxPlotOnOffCurve*) node->Data();
+ wxPlotOnOffCurve *curve = (wxPlotOnOffCurve*) node->GetData();
DrawOnOffCurve( &dc, curve, update_x-1, update_x+update_width+2 );
- node = node->Next();
+ node = node->GetNext();
}
upd ++;
END_EVENT_TABLE()
wxPlotXAxisArea::wxPlotXAxisArea( wxPlotWindow *parent )
- : wxWindow( parent, -1, wxDefaultPosition, wxSize(-1,40), 0, "plotxaxisarea" )
+ : wxWindow( parent, -1, wxDefaultPosition, wxSize(-1,40), 0, _T("plotxaxisarea") )
{
m_owner = parent;
view_x *= wxPLOT_SCROLL_STEP;
view_y *= wxPLOT_SCROLL_STEP;
- wxCoord x = event.GetX();
- wxCoord y = event.GetY();
- x += view_x;
- y += view_y;
+ wxCoord x = event.GetX() + view_x;
+ wxCoord y = event.GetY() + view_y;
- /* do something here */
+ /* TO DO: do something here */
+ wxUnusedVar(x);
+ wxUnusedVar(y);
}
void wxPlotXAxisArea::OnPaint( wxPaintEvent &WXUNUSED(event) )
wxString label;
if (range < 50)
{
- label.Printf( wxT("%f"), current );
- while (label.Last() == wxT('0'))
+ label.Printf( _T("%f"), current );
+ while (label.Last() == _T('0'))
label.RemoveLast();
- if ((label.Last() == wxT('.')) || (label.Last() == wxT(',')))
- label.Append( wxT('0') );
+ if ((label.Last() == _T('.')) || (label.Last() == _T(',')))
+ label.Append( _T('0') );
}
else
- label.Printf( wxT("%d"), (int)floor(current) );
+ label.Printf( _T("%d"), (int)floor(current) );
dc.DrawText( label, x-4, 20 );
}
END_EVENT_TABLE()
wxPlotYAxisArea::wxPlotYAxisArea( wxPlotWindow *parent )
- : wxWindow( parent, -1, wxDefaultPosition, wxSize(60,-1), 0, "plotyaxisarea" )
+ : wxWindow( parent, -1, wxDefaultPosition, wxSize(60,-1), 0, _T("plotyaxisarea") )
{
m_owner = parent;
{
wxPaintDC dc( this );
- wxPlotCurve *curve = m_owner->GetCurrent();
+ wxPlotCurve *curve = m_owner->GetCurrentCurve();
if (!curve) return;
wxString label;
if (range < 50)
{
- label.Printf( wxT("%f"), current );
- while (label.Last() == wxT('0'))
+ label.Printf( _T("%f"), current );
+ while (label.Last() == _T('0'))
label.RemoveLast();
- if ((label.Last() == wxT('.')) || (label.Last() == wxT(',')))
- label.Append( wxT('0') );
+ if ((label.Last() == _T('.')) || (label.Last() == _T(',')))
+ label.Append( _T('0') );
}
else
- label.Printf( wxT("%d"), (int)floor(current) );
+ label.Printf( _T("%d"), (int)floor(current) );
dc.DrawText( label, 5, y-7 );
}
END_EVENT_TABLE()
wxPlotWindow::wxPlotWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, int flag )
- : wxScrolledWindow( parent, id, pos, size, flag, "plotcanvas" )
+ : wxScrolledWindow( parent, id, pos, size, flag, _T("plotcanvas") )
{
m_xUnitsPerValue = 1.0;
m_xZoom = 1.0;
wxPlotCurve *wxPlotWindow::GetAt( size_t n )
{
- wxNode *node = m_curves.Nth( n );
+ wxList::compatibility_iterator node = m_curves.Item( n );
if (!node)
return (wxPlotCurve*) NULL;
- return (wxPlotCurve*) node->Data();
+ return (wxPlotCurve*) node->GetData();
}
-void wxPlotWindow::SetCurrent( wxPlotCurve* current )
+void wxPlotWindow::SetCurrentCurve( wxPlotCurve* current )
{
m_current = current;
m_area->Refresh( FALSE );
void wxPlotWindow::Delete( wxPlotCurve* curve )
{
- wxNode *node = m_curves.Find( curve );
+ wxList::compatibility_iterator node = m_curves.Find( curve );
if (!node) return;
m_curves.DeleteObject( curve );
m_area->DeleteCurve( curve );
m_area->Refresh( FALSE );
+
+ if (curve == m_current) m_current = (wxPlotCurve *) NULL;
}
-wxPlotCurve *wxPlotWindow::GetCurrent()
+wxPlotCurve *wxPlotWindow::GetCurrentCurve()
{
return m_current;
}
void wxPlotWindow::Delete( wxPlotOnOffCurve* curve )
{
- wxNode *node = m_onOffCurves.Find( curve );
+ wxList::compatibility_iterator node = m_onOffCurves.Find( curve );
if (!node) return;
m_onOffCurves.DeleteObject( curve );
wxPlotOnOffCurve *wxPlotWindow::GetOnOffCurveAt( size_t n )
{
- wxNode *node = m_onOffCurves.Nth( n );
+ wxList::compatibility_iterator node = m_onOffCurves.Item( n );
if (!node)
return (wxPlotOnOffCurve*) NULL;
- return (wxPlotOnOffCurve*) node->Data();
+ return (wxPlotOnOffCurve*) node->GetData();
}
void wxPlotWindow::Move( wxPlotCurve* curve, int pixels_up )
GetViewStart( &view_x, &view_y );
wxInt32 max = 0;
- wxNode *node = m_curves.First();
+ wxList::compatibility_iterator node = m_curves.GetFirst();
while (node)
{
- wxPlotCurve *curve = (wxPlotCurve*) node->Data();
+ wxPlotCurve *curve = (wxPlotCurve*) node->GetData();
if (curve->GetEndX() > max)
max = curve->GetEndX();
- node = node->Next();
+ node = node->GetNext();
}
SetScrollbars( wxPLOT_SCROLL_STEP, wxPLOT_SCROLL_STEP,
(int)((max*m_xZoom)/wxPLOT_SCROLL_STEP)+1, 0,
void wxPlotWindow::ResetScrollbar()
{
wxInt32 max = 0;
- wxNode *node = m_curves.First();
+ wxList::compatibility_iterator node = m_curves.GetFirst();
while (node)
{
- wxPlotCurve *curve = (wxPlotCurve*) node->Data();
+ wxPlotCurve *curve = (wxPlotCurve*) node->GetData();
if (curve->GetEndX() > max)
max = curve->GetEndX();
- node = node->Next();
+ node = node->GetNext();
}
SetScrollbars( wxPLOT_SCROLL_STEP, wxPLOT_SCROLL_STEP,
s_loaded = TRUE; // set it to TRUE anyhow, we won't try again
#if defined(__WXMSW__) || defined(__WXPM__)
- s_bitmap = new wxBitmap("plot_enl_bmp", wxBITMAP_TYPE_RESOURCE);
+ s_bitmap = new wxBitmap(_T("plot_enl_bmp"), wxBITMAP_TYPE_RESOURCE);
#else
s_bitmap = new wxBitmap( plot_enl_xpm );
#endif
s_loaded = TRUE; // set it to TRUE anyhow, we won't try again
#if defined(__WXMSW__) || defined(__WXPM__)
- s_bitmap = new wxBitmap("plot_shr_bmp", wxBITMAP_TYPE_RESOURCE);
+ s_bitmap = new wxBitmap(_T("plot_shr_bmp"), wxBITMAP_TYPE_RESOURCE);
#else
s_bitmap = new wxBitmap( plot_shr_xpm );
#endif
s_loaded = TRUE; // set it to TRUE anyhow, we won't try again
#if defined(__WXMSW__) || defined(__WXPM__)
- s_bitmap = new wxBitmap("plot_zin_bmp", wxBITMAP_TYPE_RESOURCE);
+ s_bitmap = new wxBitmap(_T("plot_zin_bmp"), wxBITMAP_TYPE_RESOURCE);
#else
s_bitmap = new wxBitmap( plot_zin_xpm );
#endif
s_loaded = TRUE; // set it to TRUE anyhow, we won't try again
#if defined(__WXMSW__) || defined(__WXPM__)
- s_bitmap = new wxBitmap("plot_zot_bmp", wxBITMAP_TYPE_RESOURCE);
+ s_bitmap = new wxBitmap(_T("plot_zot_bmp"), wxBITMAP_TYPE_RESOURCE);
#else
s_bitmap = new wxBitmap( plot_zot_xpm );
#endif
s_loaded = TRUE; // set it to TRUE anyhow, we won't try again
#if defined(__WXMSW__) || defined(__WXPM__)
- s_bitmap = new wxBitmap("plot_up_bmp", wxBITMAP_TYPE_RESOURCE);
+ s_bitmap = new wxBitmap(_T("plot_up_bmp"), wxBITMAP_TYPE_RESOURCE);
#else
s_bitmap = new wxBitmap( plot_up_xpm );
#endif
s_loaded = TRUE; // set it to TRUE anyhow, we won't try again
#if defined(__WXMSW__) || defined(__WXPM__)
- s_bitmap = new wxBitmap("plot_dwn_bmp", wxBITMAP_TYPE_RESOURCE);
+ s_bitmap = new wxBitmap(_T("plot_dwn_bmp"), wxBITMAP_TYPE_RESOURCE);
#else
s_bitmap = new wxBitmap( plot_dwn_xpm );
#endif
return s_bitmap;
}
-
-//----------------------------------------------------------------------------
-// wxPlotModule
-//----------------------------------------------------------------------------
-
-class wxPlotModule : public wxModule
-{
-public:
- bool OnInit();
- void OnExit();
-
-private:
- DECLARE_CLASS(wxPlotModule)
-};
-
-IMPLEMENT_DYNAMIC_CLASS(wxPlotModule, wxModule)
-
-bool wxPlotModule::OnInit()
-{
- wxEVT_PLOT_SEL_CHANGING = wxNewId();
- wxEVT_PLOT_SEL_CHANGED = wxNewId();
- wxEVT_PLOT_CLICKED = wxNewId();
- wxEVT_PLOT_DOUBLECLICKED = wxNewId();
- wxEVT_PLOT_ZOOM_IN = wxNewId();
- wxEVT_PLOT_ZOOM_OUT = wxNewId();
- wxEVT_PLOT_VALUE_SEL_CREATING = wxNewId();
- wxEVT_PLOT_VALUE_SEL_CREATED = wxNewId();
- wxEVT_PLOT_VALUE_SEL_CHANGING = wxNewId();
- wxEVT_PLOT_VALUE_SEL_CHANGED = wxNewId();
- wxEVT_PLOT_AREA_SEL_CREATING = wxNewId();
- wxEVT_PLOT_AREA_SEL_CREATED = wxNewId();
- wxEVT_PLOT_AREA_SEL_CHANGING = wxNewId();
- wxEVT_PLOT_AREA_SEL_CHANGED = wxNewId();
- wxEVT_PLOT_BEGIN_X_LABEL_EDIT = wxNewId();
- wxEVT_PLOT_END_X_LABEL_EDIT = wxNewId();
- wxEVT_PLOT_BEGIN_Y_LABEL_EDIT = wxNewId();
- wxEVT_PLOT_END_Y_LABEL_EDIT = wxNewId();
- wxEVT_PLOT_BEGIN_TITLE_EDIT = wxNewId();
- wxEVT_PLOT_END_TITLE_EDIT = wxNewId();
- wxEVT_PLOT_AREA_CREATE = wxNewId();
-
- return TRUE;
-}
-
-void wxPlotModule::OnExit()
-{
-}
-
-