00001
00002 #ifndef VISATTRIBUTE_H
00003 #define VISATTRIBUTE_H 1
00004
00005
00006 #include "VisSvc/Color.h"
00007
00020 class VisAttribute {
00021
00022 public:
00023 enum Visibility {VISIBLE, NOT_VISIBLE, NO_VISIBILITY};
00024 enum OpenStatus {OPENED, CLOSED, NO_STATUS};
00025 enum DisplayMode {PLAIN, WIRE_FRAME, NO_MODE};
00026
00027 public:
00029 VisAttribute () :
00030 m_color(),
00031 m_visible(NO_VISIBILITY),
00032 m_openStatus(NO_STATUS),
00033 m_displayMode(NO_MODE)
00034 {};
00035
00037 VisAttribute (Visibility visible,
00038 OpenStatus openStatus,
00039 DisplayMode displayMode,
00040 Color color) :
00041 m_color(color),
00042 m_visible(visible),
00043 m_openStatus(openStatus),
00044 m_displayMode(displayMode)
00045 {};
00046
00051 const Color color() const {
00052 return m_color;
00053 }
00054
00059 const Visibility visible() const {
00060 return m_visible;
00061 }
00062
00067 const OpenStatus openStatus() const {
00068 return m_openStatus;
00069 }
00070
00075 const DisplayMode displayMode() const {
00076 return m_displayMode;
00077 }
00078
00085 void merge(const VisAttribute attr) {
00086 if (!m_color.isValid()) m_color = attr.color();
00087 if (NO_VISIBILITY == m_visible) m_visible = attr.visible();
00088 if (NO_STATUS == m_openStatus) m_openStatus = attr.openStatus();
00089 if (NO_MODE == m_displayMode) m_displayMode = attr.displayMode();
00090 return;
00091 }
00092
00096 bool operator== (const VisAttribute& v) const {
00097 return m_visible == v.visible() &&
00098 m_openStatus == v.openStatus() &&
00099 m_displayMode == v.displayMode() &&
00100 m_color == v.color();
00101 }
00102
00106 bool operator!= (const VisAttribute& v) const {
00107 return !this->operator==(v);
00108 }
00109
00110 private:
00111 Color m_color;
00112 Visibility m_visible;
00113 OpenStatus m_openStatus;
00114 DisplayMode m_displayMode;
00115
00116 };
00117 #endif // VISATTRIBUTE_H