X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FpPlotter%2FmBarRange.cxx;h=42db92071198e13c6a40271af51cb959ae9c1972;hb=80b04dc9e3b981e24fe9ae0d81cdeb8af6e6f8c1;hp=494d599f949c937a8290d1b086c4a7c30218ed71;hpb=0738bcbc9e571daa06e0249bc9d9b8c42b30cecf;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mBarRange.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mBarRange.cxx index 494d599..42db920 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mBarRange.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mBarRange.cxx @@ -1,6 +1,33 @@ +/*# --------------------------------------------------------------------- +# +# 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. +# ------------------------------------------------------------------------ */ + //---------------------------------------------------------------------------- -#include "mBarRange.h" +#include +#include +#include "mBarRange.h" //const wxEventType wxEVT_TSBAR = wxNewEventType(); @@ -11,13 +38,12 @@ DEFINE_EVENT_TYPE(wxEVT_TSBAR_END) DEFINE_EVENT_TYPE(wxEVT_TSBAR_MOVED) DEFINE_EVENT_TYPE(wxEVT_SELECTION_END) - - //---------------------------------------------------------------------------- //EVENT TABLE //---------------------------------------------------------------------------- IMPLEMENT_CLASS(mBarRange, wxScrolledWindow) + BEGIN_EVENT_TABLE(mBarRange, wxScrolledWindow) EVT_PAINT (mBarRange::OnPaint) EVT_SIZE (mBarRange::OnSize) @@ -42,26 +68,24 @@ END_EVENT_TABLE() //CONSTRUCTOR //---------------------------------------------------------------------------- +//wxDefaultSize mBarRange::mBarRange(wxWindow *parent, int w, int h) -:wxScrolledWindow(parent,-1,wxDefaultPosition,wxDefaultSize,wxTAB_TRAVERSAL) +//EED-2019-10-25 :wxScrolledWindow(parent,-1,wxDefaultPosition, wxSize(60,60) ,wxTAB_TRAVERSAL) + :wxPanel(parent,-1,wxDefaultPosition, wxSize(60,60) ,wxTAB_TRAVERSAL) { - acceptedClick = true; - _bitmap_bar = NULL; + acceptedClick = true; + _bitmap_bar = NULL; SetWidth (w); SetHeight(h); - _initialPoint = 0; - trianglesHalfWidth = 5; - - wxColour start_Colour; - + _initialPoint = 0; + trianglesHalfWidth = 5; // Setting the default parts colors - start_Colour = wxColour(0,0,255); + start_Colour = wxColour(1,0,255,254); actual_Colour = wxColour(255,255,202); end_Colour = wxColour(0,0,255); bar_Colour = wxColour(255,0,255); backgroundColor = parent ->GetBackgroundColour(); guideLineColor = wxColour(255,0,0); - //actual is in _start and end //false means that it could be anywhere _moveActualWithBar = false; @@ -69,16 +93,13 @@ mBarRange::mBarRange(wxWindow *parent, int w, int h) _selectionMoveId = -1; realX_vertical_line = -1; activeState = false; - _actual=0; - deviceEndMargin = 0; - + _actual = 0; + deviceEndMargin = 0; SetOrientation(true); setIfWithActualDrawed(true); - b_popmenu.Append (cntID_CHANGE_COLOR, _("Change Color"), _("Changes the color of the selected part")); b_popmenu.Append (cntID_ENABLE_ACTUAL, _("Enable actual in range"), _("Enables/Disables the actual triangle to be or not in range")); b_popmenu.Append (cntID_MOVABLE_ACTUAL_BAR, _("Move actual-bar simultaneously"), _("Disables the actual triangle to move with the bar")); - SetSize(w,h); } @@ -88,7 +109,10 @@ mBarRange::mBarRange(wxWindow *parent, int w, int h) mBarRange::~mBarRange() { + DeletePendingEvents (); + RemoveEventHandler ( GetEventHandler() ); } + //--------------------------------------------------------------------------- //Draw bar: vertical or Horizontal //--------------------------------------------------------------------------- @@ -98,15 +122,12 @@ void mBarRange::DrawBar() if(_orientation) { SetWindowStyle(wxNO_FULL_REPAINT_ON_RESIZE); - _bitmap_bar = new wxBitmap(_w+1280,_h+100); + _bitmap_bar = new wxBitmap(_w+1280,_h+100); //SIL//_bitmap_info = new wxBitmap(_w+100+1280, _h+100); - } - //vertical - else - { + } else { SetWindowStyle(wxNO_FULL_REPAINT_ON_RESIZE); - _bitmap_bar = new wxBitmap(_h+deviceStart_y+100,_w+1280); - _bitmap_info = new wxBitmap(_h+deviceStart_y+100, _w+1280); + _bitmap_bar = new wxBitmap(_h+deviceStart_y+100,_w+1280); + _bitmap_info = new wxBitmap(_h+deviceStart_y+100, _w+1280); } } //---------------------------------------------------------------------------- @@ -122,7 +143,7 @@ bool mBarRange::GetInRangeProperty() //---------------------------------------------------------------------------- void mBarRange::SetInRangeProperty(bool in) { - _in_rangeProperty=in; + _in_rangeProperty = in; } //---------------------------------------------------------------------------- //the information about the actual triangle in range or not, true if is between start and end @@ -157,6 +178,7 @@ int mBarRange::GetPixelStart() { return ((_start - _min)*(_w-deviceEndMargin))/(_max - _min); } + //---------------------------------------------------------------------------- // param i: value in pixels //---------------------------------------------------------------------------- @@ -165,6 +187,7 @@ void mBarRange::SetPixelStart(int i) _start = _min+((i - deviceStart_x)*( _max - _min))/(_w-deviceEndMargin); } + //---------------------------------------------------------------------------- // _actual of the pixel rectangle //---------------------------------------------------------------------------- @@ -172,6 +195,7 @@ int mBarRange::GetPixelActual() { return ((_actual - _min)*(_w-deviceEndMargin))/(_max - _min); } + //---------------------------------------------------------------------------- // param i: value in pixels //---------------------------------------------------------------------------- @@ -179,6 +203,7 @@ void mBarRange::SetPixelActual(int i) { _actual = _min + (i-deviceStart_x)*(_max-_min)/(_w-deviceEndMargin); } + //---------------------------------------------------------------------------- // _end of the pixel rectangle //---------------------------------------------------------------------------- @@ -186,6 +211,7 @@ int mBarRange::GetPixelEnd() { return ((_end - _min)*(_w-deviceEndMargin))/(_max - _min); } + //---------------------------------------------------------------------------- // param i: value in pixels to be converted to real logical value //---------------------------------------------------------------------------- @@ -193,10 +219,10 @@ void mBarRange::SetPixelEnd(int i) { _end = _min + (i-deviceStart_x)*(_max-_min)/(_w-deviceEndMargin); } + //---------------------------------------------------------------------------- // Logical max of the triangle //---------------------------------------------------------------------------- - double mBarRange::GetMax() { return _max; @@ -254,14 +280,15 @@ void mBarRange::SetHeight(int h) int mBarRange::filtreValue(int value) { if(value<_min) + { value = _min; - else if (value>_max) + } else if (value>_max) { value = _max; - + } return value; } - +//---------------------------------------------------------------------------- int mBarRange::GetStart() { return _start; @@ -272,11 +299,17 @@ int mBarRange::GetStart() void mBarRange::SetStart(int newstart) { _start = filtreValue(newstart); - if (_start>_end) { _start=_end; } + + if (_start>_end) + { + _start=_end; + } + if (_in_rangeProperty==true) { if (_start>_actual) { _start=_actual; } } + RefreshForce(); } //---------------------------------------------------------------------------- @@ -296,7 +329,10 @@ void mBarRange::SetEnd(int newend) if (_end<_start) { _end=_start; } if (_in_rangeProperty==true) { - if (_end<_actual) { _end=_actual; } + if (_end<_actual) + { + _end=_actual; + } // _end } RefreshForce(); } @@ -326,6 +362,7 @@ int mBarRange::GetTrianglesHalfWidth() { return trianglesHalfWidth; } + //---------------------------------------------------------------------------- void mBarRange::SetTrianglesHalfWidth(int nwTriHalfWidth) { @@ -338,9 +375,7 @@ void mBarRange::OnSize( wxSizeEvent &WXUNUSED(event) ) if(_orientation) { SetWidth( rectTotal.GetWidth() - deviceEndMargin ); - } - else - { + } else { SetWidth( rectTotal.GetHeight() - deviceEndMargin); } _selectionMoveId = -1; @@ -351,7 +386,8 @@ void mBarRange::OnSize( wxSizeEvent &WXUNUSED(event) ) void mBarRange::Refresh(bool eraseBackground, const wxRect* rect) { - wxScrolledWindow::Refresh(false); +//EED2019-10-25 wxScrolledWindow::Refresh(false); + wxPanel::Refresh(false); } @@ -360,7 +396,8 @@ void mBarRange::Refresh(bool eraseBackground, const wxRect* rect) //---------------------------------------------------------------------------- void mBarRange::OnPaint( wxPaintEvent &WXUNUSED(event) ) { - if (_bitmap_bar!=NULL){ + if (_bitmap_bar!=NULL) + { //repaint rectangle if(_orientation) { @@ -392,9 +429,8 @@ void mBarRange::OnPaint( wxPaintEvent &WXUNUSED(event) ) // dc.Blit(0,_w, _h+deviceStart_y+200, _w+deviceStart_x+200-deviceEndMargin, &temp_dc, deviceStart_y,_w+deviceStart_x); // } - } - } + } // _bitmap_bar } @@ -410,11 +446,9 @@ void mBarRange::RefreshHorizontalView() int pxEnd = GetPixelEnd(); int pxActual = GetPixelActual(); - int letterHeight= 9; int barHeight = 2*letterHeight; - int tempHeight = _h-(6*letterHeight); - + int tempHeight = _h-(6*letterHeight); if (_visibleLables) { @@ -426,36 +460,26 @@ void mBarRange::RefreshHorizontalView() wxMemoryDC temp_dc; temp_dc.SelectObject( *_bitmap_bar ); - // Background of this widget - - temp_dc.SetPen(wxPen( backgroundColor )); temp_dc.SetBrush(wxBrush( backgroundColor ,wxSOLID )); - temp_dc.DrawRectangle(0,0,_w+2*trianglesHalfWidth,_h); - - temp_dc.SetPen(wxPen( wxColour(167,165,191) ,1,wxSOLID )); temp_dc.DrawLine(trianglesHalfWidth+2, 0, _w-deviceEndMargin, 0); temp_dc.DrawLine(trianglesHalfWidth+2, barHeight, (_w-deviceEndMargin-trianglesHalfWidth-2), barHeight); temp_dc.SetDeviceOrigin(trianglesHalfWidth+2,0); - // Filling the bar temp_dc.SetBrush(wxBrush( wxColour(104,104,104),wxSOLID )); temp_dc.SetPen(wxPen( wxColour(104,104,104),1,wxSOLID )); temp_dc.DrawRectangle( pxStart , 0, pxEnd-pxStart, barHeight); - // The Bar if( _selectionMoveId==4 ) { temp_dc.SetBrush(wxBrush( wxColour(128,255,0),wxSOLID )); temp_dc.SetPen(wxPen( wxColour(0,128,0),1,wxSOLID )); - } - else - { + } else { temp_dc.SetBrush(wxBrush( bar_Colour,wxSOLID )); temp_dc.SetPen(wxPen( wxColour(164,0,164),1,wxSOLID )); } @@ -482,9 +506,7 @@ void mBarRange::RefreshHorizontalView() { temp_dc.SetBrush(wxBrush( wxColour(128,255,0),wxSOLID )); temp_dc.SetPen(wxPen( wxColour(0,128,0),1,wxSOLID )); - } - else - { + } else { temp_dc.SetBrush(wxBrush( start_Colour,wxSOLID )); temp_dc.SetPen(wxPen( wxColour(0,51,204),1,wxSOLID )); } @@ -494,9 +516,7 @@ void mBarRange::RefreshHorizontalView() { temp_dc.SetBrush(wxBrush( wxColour(128,255,0),wxSOLID )); temp_dc.SetPen(wxPen( wxColour(0,128,0),1,wxSOLID )); - } - else - { + } else { temp_dc.SetBrush(wxBrush( end_Colour,wxSOLID )); temp_dc.SetPen(wxPen( wxColour(0,0,255),1,wxSOLID )); } @@ -517,9 +537,7 @@ void mBarRange::RefreshHorizontalView() { temp_dc.SetBrush(wxBrush( wxColour(128,255,0),wxSOLID )); temp_dc.SetPen(wxPen( wxColour(0,128,0),1,wxSOLID )); - } - else - { + } else { temp_dc.SetBrush(wxBrush( actual_Colour,wxSOLID )); temp_dc.SetPen(wxPen( wxColour(205,160,5),1,wxSOLID )); } @@ -549,7 +567,6 @@ void mBarRange::RefreshHorizontalView() temp_dc.SetFont(font); temp_dc.SetTextForeground(*wxBLACK); - //the **MIN** value, always at the same y level that corresponds to barHeight+1 wxString text_min; // text_min<< GetMin(); @@ -600,7 +617,6 @@ void mBarRange::RefreshHorizontalView() temp_dc.DrawText(text_actual, pxActual-(stringSize.GetWidth()/2),barHeight+letterHeight); } } - } //---------------------------------------------------------------------------- @@ -823,9 +839,9 @@ void mBarRange::OnMouseMove(wxMouseEvent& event ) if (barHeight <=_h) { bool in_StartTri = (clickedX>=GetPixelStart()-5+ deviceStart_x) && (clickedX<=GetPixelStart()+5+ deviceStart_x); - bool in_EndTri = (clickedX>=GetPixelEnd()-5+ deviceStart_x) && (clickedX<=GetPixelEnd()+5+ deviceStart_x); - bool in_actualT= withActualDrawed && (clickedX>=GetPixelActual()-5+ deviceStart_x) && (clickedX<=GetPixelActual()+5+ deviceStart_x); - bool in_movingBar = (clickedX>GetPixelStart()+5+ deviceStart_x) && (clickedX=GetPixelEnd()-5+ deviceStart_x) && (clickedX<=GetPixelEnd()+5+ deviceStart_x); + bool in_actualT = withActualDrawed && (clickedX>=GetPixelActual()-5+ deviceStart_x) && (clickedX<=GetPixelActual()+5+ deviceStart_x); + bool in_movingBar= (clickedX>GetPixelStart()+5+ deviceStart_x) && (clickedX=GetPixelStart()-5+ deviceStart_x) && (clickedX<=GetPixelStart()+5+ deviceStart_x); - bool in_EndTri = (clickedX>=GetPixelEnd()-5+ deviceStart_x) && (clickedX<=GetPixelEnd()+5+ deviceStart_x); - bool in_actualT= (clickedX>=GetPixelActual()-5+ deviceStart_x) && (clickedX<=GetPixelActual()+5+ deviceStart_x); - bool in_movingBar = (clickedX>GetPixelStart()+5+ deviceStart_x) && (clickedX=GetPixelStart()-5+ deviceStart_x) && (clickedX<=GetPixelStart()+5+ deviceStart_x); + bool in_EndTri = (clickedX>=GetPixelEnd()-5+ deviceStart_x) && (clickedX<=GetPixelEnd()+5+ deviceStart_x); + bool in_actualT = (clickedX>=GetPixelActual()-5+ deviceStart_x) && (clickedX<=GetPixelActual()+5+ deviceStart_x); + bool in_movingBar = (clickedX>GetPixelStart()+5+ deviceStart_x) && (clickedX