00001 #ifndef __GENERAL_VU_SPHERIC_VIEW_FILTER_H__
00002 #define __GENERAL_VU_SPHERIC_VIEW_FILTER_H__
00003
00004 #include "vuFixelMap.h"
00005 #include "vuSphericView.h"
00006 #include "vuCamera/vuCamera.h"
00007 #include "vuMisc/vuFilter.h"
00008 #include "vuMisc/vuProgressHandler.h"
00009
00010 template <int SIZE, class TYPE>
00011 class vuSphericViewFilter : public vuFilter
00012 {
00013 public:
00014 vuSphericViewFilter();
00015 vuSphericViewFilter(const vuString& filterName);
00016
00017 virtual ~vuSphericViewFilter();
00018
00019 void setNumberOfViews(dword count);
00020 dword getNumberOfViews();
00021
00022 vuSphericView<SIZE,TYPE>** getViews();
00023 vuSphericView<SIZE,TYPE>*getView(dword i);
00024
00025 int getIndexOfView(vuSphericView<SIZE,TYPE> *view);
00026
00027 void setView(dword idx, vuSphericView<SIZE,TYPE> *view);
00028
00029 virtual bool needPreprocessing() = 0;
00030 virtual bool needViewsForFiltering() = 0;
00031
00032 virtual void filter(vuCamera *camera) = 0;
00033 virtual void preprocess(vuProgressHandler* handler=NULL);
00034
00035 void initOpenGL();
00036 void glResize(dword width, dword height);
00037 void glRender();
00038
00039
00040 vuFixelMap<SIZE,TYPE> *getMap();
00041
00042 void ensureImage(dword width=0, dword height=0);
00043
00044 protected:
00045 dword m_NumberOfViews;
00046 vuSphericView<SIZE,TYPE> **m_Views;
00047 vuFixelMap<SIZE,TYPE> *m_Image;
00048
00049 dword m_Width;
00050 dword m_Height;
00051
00052 void log(const char *msg);
00053 };
00054
00055 template class vuSphericViewFilter<1,byte>;
00056 template class vuSphericViewFilter<2,byte>;
00057 template class vuSphericViewFilter<3,byte>;
00058
00059 template class vuSphericViewFilter<1,float>;
00060 template class vuSphericViewFilter<2,float>;
00061 template class vuSphericViewFilter<3,float>;
00062
00063 typedef vuSphericViewFilter<1,byte> vuSphericViewFilter1B;
00064 typedef vuSphericViewFilter<2,byte> vuSphericViewFilter2B;
00065 typedef vuSphericViewFilter<3,byte> vuSphericViewFilter3B;
00066
00067 typedef vuSphericViewFilter<1,float> vuSphericViewFilter1F;
00068 typedef vuSphericViewFilter<2,float> vuSphericViewFilter2F;
00069 typedef vuSphericViewFilter<3,float> vuSphericViewFilter3F;
00070
00071 #endif