Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

contrib/vtkTreeComposite.h

Go to the documentation of this file.
00001 /*=========================================================================
00002   
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkTreeComposite.h,v $
00005   Language:  C++
00006   
00007 Copyright (c) 1993-2001 Ken Martin, Will Schroeder, Bill Lorensen 
00008 All rights reserved.
00009 
00010 Redistribution and use in source and binary forms, with or without
00011 modification, are permitted provided that the following conditions are met:
00012 
00013  * Redistributions of source code must retain the above copyright notice,
00014    this list of conditions and the following disclaimer.
00015 
00016  * Redistributions in binary form must reproduce the above copyright notice,
00017    this list of conditions and the following disclaimer in the documentation
00018    and/or other materials provided with the distribution.
00019 
00020  * Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names
00021    of any contributors may be used to endorse or promote products derived
00022    from this software without specific prior written permission.
00023 
00024  * Modified source versions must be plainly marked as such, and must not be
00025    misrepresented as being the original software.
00026 
00027 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
00028 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00029 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00030 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
00031 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00032 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00033 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00034 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00035 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00036 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00037 
00038 =========================================================================*/
00039 
00040 // This software and ancillary information known as vtk_ext (and
00041 // herein called "SOFTWARE") is made available under the terms
00042 // described below.  The SOFTWARE has been approved for release with
00043 // associated LA_CC Number 99-44, granted by Los Alamos National
00044 // Laboratory in July 1999.
00045 //
00046 // Unless otherwise indicated, this SOFTWARE has been authored by an
00047 // employee or employees of the University of California, operator of
00048 // the Los Alamos National Laboratory under Contract No. W-7405-ENG-36
00049 // with the United States Department of Energy.
00050 //
00051 // The United States Government has rights to use, reproduce, and
00052 // distribute this SOFTWARE.  The public may copy, distribute, prepare
00053 // derivative works and publicly display this SOFTWARE without charge,
00054 // provided that this Notice and any statement of authorship are
00055 // reproduced on all copies.
00056 //
00057 // Neither the U. S. Government, the University of California, nor the
00058 // Advanced Computing Laboratory makes any warranty, either express or
00059 // implied, nor assumes any liability or responsibility for the use of
00060 // this SOFTWARE.
00061 //
00062 // If SOFTWARE is modified to produce derivative works, such modified
00063 // SOFTWARE should be clearly marked, so as not to confuse it with the
00064 // version available from Los Alamos National Laboratory.
00065 
00066 
00088 #ifndef __vtkTreeComposite_h
00089 #define __vtkTreeComposite_h
00090 
00091 #include "vtkObject.h"
00092 #include "vtkRenderWindow.h"
00093 #include "vtkRenderWindowInteractor.h"
00094 #include "vtkRenderer.h"
00095 #include "vtkMultiProcessController.h"
00096 
00097 class VTK_EXPORT vtkTreeComposite : public vtkObject
00098 {
00099 public:
00100   static vtkTreeComposite *New();
00101   vtkTypeMacro(vtkTreeComposite,vtkObject);
00102   void PrintSelf(ostream& os, vtkIndent indent);
00103 
00106   vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
00107   void SetRenderWindow(vtkRenderWindow *renWin);
00108 
00112   void InitializePieces();
00113   
00115   void InitializeOffScreen();
00116   
00118   void StartInteractor();
00119   void ExitInteractor();
00120   void StartRender();
00121   void EndRender();
00122   void RenderRMI();
00123   void ResetCamera(vtkRenderer *ren);
00124   void ResetCameraClippingRange(vtkRenderer *ren);
00125   void ComputeVisiblePropBoundsRMI();
00126   
00127 protected:
00128   vtkTreeComposite();
00129   ~vtkTreeComposite();
00130   vtkTreeComposite(const vtkTreeComposite&) {};
00131   void operator=(const vtkTreeComposite&) {};
00132   
00133   vtkRenderWindow* RenderWindow;
00134   vtkRenderWindowInteractor* RenderWindowInteractor;
00135   vtkMultiProcessController* Controller;
00136 
00137   unsigned long StartInteractorTag;
00138   unsigned long EndInteractorTag;
00139   unsigned long StartTag;
00140   unsigned long EndTag;
00141   unsigned long ResetCameraTag;
00142   unsigned long ResetCameraClippingRangeTag;
00143   
00144   void Composite(int flag);
00145 
00146   // Convenience method used internally. It set up the start observer
00147   // and allows the render window's interactor to be set before or after
00148   // the compositer's render window (not exactly true).
00149   void SetRenderWindowInteractor(vtkRenderWindowInteractor *iren);
00150 
00151   void ComputeVisiblePropBounds(vtkRenderer *ren, float bounds[6]);
00152 
00153   // Arrays for compositing.
00154   float *PData;
00155   float *ZData;
00156   int WindowSize[2];
00157   
00158   // This flag stops nested RMIs from occuring.  Some rmis send and receive information.
00159   // Nesting them can lock up the processes.
00160   int Lock;
00161   
00162   
00163   void SetWindowSize(int x, int y);
00164 };
00165 
00166 
00167 #endif
00168 
00169 
00170 
00171 
00172 
00173 
00174 
00175 
00176 

Generated on Wed Nov 21 12:26:56 2001 for VTK by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001