double_pair ImageDefaultTFGenerator::ensureNonZeroRoundedRange(double_pair range) const { range.first = roundAwayFromZero(range.first); range.second = roundAwayFromZero(range.second); range.second = std::max(range.second, range.first+1); return range; }
ImageTF3DPtr ImageDefaultTFGenerator::generate3DTFPreset() { ImageTF3DPtr tf(new ImageTF3D()); double_pair range = this->guessInitialScalarRange(); double smin = range.first; double smax = range.second; double srange = smax - smin; IntIntMap opacity; // Note the ordering: add in descending order to ensure zero is // always written into smin, also for binary volumes // Round is required for binary volumes. opacity[smin + roundAwayFromZero(0.5*srange)] = 255; opacity[smin + roundAwayFromZero(0.3*srange)] = 255.0 * 0.7; opacity[smin + roundAwayFromZero(0.1*srange)] = 0; tf->resetAlpha(opacity); ColorMap colors; colors[smin] = QColor(Qt::black); colors[smax] = QColor(Qt::white); tf->resetColor(colors); return tf; }
TransferFunctionAlphaWidget::AlphaPoint TransferFunctionAlphaWidget::getCurrentAlphaPoint(QPoint pos) { AlphaPoint point; double dposition = mImage->getMin() + mImage->getRange() * double(pos.x() - mPlotArea.left()) / mPlotArea.width(); double dvalue = mImage->getMaxAlphaValue() * double(mPlotArea.bottom() - pos.y())/mPlotArea.height(); point.position = roundAwayFromZero(dposition); point.value = roundAwayFromZero(dvalue); point.position = constrainValue(point.position, mImage->getMin(), mImage->getMax()); point.value = constrainValue(point.value, 0, mImage->getMaxAlphaValue()); return point; }