00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CHOP_Handle__
00020 #define __CHOP_Handle__
00021
00022 #include "CHOP_API.h"
00023 #include <UT/UT_PtrArray.h>
00024 #include <UT/UT_Color.h>
00025 #include "CHOP_Node.h"
00026
00027 class CHOP_Handle;
00028 class CHOP_Node;
00029
00030 typedef UT_PtrArray<CHOP_Handle *> CHOP_HandleList;
00031
00032 enum CHOP_HandleLook {
00033
00034 HANDLE_GUIDE = 0,
00035 HANDLE_BOX,
00036 HANDLE_SQUARE
00037 };
00038
00039 enum CHOP_HandleMotion {
00040
00041 HANDLE_HORIZONTAL = 0,
00042 HANDLE_VERTICAL,
00043 HANDLE_PLANE
00044 };
00045
00046 #define HANDLE_LABEL_LEFT 0x01
00047 #define HANDLE_LABEL_RIGHT 0
00048
00049 #define HANDLE_LABEL_TOP 0x02
00050 #define HANDLE_LABEL_BOTTOM 0
00051
00052 #define HANDLE_BAR 0x04
00053 #define HANDLE_GRAPH 0
00054
00055 #define HANDLE_WIDTH_END 0x08
00056
00057 #define DEFAULT_FLAGS (HANDLE_LABEL_LEFT | \
00058 HANDLE_LABEL_BOTTOM | HANDLE_GRAPH)
00059
00060 class
00061 CHOP_HandleData
00062 {
00063 public:
00064
00065 int shift;
00066 float xoffset;
00067 float yoffset;
00068 CL_Unit unit;
00069 };
00070
00071 class CHOP_API CHOP_Handle {
00072
00073 public:
00074
00075 CHOP_Handle(CHOP_Node *dad,
00076 const char *name,
00077 int id,
00078 float xoffset,
00079 float yoffset = 0,
00080 CHOP_HandleLook look = HANDLE_BOX,
00081 CHOP_HandleMotion motion = HANDLE_HORIZONTAL,
00082 int type_flag = DEFAULT_FLAGS
00083 );
00084
00085
00086
00087 CHOP_Handle(void);
00088 ~CHOP_Handle();
00089 unsigned operator== (const CHOP_Handle &v) const;
00090 CHOP_Handle &operator= (const CHOP_Handle &v);
00091
00092 void setColorOffset(int offset)
00093 { myColorOffset = offset; }
00094
00095 UT_Color getColor() const
00096 { return myParent->getColor(myColorOffset); }
00097
00098 CHOP_Node *getCHOP() { return myParent; }
00099 const char *getName() const { return myName; }
00100 unsigned int getId() const { return myId; }
00101 float getXoffset() const { return myXoffset; }
00102 float getYoffset() const { return myYoffset; }
00103 CHOP_HandleLook getLook() const { return myLook; }
00104 CHOP_HandleMotion getMotion() const { return myMotion; }
00105
00106 int isLabelLeft() const
00107 { return (myFlags & HANDLE_LABEL_LEFT) ? 1:0; }
00108
00109 int isLabelTop() const
00110 { return (myFlags & HANDLE_LABEL_TOP) ? 1:0; }
00111
00112 int isBar() const
00113 { return (myFlags & HANDLE_BAR) ? 1:0; }
00114
00115 int isWidthEnd() const
00116 { return (myFlags & HANDLE_WIDTH_END) ? 1:0; }
00117
00118 void setSubParent(int idx)
00119 { mySubParentIdx = idx; }
00120
00121 int getSubParent(void) const
00122 { return mySubParentIdx; }
00123
00124 int isSelected() const
00125 { return mySelected; }
00126
00127 void setSelected(int yesno)
00128 { mySelected = yesno; }
00129
00130 private:
00131
00132 CHOP_Node *myParent;
00133 int mySubParentIdx;
00134 char *myName;
00135 unsigned int myId;
00136
00137 float myXoffset;
00138 float myYoffset;
00139 CHOP_HandleLook myLook;
00140 CHOP_HandleMotion myMotion;
00141 int myColorOffset;
00142
00143 unsigned int myFlags;
00144 char mySelected;
00145
00146 };
00147
00148 #endif
00149