Skip to content

Commit 95bafc6

Browse files
committed
Added option to ignore hidden parts of mesh when calculating range of colormap. (#221)
1 parent 7a32325 commit 95bafc6

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

PostGL/GLColorMap.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ CGLColorMap::CGLColorMap(CGLModel *po) : CGLDataMap(po)
5151
AddDoubleParam(0, "user_min");
5252
AddBoolParam(false, "show_minmax_markers", "Show min/max markers");
5353
AddColorParam(GLColor(200, 200, 200), "inactive_color");
54+
AddBoolParam(false, "ignore_hidden_mesh", "Ignore hidden mesh");
5455

5556
m_range.min = m_range.max = 0;
5657
m_range.mintype = m_range.maxtype = m_defaultRngType;
@@ -166,6 +167,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
166167

167168
m_rmin = m_rmax = vec3d(0, 0, 0);
168169

170+
bool ignoreHiddenMesh = GetBoolValue(IGNORE_HIDDEN_MESH);
171+
169172
// update the range
170173
float fmin = 1e29f, fmax = -1e29f;
171174
if (IS_ELEM_FIELD(m_nfield) && (m_bDispNodeVals == false))
@@ -177,6 +180,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
177180
for (int i = 0; i < NE; ++i)
178181
{
179182
FSElement_& el = pm->ElementRef(i);
183+
if (ignoreHiddenMesh && !el.IsVisible()) continue;
184+
180185
ELEMDATA& d0 = s0.m_ELEM[i];
181186
ELEMDATA& d1 = s1.m_ELEM[i];
182187
if ((d0.m_state & StatusFlags::ACTIVE) && (d1.m_state & StatusFlags::ACTIVE))
@@ -198,6 +203,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
198203
for (int i = 0; i < NE; ++i)
199204
{
200205
FSElement_& el = pm->ElementRef(i);
206+
if (ignoreHiddenMesh && !el.IsVisible()) continue;
207+
201208
ELEMDATA& d0 = s0.m_ELEM[i];
202209
ELEMDATA& d1 = s1.m_ELEM[i];
203210
if ((d0.m_state & StatusFlags::ACTIVE) && (d1.m_state & StatusFlags::ACTIVE))
@@ -223,6 +230,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
223230
for (int i = 0; i < NF; ++i)
224231
{
225232
FSFace& face = pm->Face(i);
233+
if (ignoreHiddenMesh && !face.IsVisible()) continue;
234+
226235
FACEDATA& d0 = s0.m_FACE[i];
227236
FACEDATA& d1 = s1.m_FACE[i];
228237
vec3d r = pm->FaceCenter(face);
@@ -241,6 +250,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
241250
for (int i = 0; i < NF; ++i)
242251
{
243252
FSFace& face = pm->Face(i);
253+
if (ignoreHiddenMesh && !face.IsVisible()) continue;
254+
244255
FACEDATA& fd0 = s0.m_FACE[i];
245256
FACEDATA& fd1 = s1.m_FACE[i];
246257
if (face.IsEnabled() && (fd0.m_ntag > 0))
@@ -266,6 +277,8 @@ void CGLColorMap::UpdateRange(int n0, int n1, float dt, bool breset)
266277
for (int i = 0; i < pm->Nodes(); ++i)
267278
{
268279
FSNode& node = pm->Node(i);
280+
if (ignoreHiddenMesh && !node.IsVisible()) continue;
281+
269282
NODEDATA& d0 = s0.m_NODE[i];
270283
NODEDATA& d1 = s1.m_NODE[i];
271284
if ((node.IsEnabled()) && (d0.m_ntag > 0) && (d1.m_ntag > 0))

PostGL/GLColorMap.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class CGLModel;
3535

3636
class CGLColorMap : public CGLDataMap
3737
{
38-
enum { DATA_FIELD, DATA_SMOOTH, COLOR_MAP, NODAL_VALS, RANGE_DIVS, SHOW_LEGEND, MAX_RANGE_TYPE, USER_MAX, MIN_RANGE_TYPE, USER_MIN, SHOW_MINMAX_MARKERS, INACTIVE_COLOR };
38+
enum { DATA_FIELD, DATA_SMOOTH, COLOR_MAP, NODAL_VALS, RANGE_DIVS, SHOW_LEGEND, MAX_RANGE_TYPE, USER_MAX, MIN_RANGE_TYPE, USER_MIN, SHOW_MINMAX_MARKERS, INACTIVE_COLOR, IGNORE_HIDDEN_MESH };
3939

4040
public:
4141
CGLColorMap(CGLModel* po);

0 commit comments

Comments
 (0)