Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

vuSphericViewFilter.cpp

Go to the documentation of this file.
00001 #include "vuSphericViewFilter.h"
00002 
00003 template <int S, class T>
00004 vuSphericViewFilter<S,T>::vuSphericViewFilter()
00005 {
00006   m_NumberOfViews     = 0;
00007   m_Views             = NULL;
00008   m_Image             = NULL;
00009   m_Width             = 0;
00010   m_Height            = 0;
00011   ensureImage(4,4); // black image
00012 }
00013 
00014 template <int S, class T>
00015 vuSphericViewFilter<S,T>::vuSphericViewFilter(const vuString& filterName)
00016   : vuFilter(filterName)
00017 {
00018   m_NumberOfViews     = 0;
00019   m_Views             = NULL;
00020   m_Image             = NULL;
00021   m_Width             = 0;
00022   m_Height            = 0;
00023   ensureImage(4,4); // black image
00024 }
00025 
00026 template <int S, class T>
00027 vuSphericViewFilter<S,T>::~vuSphericViewFilter()
00028 {
00029   CHECKNDELETE(m_Views);
00030   CHECKNDELETE(m_Image);
00031   m_NumberOfViews = 0;
00032 }
00033 
00034 template <int S, class T>
00035 void vuSphericViewFilter<S,T>::setNumberOfViews(dword count)
00036 {
00037   if (m_Views == NULL || m_NumberOfViews != count) {
00038     CHECKNDELETE(m_Views);
00039     m_Views         = new vuSphericView<S,T>*[count];
00040     m_NumberOfViews = count;
00041   }
00042 }
00043 
00044 template <int S, class T>
00045 dword vuSphericViewFilter<S,T>::getNumberOfViews()
00046 {
00047   return m_NumberOfViews;
00048 }
00049 
00050 template <int S, class T>
00051 vuSphericView<S,T>** vuSphericViewFilter<S,T>::getViews()
00052 {
00053   return m_Views;
00054 }
00055 
00056 template <int S, class T>
00057 vuSphericView<S,T>* vuSphericViewFilter<S,T>::getView(dword i)
00058 {
00059   if (i>= m_NumberOfViews) return NULL;
00060   return m_Views[i];
00061 }
00062 
00063 template <int S, class T>
00064 int vuSphericViewFilter<S,T>::getIndexOfView(vuSphericView<S,T> *view)
00065 {
00066   for (dword i=0; i<m_NumberOfViews; i++) {
00067     if (view == m_Views[i]) return i;
00068   }
00069   return -1;
00070 }
00071 
00072 template <int S, class T>
00073 void vuSphericViewFilter<S,T>::setView(dword idx, vuSphericView<S,T> *view)
00074 {
00075   if (m_Views == NULL || idx >= m_NumberOfViews) {
00076     cerr << "vuSphericViewFilter.setView(): idx out of range" << endl;
00077     throw "vuSphericViewFilter.setView(): idx out of range";
00078     return;
00079   }
00080   m_Views[idx] = view;
00081 }
00082 
00083 template <int S, class T>
00084 void vuSphericViewFilter<S,T>::glRender()
00085 {
00086   if (m_Image)
00087     m_Image->glRender();
00088   else
00089     log("WARNING: vuSphericViewFilter.render(): m_Image is NULL!");
00090 }
00091 
00092 template <int S, class T>
00093 void vuSphericViewFilter<S,T>::initOpenGL(void)
00094 {
00095   if (m_Image)
00096     m_Image->initOpenGL();
00097   else
00098     log("WARNING: vuSphericViewFilter.initOpenGL(): m_Image is NULL!");
00099 }
00100 
00101 template <int S, class T>
00102 void vuSphericViewFilter<S,T>::glResize(dword width, dword height)
00103 {
00104   m_Width  = width;
00105   m_Height = height;
00106   if (m_Image != NULL)
00107     m_Image->glResize(width, height);
00108   else
00109     log("WARNING: vuSphericViewFilter.glResize(): m_Image is NULL!");
00110 }
00111 
00112 template <int S, class T> 
00113 void vuSphericViewFilter<S,T>::preprocess(vuProgressHandler *handler)
00114 {
00115 }
00116 
00117 template <int S, class T>
00118 void vuSphericViewFilter<S,T>::ensureImage(dword width, dword height)
00119 {
00120   if (width == 0 || height == 0) {
00121     if (m_NumberOfViews == 0) return;
00122     
00123     width = m_Views[0]->getWidth();
00124     height = m_Views[0]->getHeight();
00125   }
00126   
00127   if (m_Image == NULL) {
00128     m_Image = new vuFixelMap<S,T>(width,height);
00129     if (m_Width && m_Height)
00130       glPixelZoom((float)m_Width/width, (float)m_Height/height);
00131     cerr << "ensureImage... NEW " << endl;
00132   }
00133   else if (m_Image->getWidth() != width || m_Image->getHeight() != height) {
00134     CHECKNDELETE(m_Image);
00135     m_Image = new vuFixelMap<S,T>(width, height);
00136     if (m_Width && m_Height)
00137       glPixelZoom((float)m_Width/width, (float)m_Height/height);
00138     cerr << "ensureImage... RENEW " << endl;
00139   }
00140 }
00141 
00142 template <int S, class T>
00143 void vuSphericViewFilter<S,T>::log(const char *msg)
00144 {
00145   cerr << msg << endl;
00146 }
00147 
00148 
00149 template <int S, class T>
00150 vuFixelMap<S,T> *vuSphericViewFilter<S,T>::getMap()
00151 {
00152   return m_Image;
00153 }
00154 
00155 

Generated on Wed Dec 15 21:20:37 2004 for vuVolume by  doxygen 1.3.9.1