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
00026
00027
00028 #ifndef __vtkKWColorTransferFunctionEditor_h
00029 #define __vtkKWColorTransferFunctionEditor_h
00030
00031 #include "vtkKWParameterValueHermiteFunctionEditor.h"
00032
00033 class vtkColorTransferFunction;
00034 class vtkKWEntryWithLabel;
00035 class vtkKWMenuButton;
00036
00037 class KWWidgets_EXPORT vtkKWColorTransferFunctionEditor : public vtkKWParameterValueHermiteFunctionEditor
00038 {
00039 public:
00040 static vtkKWColorTransferFunctionEditor* New();
00041 vtkTypeRevisionMacro(vtkKWColorTransferFunctionEditor,vtkKWParameterValueHermiteFunctionEditor);
00042 void PrintSelf(ostream& os, vtkIndent indent);
00043
00044
00045
00046
00047
00048 vtkGetObjectMacro(ColorTransferFunction, vtkColorTransferFunction);
00049 virtual void SetColorTransferFunction(vtkColorTransferFunction*);
00050
00051
00052
00053
00054 virtual int GetPointColorAsRGB(int id, double rgb[3]);
00055 virtual int GetPointColorAsHSV(int id, double hsv[3]);
00056 virtual int SetPointColorAsRGB(int id, const double rgb[3]);
00057 virtual int SetPointColorAsRGB(int id, double r, double g, double b);
00058 virtual int SetPointColorAsHSV(int id, const double hsv[3]);
00059 virtual int SetPointColorAsHSV(int id, double h, double s, double v);
00060
00061
00062
00063 vtkBooleanMacro(ColorRampVisibility, int);
00064 virtual void SetColorRampVisibility(int);
00065 vtkGetMacro(ColorRampVisibility, int);
00066
00067
00068
00069
00070 vtkGetObjectMacro(ColorRampTransferFunction, vtkColorTransferFunction);
00071 virtual void SetColorRampTransferFunction(vtkColorTransferFunction*);
00072
00073
00074
00075 virtual void SetColorRampHeight(int);
00076 vtkGetMacro(ColorRampHeight, int);
00077
00078
00079
00080
00081
00082
00083
00084 enum
00085 {
00086 ColorRampPositionDefault = 10,
00087 ColorRampPositionCanvas
00088 };
00089
00090 virtual void SetColorRampPosition(int);
00091 vtkGetMacro(ColorRampPosition, int);
00092 virtual void SetColorRampPositionToDefault()
00093 { this->SetColorRampPosition(
00094 vtkKWColorTransferFunctionEditor::ColorRampPositionDefault); };
00095 virtual void SetColorRampPositionToCanvas()
00096 { this->SetColorRampPosition(
00097 vtkKWColorTransferFunctionEditor::ColorRampPositionCanvas); };
00098
00099
00100
00101
00102 enum
00103 {
00104 ColorRampOutlineStyleNone = 0,
00105 ColorRampOutlineStyleSolid,
00106 ColorRampOutlineStyleSunken
00107 };
00108
00109 virtual void SetColorRampOutlineStyle(int);
00110 vtkGetMacro(ColorRampOutlineStyle, int);
00111 virtual void SetColorRampOutlineStyleToNone()
00112 { this->SetColorRampOutlineStyle(
00113 vtkKWColorTransferFunctionEditor::ColorRampOutlineStyleNone); };
00114 virtual void SetColorRampOutlineStyleToSolid()
00115 { this->SetColorRampOutlineStyle(
00116 vtkKWColorTransferFunctionEditor::ColorRampOutlineStyleSolid); };
00117 virtual void SetColorRampOutlineStyleToSunken()
00118 { this->SetColorRampOutlineStyle(
00119 vtkKWColorTransferFunctionEditor::ColorRampOutlineStyleSunken); };
00120
00121
00122
00123
00124
00125 virtual void SetColorSpaceOptionMenuVisibility(int);
00126 vtkBooleanMacro(ColorSpaceOptionMenuVisibility, int);
00127 vtkGetMacro(ColorSpaceOptionMenuVisibility, int);
00128
00129
00130
00131
00132
00133
00134 vtkBooleanMacro(ValueEntriesVisibility, int);
00135 virtual void SetValueEntriesVisibility(int);
00136 vtkGetMacro(ValueEntriesVisibility, int);
00137
00138
00139
00140 virtual void Update();
00141
00142
00143
00144
00145
00146
00147
00148
00149 virtual void UpdateEnableState();
00150
00151
00152
00153
00154
00155 virtual int HasFunction();
00156 virtual int GetFunctionSize();
00157 virtual unsigned long GetFunctionMTime();
00158 virtual int GetFunctionPointParameter(int id, double *parameter);
00159 virtual int GetFunctionPointDimensionality();
00160
00161
00162
00163 virtual void ColorSpaceCallback();
00164 virtual void ValueEntriesCallback(const char *value);
00165 virtual void DoubleClickOnPointCallback(int x, int y);
00166
00167 protected:
00168 vtkKWColorTransferFunctionEditor();
00169 ~vtkKWColorTransferFunctionEditor();
00170
00171
00172
00173 virtual void CreateWidget();
00174
00175
00176
00177
00178
00179
00180
00181 virtual int GetFunctionPointValues(int id, double *values);
00182 virtual int SetFunctionPointValues(int id, const double *values);
00183 virtual int InterpolateFunctionPointValues(double parameter, double *values);
00184 virtual int AddFunctionPoint(
00185 double parameter, const double *values, int *id);
00186 virtual int SetFunctionPoint(int id, double parameter, const double *values);
00187 virtual int RemoveFunctionPoint(int id);
00188 virtual int GetFunctionPointMidPoint(int id, double *pos);
00189 virtual int SetFunctionPointMidPoint(int id, double pos);
00190 virtual int GetFunctionPointSharpness(int id, double *sharpness);
00191 virtual int SetFunctionPointSharpness(int id, double sharpness);
00192
00193
00194
00195 virtual int MoveFunctionPointInColorSpace(
00196 int id, double parameter, const double *values, int colorspace);
00197
00198 virtual void UpdatePointEntries(int id);
00199
00200 vtkColorTransferFunction *ColorTransferFunction;
00201 vtkColorTransferFunction *ColorRampTransferFunction;
00202
00203 int ValueEntriesVisibility;
00204 int ColorSpaceOptionMenuVisibility;
00205 int ColorRampVisibility;
00206 int ColorRampHeight;
00207 int ColorRampPosition;
00208 int ColorRampOutlineStyle;
00209 unsigned long LastRedrawColorRampTime;
00210
00211
00212
00213 vtkKWMenuButton *ColorSpaceOptionMenu;
00214 vtkKWEntryWithLabel *ValueEntries[3];
00215 vtkKWLabel *ColorRamp;
00216
00217
00218
00219 virtual void Redraw();
00220 virtual void RedrawSizeDependentElements();
00221 virtual void RedrawPanOnlyDependentElements();
00222 virtual void RedrawFunctionDependentElements();
00223 virtual void RedrawSinglePointDependentElements(int id);
00224
00225
00226
00227
00228 virtual void UpdateHistogramImageDescriptor(vtkKWHistogram::ImageDescriptor*);
00229
00230
00231
00232
00233 virtual void Pack();
00234 virtual void PackPointEntries();
00235
00236
00237
00238 virtual void RedrawColorRamp();
00239 virtual int IsColorRampUpToDate();
00240 virtual void GetColorRampOutlineSunkenColors(
00241 unsigned char bg_rgb[3], unsigned char ds_rgb[3], unsigned char ls_rgb[3],
00242 unsigned char hl_rgb[3]);
00243
00244
00245
00246
00247 virtual void UpdatePointEntriesLabel();
00248 virtual void UpdateColorSpaceOptionMenu();
00249
00250
00251
00252
00253 virtual void CreateColorSpaceOptionMenu();
00254 virtual void CreateColorRamp();
00255 virtual void CreateValueEntries();
00256 virtual int IsTopLeftFrameUsed();
00257 virtual int IsPointEntriesFrameUsed();
00258
00259
00260
00261 virtual void RedrawHistogram();
00262
00263
00264
00265
00266
00267 virtual void ProcessCallbackCommandEvents(
00268 vtkObject *caller, unsigned long event, void *calldata);
00269
00270 private:
00271 vtkKWColorTransferFunctionEditor(const vtkKWColorTransferFunctionEditor&);
00272 void operator=(const vtkKWColorTransferFunctionEditor&);
00273 };
00274
00275 #endif
00276