mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-18 02:24:38 +00:00
-changed folders\files organizations. Added Common folder to contain files used by both projects
-many minor changed due to update of incude file paths - changed representation of brightness level value in csv files - fixed bug in apply method of filter -other minor changes
This commit is contained in:
parent
c7474e3593
commit
ccbe67eeca
@ -36,7 +36,7 @@ struct EQUALIZER_INFO
|
||||
float minQualityVal;
|
||||
float midQualityPercentage;
|
||||
float maxQualityVal;
|
||||
int brightness;
|
||||
float brightness;
|
||||
};
|
||||
|
||||
#endif
|
||||
102
src/fgt/edit_quality/common/meshmethods.cpp
Normal file
102
src/fgt/edit_quality/common/meshmethods.cpp
Normal file
@ -0,0 +1,102 @@
|
||||
#include "meshmethods.h"
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
|
||||
|
||||
|
||||
pair<int,int> computeHistogramMinMaxY (Histogramf* histogram)
|
||||
{
|
||||
int maxY = 0;
|
||||
int minY = std::numeric_limits<int>::max();
|
||||
for (int i=0; i<histogram->n; i++)
|
||||
{
|
||||
if ( histogram->H[i] > maxY )
|
||||
maxY = histogram->H[i];
|
||||
|
||||
if ( histogram->H[i] < minY )
|
||||
minY = histogram->H[i];
|
||||
}
|
||||
pair<int,int> minMaxY(minY,maxY);
|
||||
return minMaxY;
|
||||
}
|
||||
|
||||
void loadEqualizerInfo(QString fileName, EQUALIZER_INFO *data)
|
||||
{
|
||||
QFile inFile( fileName );
|
||||
|
||||
if ( !inFile.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||
return;
|
||||
|
||||
QTextStream inStream( &inFile );
|
||||
QString line;
|
||||
QStringList splittedString;
|
||||
|
||||
int channel_code = 0;
|
||||
do
|
||||
{
|
||||
line = inStream.readLine();
|
||||
|
||||
//if a line is a comment, it's not processed. imply ignoring it!
|
||||
if ( !line.startsWith(CSV_FILE_COMMENT) )
|
||||
channel_code ++;
|
||||
} while( (!line.isNull()) && (channel_code < NUMBER_OF_CHANNELS) );
|
||||
|
||||
do
|
||||
{
|
||||
line = inStream.readLine();
|
||||
|
||||
//if a line is a comment, it's not processed. imply ignoring it!
|
||||
if ( !line.startsWith(CSV_FILE_COMMENT) )
|
||||
{
|
||||
splittedString = line.split(CSV_FILE_SEPARATOR, QString::SkipEmptyParts);
|
||||
assert(splittedString.size() == 4);
|
||||
|
||||
data->minQualityVal = splittedString[0].toFloat();
|
||||
data->midQualityPercentage = splittedString[1].toFloat();
|
||||
data->maxQualityVal = splittedString[2].toFloat();
|
||||
data->brightness = splittedString[3].toFloat();
|
||||
|
||||
break;
|
||||
}
|
||||
} while(!line.isNull());
|
||||
|
||||
inFile.close();
|
||||
}
|
||||
|
||||
|
||||
void applyColorByVertexQuality(MeshModel& mesh, TransferFunction *transferFunction, float minQuality, float maxQuality, float midHandlePercentilePosition, float brightness)
|
||||
{
|
||||
CMeshO::VertexIterator vi;
|
||||
float percentageQuality;
|
||||
Color4b currentColor;
|
||||
|
||||
for(vi=mesh.cm.vert.begin(); vi!=mesh.cm.vert.end(); ++vi)
|
||||
if(!(*vi).IsD())
|
||||
{
|
||||
float vertexQuality = (*vi).Q();
|
||||
if (vertexQuality < minQuality)
|
||||
percentageQuality = 0.0;
|
||||
else
|
||||
if (vertexQuality > maxQuality)
|
||||
percentageQuality = 1.0;
|
||||
else
|
||||
percentageQuality = pow( ((*vi).Q() - minQuality) / (maxQuality - minQuality) , (float)(2.0*midHandlePercentilePosition));
|
||||
|
||||
currentColor = transferFunction->getColorByQuality(percentageQuality);
|
||||
|
||||
if (brightness!=1.0f) //Applying brightness to each color channel
|
||||
if (brightness<1.0f)
|
||||
for (int i=0; i<NUMBER_OF_CHANNELS; i++)
|
||||
//currentColor[i] = relative2AbsoluteVali(pow(absolute2RelativeValf(currentColor[i],255.0f),brightness), 255.0f);
|
||||
currentColor[i] = relative2AbsoluteVali(pow(absolute2RelativeValf(currentColor[i]+1,257.0f),brightness), 255.0f);
|
||||
else
|
||||
for (int i=0; i<NUMBER_OF_CHANNELS; i++)
|
||||
//currentColor[i] = relative2AbsoluteVali(1.0f-pow(1.0f-absolute2RelativeValf(currentColor[i],255.0f),2-brightness), 255.0f);
|
||||
currentColor[i] = relative2AbsoluteVali(1.0f-pow(1.0f-absolute2RelativeValf(currentColor[i]+1,257.0f),2-brightness), 255.0f);
|
||||
|
||||
Color4b old = (*vi).C();
|
||||
(*vi).C() = currentColor;
|
||||
}
|
||||
}
|
||||
25
src/fgt/edit_quality/common/meshmethods.h
Normal file
25
src/fgt/edit_quality/common/meshmethods.h
Normal file
@ -0,0 +1,25 @@
|
||||
#ifndef _MESHMETHODS_H_
|
||||
#define _MESHMETHODS_H_
|
||||
|
||||
#include "const_types.h"
|
||||
#include "transferfunction.h"
|
||||
#include <vcg/math/histogram.h>
|
||||
#include <meshlab/meshmodel.h>
|
||||
#include <cassert>
|
||||
#include <utility>
|
||||
|
||||
#include <QString>
|
||||
|
||||
using namespace std;
|
||||
using namespace vcg;
|
||||
|
||||
pair<int,int> computeHistogramMinMaxY (Histogramf*);
|
||||
|
||||
// Apply colors to mesh vertexes by quality
|
||||
void applyColorByVertexQuality(MeshModel& mesh, TransferFunction *transferFunction, float minQuality, float maxQuality, float midHandlePercentilePosition, float brightness);
|
||||
|
||||
// Opens a CSV file and gets its equalizer parameters
|
||||
void loadEqualizerInfo(QString fileName, EQUALIZER_INFO *data);
|
||||
|
||||
|
||||
#endif
|
||||
@ -432,7 +432,7 @@ QString TransferFunction::saveColorBand( QString fn, EQUALIZER_INFO& info )
|
||||
outStream << endl;
|
||||
}
|
||||
|
||||
outStream << CSV_FILE_COMMENT << "THE FOLLOWING 4 VALUES REPRESENT EQUALIZER SETTINGS - the first and the third values represent respectively the minimum and the maximum quality values used in histogram, the second one represent the position (in percentage) of the middle quality, and the last one represent the level of brightness" << endl;
|
||||
outStream << CSV_FILE_COMMENT << "THE FOLLOWING 4 VALUES REPRESENT EQUALIZER SETTINGS - the first and the third values represent respectively the minimum and the maximum quality values used in histogram, the second one represent the position (in percentage) of the middle quality, and the last one represent the level of brightness as a floating point number (0 copletely dark, 1 original brightness, 2 completely white)" << endl;
|
||||
outStream << info.minQualityVal << CSV_FILE_SEPARATOR << info.midQualityPercentage << CSV_FILE_SEPARATOR << info.maxQualityVal << CSV_FILE_SEPARATOR << info.brightness << CSV_FILE_SEPARATOR << endl;
|
||||
|
||||
outFile.close();
|
||||
|
||||
@ -2,19 +2,22 @@ TEMPLATE = lib
|
||||
CONFIG += plugin
|
||||
CONFIG += stl
|
||||
INCLUDEPATH += ../.. ../../../../sf ../../../../code/lib/glew/include
|
||||
HEADERS = const_types.h \
|
||||
HEADERS = common/const_types.h \
|
||||
qualitymapper.h \
|
||||
qualitymapperdialog.h \
|
||||
transferfunction.h \
|
||||
util.h \
|
||||
common/transferfunction.h \
|
||||
common/util.h \
|
||||
common/meshmethods.h\
|
||||
handle.h \
|
||||
eqhandle.h \
|
||||
tfhandle.h
|
||||
|
||||
SOURCES = qualitymapper.cpp\
|
||||
transferfunction.cpp\
|
||||
qualitymapperdialog.cpp\
|
||||
util.cpp handle.cpp\
|
||||
common/transferfunction.cpp\
|
||||
common/util.cpp \
|
||||
common/meshmethods.cpp\
|
||||
handle.cpp\
|
||||
eqhandle.cpp \
|
||||
tfhandle.cpp
|
||||
|
||||
|
||||
@ -1,10 +1,7 @@
|
||||
#ifndef _EQHANDLE_H_
|
||||
#define _EQHANDLE_H_
|
||||
|
||||
//#include <QObject>
|
||||
//#include <QGraphicsItem>
|
||||
#include "handle.h"
|
||||
//#include "util.h"
|
||||
|
||||
enum EQUALIZER_HANDLE_TYPE
|
||||
{
|
||||
|
||||
@ -2,16 +2,16 @@ TEMPLATE = lib
|
||||
CONFIG += plugin
|
||||
CONFIG += stl
|
||||
INCLUDEPATH += ../../.. ../../../../../sf ../../../../../code/lib/glew/include
|
||||
HEADERS = ../const_types.h \
|
||||
../transferfunction.h \
|
||||
../util.h \
|
||||
../qualitymapperdialog.h \
|
||||
HEADERS = ../common/const_types.h \
|
||||
../common/transferfunction.h \
|
||||
../common/util.h \
|
||||
../common/meshmethods.h \
|
||||
filterqualitymapper.h \
|
||||
../../../meshlab/filterparameter.h
|
||||
|
||||
SOURCES = ../transferfunction.cpp \
|
||||
../util.cpp \
|
||||
../qualitymapperdialog.cpp \
|
||||
SOURCES = ../common/transferfunction.cpp \
|
||||
../common/util.cpp \
|
||||
../common/meshmethods.cpp \
|
||||
filterqualitymapper.cpp \
|
||||
../../../meshlab/filterparameter.cpp
|
||||
|
||||
|
||||
@ -23,6 +23,16 @@
|
||||
/****************************************************************************
|
||||
History
|
||||
$Log$
|
||||
Revision 1.6 2008/02/20 17:23:00 fbellucci
|
||||
-changed folders\files organizations. Added Common folder to contain files used by both projects
|
||||
|
||||
-many minor changed due to update of incude file paths
|
||||
|
||||
- changed representation of brightness level value in csv files
|
||||
- fixed bug in apply method of filter
|
||||
|
||||
-other minor changes
|
||||
|
||||
Revision 1.5 2008/02/20 14:52:57 fbellucci
|
||||
Refactoring of method necessary ti FilterQualityMapper
|
||||
|
||||
@ -135,19 +145,19 @@ void QualityMapperFilter::initParameterSet(QAction *action,MeshModel &m, FilterP
|
||||
eqData.minQualityVal = 0.0f;
|
||||
eqData.midQualityPercentage = 0.5f;
|
||||
eqData.maxQualityVal = 100.0f;
|
||||
eqData.brightness = 50;
|
||||
eqData.brightness = 1.0f;
|
||||
|
||||
if (!csvFileName.isNull())
|
||||
{
|
||||
//setting equalizer values
|
||||
QualityMapperDialog::loadEqualizerInfo(csvFileName, &eqData);
|
||||
loadEqualizerInfo(csvFileName, &eqData);
|
||||
}
|
||||
|
||||
parlst.addString("csvFileName", csvFileName, "CSV input File" );
|
||||
parlst.addFloat("minQualityVal", eqData.minQualityVal, "Minimum mesh quality" );
|
||||
parlst.addFloat("maxQualityVal", eqData.maxQualityVal, "Maximum mesh quality" );
|
||||
parlst.addAbsPerc("midHandlePos", eqData.midQualityPercentage, 0.0f, 1.0f, "Middle quality percentage position", "defines the percentage position of middle quality value");
|
||||
parlst.addInt("brightness", eqData.brightness, "mesh brightness" );
|
||||
parlst.addFloat("brightness", eqData.brightness, "mesh brightness" );
|
||||
break;
|
||||
|
||||
default : assert(0);
|
||||
@ -163,8 +173,7 @@ bool QualityMapperFilter::applyFilter(QAction *filter, MeshModel &m, FilterParam
|
||||
{
|
||||
//building new TF object from external file
|
||||
TransferFunction transferFunction( csvFileName );
|
||||
|
||||
QualityMapperDialog::applyColorByVertexQuality(m, &transferFunction, par.getFloat("minQualityVal"), par.getFloat("maxQualityVal"), par.getFloat("midHandlePos"), par.getFloat("brightness"));
|
||||
applyColorByVertexQuality(m, &transferFunction, par.getFloat("minQualityVal"), par.getFloat("maxQualityVal"), par.getAbsPerc("midHandlePos"), par.getFloat("brightness"));
|
||||
|
||||
// Log function dump textual info in the lower part of the MeshLab screen.
|
||||
//Log(0,"Successfully displaced %i vertices",m.cm.vn);
|
||||
|
||||
@ -23,6 +23,16 @@
|
||||
/****************************************************************************
|
||||
History
|
||||
$Log$
|
||||
Revision 1.3 2008/02/20 17:23:00 fbellucci
|
||||
-changed folders\files organizations. Added Common folder to contain files used by both projects
|
||||
|
||||
-many minor changed due to update of incude file paths
|
||||
|
||||
- changed representation of brightness level value in csv files
|
||||
- fixed bug in apply method of filter
|
||||
|
||||
-other minor changes
|
||||
|
||||
Revision 1.2 2008/02/20 14:52:57 fbellucci
|
||||
Refactoring of method necessary ti FilterQualityMapper
|
||||
|
||||
@ -50,8 +60,8 @@ add sampleplugins
|
||||
#include <meshlab/meshmodel.h>
|
||||
#include <meshlab/interfaces.h>
|
||||
|
||||
#include "../transferfunction.h"
|
||||
#include "../qualitymapperdialog.h"
|
||||
#include "../common/transferfunction.h"
|
||||
#include "../common/meshmethods.h"
|
||||
|
||||
|
||||
class QualityMapperFilter : public QObject, public MeshFilterInterface
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
#include <QGraphicsItem>
|
||||
#include <QtGui>
|
||||
#include <limits>
|
||||
#include "util.h"
|
||||
#include "common/util.h"
|
||||
|
||||
/* Drag&Drop generic handle to be used in QGrahicsScenes */
|
||||
class Handle : public QObject, public QGraphicsItem
|
||||
|
||||
@ -94,12 +94,12 @@ void QualityMapperPlugin::Decorate(QAction *, MeshModel&, GLArea *)
|
||||
{
|
||||
}
|
||||
|
||||
void QualityMapperPlugin::StartEdit(QAction *mode, MeshModel &m, GLArea *gla )
|
||||
void QualityMapperPlugin::StartEdit(QAction *mode, MeshModel& m, GLArea *gla )
|
||||
{
|
||||
// gla->setCursor(QCursor(QPixmap(":/images/cur_info.png"),1,1));
|
||||
|
||||
if(_qualityMapperDialog==0)
|
||||
_qualityMapperDialog = new QualityMapperDialog(gla->window(), &m, gla);
|
||||
_qualityMapperDialog = new QualityMapperDialog(gla->window(), m, gla);
|
||||
|
||||
//drawing histogram
|
||||
//bool ret = _qualityMapperDialog->initEqualizerHistogram();
|
||||
|
||||
@ -16,102 +16,9 @@ bool TfHandleCompare(TFHandle*h1, TFHandle*h2)
|
||||
void TFDoubleClickCatcher::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
|
||||
{ emit TFdoubleClicked(event->scenePos()); }
|
||||
|
||||
pair<int,int> QualityMapperDialog::computeHistogramMinMaxY (Histogramf* histogram)
|
||||
{
|
||||
int maxY = 0;
|
||||
int minY = std::numeric_limits<int>::max();
|
||||
for (int i=0; i<histogram->n; i++)
|
||||
{
|
||||
if ( histogram->H[i] > maxY )
|
||||
maxY = histogram->H[i];
|
||||
|
||||
if ( histogram->H[i] < minY )
|
||||
minY = histogram->H[i];
|
||||
}
|
||||
pair<int,int> minMaxY(minY,maxY);
|
||||
return minMaxY;
|
||||
}
|
||||
|
||||
void QualityMapperDialog::loadEqualizerInfo(QString fileName, EQUALIZER_INFO *data)
|
||||
{
|
||||
QFile inFile( fileName );
|
||||
|
||||
if ( !inFile.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||
return;
|
||||
|
||||
QTextStream inStream( &inFile );
|
||||
QString line;
|
||||
QStringList splittedString;
|
||||
|
||||
int channel_code = 0;
|
||||
do
|
||||
{
|
||||
line = inStream.readLine();
|
||||
|
||||
//if a line is a comment, it's not processed. imply ignoring it!
|
||||
if ( !line.startsWith(CSV_FILE_COMMENT) )
|
||||
channel_code ++;
|
||||
} while( (!line.isNull()) && (channel_code < NUMBER_OF_CHANNELS) );
|
||||
|
||||
do
|
||||
{
|
||||
line = inStream.readLine();
|
||||
|
||||
//if a line is a comment, it's not processed. imply ignoring it!
|
||||
if ( !line.startsWith(CSV_FILE_COMMENT) )
|
||||
{
|
||||
splittedString = line.split(CSV_FILE_SEPARATOR, QString::SkipEmptyParts);
|
||||
assert(splittedString.size() == 4);
|
||||
|
||||
data->minQualityVal = splittedString[0].toFloat();
|
||||
data->midQualityPercentage = splittedString[1].toFloat();
|
||||
data->maxQualityVal = splittedString[2].toFloat();
|
||||
data->brightness = splittedString[3].toFloat();
|
||||
|
||||
break;
|
||||
}
|
||||
} while(!line.isNull());
|
||||
|
||||
inFile.close();
|
||||
}
|
||||
|
||||
|
||||
void QualityMapperDialog::applyColorByVertexQuality(MeshModel& mesh, TransferFunction *transferFunction, float minQuality, float maxQuality, float midHandlePercentilePosition, float brightness)
|
||||
{
|
||||
CMeshO::VertexIterator vi;
|
||||
float percentageQuality;
|
||||
Color4b currentColor;
|
||||
|
||||
for(vi=mesh.cm.vert.begin(); vi!=mesh.cm.vert.end(); ++vi)
|
||||
if(!(*vi).IsD())
|
||||
{
|
||||
float vertexQuality = (*vi).Q();
|
||||
if (vertexQuality < minQuality)
|
||||
percentageQuality = 0.0;
|
||||
else
|
||||
if (vertexQuality > maxQuality)
|
||||
percentageQuality = 1.0;
|
||||
else
|
||||
percentageQuality = pow( ((*vi).Q() - minQuality) / (maxQuality - minQuality) , (float)(2.0*midHandlePercentilePosition));
|
||||
|
||||
currentColor = transferFunction->getColorByQuality(percentageQuality);
|
||||
|
||||
if (brightness!=1.0f) //Applying brightness to each color channel
|
||||
if (brightness<1.0f)
|
||||
for (int i=0; i<3; i++)
|
||||
//currentColor[i] = relative2AbsoluteVali(pow(absolute2RelativeValf(currentColor[i],255.0f),brightness), 255.0f);
|
||||
currentColor[i] = relative2AbsoluteVali(pow(absolute2RelativeValf(currentColor[i]+1,257.0f),brightness), 255.0f);
|
||||
else
|
||||
for (int i=0; i<3; i++)
|
||||
//currentColor[i] = relative2AbsoluteVali(1.0f-pow(1.0f-absolute2RelativeValf(currentColor[i],255.0f),2-brightness), 255.0f);
|
||||
currentColor[i] = relative2AbsoluteVali(1.0f-pow(1.0f-absolute2RelativeValf(currentColor[i]+1,257.0f),2-brightness), 255.0f);
|
||||
|
||||
(*vi).C() = currentColor;
|
||||
}
|
||||
}
|
||||
|
||||
//class constructor
|
||||
QualityMapperDialog::QualityMapperDialog(QWidget *parent, MeshModel *m, GLArea *gla) : QDockWidget(parent), mesh(m)
|
||||
QualityMapperDialog::QualityMapperDialog(QWidget *parent, MeshModel& m, GLArea *gla) : QDockWidget(parent), mesh(m)
|
||||
{
|
||||
ui.setupUi(this);
|
||||
|
||||
@ -493,8 +400,8 @@ bool QualityMapperDialog::drawEqualizerHistogram(bool leftHandleIsInsideHistogra
|
||||
{
|
||||
// This block is called only the first time
|
||||
_equalizer_histogram = new Histogramf();
|
||||
Frange histogramRange(tri::Stat<CMeshO>::ComputePerVertexQualityMinMax(mesh->cm));
|
||||
this->ComputePerVertexQualityHistogram(mesh->cm, histogramRange, _equalizer_histogram, numberOfBins);
|
||||
Frange histogramRange(tri::Stat<CMeshO>::ComputePerVertexQualityMinMax(mesh.cm));
|
||||
this->ComputePerVertexQualityHistogram(mesh.cm, histogramRange, _equalizer_histogram, numberOfBins);
|
||||
if (histogramRange.minV == histogramRange.maxV)
|
||||
{
|
||||
int ret = QMessageBox::warning(this, tr("Quality Mapper"), tr("The model has no vertex quality"), QMessageBox::Ok);
|
||||
@ -523,7 +430,7 @@ bool QualityMapperDialog::drawEqualizerHistogram(bool leftHandleIsInsideHistogra
|
||||
float minX = (_histogram_info->minX<ui.minSpinBox->value())?_histogram_info->minX:ui.minSpinBox->value();
|
||||
float maxX = (_histogram_info->maxX>ui.maxSpinBox->value())?_histogram_info->maxX:ui.maxSpinBox->value();
|
||||
Frange mmmq(minX, maxX);
|
||||
this->ComputePerVertexQualityHistogram(mesh->cm, mmmq, _equalizer_histogram, numberOfBins);
|
||||
this->ComputePerVertexQualityHistogram(mesh.cm, mmmq, _equalizer_histogram, numberOfBins);
|
||||
|
||||
pair<int,int> minMaxY = computeHistogramMinMaxY(_equalizer_histogram);
|
||||
_histogram_info->minY = minMaxY.first;
|
||||
@ -831,7 +738,7 @@ void QualityMapperDialog::on_savePresetButton_clicked()
|
||||
eqInfo.minQualityVal = ui.minSpinBox->value();
|
||||
eqInfo.midQualityPercentage = _equalizerMidHandlePercentilePosition;
|
||||
eqInfo.maxQualityVal = ui.maxSpinBox->value();
|
||||
eqInfo.brightness = ui.brightnessSlider->value();
|
||||
eqInfo.brightness = (1.0f - (float)(ui.brightnessSlider->value())/(float)(ui.brightnessSlider->maximum()) )*2.0;
|
||||
|
||||
QString tfPath = _transferFunction->saveColorBand( tfName, eqInfo );
|
||||
|
||||
|
||||
@ -20,7 +20,8 @@
|
||||
#include "../../meshlabplugins/meshcolorize/curvature.h" //<--contains Frange
|
||||
#include <vcg/complex/trimesh/stat.h>
|
||||
#include <meshlab/glarea.h>
|
||||
#include "transferfunction.h"
|
||||
#include "common/transferfunction.h"
|
||||
#include "common/meshmethods.h"
|
||||
#include "eqhandle.h"
|
||||
#include "tfhandle.h"
|
||||
|
||||
@ -81,7 +82,7 @@ class QualityMapperDialog : public QDockWidget
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QualityMapperDialog(QWidget *parent=0, MeshModel *m=0, GLArea *gla=0);
|
||||
QualityMapperDialog(QWidget *parent, MeshModel& m, GLArea *gla=0);
|
||||
~QualityMapperDialog();
|
||||
|
||||
// inline void setMesh(MeshModel *m){ mesh=m; }
|
||||
@ -93,11 +94,6 @@ public:
|
||||
void drawTransferFunction();
|
||||
|
||||
|
||||
static pair<int,int> computeHistogramMinMaxY (Histogramf*);
|
||||
// Apply colors to mesh vertexes by quality
|
||||
static void applyColorByVertexQuality(MeshModel& mesh, TransferFunction *transferFunction, float minQuality, float maxQuality, float midHandlePercentilePosition, float brightness);
|
||||
// Opens a CSV file and gets its equalizer parameters
|
||||
static void loadEqualizerInfo(QString fileName, EQUALIZER_INFO *data);
|
||||
|
||||
|
||||
private:
|
||||
@ -128,7 +124,7 @@ private:
|
||||
|
||||
GRAPHICS_ITEMS_LIST _removed_items;
|
||||
|
||||
MeshModel *mesh;
|
||||
MeshModel& mesh;
|
||||
GLArea *gla;
|
||||
|
||||
void initTF();
|
||||
|
||||
@ -2,8 +2,7 @@
|
||||
#define _TFHANDLE_H_
|
||||
|
||||
#include "handle.h"
|
||||
#include "util.h"
|
||||
#include "transferfunction.h"
|
||||
#include "common/transferfunction.h"
|
||||
|
||||
|
||||
/* Specific handle for TransferFunctionScene*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user