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
00042 public:
00043 static vtkKWColorTransferFunctionEditor* New();
00044 vtkTypeRevisionMacro(vtkKWColorTransferFunctionEditor,vtkKWParameterValueHermiteFunctionEditor);
00045 void PrintSelf(ostream& os, vtkIndent indent);
00046
00048
00050 vtkGetObjectMacro(ColorTransferFunction, vtkColorTransferFunction);
00051 virtual void SetColorTransferFunction(vtkColorTransferFunction*);
00053
00055
00058 virtual int GetPointColorAsRGB(int id, double rgb[3]);
00059 virtual int GetPointColorAsHSV(int id, double hsv[3]);
00060 virtual int SetPointColorAsRGB(int id, const double rgb[3]);
00061 virtual int SetPointColorAsRGB(int id, double r, double g, double b);
00062 virtual int SetPointColorAsHSV(int id, const double hsv[3]);
00063 virtual int SetPointColorAsHSV(int id, double h, double s, double v);
00065
00067
00068 vtkBooleanMacro(ColorRampVisibility, int);
00069 virtual void SetColorRampVisibility(int);
00070 vtkGetMacro(ColorRampVisibility, int);
00072
00074
00076 vtkGetObjectMacro(ColorRampTransferFunction, vtkColorTransferFunction);
00077 virtual void SetColorRampTransferFunction(vtkColorTransferFunction*);
00079
00081
00082 virtual void SetColorRampHeight(int);
00083 vtkGetMacro(ColorRampHeight, int);
00085
00087
00090 enum
00091 {
00092 ColorRampPositionDefault = 10,
00093 ColorRampPositionCanvas
00094 };
00095
00096 virtual void SetColorRampPosition(int);
00097 vtkGetMacro(ColorRampPosition, int);
00098 virtual void SetColorRampPositionToDefault()
00099 { this->SetColorRampPosition(
00100 vtkKWColorTransferFunctionEditor::ColorRampPositionDefault); };
00101 virtual void SetColorRampPositionToCanvas()
00102 { this->SetColorRampPosition(
00103 vtkKWColorTransferFunctionEditor::ColorRampPositionCanvas); };
00105
00107
00108 enum
00109 {
00110 ColorRampOutlineStyleNone = 0,
00111 ColorRampOutlineStyleSolid,
00112 ColorRampOutlineStyleSunken
00113 };
00114
00115 virtual void SetColorRampOutlineStyle(int);
00116 vtkGetMacro(ColorRampOutlineStyle, int);
00117 virtual void SetColorRampOutlineStyleToNone()
00118 { this->SetColorRampOutlineStyle(
00119 vtkKWColorTransferFunctionEditor::ColorRampOutlineStyleNone); };
00120 virtual void SetColorRampOutlineStyleToSolid()
00121 { this->SetColorRampOutlineStyle(
00122 vtkKWColorTransferFunctionEditor::ColorRampOutlineStyleSolid); };
00123 virtual void SetColorRampOutlineStyleToSunken()
00124 { this->SetColorRampOutlineStyle(
00125 vtkKWColorTransferFunctionEditor::ColorRampOutlineStyleSunken); };
00127
00129
00132 virtual void SetColorSpaceOptionMenuVisibility(int);
00133 vtkBooleanMacro(ColorSpaceOptionMenuVisibility, int);
00134 vtkGetMacro(ColorSpaceOptionMenuVisibility, int);
00136
00138
00142 vtkBooleanMacro(ValueEntriesVisibility, int);
00143 virtual void SetValueEntriesVisibility(int);
00144 vtkGetMacro(ValueEntriesVisibility, int);
00146
00148 virtual void Update();
00149
00156 virtual void UpdateEnableState();
00157
00159
00161 virtual int HasFunction();
00162 virtual int GetFunctionSize();
00163 virtual unsigned long GetFunctionMTime();
00164 virtual int GetFunctionPointParameter(int id, double *parameter);
00165 virtual int GetFunctionPointDimensionality();
00167
00169
00170 virtual void ColorSpaceCallback();
00171 virtual void ValueEntriesCallback(const char *value);
00172 virtual void DoubleClickOnPointCallback(int x, int y);
00174
00175
00176
00177 protected:
00178 vtkKWColorTransferFunctionEditor();
00179 ~vtkKWColorTransferFunctionEditor();
00180
00182 virtual void CreateWidget();
00183
00185
00189 virtual int GetFunctionPointValues(int id, double *values);
00190 virtual int SetFunctionPointValues(int id, const double *values);
00191 virtual int InterpolateFunctionPointValues(double parameter, double *values);
00192 virtual int AddFunctionPoint(
00193 double parameter, const double *values, int *id);
00194 virtual int SetFunctionPoint(int id, double parameter, const double *values);
00195 virtual int RemoveFunctionPoint(int id);
00196 virtual int GetFunctionPointMidPoint(int id, double *pos);
00197 virtual int SetFunctionPointMidPoint(int id, double pos);
00198 virtual int GetFunctionPointSharpness(int id, double *sharpness);
00199 virtual int SetFunctionPointSharpness(int id, double sharpness);
00201
00203
00204 virtual int MoveFunctionPointInColorSpace(
00205 int id, double parameter, const double *values, int colorspace);
00207
00208 virtual void UpdatePointEntries(int id);
00209
00210 vtkColorTransferFunction *ColorTransferFunction;
00211 vtkColorTransferFunction *ColorRampTransferFunction;
00212
00213 int ValueEntriesVisibility;
00214 int ColorSpaceOptionMenuVisibility;
00215 int ColorRampVisibility;
00216 int ColorRampHeight;
00217 int ColorRampPosition;
00218 int ColorRampOutlineStyle;
00219 unsigned long LastRedrawColorRampTime;
00220
00221
00222
00223 vtkKWMenuButton *ColorSpaceOptionMenu;
00224 vtkKWEntryWithLabel *ValueEntries[3];
00225 vtkKWLabel *ColorRamp;
00226
00228
00229 virtual void Redraw();
00230 virtual void RedrawSizeDependentElements();
00231 virtual void RedrawPanOnlyDependentElements();
00232 virtual void RedrawFunctionDependentElements();
00233 virtual void RedrawSinglePointDependentElements(int id);
00235
00237
00238 virtual void UpdateHistogramImageDescriptor(vtkKWHistogram::ImageDescriptor*);
00239
00241
00243
00244 virtual void Pack();
00245 virtual void PackPointEntries();
00247
00249
00250 virtual void RedrawColorRamp();
00251 virtual int IsColorRampUpToDate();
00252 virtual void GetColorRampOutlineSunkenColors(
00253 unsigned char bg_rgb[3], unsigned char ds_rgb[3], unsigned char ls_rgb[3],
00254 unsigned char hl_rgb[3]);
00256
00258
00260 virtual void UpdatePointEntriesLabel();
00261 virtual void UpdateColorSpaceOptionMenu();
00263
00265
00267 virtual void CreateColorSpaceOptionMenu();
00268 virtual void CreateColorRamp();
00269 virtual void CreateValueEntries();
00270 virtual int IsTopLeftFrameUsed();
00271 virtual int IsPointEntriesFrameUsed();
00273
00275 virtual void RedrawHistogram();
00276
00278
00281 virtual void ProcessCallbackCommandEvents(
00282 vtkObject *caller, unsigned long event, void *calldata);
00284
00285
00286
00287 private:
00288 vtkKWColorTransferFunctionEditor(const vtkKWColorTransferFunctionEditor&);
00289 void operator=(const vtkKWColorTransferFunctionEditor&);
00290 };
00291
00292 #endif
00293
00294