#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().
1.7.2