You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.2 KiB
64 lines
1.2 KiB
#include "qwt3d_color.h"
|
|
#include "qwt3d_plot.h"
|
|
|
|
using namespace Qwt3D;
|
|
|
|
StandardColor::StandardColor(Plot3D* data, unsigned size)
|
|
: data_(data)
|
|
{
|
|
Q_ASSERT(data_);
|
|
|
|
reset(size);
|
|
}
|
|
|
|
void StandardColor::reset(unsigned size)
|
|
{
|
|
colors_ = ColorVector(size);
|
|
RGBA elem;
|
|
|
|
double dsize = size;
|
|
|
|
for (unsigned int i=0; i!=size; ++i)
|
|
{
|
|
elem.r = i / dsize;
|
|
elem.g = i / dsize / 4;
|
|
elem.b = 1 - i/dsize;
|
|
elem.a = 1.0;
|
|
colors_[i] = elem;
|
|
}
|
|
}
|
|
|
|
/**
|
|
Assigns a new ColorVector (Also overwrites the constructors size argument)
|
|
*/
|
|
void StandardColor::setColorVector(ColorVector const& cv)
|
|
{
|
|
colors_ = cv;
|
|
}
|
|
|
|
void StandardColor::setAlpha(double a)
|
|
{
|
|
if (a<0 || a>1)
|
|
return;
|
|
|
|
RGBA elem;
|
|
|
|
for (unsigned int i=0; i!=colors_.size(); ++i)
|
|
{
|
|
elem = colors_[i];
|
|
elem.a = a;
|
|
colors_[i] = elem;
|
|
}
|
|
}
|
|
|
|
RGBA StandardColor::operator()(double, double, double z) const
|
|
{
|
|
Q_ASSERT(data_);
|
|
int index = (int)((colors_.size()-1) * (z - data_->hull().minVertex.z) / (data_->hull().maxVertex.z-data_->hull().minVertex.z));
|
|
if (index < 0)
|
|
index = 0;
|
|
if ((unsigned int)index > colors_.size() - 1)
|
|
index = (int)(colors_.size() - 1);
|
|
return colors_[index];
|
|
}
|