00001 #ifndef _wxUIElements_vuFBRSubCanvas_h_
00002 #define _wxUIElements_vuFBRSubCanvas_h_
00003
00004 #include <wx/wx.h>
00005 #include "vuBasicSubViewer.h"
00006 #include "General/vuLightfield/vuFixelMap.h"
00007 #include "Volume/Lightfield/Unimodal/Spheric/IBR/vuSphericInteractive.h"
00008
00010
00014 template <int SIZE, class TYPE>
00015 class vuFBRSubCanvas : public vuBasicSubViewerCanvas
00016 {
00017 public:
00019 vuFBRSubCanvas(vuBasicSubViewer *parent, wxWindowID id=-1);
00021 ~vuFBRSubCanvas();
00022
00024
00036 void setRenderMethod(dword method);
00037
00038 void setInteractive(vuSphericInteractive<SIZE,TYPE> *interactive);
00039
00041 void setImageScale(float scale);
00042
00043 protected:
00045 bool glInit();
00047 void render();
00049 void resize();
00050
00052 void _clearCanvas();
00053
00055 void _renderImage();
00056
00057 void _copyDeltaImageToRGB(vuFixelMap1F *errorMap, vuFixelMap3F *rgbMap);
00058
00059 void _renderImageOld();
00060
00062 bool _substract(vuFixelMap1F *srcImg, vuFixelMap1F* destImg);
00063
00065 void postEvent(wxEventType ev);
00066
00067 protected:
00068 vuSphericInteractive<SIZE,TYPE> *m_Interactive;
00069
00070 dword m_RenderMethod;
00071 vuFixelMap1F *m_Image;
00072 vuFixelMap3F *m_ImageRGB;
00073 float m_ImageScale;
00074 };
00075
00076 template class vuFBRSubCanvas<1,byte>;
00077 template class vuFBRSubCanvas<2,byte>;
00078 template class vuFBRSubCanvas<3,byte>;
00079 template class vuFBRSubCanvas<1,float>;
00080 template class vuFBRSubCanvas<2,float>;
00081 template class vuFBRSubCanvas<3,float>;
00082
00083 typedef vuFBRSubCanvas<1,byte> vuFBRSubCanvas1B;
00084 typedef vuFBRSubCanvas<2,byte> vuFBRSubCanvas2B;
00085 typedef vuFBRSubCanvas<3,byte> vuFBRSubCanvas3B;
00086 typedef vuFBRSubCanvas<1,float> vuFBRSubCanvas1F;
00087 typedef vuFBRSubCanvas<2,float> vuFBRSubCanvas2F;
00088 typedef vuFBRSubCanvas<3,float> vuFBRSubCanvas3F;
00089
00090 #endif