+/*# ---------------------------------------------------------------------
+#
+# 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 <wx/brush.h>
+#include <wx/gdicmn.h>
+#include "mBarRange.h"
//const wxEventType wxEVT_TSBAR = wxNewEventType();
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)
//CONSTRUCTOR
//----------------------------------------------------------------------------
+//wxDefaultSize
mBarRange::mBarRange(wxWindow *parent, int w, int h)
-:wxScrolledWindow(parent,-1,wxDefaultPosition,wxDefaultSize,wxTAB_TRAVERSAL)
+:wxScrolledWindow(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;
_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);
}
mBarRange::~mBarRange()
{
}
+
//---------------------------------------------------------------------------
//Draw bar: vertical or Horizontal
//---------------------------------------------------------------------------
{
return ((_start - _min)*(_w-deviceEndMargin))/(_max - _min);
}
+
//----------------------------------------------------------------------------
// param i: value in pixels
//----------------------------------------------------------------------------
_start = _min+((i - deviceStart_x)*( _max - _min))/(_w-deviceEndMargin);
}
+
//----------------------------------------------------------------------------
// _actual of the pixel rectangle
//----------------------------------------------------------------------------
{
return ((_actual - _min)*(_w-deviceEndMargin))/(_max - _min);
}
+
//----------------------------------------------------------------------------
// param i: value in pixels
//----------------------------------------------------------------------------
{
_actual = _min + (i-deviceStart_x)*(_max-_min)/(_w-deviceEndMargin);
}
+
//----------------------------------------------------------------------------
// _end of the pixel rectangle
//----------------------------------------------------------------------------
{
return ((_end - _min)*(_w-deviceEndMargin))/(_max - _min);
}
+
//----------------------------------------------------------------------------
// param i: value in pixels to be converted to real logical value
//----------------------------------------------------------------------------
{
_end = _min + (i-deviceStart_x)*(_max-_min)/(_w-deviceEndMargin);
}
+
//----------------------------------------------------------------------------
// Logical max of the triangle
//----------------------------------------------------------------------------
-
double mBarRange::GetMax()
{
return _max;
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;
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();
}
//----------------------------------------------------------------------------
if (_end<_start) { _end=_start; }
if (_in_rangeProperty==true)
{
- if (_end<_actual) { _end=_actual; }
+ if (_end<_actual)
+ {
+ _end=_actual;
+ } // _end
}
RefreshForce();
}
{
return trianglesHalfWidth;
}
+
//----------------------------------------------------------------------------
void mBarRange::SetTrianglesHalfWidth(int nwTriHalfWidth)
{
if(_orientation)
{
SetWidth( rectTotal.GetWidth() - deviceEndMargin );
- }
- else
- {
+ } else {
SetWidth( rectTotal.GetHeight() - deviceEndMargin);
}
_selectionMoveId = -1;
//----------------------------------------------------------------------------
void mBarRange::OnPaint( wxPaintEvent &WXUNUSED(event) )
{
- if (_bitmap_bar!=NULL){
+ if (_bitmap_bar!=NULL)
+ {
//repaint rectangle
if(_orientation)
{
// dc.Blit(0,_w, _h+deviceStart_y+200, _w+deviceStart_x+200-deviceEndMargin, &temp_dc, deviceStart_y,_w+deviceStart_x);
// }
-
}
- }
+ } // _bitmap_bar
}
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)
{
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 ));
}
{
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 ));
}
{
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 ));
}
{
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 ));
}
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();
temp_dc.DrawText(text_actual, pxActual-(stringSize.GetWidth()/2),barHeight+letterHeight);
}
}
-
}
//----------------------------------------------------------------------------