Commit da65a6d8 authored by hrchilds's avatar hrchilds

Update from July 16, 2003

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@35 18c085ea-50e0-402c-830e-de6fd14e8384
parent 491400b0
......@@ -64,6 +64,7 @@ avtDataAttributes::avtDataAttributes()
cumulativeCurrentSpatial = NULL;
currentData = NULL;
cumulativeCurrentData = NULL;
canUseCummulativeAsTrueOrCurrent = false;
centering = AVT_UNKNOWN_CENT;
cellOrigin = 0;
......@@ -260,6 +261,7 @@ avtDataAttributes::Copy(const avtDataAttributes &di)
*(effectiveData) = *(di.effectiveData);
*(currentData) = *(di.currentData);
*(cumulativeCurrentData) = *(di.cumulativeCurrentData);
canUseCummulativeAsTrueOrCurrent = di.canUseCummulativeAsTrueOrCurrent;
labels = di.labels;
varname = di.varname;
......@@ -387,6 +389,7 @@ avtDataAttributes::Merge(const avtDataAttributes &da)
effectiveData->Merge(*(da.effectiveData));
currentData->Merge(*(da.currentData));
cumulativeCurrentData->Merge(*(da.cumulativeCurrentData));
canUseCummulativeAsTrueOrCurrent &= da.canUseCummulativeAsTrueOrCurrent;
MergeLabels(da.labels);
MergeTransform(da.transform);
......@@ -425,13 +428,12 @@ avtDataAttributes::GetSpatialExtents(double *buff)
return true;
}
#ifndef PARALLEL
if (cumulativeTrueSpatial->HasExtents())
if (canUseCummulativeAsTrueOrCurrent &&
cumulativeTrueSpatial->HasExtents())
{
cumulativeTrueSpatial->CopyTo(buff);
return true;
}
#endif
return false;
}
......@@ -468,13 +470,12 @@ avtDataAttributes::GetDataExtents(double *buff)
return true;
}
#ifndef PARALLEL
if (cumulativeTrueData->HasExtents())
if (canUseCummulativeAsTrueOrCurrent &&
cumulativeTrueData->HasExtents())
{
cumulativeTrueData->CopyTo(buff);
return true;
}
#endif
return false;
}
......@@ -780,7 +781,7 @@ void
avtDataAttributes::Write(avtDataObjectString &str,
const avtDataObjectWriter *wrtr)
{
const int numVals = 12;
const int numVals = 13;
int vals[numVals];
vals[0] = topologicalDimension;
vals[1] = spatialDimension;
......@@ -794,6 +795,7 @@ avtDataAttributes::Write(avtDataObjectString &str,
vals[9] = (int) containsGhostZones;
vals[10] = (containsOriginalCells ? 1 : 0);
vals[11] = (canUseTransform ? 1 : 0);
vals[12] = (canUseCummulativeAsTrueOrCurrent ? 1 : 0);
wrtr->WriteInt(str, vals, numVals);
wrtr->WriteDouble(str, dtime);
......@@ -925,6 +927,10 @@ avtDataAttributes::Read(char *input)
input += sizeof(int); size += sizeof(int);
canUseTransform = (tmp != 0 ? true : false);
memcpy(&tmp, input, sizeof(int));
input += sizeof(int); size += sizeof(int);
canUseCummulativeAsTrueOrCurrent = (tmp != 0 ? true : false);
memcpy(&dtmp, input, sizeof(double));
input += sizeof(double); size += sizeof(double);
dtime = dtmp;
......@@ -1177,13 +1183,12 @@ avtDataAttributes::GetCurrentDataExtents(double *buff)
return true;
}
#ifndef PARALLEL
if (cumulativeCurrentData->HasExtents())
if (canUseCummulativeAsTrueOrCurrent &&
cumulativeCurrentData->HasExtents())
{
cumulativeCurrentData->CopyTo(buff);
return true;
}
#endif
return false;
}
......@@ -1215,13 +1220,12 @@ avtDataAttributes::GetCurrentSpatialExtents(double *buff)
return true;
}
#ifndef PARALLEL
if (cumulativeCurrentSpatial->HasExtents())
if (canUseCummulativeAsTrueOrCurrent &&
cumulativeCurrentSpatial->HasExtents())
{
cumulativeCurrentSpatial->CopyTo(buff);
return true;
}
#endif
return false;
}
......
......@@ -30,9 +30,28 @@ class avtExtents;
// True...Extents: The extents from the original dataset. However
// these extents may be transformed etc. These are,
// for the most part, display extents.
//
// The 'true' extents are the extents of the dataset
// regardless of its parallel decomposotion, if any.
// That is, upon syncronization of parallel processes,
// all processors should be forced to agree on the true
// extents.
//
// In theory the 'true' extents are the extents of the
// dataset regardless of whether only some of it has been
// read in. However, for databases that don't support
// the auxiliary extents data, it would be necessary to
// read data that wasn't needed in a pipeline just to
// get the 'true' extents set right. So we don't do that.
//
// Current...Extents: The extents at the bottom of the pipeline for what
// is really there. Used for re-mapping the color to
// what actually exists in what is being rendered, etc.
//
// The 'current' extents are the extents of what is left,
// sort of, after various operations, which may have reduced
// the data, such as thresholding, slicing, etc.
//
// Effective...Extents: Like the current extents, but sometimes maintained
// in the middle of a pipeline. They are used for
// things like resampling onto an area smaller than
......@@ -43,6 +62,12 @@ class avtExtents;
// Then we can take all of the pieces and unify them.
// This is where the pieces are stored.
//
// The cummulative variants are used as places to store
// extents information on a per-processor basis *before*
// that information is merged and unified across all
// processors. Think of the cummulative variants as
// "what this processor has seen so far."
//
// Programmer: Hank Childs
// Creation: March 24, 2001
//
......@@ -69,6 +94,9 @@ class avtExtents;
//
// Kathleen Bonnell, Thu Apr 10 10:29:29 PDT 2003
// Added transform and Set/Get/Merge/Read/Write/Copy methods.
//
// Mark C. Miller, 15Jul03
// Added Set/GetCanUseCummulativeAsTrueOrCurrent
//
// ****************************************************************************
......@@ -116,7 +144,10 @@ class PIPELINE_API avtDataAttributes
{ return cumulativeCurrentSpatial; };
avtExtents *GetCumulativeCurrentDataExtents(void)
{ return cumulativeCurrentData; };
void SetCanUseCummulativeAsTrueOrCurrent(bool canUse)
{ canUseCummulativeAsTrueOrCurrent = canUse; }
bool GetCanUseCummulativeAsTrueOrCurrent(void)
{ return canUseCummulativeAsTrueOrCurrent; }
void SetTopologicalDimension(int);
int GetTopologicalDimension(void) const
......@@ -205,6 +236,7 @@ class PIPELINE_API avtDataAttributes
avtExtents *effectiveData;
avtExtents *currentData;
avtExtents *cumulativeCurrentData;
bool canUseCummulativeAsTrueOrCurrent;
avtMatrix *transform;
bool canUseTransform;
......
......@@ -233,6 +233,9 @@ avtDataObjectInformation::ParallelMerge(const avtDataObjectWriter_p dobw)
// override data object information of the writer's output avtDataObject
Copy(reducedDobInfo);
// indicate that it is ok to use cummulative true extents as true extents;
GetAttributes().SetCanUseCummulativeAsTrueOrCurrent(true);
// cleanup
MPI_Type_free(&mpiTypeDobStr);
......
This diff is collapsed.
......@@ -10,6 +10,8 @@
#include <vector>
#include <string>
class vtkDataSet;
// ****************************************************************************
// Class: avtCosmosFileFormat
//
......@@ -25,6 +27,10 @@
// Added data and functions to read and store the compact mesh
// structure information.
//
// Akira Haddox, Mon Jun 16 12:33:50 PDT 2003
// Added in 2D spherical, cylindrical, XZ and YZ cartesian support.
// Added in support for reading in ghostzones.
//
// ****************************************************************************
class avtCosmosFileFormat : public avtMTMDFileFormat
......@@ -45,8 +51,34 @@ class avtCosmosFileFormat : public avtMTMDFileFormat
virtual void PopulateDatabaseMetaData(avtDatabaseMetaData *);
protected:
enum CoordinateType
{ cartesian, spherical, cylindrical };
void ReadMesh(int domain);
void ReadMeshInfo(int domain);
vtkDataSet * CalculateMesh3DCartesian(double start[3],
double delta[3], int ptDim[3]);
vtkDataSet * CalculateMesh3DSpherical(double start[3],
double delta[3], int ptDim[3]);
vtkDataSet * CalculateMesh2DCartesian(double start[3],
double delta[3], int ptDim[3]);
vtkDataSet * CalculateMesh2DSpherical(double start[3],
double delta[3], int ptDim[3]);
vtkDataSet * CalculateMesh2DCylindrical(double start[3],
double delta[3], int ptDim[3]);
void FillVectorVar3DCartesian(float *ptr, float *values[3], int);
void FillVectorVar3DSpherical(float *ptr, float *values[3],
double start[3], double delta[3],
int dims[3]);
void FillVectorVar2DCartesian(float *ptr, float *values[3], int);
void FillVectorVar2DSpherical(float *ptr, float *values[3],
double start[3], double delta[3]);
void FillVectorVar2DCylindrical(float *ptr, float *values[3],
double start[3], double delta[3]);
vtkDataSet **meshes;
......@@ -57,8 +89,9 @@ class avtCosmosFileFormat : public avtMTMDFileFormat
int ntimesteps;
int nscalars;
int nvectors;
int npoints;
int dimensions[3];
int dropDimension;
CoordinateType coordType;
//
// Index by domain
......@@ -67,10 +100,15 @@ class avtCosmosFileFormat : public avtMTMDFileFormat
std::vector<std::vector<double> > meshInfo;
std::vector<bool> meshInfoLoaded;
bool sphericalCoordinates;
std::string timeFileName;
//
// Ghost zones are set on certain internal faces. Ordering is by
// domain, then by start(x), end(x), start(y), end(y), start(z), end(z).
//
bool existGhostZones;
std::vector<vector<bool> > ghostSet;
std::vector<std::string> scalarVarNames;
std::vector<std::string> vectorVarNames;
......@@ -89,5 +127,4 @@ class avtCosmosFileFormat : public avtMTMDFileFormat
std::vector<std::vector<TripleString> > vectorFileNames;
};
#endif
......@@ -67,6 +67,7 @@ DataNetwork::GetWriter(avtDataObject_p dob, avtPipelineSpecification_p pspec,
avtDataObjectWriter_p tmpWriter = GetPlot()->Execute(dob, pspec, atts);
if (GetPlot()->CanCacheWriterExternally())
writer = tmpWriter;
// tmpWriter->GetInput()->GetInfo().ParallelMerge(tmpWriter);
return tmpWriter;
}
}
......
......@@ -206,7 +206,6 @@ Engine::SetUpViewerInterface(int *argc, char **argv[])
makePlotRPC = new MakePlotRPC;
useNetworkRPC = new UseNetworkRPC;
updatePlotAttsRPC = new UpdatePlotAttsRPC;
setWindowAttsRPC = new SetWindowAttsRPC;
pickRPC = new PickRPC;
startPickRPC = new StartPickRPC;
executeRPC = new ExecuteRPC;
......@@ -216,6 +215,7 @@ Engine::SetUpViewerInterface(int *argc, char **argv[])
openDatabaseRPC = new OpenDatabaseRPC;
defineVirtualDatabaseRPC = new DefineVirtualDatabaseRPC;
renderRPC = new RenderRPC;
setWinAnnotAttsRPC = new SetWinAnnotAttsRPC;
xfer->Add(quitRPC);
xfer->Add(readRPC);
......@@ -225,7 +225,6 @@ Engine::SetUpViewerInterface(int *argc, char **argv[])
xfer->Add(makePlotRPC);
xfer->Add(useNetworkRPC);
xfer->Add(updatePlotAttsRPC);
xfer->Add(setWindowAttsRPC);
xfer->Add(pickRPC);
xfer->Add(startPickRPC);
xfer->Add(executeRPC);
......@@ -235,6 +234,7 @@ Engine::SetUpViewerInterface(int *argc, char **argv[])
xfer->Add(openDatabaseRPC);
xfer->Add(defineVirtualDatabaseRPC);
xfer->Add(renderRPC);
xfer->Add(setWinAnnotAttsRPC);
// Create an object to implement the RPCs
rpcExecutors.push_back(new RPCExecutor<QuitRPC>(quitRPC));
......@@ -248,7 +248,6 @@ Engine::SetUpViewerInterface(int *argc, char **argv[])
rpcExecutors.push_back(new RPCExecutor<UseNetworkRPC>(useNetworkRPC));
rpcExecutors.push_back(new RPCExecutor<UpdatePlotAttsRPC>(updatePlotAttsRPC));
rpcExecutors.push_back(new RPCExecutor<PrepareUpdatePlotAttsRPC>(&updatePlotAttsRPC->GetPrepareUpdatePlotAttsRPC()));
rpcExecutors.push_back(new RPCExecutor<SetWindowAttsRPC>(setWindowAttsRPC));
rpcExecutors.push_back(new RPCExecutor<PickRPC>(pickRPC));
rpcExecutors.push_back(new RPCExecutor<StartPickRPC>(startPickRPC));
rpcExecutors.push_back(new RPCExecutor<ExecuteRPC>(executeRPC));
......@@ -258,6 +257,7 @@ Engine::SetUpViewerInterface(int *argc, char **argv[])
rpcExecutors.push_back(new RPCExecutor<OpenDatabaseRPC>(openDatabaseRPC));
rpcExecutors.push_back(new RPCExecutor<DefineVirtualDatabaseRPC>(defineVirtualDatabaseRPC));
rpcExecutors.push_back(new RPCExecutor<RenderRPC>(renderRPC));
rpcExecutors.push_back(new RPCExecutor<SetWinAnnotAttsRPC>(setWinAnnotAttsRPC));
//
// Hook up the viewer connections to Xfer
......@@ -817,6 +817,9 @@ Engine::WriteData(NonBlockingRPC *rpc, avtDataObjectWriter_p &writer)
}
visitTimer->StopTimer(collectData, "Collecting data");
// indicate that cumulative extents in data object good as true extents
ui_dob->GetInfo().GetAttributes().SetCanUseCummulativeAsTrueOrCurrent(true);
//
// See if there was an error on another processor.
//
......
......@@ -16,7 +16,7 @@ class ReadRPC;
class ReleaseDataRPC;
class RenderRPC;
class SetFinalVariableNameRPC;
class SetWindowAttsRPC;
class SetWinAnnotAttsRPC;
class StartPickRPC;
class UpdatePlotAttsRPC;
class UseNetworkRPC;
......@@ -130,7 +130,6 @@ class Engine
MakePlotRPC *makePlotRPC;
UseNetworkRPC *useNetworkRPC;
UpdatePlotAttsRPC *updatePlotAttsRPC;
SetWindowAttsRPC *setWindowAttsRPC;
PickRPC *pickRPC;
StartPickRPC *startPickRPC;
ExecuteRPC *executeRPC;
......@@ -140,6 +139,7 @@ class Engine
OpenDatabaseRPC *openDatabaseRPC;
DefineVirtualDatabaseRPC *defineVirtualDatabaseRPC;
RenderRPC *renderRPC;
SetWinAnnotAttsRPC *setWinAnnotAttsRPC;
};
#endif
......@@ -36,7 +36,7 @@
#include <ReleaseDataRPC.h>
#include <RenderRPC.h>
#include <SetFinalVariableNameRPC.h>
#include <SetWindowAttsRPC.h>
#include <SetWinAnnotAttsRPC.h>
#include <StartPickRPC.h>
#include <UpdatePlotAttsRPC.h>
#include <UseNetworkRPC.h>
......@@ -62,8 +62,6 @@ template<>
void
RPCExecutor<QuitRPC>::Execute(QuitRPC *rpc)
{
Engine *engine = Engine::Instance();
NetworkManager *netmgr = engine->GetNetMgr();
debug2 << "Executing QuitRPC" << endl;
if (!rpc->GetQuit())
......@@ -71,6 +69,8 @@ RPCExecutor<QuitRPC>::Execute(QuitRPC *rpc)
else
{
#ifdef DEBUG_MEMORY_LEAKS
Engine *engine = Engine::Instance();
NetworkManager *netmgr = engine->GetNetMgr();
netmgr->ClearAllNetworks();
#endif
rpc->SendReply();
......@@ -584,30 +584,23 @@ RPCExecutor<StartPickRPC>::Execute(StartPickRPC *rpc)
}
// ****************************************************************************
// Method: RPCExecutor<SetWindowAttsRPC>::Execute
// Method: RPCExecutor<SetWinAnnotAttsRPC>::Execute
//
// Purpose:
// Execute a SetWindowAttsRPC.
// Execute a SetWinAnnotAttsRPC.
//
// Programmer: Jeremy Meredith
// Creation: November 8, 2001
//
// Modifications:
// Brad Whitlock, Mon Dec 2 13:46:49 PST 2002
// I added a method call to populate the color tables.
//
// Jeremy Meredith, Thu Jul 10 11:37:48 PDT 2003
// Made the engine an object.
// Programmer: Mark C. Miller
// Creation: 15Jul03
//
// ****************************************************************************
template<>
void
RPCExecutor<SetWindowAttsRPC>::Execute(SetWindowAttsRPC *rpc)
RPCExecutor<SetWinAnnotAttsRPC>::Execute(SetWinAnnotAttsRPC *rpc)
{
Engine *engine = Engine::Instance();
NetworkManager *netmgr = engine->GetNetMgr();
debug2 << "Executing SetWindowAttsRPC "
debug2 << "Executing SetWinAnnotAttsRPC "
<< rpc->GetWindowAtts().GetSize()[0] << "x"
<< rpc->GetWindowAtts().GetSize()[1] << endl;
TRY
......@@ -615,6 +608,7 @@ RPCExecutor<SetWindowAttsRPC>::Execute(SetWindowAttsRPC *rpc)
avtColorTables::Instance()->SetColorTables(rpc->GetWindowAtts().
GetColorTables());
netmgr->SetWindowAttributes(rpc->GetWindowAtts());
netmgr->SetAnnotationAttributes(rpc->GetAnnotationAtts());
rpc->SendReply();
}
CATCH2(VisItException, e)
......
......@@ -22,6 +22,7 @@
#include <avtArccosFilter.h>
#include <avtCosFilter.h>
#include <avtDegreeToRadianFilter.h>
#include <avtExtents.h>
#include <avtGradientFilter.h>
#include <avtMagnitudeFilter.h>
#include <avtNeighborFilter.h>
......@@ -68,6 +69,7 @@
#include <PlotPluginInfo.h>
#ifdef PARALLEL
#include <mpi.h>
#include <parallel.h>
#endif
static double RenderBalance(int numTrianglesIHave);
......@@ -1328,7 +1330,9 @@ NetworkManager::Render(intVector plotIds, bool getZBuffer)
workingNet = NULL;
UseNetwork(plotIds[i]);
DataNetwork *workingNetSaved = workingNet;
avtDataObject_p dob = GetOutput(false)->GetInput();
avtDataObjectWriter_p tmpWriter = GetOutput(false);
avtDataObject_p dob = tmpWriter->GetInput();
dob->GetInfo().ParallelMerge(tmpWriter);
// do the part of the execute we'd do in the viewer
avtActor_p anActor = workingNetSaved->GetPlot()->Execute(NULL, dob);
......@@ -1453,6 +1457,36 @@ NetworkManager::SetWindowAttributes(const WindowAttributes &atts)
windowAttributes = atts;
}
// ****************************************************************************
// Method: NetworkManager::SetAnnotationAttributes
//
// Purpose:
// Set the annotation attributes for the engine's viswin. Note, only
// those annotations that live in a 3D world are rendered on the engine.
// Furthermore, only processor 0 does annotation rendering work.
//
// Programmer: Mark C. Miller
// Creation: 15Jul03
//
// ****************************************************************************
void
NetworkManager::SetAnnotationAttributes(const AnnotationAttributes &atts)
{
#ifdef PARALLEL
if (PAR_Rank())
#endif
{
// copy the attributes and disable all non-3D attributes
AnnotationAttributes newAtts = atts;
newAtts.SetUserInfoFlag(false);
newAtts.SetDatabaseInfoFlag(false);
newAtts.SetLegendInfoFlag(false);
newAtts.SetTriadFlag(false);
viswin->SetAnnotationAtts(&newAtts);
}
annotationAttributes = atts;
}
// ****************************************************************************
// Method: NetworkManager::StartPick
//
......@@ -1692,8 +1726,8 @@ RenderBalance(int numTrianglesIHave)
int rank, size, *triCounts;
balance = -1.0;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
rank = PAR_Rank();
size = PAR_Size();
if (rank == 0)
triCounts = new int [size];
MPI_Gather(&numTrianglesIHave, 1, MPI_INT, triCounts, 1, MPI_INT, 0, MPI_COMM_WORLD);
......
......@@ -3,6 +3,7 @@
#include <avtDataObjectWriter.h>
#include <avtPlot.h>
#include <AnnotationAttributes.h>
#include <WindowAttributes.h>
#include <vectortypes.h>
#include <string>
......@@ -99,6 +100,9 @@ class VisWindow;
// Brad Whitlock, Tue Mar 25 13:43:10 PST 2003
// Added DefineDB.
//
// Mark C. Miller, 15Jul03
// Added method to set annotation attributes
//
// ****************************************************************************
class NetworkManager
......@@ -132,6 +136,7 @@ class NetworkManager
void UpdatePlotAtts(int, const AttributeGroup *);
void SetWindowAttributes(const WindowAttributes&);
void SetAnnotationAttributes(const AnnotationAttributes&);
void SetLoadBalancer(LoadBalancer *lb) {loadBalancer = lb;};
......@@ -157,6 +162,7 @@ class NetworkManager
bool requireOriginalCells;
LoadBalancer *loadBalancer;
WindowAttributes windowAttributes;
AnnotationAttributes annotationAttributes;
VisWindow *viswin;
};
......
......@@ -120,7 +120,6 @@ EngineProxy::SetupComponentRPCs()
xfer.Add(&makePlotRPC);
xfer.Add(&useNetworkRPC);
xfer.Add(&updatePlotAttsRPC);
xfer.Add(&setWindowAttsRPC);
xfer.Add(&pickRPC);
xfer.Add(&startPickRPC);
xfer.Add(&executeRPC);
......@@ -130,6 +129,7 @@ EngineProxy::SetupComponentRPCs()
xfer.Add(&openDatabaseRPC);
xfer.Add(&defineVirtualDatabaseRPC);
xfer.Add(&renderRPC);
xfer.Add(&setWinAnnotAttsRPC);
// Extract some information about the engine from the command line
// arguments that were used to create it.
......@@ -442,27 +442,29 @@ EngineProxy::UpdatePlotAttributes(const string &name, int id,
}
// ****************************************************************************
// Method: EngineProxy::SetWindowAtts
// Method: EngineProxy::SetWinAnnotAtts
//
// Purpose:
// Set up the current window attributes for the engine (for image mode).
// Set up the current window and annotation attributes for the engine.
//
// Arguments:
// atts the current window's attributes
// winAtts the current window's attributes
// annotAtts the current window's annotation attributes
//
// Programmer: Jeremy Meredith
// Creation: November 8, 2001
// Programmer: Mark C. Miller
// Creation: 15Jul03
//
// ****************************************************************************
void
EngineProxy::SetWindowAtts(const WindowAttributes *atts)
EngineProxy::SetWinAnnotAtts(const WindowAttributes *winAtts,
const AnnotationAttributes *annotAtts)
{
setWindowAttsRPC(atts);
if (setWindowAttsRPC.GetStatus() == VisItRPC::error)
setWinAnnotAttsRPC(winAtts,annotAtts);
if (setWinAnnotAttsRPC.GetStatus() == VisItRPC::error)
{
RECONSTITUTE_EXCEPTION(setWindowAttsRPC.GetExceptionType(),
setWindowAttsRPC.GetMessage());
RECONSTITUTE_EXCEPTION(setWinAnnotAttsRPC.GetExceptionType(),
setWinAnnotAttsRPC.GetMessage());
}
}
......
......@@ -20,7 +20,7 @@
#include <QueryRPC.h>
#include <ReleaseDataRPC.h>
#include <SetFinalVariableNameRPC.h>
#include <SetWindowAttsRPC.h>
#include <SetWinAnnotAttsRPC.h>
#include <StartPickRPC.h>
#include <UpdatePlotAttsRPC.h>
#include <UseNetworkRPC.h>
......@@ -196,7 +196,8 @@ public:
PickAttributes &);
void StartPick(const bool, const int);
void SetWindowAtts(const WindowAttributes*);
void SetWinAnnotAtts(const WindowAttributes*,
const AnnotationAttributes*);
avtDataObjectReader_p Render(bool, const intVector&);
avtDataObjectReader_p Execute(bool, void (*waitCB)(void *), void *cbData);
......@@ -228,7 +229,6 @@ private:
MakePlotRPC makePlotRPC;
UseNetworkRPC useNetworkRPC;
UpdatePlotAttsRPC updatePlotAttsRPC;
SetWindowAttsRPC setWindowAttsRPC;
ExecuteRPC executeRPC;
PickRPC pickRPC;
StartPickRPC startPickRPC;
......@@ -238,6 +238,7 @@ private:
OpenDatabaseRPC openDatabaseRPC;
DefineVirtualDatabaseRPC defineVirtualDatabaseRPC;
RenderRPC renderRPC;
SetWinAnnotAttsRPC setWinAnnotAttsRPC;
// For indicating status.
StatusAttributes *statusAtts;
......
......@@ -96,6 +96,9 @@
# Brad Whitlock, Tue Mar 25 13:49:45 PST 2003
# I added DefineVirtualDatabaseRPC.
#
# Mark C. Miller 15Jul03
# Added SetWinAnnotAttsRPC, removed SetWindowAttsRPC
#
###############################################################################
##
......@@ -124,7 +127,7 @@ SRC= \
ReleaseDataRPC.C \
RenderRPC.C \
SetFinalVariableNameRPC.C \
SetWindowAttsRPC.C \
SetWinAnnotAttsRPC.C \
StartPickRPC.C \
UpdatePlotAttsRPC.C \
UseNetworkRPC.C
......
#include "SetWindowAttsRPC.h"
#include "SetWinAnnotAttsRPC.h"
#include <DebugStream.h>
// ****************************************************************************
// Constructor: SetWindowAttsRPC::SetWindowAttsRPC
// Constructor: SetWinAnnotAttsRPC::SetWinAnnotAttsRPC
//
// Purpose:
// This is the constructor.
//
// Arguments:
//
// Programmer: Jeremy Meredith
// Creation: November 7, 2001
// Programmer: Mark C. Miller
// Creation: 15Jul03
//
// ****************************************************************************
SetWindowAttsRPC::SetWindowAttsRPC() : BlockingRPC("a")
SetWinAnnotAttsRPC::SetWinAnnotAttsRPC() : BlockingRPC("aa")
{
}
// ****************************************************************************
// Destructor: SetWindowAttsRPC::~SetWindowAttsRPC
// Destructor: SetWinAnnotAttsRPC::~SetWinAnnotAttsRPC
//
// Purpose:
// This is the destructor.
//
// Arguments:
//
// Programmer: Jeremy Meredith
// Creation: November 7, 2001
// Programmer: Mark C. Miller
// Creation: 15Jul03
//
// ****************************************************************************
SetWindowAttsRPC::~SetWindowAttsRPC()
SetWinAnnotAttsRPC::~SetWinAnnotAttsRPC()
{
}
// ****************************************************************************
// Method: SetWindowAttsRPC::operator()
// Method: SetWinAnnotAttsRPC::operator()
//
// Purpose:
// This is the RPC's invocation method.
//
// Arguments:
// atts the window atts
// winAtts the window atts. may be null if not needed
// annotAtts the annotation attributes. may be null if not needed.
//
// Programmer: Jeremy Meredith
// Creation: November 7, 2001
// Programmer: Mark C. Miller
// Creation: 15Jul03
//
// Modifications:
// ****************************************************************************
void
SetWindowAttsRPC::operator()(const WindowAttributes *atts)
SetWinAnnotAttsRPC::operator()(const WindowAttributes *winAtts,
const AnnotationAttributes *annotAtts)
{
SetWindowAtts(atts);
if (winAtts)
SetWindowAtts(winAtts);
if (annotAtts)
SetAnnotationAtts(annotAtts);
Execute();
if (winAtts || annotAtts)