+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+# pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+# This software is governed by the CeCILL-B license under French law and
+# abiding by the rules of distribution of free software. You can use,
+# modify and/ or redistribute the software under the terms of the CeCILL-B
+# license as circulated by CEA, CNRS and INRIA at the following URL
+# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+# or in the file LICENSE.txt.
+#
+# As a counterpart to the access to the source code and rights to copy,
+# modify and redistribute granted by the license, users are provided only
+# with a limited warranty and the software's author, the holder of the
+# economic rights, and the successive licensors have only limited
+# liability.
+#
+# The fact that you are presently reading this means that you have had
+# knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
/////////////////////////////////////////////////////////////////////////////
// Name: mathplot.cpp
// Purpose: Framework for mathematical graph plotting in wxWindows
SetFont( ff );
}
-void mpScaleY::Plot(wxDC & dc, mpWindow & w)
+void mpScaleY::Plot(wxDC & dc, mpWindow & w, int orgy)
{
dc.SetPen( m_pen);
dc.SetFont( m_font);
const int orgx = -(int)(w.GetPosX() * w.GetScaleX());
const int extend = w.GetScrY()/2;
- dc.DrawLine( orgx, -extend, orgx, extend);
+ double sizedc = dc.GetSize().GetHeight()-orgy;
+
+ dc.DrawLine( orgx, GetYTranslated(sizedc, -extend), orgx, GetYTranslated(sizedc, extend));
const double dig = floor( log( 128.0 / w.GetScaleY() ) / mpLN10 );
const double step = exp( mpLN10 * dig);
if (tmp>=1)
{
fmt = wxT("%.f");
- }
- else
- {
+ } else {
tmp=8-tmp;
fmt.Printf(wxT("%%.%df"), tmp >= -1 ? 2 : -tmp);
- }
+ } // if temp
double n = floor( (w.GetPosY() - (double)extend / w.GetScaleY()) / step ) * step ;
for (;n < end; n += step)
{
const int p = (int)((w.GetPosY() - n) * w.GetScaleY());
- dc.DrawLine( orgx, p, orgx+4, p);
+ dc.DrawLine( orgx, GetYTranslated(sizedc, p), orgx+4, GetYTranslated(sizedc,p));
s.Printf(fmt, n);
dc.GetTextExtent(s, &tx, &ty);
if ((tmp-p+ty/2) > 32)
{
- dc.DrawText( s, orgx+4, p-ty/2);
+ dc.DrawText( s, orgx+4, GetYTranslated(sizedc,p-ty/2));
tmp=p-ty/2;
- }
- }
+ } // if
+ } // for
dc.GetTextExtent(m_name, &tx, &ty);
- dc.DrawText( m_name, orgx-tx-4, -extend + ty + 4);
+ dc.DrawText( m_name, orgx-tx-4, GetYTranslated(sizedc,-extend + ty + 4));
}
//-----------------------------------------------------------------------------
// mpWindow
//-----------------------------------------------------------------------------
-IMPLEMENT_DYNAMIC_CLASS(mpWindow, wxScrolledWindow)
+//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
+#if wxMAJOR_VERSION <= 2
+ IMPLEMENT_DYNAMIC_CLASS(mpWindow, wxScrolledWindow)
+#else
+ wxIMPLEMENT_DYNAMIC_CLASS(mpWindow, wxScrolledWindow);
+#endif
+
BEGIN_EVENT_TABLE(mpWindow, wxScrolledWindow)
EVT_PAINT ( mpWindow::OnPaint)
END_EVENT_TABLE()
mpWindow::mpWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, int flag )
-: wxScrolledWindow( parent, id, pos, size, flag, wxT("wxPlotter") )
+: wxScrolledWindow( parent, id, wxDefaultPosition, wxDefaultSize, flag, wxT("wxPlotter") )
{
- m_scaleX = m_scaleY = 1.0;
- m_posX = m_posY = 0;
- m_scrX = m_scrY = 64;
- m_minX = m_minY = 0;
- m_maxX = m_maxY = 0;
- maxScrX = maxScrY = 200;
- minScrX = minScrY = 0;
- m_clickedX = 0;
- m_clickedY = 5000;
- m_lockaspect = FALSE;
- offsetX = offsetY = 0;
- offsetPixelX = offsetPixelY= 0;
-
- real_guideLine_X = -1;
- real_guideLine_Y = -1;
- drawGuides = true;
- type=1;
+ m_scaleX = m_scaleY = 1.0;
+ m_posX = m_posY = 0;
+ m_scrX = m_scrY = 64;
+ m_minX = m_minY = 0;
+ m_maxX = m_maxY = 0;
+ maxScrX = maxScrY = 200;
+ minScrX = minScrY = 0;
+ m_clickedX = 0;
+ m_clickedY = 5000;
+ m_lockaspect = FALSE;
+ offsetX = offsetY = 0;
+ offsetPixelX = offsetPixelY = 0;
+ _bitmap_functions = NULL;
+
+ real_guideLine_X = -1;
+ real_guideLine_Y = -1;
+ drawGuides = true;
+ type = 1;
m_popmenu.Append( mpID_CENTER, _("Center"), _("Center plot view to this position"));
m_popmenu.Append( mpID_FIT, _("Fit"), _("Set plot view to show all items"));
void mpWindow::LockAspect(bool enable)
{
m_lockaspect = enable;
-
m_popmenu.Check(mpID_LOCKASPECT, enable);
-
if (m_lockaspect)
{
double s = (m_scaleX + m_scaleY)/2;
m_scaleX = s;
m_scaleY = s;
}
-
UpdateAll();
}
{
wxPaintDC dc(this);
dc.GetSize(&m_scrX, &m_scrY);
-printf("EED mpWindow::OnPaint %d %d\n",m_scrX,m_scrY);
//m_scrX=200;
//m_scrY=200;
//dc.SetDeviceOrigin(70,40);
//dc.SetAxisOrientation(false,true);
- temp_dc.SetAxisOrientation(true,false);
+ //temp_dc.SetAxisOrientation(true,false);
//EED 14mai2009
//dc.Blit(0,0, m_scrX, m_scrY, &temp_dc,-70,-m_scrY+40);
{
int cx, cy;
GetClientSize( &cx, &cy);
-printf("EED mpWindow::UpdateAll %d %d\n",cx,cy);
-
- //const int sx = (int)((m_maxX - m_minX) * GetScaleX()); // JPRx
- //const int sy = (int)((m_maxY - m_minY) * GetScaleY()); // JPRx
- //const int px = (int)((GetPosX() - m_minX) * GetScaleX() - (cx>>1)); // JPRx
- //const int py = (int)((GetPosY() - m_minY) * GetScaleY() - (cy>>1)); // JPRx
- //SetScrollbars( 1, 1, sx, sy, px, py);
+ const int sx = (int)((m_maxX - m_minX) * GetScaleX()); // JPRx
+ const int sy = (int)((m_maxY - m_minY) * GetScaleY()); // JPRx
+ const int px = (int)((GetPosX() - m_minX) * GetScaleX() - (cx>>1)); // JPRx
+ const int py = (int)((GetPosY() - m_minY) * GetScaleY() - (cy>>1)); // JPRx
+ SetScrollbars( 1, 1, sx, sy, px, py);
}
-
FitInside();
Refresh( false );
}