00001 #ifndef _vuTransferCanvas_h_
00002 #define _vuTransferCanvas_h_
00003
00004 #include <wx/wx.h>
00005 #include "vuGLCanvas.h"
00006 #include "vuTFunc/vuTFDesign.h"
00007
00009
00047 class vuTransferCanvas : public vuGLCanvas
00048 {
00049 public:
00051
00062 vuTransferCanvas(vuTFDesign &tf, wxWindow *parent,wxWindowID id=-1,bool edit=false);
00064 ~vuTransferCanvas();
00065
00067 vuTFDesign& getTransferFunc();
00069 void setTransferFunc(const vuTFDesign &tf);
00070
00072 const vuTFDesign::OpacityNode *getActiveOpacity() const;
00074 void setActiveOpacity(const vuTFDesign::OpacityNode *);
00075
00077 const vuTFDesign::ColourNode *getActiveColour() const;
00079 void setActiveColour(const vuTFDesign::ColourNode *);
00080
00082 void setSmoothing(float opacity, float colour);
00083
00084 protected:
00086 bool glInit();
00088 void render();
00090 void resize();
00092 void OnMouse(wxMouseEvent &ev);
00093
00095 void postEvent(wxEventType ev);
00096
00097 protected:
00099 vuTFDesign &m_TFunc;
00101 bool m_Edit;
00102
00104 float m_xScreenMin, m_xScreenMax, m_yScreenMin, m_yScreenMax;
00106 float m_dx, m_dy;
00107
00109 dword m_Opacity;
00111 dword m_Colour;
00112
00113 protected:
00115 const dword m_xMin;
00116 const dword m_xMax;
00117 const float m_yMin;
00118 const float m_yMax;
00119
00121 bool m_DoSpectral;
00122
00123 DECLARE_EVENT_TABLE()
00124 };
00125
00127 enum
00128 {
00130 vuEVT_TRANSFER_NODE_SELECT = 12000,
00131
00133 vuEVT_TRANSFER_NODE_OPEN,
00134
00136 vuEVT_TRANSFER_CHANGE
00137 };
00138
00139 #endif