00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00020 #ifndef __vtkKWHSVColorSelector_h
00021 #define __vtkKWHSVColorSelector_h
00022
00023 #include "vtkKWCompositeWidget.h"
00024
00025 class vtkKWCanvas;
00026 class vtkKWLabel;
00027
00028 class KWWIDGETS_EXPORT vtkKWHSVColorSelector : public vtkKWCompositeWidget
00029 {
00030 public:
00031 static vtkKWHSVColorSelector* New();
00032 vtkTypeRevisionMacro(vtkKWHSVColorSelector,vtkKWCompositeWidget);
00033 void PrintSelf(ostream& os, vtkIndent indent);
00034
00036 virtual void Create(vtkKWApplication *app);
00037
00039
00040 virtual void SetHueSatWheelRadius(int);
00041 vtkGetMacro(HueSatWheelRadius, int);
00043
00045
00046 virtual void SetValueBoxWidth(int);
00047 vtkGetMacro(ValueBoxWidth, int);
00049
00051
00053 virtual void SetHueSatCursorRadius(int);
00054 vtkGetMacro(HueSatCursorRadius, int);
00056
00058
00060 virtual void SetValueCursorMargin(int);
00061 vtkGetMacro(ValueCursorMargin, int);
00063
00065
00066 vtkGetVector3Macro(SelectedColor, double);
00067 virtual void SetSelectedColor(double h, double s, double v);
00068 virtual void SetSelectedColor(double hsv[3])
00069 { this->SetSelectedColor(hsv[0], hsv[1], hsv[2]); };
00070 virtual void ClearSelection();
00071 virtual int HasSelection();
00073
00075
00077 vtkSetMacro(ModificationOnly, int);
00078 vtkGetMacro(ModificationOnly, int);
00079 vtkBooleanMacro(ModificationOnly, int);
00081
00083
00084 virtual void SetHideValue(int);
00085 vtkGetMacro(HideValue, int);
00086 vtkBooleanMacro(HideValue, int);
00088
00090
00093 virtual void SetSelectionChangedCommand(
00094 vtkObject* object, const char *method);
00095 virtual void SetSelectionChangingCommand(
00096 vtkObject* object, const char *method);
00097 virtual void InvokeSelectionChangedCommand();
00098 virtual void InvokeSelectionChangingCommand();
00100
00102
00104 vtkSetMacro(InvokeCommandsWithRGB, int);
00105 vtkGetMacro(InvokeCommandsWithRGB, int);
00106 vtkBooleanMacro(InvokeCommandsWithRGB, int);
00108
00111 virtual void SetBalloonHelpString(const char *str);
00112
00114
00115 virtual void HueSatPickCallback(int x, int y);
00116 virtual void HueSatMoveCallback(int x, int y);
00117 virtual void HueSatReleaseCallback();
00118 virtual void ValuePickCallback(int x, int y);
00119 virtual void ValueMoveCallback(int x, int y);
00120 virtual void ValueReleaseCallback();
00122
00124
00125 vtkGetObjectMacro(HueSatWheelCanvas, vtkKWCanvas);
00126 vtkGetObjectMacro(ValueBoxCanvas, vtkKWCanvas);
00128
00130 virtual void Update();
00131
00138 virtual void UpdateEnableState();
00139
00140 protected:
00141 vtkKWHSVColorSelector();
00142 ~vtkKWHSVColorSelector();
00143
00144 int HueSatWheelRadius;
00145 int HueSatCursorRadius;
00146 int ValueBoxWidth;
00147 int ValueCursorMargin;
00148 int Selected;
00149 double SelectedColor[3];
00150 int ModificationOnly;
00151 int InvokeCommandsWithRGB;
00152 int HideValue;
00153 double PreviouslySelectedColor[3];
00154
00155
00156
00157 char *SelectionChangedCommand;
00158 char *SelectionChangingCommand;
00159
00160 virtual void InvokeCommand(const char *command);
00161
00162
00163
00164 vtkKWCanvas *HueSatWheelCanvas;
00165 vtkKWCanvas *ValueBoxCanvas;
00166 vtkKWLabel *HueSatLabel;
00167 vtkKWLabel *ValueLabel;
00168
00170
00171 virtual void Bind();
00172 virtual void UnBind();
00174
00176 virtual void Pack();
00177
00179
00180 virtual void Redraw();
00181 virtual void RedrawHueSatWheelCanvas();
00182 virtual void UpdateHueSatWheelImage();
00183 virtual void UpdateHueSatWheelSelection();
00184 virtual void RedrawValueBoxCanvas();
00185 virtual void UpdateValueBoxImage();
00186 virtual void UpdateValueBoxSelection();
00188
00191 virtual int GetHueSatFromCoordinates(int x, int y, double &hue, double &sat);
00192
00194 virtual void GetValueFromCoordinate(int y, double &value);
00195
00197 virtual int CanvasHasTag(const char *canvas, const char *tag);
00198
00199 private:
00200 vtkKWHSVColorSelector(const vtkKWHSVColorSelector&);
00201 void operator=(const vtkKWHSVColorSelector&);
00202 };
00203
00204 #endif
00205