MeVisLabToolboxReference
|
00001 // **InsertLicense** code 00002 //---------------------------------------------------------------------------------- 00005 00010 //---------------------------------------------------------------------------------- 00011 00012 #ifndef __CSOManager_H 00013 #define __CSOManager_H 00014 00015 #include "../CSOList.h" 00016 00017 #include "../CSORules/CSOGroupRules.h" 00018 #include "../CSORules/CSOListRules.h" 00019 00020 00021 ML_START_NAMESPACE 00022 00024 00028 class MLCSO_EXPORT CSOManager : public Module 00029 { 00030 00031 public: 00032 00034 CSOManager(int numInImages=0,int numOutImages=0); 00035 00037 void updateManager(); 00038 00040 void updateCSOManager(); 00042 void updateGroupManager(); 00043 00044 00046 inline int getSelectionPathPointColoringMode() { return _selectionPathPointColoringModeFld->getEnumValue(); } 00048 inline int getSelectionPathPointWidthMode() { return _selectionPathPointWidthModeFld->getEnumValue(); } 00050 void getSelectionPathPointColor(Vector3& origColor); 00052 void getSelectionPathPointWidth(float& origLineWidth); 00053 00055 Vector3 getSelectedPathPointsFixedColor() const { return _selectionFixedPathPointColorFld->getVector3Value(); } 00057 float getSelectedPathPointsBrightenValue() const { return _selectionWidenPathPointWidthFld->getFloatValue(); } 00059 float getSelectedPathPointsFixedLineWidth() const { return _selectionFixedPathPointWidthFld->getFloatValue(); } 00061 float getSelectedPathPointsWidenValue() const { return _selectionWidenPathPointWidthFld->getFloatValue(); } 00062 00064 Vector3 getSelectedSeedPointFixedColor() const { return _selectedSeedPointFixedColorFld->getVector3Value(); } 00066 float getSelectedSeedPointBrightenValue() const { return _selectedSeedPointBrightenColorFld->getFloatValue(); } 00068 float getSelectedSeedPointFixedSize() const { return _selectedSeedPointSizeFld->getFloatValue(); } 00070 float getSelectedSeedPointEnlargeValue() const { return _selectedSeedPointEnlargeSizeFld->getFloatValue(); } 00071 00073 inline int getSelectedSeedPointColoringMode() { return _selectedSeedPointColoringModeFld->getEnumValue(); } 00075 inline int getSelectedSeedPointSizeMode() { return _selectedSeedPointSizeModeFld->getEnumValue(); } 00077 void getSelectedSeedPointColor(Vector3& origColor); 00079 void getSelectedSeedPointSize(float& origSize); 00080 00082 00084 std::string getCSODefaultLabel(); 00085 00087 inline std::string getCSODefaultDescription() const { return _csoDefaultDescriptionFld->getStringValue(); } 00089 inline bool getCSODefaultShowState() const { return _csoDefaultShowStateFld->getBoolValue(); } 00091 inline bool getCSODefaultVoxelizeState() const { return _csoDefaultVoxelizeStateFld->getBoolValue(); } 00093 inline bool getCSODefaultEditableState() const { return _csoDefaultEditableStateFld->getBoolValue(); } 00094 00096 00098 std::string getGroupDefaultLabel(); 00099 00101 inline std::string getGroupDefaultDescription() const { return _groupDefaultDescriptionFld->getStringValue(); } 00103 inline bool getGroupDefaultUseTimePointIndex() const { return _groupDefaultUseTimePointIndexFld->getBoolValue(); } 00105 inline int getGroupDefaultTimePointIndex() const { return _groupDefaultTimePointIndexFld->getIntValue(); } 00107 inline bool getGroupDefaultUseShowState() const { return _groupDefaultUseShowStateFld->getBoolValue(); } 00109 inline bool getGroupDefaultShowState() const { return _groupDefaultShowStateFld->getBoolValue(); } 00111 inline bool getGroupDefaultUseVoxelizeState() const { return _groupDefaultUseVoxelizeStateFld->getBoolValue(); } 00113 inline bool getGroupDefaultVoxelizeState() const { return _groupDefaultVoxelizeStateFld->getBoolValue(); } 00115 inline bool getGroupDefaultUseEditableState() const { return _groupDefaultUseEditableStateFld->getBoolValue(); } 00117 inline bool getGroupDefaultEditableState() const { return _groupDefaultEditableStateFld->getBoolValue(); } 00118 00120 inline bool getGroupDefaultUsePathPointStyle() const { return _groupDefaultUsePathPointStyleFld->getBoolValue(); } 00121 inline CSOLineStyle getGroupDefaultPathPointStyle() const { return static_cast<CSOLineStyle>(_groupDefaultPathPointStyleFld->getEnumValue()); } 00123 inline bool getGroupDefaultUsePathPointWidth() const { return _groupDefaultUsePathPointWidthFld->getBoolValue(); } 00124 inline float getGroupDefaultPathPointWidth() const { return _groupDefaultPathPointWidthFld->getFloatValue(); } 00126 inline bool getGroupDefaultUsePathPointColor() const { return _groupDefaultUsePathPointColorFld->getBoolValue(); } 00127 inline Vector3 getGroupDefaultPathPointColor() const { return _groupDefaultPathPointColorFld->getVector3Value(); } 00129 inline bool getGroupDefaultUsePathPointAlpha() const { return _groupDefaultUsePathPointAlphaFld->getBoolValue(); } 00130 inline float getGroupDefaultPathPointAlpha() const { return _groupDefaultPathPointAlphaFld->getFloatValue(); } 00131 00133 inline bool getGroupDefaultUseSeedPointStyle() const { return _groupDefaultUseSeedPointStyleFld->getBoolValue(); } 00134 inline int getGroupDefaultSeedPointStyle() const { return _groupDefaultSeedPointStyleFld->getEnumValue(); } 00136 inline bool getGroupDefaultUseSeedPointSize() const { return _groupDefaultUseSeedPointSizeFld->getBoolValue(); } 00137 inline float getGroupDefaultSeedPointSize() const { return _groupDefaultSeedPointSizeFld->getFloatValue(); } 00139 inline bool getGroupDefaultUseSeedPointColor() const { return _groupDefaultUseSeedPointColorFld->getBoolValue(); } 00140 inline Vector3 getGroupDefaultSeedPointColor() const { return _groupDefaultSeedPointColorFld->getVector3Value(); } 00142 inline bool getGroupDefaultUseSeedPointAlpha() const { return _groupDefaultUseSeedPointAlphaFld->getBoolValue(); } 00143 inline float getGroupDefaultSeedPointAlpha() const { return _groupDefaultSeedPointAlphaFld->getFloatValue(); } 00144 00146 inline bool getGroupDefaultUseVoxelWriteMode() const { return _groupDefaultUseVoxelWriteModeFld->getBoolValue(); } 00147 inline int getGroupDefaultVoxelWriteMode() const { return _groupDefaultVoxelWriteModeFld->getEnumValue(); } 00149 inline bool getGroupDefaultUseVoxelWriteValue() const { return _groupDefaultUseVoxelWriteValueFld->getBoolValue(); } 00150 inline float getGroupDefaultVoxelWriteValue() const { return _groupDefaultVoxelWriteValueFld->getFloatValue(); } 00151 00152 00154 inline int getGroupDefaultNumMaximumCSOs() const { return _groupDefaultNumMaximumCSOsFld->getIntValue(); } 00156 inline CSOGroupOverflowHandling getGroupDefaultOverflowHandling() const { return static_cast<CSOGroupOverflowHandling>(_groupDefaultOverflowHandlingFld->getEnumValue()); } 00158 inline CSORemoveHandling getGroupDefaultRemoveFromGroupHandling() const { return static_cast<CSORemoveHandling>(_groupDefaultRemoveFromGroupHandlingFld->getEnumValue()); } 00159 00161 inline CSORemoveEmptyGroupHandling getDefaultRemoveEmptyGroupHandling() const { return static_cast<CSORemoveEmptyGroupHandling>(_listDefaultRemoveEmptyGroupHandlingFld->getEnumValue()); } 00162 00164 00165 inline bool getGroupDefaultUseMarkerSettings() const { return _groupDefaultUseMarkerSettingsFld->getBoolValue(); } 00167 inline bool getGroupDefaultUseVisuals() const { return _groupDefaultUseVisualsFld->getBoolValue(); } 00169 inline bool getGroupDefaultUseVoxelWrite() const { return _groupDefaultUseVoxelWriteFld->getBoolValue(); } 00171 00172 protected: 00173 00175 virtual ~CSOManager(); 00176 00178 virtual void activateAttachments(); 00179 00181 virtual void handleNotification(Field* field); 00182 00184 void setInternalVariables(); 00185 00186 private: 00187 00188 /* FIELDS */ 00189 00191 BaseField* _outCSOListFld; 00193 BaseField* _inCSOListFld; 00194 00196 BoolField* _workDirectlyOnInputCSOListFld; 00197 00199 StringField* _csoDisplayTreeFld; 00201 StringField* _groupDisplayTreeFld; 00203 BoolField* _shouldUpdateCsoDisplayTreeFld; 00205 BoolField* _shouldUpdateGroupDisplayTreeFld; 00206 00208 StringField* _csoSelectedItemsFld; 00210 StringField* _groupSelectedItemsFld; 00212 StringField* _groupSelectedCSOItemsFld; 00214 StringField* _csoSelectedGroupItemsFld; 00215 00217 BoolField* _enableUndoRedoFld; 00219 NotifyField* _triggerUndoFld; 00221 NotifyField* _triggerRedoFld; 00223 IntField* _numUndosFld; 00225 IntField* _numRedosFld; 00227 IntField* _undoStackLimitFld; 00228 00230 NotifyField* _addCSOtoGroupFld; 00232 NotifyField* _breakCSOFromGroupFld; 00233 00235 NotifyField* _removeAllCSOsAndGroupsFld; 00236 00238 NotifyField* _csoRemoveSelectedFld; 00240 NotifyField* _csoCopySelectedFld; 00242 NotifyField* _csoPasteFld; 00243 00245 NotifyField* _groupCreateNewFld; 00247 BoolField* _selectLastCreatedGroupFld; 00249 NotifyField* _groupRemoveSelectedFld; 00251 NotifyField* _groupCopySelectedFld; 00253 NotifyField* _groupPasteFld; 00254 00256 EnumField* _selectionPathPointColoringModeFld; 00258 EnumField* _selectionPathPointWidthModeFld; 00260 FloatField* _selectionBrightenPathPointColorFld; 00262 ColorField* _selectionFixedPathPointColorFld; 00264 FloatField* _selectionWidenPathPointWidthFld; 00266 FloatField* _selectionFixedPathPointWidthFld; 00267 00269 EnumField* _selectedSeedPointColoringModeFld; 00271 EnumField* _selectedSeedPointSizeModeFld; 00273 FloatField* _selectedSeedPointBrightenColorFld; 00275 ColorField* _selectedSeedPointFixedColorFld; 00277 FloatField* _selectedSeedPointEnlargeSizeFld; 00279 FloatField* _selectedSeedPointSizeFld; 00280 00282 IntField* _csoSingleIdFld; 00284 StringField* _csoSingleLabelFld; 00286 StringField* _csoSingleDescriptionFld; 00287 00289 IntField* _csoSingleTimePointIndexFld; 00291 BoolField* _csoSingleShowStateFld; 00293 BoolField* _csoSingleVoxelizeStateFld; 00295 BoolField* _csoSingleEditableStateFld; 00296 00298 EnumField* _csoSinglePathPointStyleFld; 00300 FloatField* _csoSinglePathPointWidthFld; 00302 ColorField* _csoSinglePathPointColorFld; 00304 FloatField* _csoSinglePathPointAlphaFld; 00305 00307 EnumField* _csoSingleSeedPointStyleFld; 00309 FloatField* _csoSingleSeedPointSizeFld; 00311 ColorField* _csoSingleSeedPointColorFld; 00313 FloatField* _csoSingleSeedPointAlphaFld; 00314 00316 EnumField* _csoSingleVoxelWriteModeFld; 00318 FloatField* _csoSingleVoxelWriteValueFld; 00319 00321 StringField* _csoDefaultLabelFld; 00323 BoolField* _csoDefaultLabelAddUniqueIdFld; 00325 StringField* _csoDefaultLabelUniqueIdFormatFld; 00327 BoolField* _csoDefaultLabelAddUniqueIdAlwaysFld; 00328 00330 StringField* _csoDefaultDescriptionFld; 00332 BoolField* _csoDefaultShowStateFld; 00334 BoolField* _csoDefaultVoxelizeStateFld; 00336 BoolField* _csoDefaultEditableStateFld; 00337 00339 NotifyField* _csoSingleApplyFld; 00340 00341 00343 IntField* _groupSingleIdFld; 00345 StringField* _groupSingleLabelFld; 00347 StringField* _groupSingleDescriptionFld; 00348 00350 BoolField* _groupSingleUseTimePointIndexFld; 00352 IntField* _groupSingleTimePointIndexFld; 00354 BoolField* _groupSingleUseShowStateFld; 00356 BoolField* _groupSingleShowStateFld; 00358 BoolField* _groupSingleUseVoxelizeStateFld; 00360 BoolField* _groupSingleVoxelizeStateFld; 00362 BoolField* _groupSingleUseEditableStateFld; 00364 BoolField* _groupSingleEditableStateFld; 00365 00366 00368 BoolField* _groupSingleUsePathPointStyleFld; 00369 EnumField* _groupSinglePathPointStyleFld; 00371 FloatField* _groupSinglePathPointWidthFld; 00372 BoolField* _groupSingleUsePathPointWidthFld; 00374 BoolField* _groupSingleUsePathPointColorFld; 00375 ColorField* _groupSinglePathPointColorFld; 00377 BoolField* _groupSingleUsePathPointAlphaFld; 00378 FloatField* _groupSinglePathPointAlphaFld; 00379 00380 00381 00383 BoolField* _groupSingleUseSeedPointStyleFld; 00384 EnumField* _groupSingleSeedPointStyleFld; 00386 BoolField* _groupSingleUseSeedPointSizeFld; 00387 FloatField* _groupSingleSeedPointSizeFld; 00389 BoolField* _groupSingleUseSeedPointColorFld; 00390 ColorField* _groupSingleSeedPointColorFld; 00392 BoolField* _groupSingleUseSeedPointAlphaFld; 00393 FloatField* _groupSingleSeedPointAlphaFld; 00394 00396 BoolField* _groupSingleUseVoxelWriteModeFld; 00398 EnumField* _groupSingleVoxelWriteModeFld; 00400 BoolField* _groupSingleUseVoxelWriteValueFld; 00401 FloatField* _groupSingleVoxelWriteValueFld; 00402 00404 IntField* _groupSingleNumMaximumCSOsFld; 00406 EnumField* _groupSingleOverflowHandlingFld; 00408 EnumField* _groupSingleRemoveFromGroupHandlingFld; 00410 EnumField* _groupSingleDeleteGroupCSOHandlingFld; 00411 00413 StringField* _groupDefaultLabelFld; 00415 BoolField* _groupDefaultLabelAddUniqueIdFld; 00417 StringField* _groupDefaultLabelUniqueIdFormatFld; 00419 BoolField* _groupDefaultLabelAddUniqueIdAlwaysFld; 00420 00422 StringField* _groupDefaultDescriptionFld; 00423 00425 BoolField* _groupDefaultUseTimePointIndexFld; 00427 IntField* _groupDefaultTimePointIndexFld; 00429 BoolField* _groupDefaultUseShowStateFld; 00431 BoolField* _groupDefaultShowStateFld; 00433 BoolField* _groupDefaultUseVoxelizeStateFld; 00435 BoolField* _groupDefaultVoxelizeStateFld; 00437 BoolField* _groupDefaultUseEditableStateFld; 00439 BoolField* _groupDefaultEditableStateFld; 00440 00442 BoolField* _groupDefaultUsePathPointStyleFld; 00443 EnumField* _groupDefaultPathPointStyleFld; 00445 BoolField* _groupDefaultUsePathPointWidthFld; 00446 FloatField* _groupDefaultPathPointWidthFld; 00448 BoolField* _groupDefaultUsePathPointColorFld; 00449 ColorField* _groupDefaultPathPointColorFld; 00451 BoolField* _groupDefaultUsePathPointAlphaFld; 00452 FloatField* _groupDefaultPathPointAlphaFld; 00453 00455 BoolField* _groupDefaultUseSeedPointSizeFld; 00456 FloatField* _groupDefaultSeedPointSizeFld; 00458 BoolField* _groupDefaultUseSeedPointStyleFld; 00459 EnumField* _groupDefaultSeedPointStyleFld; 00461 BoolField* _groupDefaultUseSeedPointColorFld; 00462 ColorField* _groupDefaultSeedPointColorFld; 00464 BoolField* _groupDefaultUseSeedPointAlphaFld; 00465 FloatField* _groupDefaultSeedPointAlphaFld; 00466 00468 BoolField* _groupDefaultUseVoxelWriteModeFld; 00470 EnumField* _groupDefaultVoxelWriteModeFld; 00472 BoolField* _groupDefaultUseVoxelWriteValueFld; 00473 FloatField* _groupDefaultVoxelWriteValueFld; 00474 00476 IntField* _groupDefaultNumMaximumCSOsFld; 00478 EnumField* _groupDefaultOverflowHandlingFld; 00480 EnumField* _groupDefaultRemoveFromGroupHandlingFld; 00481 00483 NotifyField* _groupSingleApplyFld; 00484 00486 00488 EnumField* _listSingleRemoveEmptyGroupHandlingFld; 00489 00491 EnumField* _listDefaultRemoveEmptyGroupHandlingFld; 00492 00494 00496 BoolField* _useSelectionCSONotificationFld; 00498 BoolField* _useSelectionGroupNotificationFld; 00500 BoolField* _useFinishedCSONotificationFld; 00502 BoolField* _useFinishedGroupNotificationFld; 00504 BoolField* _useCSOMovedNotificationFld; 00506 BoolField* _useRepaintNotificationFld; 00508 BoolField* _useInteractionInitNotificationFld; 00510 BoolField* _useNewCSOStartedNotificationFld; 00511 00513 NotifyField* _notifyOnSelectionCSOFld; 00515 NotifyField* _notifyOnSelectionGroupFld; 00517 NotifyField* _notifyOnFinishedCSOFld; 00519 NotifyField* _notifyOnFinishedGroupFld; 00521 NotifyField* _notifyOnCSOMovedFld; 00523 NotifyField* _notifyOnRepaintFld; 00525 NotifyField* _notifyOnInteractionInitFld; 00527 NotifyField* _notifyOnStartNewCSOFld; 00528 00530 00532 BoolField* _enableSelectionNotificationFld; 00534 BoolField* _enableFinishedNotificationFld; 00536 BoolField* _enableCSOMovedNotificationFld; 00538 BoolField* _enableRepaintNotificationFld; 00539 00541 NotifyField* _triggerSelectionNotificationFld; 00543 NotifyField* _triggerFinishedNotificationFld; 00545 NotifyField* _triggerCSOMovedNotificationFld; 00547 NotifyField* _triggerRepaintNotificationFld; 00549 BoolField* _outputApplicationEventsDebugFld; 00550 00552 00553 BoolField* _groupDefaultUseVoxelWriteFld; 00554 BoolField* _groupSingleUseVoxelWriteFld; 00556 BoolField* _groupSingleUseVisualsFld; 00558 BoolField* _groupSingleUseMarkerSettingsFld; 00560 BoolField* _groupDefaultUseVisualsFld; 00562 BoolField* _groupDefaultUseMarkerSettingsFld; 00564 00566 00567 /* MEMBER VARIABLES */ 00568 00571 struct GroupCSOPair { 00572 CSO* cso; 00573 CSOGroup* group; 00574 }; 00575 00577 CSOListPtr _outCSOList; 00579 CSOListPtr _inCSOList; 00580 00582 bool _isOutputCSOListOwner; 00584 bool _isWorkingDirectlyOnInputCSOList; 00585 00587 std::vector<GroupCSOPair>_csoSelectedGroups; 00589 std::vector<GroupCSOPair>_groupSelectedCSOs; 00590 00592 std::vector<CSO*>_copiedCSOs; 00594 std::vector<CSOGroup*>_copiedGroups; 00595 00597 bool _isInNotificationCB; 00598 00600 bool _useSelectionCSONotification; 00602 bool _useSelectionGroupNotification; 00604 bool _useFinishedCSONotification; 00606 bool _useFinishedGroupNotification; 00608 bool _useCSOMovedNotification; 00610 bool _useRepaintNotification; 00612 bool _useInteractionInitNotification; 00614 bool _useNewCSOStartedNotification; 00615 00617 bool _selectedCSOItemsChangedFromField; 00619 bool _selectedCSOGroupItemsChangedFromField; 00620 00622 bool _isNotifyingItself; 00623 00624 /* METHODS */ 00625 00627 static void _csoListNotificationCB(void* userData, int notificationFlag); 00628 00630 void _updateManagerFields(); 00631 00633 void _updateCSOManagerFields(); 00635 void _updateGroupManagerFields(); 00636 00638 void _updateInformationFields(); 00639 00642 bool _parseCSOSelectedItemsString(); 00645 bool _parseGroupSelectedItemsString(); 00646 00648 void _parseStringToVector(std::string toParse, std::vector<int>& parsedIds); 00649 00651 void _parseCSOGroupToVector(); 00653 void _parseGroupCSOToVector(); 00654 00656 void _parsePair(std::string toParse, int& firstId, int& secondId); 00658 void _addPairToVector(int csoId, int groupId, std::vector<GroupCSOPair>& gcPairVec); 00659 00660 00663 void _openUndoRedoGroup(); 00666 void _closeUndoRedoGroup(); 00667 00669 void _createCSOString(); 00671 void _createGroupString(); 00672 00674 void _updateCSOInformationFields(); 00676 void _updateGroupInformationFields(); 00677 00679 void _copySelectedCSOs(); 00681 void _copySelectedGroups(); 00683 void _pasteCopiedCSOs(); 00685 void _pasteCopiedGroups(); 00686 00688 void _addSelectedCSOtoGroup(); 00690 void _breakSelectedCSOFromGroup(); 00691 00693 void _removeCSOs(); 00695 void _removeGroups(); 00696 00698 void _createGroup(); 00699 00700 static void baseEventCB(void* userData, BaseEvent* event); 00701 00702 int _eventGroupCounter; 00703 00704 ML_MODULE_CLASS_HEADER(CSOManager); 00705 }; 00706 00708 00709 00710 ML_END_NAMESPACE 00711 00712 00713 #endif // __CSOManager_H 00714