00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00030 #ifndef __vtkKWColorTransferFunctionEditor_h
00031 #define __vtkKWColorTransferFunctionEditor_h
00032
00033 #include "vtkKWParameterValueHermiteFunctionEditor.h"
00034
00035 class vtkColorTransferFunction;
00036 class vtkKWEntryWithLabel;
00037 class vtkKWMenuButton;
00038
00039 class KWWIDGETS_EXPORT vtkKWColorTransferFunctionEditor : public vtkKWParameterValueHermiteFunctionEditor
00040 {
00041 public:
00042 static vtkKWColorTransferFunctionEditor* New();
00043 vtkTypeRevisionMacro(vtkKWColorTransferFunctionEditor,vtkKWParameterValueHermiteFunctionEditor);
00044 void PrintSelf(ostream& os, vtkIndent indent);
00045
00047
00049 vtkGetObjectMacro(ColorTransferFunction, vtkColorTransferFunction);
00050 virtual void SetColorTransferFunction(vtkColorTransferFunction*);
00052
00054
00057 virtual int GetPointColorAsRGB(int id, double rgb[3]);
00058 virtual int GetPointColorAsHSV(int id, double hsv[3]);
00059 virtual int SetPointColorAsRGB(int id, const double rgb[3]);
00060 virtual int SetPointColorAsRGB(int id, double r, double g, double b);
00061 virtual int SetPointColorAsHSV(int id, const double hsv[3]);
00062 virtual int SetPointColorAsHSV(int id, double h, double s, double v);
00064
00066
00067 vtkBooleanMacro(ColorRampVisibility, int);
00068 virtual void SetColorRampVisibility(int);
00069 vtkGetMacro(ColorRampVisibility, int);
00071
00073
00075 vtkGetObjectMacro(ColorRampTransferFunction, vtkColorTransferFunction);
00076 virtual void SetColorRampTransferFunction(vtkColorTransferFunction*);
00078
00080
00081 virtual void SetColorRampHeight(int);
00082 vtkGetMacro(ColorRampHeight, int);
00084
00086
00089 enum
00090 {
00091 ColorRampPositionDefault = 10,
00092 ColorRampPositionCanvas
00093 };
00094
00095 virtual void SetColorRampPosition(int);
00096 vtkGetMacro(ColorRampPosition, int);
00097 virtual void SetColorRampPositionToDefault()
00098 { this->SetColorRampPosition(
00099 vtkKWColorTransferFunctionEditor::ColorRampPositionDefault); };
00100 virtual void SetColorRampPositionToCanvas()
00101 { this->SetColorRampPosition(
00102 vtkKWColorTransferFunctionEditor::ColorRampPositionCanvas); };
00104
00106
00107 enum
00108 {
00109 ColorRampOutlineStyleNone = 0,
00110 ColorRampOutlineStyleSolid,
00111 ColorRampOutlineStyleSunken
00112 };
00113
00114 virtual void SetColorRampOutlineStyle(int);
00115 vtkGetMacro(ColorRampOutlineStyle, int);
00116 virtual void SetColorRampOutlineStyleToNone()
00117 { this->SetColorRampOutlineStyle(
00118 vtkKWColorTransferFunctionEditor::ColorRampOutlineStyleNone); };
00119 virtual void SetColorRampOutlineStyleToSolid()
00120 { this->SetColorRampOutlineStyle(
00121 vtkKWColorTransferFunctionEditor::ColorRampOutlineStyleSolid); };
00122 virtual void SetColorRampOutlineStyleToSunken()
00123 { this->SetColorRampOutlineStyle(
00124 vtkKWColorTransferFunctionEditor::ColorRampOutlineStyleSunken); };
00126
00128
00131 virtual void SetColorSpaceOptionMenuVisibility(int);
00132 vtkBooleanMacro(ColorSpaceOptionMenuVisibility, int);
00133 vtkGetMacro(ColorSpaceOptionMenuVisibility, int);
00135
00137
00141 vtkBooleanMacro(ValueEntriesVisibility, int);
00142 virtual void SetValueEntriesVisibility(int);
00143 vtkGetMacro(ValueEntriesVisibility, int);
00145
00147 virtual void Create(vtkKWApplication *app);
00148
00150 virtual void Update();
00151
00153
00154 virtual void ColorSpaceCallback();
00155 virtual void ValueEntriesCallback();
00156 virtual void DoubleClickOnPointCallback(int x, int y);
00158
00165 virtual void UpdateEnableState();
00166
00168
00170 virtual int HasFunction();
00171 virtual int GetFunctionSize();
00172 virtual unsigned long GetFunctionMTime();
00173 virtual int GetFunctionPointParameter(int id, double *parameter);
00174 virtual int GetFunctionPointDimensionality();
00176
00177 protected:
00178 vtkKWColorTransferFunctionEditor();
00179 ~vtkKWColorTransferFunctionEditor();
00180
00182
00186 virtual int GetFunctionPointValues(int id, double *values);
00187 virtual int SetFunctionPointValues(int id, const double *values);
00188 virtual int InterpolateFunctionPointValues(double parameter, double *values);
00189 virtual int AddFunctionPoint(
00190 double parameter, const double *values, int *id);
00191 virtual int SetFunctionPoint(int id, double parameter, const double *values);
00192 virtual int RemoveFunctionPoint(int id);
00193 virtual int GetFunctionPointMidPoint(int id, double *pos);
00194 virtual int SetFunctionPointMidPoint(int id, double pos);
00195 virtual int GetFunctionPointSharpness(int id, double *sharpness);
00196 virtual int SetFunctionPointSharpness(int id, double sharpness);
00198
00200
00201 virtual int MoveFunctionPointInColorSpace(
00202 int id, double parameter, const double *values, int colorspace);
00204
00205 virtual void UpdatePointEntries(int id);
00206
00207 vtkColorTransferFunction *ColorTransferFunction;
00208 vtkColorTransferFunction *ColorRampTransferFunction;
00209
00210 int ValueEntriesVisibility;
00211 int ColorSpaceOptionMenuVisibility;
00212 int ColorRampVisibility;
00213 int ColorRampHeight;
00214 int ColorRampPosition;
00215 int ColorRampOutlineStyle;
00216 unsigned long LastRedrawColorRampTime;
00217
00218
00219
00220 vtkKWMenuButton *ColorSpaceOptionMenu;
00221 vtkKWEntryWithLabel *ValueEntries[3];
00222 vtkKWLabel *ColorRamp;
00223
00225
00226 virtual void Redraw();
00227 virtual void RedrawSizeDependentElements();
00228 virtual void RedrawPanOnlyDependentElements();
00229 virtual void RedrawFunctionDependentElements();
00230 virtual void RedrawSinglePointDependentElements(int id);
00232
00234
00235 virtual void UpdateHistogramImageDescriptor(vtkKWHistogram::ImageDescriptor*);
00236
00238
00240
00241 virtual void Pack();
00242 virtual void PackPointEntries();
00244
00246
00247 virtual void RedrawColorRamp();
00248 virtual int IsColorRampUpToDate();
00249 virtual void GetColorRampOutlineSunkenColors(
00250 unsigned char bg_rgb[3], unsigned char ds_rgb[3], unsigned char ls_rgb[3],
00251 unsigned char hl_rgb[3]);
00253
00255
00257 virtual void UpdatePointEntriesLabel();
00258 virtual void UpdateColorSpaceOptionMenu();
00260
00262
00264 virtual void CreateColorSpaceOptionMenu(vtkKWApplication *app);
00265 virtual void CreateColorRamp(vtkKWApplication *app);
00266 virtual void CreateValueEntries(vtkKWApplication *app);
00267 virtual int IsTopLeftFrameUsed();
00268 virtual int IsPointEntriesFrameUsed();
00270
00271 private:
00272 vtkKWColorTransferFunctionEditor(const vtkKWColorTransferFunctionEditor&);
00273 void operator=(const vtkKWColorTransferFunctionEditor&);
00274 };
00275
00276 #endif
00277