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
00031 public:
00032 static vtkKWHSVColorSelector* New();
00033 vtkTypeRevisionMacro(vtkKWHSVColorSelector,vtkKWCompositeWidget);
00034 void PrintSelf(ostream& os, vtkIndent indent);
00035
00037
00038 virtual void SetHueSatWheelRadius(int);
00039 vtkGetMacro(HueSatWheelRadius, int);
00041
00043
00044 virtual void SetValueBoxWidth(int);
00045 vtkGetMacro(ValueBoxWidth, int);
00047
00049
00051 virtual void SetHueSatCursorRadius(int);
00052 vtkGetMacro(HueSatCursorRadius, int);
00054
00056
00058 virtual void SetValueCursorMargin(int);
00059 vtkGetMacro(ValueCursorMargin, int);
00061
00063
00064 vtkGetVector3Macro(SelectedColor, double);
00065 virtual void SetSelectedColor(double h, double s, double v);
00066 virtual void SetSelectedColor(double hsv[3])
00067 { this->SetSelectedColor(hsv[0], hsv[1], hsv[2]); };
00068 virtual void ClearSelection();
00069 virtual int HasSelection();
00071
00073
00075 vtkSetMacro(ModificationOnly, int);
00076 vtkGetMacro(ModificationOnly, int);
00077 vtkBooleanMacro(ModificationOnly, int);
00079
00081
00082 virtual void SetHideValue(int);
00083 vtkGetMacro(HideValue, int);
00084 vtkBooleanMacro(HideValue, int);
00086
00088
00111 virtual void SetSelectionChangedCommand(
00112 vtkObject *object, const char *method);
00113 virtual void SetSelectionChangingCommand(
00114 vtkObject *object, const char *method);
00116
00118
00120 vtkSetMacro(InvokeCommandsWithRGB, int);
00121 vtkGetMacro(InvokeCommandsWithRGB, int);
00122 vtkBooleanMacro(InvokeCommandsWithRGB, int);
00124
00127 virtual void SetBalloonHelpString(const char *str);
00128
00130
00131 vtkGetObjectMacro(HueSatWheelCanvas, vtkKWCanvas);
00132 vtkGetObjectMacro(ValueBoxCanvas, vtkKWCanvas);
00134
00136 virtual void Update();
00137
00144 virtual void UpdateEnableState();
00145
00147
00148 virtual void HueSatPickCallback(int x, int y);
00149 virtual void HueSatMoveCallback(int x, int y);
00150 virtual void HueSatReleaseCallback();
00151 virtual void ValuePickCallback(int x, int y);
00152 virtual void ValueMoveCallback(int x, int y);
00153 virtual void ValueReleaseCallback();
00155
00156
00157
00158 protected:
00159 vtkKWHSVColorSelector();
00160 ~vtkKWHSVColorSelector();
00161
00163 virtual void CreateWidget();
00164
00165 int HueSatWheelRadius;
00166 int HueSatCursorRadius;
00167 int ValueBoxWidth;
00168 int ValueCursorMargin;
00169 int Selected;
00170 double SelectedColor[3];
00171 int ModificationOnly;
00172 int HideValue;
00173 double PreviouslySelectedColor[3];
00174
00175
00176
00177 char *SelectionChangedCommand;
00178 char *SelectionChangingCommand;
00179
00180 int InvokeCommandsWithRGB;
00181 virtual void InvokeCommandWithColor(
00182 const char *command, double h, double s, double v);
00183 virtual void InvokeSelectionChangedCommand(double h, double s, double v);
00184 virtual void InvokeSelectionChangingCommand(double h, double s, double v);
00185
00186
00187
00188 vtkKWCanvas *HueSatWheelCanvas;
00189 vtkKWCanvas *ValueBoxCanvas;
00190 vtkKWLabel *HueSatLabel;
00191 vtkKWLabel *ValueLabel;
00192
00194
00195 virtual void Bind();
00196 virtual void UnBind();
00198
00200 virtual void Pack();
00201
00203
00204 virtual void Redraw();
00205 virtual void RedrawHueSatWheelCanvas();
00206 virtual void UpdateHueSatWheelImage();
00207 virtual void UpdateHueSatWheelSelection();
00208 virtual void RedrawValueBoxCanvas();
00209 virtual void UpdateValueBoxImage();
00210 virtual void UpdateValueBoxSelection();
00212
00215 virtual int GetHueSatFromCoordinates(int x, int y, double &hue, double &sat);
00216
00218 virtual void GetValueFromCoordinate(int y, double &value);
00219
00220
00221
00222 private:
00223 vtkKWHSVColorSelector(const vtkKWHSVColorSelector&);
00224 void operator=(const vtkKWHSVColorSelector&);
00225 };
00226
00227 #endif
00228
00229