00001 #ifndef __TRANSFER_FUNCTIONS_WIDGET__ 00002 #define __TRANSFER_FUNCTIONS_WIDGET__ 00003 00004 #include <map> 00005 00006 #include <QtGui/QWidget> 00007 #include <QtGui/QVBoxLayout> 00008 #include <QtGui/QHBoxLayout> 00009 #include <QtGui/QComboBox> 00010 #include <QtGui/QStackedWidget> 00011 00012 #include "logger.h" 00013 #include "transferControlWidget.h" 00014 00015 using namespace std; 00016 00017 00018 #define CONST_HORIZONTAL_SPACING 20 00019 #define CONST_VERTICAL_SPACING 60 00020 00021 class TransferFunctionsWidget: public QWidget 00022 { 00023 Q_OBJECT 00024 00025 public: 00026 TransferFunctionsWidget(QWidget *parent = 0); 00027 ~TransferFunctionsWidget(); 00028 00029 void createTransferFunctions(map<string, Histogram *> &histogramMap); 00030 00031 void saveTransferFunctions(const char *filename); 00032 void loadTransferFunctions(const char *filename); 00033 00034 static int getWidth() {return TransferControlWidget::getWidth() + CONST_HORIZONTAL_SPACING;} 00035 static int getHeight() {return TransferControlWidget::getHeight() + CONST_VERTICAL_SPACING;} 00036 00037 map<string, GLuint> getTransferFunctions(); 00038 00039 public slots: 00040 void selectionChanged(const QString &); 00041 void texturesChanged(); 00042 00043 signals: 00044 void transferFunctionsChanged(); 00045 00046 00047 private: 00048 void updateDisplay(); 00049 00050 map<string, TransferControlWidget *> widgetMap; 00051 map<string, GLuint> resultMap; 00052 00053 TransferControlWidget *selectedWidget; 00054 00055 QVBoxLayout *myLayout; 00056 QComboBox *transferSelection; 00057 QStackedWidget *transferStack; 00058 }; 00059 00060 #endif