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

vuMarchingCubes.h

Go to the documentation of this file.
00001 
00023 // {{{ The Marching Cubes Engine
00165 // }}}
00166 
00167 
00168 // {{{ Edge mapping table
00232 // }}}
00233 
00234 
00235 #ifndef _vuMarchingCubesUtility_h_
00236 #define _vuMarchingCubesUtility_h_
00237 
00238 #include <wx/textctrl.h>
00239 #include <wx/checkbox.h>
00240 #include <wx/button.h>
00241 #include <wx/notebook.h>
00242 #include <wx/artprov.h>
00243 #include <wx/colour.h>
00244 #include <wx/colordlg.h>
00245 #include <wx/cmndata.h>
00246 #include <wx/imaglist.h>
00247 #include <wx/dcclient.h>
00248 
00249 #include <math.h>
00250 #include <stdlib.h>
00251 #include <map>
00252 
00253 #include "../vuBasicUtility.h"
00254 #include "../../wxUIElements/vuTransferDialog.h"
00255 #include "Volume/Regular/Unimodal/3d/2B/Threshold/MarchingCubes/MarchingCubes.h"
00256 #include "vuTFunc/vuTFDesign.h"
00257 #include "vuVector.h"
00258 
00259 
00260 // {{{ Decorator base:
00261 
00262 
00271 template<class t>
00272 class vuMCDecorator // {{{
00273 {
00274 
00275         public:
00276 
00278                 virtual void operator()(t val) = 0;
00279 
00280 }; /* }}} vuMCDecorator */
00281 
00282 
00283 // }}} Decorator base
00284 
00285 
00286 // {{{ Widgets:
00287 
00288 
00290 #define VU_MC_MAX_WIDGETS 100
00291 
00292 
00316 class vuMCWidget : public wxPanel // {{{
00317 {
00318 
00319         public:
00320 
00321                 enum {
00322                         typeBox,
00323                         typeStaticBox,
00324                         typeGrid
00325                 };
00326 
00327         private:
00328 
00329                 int _sizerType;
00330 
00331                 wxSizer* _sizer;
00332 
00333         public:
00334 
00336                 vuMCWidget() {}
00337                 vuMCWidget(wxWindow* p, int orient=wxVERTICAL, int type=typeBox, int hgap=5, int cols=4, int vgap=0);
00339                 virtual ~vuMCWidget();
00340 
00341                 wxSizer* Sizer();
00342 
00343         public:
00344                 DECLARE_DYNAMIC_CLASS(vuMCWidget);
00345                 DECLARE_EVENT_TABLE();
00346 
00347 }; /* }}} vuMCWidget */
00348 
00349 
00354 class vuMCKeyValue : public vuMCWidget // {{{
00355 {
00356 
00357         private:
00358 
00360                 GLfloat _value;
00362                 wxStaticText* _key;
00364                 wxStaticText* _valueText;
00365 
00366         protected:
00367 
00369                 const char* _format;
00370 
00371         private:
00372 
00373         public:
00374 
00376                 vuMCKeyValue() {}
00377                 vuMCKeyValue(wxWindow* p, const char* key, const char* format, GLfloat val=0);
00379                 virtual ~vuMCKeyValue();
00380 
00382                 virtual void operator=(GLfloat v);
00383                 virtual void operator+=(GLfloat v);
00384                 virtual void operator-=(GLfloat v);
00386                 void Label(wxString txt);
00387 
00389                 inline operator GLfloat();
00390 
00391         public:
00392                 DECLARE_DYNAMIC_CLASS(vuMCKeyValue);
00393                 DECLARE_EVENT_TABLE();
00394 
00395 }; /* }}} vuMCKeyValue */
00396 
00397 
00398 #define VU_MCKV_MAX_SIZE 8
00399 
00411 class vuMCKeyVector : public vuMCKeyValue // {{{
00412 {
00413         private:
00414 
00415                 GLfloat _vector[VU_MCKV_MAX_SIZE];
00416 
00418                 int _size;
00423                 int _pos;
00424 
00425                 wxString _mylabel;
00426 
00428                 void _updateLabel();
00429 
00430         public:
00431 
00433                 vuMCKeyVector() {}
00435                 vuMCKeyVector(wxWindow* p, const char* key, int size, const char* format);
00437                 virtual ~vuMCKeyVector();
00438 
00440                 void operator()(int n, GLfloat val);
00441                 GLfloat Get(int i);
00442 
00444                 operator const GLfloat*();
00445 
00447                 void Inc(int n, GLfloat val);
00448 
00454                 vuMCKeyVector& operator[](int n);
00455 
00457                 virtual void operator=(GLfloat v);
00458 
00460                 void operator+=(GLfloat val);
00462                 void operator-=(GLfloat val);
00463 
00464         public:
00465                 DECLARE_DYNAMIC_CLASS(vuMCKeyVector);
00466                 DECLARE_EVENT_TABLE();
00467 
00468 }; // }}} vuMCKeyVector
00469 
00470 
00472 #define VU_MCBF_MAX_SIZE 32
00473 
00474 
00481 class vuMCBitField : public vuMCWidget // {{{
00482 {
00483         public:
00484 
00485                 enum {
00486                         idMCBFCheckboxes = 13000,       // we need more than one
00487                         idMCBFSlider = idMCBFCheckboxes+VU_MCBF_MAX_SIZE,
00488                         idMCBFLast
00489                 };
00490 
00491         private:
00492 
00494                 vuMCDecorator<int>* _callback;
00496                 const char* _titleString;
00498                 wxStaticText* _title;
00500                 int _size;
00502                 wxCheckBox* _checkboxes[VU_MCBF_MAX_SIZE];
00508                 wxSlider* _slider;
00514                 int _pos;
00515 
00516                 void _setTitle(int val);
00518                 void _setCheckboxes(int val);
00519 
00520         public:
00521 
00523                 vuMCBitField() {}
00525                 vuMCBitField(wxWindow* p, const char* title, vuMCDecorator<int>* cb, int size, int init);
00527                 virtual ~vuMCBitField();
00528 
00530                 void operator=(int val);
00532                 void operator()(int n, bool val);
00534                 operator int();
00536                 vuMCBitField& operator[](int n);
00538                 void operator=(bool val);
00539 
00541                 void OnCheckboxClicked(wxCommandEvent& event);
00543                 void OnScroll(wxScrollEvent& event);
00544 
00545         public:
00546                 DECLARE_DYNAMIC_CLASS(vuMCBitField);
00547                 DECLARE_EVENT_TABLE();
00548 
00549 }; /* }}} vuMCBitField */
00550 
00551 
00555 #define VU_MCGC_SLIDER_MAX      100
00556 
00557 
00564 class vuMCGrayColor : public vuMCWidget // {{{
00565 {
00566 
00567         public:
00568 
00569                 enum {
00570                         idMCGCSlider = vuMCBitField::idMCBFLast,
00571                         idMCGCLast
00572                 };
00573 
00574         private:
00575 
00577                 float _glColor[4];
00579                 wxStaticText* _title;
00581                 wxPanel* _color;
00583                 wxStaticText* _colorText;
00585                 wxSlider* _slider;
00587                 vuMCDecorator<float>* _callback;
00588 
00589                 void _setColor(float col);
00590 
00591         public:
00592 
00594                 vuMCGrayColor() {}
00595                 vuMCGrayColor(wxWindow* p, const char* title,
00596                               vuMCDecorator<float>* cb, float color);
00598                 virtual ~vuMCGrayColor();
00599 
00601                 operator float*();
00602 
00603                 void OnScroll(wxScrollEvent& event);
00604 
00605         public:
00606                 DECLARE_DYNAMIC_CLASS(vuMCGrayColor);
00607                 DECLARE_EVENT_TABLE();
00608 
00609 }; /* }}} vuMCGrayColor */
00610 
00611 
00612 #define VU_MCRGB_SLIDER_MAX 100
00613 
00620 class vuMCRGBColor : public vuMCWidget // {{{
00621 {
00622 
00623         public:
00624 
00625                 enum {
00626                         idMCRGBSlider = vuMCGrayColor::idMCGCLast,
00627                         idMCRGBButton,
00628                         idMCRGBLast
00629                 };
00630 
00631         private:
00632 
00633                 GLfloat _glColor[4];
00634 
00635                 wxStaticText* _title;
00636                 wxButton* _color;
00637                 wxSlider* _slider;
00638                 wxStaticText* _colorText;
00639 
00640                 vuMCDecorator<float>* _callback;
00641 
00642 
00643                 void _setColor(wxColour& col);
00644                 void _setColor();
00645                 void _setText();
00646 
00647                 void _OnScroll(wxCommandEvent& event);
00648 
00649         public:
00650 
00652                 vuMCRGBColor() {}
00653                 vuMCRGBColor(wxWindow* p, const char* title,
00654                              vuMCDecorator<float>* cb, wxColour c, float a);
00656                 virtual ~vuMCRGBColor();
00657 
00659                 void operator=(wxColour& c);
00661                 operator GLfloat*();
00662                 vuVector tovuVector();
00663 
00664                 GLfloat Red();
00665                 GLfloat Green();
00666                 GLfloat Blue();
00667                 GLfloat Alpha();
00668 
00669                 void OnButton(wxCommandEvent& event);
00670                 void OnScroll(wxScrollEvent& event);
00671 
00672         public:
00673                 DECLARE_DYNAMIC_CLASS(vuMCRGBColor);
00674                 DECLARE_EVENT_TABLE();
00675 
00676 }; // }}} vuMCRGBColor
00677 
00678 
00679 #define VU_MCS_SLIDER_MAX        100
00680 #define VU_MCS_CONTINUOUS_UPDATE true
00681 #define VU_MCS_END_UPDATE        false
00682 
00687 class vuMCSlider : public vuMCWidget // {{{
00688 {
00689 
00690         public:
00691 
00692                 enum {
00693                         idMCSSlider = vuMCRGBColor::idMCRGBLast,
00694                         idMCSLast
00695                 };
00696 
00697         private:
00698 
00699                 float _min;
00700                 float _max;
00701                 int _slMax;
00702 
00703                 wxStaticText* _title;
00704                 const char* _format;
00705                 wxStaticText* _value;
00706                 wxSlider* _slider;
00707 
00708                 vuMCDecorator<float>* _callback;
00709 
00710                 bool _updateMode;
00711 
00712                 void _setText(float val);
00713                 void _setValue(float val);
00714                 float _getValue();
00715 
00716         public:
00717 
00719                 vuMCSlider() {}
00720                 vuMCSlider(wxWindow* p, const char* title, const char* format,
00721                            vuMCDecorator<float>* cb, float min, float max, float val,
00722                            int slMax = VU_MCS_SLIDER_MAX, bool cont = VU_MCS_CONTINUOUS_UPDATE);
00724                 virtual ~vuMCSlider();
00725 
00727                 operator float();
00729                 void operator=(float val);
00730 
00732                 float Min();
00734                 void Min(float min);
00735 
00737                 float Max();
00739                 void Max(float max);
00740 
00742                 const char* Format();
00744                 void Format(const char* f);
00745 
00747                 bool UpdateMode();
00749                 void UpdateMode(bool mode);
00750 
00751                 void OnScroll(wxScrollEvent& event);
00752 
00753         public:
00754                 DECLARE_DYNAMIC_CLASS(vuMCSlider);
00755                 DECLARE_EVENT_TABLE();
00756 
00757 }; // }}} vuMCSlider
00758 
00759 
00760 class vuMCHistogram;
00761 
00762 
00766 #define HC_UPDATE_WATERMARK 500
00767 
00768 
00774 class _HistoCanvas : public wxPanel // {{{
00775 {
00776 
00777         private:
00778 
00783                 int _min;
00788                 int _max;
00793                 int _vmax;
00795                 float _vpp;
00797                 float _ppe;
00799                 map<int, int> _histo;
00801                 vuMCHistogram* _callback;
00803                 int _updateCounter;
00806                 bool _delayedUpdate;
00808                 int _idx;
00810                 int _selected;
00812                 wxColour _selColor;
00813 
00814         public:
00815 
00817                 _HistoCanvas();
00818                 _HistoCanvas(vuMCHistogram* parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
00819                              const wxSize& size = wxDefaultSize);
00820                 virtual ~_HistoCanvas();
00821 
00825                 void Reset();
00840                 void Inc(int n, int val);
00841 
00842                 void SetSelColor(wxColour &c);
00843 
00844                 void Select(int idx);
00845 
00846                 void DelayedUpdate(bool m);
00847                 bool DelayedUpdate();
00848                 
00849                 void OnPaint(wxPaintEvent& event);
00850 
00851                 void OnMotion(wxMouseEvent& event);
00852 
00853                 void OnMouse(wxMouseEvent& event);
00854 
00855                 DECLARE_DYNAMIC_CLASS(_HistoCanvas);
00856                 DECLARE_EVENT_TABLE();
00857 
00858 }; // }}} _HistoCanvas
00859 
00860 
00865 class vuMCHistogram : public vuMCWidget // {{{
00866 {
00867 
00868         public:
00869 
00870                 enum {
00871                         idMCHPaint = vuMCSlider::idMCSLast,
00872                         idCbxDelayedUpdate,
00873                         idClkHistogram,
00874                         idMCHLast
00875                 };
00876 
00877         private:
00878 
00880                 wxCheckBox   *_delayedUpdate;
00882                 wxWindow     *_parent;
00884                 _HistoCanvas *_histoDC;
00887                 wxStaticText *_desc;
00888 
00889                 vuMCDecorator<int>* _callback;
00890 
00891         public:
00892 
00894                 vuMCHistogram() {}
00895 
00896                 vuMCHistogram(wxWindow* p, wxSize size, vuMCDecorator<int>* cb = NULL);
00898                 virtual ~vuMCHistogram();
00899 
00900                 void Clear();
00901 
00902                 void Flush();
00903 
00904                 void Inc(int i, int val=1);
00905 
00906                 void SetSelColor(vuVector c);
00907                 void SetSelColor(wxColour &c);
00908 
00909                 void Select(int type);
00910 
00911                 void OnTextChange(wxString txt);
00912 
00913                 void OnClicked(int idx);
00914 
00915                 void OnDelayedUpdateChecked(wxCommandEvent &event);
00916 
00917                 DECLARE_DYNAMIC_CLASS(vuMCHistogram);
00918                 DECLARE_EVENT_TABLE();
00919 
00920 }; // }}} vuMCHistogram
00921 
00922 
00923 // }}} Widgets
00924 
00925 
00926 // {{{ GUI:
00927 
00928 class vuMCMCBProgressCallback;
00929 
00930 class vuMCMCBHistoCallback;
00931 
00932 #define MC_DEFAULT_LIGHT1_ENABLED       false
00933 #define MC_DEFAULT_FPS_WATERMARK        10
00934 #define MC_DEFAULT_DRAW_FRAME           true
00935 #define MC_DEFAULT_DRAW_NORMALS         false
00936 
00957 class vuMarchingCubes : public vuBasicUtility // {{{
00958 {
00959 private:
00960         friend class vuMCMCBProgressCallback;
00961         friend class vuMCMCBHistoCallback;
00962 
00963 public:
00964         enum {
00965                 idMCFirst = vuMCHistogram::idMCHLast,
00966                 idMCCbxCubeEnabled,
00967                 idMCCbxLight1Enabled,
00968                 idMCCbxDrawFrame,
00969                 idMCCbxDrawLines,
00970                 idMCRbxRotate,
00971                 idMCCbxCullLinesFrontBack,
00972                 idMCCbxUpdateMode,
00973                 idMCCbxMeshStatisitcs,
00974                 idMCCbxDrawNormals,
00975                 idMCBtnUpdate
00976         };
00977 
00978 public:
00980         vuMarchingCubes();
00982         virtual ~vuMarchingCubes();
00983 
00985         static const char* getFileType();
00986 
00987 public:
00989         bool init(const char* DataFile);
00991         virtual void addTop(wxSizer *sizer);
00993         virtual void addRight(wxSizer *sizer);
00995         wxPanel* createInfoNotebook(wxNotebook* nb);
00996         wxPanel* createSettingsNotebook(wxNotebook* nb);
00997         wxPanel* createGLNotebook(wxNotebook* nb);
00998         wxPanel* createHelpNotebook(wxNotebook* nb);
00999 
01001         virtual vuCamera* getCamera ();
01003         void setCamera(vuCamera* cam);
01005         virtual vuImage* getCurrentImage ();
01007         virtual void DrawFromImage ();
01009         virtual void DrawAgain ();
01010 
01011 protected:
01012 
01014         vu1 *vuMarchingCubes::getVolume();
01015 
01017         bool glInit();
01019         void glResize();
01022         void glRender();
01023 
01024 private:
01026         vu1*               m_Data;
01033         MarchingCubesBase *m_base;
01034 
01036         MCGlobalData      m_gd;
01037 
01039         wxImageList       *m_imageList;
01040 
01042         vuMCSlider        *m_thres;
01043 #if defined LINUX
01044 
01045         wxButton          *m_update;
01046 #endif
01047 
01048         vuMCKeyValue      *m_cubesTotal;
01050         vuMCKeyValue      *m_cube0;
01052         vuMCKeyValue      *m_cube255;
01054         vuMCKeyValue      *m_cubeOther;
01056         vuMCHistogram     *m_cubeHist;
01057         vuMCKeyVector     *m_size;
01059         vuMCKeyVector     *m_angle;
01061         vuMCKeyVector     *m_pos;
01062         vuMCKeyValue      *m_zoom;
01064         vuMCKeyVector     *m_light0Pos;
01066         wxCheckBox        *m_light1Enabled;
01068         vuMCKeyVector     *m_light1Pos;
01069         vuMCKeyValue      *m_numTriangles;
01070         vuMCKeyValue      *m_numVertices;
01071         vuMCKeyValue      *m_numIndices;
01073         vuMCKeyValue      *m_meshSize;
01074 
01076         wxStaticText      *m_statusText;
01077         wxGauge           *m_status;
01078 
01080         vuMCRGBColor      *m_backColor;
01081         vuMCRGBColor      *m_lightColor;
01082         vuMCGrayColor     *m_lightDiffuse;
01083         vuMCGrayColor     *m_lightSpecular;
01084         vuMCGrayColor     *m_lightShiny;
01085         vuMCRGBColor      *m_frameColor;
01086         vuMCRGBColor      *m_lineColor;
01087         vuMCRGBColor      *m_selectColor;
01088         vuMCRGBColor      *m_objectColor;
01089         vuMCGrayColor     *m_objectDiffuse;
01090         vuMCGrayColor     *m_objectSpecular;
01091         vuMCGrayColor     *m_objectShiny;
01092 
01093         vuMCSlider        *m_mouseSpeed;
01094         wxCheckBox        *m_drawFrame;
01095         wxCheckBox        *m_cullBack;
01096         wxCheckBox        *m_cullFront;
01097         wxCheckBox        *m_linesBack;
01098         wxCheckBox        *m_linesFront;
01099         vuMCSlider        *m_frameRadius;
01100         wxRadioBox        *m_rotateX;
01101         wxRadioBox        *m_rotateY;
01102         wxRadioBox        *m_rotateZ;
01103         wxCheckBox        *m_updateMode;
01104         wxCheckBox        *m_doMeshStatistics;
01105         wxCheckBox        *m_cubeEnabled;
01107         vuMCBitField      *m_cube;
01108         wxCheckBox        *m_drawNormals;
01109         vuMCSlider        *m_drawNormalsSize;
01110         vuMCSlider        *m_cubeSizeX;
01111         vuMCSlider        *m_cubeSizeY;
01112         vuMCSlider        *m_cubeSizeZ;
01113 
01114         int                m_fpsTime;
01115         int                m_fpsCount;
01116         vuMCSlider        *m_fpsWatermark;
01117         float              m_fps;
01118         float              m_avgFps;
01119 
01120         GLdouble x1, y1, z1;
01121         GLdouble x2, y2, z2;
01122 
01123 protected:
01124 
01126         void OnChar(wxKeyEvent& event);
01128         void glOnMouse(wxMouseEvent &event);
01139         void onMouseLeftMoving(wxMouseEvent &event);
01140         void onMouseRightMoving(wxMouseEvent &event);
01141         void onMouseDown(wxMouseEvent &event);
01142         void onMouseUp(wxMouseEvent &event);
01149         void onDblClick(wxMouseEvent &event);
01150 
01151         void OnLight1Checked(wxCommandEvent &event);
01152         void OnCubeEnabledChecked(wxCommandEvent &event);
01153         void OnFrameChecked(wxCommandEvent &event);
01154         void OnRotateChecked(wxCommandEvent &event);
01155         void OnCullLinesFrontBackChecked(wxCommandEvent &event);
01156         void OnUpdateModeChecked(wxCommandEvent &event);
01157 #ifdef LINUX
01158         void OnUpdateClicked(wxCommandEvent &event);
01159 #endif
01160         void OnDrawNormalsChecked(wxCommandEvent &event);
01161 
01162 public:
01163 
01165         void redraw();
01167         void resize();
01169         void OnCubeChange(int val);
01170 
01171         void setBackground();
01172 
01174         void OnProgress(float v);
01176         void OnChangeFrame();
01177         void OnThresChange();
01178         void OnNormalLengthChange(float l);
01179         void OnSetObjectColor();
01180         void OnSetLineColor();
01181         void OnCubeSizeChange();
01182         void OnSelectType(int n);
01183 
01184 private:
01185 
01187         void rotate(float ax, float ay);
01188 
01190         inline wxString format(double val) { return wxString::Format("%0.3f", val); }
01191 
01192         void doThresChange();
01193         void doResetThres();
01194 
01199         inline int outside(vuVector &point, double *size);
01200 
01201 public:
01202 
01203         DECLARE_EVENT_TABLE()
01204 
01205 }; // }}}
01206 
01210 class vuMCMCBProgressCallback : public MCBProgressCallback // {{{
01211 {
01212         private:
01213 
01214                 vuMarchingCubes *_mc;
01215 
01216         public:
01217 
01218                 vuMCMCBProgressCallback(vuMarchingCubes *mc);
01219 
01220                 virtual void SetText(const char *txt);
01221                 virtual void Start();
01222                 virtual void Update(int val);
01223                 virtual void End();
01224 
01225 }; // }}} vuMCMCBProgressCallback
01226 
01227 class vuMCMCBHistoCallback : public MCBHistoCallback // {{{
01228 {
01229 
01230         private:
01231 
01232                 vuMarchingCubes *_mc;
01233 
01234         public:
01235 
01236                 vuMCMCBHistoCallback(vuMarchingCubes *mc);
01237 
01238                 virtual void Clear();
01239                 virtual void Inc(int idx, int val = 1);
01240                 virtual void Flush();
01241 
01242 }; // }}} vuMCMCBHistoCallback
01243 
01244 // }}} GUI
01245 
01246 
01247 // {{{ vuMarchingCubes Decorators:
01248 
01249 
01250 class vuMCCubeChange : public vuMCDecorator<int> // {{{
01251 {
01252 
01253         private:
01254 
01255                 vuMarchingCubes* _mc;
01256 
01257         public:
01258 
01260                 vuMCCubeChange(vuMarchingCubes* mc);
01261 
01263                 virtual void operator()(int c);
01264 
01265 }; /* }}} vuMCCubeChange */
01266 
01267 
01268 class vuMCRender : public vuMCDecorator<float> // {{{
01269 {
01270 
01271         private:
01272 
01273                 vuMarchingCubes* _mc;
01274 
01276                 vuMCRender() {}
01277 
01278         public:
01279 
01281                 vuMCRender(vuMarchingCubes* mc);
01282 
01284                 virtual void operator()(float);
01285 
01286 }; // }}} vuMCRender
01287 
01288 
01289 class vuMCResize : public vuMCDecorator<int> // {{{
01290 {
01291 
01292         private:
01293 
01294                 vuMarchingCubes* _mc;
01295 
01297                 vuMCResize() {}
01298 
01299         public:
01300 
01302                 vuMCResize(vuMarchingCubes* mc);
01303 
01305                 virtual void operator()(int);
01306 
01307 }; // }}} vuMCResize
01308 
01309 
01310 class vuMCBackgroundChange : public vuMCDecorator<float> // {{{
01311 {
01312 
01313         private:
01314 
01315                 vuMarchingCubes* _mc;
01316 
01318                 vuMCBackgroundChange() {}
01319 
01320         public:
01321 
01323                 vuMCBackgroundChange(vuMarchingCubes* mc);
01324 
01326                 virtual void operator()(float);
01327 
01328 }; // }}} vuMCBackgroundChange
01329 
01330 
01331 class vuMCProgress : public vuMCDecorator<float> // {{{
01332 {
01333 
01334         private:
01335 
01336                 vuMarchingCubes* _mc;
01337 
01339                 vuMCProgress() {}
01340 
01341         public:
01342 
01343                 vuMCProgress(vuMarchingCubes* mc);
01344 
01345                 virtual void operator()(float);
01346 
01347 }; // }}} vuMCProgress
01348 
01349 
01350 class vuMCFrameChange : public vuMCDecorator<float> // {{{
01351 {
01352 
01353         private:
01354 
01355                 vuMarchingCubes* _mc;
01356 
01358                 vuMCFrameChange() {}
01359 
01360         public:
01361 
01362                 vuMCFrameChange(vuMarchingCubes* mc);
01363 
01364                 virtual void operator()(float);
01365 
01366 }; // }}} vuMCFrameChange
01367 
01368 
01369 class vuMCThresChange : public vuMCDecorator<float> // {{{
01370 {
01371 
01372         private:
01373 
01374                 vuMarchingCubes* _mc;
01375 
01377                 vuMCThresChange();
01378 
01379         public:
01380 
01381                 vuMCThresChange(vuMarchingCubes* mc);
01382 
01383                 virtual void operator()(float);
01384 
01385 }; // }}} vuMCThresChange
01386 
01387 
01388 class vuMCNormalLengthChange : public vuMCDecorator<float> // {{{
01389 {
01390 
01391         private:
01392 
01393                 vuMarchingCubes* _mc;
01394 
01396                 vuMCNormalLengthChange();
01397 
01398         public:
01399 
01400                 vuMCNormalLengthChange(vuMarchingCubes* mc);
01401 
01402                 virtual void operator()(float);
01403 
01404 }; // }}} vuMCNormalLengthChange
01405 
01406 
01407 class vuMCObjectColorChange : public vuMCDecorator<float> // {{{
01408 {
01409 
01410         private:
01411 
01412                 vuMarchingCubes* _mc;
01413 
01415                 vuMCObjectColorChange();
01416 
01417         public:
01418 
01419                 vuMCObjectColorChange(vuMarchingCubes* mc);
01420 
01421                 virtual void operator()(float);
01422 
01423 }; // }}} vuMCObjectColorChange
01424 
01425 
01426 class vuMCLineColorChange : public vuMCDecorator<float> // {{{
01427 {
01428 
01429         private:
01430 
01431                 vuMarchingCubes* _mc;
01432 
01434                 vuMCLineColorChange();
01435 
01436         public:
01437 
01438                 vuMCLineColorChange(vuMarchingCubes* mc);
01439 
01440                 virtual void operator()(float);
01441 
01442 }; // }}} vuMCLineColorChange
01443 
01444 
01445 class vuMCCubeSizeChange : public vuMCDecorator<float> // {{{
01446 {
01447 
01448         private:
01449 
01450                 vuMarchingCubes* _mc;
01451 
01453                 vuMCCubeSizeChange();
01454 
01455         public:
01456 
01457                 vuMCCubeSizeChange(vuMarchingCubes* mc);
01458 
01459                 virtual void operator()(float);
01460 
01461 }; // }}} vuMCCubeSizeChange
01462 
01463 
01464 class vuMCSelectType : public vuMCDecorator<int> // {{{
01465 {
01466 
01467         private:
01468 
01469                 vuMarchingCubes* _mc;
01470 
01472                 vuMCSelectType() {}
01473 
01474         public:
01475 
01477                 vuMCSelectType(vuMarchingCubes* mc);
01478 
01480                 virtual void operator()(int);
01481 
01482 }; // }}} vuMCSelectType
01483 
01484 
01485 // }}} vuMarchingCubes Decorators
01486 
01487 
01488 #endif
01489 
01490 
01491 // vim:fdm=marker:fdc=3:tw=100

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