00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _CIvfUIButton_h_
00026 #define _CIvfUIButton_h_
00027
00028 #include <ivf3dui/IvfUIButtonBase.h>
00029
00030 #include <ivfmath/IvfVec3d.h>
00031
00032 #include <ivf/IvfTransform.h>
00033
00034 IvfSmartPointer(CIvfUIButton);
00035
00036 class IVF3DUI_API CIvfUIButton : public CIvfUIButtonBase {
00037 public:
00038 enum TVisualAction {
00039 VA_SCALED,
00040 VA_MOVING,
00041 VA_SHAPES
00042 };
00043 private:
00044 TVisualAction m_visualAction;
00045 CIvfVec3d m_movementDirection;
00046 CIvfVec3d m_originalPosition;
00047 double m_movementDistance;
00048
00049 CIvfShapePtr m_upShape;
00050 CIvfShapePtr m_downShape;
00051 CIvfShapePtr m_shape;
00052
00053 CIvfTransformPtr m_movementXfm;
00054
00055 void visualUp();
00056 void visualDown();
00057 void visualRestore();
00058
00059 public:
00060 CIvfUIButton();
00061 virtual ~CIvfUIButton();
00062
00063 IvfClassInfo("CIvfUIButton",CIvfUIButtonBase);
00064
00065 void setDownShape(CIvfShape* shape);
00066 void setUpShape(CIvfShape* shape);
00067 void setShape(CIvfShape* shape);
00068 void setMovementDirection(CIvfVec3d vec);
00069 void setVisualAction(TVisualAction action);
00070 double getMovementDistance();
00071 void setMovementDistance(double dist);
00072 void setMovementDirection(double vx, double vy, double vz);
00073
00074 virtual void doControlLeave(CIvfVec3d vec);
00075 virtual void doControlOver(CIvfVec3d vec);
00076 virtual void doControlDown(CIvfVec3d vec, int button);
00077 virtual void doControlUp(CIvfVec3d vec);
00078
00079 virtual void doStateChange();
00080 };
00081
00082 #endif