00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00026 #ifndef __vtkKWPiecewiseFunctionEditor_h
00027 #define __vtkKWPiecewiseFunctionEditor_h
00028
00029 #include "vtkKWParameterValueHermiteFunctionEditor.h"
00030
00031 class vtkKWCheckButton;
00032 class vtkPiecewiseFunction;
00033 class vtkKWScaleWithEntry;
00034 class vtkColorTransferFunction;
00035
00036 class KWWIDGETS_EXPORT vtkKWPiecewiseFunctionEditor : public vtkKWParameterValueHermiteFunctionEditor
00037 {
00038 public:
00039 static vtkKWPiecewiseFunctionEditor* New();
00040 vtkTypeRevisionMacro(vtkKWPiecewiseFunctionEditor,vtkKWParameterValueHermiteFunctionEditor);
00041 void PrintSelf(ostream& os, vtkIndent indent);
00042
00044
00046 vtkGetObjectMacro(PiecewiseFunction, vtkPiecewiseFunction);
00047 virtual void SetPiecewiseFunction(vtkPiecewiseFunction*);
00049
00051 virtual void Create(vtkKWApplication *app);
00052
00054 virtual void Update();
00055
00057
00059 vtkGetObjectMacro(PointColorTransferFunction, vtkColorTransferFunction);
00060 virtual void SetPointColorTransferFunction(vtkColorTransferFunction*);
00062
00064
00070 virtual void SetWindowLevelMode(int);
00071 vtkBooleanMacro(WindowLevelMode, int);
00072 vtkGetMacro(WindowLevelMode, int);
00074
00076
00079 virtual void SetWindowLevelModeButtonVisibility(int);
00080 vtkBooleanMacro(WindowLevelModeButtonVisibility, int);
00081 vtkGetMacro(WindowLevelModeButtonVisibility, int);
00083
00085
00088 vtkSetMacro(WindowLevelModeLockEndPointValue, int);
00089 vtkBooleanMacro(WindowLevelModeLockEndPointValue, int);
00090 vtkGetMacro(WindowLevelModeLockEndPointValue, int);
00092
00094
00097 virtual void SetWindowLevel(double window, double level);
00098 virtual void SetInteractiveWindowLevel(double window, double level);
00099 vtkGetMacro(Window, double);
00100 vtkGetMacro(Level, double);
00102
00104
00105 virtual void SetWindowLevelModeChangedCommand(
00106 vtkObject* object,const char *method);
00107 virtual void InvokeWindowLevelModeChangedCommand();
00108 virtual void InvokeFunctionChangedCommand();
00109 virtual void InvokeFunctionChangingCommand();
00111
00113
00117 vtkBooleanMacro(ValueEntryVisibility, int);
00118 virtual void SetValueEntryVisibility(int);
00119 vtkGetMacro(ValueEntryVisibility, int);
00121
00123
00125 vtkGetObjectMacro(ValueEntry, vtkKWEntryWithLabel);
00127
00134 virtual void UpdateEnableState();
00135
00137
00138 virtual void ValueEntryCallback();
00139 virtual void WindowLevelModeCallback();
00141
00143
00144 virtual int HasFunction();
00145 virtual int GetFunctionSize();
00146 virtual unsigned long GetFunctionMTime();
00147 virtual int GetFunctionPointParameter(int id, double *parameter);
00148 virtual int GetFunctionPointDimensionality();
00150
00152
00153 virtual int FunctionPointCanBeAdded();
00154 virtual int FunctionPointCanBeRemoved(int id);
00155 virtual int FunctionPointParameterIsLocked(int id);
00156 virtual int FunctionPointValueIsLocked(int id);
00158
00160 virtual int MoveFunctionPoint(int id,double parameter,const double *values);
00161
00162 protected:
00163 vtkKWPiecewiseFunctionEditor();
00164 ~vtkKWPiecewiseFunctionEditor();
00165
00167
00171 virtual int GetFunctionPointValues(int id, double *values);
00172 virtual int SetFunctionPointValues(int id, const double *values);
00173 virtual int InterpolateFunctionPointValues(double parameter, double *values);
00174 virtual int AddFunctionPoint(double parameter, const double *values,int *id);
00175 virtual int SetFunctionPoint(int id, double parameter, const double *values);
00176 virtual int RemoveFunctionPoint(int id);
00177 virtual int FunctionLineIsSampledBetweenPoints(int id1, int id2);
00178 virtual int GetFunctionPointMidPoint(int id, double *pos);
00179 virtual int SetFunctionPointMidPoint(int id, double pos);
00180 virtual int GetFunctionPointSharpness(int id, double *sharpness);
00181 virtual int SetFunctionPointSharpness(int id, double sharpness);
00182 virtual int FunctionPointMidPointIsLocked(int id);
00183 virtual int FunctionPointSharpnessIsLocked(int id);
00185
00186 virtual int GetMidPointVisibility();
00187
00189 virtual int GetFunctionPointColorInCanvas(int id, double rgb[3]);
00190
00191 virtual void UpdatePointEntries(int id);
00192
00193
00194 virtual void GetLineCoordinates(int id1, int id2, ostrstream *tk_cmd);
00195
00196
00197 vtkPiecewiseFunction *PiecewiseFunction;
00198 vtkColorTransferFunction *PointColorTransferFunction;
00199
00200 int WindowLevelMode;
00201 int ValueEntryVisibility;
00202 int WindowLevelModeButtonVisibility;
00203 int WindowLevelModeLockEndPointValue;
00204
00205 double Window;
00206 double Level;
00207
00208 virtual void UpdatePointsFromWindowLevel(int interactive = 0);
00209 virtual void UpdateWindowLevelFromPoints();
00210
00212
00213 virtual void Pack();
00214 virtual void PackPointEntries();
00216
00217
00218
00219 char *WindowLevelModeChangedCommand;
00220
00221
00222
00223 vtkKWEntryWithLabel *ValueEntry;
00224 vtkKWCheckButton *WindowLevelModeCheckButton;
00225
00227
00229 virtual void CreateWindowLevelModeCheckButton(vtkKWApplication *app);
00230 virtual void CreateValueEntry(vtkKWApplication *app);
00231 virtual int IsTopLeftFrameUsed();
00232 virtual int IsPointEntriesFrameUsed();
00234
00235 virtual unsigned long GetRedrawFunctionTime();
00236
00237 private:
00238 vtkKWPiecewiseFunctionEditor(const vtkKWPiecewiseFunctionEditor&);
00239 void operator=(const vtkKWPiecewiseFunctionEditor&);
00240 };
00241
00242 #endif
00243