X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FpPlotter%2Fmathplot.cxx;h=af3e86591c91280d11a42fa6a1869c3fdfb7df18;hb=HEAD;hp=bda190264c79f3ae16cc2d5795fb7b1485a80a01;hpb=c5feadbb145eecf6d73f793535b7e23eb18db2cb;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mathplot.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mathplot.cxx index bda1902..af3e865 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mathplot.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mathplot.cxx @@ -1,3 +1,28 @@ +/*# --------------------------------------------------------------------- +# +# 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 @@ -320,7 +345,7 @@ mpScaleY::mpScaleY(wxString name) 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); @@ -328,7 +353,9 @@ void mpScaleY::Plot(wxDC & dc, mpWindow & w) 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); @@ -354,19 +381,19 @@ void mpScaleY::Plot(wxDC & dc, mpWindow & w) 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; } } 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)); } //----------------------------------------------------------------------------- @@ -392,7 +419,7 @@ EVT_MENU( mpID_LOCKASPECT,mpWindow::OnLockAspect) 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; @@ -406,6 +433,7 @@ mpWindow::mpWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const w m_lockaspect = FALSE; offsetX = offsetY = 0; offsetPixelX = offsetPixelY= 0; + _bitmap_functions=NULL; real_guideLine_X = -1; real_guideLine_Y = -1; @@ -440,7 +468,7 @@ void mpWindow::Fit() { int cx, cy; GetClientSize( &cx, &cy); - + double d; d = m_maxX - m_minX; if (d!=0) @@ -588,8 +616,15 @@ void mpWindow::OnPaint( wxPaintEvent &event ) //dc.SetDeviceOrigin(70,40); //dc.SetAxisOrientation(false,true); - temp_dc.SetAxisOrientation(true,false); - dc.Blit(0,0, m_scrX, m_scrY, &temp_dc,-70,-m_scrY+40); + //temp_dc.SetAxisOrientation(true,false); + + //EED 14mai2009 + //dc.Blit(0,0, m_scrX, m_scrY, &temp_dc,-70,-m_scrY+40); + + temp_dc.SetDeviceOrigin(0,0); + dc.Blit(0,0, m_scrX, m_scrY, &temp_dc,0,0); + + delete _bitmap_functions; //_bitmap_functions //dc.SetAxisOrientation(false,true); @@ -688,20 +723,18 @@ bool mpWindow::UpdateBBox() return first == FALSE; } -void mpWindow :: UpdateAll() +void mpWindow::UpdateAll() { if (UpdateBBox()) { int cx, cy; GetClientSize( &cx, &cy); - - const int sx = (int)((m_maxX - m_minX) * GetScaleX()); - const int sy = (int)((m_maxY - m_minY) * GetScaleY()); - const int px = (int)((GetPosX() - m_minX) * GetScaleX() - (cx>>1)); - const int py = (int)((GetPosY() - m_minY) * GetScaleY() - (cy>>1)); - //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 ); }