Commit 0ac06ff5 authored by whitlocb's avatar whitlocb
Browse files

Merge RC to trunk


git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@3901 18c085ea-50e0-402c-830e-de6fd14e8384
parent 79c7c94b
......@@ -2110,6 +2110,9 @@ class MakeMovie:
# Brad Whitlock, Wed Dec 12 16:15:49 PST 2007
# Turn off animation caching if it is on so saving movies will work.
#
# Brad Whitlock, Wed Apr 16 16:43:03 PDT 2008
# Fixed a problem with finding user-defined movie template work files.
#
###########################################################################
def GenerateFrames(self):
......@@ -2242,7 +2245,11 @@ class MakeMovie:
print tFile
fileFound = 0
for name in (tFile, prefix + "movietemplates" + self.slash + tFile):
tmpPY = os.path.abspath(name)
if (sys.platform != "win32") and string.find(name, "~") != -1:
name2 = string.replace(name, "~", os.getenv("HOME"))
else
name2 = name
tmpPY = os.path.abspath(name2)
# Try and stat the tmpPY file.
try:
s = os.stat(tmpPY)
......
......@@ -10,15 +10,21 @@
# Creation: Thu Nov 16 11:46:31 PDT 2006
#
# Modifications:
# Brad Whitlock, Wed Apr 16 16:44:26 PDT 2008
# Add the current time to the movie template so we eventually know all of
# the times.
#
###############################################################################
def Sequence1Frames_set_timeslider(i, cbdata):
ts = cbdata
ts = cbdata[0]
ret = SetTimeSliderState(i)
Query("Time")
time = GetQueryOutputValue()
ts.text = "Time = %1.5f" % time
# Add the time to the movie template
cmt = cbdata[1]
cmt.databaseTimes = cmt.databaseTimes + [time]
return ret
###############################################################################
......@@ -33,6 +39,8 @@ def Sequence1Frames_set_timeslider(i, cbdata):
# Creation: Thu Nov 16 11:46:31 PDT 2006
#
# Modifications:
# Brad Whitlock, Wed Apr 16 16:45:24 PDT 2008
# Changed calculation of t so that it can be non-uniform.
#
###############################################################################
......@@ -42,7 +50,9 @@ def Sequence2Frames_clip_cb(i, cbdata):
xmin = cbdata[2]
xmax = cbdata[3]
vc = cbdata[4]
t = float(i) / float(nts-1)
allTimes = cbdata[5]
dT = allTimes[-1] - allTimes[0]
t = (allTimes[i] - allTimes[0]) / dT
newX = t * (xmax - xmin) + xmin
clip.plane1Origin = (newX, 0, 0)
ret = SetOperatorOptions(clip)
......@@ -60,12 +70,15 @@ def Sequence2Frames_clip_cb(i, cbdata):
# Creation: Thu Nov 16 11:46:31 PDT 2006
#
# Modifications:
# Brad Whitlock, Wed Apr 16 16:45:49 PDT 2008
# Added databaseTimes member.
#
###############################################################################
class OverlayCurveMovieTemplate(VisItMovieTemplate):
def __init__(self, mm, tr):
VisItMovieTemplate.__init__(self, mm, tr)
self.databaseTimes = []
def __del__(self):
VisItMovieTemplate.__del__(self)
......@@ -80,6 +93,8 @@ class OverlayCurveMovieTemplate(VisItMovieTemplate):
# Creation: Thu Nov 16 11:46:31 PDT 2006
#
# Modifications:
# Brad Whitlock, Wed Apr 16 16:46:27 PDT 2008
# Pass self to the sequence1 callback.
#
###########################################################################
......@@ -141,7 +156,7 @@ class OverlayCurveMovieTemplate(VisItMovieTemplate):
title.fontBold = 1
# Save the frames.
cb_data = (TimeSliderGetNStates(), Sequence1Frames_set_timeslider, ts)
cb_data = (TimeSliderGetNStates(), Sequence1Frames_set_timeslider, (ts, self))
ret = self.IterateCallbackAndSaveFrames(cb_data, "seq1", formats, percents, "Generating sequence 1 frames")
DeleteAllPlots()
......@@ -162,6 +177,8 @@ class OverlayCurveMovieTemplate(VisItMovieTemplate):
# Creation: Thu Nov 16 11:46:31 PDT 2006
#
# Modifications:
# Brad Whitlock, Wed Apr 16 16:47:11 PDT 2008
# Pass the databaseTimes to the sequence 2 callback.
#
###########################################################################
......@@ -221,12 +238,15 @@ class OverlayCurveMovieTemplate(VisItMovieTemplate):
# Save the frames. This will be done by some other thing so the
# will have the viewport names worked in.
cb_data = (nts, Sequence2Frames_clip_cb, (nts, clip, extents[0], extents[1], vc))
cb_data = (nts, Sequence2Frames_clip_cb, (nts, clip, extents[0], extents[1], vc, self.databaseTimes))
ret = self.IterateCallbackAndSaveFrames(cb_data, "seq2", formats, percents, "Generating sequence 2 frames")
title.Delete()
DeleteAllPlots()
# Reset the database times
self.databaseTimes = []
self.Debug(1, "OverlayCurveMovieTemplate.Sequence2Frames: end")
return (ret, "seq2", GetAnnotationAttributes().backgroundColor)
......
This diff is collapsed.
......@@ -59,6 +59,8 @@
#if defined(_WIN32)
#include <windows.h>
#include <direct.h>
#include <shlobj.h>
#include <shlwapi.h>
#elif defined(__APPLE__) && ( MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_2 )
#include <mach-o/dyld.h>
#include <dirent.h>
......@@ -627,9 +629,9 @@ PluginManager::ReadPluginInfo()
case Viewer: str = string("libV") + filename.substr(4); break;
case MDServer: str = string("libM") + filename.substr(4); break;
case Engine: str = string("libE") +
filename.substr(4, filename.length() - 4 - ext.size())
+ (parallel ? string("_par") : string("_ser"))
+ ext;
filename.substr(4, filename.length() - 4 - ext.size())
+ (parallel ? string("_par") : string("_ser"))
+ ext;
break;
}
bool match = false;
......@@ -651,8 +653,8 @@ PluginManager::ReadPluginInfo()
if (filename == alreadyLoaded[j])
{
debug1 << "Skipping plugin " << filename << " in " << dirname
<< ", since a plugin by that name was already loaded from "
<< alreadyLoadedDir[j] << endl;
<< ", since a plugin by that name was already loaded "
<< "from " << alreadyLoadedDir[j] << endl;
continue;
}
}
......@@ -709,7 +711,7 @@ PluginManager::ReadPluginInfo()
managerName.size() - ext.size();
string pluginPrefix(pluginFile.substr(slashPos + 5, len));
string pluginlib(pluginFile.substr(slashPos + 1,
pluginFile.size() - (slashPos+1)));
pluginFile.size() - (slashPos+1)));
pluginInitErrors += string(" the ")+pluginPrefix+
" plugin in the directory "+dirname+"\n";
......@@ -1430,10 +1432,26 @@ PluginManager::SetPluginDir(const char *PluginDir)
// list already, this isn't a problem.
if (pluginDirs.empty())
{
debug5 << "No environment variable!" << endl;
debug4 << "No environment variable!" << endl;
#if defined(_WIN32)
plugindir = "C:\\VisItWindows\\bin";
#else
char *tmp = new char[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL,
SHGFP_TYPE_CURRENT, tmp)))
{
PathAppend(tmp, "LLNL");
PathAppend(tmp, "VisIt");
pluginDirs.push_back(string(tmp) + SLASH_STRING +
managerName + "s");
delete [] tmp;
return;
}
else
{
delete [] tmp;
EXCEPTION1(VisItException,
"The path to AppData variable could not be found.");
}
#else
EXCEPTION1(VisItException,
"The environment variable VISITPLUGINDIR must be defined.");
#endif
......@@ -1453,9 +1471,6 @@ PluginManager::SetPluginDir(const char *PluginDir)
plugindir = PluginDir;
}
#if defined(_WIN32)
pluginDirs.push_back(string(plugindir) + SLASH_STRING + managerName + "s");
#else
const char *c = plugindir;
while (*c)
{
......@@ -1467,13 +1482,12 @@ PluginManager::SetPluginDir(const char *PluginDir)
}
if (!dir.empty())
{
pluginDirs.push_back(string(dir) + SLASH_STRING + managerName + "s");
pluginDirs.push_back(string(dir) + SLASH_STRING + managerName + "s");
}
dir = "";
if (*c)
c++;
}
#endif
}
// ****************************************************************************
......@@ -1656,12 +1670,12 @@ PluginManager::PluginSymbol(const string &symbol, bool noError)
int len = openPlugin.size() - slashPos - suffixLen - 5 -
managerName.size() - ext.size();
string pluginPrefix(openPlugin.substr(slashPos + 5, len));
debug4 << "PluginSymbol: prefix: " << pluginPrefix << endl;
// debug4 << "PluginSymbol: prefix: " << pluginPrefix << endl;
if(pluginVersion)
symbolName = string(pluginPrefix + symbol);
else
symbolName = string(pluginPrefix + "_" + symbol);
debug4 << "PluginSymbol: sym: " << symbolName << endl;
// debug4 << "PluginSymbol: sym: " << symbolName << endl;
}
retval = dlsym(handle, symbolName.c_str());
......
This diff is collapsed.
......@@ -58,11 +58,15 @@
// Programmer: Brad Whitlock
// Creation: Tue Aug 30 16:08:44 PST 2005
//
// Modifications:
// Brad Whitlock, Tue Apr 15 10:20:10 PDT 2008
// Added methods that help us inspect the file contents.
//
// ****************************************************************************
class avtCGNSFileFormat : public avtMTMDFileFormat
{
public:
public:
avtCGNSFileFormat(const char *);
virtual ~avtCGNSFileFormat();
......@@ -79,7 +83,7 @@ class avtCGNSFileFormat : public avtMTMDFileFormat
// If you know the times and cycle numbers, overload this function.
// Otherwise, VisIt will make up some reasonable ones for you.
//
// virtual void GetCycles(std::vector<int> &);
virtual void GetCycles(std::vector<int> &);
virtual void GetTimes(std::vector<double> &);
virtual int GetNTimesteps(void);
......@@ -91,25 +95,76 @@ class avtCGNSFileFormat : public avtMTMDFileFormat
virtual vtkDataArray *GetVar(int, int, const char *);
virtual vtkDataArray *GetVectorVar(int, int, const char *);
protected:
protected:
struct VarInfo
{
intVector zoneList; // The zones that contain the variable
int cellCentering;
int nodeCentering;
int badCentering;
bool hasUnits;
std::string units;
};
typedef std::map<std::string, VarInfo> StringVarInfoMap;
struct BaseInformation
{
std::string name;
int cellDim;
int physicalDim;
int meshType;
stringVector zoneNames;
StringVarInfoMap vars;
};
typedef std::vector<BaseInformation> BaseInformationVector;
struct BaseAndZoneList
{
int base;
intVector zones;
};
int GetFileHandle();
void ReadTimes();
bool GetCoords(int base, int zone, const int *zsize,
bool structured, float **coords,
int *ncoords);
void AddReferenceStateExpressions(avtDatabaseMetaData *md,
int base, int nBases, const std::string &baseName,
const std::string &meshName);
void AddVectorExpressions(avtDatabaseMetaData *md,
bool *haveVelocity, bool *haveMomentum, int nBases,
const std::string &baseName);
void AddVectorExpression(avtDatabaseMetaData *md,
bool *haveComponent, int nBases,
const std::string &baseName,
const std::string &vecName);
bool GetVariablesForBase(int base, BaseInformation &baseInfo);
bool BaseContainsUnits(int base);
vtkDataSet * GetCurvilinearMesh(int, int, const char *,
const int *);
vtkDataSet * GetUnstructuredMesh(int, int, const char *,
const int *);
int fn;
bool timesRead;
doubleVector times;
std::map<std::string, intVector> MeshDomainMapping;
void PrintVarInfo(ostream &out, const VarInfo &var, const char *indent);
void PrintStringVarInfoMap(ostream &out, const StringVarInfoMap &vars, const char *indent);
void PrintBaseInformation(ostream &out, const BaseInformation &baseInfo);
char *cgnsFileName;
int fn;
bool timesRead;
bool cgnsCyclesAccurate;
bool cgnsTimesAccurate;
doubleVector times;
intVector cycles;
std::map<std::string, BaseAndZoneList> MeshDomainMapping;
std::map<std::string, int> BaseNameToIndices;
std::map<std::string, std::string> VisItNameToCGNSName;
virtual void PopulateDatabaseMetaData(avtDatabaseMetaData *, int);
};
#endif
......@@ -50,6 +50,7 @@
<li>Akira Haddox</li>
<li>Randy Hudson</li>
<li>Walter Herrera Jimenez</li>
<li>Maxim Loginov</li>
<li>Rob Managan</li>
<li>Paul Selby</li>
<li>Cristina Siegerist</li>
......
......@@ -20,10 +20,9 @@ enhancements and bug-fixes that were added to this release.</p>
by the patch release can be found in the <a href="relnotes1.8.1.html">VisIt 1.8.1 release notes</a>.
All version 1.8.1 fixes are included in this release.</li>
<li>A VisIt wiki site has been set up at <a href="http://www.visitusers.org">www.visitusers.org</a>. The wiki contains contributed
<a href="http://www.visitusers.org/index.php?title=User_Documentation">user documentation</a> and
<a href="http://www.visitusers.org/index.php?title=Developer_Documentation">developer documentation</a>
for VisIt. Add to it today! The site also offers a <a href="http://visitusers.org/yabb/YaBB.pl">user forum</a>.</li>
<li>A VisIt wiki site has been set up at http://www.visitusers.org. The wiki contains contributed
user documentation and developer documentation for VisIt. Add to it today! The site also offers a
user forum.</li>
<li>The release notes have been reorganized so that users can more easily find the changes that interest them.
<ul>
......@@ -134,14 +133,6 @@ enhancements and bug-fixes that were added to this release.</p>
useful for powerwalls and other demonstration modes where the interface and
visualizations will run on different monitors.</li>
<li>VisIt supports more general forms of subsetting with subsets defined via enumerated
scalar variables. When a database defines a scalar variable as an <i>enumerated</i>
scalar, the enumerationed pieces will appear in VisIt's subset controls window. Previously,
these subsets would be defined by variable value only. Now, they may be defined by
variable ranges, by bit-masks or by <i>bi-nomial combinations</i>. In addition,
the enumerated pieces can be arranged hierarchically as in a part assembly. A common
use of this feature is to define nodesets.
<li>VisIt now has custom settings files for the LBNL Applied Numerical Algorithms group
and its collaborators. These files are located in &lt;VISITINSTALLDIR&gt;/1.9.0/.visit and
are named visit-config-anag, visit-guiconfig-anag, and visit-visitrc-anag. To enable these
......@@ -160,7 +151,7 @@ enhancements and bug-fixes that were added to this release.</p>
<a name="File_format"></a>
<p><b><font size="4">File format reader changes in version 1.9.0</font></b></p>
<ul>
<li>VisIt now has an <a href="http://www.xdmf.org/index.php/Main_Page">XDMF</a> reader. The file must end with a ".xmf" extension to be recognized as an XDMF file.<br>
<li>VisIt now has an XDMF reader (see http://www.xdmf.org/index.php/Main_Page). The file must end with a ".xmf" extension to be recognized as an XDMF file.<br>
Supported features:
<ul>
<li>It supports all the grid types, except for the <i>Subset</i> grid type.</li>
......@@ -212,6 +203,10 @@ enhancements and bug-fixes that were added to this release.</p>
<li>SAMRAI file format now correctly ghosts material data.</li>
<li>The CGNS reader was enhanced so it can read data from multiple bases.</li>
<li>The CGNS reader now correctly handles reading time varying data, including getting time and iteration values from the BaseIterative node.</li>
<li>The Chombo reader was enhanced with<br>
<ul>
<li>Support for node centered Chombo files.</li>
......@@ -315,8 +310,6 @@ enhancements and bug-fixes that were added to this release.</p>
<li>A bug was fixed where variables from the array_decompose expression could not be plotted.</li>
<li>There is a new, bitwise, binary and operator '&'</li>
<li>The <i>zonetype(mesh)</i> expression now creates a scalar variable that will plot
single characters for the zone type (e.g. 'H'=Hex, 'Q'=Quad, 'T'=Tet, etc.)</li>
......@@ -498,14 +491,6 @@ enhancements and bug-fixes that were added to this release.</p>
changed to exercise all hook scripts before existing the meta script. All variables
associated with hook scripts were moved to a new hooks_var.sh script.</li>
<li>A shell script tool, <i>regen-ajp</i>, was added to the bin directory to
help in regenerating attribute and, where appropriate, java and python code
upon regular changes to the source .xml file.</li>
<li>The xml2<i>whatever</i> tools no longer overwrite header files when they have
not changed. This helps prevent lengthening compiles when changing only .code
portions of attributes.</li>
<li>avtDataBaseMetaData has a new field suggestedDefaultSILRestriction
that allows a database plugin to suggest a default SIL restriction for
plots. This field is a stringVector, where each string is considered as
......@@ -527,6 +512,8 @@ enhancements and bug-fixes that were added to this release.</p>
the initially visible windows are created from the system guiconfig
file. (This is to enable posting windows such as the "Macros" windows in
a default system guiconfig file.)
<li>The viewer debug logs now include truncated output from xdpyinfo and glxinfo.</li>
</ul>
<p>Click the following link to view the release notes for the 1.8.1 patch version
......
This diff is collapsed.
This diff is collapsed.
......@@ -167,12 +167,26 @@ std::string java_copyright_str =
#include "GenerateJava.h"
#endif
#ifdef GENERATE_PROJECTFILE
#include "GenerateProjectFile.h"
bool generateVersion7Projects = true;
#ifdef _WIN32
bool buildforvisitsource = false;
QString fullVisItDir = "";
QString fullCurrentDir = "";
QString privatePluginDir = "";
#endif
#include "GenerateProjectFile.h"
#endif
#include "XMLParser.h"
// ***************************************************************************
// Function: PrintUsage
//
// Modifications:
// Kathleen Bonnell, Thu Apr 17 09:55:07 PDT 2008
// Remove -version6 (no longer supported), add -version8.
//
// ***************************************************************************
void
PrintUsage(const char *prog)
{
......@@ -180,10 +194,17 @@ PrintUsage(const char *prog)
cerr << " options:" << endl;
cerr << " -clobber overwrite old files if possible" << endl;
cerr << " -noprint no debug output" << endl;
cerr << " -public (xml2makefile only) install publicly" << endl;
cerr << " -private (xml2makefile only) install privately" << endl;
cerr << " -version6 (xml2projectfile only) make MSVC 6.0 projects" << endl;
cerr << " -version7 (xml2projectfile only) make MSVC .Net 2003 projects (default)" << endl;
cerr << " -public (xml2makefile only) install publicly"
<< endl;
cerr << " -private (xml2makefile only) install privately"
<< endl;
cerr << " -outputtoinputdir store results in same location as "
<< ".xml file" << endl;
cerr << " -version7 (xml2projectfile only) make MSVC .Net "
<< "2003 projects (default)" << endl;
cerr << " -version8 (xml2projectfile only) COMING SOON "
<< "make MSVC 2005 projects " << endl;
#endif
}
class ErrorHandler : public QXmlErrorHandler
......@@ -258,7 +279,8 @@ Open(ofstream &file, const QString &name_withoutpath)
}
if (alreadyexists || !file)
{
cerr << "Warning: Could not create file '"<<name<<"' for writing." << endl;
cerr << "Warning: Could not create file '" << name
<< "' for writing." << endl;
if (!clobber)
{
cerr << "Info: If you wish to overwrite file '"<<name<<"'," << endl;
......@@ -451,6 +473,9 @@ void ProcessFile(QString file);
// Added -outputtoinputdir.
// Check for any nonexistent files before starting the processing.
//
// Kathleen Bonnell, Thu Apr 17 09:55:07 PDT 2008
// Remove -version6 (no longer supported), add -version8 (coming soon).
//
// ****************************************************************************
int main(int argc, char *argv[])
......@@ -496,22 +521,24 @@ int main(int argc, char *argv[])
i--;
}
#ifdef GENERATE_PROJECTFILE
else if (strcmp(argv[i], "-version6") == 0)
else if (strcmp(argv[i], "-version7") == 0)
{
generateVersion7Projects = false;
generateVersion7Projects = true;
argc--;
for (int j=i; j<argc; j++)
argv[j] = argv[j+1];
i--;
}
else if (strcmp(argv[i], "-version7") == 0)
#if 0
else if (strcmp(argv[i], "-version8") == 0)
{
generateVersion7Projects = true;
generateVersion7Projects = false;
argc--;
for (int j=i; j<argc; j++)
argv[j] = argv[j+1];
i--;
}
#endif
#endif
else if (strcmp(argv[i], "-outputtoinputdir") == 0)
{
......@@ -560,6 +587,10 @@ int main(int argc, char *argv[])
// Mark C. Miller, Mon Apr 14 15:41:21 PDT 2008
// Made it re-write header file only when header file has changed
//
// Kathleen Bonnell, Thu Apr 17 09:55:07 PDT 2008
// Added code to retrieve the full path for this executable when
// generating project files on windows.
//
// ****************************************************************************
void
ProcessFile(QString file)
......@@ -586,7 +617,9 @@ ProcessFile(QString file)
QXmlSimpleReader reader;
ErrorHandler errorhandler;
reader.setFeature("http://trolltech.com/xml/features/report-whitespace-only-CharData", false);
reader.setFeature(
"http://trolltech.com/xml/features/report-whitespace-only-CharData",
false);
reader.setContentHandler(&parser);
reader.setErrorHandler(&errorhandler);
reader.parse(source);
......@@ -623,9 +656,11 @@ ProcessFile(QString file)
if (print)
{
cout << "-----------------------------------------------------------------" << endl;
cout << "--------------------------------------------------------------"
<< "---" << endl;
cout << " Parsed document of type " << docType << endl;
cout << "-----------------------------------------------------------------" << endl;
cout << "--------------------------------------------------------------"
<< "---" << endl;
cout << endl;
}
......@@ -948,6 +983,23 @@ ProcessFile(QString file)
#ifdef GENERATE_PROJECTFILE
if (docType == "Plugin")
{
#ifdef _WIN32
// find full path to this executable
fullVisItDir = "";
char *tmp = new char[MAX_PATH];
if (GetModuleFileName(NULL, tmp, 100) != 0)
{
fullVisItDir = tmp;
int lastslash = fullVisItDir.findRev("\\");
if (lastslash >= 0)
fullVisItDir = fullVisItDir.left(lastslash+1);
}
// find full path to file
if (GetFullPathName(file, 100, tmp, NULL) > 0)
{
fullCurrentDir = tmp;
}
#endif
// project file writer mode
plugin->WriteProjectFiles(Open, generateVersion7Projects);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment