mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-13 08:09:39 +00:00
made some resident stuff recomputed at real time
This commit is contained in:
parent
928b841ea6
commit
a9ee8fa48c
@ -32,8 +32,8 @@ FIRST RELEASE
|
||||
|
||||
#include "const_types.h"
|
||||
|
||||
|
||||
#include <cassert>
|
||||
#include<QGraphicsView>
|
||||
|
||||
//these functions return a relative-absolute value conversion respectively in float and int (rounded to closer integer value)
|
||||
float relative2AbsoluteValf(float relative_val, float max_val);
|
||||
@ -50,45 +50,37 @@ float relative2QualityValf(float relative_val, float min_q, float max_q, float e
|
||||
//It stores info about borders, size and so on...
|
||||
struct CHART_INFO
|
||||
{
|
||||
float leftBorder;
|
||||
float rightBorder;
|
||||
float upperBorder;
|
||||
float lowerBorder;
|
||||
float chartWidth;
|
||||
float chartHeight;
|
||||
QGraphicsView *qgv;
|
||||
inline float leftBorder() { return qgv->width() - CANVAS_BORDER_DISTANCE; }
|
||||
inline float rightBorder() { return CANVAS_BORDER_DISTANCE; }
|
||||
inline float upperBorder() { return CANVAS_BORDER_DISTANCE; }
|
||||
inline float lowerBorder() { return qgv->height() - CANVAS_BORDER_DISTANCE; }
|
||||
inline float chartWidth() { return rightBorder() - leftBorder(); }
|
||||
inline float chartHeight() { return lowerBorder() - upperBorder(); }
|
||||
int numOfItems;
|
||||
int yScaleStep;
|
||||
inline float dX() {return chartWidth() / (float)numOfItems; }
|
||||
inline float dY() {return chartHeight() / (float)numOfItems; }
|
||||
|
||||
float minX;
|
||||
float maxX;
|
||||
float minY;
|
||||
float maxY;
|
||||
float dX;
|
||||
float dY;
|
||||
|
||||
CHART_INFO( int view_width=0, int view_height=0, float min_X=0.0f, float max_X=0.0f, float min_Y=0.0f, float max_Y=0.0f )
|
||||
CHART_INFO(QGraphicsView *_qgv,float min_X=0.0f, float max_X=0.0f, float min_Y=0.0f, float max_Y=0.0f )
|
||||
{
|
||||
this->updateChartInfo(view_width, view_height, min_X, max_X, min_Y, max_Y);
|
||||
qgv=_qgv;
|
||||
this->updateChartInfo( min_X, max_X, min_Y, max_Y);
|
||||
}
|
||||
|
||||
void updateChartInfo( int view_width=0, int view_height=0, float min_X=0.0f, float max_X=0.0f, float min_Y=0.0f, float max_Y=0.0f )
|
||||
void updateChartInfo( float min_X=0.0f, float max_X=0.0f, float min_Y=0.0f, float max_Y=0.0f )
|
||||
{
|
||||
assert(numOfItems != 0);
|
||||
|
||||
leftBorder = CANVAS_BORDER_DISTANCE;
|
||||
rightBorder = view_width - CANVAS_BORDER_DISTANCE;
|
||||
upperBorder = CANVAS_BORDER_DISTANCE;
|
||||
lowerBorder = view_height - CANVAS_BORDER_DISTANCE;
|
||||
chartWidth = rightBorder - leftBorder;
|
||||
chartHeight = lowerBorder - upperBorder;
|
||||
numOfItems = NUMBER_OF_HISTOGRAM_BARS;
|
||||
yScaleStep = Y_SCALE_STEP;
|
||||
minX = min_X;
|
||||
maxX = max_X;
|
||||
minY = min_Y;
|
||||
maxY = max_Y;
|
||||
|
||||
dX = chartWidth / (float)numOfItems;
|
||||
dY = chartHeight / (float)numOfItems;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ EqHandle::EqHandle(CHART_INFO *environment_info, QColor color, QPointF position,
|
||||
{
|
||||
setSize(size);
|
||||
_type = type;
|
||||
_barHeight = environment_info->chartHeight;
|
||||
_barHeight = environment_info->chartHeight();
|
||||
|
||||
_handlesPointer = handles;
|
||||
_midHandlePercentilePosition = midHandlePercentilePosition;
|
||||
@ -213,14 +213,14 @@ void EqHandle::setXBySpinBoxValueChanged(double spinBoxValue)
|
||||
_handlesPointer[MID_HANDLE]->_spinBoxPointer->setMinimum(spinBoxValue);
|
||||
|
||||
// if left handle is "inside" histogram
|
||||
if ( newHandleX >= _chartInfo->leftBorder )
|
||||
if ( newHandleX >= _chartInfo->leftBorder() )
|
||||
{
|
||||
setPos(newHandleX, pos().y());
|
||||
emit insideHistogram(this,true); // for redrawing equalizerHistogram bars, if needed
|
||||
}
|
||||
else
|
||||
{
|
||||
setPos(_chartInfo->leftBorder, pos().y());
|
||||
setPos(_chartInfo->leftBorder(), pos().y());
|
||||
emit insideHistogram(this,false);
|
||||
}
|
||||
|
||||
@ -237,14 +237,14 @@ void EqHandle::setXBySpinBoxValueChanged(double spinBoxValue)
|
||||
_handlesPointer[MID_HANDLE]->_spinBoxPointer->setMaximum(spinBoxValue);
|
||||
|
||||
// if right handle is "inside" histogram
|
||||
if ( newHandleX <= _chartInfo->rightBorder )
|
||||
if ( newHandleX <= _chartInfo->rightBorder() )
|
||||
{
|
||||
setPos(newHandleX, pos().y());
|
||||
emit insideHistogram(this,true); // invalidates equalizerHistogram scene
|
||||
}
|
||||
else
|
||||
{
|
||||
setPos(_chartInfo->rightBorder, pos().y());
|
||||
setPos(_chartInfo->rightBorder(), pos().y());
|
||||
emit insideHistogram(this,false);
|
||||
}
|
||||
|
||||
|
||||
@ -83,7 +83,7 @@ private:
|
||||
// computes quality from handle absolute position
|
||||
qreal positionToQuality(qreal newHandleX)
|
||||
{
|
||||
qreal percentagePos = (newHandleX-_chartInfo->leftBorder) / _chartInfo->chartWidth;
|
||||
qreal percentagePos = (newHandleX-_chartInfo->leftBorder()) / _chartInfo->chartWidth();
|
||||
// assert( (percentagePos>=-1.0f) && (percentagePos<=2.0f) );
|
||||
float maxX = (_handlesPointer[RIGHT_HANDLE]->_spinBoxPointer->value() > _chartInfo->maxX)?_handlesPointer[RIGHT_HANDLE]->_spinBoxPointer->value():_chartInfo->maxX;
|
||||
float minX = (_handlesPointer[LEFT_HANDLE]->_spinBoxPointer->value() < _chartInfo->minX)?_handlesPointer[LEFT_HANDLE]->_spinBoxPointer->value() :_chartInfo->minX;
|
||||
@ -94,7 +94,7 @@ private:
|
||||
qreal qualityToPosition(float quality, float minQ, float maxQ)
|
||||
{
|
||||
qreal percentageValue = (quality - minQ) / (maxQ - minQ);
|
||||
return percentageValue * _chartInfo->chartWidth + _chartInfo->leftBorder;
|
||||
return percentageValue * _chartInfo->chartWidth() + _chartInfo->leftBorder();
|
||||
};
|
||||
|
||||
signals:
|
||||
|
||||
@ -282,14 +282,14 @@ void QualityMapperDialog::drawChartBasics(QGraphicsScene& scene, CHART_INFO *cha
|
||||
|
||||
//drawing axis
|
||||
//x axis
|
||||
current_item = scene.addLine( chart_info->leftBorder, chart_info->lowerBorder, chart_info->rightBorder, chart_info->lowerBorder, p );
|
||||
current_item = scene.addLine( chart_info->leftBorder(), chart_info->lowerBorder(), chart_info->rightBorder(), chart_info->lowerBorder(), p );
|
||||
current_item->setZValue( 0 );
|
||||
if (chart_info == _transferFunction_info)
|
||||
_transferFunctionLines << current_item;
|
||||
else
|
||||
_equalizerHistogramBars << current_item;
|
||||
//y axis
|
||||
current_item = scene.addLine( chart_info->leftBorder, chart_info->upperBorder, chart_info->leftBorder, chart_info->lowerBorder, p );
|
||||
current_item = scene.addLine( chart_info->leftBorder(), chart_info->upperBorder(), chart_info->leftBorder(), chart_info->lowerBorder(), p );
|
||||
current_item->setZValue( 0 );
|
||||
if (chart_info == _transferFunction_info)
|
||||
_transferFunctionLines << current_item;
|
||||
@ -316,13 +316,13 @@ bool QualityMapperDialog::initEqualizerHistogram()
|
||||
//DRAWING HANDLES
|
||||
QDoubleSpinBox* spinboxes[] = { ui.minSpinBox, ui.midSpinBox, ui.maxSpinBox };
|
||||
|
||||
qreal xStart = _histogram_info->leftBorder;
|
||||
qreal xStart = _histogram_info->leftBorder();
|
||||
qreal xPos = 0.0f;
|
||||
qreal yPos = _histogram_info->lowerBorder;
|
||||
qreal yPos = _histogram_info->lowerBorder();
|
||||
_equalizerMidHandlePercentilePosition = 0.5f;
|
||||
for (int i=0; i<NUMBER_OF_EQHANDLES; i++)
|
||||
{
|
||||
xPos = xStart + _histogram_info->chartWidth/2.0f*i;
|
||||
xPos = xStart + _histogram_info->chartWidth()/2.0f*i;
|
||||
_equalizerHandles[i] = new EqHandle(_histogram_info, Qt::black, QPointF(xPos, yPos),
|
||||
(EQUALIZER_HANDLE_TYPE)i, _equalizerHandles, &_equalizerMidHandlePercentilePosition, spinboxes[i],
|
||||
1, 5);
|
||||
@ -387,7 +387,7 @@ bool QualityMapperDialog::initEqualizerHistogram()
|
||||
|
||||
void QualityMapperDialog::initEqualizerSpinboxes()
|
||||
{
|
||||
double singleStep = (_histogram_info->maxX - _histogram_info->minX) / _histogram_info->chartWidth;
|
||||
double singleStep = (_histogram_info->maxX - _histogram_info->minX) / _histogram_info->chartWidth();
|
||||
int decimals = 0;
|
||||
if (singleStep > std::numeric_limits<float>::epsilon())
|
||||
{
|
||||
@ -436,12 +436,12 @@ bool QualityMapperDialog::drawEqualizerHistogram(bool leftHandleIsInsideHistogra
|
||||
return false;
|
||||
}
|
||||
//building histogram chart informations
|
||||
_histogram_info = new CHART_INFO( ui.equalizerGraphicsView->width(), ui.equalizerGraphicsView->height(), _equalizer_histogram->MinV(), _equalizer_histogram->MaxV(), 0, computeEqualizerMaxY(_equalizer_histogram, _equalizer_histogram->MinV(), _equalizer_histogram->MaxV()) );
|
||||
_histogram_info = new CHART_INFO( ui.equalizerGraphicsView, _equalizer_histogram->MinV(), _equalizer_histogram->MaxV(), 0, computeEqualizerMaxY(_equalizer_histogram, _equalizer_histogram->MinV(), _equalizer_histogram->MaxV()) );
|
||||
}
|
||||
else
|
||||
{
|
||||
//added by MAL 23/04/08
|
||||
_transferFunction_info->updateChartInfo( ui.equalizerGraphicsView->width(), ui.equalizerGraphicsView->height(), _equalizer_histogram->MinV(), _equalizer_histogram->MaxV(), 0, computeEqualizerMaxY(_equalizer_histogram, _equalizer_histogram->MinV(), _equalizer_histogram->MaxV()) );
|
||||
_transferFunction_info->updateChartInfo(_equalizer_histogram->MinV(), _equalizer_histogram->MaxV(), 0, computeEqualizerMaxY(_equalizer_histogram, _equalizer_histogram->MinV(), _equalizer_histogram->MaxV()) );
|
||||
|
||||
// if histogram doesn't need to be redrawn, return
|
||||
if ( (leftHandleIsInsideHistogram && _leftHandleWasInsideHistogram) && (rightHandleIsInsideHistogram && _rightHandleWasInsideHistogram) )
|
||||
@ -496,7 +496,7 @@ int QualityMapperDialog::computeEqualizerMaxY (Histogramf *h, float minX, float
|
||||
void QualityMapperDialog::drawHistogramBars (QGraphicsScene& destinationScene, CHART_INFO *chartInfo, float minVal, float maxVal, QColor color)
|
||||
{
|
||||
float barHeight = 0.0f; //initializing height of the histogram bars
|
||||
float barWidth = chartInfo->chartWidth / (float)(NUMBER_OF_HISTOGRAM_BARS); //processing width of the histogram bars
|
||||
float barWidth = chartInfo->chartWidth() / (float)(NUMBER_OF_HISTOGRAM_BARS); //processing width of the histogram bars
|
||||
|
||||
// exp is such that: _equalizerMidHandlePercentilePosition^exp = 0.5
|
||||
float exp = log10(0.5f) / log10((float)_equalizerMidHandlePercentilePosition);
|
||||
@ -511,22 +511,22 @@ void QualityMapperDialog::drawHistogramBars (QGraphicsScene& destinationScene, C
|
||||
for (int i = 0; i < NUMBER_OF_HISTOGRAM_BARS; i++)
|
||||
{
|
||||
// Setting barHeight proportional to max height
|
||||
barHeight = (float)(chartInfo->chartHeight * _equalizer_histogram->BinCount( minVal+i*barRange, barRange) ) / (float)chartInfo->maxY;
|
||||
barHeight = (float)(chartInfo->chartHeight() * _equalizer_histogram->BinCount( minVal+i*barRange, barRange) ) / (float)chartInfo->maxY;
|
||||
|
||||
startBarPt.setY( (float)chartInfo->lowerBorder - barHeight );
|
||||
startBarPt.setY( (float)chartInfo->lowerBorder() - barHeight );
|
||||
|
||||
//drawing histogram bar
|
||||
if ( &destinationScene == &_transferFunctionScene )
|
||||
{
|
||||
// Histogram bars positions are calculted applying an exponential function: relIndex^exp
|
||||
startBarPt.setX( chartInfo->leftBorder + relative2AbsoluteValf(pow( absolute2RelativeValf(i,NUMBER_OF_HISTOGRAM_BARS ), exp ), chartInfo->chartWidth) );
|
||||
current_item = destinationScene.addLine(startBarPt.x(), startBarPt.y(), startBarPt.x(), (float)chartInfo->lowerBorder, drawingPen);
|
||||
startBarPt.setX( chartInfo->leftBorder() + relative2AbsoluteValf(pow( absolute2RelativeValf(i,NUMBER_OF_HISTOGRAM_BARS ), exp ), chartInfo->chartWidth()) );
|
||||
current_item = destinationScene.addLine(startBarPt.x(), startBarPt.y(), startBarPt.x(), (float)chartInfo->lowerBorder(), drawingPen);
|
||||
_transferFunctionBg << current_item;
|
||||
}
|
||||
else // ( &destinationScene == &_equalizerHistogramScene )
|
||||
{
|
||||
// histogram bars are added all at same distance
|
||||
startBarPt.setX( chartInfo->leftBorder + ( barWidth * (i) ) );
|
||||
startBarPt.setX( chartInfo->leftBorder() + ( barWidth * (i) ) );
|
||||
current_item = destinationScene.addRect(startBarPt.x(), startBarPt.y(), barWidth, barHeight, drawingPen, drawingBrush);
|
||||
_equalizerHistogramBars << current_item;
|
||||
}
|
||||
@ -574,7 +574,7 @@ void QualityMapperDialog::initTF()
|
||||
|
||||
//building transfer function chart informations (if necessary)
|
||||
if ( _transferFunction_info == 0 )
|
||||
_transferFunction_info = new CHART_INFO( ui.transferFunctionView->width(), ui.transferFunctionView->height(), /*_transferFunction->size(),*/ 0.0f, 1.0f, 0.0f, 1.0f );
|
||||
_transferFunction_info = new CHART_INFO( ui.transferFunctionView, /*_transferFunction->size(),*/ 0.0f, 1.0f, 0.0f, 1.0f );
|
||||
|
||||
//removing and deleting any old TF graphics item (TF lines and handles)
|
||||
this->clearItems( REMOVE_TF_ALL | DELETE_REMOVED_ITEMS );
|
||||
@ -598,7 +598,7 @@ void QualityMapperDialog::initTF()
|
||||
{
|
||||
val = _transferFunction->getChannel(c)[i];
|
||||
this->addTfHandle( c,
|
||||
QPointF(_transferFunction_info->leftBorder + relative2AbsoluteValf( val->x, (float)_transferFunction_info->chartWidth ), _transferFunction_info->lowerBorder - relative2AbsoluteValf( val->y, (float)_transferFunction_info->chartHeight )),
|
||||
QPointF(_transferFunction_info->leftBorder() + relative2AbsoluteValf( val->x, (float)_transferFunction_info->chartWidth() ), _transferFunction_info->lowerBorder() - relative2AbsoluteValf( val->y, (float)_transferFunction_info->chartHeight() )),
|
||||
val,
|
||||
zValue );
|
||||
}
|
||||
@ -666,10 +666,10 @@ void QualityMapperDialog::drawTransferFunction()
|
||||
|
||||
//building transfer function chart informations
|
||||
if ( _transferFunction_info == 0 )
|
||||
_transferFunction_info = new CHART_INFO( ui.transferFunctionView->width(), ui.transferFunctionView->height(), /* _transferFunction->size(),*/ 0.0f, 1.0f, 0.0f, 1.0f );
|
||||
_transferFunction_info = new CHART_INFO( ui.transferFunctionView, /* _transferFunction->size(),*/ 0.0f, 1.0f, 0.0f, 1.0f );
|
||||
else
|
||||
// added by MAL 23/04/08
|
||||
_transferFunction_info->updateChartInfo( ui.transferFunctionView->width(), ui.transferFunctionView->height(), /* _transferFunction->size(),*/ 0.0f, 1.0f, 0.0f, 1.0f );
|
||||
_transferFunction_info->updateChartInfo( /* _transferFunction->size(),*/ 0.0f, 1.0f, 0.0f, 1.0f );
|
||||
|
||||
//is necessary, initialize TF
|
||||
if ( !_isTransferFunctionInitialized )
|
||||
@ -1026,7 +1026,7 @@ void QualityMapperDialog::manageBorderTfHandles(TFHandle *handle)
|
||||
newKey = new TF_KEY(0.0f, handle->getRelativeY());
|
||||
_transferFunction->getChannel(handle->getChannel()).addKey(newKey);
|
||||
this->addTfHandle( handle->getChannel(),
|
||||
QPointF(_transferFunction_info->leftBorder + relative2AbsoluteValf( 0.0f, (float)_transferFunction_info->chartWidth ), _transferFunction_info->lowerBorder - relative2AbsoluteValf( handle->getRelativeY(), (float)_transferFunction_info->chartHeight )),
|
||||
QPointF(_transferFunction_info->leftBorder() + relative2AbsoluteValf( 0.0f, (float)_transferFunction_info->chartWidth() ), _transferFunction_info->lowerBorder() - relative2AbsoluteValf( handle->getRelativeY(), (float)_transferFunction_info->chartHeight() )),
|
||||
newKey,
|
||||
((handle->getChannel() + 1)*2.0f) + 1 );
|
||||
}
|
||||
@ -1044,7 +1044,7 @@ void QualityMapperDialog::manageBorderTfHandles(TFHandle *handle)
|
||||
newKey = new TF_KEY(1.0f, handle->getRelativeY());
|
||||
_transferFunction->getChannel(handle->getChannel()).addKey(newKey);
|
||||
this->addTfHandle( handle->getChannel(),
|
||||
QPointF(_transferFunction_info->leftBorder + relative2AbsoluteValf( 1.0f, (float)_transferFunction_info->chartWidth ), _transferFunction_info->lowerBorder - relative2AbsoluteValf( handle->getRelativeY(), (float)_transferFunction_info->chartHeight )),
|
||||
QPointF(_transferFunction_info->leftBorder() + relative2AbsoluteValf( 1.0f, (float)_transferFunction_info->chartWidth() ), _transferFunction_info->lowerBorder() - relative2AbsoluteValf( handle->getRelativeY(), (float)_transferFunction_info->chartHeight() )),
|
||||
newKey,
|
||||
((handle->getChannel() + 1)*2.0f) + 1);
|
||||
}
|
||||
@ -1129,7 +1129,7 @@ void QualityMapperDialog::on_xSpinBox_valueChanged(double newX)
|
||||
if (_currentTfHandle)
|
||||
{
|
||||
//updating handle position in the scene
|
||||
_currentTfHandle->setPos(_transferFunction_info->leftBorder+relative2AbsoluteValf(newX,_transferFunction_info->chartWidth), _currentTfHandle->scenePos().y());
|
||||
_currentTfHandle->setPos(_transferFunction_info->leftBorder()+relative2AbsoluteValf(newX,_transferFunction_info->chartWidth()), _currentTfHandle->scenePos().y());
|
||||
//updating the Tf Handle position at logical level (update of joined TF_KEY)
|
||||
_currentTfHandle->updateTfHandlesState(_currentTfHandle->scenePos());
|
||||
this->manageBorderTfHandles(_currentTfHandle);
|
||||
@ -1152,7 +1152,7 @@ void QualityMapperDialog::on_ySpinBox_valueChanged(double newY)
|
||||
if (_currentTfHandle)
|
||||
{
|
||||
//updating handle position in the scene
|
||||
_currentTfHandle->setPos(_currentTfHandle->scenePos().x(), _transferFunction_info->chartHeight+_transferFunction_info->upperBorder-relative2AbsoluteValf(newY,_transferFunction_info->chartHeight));
|
||||
_currentTfHandle->setPos(_currentTfHandle->scenePos().x(), _transferFunction_info->chartHeight()+_transferFunction_info->upperBorder()-relative2AbsoluteValf(newY,_transferFunction_info->chartHeight()));
|
||||
//updating the Tf Handle position at logical level (update of joined TF_KEY)
|
||||
_currentTfHandle->updateTfHandlesState(_currentTfHandle->scenePos());
|
||||
//restoring the correct order for TfHandles (they're drawn in the same order as they're stored)
|
||||
@ -1277,10 +1277,10 @@ void QualityMapperDialog::on_TF_view_doubleClicked(QPointF pos)
|
||||
//let's use the more ahead channel in TF
|
||||
channelCode = _transferFunction->getFirstPlaneChanel();
|
||||
|
||||
float xPos = pos.x() - _transferFunction_info->leftBorder;
|
||||
float yPos = pos.y() - _transferFunction_info->upperBorder;
|
||||
TF_KEY *val = new TF_KEY(absolute2RelativeValf(xPos, _transferFunction_info->chartWidth),
|
||||
absolute2RelativeValf(yPos, _transferFunction_info->chartHeight));
|
||||
float xPos = pos.x() - _transferFunction_info->leftBorder();
|
||||
float yPos = pos.y() - _transferFunction_info->upperBorder();
|
||||
TF_KEY *val = new TF_KEY(absolute2RelativeValf(xPos, _transferFunction_info->chartWidth()),
|
||||
absolute2RelativeValf(yPos, _transferFunction_info->chartHeight()));
|
||||
_transferFunction->getChannel(channelCode).addKey(val);
|
||||
TFHandle *newHandle = this->addTfHandle(channelCode, pos, val, ((channelCode + 1)*2.0f) + 1 );
|
||||
|
||||
|
||||
@ -80,10 +80,10 @@ public:
|
||||
{
|
||||
assert(environmentInfo);
|
||||
//setting graphics
|
||||
_boundingRect.setX(_environmentInfo->leftBorder);
|
||||
_boundingRect.setY(_environmentInfo->upperBorder);
|
||||
_boundingRect.setWidth(_environmentInfo->chartWidth);
|
||||
_boundingRect.setHeight(_environmentInfo->chartHeight);
|
||||
_boundingRect.setX(_environmentInfo->leftBorder());
|
||||
_boundingRect.setY(_environmentInfo->upperBorder());
|
||||
_boundingRect.setWidth(_environmentInfo->chartWidth());
|
||||
_boundingRect.setHeight(_environmentInfo->chartHeight());
|
||||
}
|
||||
~TFDoubleClickCatcher(){_environmentInfo = 0;}
|
||||
// Overriding QGraphicsItem methods
|
||||
|
||||
@ -5,8 +5,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>504</width>
|
||||
<height>704</height>
|
||||
<width>644</width>
|
||||
<height>674</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font" >
|
||||
@ -36,12 +36,6 @@
|
||||
<layout class="QVBoxLayout" >
|
||||
<item>
|
||||
<widget class="QGroupBox" name="transferFunctionGroupBox" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title" >
|
||||
<string>Transfer Function</string>
|
||||
</property>
|
||||
@ -50,24 +44,6 @@
|
||||
<layout class="QVBoxLayout" >
|
||||
<item>
|
||||
<widget class="QGraphicsView" name="transferFunctionView" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy vsizetype="Expanding" hsizetype="MinimumExpanding" >
|
||||
<horstretch>2</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize" >
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize" >
|
||||
<size>
|
||||
<width>800</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoFillBackground" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
@ -89,19 +65,13 @@
|
||||
<widget class="QLabel" name="colorbandLabel" >
|
||||
<property name="sizePolicy" >
|
||||
<sizepolicy vsizetype="Preferred" hsizetype="Ignored" >
|
||||
<horstretch>2</horstretch>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize" >
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize" >
|
||||
<size>
|
||||
<width>512</width>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
@ -353,18 +323,6 @@
|
||||
<layout class="QVBoxLayout" >
|
||||
<item>
|
||||
<widget class="QGraphicsView" name="equalizerGraphicsView" >
|
||||
<property name="minimumSize" >
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>100</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize" >
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>2000</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoFillBackground" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
@ -386,6 +344,9 @@
|
||||
<property name="dragMode" >
|
||||
<enum>QGraphicsView::NoDrag</enum>
|
||||
</property>
|
||||
<property name="viewportUpdateMode" >
|
||||
<enum>QGraphicsView::SmartViewportUpdate</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
@ -520,19 +481,7 @@
|
||||
<property name="title" >
|
||||
<string>Gamma Correction</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" >
|
||||
<property name="leftMargin" >
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="topMargin" >
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="rightMargin" >
|
||||
<number>5</number>
|
||||
</property>
|
||||
<property name="bottomMargin" >
|
||||
<number>5</number>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" >
|
||||
<item>
|
||||
<widget class="QLabel" name="gammaCorrectionLabel" >
|
||||
<property name="minimumSize" >
|
||||
@ -552,6 +501,19 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer>
|
||||
<property name="orientation" >
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" >
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@ -88,8 +88,8 @@ void TFHandle::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||||
newPos.setY(newPos.y()-(_size/2.0f));
|
||||
|
||||
//the handle can be moved only INSIDE the TF scene
|
||||
if (( newPos.x() >= _chartInfo->leftBorder ) && ( newPos.x() <= _chartInfo->rightBorder ) &&
|
||||
( newPos.y() >= _chartInfo->upperBorder ) && ( newPos.y() <= _chartInfo->lowerBorder ))
|
||||
if (( newPos.x() >= _chartInfo->leftBorder() ) && ( newPos.x() <= _chartInfo->rightBorder() ) &&
|
||||
( newPos.y() >= _chartInfo->upperBorder() ) && ( newPos.y() <= _chartInfo->lowerBorder() ))
|
||||
{
|
||||
//updating new position in the scene
|
||||
this->setPos(newPos);
|
||||
@ -106,8 +106,8 @@ void TFHandle::updateTfHandlesState(QPointF newPos)
|
||||
{
|
||||
assert(_tf != 0);
|
||||
//updating the position at logical state
|
||||
_myKey->x = absolute2RelativeValf( newPos.x()-_chartInfo->leftBorder, _chartInfo->chartWidth );
|
||||
_myKey->y = 1.0f-absolute2RelativeValf( newPos.y()-_chartInfo->upperBorder, _chartInfo->chartHeight );
|
||||
_myKey->x = absolute2RelativeValf( newPos.x()-_chartInfo->leftBorder(), _chartInfo->chartWidth() );
|
||||
_myKey->y = 1.0f-absolute2RelativeValf( newPos.y()-_chartInfo->upperBorder(), _chartInfo->chartHeight() );
|
||||
|
||||
//key changed... restoring correct order
|
||||
(*_tf)[this->getChannel()].updateKeysOrder();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user