00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00030 #ifndef __vtkKWParameterValueHermiteFunctionEditor_h
00031 #define __vtkKWParameterValueHermiteFunctionEditor_h
00032
00033 #include "vtkKWParameterValueFunctionEditor.h"
00034
00035 class vtkKWScaleWithEntry;
00036
00037 class KWWIDGETS_EXPORT vtkKWParameterValueHermiteFunctionEditor : public vtkKWParameterValueFunctionEditor
00038 {
00039 public:
00040 vtkTypeRevisionMacro(vtkKWParameterValueHermiteFunctionEditor,vtkKWParameterValueFunctionEditor);
00041 void PrintSelf(ostream& os, vtkIndent indent);
00042
00044 virtual void Create(vtkKWApplication *app);
00045
00047
00051 vtkBooleanMacro(MidPointEntryVisibility, int);
00052 virtual void SetMidPointEntryVisibility(int);
00053 vtkGetMacro(MidPointEntryVisibility, int);
00055
00057 virtual vtkKWScaleWithEntry* GetMidPointEntry();
00058
00060
00062 vtkBooleanMacro(DisplayMidPointValueInParameterDomain, int);
00063 virtual void SetDisplayMidPointValueInParameterDomain(int);
00064 vtkGetMacro(DisplayMidPointValueInParameterDomain, int);
00066
00068
00072 vtkBooleanMacro(SharpnessEntryVisibility, int);
00073 virtual void SetSharpnessEntryVisibility(int);
00074 vtkGetMacro(SharpnessEntryVisibility, int);
00076
00078 virtual vtkKWScaleWithEntry* GetSharpnessEntry();
00079
00081
00084 vtkBooleanMacro(MidPointVisibility, int);
00085 virtual void SetMidPointVisibility(int);
00086 vtkGetMacro(MidPointVisibility, int);
00088
00090
00091 vtkGetVector3Macro(MidPointColor, double);
00092 virtual void SetMidPointColor(double r, double g, double b);
00093 virtual void SetMidPointColor(double rgb[3])
00094 { this->SetMidPointColor(rgb[0], rgb[1], rgb[2]); };
00096
00098
00099 vtkGetVector3Macro(SelectedMidPointColor, double);
00100 virtual void SetSelectedMidPointColor(double r, double g, double b);
00101 virtual void SetSelectedMidPointColor(double rgb[3])
00102 { this->SetSelectedMidPointColor(rgb[0], rgb[1], rgb[2]); };
00104
00106
00110 vtkBooleanMacro(MidPointGuidelineVisibility, int);
00111 virtual void SetMidPointGuidelineVisibility(int);
00112 vtkGetMacro(MidPointGuidelineVisibility, int);
00114
00116
00120 vtkBooleanMacro(MidPointGuidelineValueVisibility, int);
00121 virtual void SetMidPointGuidelineValueVisibility(int);
00122 vtkGetMacro(MidPointGuidelineValueVisibility, int);
00124
00126
00127 virtual void SetMidPointGuidelineValueFormat(const char *);
00128 vtkGetStringMacro(MidPointGuidelineValueFormat);
00130
00132
00135 vtkGetMacro(SelectedMidPoint, int);
00136 virtual void SelectMidPoint(int id);
00137 virtual void ClearMidPointSelection();
00138 virtual int HasMidPointSelection();
00140
00143 virtual void SelectPoint(int id);
00144
00146
00148 virtual void SetMidPointSelectionChangedCommand(
00149 vtkObject* object,const char *method);
00151
00153
00157 enum
00158 {
00159 MidPointSelectionChangedEvent = 11000
00160 };
00161
00163
00165
00168 virtual int SynchronizeSingleSelection(
00169 vtkKWParameterValueFunctionEditor *b);
00170 virtual int DoNotSynchronizeSingleSelection(
00171 vtkKWParameterValueFunctionEditor *b);
00173
00175
00178 virtual int SynchronizeSameSelection(
00179 vtkKWParameterValueFunctionEditor *b);
00180 virtual int DoNotSynchronizeSameSelection(
00181 vtkKWParameterValueFunctionEditor *b);
00183
00185 virtual void Update();
00186
00193 virtual void UpdateEnableState();
00194
00196
00197 virtual void MidPointEntryChangedCallback();
00198 virtual void MidPointEntryChangingCallback();
00199 virtual void SharpnessEntryChangedCallback();
00200 virtual void SharpnessEntryChangingCallback();
00201 virtual void StartInteractionCallback(int x, int y);
00202 virtual void MoveMidPointCallback(int x, int y, int button);
00203 virtual void EndMidPointInteractionCallback(int x, int y);
00205
00207
00208 static const char *MidPointTag;
00209 static const char *MidPointGuidelineTag;
00210 static const char *MidPointSelectedTag;
00211
00213
00214 protected:
00215 vtkKWParameterValueHermiteFunctionEditor();
00216 ~vtkKWParameterValueHermiteFunctionEditor();
00217
00224 virtual int GetFunctionPointMidPoint(int id, double *pos) = 0;
00225
00230 virtual int SetFunctionPointMidPoint(int id, double pos) = 0;
00231
00234 virtual int FunctionPointMidPointIsLocked(int id);
00235
00239 virtual int GetFunctionPointSharpness(int id, double *sharpness) = 0;
00240
00244 virtual int SetFunctionPointSharpness(int id, double sharpness) = 0;
00245
00248 virtual int FunctionPointSharpnessIsLocked(int id);
00249
00251 virtual void UpdateMidPointEntries(int id);
00252
00254
00255 virtual int GetMidPointCanvasCoordinates(int id, int *x, int *y, double *p);
00256 virtual int FindMidPointAtCanvasCoordinates(
00257 int x, int y, int *id, int *c_x, int *c_y);
00259
00260 int MidPointEntryVisibility;
00261 int DisplayMidPointValueInParameterDomain;
00262 int SharpnessEntryVisibility;
00263 int MidPointGuidelineVisibility;
00264 int MidPointGuidelineValueVisibility;
00265 double MidPointColor[3];
00266 double SelectedMidPointColor[3];
00267 int SelectedMidPoint;
00268 int LastMidPointSelectionCanvasCoordinateY;
00269 double LastMidPointSelectionSharpness;
00270
00271 char* MidPointGuidelineValueFormat;
00272
00273
00274
00275 char *MidPointSelectionChangedCommand;
00276
00277 virtual void InvokeMidPointSelectionChangedCommand();
00278
00279
00280
00281 vtkKWScaleWithEntry *MidPointEntry;
00282 vtkKWScaleWithEntry *SharpnessEntry;
00283
00285
00287 virtual void CreateMidPointEntry(vtkKWApplication *app);
00288 virtual void CreateSharpnessEntry(vtkKWApplication *app);
00289 virtual int IsPointEntriesFrameUsed();
00290 virtual int IsGuidelineValueCanvasUsed();
00292
00294 virtual void UpdateMidPointEntry(int id);
00295
00297 virtual void UpdateSharpnessEntry(int id);
00298
00300
00303 virtual int MergePointFromEditor(
00304 vtkKWParameterValueFunctionEditor *editor, int editor_id, int *new_id);
00306
00308
00311 virtual int CopyPointFromEditor(
00312 vtkKWParameterValueFunctionEditor *editor, int id);
00314
00316
00318 virtual void RedrawFunction();
00319 virtual void RedrawFunctionDependentElements();
00320 virtual void RedrawSinglePointDependentElements(int id);
00321 virtual void RedrawLine(int id1, int id2, ostrstream *tk_cmd = 0);
00322
00324
00326 virtual void PackPointEntries();
00327
00329
00330 virtual void Bind();
00331 virtual void UnBind();
00333
00334
00335
00336 virtual void ProcessSynchronizationEvents(
00337 vtkObject *caller, unsigned long event, void *calldata);
00338 virtual void ProcessSynchronizationEvents2(
00339 vtkObject *caller, unsigned long event, void *calldata);
00340
00341 private:
00342
00343 int MidPointVisibility;
00344
00345 vtkKWParameterValueHermiteFunctionEditor(const vtkKWParameterValueHermiteFunctionEditor&);
00346 void operator=(const vtkKWParameterValueHermiteFunctionEditor&);
00347 };
00348
00349 #endif
00350