00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00029 #ifndef __vtkKWPiecewiseFunctionEditor_h
00030 #define __vtkKWPiecewiseFunctionEditor_h
00031
00032 #include "vtkKWParameterValueHermiteFunctionEditor.h"
00033
00034 class vtkKWCheckButton;
00035 class vtkPiecewiseFunction;
00036 class vtkKWScaleWithEntry;
00037 class vtkColorTransferFunction;
00038
00039 class KWWidgets_EXPORT vtkKWPiecewiseFunctionEditor : public vtkKWParameterValueHermiteFunctionEditor
00040 {
00041
00042 public:
00043 static vtkKWPiecewiseFunctionEditor* New();
00044 vtkTypeRevisionMacro(vtkKWPiecewiseFunctionEditor,vtkKWParameterValueHermiteFunctionEditor);
00045 void PrintSelf(ostream& os, vtkIndent indent);
00046
00048
00050 vtkGetObjectMacro(PiecewiseFunction, vtkPiecewiseFunction);
00051 virtual void SetPiecewiseFunction(vtkPiecewiseFunction*);
00053
00055 virtual void Update();
00056
00058
00061 vtkGetObjectMacro(PointColorTransferFunction, vtkColorTransferFunction);
00062 virtual void SetPointColorTransferFunction(vtkColorTransferFunction*);
00064
00066
00072 virtual void SetWindowLevelMode(int);
00073 vtkBooleanMacro(WindowLevelMode, int);
00074 vtkGetMacro(WindowLevelMode, int);
00076
00078
00085 virtual void SetWindowLevelModeChangedCommand(
00086 vtkObject *object,const char *method);
00088
00090
00093 virtual void SetWindowLevelModeButtonVisibility(int);
00094 vtkBooleanMacro(WindowLevelModeButtonVisibility, int);
00095 vtkGetMacro(WindowLevelModeButtonVisibility, int);
00097
00099
00102 vtkSetMacro(WindowLevelModeLockEndPointValue, int);
00103 vtkBooleanMacro(WindowLevelModeLockEndPointValue, int);
00104 vtkGetMacro(WindowLevelModeLockEndPointValue, int);
00106
00108
00111 virtual void SetWindowLevel(double window, double level);
00112 virtual void SetInteractiveWindowLevel(double window, double level);
00113 vtkGetMacro(Window, double);
00114 vtkGetMacro(Level, double);
00116
00118
00122 vtkBooleanMacro(ValueEntryVisibility, int);
00123 virtual void SetValueEntryVisibility(int);
00124 vtkGetMacro(ValueEntryVisibility, int);
00126
00128
00130 vtkGetObjectMacro(ValueEntry, vtkKWEntryWithLabel);
00132
00139 virtual void UpdateEnableState();
00140
00142
00143 virtual int HasFunction();
00144 virtual int GetFunctionSize();
00145 virtual unsigned long GetFunctionMTime();
00146 virtual int GetFunctionPointParameter(int id, double *parameter);
00147 virtual int GetFunctionPointDimensionality();
00149
00151
00152 virtual int FunctionPointCanBeAdded();
00153 virtual int FunctionPointCanBeRemoved(int id);
00154 virtual int FunctionPointParameterIsLocked(int id);
00155 virtual int FunctionPointValueIsLocked(int id);
00157
00159 virtual int MoveFunctionPoint(int id,double parameter,const double *values);
00160
00162
00163 virtual void ValueEntryCallback(const char *value);
00164 virtual void WindowLevelModeCallback(int state);
00166
00167
00168
00169 protected:
00170 vtkKWPiecewiseFunctionEditor();
00171 ~vtkKWPiecewiseFunctionEditor();
00172
00174 virtual void CreateWidget();
00175
00177
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(double parameter, const double *values,int *id);
00185 virtual int SetFunctionPoint(int id, double parameter, const double *values);
00186 virtual int RemoveFunctionPoint(int id);
00187 virtual int FunctionLineIsSampledBetweenPoints(int id1, int id2);
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 virtual int FunctionPointMidPointIsLocked(int id);
00193 virtual int FunctionPointSharpnessIsLocked(int id);
00195
00196 virtual int GetMidPointVisibility();
00197
00199 virtual int GetFunctionPointColorInCanvas(int id, double rgb[3]);
00200
00201 virtual void UpdatePointEntries(int id);
00202
00203
00204 virtual void GetLineCoordinates(int id1, int id2, vtksys_ios::ostream *tk_cmd);
00205
00206
00207 vtkPiecewiseFunction *PiecewiseFunction;
00208 vtkColorTransferFunction *PointColorTransferFunction;
00209
00210 int WindowLevelMode;
00211 int ValueEntryVisibility;
00212 int WindowLevelModeButtonVisibility;
00213 int WindowLevelModeLockEndPointValue;
00214
00215 double Window;
00216 double Level;
00217
00218 virtual void UpdatePointsFromWindowLevel(int interactive = 0);
00219 virtual void UpdateWindowLevelFromPoints();
00220
00221 virtual void InvokeWindowLevelModeChangedCommand(int mode);
00222 virtual void InvokeFunctionChangedCommand();
00223 virtual void InvokeFunctionChangingCommand();
00224
00226
00227 virtual void Pack();
00228 virtual void PackPointEntries();
00230
00231
00232
00233 char *WindowLevelModeChangedCommand;
00234
00235
00236
00237 vtkKWEntryWithLabel *ValueEntry;
00238 vtkKWCheckButton *WindowLevelModeCheckButton;
00239
00241
00243 virtual void CreateWindowLevelModeCheckButton();
00244 virtual void CreateValueEntry();
00245 virtual int IsTopLeftFrameUsed();
00246 virtual int IsPointEntriesFrameUsed();
00248
00249 virtual unsigned long GetRedrawFunctionTime();
00250
00251
00252
00253 private:
00254 vtkKWPiecewiseFunctionEditor(const vtkKWPiecewiseFunctionEditor&);
00255 void operator=(const vtkKWPiecewiseFunctionEditor&);
00256 };
00257
00258 #endif
00259
00260