mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Created setter for opacity
This commit is contained in:
parent
5c9a57178e
commit
748e056bbc
@ -30,7 +30,7 @@
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(TernaryScalarMapperTest, BasicFunctions)
|
||||
{
|
||||
cvf::ref<RivTernaryScalarMapper> scalarMapper = new RivTernaryScalarMapper(cvf::Color3f::GRAY, 0.8f);
|
||||
cvf::ref<RivTernaryScalarMapper> scalarMapper = new RivTernaryScalarMapper(cvf::Color3f::GRAY);
|
||||
|
||||
cvf::ref<cvf::TextureImage> texImage = new cvf::TextureImage;
|
||||
scalarMapper->updateTexture(texImage.p());
|
||||
@ -45,7 +45,7 @@ TEST(TernaryScalarMapperTest, BasicFunctions)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(TernaryScalarMapperTest, TextureMapping)
|
||||
{
|
||||
cvf::ref<RivTernaryScalarMapper> scalarMapper = new RivTernaryScalarMapper(cvf::Color3f::GRAY, 0.8f);
|
||||
cvf::ref<RivTernaryScalarMapper> scalarMapper = new RivTernaryScalarMapper(cvf::Color3f::GRAY);
|
||||
|
||||
// Without opacity
|
||||
{
|
||||
|
@ -24,32 +24,41 @@
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RivTernaryScalarMapper::RivTernaryScalarMapper(const cvf::Color3f& undefScalarColor, float opacityLevel)
|
||||
RivTernaryScalarMapper::RivTernaryScalarMapper(const cvf::Color3f& undefScalarColor)
|
||||
: m_undefScalarColor(undefScalarColor),
|
||||
m_opacityLevel(opacityLevel),
|
||||
m_textureSize(128, 256)
|
||||
{
|
||||
m_opacityLevel = 1.0;
|
||||
|
||||
setTernaryRanges(0.0, 1.0, 0.0, 1.0);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
cvf::Vec2f RivTernaryScalarMapper::mapToTextureCoord(double soil, double swat, bool isTransparent)
|
||||
void RivTernaryScalarMapper::setOpacityLevel(float opacityLevel)
|
||||
{
|
||||
m_opacityLevel = opacityLevel;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
cvf::Vec2f RivTernaryScalarMapper::mapToTextureCoord(double soil, double sgas, bool isTransparent) const
|
||||
{
|
||||
double soilNormalized = (soil - m_rangeMinSoil) * m_soilFactor;
|
||||
soilNormalized = cvf::Math::clamp(soilNormalized, 0.0, 1.0);
|
||||
|
||||
double swatNormalized = (swat - m_rangeMinSwat) * m_swatFactor;
|
||||
swatNormalized = cvf::Math::clamp(swatNormalized, 0.0, 1.0 - soilNormalized);
|
||||
swatNormalized /= 2.0;
|
||||
double sgasNormalized = (sgas - m_rangeMinSgas) * m_sgasFactor;
|
||||
sgasNormalized = cvf::Math::clamp(sgasNormalized, 0.0, 1.0 - soilNormalized);
|
||||
sgasNormalized /= 2.0;
|
||||
|
||||
if (isTransparent)
|
||||
{
|
||||
swatNormalized += 0.5;
|
||||
sgasNormalized += 0.5;
|
||||
}
|
||||
|
||||
cvf::Vec2f texCoord(static_cast<float>(soilNormalized), static_cast<float>(swatNormalized));
|
||||
cvf::Vec2f texCoord(static_cast<float>(soilNormalized), static_cast<float>(sgasNormalized));
|
||||
return texCoord;
|
||||
}
|
||||
|
||||
@ -60,12 +69,13 @@ cvf::Vec2f RivTernaryScalarMapper::mapToTextureCoord(double soil, double swat, b
|
||||
/// * * Texture in this region is assigned the given opacity level
|
||||
/// * *
|
||||
/// D *********** E
|
||||
/// C *
|
||||
/// C * SGAS
|
||||
/// * *
|
||||
/// * * Texture in this region is opaque
|
||||
/// * *
|
||||
/// * *
|
||||
/// A *********** B
|
||||
/// A *********** B
|
||||
/// SWAT SOIL
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RivTernaryScalarMapper::updateTexture(cvf::TextureImage* image)
|
||||
{
|
||||
@ -116,13 +126,14 @@ bool RivTernaryScalarMapper::updateTexture(cvf::TextureImage* image)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RivTernaryScalarMapper::setTernaryRanges(double soilLower, double soilUpper, double swatLower, double swatUpper)
|
||||
void RivTernaryScalarMapper::setTernaryRanges(double soilLower, double soilUpper, double sgasLower, double sgasUpper)
|
||||
{
|
||||
m_rangeMinSoil = soilLower;
|
||||
m_rangeMaxSoil = soilUpper;
|
||||
m_soilFactor = 1.0 / (soilUpper - soilLower);
|
||||
|
||||
m_rangeMinSwat = swatLower;
|
||||
m_rangeMaxSwat = swatUpper;
|
||||
m_swatFactor = 1.0 / (swatUpper - swatLower);
|
||||
m_rangeMinSgas = sgasLower;
|
||||
m_rangeMaxSgas = sgasUpper;
|
||||
m_sgasFactor = 1.0 / (sgasUpper - sgasLower);
|
||||
}
|
||||
|
||||
|
@ -34,11 +34,13 @@ namespace cvf
|
||||
class RivTernaryScalarMapper : public cvf::Object
|
||||
{
|
||||
public:
|
||||
RivTernaryScalarMapper(const cvf::Color3f& undefScalarColor, float opacityLevel);
|
||||
RivTernaryScalarMapper(const cvf::Color3f& undefScalarColor);
|
||||
|
||||
void setTernaryRanges(double soilLower, double soilUpper, double swatLower, double swatUpper);
|
||||
void setOpacityLevel(float opacityLevel);
|
||||
|
||||
cvf::Vec2f mapToTextureCoord(double soil, double swat, bool isTransparent);
|
||||
void setTernaryRanges(double soilLower, double soilUpper, double sgasLower, double sgasUpper);
|
||||
|
||||
cvf::Vec2f mapToTextureCoord(double soil, double sgas, bool isTransparent) const;
|
||||
bool updateTexture(cvf::TextureImage* image);
|
||||
|
||||
private:
|
||||
@ -50,8 +52,8 @@ private:
|
||||
double m_rangeMinSoil;
|
||||
double m_soilFactor;
|
||||
|
||||
double m_rangeMaxSwat;
|
||||
double m_rangeMinSwat;
|
||||
double m_swatFactor;
|
||||
double m_rangeMaxSgas;
|
||||
double m_rangeMinSgas;
|
||||
double m_sgasFactor;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user