Commit 27eacfcf authored by bonnell's avatar bonnell

Fix rendering of tickmarks/gridlines in non-screen-captured window saves. Resolves #1676

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@22555 18c085ea-50e0-402c-830e-de6fd14e8384
parent 64cc6e5f
......@@ -1285,6 +1285,10 @@ VisWinRendering::ScreenReadback(bool doViewportOnly, bool doCanvasZBufferToo)
// Brad Whitlock, Tue Sep 27 16:03:21 PDT 2011
// Removed extra call to set pixel data.
//
// Kathleen Biagas, Tue Dec 31 11:14:31 PST 2013
// Temporarily allow foreground to observe rendering start event,
// otherwise our start_render method is never called.
//
// ****************************************************************************
avtImage_p
......@@ -1321,7 +1325,12 @@ VisWinRendering::PostProcessScreenCapture(avtImage_p capturedImage,
renWin->RemoveRenderer(background);
// render (foreground layer only)
// without the background, the StartEvent is no longer observed, and
// our start_render callback will not be called. Temporarily allow
// foreground to observe the Start event.
mediator.AddForegroundStartObserver();
RenderRenderWindow();
mediator.RemoveForegroundStartObserver();
// capture the whole image now
GetCaptureRegion(r0, c0, w, h, false);
......
......@@ -145,6 +145,9 @@
// Jeremy Meredith, Wed May 19 14:15:58 EDT 2010
// Support 3D axis scaling (3D equivalent of full-frame mode).
//
// Kathleen Biagas, Tue Dec 31 11:26:30 PST 2013
// Added Add/RemoveForegroundStartObserver.
//
// ****************************************************************************
class VISWINDOW_API VisWindowColleagueProxy : public VisWindowProtectionProxy
......@@ -267,16 +270,20 @@ class VISWINDOW_API VisWindowColleagueProxy : public VisWindowProtectionProxy
void RecalculateRenderOrder()
{ ProxiedRecalculateRenderOrder(); };
double GetMaxPlotZShift()
double GetMaxPlotZShift()
{ return ProxiedGetMaxPlotZShift(); };
bool IsMakingExternalRenderRequests(void) const
bool IsMakingExternalRenderRequests(void) const
{ return ProxiedIsMakingExternalRenderRequests(); };
double GetAverageExternalRenderingTime(void) const
double GetAverageExternalRenderingTime(void) const
{ return ProxiedGetAverageExternalRenderingTime(); };
void DoNextExternalRenderAsVisualQueue(int w, int h, const double *c)
void DoNextExternalRenderAsVisualQueue(int w, int h, const double *c)
{ ProxiedDoNextExternalRenderAsVisualQueue(w,h,c); };
void AddForegroundStartObserver() const
{ ProxiedAddForegroundStartObserver(); }
void RemoveForegroundStartObserver() const
{ ProxiedRemoveForegroundStartObserver(); }
};
......
......@@ -1190,3 +1190,37 @@ VisWindowProtectionProxy::ProxiedCreateXorGridMapper()
{
return viswin->CreateXorGridMapper();
}
// ****************************************************************************
// Method: VisWindowProtectionProxy::ProxiedAddForegroundStartObserver
//
// Purpose: Allow foreground to observe Start Event.
//
// Programmer: Kathleen Biagas
// Creation: December 31, 2013
//
// ****************************************************************************
void
VisWindowProtectionProxy::ProxiedAddForegroundStartObserver() const
{
viswin->AddForegroundStartObserver();
}
// ****************************************************************************
// Method: VisWindowProtectionProxy::ProxiedRemoveForegroundStartObserver
//
// Purpose: Allow foreground to stop observing Start Event.
//
// Programmer: Kathleen Biagas
// Creation: December 31, 2013
//
// ****************************************************************************
void
VisWindowProtectionProxy::ProxiedRemoveForegroundStartObserver() const
{
viswin->RemoveForegroundStartObserver();
}
......@@ -170,6 +170,9 @@ class VisitInteractor;
// Brad Whitlock, Fri Oct 14 16:28:24 PDT 2011
// Create mappers vis proxy.
//
// Kathleen Biagas, Tue Dec 31 11:26:30 PST 2013
// Added Add/RemoveForegroundStartObserver.
//
// ****************************************************************************
class VISWINDOW_API VisWindowProtectionProxy
......@@ -257,6 +260,9 @@ class VISWINDOW_API VisWindowProtectionProxy
void ProxiedDoNextExternalRenderAsVisualQueue(
int w, int h, const double *c);
void ProxiedAddForegroundStartObserver(void) const;
void ProxiedRemoveForegroundStartObserver(void) const;
};
......
......@@ -7217,3 +7217,58 @@ FontAttributes_To_VisWinTextAttributes(const FontAttributes &f)
return atts;
}
// ****************************************************************************
// Method: VisWindow::AddForegroundStartObserver
//
// Purpose:
// Allow the foreground renderer to observe the rendering Start event.
//
// Note: This is needed when the foreground is the only renderer in
// the window (as in PostProcessScreenCapture).
//
// Programmer: Kathleen Biagas
// Creation: December 31, 2013
//
// Modifications:
//
// ****************************************************************************
void
VisWindow::AddForegroundStartObserver() const
{
vtkRenderer *fg = rendering->GetForeground();
if (fg != NULL)
{
fg->AddObserver(vtkCommand::StartEvent, startRenderCallback);
}
}
// ****************************************************************************
// Method: VisWindow::RemoveForegroundStartObserver
//
// Purpose:
// Stop the foreground renderer from observing the rendering Start event.
//
// Note: Usually, the background renderer observes the event, so when
// the background is available in the render window, we don't
// want the foreground also observing.
//
// Programmer: Kathleen Biagas
// Creation: December 31, 2013
//
// Modifications:
//
// ****************************************************************************
void
VisWindow::RemoveForegroundStartObserver() const
{
vtkRenderer *fg = rendering->GetForeground();
if (fg != NULL)
{
fg->RemoveObserver(startRenderCallback);
}
}
......@@ -443,6 +443,9 @@ class VisitInteractor;
// SetMultiresolutionCellSize and GetMultiresolutionCellSize to support
// adding a multi resolution display capability for AMR data.
//
// Kathleen Biagas, Tue Dec 31 11:27:50 PST 2013
// Added Add/RemoveForegroundStartObserver.
//
// ****************************************************************************
class VISWINDOW_API VisWindow
......@@ -827,6 +830,9 @@ protected:
double GetAverageExternalRenderingTime(void) const;
void DoNextExternalRenderAsVisualQueue(
int w, int h, const double *color);
void AddForegroundStartObserver(void) const;
void RemoveForegroundStartObserver(void) const;
};
......
......@@ -31,6 +31,7 @@ list of changes in release 2.7.</p>
<li>Memory leaks in the viewer related to operator-created-expressions has been fixed.</li>
<li>Running the python interpreter no longer fails when running a version of Vist that is not the newest one installed when more than one version of VisIt is installed in the same location.</li>
<li>Opening Nek5000 files could fail if user had a visit config file saved from version 2.6.x</li>
<li>Tickmarks and gridlines are now properly drawn in non-screen-captured windows saves.</li>
</ul>
<p><b><font size="4">Enhancements in version 2.7.1</font></b></p>
......
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