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

Rendering/vtkQuartzRenderWindowInteractor.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkQuartzRenderWindowInteractor.h,v $
00005   Language:  C++
00006   
00007 Copyright (c) 1993-2000 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 REGENTS 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 =========================================================================*/
00056 #ifndef __vtkQuartzRenderWindowInteractor_h
00057 #define __vtkQuartzRenderWindowInteractor_h
00058 
00059 #include <stdlib.h>
00060 #include "vtkRenderWindowInteractor.h"
00061 
00062 
00063 #ifdef __cplusplus
00064 extern "C" {
00065 #endif
00066 
00067 //int DrawSomeGL();
00068 //void VBTimerEvent(void *vtkClass);
00069 //void DoMouseMoved(void *vtkClass, int shiftDown, int controlDown, int altDown, int commandDown, float xLoc, float yLoc);
00070 //void DoMouseDragged(void *vtkClass, int shiftDown, int controlDown, int altDown, int commandDown, float xLoc, float yLoc);
00071 //void DoMouseUp(void *vtkClass, int shiftDown, int controlDown, int altDown, int commandDown, float xLoc, float yLoc);
00072 //void DoMouseDown(void *vtkClass, int shiftDown, int controlDown, int altDown, int commandDown, float xLoc, float yLoc);
00073 
00074 #ifdef __cplusplus
00075 };
00076 #endif
00077 
00078 
00079 
00080 class VTK_RENDERING_EXPORT vtkQuartzRenderWindowInteractor : public vtkRenderWindowInteractor {
00081 public:
00083   static vtkQuartzRenderWindowInteractor *New();
00084 
00085   vtkTypeMacro(vtkQuartzRenderWindowInteractor,vtkRenderWindowInteractor);
00086   void PrintSelf(ostream& os, vtkIndent indent);
00087 
00089   virtual void Initialize();
00090 
00092 
00099   virtual void Enable();
00100   virtual void Disable();
00102 
00106   virtual void Start();
00107 
00109 
00114   vtkSetMacro(InstallMessageProc,int);
00115   vtkGetMacro(InstallMessageProc,int);
00116   vtkBooleanMacro(InstallMessageProc,int);
00118 
00123   void TerminateApp(void);
00124 
00126 
00127   int CreateTimer(int timertype);
00128   int DestroyTimer(void);
00130 
00131   //BTX
00133   /*! Various methods that a Quartz window can redirect to this class to be
00134       handled. virtual void OnMouseMove  (void *wnd, int nFlags, int X, int
00135       Y); */
00136   virtual void OnRButtonDown(void *wnd, int nFlags, int X, int Y);
00137   virtual void OnRButtonUp  (void *wnd, int nFlags, int X, int Y);
00138   virtual void OnMButtonDown(void *wnd, int nFlags, int X, int Y);
00139   virtual void OnMButtonUp  (void *wnd, int nFlags, int X, int Y);
00140   virtual void OnLButtonDown(void *wnd, int nFlags, int X, int Y);
00141   virtual void OnLButtonUp  (void *wnd, int nFlags, int X, int Y);
00142   virtual void OnSize       (void *wnd, int nType,  int X, int Y);
00143   virtual void OnTimer      (void *wnd, int nIDEvent);
00144   virtual void OnChar       (void *wnd, int nChar, int nRepCnt, int nFlags);
00145   //ETX
00147 
00149   /*! Methods to set the default exit method for the class. This method is
00150       only used if no instance level ExitMethod has been defined.  It is
00151       provided as a means to control how an interactor is exited given the
00152       various language bindings (tcl, Quartz, etc.). */
00153   static void SetClassExitMethod(void (*f)(void *), void *arg);
00154   static void SetClassExitMethodArgDelete(void (*f)(void *));
00156 
00159   virtual void ExitCallback();
00160   
00161   int GetButtonDown();
00162   void SetButtonDown(int button);
00163 
00164 protected:
00165   vtkQuartzRenderWindowInteractor();
00166   ~vtkQuartzRenderWindowInteractor();
00167 
00168   void   *WindowId;
00169   void   *ApplicationId;
00170   int     TimerId;
00171   void   *OldProc;
00172   int     InstallMessageProc;
00173   int   whichButtonDown; //0=none, 1=left, 2=middle, 3=right
00174 
00175   //BTX
00177   /*! Class variables so an exit method can be defined for this class (used
00178       to set different exit methods for various language bindings, i.e.
00179       tcl, java, Quartz) */
00180   static void (*ClassExitMethod)(void *);
00181   static void (*ClassExitMethodArgDelete)(void *);
00182   static void *ClassExitMethodArg;
00183   //ETX
00185   
00186 private:
00187   vtkQuartzRenderWindowInteractor(const vtkQuartzRenderWindowInteractor&);  // Not implemented.
00188   void operator=(const vtkQuartzRenderWindowInteractor&);  // Not implemented.
00189 };
00190 
00191 #endif
00192 
00193 

Generated on Thu Mar 28 14:19:33 2002 for VTK by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001