#include <QmitkPiecewiseFunctionCanvas.h>
Public Member Functions | |
QmitkPiecewiseFunctionCanvas (QWidget *parent=0, Qt::WindowFlags f=0) | |
virtual void | paintEvent (QPaintEvent *e) |
void | SetTitle (std::string title) |
int | GetNearHandle (int x, int y, unsigned int maxSquaredDistance=32) |
void | SetPiecewiseFunction (vtkPiecewiseFunction *piecewiseFunction) |
void | AddFunctionPoint (vtkFloatingPointType x, vtkFloatingPointType val) |
void | RemoveFunctionPoint (vtkFloatingPointType x) |
vtkFloatingPointType | GetFunctionX (int index) |
float | GetFunctionY (int index) |
int | GetFunctionSize () |
void | DoubleClickOnHandle (int) |
void | MoveFunctionPoint (int index, std::pair< vtkFloatingPointType, vtkFloatingPointType > pos) |
double | GetFunctionMax () |
double | GetFunctionMin () |
double | GetFunctionRange () |
void | RemoveAllFunctionPoints () |
void | ResetGO () |
Protected Attributes | |
vtkPiecewiseFunction * | m_PiecewiseFunction |
std::string | m_Title |
Definition at line 26 of file QmitkPiecewiseFunctionCanvas.h.
QmitkPiecewiseFunctionCanvas::QmitkPiecewiseFunctionCanvas | ( | QWidget * | parent = 0 , |
Qt::WindowFlags | f = 0 |
||
) |
Definition at line 23 of file QmitkPiecewiseFunctionCanvas.cpp.
: QmitkTransferFunctionCanvas(parent, f), m_PiecewiseFunction(0) { // used for drawing a border setContentsMargins(1,1,1,1); }
void QmitkPiecewiseFunctionCanvas::AddFunctionPoint | ( | vtkFloatingPointType | x, |
vtkFloatingPointType | val | ||
) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 48 of file QmitkPiecewiseFunctionCanvas.h.
Referenced by MoveFunctionPoint().
{ m_PiecewiseFunction->AddPoint(x,val); };
void QmitkPiecewiseFunctionCanvas::DoubleClickOnHandle | ( | int | ) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 79 of file QmitkPiecewiseFunctionCanvas.h.
{};
double QmitkPiecewiseFunctionCanvas::GetFunctionMax | ( | ) | [inline] |
Definition at line 83 of file QmitkPiecewiseFunctionCanvas.h.
{ return m_PiecewiseFunction->GetRange()[1]; }
double QmitkPiecewiseFunctionCanvas::GetFunctionMin | ( | ) | [inline] |
Definition at line 88 of file QmitkPiecewiseFunctionCanvas.h.
{ return m_PiecewiseFunction->GetRange()[0]; }
double QmitkPiecewiseFunctionCanvas::GetFunctionRange | ( | ) | [inline] |
Definition at line 93 of file QmitkPiecewiseFunctionCanvas.h.
{ double range; if((m_PiecewiseFunction->GetRange()[0])<0) { range = (m_PiecewiseFunction->GetRange()[1])-(m_PiecewiseFunction->GetRange()[0]); return range; } else { range = m_PiecewiseFunction->GetRange()[1]; return range; } }
int QmitkPiecewiseFunctionCanvas::GetFunctionSize | ( | ) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 74 of file QmitkPiecewiseFunctionCanvas.h.
{ return m_PiecewiseFunction->GetSize(); }
vtkFloatingPointType QmitkPiecewiseFunctionCanvas::GetFunctionX | ( | int | index ) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 64 of file QmitkPiecewiseFunctionCanvas.h.
Referenced by MoveFunctionPoint(), and paintEvent().
{ return m_PiecewiseFunction->GetDataPointer()[index*2]; }
float QmitkPiecewiseFunctionCanvas::GetFunctionY | ( | int | index ) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 69 of file QmitkPiecewiseFunctionCanvas.h.
Referenced by paintEvent().
{ return m_PiecewiseFunction->GetValue(m_PiecewiseFunction->GetDataPointer()[index*2]); }
int QmitkPiecewiseFunctionCanvas::GetNearHandle | ( | int | x, |
int | y, | ||
unsigned int | maxSquaredDistance = 32 |
||
) | [virtual] |
returns index of a near handle or -1 if none is near
Implements QmitkTransferFunctionCanvas.
Definition at line 140 of file QmitkPiecewiseFunctionCanvas.cpp.
References QmitkTransferFunctionCanvas::FunctionToCanvas(), and m_PiecewiseFunction.
{ vtkFloatingPointType* dp = m_PiecewiseFunction->GetDataPointer(); for (int i = 0; i < m_PiecewiseFunction->GetSize(); i++) { std::pair<int,int> point = this->FunctionToCanvas(std::make_pair(dp[i * 2], dp[i * 2 + 1])); if ((unsigned int) ((point.first - x) * (point.first - x) + (point.second - y) * (point.second - y)) <= maxSquaredDistance) { return i; } } return -1; }
void QmitkPiecewiseFunctionCanvas::MoveFunctionPoint | ( | int | index, |
std::pair< vtkFloatingPointType, vtkFloatingPointType > | pos | ||
) | [virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 158 of file QmitkPiecewiseFunctionCanvas.cpp.
References AddFunctionPoint(), GetFunctionX(), and RemoveFunctionPoint().
{ RemoveFunctionPoint(GetFunctionX(index)); AddFunctionPoint(pos.first, pos.second); //std::cout<<" AddFunctionPoint x: "<<pos.first<<" AddFunctionPoint y: "<<pos.second<<std::endl; }
void QmitkPiecewiseFunctionCanvas::paintEvent | ( | QPaintEvent * | e ) | [virtual] |
Reimplemented from QmitkTransferFunctionCanvas.
Definition at line 36 of file QmitkPiecewiseFunctionCanvas.cpp.
References QmitkTransferFunctionCanvas::FunctionToCanvas(), GetFunctionX(), GetFunctionY(), QmitkTransferFunctionCanvas::m_GrabbedHandle, QmitkTransferFunctionCanvas::m_LineEditAvailable, QmitkTransferFunctionCanvas::m_Max, QmitkTransferFunctionCanvas::m_Min, m_PiecewiseFunction, m_Title, QmitkTransferFunctionCanvas::m_XEdit, QmitkTransferFunctionCanvas::m_YEdit, and QmitkTransferFunctionCanvas::PaintHistogram().
{ QPainter painter(this); if( ! this->isEnabled() ) { painter.setPen(Qt::gray); painter.drawRect(0, 0, contentsRect().width()+1, contentsRect().height()+1); return; } PaintHistogram(painter); if (m_Title.size()>0) { painter.setPen(Qt::black); painter.drawText(QPoint(11,21),QString( m_Title.c_str() )); painter.setPen(Qt::white); painter.drawText(QPoint(10,20),QString( m_Title.c_str() )); } { QString qs_min = QString::number( m_Min ); QString qs_max = QString::number( m_Max ); QRect qr_min = painter.fontMetrics().boundingRect( qs_min ); QRect qr_max = painter.fontMetrics().boundingRect( qs_max ); int y,x; y=this->contentsRect().height()-qr_min.height()+5; x=10; painter.setPen(Qt::black); painter.drawText(QPoint(x+1,y+1),qs_min); painter.setPen(Qt::white); painter.drawText(QPoint(x ,y ),qs_min); y=this->contentsRect().height()-qr_max.height()+5; x=this->contentsRect().width()-qr_max.width()-6; painter.setPen(Qt::black); painter.drawText(QPoint(x,y+1),qs_max); painter.setPen(Qt::white); painter.drawText(QPoint(x,y ),qs_max); } painter.setPen(Qt::gray); QRect contentsRect = this->contentsRect(); painter.drawRect(0, 0, contentsRect.width()+1, contentsRect.height()+1); if (m_PiecewiseFunction) { vtkFloatingPointType* dp = m_PiecewiseFunction->GetDataPointer(); // Render lines painter.setPen(Qt::black); for (int i = -1; i < m_PiecewiseFunction->GetSize(); i++) { std::pair<int,int> left; std::pair<int,int> right; if(i < 0) left = this->FunctionToCanvas(std::make_pair(-32768, dp[0 * 2 + 1])); else left = this->FunctionToCanvas(std::make_pair(dp[i * 2], dp[i * 2 + 1])); if(i+1 >= m_PiecewiseFunction->GetSize()) right = this->FunctionToCanvas(std::make_pair(32768, dp[(i ) * 2 + 1])); else right = this->FunctionToCanvas(std::make_pair(dp[(i+1) * 2], dp[(i+1) * 2 + 1])); painter.drawLine(left.first, left.second, right.first, right.second); } // Render Points for (int i = 0; i < m_PiecewiseFunction->GetSize(); i++) { std::pair<int,int> point = this->FunctionToCanvas(std::make_pair( dp[i * 2], dp[i * 2 + 1])); if (i == m_GrabbedHandle) { painter.setBrush(QBrush(Qt::red)); if (m_LineEditAvailable) { m_XEdit->setText(QString::number(GetFunctionX(m_GrabbedHandle))); m_YEdit->setText(QString::number(GetFunctionY(m_GrabbedHandle))); } } else { painter.setBrush(QBrush(Qt::green)); } painter.drawEllipse(point.first - 4, point.second - 4, 8, 8); } painter.setBrush(Qt::NoBrush); } }
void QmitkPiecewiseFunctionCanvas::RemoveAllFunctionPoints | ( | ) | [inline] |
Definition at line 108 of file QmitkPiecewiseFunctionCanvas.h.
{ m_PiecewiseFunction->AddSegment(this->GetFunctionMin(),0,this->GetFunctionMax(),1); m_PiecewiseFunction->AddPoint(0.0,0.0); }
void QmitkPiecewiseFunctionCanvas::RemoveFunctionPoint | ( | vtkFloatingPointType | x ) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 53 of file QmitkPiecewiseFunctionCanvas.h.
References QmitkTransferFunctionCanvas::GetFunctionSize().
Referenced by MoveFunctionPoint().
{ int old_size = GetFunctionSize(); m_PiecewiseFunction->RemovePoint(x); if (GetFunctionSize() + 1 != old_size) { std::cout << "old/new size" << old_size << "/" << GetFunctionSize() << std::endl; std::cout << "called with x=" << x << std::endl; } };
void QmitkPiecewiseFunctionCanvas::ResetGO | ( | ) | [inline] |
Definition at line 114 of file QmitkPiecewiseFunctionCanvas.h.
{ //Gradient Opacity m_PiecewiseFunction->AddSegment(this->GetFunctionMin(),0,0,1); m_PiecewiseFunction->AddSegment(0,1,((this->GetFunctionRange())*0.125),1); m_PiecewiseFunction->AddSegment(((this->GetFunctionRange())*0.125),1,((this->GetFunctionRange())*0.2),1); m_PiecewiseFunction->AddSegment(((this->GetFunctionRange())*0.2),1,((this->GetFunctionRange())*0.25),1); }
void QmitkPiecewiseFunctionCanvas::SetPiecewiseFunction | ( | vtkPiecewiseFunction * | piecewiseFunction ) | [inline] |
Definition at line 37 of file QmitkPiecewiseFunctionCanvas.h.
References QmitkTransferFunctionCanvas::SetMax(), and QmitkTransferFunctionCanvas::SetMin().
Referenced by QmitkTransferFunctionWidget::OnUpdateCanvas().
{ this->m_PiecewiseFunction = piecewiseFunction; this->SetMin(m_PiecewiseFunction->GetRange()[0]); this->SetMax(m_PiecewiseFunction->GetRange()[1]); setEnabled(true); update(); };
void QmitkPiecewiseFunctionCanvas::SetTitle | ( | std::string | title ) |
Definition at line 31 of file QmitkPiecewiseFunctionCanvas.cpp.
References m_Title.
Referenced by QmitkTransferFunctionWidget::QmitkTransferFunctionWidget().
{ m_Title=title; }
vtkPiecewiseFunction* QmitkPiecewiseFunctionCanvas::m_PiecewiseFunction [protected] |
Definition at line 124 of file QmitkPiecewiseFunctionCanvas.h.
Referenced by GetNearHandle(), and paintEvent().
std::string QmitkPiecewiseFunctionCanvas::m_Title [protected] |
Definition at line 125 of file QmitkPiecewiseFunctionCanvas.h.
Referenced by paintEvent(), and SetTitle().