Commit 9989d54a authored by pugmire's avatar pugmire

Add render options on a plot-by-plot basis for pseudocolor plot. Allows for...

Add render options on a plot-by-plot basis for pseudocolor plot. Allows for surface, wireframe, and point rendering. As well as color selection for wireframe and points.

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@28076 18c085ea-50e0-402c-830e-de6fd14e8384
parent 0baf355c
......@@ -119,6 +119,17 @@ avtMapper::avtMapper()
transparencyIndex = -1;
globalAmbient = 0.;
specularIsInappropriate = false;
drawSurfaces = false;
drawWireframe = false;
drawPoints = false;
wireframeColorByScalar = pointsColorByScalar = false;
wireframeColor[0] = 0;
wireframeColor[1] = 0;
wireframeColor[2] = 0;
pointColor[0] = 0;
pointColor[1] = 0;
pointColor[2] = 0;
}
......@@ -400,6 +411,13 @@ avtMapper::SetUpMappers(void)
tree->GetAllLabels(labels);
if (!labels.empty() )
{
int n = labels.size();
if (drawWireframe)
for (int i = 0; i < n; i++)
labels.push_back(labels[i]);
if (drawPoints)
for (int i = 0; i < n; i++)
labels.push_back(labels[i]);
SetLabels(labels, true);
labels.clear();
}
......@@ -407,18 +425,33 @@ avtMapper::SetUpMappers(void)
input->GetInfo().GetAttributes().GetLabels(labels);
if (!labels.empty())
{
int n = labels.size();
if (drawWireframe)
for (int i = 0; i < n; i++)
labels.push_back(labels[i]);
if (drawPoints)
for (int i = 0; i < n; i++)
labels.push_back(labels[i]);
SetLabels(labels, false);
labels.clear();
}
vtkDataSet **children = NULL;
int nChildren = 0;
if (*tree != NULL)
children = tree->GetAllLeaves(nMappers);
else
nMappers = 0;
children = tree->GetAllLeaves(nChildren);
nMappers = nChildren;
//Add mapper/actors for wire/points.
if (drawWireframe)
nMappers += nChildren;
if (drawPoints)
nMappers += nChildren;
mappers = new vtkDataSetMapper*[nMappers];
actors = new vtkActor*[nMappers];
mapperType = new MapperType[nMappers];
for (int j = 0 ; j < nMappers ; j++)
{
......@@ -426,33 +459,95 @@ avtMapper::SetUpMappers(void)
actors[j] = NULL;
}
SetUpFilters(nMappers);
for (int i = 0; i < nMappers; i++)
//Do the regular stuff.
int mi = 0;
if (drawSurfaces)
{
// We might have some dummy data (SR-mode). If so, just continue.
if (children[i] == NULL)
continue;
if (children[i]->GetNumberOfCells() <= 0)
continue;
mappers[i] = CreateMapper();
vtkAlgorithmOutput * outputPort = InsertFilters(children[i], i);
if (outputPort != NULL)
mappers[i]->SetInputConnection(outputPort);
else
mappers[i]->SetInputData(children[i]);
if (immediateMode)
for (int i = 0; i < nChildren; i++, mi++)
{
// We might have some dummy data (SR-mode). If so, just continue.
if (children[i] == NULL || children[i]->GetNumberOfCells() <= 0)
continue;
mappers[mi] = CreateMapper();
vtkAlgorithmOutput * outputPort = InsertFilters(children[i], i);
if (outputPort != NULL)
mappers[mi]->SetInputConnection(outputPort);
else
mappers[mi]->SetInputData(children[i]);
if (immediateMode)
mappers[mi]->ImmediateModeRenderingOn();
actors[mi] = vtkActor::New();
actors[mi]->SetMapper(mappers[mi]);
mapperType[mi] = DEFAULT;
}
}
if (drawWireframe)
{
for (int i = 0; i < nChildren; i++, mi++)
{
mappers[i]->ImmediateModeRenderingOn();
// We might have some dummy data (SR-mode). If so, just continue.
if (children[i] == NULL || children[i]->GetNumberOfCells() <= 0)
continue;
mappers[mi] = vtkDataSetMapper::New();
//mappers[mi] = CreateMapper();
vtkAlgorithmOutput * outputPort = InsertFilters(children[i], i);
if (outputPort != NULL)
mappers[mi]->SetInputConnection(outputPort);
else
mappers[mi]->SetInputData(children[i]);
if (immediateMode)
mappers[mi]->ImmediateModeRenderingOn();
actors[mi] = vtkActor::New();
actors[mi]->SetMapper(mappers[mi]);
actors[mi]->GetProperty()->SetRepresentationToWireframe();
actors[mi]->GetProperty()->SetAmbient(1.);
actors[mi]->GetProperty()->SetDiffuse(0.);
if (wireframeColorByScalar)
mappers[mi]->ScalarVisibilityOn();
else
{
mappers[mi]->ScalarVisibilityOff();
actors[mi]->GetProperty()->SetColor(wireframeColor);
}
mapperType[mi] = WIREFRAME;
}
actors[i] = vtkActor::New();
actors[i]->SetMapper(mappers[i]);
}
if (drawPoints)
{
for (int i = 0; i < nChildren; i++, mi++)
{
// We might have some dummy data (SR-mode). If so, just continue.
if (children[i] == NULL || children[i]->GetNumberOfCells() <= 0)
continue;
mappers[mi] = CreateMapper();
vtkAlgorithmOutput * outputPort = InsertFilters(children[i], i);
if (outputPort != NULL)
mappers[mi]->SetInputConnection(outputPort);
else
mappers[mi]->SetInputData(children[i]);
if (immediateMode)
mappers[mi]->ImmediateModeRenderingOn();
actors[mi] = vtkActor::New();
actors[mi]->SetMapper(mappers[mi]);
actors[mi]->GetProperty()->SetRepresentationToPoints();
actors[mi]->GetProperty()->SetAmbient(1.);
actors[mi]->GetProperty()->SetDiffuse(0.);
if (pointsColorByScalar)
mappers[mi]->ScalarVisibilityOn();
else
{
mappers[mi]->ScalarVisibilityOff();
actors[mi]->GetProperty()->SetColor(pointColor);
}
mapperType[mi] = POINT;
}
}
// this was allocated in GetAllLeaves, need to free it now
if (children != NULL)
delete [] children;
PrepareExtents();
CustomizeMappers();
if (transparencyActor != NULL)
......@@ -1198,6 +1293,9 @@ avtMapper::SetSurfaceRepresentation(int rep)
{
for (int i = 0 ; i < nMappers ; i++)
{
if (mapperType[i] != DEFAULT)
continue;
if (actors[i] != NULL)
{
vtkProperty *prop = actors[i]->GetProperty();
......
......@@ -164,6 +164,25 @@ class PLOTTER_API avtMapper : public avtTerminatingDatasetSink
virtual void ReducedDetailModeOn() {; }
virtual bool ReducedDetailModeOff() { return false; }
virtual void SetDrawSurfaces(bool v) {drawSurfaces=v;}
virtual void SetDrawWireframe(bool v) {drawWireframe=v;}
virtual void SetWireframeColorScalars(){wireframeColorByScalar=true;}
virtual void SetWireframeColor(double r,double g, double b)
{
wireframeColor[0]=r;
wireframeColor[1]=g;
wireframeColor[2]=b;
wireframeColorByScalar=false;
}
virtual void SetDrawPoints(bool v) {drawPoints=v;}
virtual void SetPointsColorScalars() {pointsColorByScalar=true;}
virtual void SetPointsColor(double r,double g, double b)
{
pointColor[0]=r;
pointColor[1]=g;
pointColor[2]=b;
pointsColorByScalar=false;
}
protected:
bool immediateMode;
......@@ -172,8 +191,15 @@ class PLOTTER_API avtMapper : public avtTerminatingDatasetSink
avtTransparencyActor *transparencyActor;
int transparencyIndex;
bool drawSurfaces, drawWireframe, drawPoints;
bool wireframeColorByScalar, pointsColorByScalar;
double wireframeColor[3], pointColor[3];
//DRP. Or call DEFAULT SURFACE??
typedef enum {DEFAULT, WIREFRAME, POINT} MapperType;
vtkDataSetMapper **mappers;
int nMappers;
MapperType *mapperType;
vtkActor **actors;
double globalAmbient;
......
......@@ -123,9 +123,11 @@ PseudocolorAttributes::ChangesRequireRecalculation(const PseudocolorAttributes &
needSecondaryVar ||
geometryChange ||
smoothingLevel != obj.smoothingLevel ||
// renderSurfaces != obj.renderSurfaces ||
// renderWireframe != obj.renderWireframe ||
// renderPoints != obj.renderPoints ||
renderSurfaces != obj.renderSurfaces ||
renderWireframe != obj.renderWireframe ||
renderPoints != obj.renderPoints ||
wireframeColor != obj.wireframeColor ||
pointColor != obj.pointColor ||
0);
}
......@@ -316,3 +318,4 @@ PseudocolorAttributes::ProcessOldVersions(DataNode *parentNode,
}
}
}
......@@ -164,7 +164,7 @@
0.125000
</Field>
<Field name="endPointRadiusBBox" label="Radius (BBox Fraction)" type="double" enabler="endPointRadiusSizeType:FractionOfBBox">
0.05000
0.050000
</Field>
<Field name="endPointResolution" label="End point resolution" type="int">
10
......@@ -198,6 +198,18 @@
<Field name="lightingFlag" label="Lighting" type="bool">
true
</Field>
<Field name="wireframeColor" label="wireframeColor" type="color" length="4">
0
0
0
0
</Field>
<Field name="pointColor" label="pointColor" type="color" length="4">
0
0
0
0
</Field>
<Function name="ChangesRequireRecalculation" user="true" member="true">
</Function>
<Function name="Print" user="true" member="true">
......
......@@ -508,6 +508,8 @@ void PseudocolorAttributes::Copy(const PseudocolorAttributes &obj)
smoothingLevel = obj.smoothingLevel;
legendFlag = obj.legendFlag;
lightingFlag = obj.lightingFlag;
wireframeColor = obj.wireframeColor;
pointColor = obj.pointColor;
PseudocolorAttributes::SelectAll();
}
......@@ -534,7 +536,8 @@ const AttributeGroup::private_tmfs_t PseudocolorAttributes::TmfsStruct = {PSEUDO
PseudocolorAttributes::PseudocolorAttributes() :
AttributeSubject(PseudocolorAttributes::TypeMapFormatString),
colorTableName("hot"), pointSizeVar("default")
colorTableName("hot"), pointSizeVar("default"),
wireframeColor(0, 0, 0, 0), pointColor(0, 0, 0, 0)
{
PseudocolorAttributes::Init();
}
......@@ -556,7 +559,8 @@ PseudocolorAttributes::PseudocolorAttributes() :
PseudocolorAttributes::PseudocolorAttributes(private_tmfs_t tmfs) :
AttributeSubject(tmfs.tmfs),
colorTableName("hot"), pointSizeVar("default")
colorTableName("hot"), pointSizeVar("default"),
wireframeColor(0, 0, 0, 0), pointColor(0, 0, 0, 0)
{
PseudocolorAttributes::Init();
}
......@@ -714,7 +718,9 @@ PseudocolorAttributes::operator == (const PseudocolorAttributes &obj) const
(renderPoints == obj.renderPoints) &&
(smoothingLevel == obj.smoothingLevel) &&
(legendFlag == obj.legendFlag) &&
(lightingFlag == obj.lightingFlag));
(lightingFlag == obj.lightingFlag) &&
(wireframeColor == obj.wireframeColor) &&
(pointColor == obj.pointColor));
}
// ****************************************************************************
......@@ -906,6 +912,8 @@ PseudocolorAttributes::SelectAll()
Select(ID_smoothingLevel, (void *)&smoothingLevel);
Select(ID_legendFlag, (void *)&legendFlag);
Select(ID_lightingFlag, (void *)&lightingFlag);
Select(ID_wireframeColor, (void *)&wireframeColor);
Select(ID_pointColor, (void *)&pointColor);
}
///////////////////////////////////////////////////////////////////////////////
......@@ -1226,6 +1234,22 @@ PseudocolorAttributes::CreateNode(DataNode *parentNode, bool completeSave, bool
node->AddNode(new DataNode("lightingFlag", lightingFlag));
}
DataNode *wireframeColorNode = new DataNode("wireframeColor");
if(wireframeColor.CreateNode(wireframeColorNode, completeSave, true))
{
addToParent = true;
node->AddNode(wireframeColorNode);
}
else
delete wireframeColorNode;
DataNode *pointColorNode = new DataNode("pointColor");
if(pointColor.CreateNode(pointColorNode, completeSave, true))
{
addToParent = true;
node->AddNode(pointColorNode);
}
else
delete pointColorNode;
// Add the node to the parent node.
if(addToParent || forceAdd)
......@@ -1498,6 +1522,10 @@ PseudocolorAttributes::SetFromNode(DataNode *parentNode)
SetLegendFlag(node->AsBool());
if((node = searchNode->GetNode("lightingFlag")) != 0)
SetLightingFlag(node->AsBool());
if((node = searchNode->GetNode("wireframeColor")) != 0)
wireframeColor.SetFromNode(node);
if((node = searchNode->GetNode("pointColor")) != 0)
pointColor.SetFromNode(node);
}
///////////////////////////////////////////////////////////////////////////////
......@@ -1840,6 +1868,20 @@ PseudocolorAttributes::SetLightingFlag(bool lightingFlag_)
Select(ID_lightingFlag, (void *)&lightingFlag);
}
void
PseudocolorAttributes::SetWireframeColor(const ColorAttribute &wireframeColor_)
{
wireframeColor = wireframeColor_;
Select(ID_wireframeColor, (void *)&wireframeColor);
}
void
PseudocolorAttributes::SetPointColor(const ColorAttribute &pointColor_)
{
pointColor = pointColor_;
Select(ID_pointColor, (void *)&pointColor);
}
///////////////////////////////////////////////////////////////////////////////
// Get property methods
///////////////////////////////////////////////////////////////////////////////
......@@ -2162,6 +2204,30 @@ PseudocolorAttributes::GetLightingFlag() const
return lightingFlag;
}
const ColorAttribute &
PseudocolorAttributes::GetWireframeColor() const
{
return wireframeColor;
}
ColorAttribute &
PseudocolorAttributes::GetWireframeColor()
{
return wireframeColor;
}
const ColorAttribute &
PseudocolorAttributes::GetPointColor() const
{
return pointColor;
}
ColorAttribute &
PseudocolorAttributes::GetPointColor()
{
return pointColor;
}
///////////////////////////////////////////////////////////////////////////////
// Select property methods
///////////////////////////////////////////////////////////////////////////////
......@@ -2196,6 +2262,18 @@ PseudocolorAttributes::SelectEndPointRadiusVar()
Select(ID_endPointRadiusVar, (void *)&endPointRadiusVar);
}
void
PseudocolorAttributes::SelectWireframeColor()
{
Select(ID_wireframeColor, (void *)&wireframeColor);
}
void
PseudocolorAttributes::SelectPointColor()
{
Select(ID_pointColor, (void *)&pointColor);
}
///////////////////////////////////////////////////////////////////////////////
// Keyframing methods
///////////////////////////////////////////////////////////////////////////////
......@@ -2268,6 +2346,8 @@ PseudocolorAttributes::GetFieldName(int index) const
case ID_smoothingLevel: return "smoothingLevel";
case ID_legendFlag: return "legendFlag";
case ID_lightingFlag: return "lightingFlag";
case ID_wireframeColor: return "wireframeColor";
case ID_pointColor: return "pointColor";
default: return "invalid index";
}
}
......@@ -2340,6 +2420,8 @@ PseudocolorAttributes::GetFieldType(int index) const
case ID_smoothingLevel: return FieldType_int;
case ID_legendFlag: return FieldType_bool;
case ID_lightingFlag: return FieldType_bool;
case ID_wireframeColor: return FieldType_color;
case ID_pointColor: return FieldType_color;
default: return FieldType_unknown;
}
}
......@@ -2412,6 +2494,8 @@ PseudocolorAttributes::GetFieldTypeName(int index) const
case ID_smoothingLevel: return "int";
case ID_legendFlag: return "bool";
case ID_lightingFlag: return "bool";
case ID_wireframeColor: return "color";
case ID_pointColor: return "color";
default: return "invalid index";
}
}
......@@ -2678,6 +2762,16 @@ PseudocolorAttributes::FieldsEqual(int index_, const AttributeGroup *rhs) const
retval = (lightingFlag == obj.lightingFlag);
}
break;
case ID_wireframeColor:
{ // new scope
retval = (wireframeColor == obj.wireframeColor);
}
break;
case ID_pointColor:
{ // new scope
retval = (pointColor == obj.pointColor);
}
break;
default: retval = false;
}
......@@ -2772,9 +2866,11 @@ PseudocolorAttributes::ChangesRequireRecalculation(const PseudocolorAttributes &
needSecondaryVar ||
geometryChange ||
smoothingLevel != obj.smoothingLevel ||
// renderSurfaces != obj.renderSurfaces ||
// renderWireframe != obj.renderWireframe ||
// renderPoints != obj.renderPoints ||
renderSurfaces != obj.renderSurfaces ||
renderWireframe != obj.renderWireframe ||
renderPoints != obj.renderPoints ||
wireframeColor != obj.wireframeColor ||
pointColor != obj.pointColor ||
0);
}
......
This diff is collapsed.
......@@ -40,6 +40,8 @@
#include <ObserverToCallback.h>
#include <stdio.h>
#include <snprintf.h>
#include <ColorAttribute.h>
#include <ColorAttribute.h>
// ****************************************************************************
// Module: PyPseudocolorAttributes
......@@ -390,6 +392,12 @@ PyPseudocolorAttributes_ToString(const PseudocolorAttributes *atts, const char *
else
SNPRINTF(tmpStr, 1000, "%slightingFlag = 0\n", prefix);
str += tmpStr;
const unsigned char *wireframeColor = atts->GetWireframeColor().GetColor();
SNPRINTF(tmpStr, 1000, "%swireframeColor = (%d, %d, %d, %d)\n", prefix, int(wireframeColor[0]), int(wireframeColor[1]), int(wireframeColor[2]), int(wireframeColor[3]));
str += tmpStr;
const unsigned char *pointColor = atts->GetPointColor().GetColor();
SNPRINTF(tmpStr, 1000, "%spointColor = (%d, %d, %d, %d)\n", prefix, int(pointColor[0]), int(pointColor[1]), int(pointColor[2]), int(pointColor[3]));
str += tmpStr;
return str;
}
......@@ -1655,6 +1663,160 @@ PseudocolorAttributes_GetLightingFlag(PyObject *self, PyObject *args)
return retval;
}
/*static*/ PyObject *
PseudocolorAttributes_SetWireframeColor(PyObject *self, PyObject *args)
{
PseudocolorAttributesObject *obj = (PseudocolorAttributesObject *)self;
int c[4];
if(!PyArg_ParseTuple(args, "iiii", &c[0], &c[1], &c[2], &c[3]))
{
c[3] = 255;
if(!PyArg_ParseTuple(args, "iii", &c[0], &c[1], &c[2]))
{
double dr, dg, db, da;
if(PyArg_ParseTuple(args, "dddd", &dr, &dg, &db, &da))
{
c[0] = int(dr);
c[1] = int(dg);
c[2] = int(db);
c[3] = int(da);
}
else if(PyArg_ParseTuple(args, "ddd", &dr, &dg, &db))
{
c[0] = int(dr);
c[1] = int(dg);
c[2] = int(db);
c[3] = 255;
}
else
{
PyObject *tuple = NULL;
if(!PyArg_ParseTuple(args, "O", &tuple))
return NULL;
if(!PyTuple_Check(tuple))
return NULL;
// Make sure that the tuple is the right size.
if(PyTuple_Size(tuple) < 3 || PyTuple_Size(tuple) > 4)
return NULL;
// Make sure that all elements in the tuple are ints.
for(int i = 0; i < PyTuple_Size(tuple); ++i)
{
PyObject *item = PyTuple_GET_ITEM(tuple, i);
if(PyInt_Check(item))
c[i] = int(PyInt_AS_LONG(PyTuple_GET_ITEM(tuple, i)));
else if(PyFloat_Check(item))
c[i] = int(PyFloat_AS_DOUBLE(PyTuple_GET_ITEM(tuple, i)));
else
return NULL;
}
}
}
PyErr_Clear();
}
// Set the wireframeColor in the object.
ColorAttribute ca(c[0], c[1], c[2], c[3]);
obj->data->SetWireframeColor(ca);
Py_INCREF(Py_None);
return Py_None;
}
/*static*/ PyObject *
PseudocolorAttributes_GetWireframeColor(PyObject *self, PyObject *args)
{
PseudocolorAttributesObject *obj = (PseudocolorAttributesObject *)self;
// Allocate a tuple the with enough entries to hold the wireframeColor.
PyObject *retval = PyTuple_New(4);
const unsigned char *wireframeColor = obj->data->GetWireframeColor().GetColor();
PyTuple_SET_ITEM(retval, 0, PyInt_FromLong(long(wireframeColor[0])));
PyTuple_SET_ITEM(retval, 1, PyInt_FromLong(long(wireframeColor[1])));
PyTuple_SET_ITEM(retval, 2, PyInt_FromLong(long(wireframeColor[2])));
PyTuple_SET_ITEM(retval, 3, PyInt_FromLong(long(wireframeColor[3])));
return retval;
}
/*static*/ PyObject *
PseudocolorAttributes_SetPointColor(PyObject *self, PyObject *args)
{
PseudocolorAttributesObject *obj = (PseudocolorAttributesObject *)self;
int c[4];
if(!PyArg_ParseTuple(args, "iiii", &c[0], &c[1], &c[2], &c[3]))
{
c[3] = 255;
if(!PyArg_ParseTuple(args, "iii", &c[0], &c[1], &c[2]))
{
double dr, dg, db, da;
if(PyArg_ParseTuple(args, "dddd", &dr, &dg, &db, &da))
{
c[0] = int(dr);
c[1] = int(dg);
c[2] = int(db);
c[3] = int(da);
}
else if(PyArg_ParseTuple(args, "ddd", &dr, &dg, &db))
{
c[0] = int(dr);
c[1] = int(dg);
c[2] = int(db);
c[3] = 255;
}
else
{
PyObject *tuple = NULL;
if(!PyArg_ParseTuple(args, "O", &tuple))
return NULL;
if(!PyTuple_Check(tuple))
return NULL;
// Make sure that the tuple is the right size.
if(PyTuple_Size(tuple) < 3 || PyTuple_Size(tuple) > 4)
return NULL;
// Make sure that all elements in the tuple are ints.
for(int i = 0; i < PyTuple_Size(tuple); ++i)
{
PyObject *item = PyTuple_GET_ITEM(tuple, i);
if(PyInt_Check(item))
c[i] = int(PyInt_AS_LONG(PyTuple_GET_ITEM(tuple, i)));
else if(PyFloat_Check(item))
c[i] = int(PyFloat_AS_DOUBLE(PyTuple_GET_ITEM(tuple, i)));
else
return NULL;
}
}
}
PyErr_Clear();
}
// Set the pointColor in the object.
ColorAttribute ca(c[0], c[1], c[2], c[3]);
obj->data->SetPointColor(ca);
Py_INCREF(Py_None);
return Py_None;
}
/*static*/ PyObject *
PseudocolorAttributes_GetPointColor(PyObject *self, PyObject *args)
{
PseudocolorAttributesObject *obj = (PseudocolorAttributesObject *)self;
// Allocate a tuple the with enough entries to hold the pointColor.
PyObject *retval = PyTuple_New(4);
const unsigned char *pointColor = obj->data->GetPointColor().GetColor();
PyTuple_SET_ITEM(retval, 0, PyInt_FromLong(long(pointColor[0])));
PyTuple_SET_ITEM(retval, 1, PyInt_FromLong(long(pointColor[1])));
PyTuple_SET_ITEM(retval, 2, PyInt_FromLong(long(pointColor[2])));
PyTuple_SET_ITEM(retval, 3, PyInt_FromLong(long(pointColor[3])));
return retval;
}
PyMethodDef PyPseudocolorAttributes_methods[PSEUDOCOLORATTRIBUTES_NMETH] = {
......@@ -1755,6 +1917,10 @@ PyMethodDef PyPseudocolorAttributes_methods[PSEUDOCOLORATTRIBUTES_NMETH] = {
{"GetLegendFlag", PseudocolorAttributes_GetLegendFlag, METH_VARARGS},
{"SetLightingFlag", PseudocolorAttributes_SetLightingFlag, METH_VARARGS},
{"GetLightingFlag", PseudocolorAttributes_GetLightingFlag, METH_VARARGS},
{"SetWireframeColor", PseudocolorAttributes_SetWireframeColor, METH_VARARGS},
{"GetWireframeColor", PseudocolorAttributes_GetWireframeColor, METH_VARARGS},
{"SetPointColor", PseudocolorAttributes_SetPointColor, METH_VARARGS},
{"GetPointColor", PseudocolorAttributes_GetPointColor, METH_VARARGS},
{NULL, NULL}
};
......@@ -1966,6 +2132,10 @@ PyPseudocolorAttributes_getattr(PyObject *self, char *name)
return PseudocolorAttributes_GetLegendFlag(self, NULL);
if(strcmp(name, "lightingFlag") == 0)
return PseudocolorAttributes_GetLightingFlag(self, NULL);
if(strcmp(name, "wireframeColor") == 0)
return PseudocolorAttributes_GetWireframeColor(self, NULL);
if(strcmp(name, "pointColor") == 0)
return PseudocolorAttributes_GetPointColor(self, NULL);
// Try and handle legacy fields in PseudocolorAttributes
if(strcmp(name, "useColorTableOpacity") == 0)
......@@ -2083,6 +2253,10 @@ PyPseudocolorAttributes_setattr(PyObject *self, char *name, PyObject *args)
obj = PseudocolorAttributes_SetLegendFlag(self, tuple);
else if(strcmp(name, "lightingFlag") == 0)
obj = PseudocolorAttributes_SetLightingFlag(self, tuple);
else if(strcmp(name, "wireframeColor") == 0)
obj = PseudocolorAttributes_SetWireframeColor(self, tuple);
else if(strcmp(name, "pointColor") == 0)
obj = PseudocolorAttributes_SetPointColor(self, tuple);
// Try and handle legacy fields in PseudocolorAttributes
if(obj == NULL)
......
......@@ -44,7 +44,7 @@
//
// Functions exposed to the VisIt module.
//
#define PSEUDOCOLORATTRIBUTES_NMETH 98