#include <QmitkColorTransferFunctionCanvas.h>


Public Member Functions | |
| QmitkColorTransferFunctionCanvas (QWidget *parent=0, Qt::WindowFlags f=0) | |
| virtual void | paintEvent (QPaintEvent *e) |
| int | GetNearHandle (int x, int y, unsigned int maxSquaredDistance=32) |
| void | SetTitle (std::string title) |
| void | SetColorTransferFunction (vtkColorTransferFunction *colorTransferFunction) |
| void | AddFunctionPoint (vtkFloatingPointType x, vtkFloatingPointType) |
| void | RemoveFunctionPoint (vtkFloatingPointType x) |
| vtkFloatingPointType | GetFunctionX (int index) |
| int | GetFunctionSize () |
| void | DoubleClickOnHandle (int handle) |
| void | MoveFunctionPoint (int index, std::pair< vtkFloatingPointType, vtkFloatingPointType > pos) |
| void | AddRGB (double x, double r, double g, double b) |
| double | GetFunctionMax () |
| double | GetFunctionMin () |
| double | GetFunctionRange () |
| void | RemoveAllFunctionPoints () |
| float | GetFunctionY (int) |
Protected Attributes | |
| vtkColorTransferFunction * | m_ColorTransferFunction |
| std::string | m_Title |
Definition at line 26 of file QmitkColorTransferFunctionCanvas.h.
| QmitkColorTransferFunctionCanvas::QmitkColorTransferFunctionCanvas | ( | QWidget * | parent = 0, |
| Qt::WindowFlags | f = 0 |
||
| ) |
Definition at line 24 of file QmitkColorTransferFunctionCanvas.cpp.
: QmitkTransferFunctionCanvas(parent, f), m_ColorTransferFunction(0) { // used for drawing a border setContentsMargins(1,1,1,1); }
| void QmitkColorTransferFunctionCanvas::AddFunctionPoint | ( | vtkFloatingPointType | x, |
| vtkFloatingPointType | |||
| ) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 46 of file QmitkColorTransferFunctionCanvas.h.
{
m_ColorTransferFunction->AddRGBPoint(x,m_ColorTransferFunction->GetRedValue(x),m_ColorTransferFunction->GetGreenValue(x),m_ColorTransferFunction->GetBlueValue(x));
};
| void QmitkColorTransferFunctionCanvas::AddRGB | ( | double | x, |
| double | r, | ||
| double | g, | ||
| double | b | ||
| ) |
Definition at line 168 of file QmitkColorTransferFunctionCanvas.cpp.
References m_ColorTransferFunction.
{
m_ColorTransferFunction->AddRGBPoint(x, r, g, b);
}
| void QmitkColorTransferFunctionCanvas::DoubleClickOnHandle | ( | int | handle ) | [virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 143 of file QmitkColorTransferFunctionCanvas.cpp.
References GetFunctionX(), mitk::RenderingManager::GetInstance(), and m_ColorTransferFunction.
{
vtkFloatingPointType xVal = GetFunctionX(handle);
QColor col((int) (m_ColorTransferFunction->GetRedValue(xVal) * 255),
(int) (m_ColorTransferFunction->GetGreenValue(xVal) * 255),
(int) (m_ColorTransferFunction->GetBlueValue(xVal) * 255));
QColor result = QColorDialog::getColor(col);
if (result.isValid())
{
m_ColorTransferFunction->AddRGBPoint(xVal, result.red() / 255.0,
result.green() / 255.0, result.blue() / 255.0);
this->update();
mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}
}
| double QmitkColorTransferFunctionCanvas::GetFunctionMax | ( | ) | [inline] |
Definition at line 77 of file QmitkColorTransferFunctionCanvas.h.
{
return m_ColorTransferFunction->GetRange()[1];
}
| double QmitkColorTransferFunctionCanvas::GetFunctionMin | ( | ) | [inline] |
Definition at line 82 of file QmitkColorTransferFunctionCanvas.h.
{
return m_ColorTransferFunction->GetRange()[0];
}
| double QmitkColorTransferFunctionCanvas::GetFunctionRange | ( | ) | [inline] |
Definition at line 87 of file QmitkColorTransferFunctionCanvas.h.
{
double range;
if((m_ColorTransferFunction->GetRange()[0])==0)
{
range = m_ColorTransferFunction->GetRange()[1];
return range;
}
else
{
range = (m_ColorTransferFunction->GetRange()[1])-(m_ColorTransferFunction->GetRange()[0]);
return range;
}
}
| int QmitkColorTransferFunctionCanvas::GetFunctionSize | ( | ) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 67 of file QmitkColorTransferFunctionCanvas.h.
Referenced by GetNearHandle(), and paintEvent().
{
return m_ColorTransferFunction->GetSize();
}
| vtkFloatingPointType QmitkColorTransferFunctionCanvas::GetFunctionX | ( | int | index ) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 62 of file QmitkColorTransferFunctionCanvas.h.
Referenced by DoubleClickOnHandle(), GetNearHandle(), MoveFunctionPoint(), and paintEvent().
{
return m_ColorTransferFunction->GetDataPointer()[index*4];
}
| float QmitkColorTransferFunctionCanvas::GetFunctionY | ( | int | ) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 107 of file QmitkColorTransferFunctionCanvas.h.
{
return 0.0;
}
| int QmitkColorTransferFunctionCanvas::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 127 of file QmitkColorTransferFunctionCanvas.cpp.
References QmitkTransferFunctionCanvas::FunctionToCanvas(), GetFunctionSize(), and GetFunctionX().
{
for (int i = 0; i < this->GetFunctionSize(); i++)
{
std::pair<int,int> point = this->FunctionToCanvas(std::make_pair(
GetFunctionX(i), (vtkFloatingPointType) 0.0));
if ((unsigned int) ((point.first - x) * (point.first - x))
< maxSquaredDistance)
{
return i;
}
}
return -1;
}
| void QmitkColorTransferFunctionCanvas::MoveFunctionPoint | ( | int | index, |
| std::pair< vtkFloatingPointType, vtkFloatingPointType > | pos | ||
| ) | [virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 159 of file QmitkColorTransferFunctionCanvas.cpp.
References GetFunctionX(), m_ColorTransferFunction, and RemoveFunctionPoint().
{
vtkFloatingPointType color[3];
m_ColorTransferFunction->GetColor(GetFunctionX(index), color);
RemoveFunctionPoint( GetFunctionX(index));
m_ColorTransferFunction->AddRGBPoint(pos.first, color[0], color[1], color[2]);
}
| void QmitkColorTransferFunctionCanvas::paintEvent | ( | QPaintEvent * | e ) | [virtual] |
Reimplemented from QmitkTransferFunctionCanvas.
Definition at line 38 of file QmitkColorTransferFunctionCanvas.cpp.
References QmitkTransferFunctionCanvas::FunctionToCanvas(), GetFunctionSize(), GetFunctionX(), m_ColorTransferFunction, QmitkTransferFunctionCanvas::m_GrabbedHandle, QmitkTransferFunctionCanvas::m_LineEditAvailable, QmitkTransferFunctionCanvas::m_Max, QmitkTransferFunctionCanvas::m_Min, m_Title, and QmitkTransferFunctionCanvas::m_XEdit.
{
QPainter painter(this);
// Render gray background
QRect contentsRect = this->contentsRect();
painter.setPen(Qt::gray);
painter.drawRect(0, 0, contentsRect.width()+1, contentsRect.height()+1);
if( ! this->isEnabled() )
return;
if (m_ColorTransferFunction)
{
for (int x = contentsRect.x(); x < contentsRect.x() + contentsRect.width(); x++)
{
vtkFloatingPointType xVal = m_Min + ((float) x) / contentsRect.width() * (m_Max
- m_Min);
QColor col((int) (m_ColorTransferFunction->GetRedValue(xVal) * 255),
(int) (m_ColorTransferFunction->GetGreenValue(xVal) * 255),
(int) (m_ColorTransferFunction->GetBlueValue(xVal) * 255));
painter.setPen(col);
painter.drawLine(x, 1, x, contentsRect.height());
}
}
//paint title
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() ));
}
//paint min and max
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);
if (m_ColorTransferFunction)
{
// now paint the handles
painter.setBrush(Qt::black);
painter.setPen(Qt::black);
for (int i = 0; i < this->GetFunctionSize(); i++)
{
int handleHeight = (i == m_GrabbedHandle) ? (int) (contentsRect.height() / 1.5)
: contentsRect.height() / 2;
int handleWidth = (i == m_GrabbedHandle) ? 6 : 4;
std::pair<int,int> point = this->FunctionToCanvas(std::make_pair(
GetFunctionX(i), 0.0f));
int y = height() / 2;
painter.drawRoundRect(point.first - handleWidth / 2,
y - handleHeight / 2, handleWidth, handleHeight, 50, 50);
if (i == m_GrabbedHandle)
{
if (m_LineEditAvailable)
{
m_XEdit->setText(QString::number(GetFunctionX(m_GrabbedHandle)));
//m_YEdit->setText(QString::number(GetFunctionY(m_GrabbedHandle)));
}
}
}
}
}
| void QmitkColorTransferFunctionCanvas::RemoveAllFunctionPoints | ( | ) | [inline] |
Definition at line 102 of file QmitkColorTransferFunctionCanvas.h.
{
m_ColorTransferFunction->AddRGBSegment(this->GetFunctionMin(),1,0,0,this->GetFunctionMax(),1,1,0);
}
| void QmitkColorTransferFunctionCanvas::RemoveFunctionPoint | ( | vtkFloatingPointType | x ) | [inline, virtual] |
Implements QmitkTransferFunctionCanvas.
Definition at line 51 of file QmitkColorTransferFunctionCanvas.h.
References QmitkTransferFunctionCanvas::GetFunctionSize().
Referenced by MoveFunctionPoint().
{
int old_size = GetFunctionSize();
m_ColorTransferFunction->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 QmitkColorTransferFunctionCanvas::SetColorTransferFunction | ( | vtkColorTransferFunction * | colorTransferFunction ) | [inline] |
Definition at line 37 of file QmitkColorTransferFunctionCanvas.h.
References QmitkTransferFunctionCanvas::SetMax(), and QmitkTransferFunctionCanvas::SetMin().
Referenced by QmitkTransferFunctionWidget::OnUpdateCanvas().
{
this->m_ColorTransferFunction = colorTransferFunction;
this->SetMin(colorTransferFunction->GetRange()[0]);
this->SetMax(colorTransferFunction->GetRange()[1]);
setEnabled(true);
update();
};
| void QmitkColorTransferFunctionCanvas::SetTitle | ( | std::string | title ) |
Definition at line 32 of file QmitkColorTransferFunctionCanvas.cpp.
References m_Title.
Referenced by QmitkTransferFunctionWidget::QmitkTransferFunctionWidget().
{
m_Title=title;
}
vtkColorTransferFunction* QmitkColorTransferFunctionCanvas::m_ColorTransferFunction [protected] |
Definition at line 114 of file QmitkColorTransferFunctionCanvas.h.
Referenced by AddRGB(), DoubleClickOnHandle(), MoveFunctionPoint(), and paintEvent().
std::string QmitkColorTransferFunctionCanvas::m_Title [protected] |
Definition at line 115 of file QmitkColorTransferFunctionCanvas.h.
Referenced by paintEvent(), and SetTitle().
1.7.2