00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00029 #ifndef __vtkKWParameterValueFunctionEditor_h
00030 #define __vtkKWParameterValueFunctionEditor_h
00031
00032 #include "vtkKWParameterValueFunctionInterface.h"
00033
00034
00035 #include "vtkKWHistogram.h"
00036
00037
00038 class vtkCallbackCommand;
00039 class vtkKWCanvas;
00040 class vtkKWFrame;
00041 class vtkKWIcon;
00042 class vtkKWLabel;
00043 class vtkKWEntryWithLabel;
00044 class vtkKWRange;
00045 class vtkKWMenuButton;
00046
00047
00048 class ostrstream;
00049
00050
00051 class KWWIDGETS_EXPORT vtkKWParameterValueFunctionEditor : public vtkKWParameterValueFunctionInterface
00052 {
00053 public:
00054 vtkTypeRevisionMacro(vtkKWParameterValueFunctionEditor,vtkKWParameterValueFunctionInterface);
00055 void PrintSelf(ostream& os, vtkIndent indent);
00056
00058
00061 virtual double* GetWholeParameterRange();
00062 virtual void SetWholeParameterRange(double r0, double r1);
00063 virtual void GetWholeParameterRange(double &r0, double &r1)
00064 { r0 = this->GetWholeParameterRange()[0];
00065 r1 = this->GetWholeParameterRange()[1]; }
00066 virtual void GetWholeParameterRange(double range[2])
00067 { this->GetWholeParameterRange(range[0], range[1]); };
00068 virtual void SetWholeParameterRange(double range[2])
00069 { this->SetWholeParameterRange(range[0], range[1]); };
00071
00075 virtual void SetWholeParameterRangeToFunctionRange();
00076
00078
00081 virtual double* GetVisibleParameterRange();
00082 virtual void SetVisibleParameterRange(double r0, double r1);
00083 virtual void GetVisibleParameterRange(double &r0, double &r1)
00084 { r0 = this->GetVisibleParameterRange()[0];
00085 r1 = this->GetVisibleParameterRange()[1]; }
00086 virtual void GetVisibleParameterRange(double range[2])
00087 { this->GetVisibleParameterRange(range[0], range[1]); };
00088 virtual void SetVisibleParameterRange(double range[2])
00089 { this->SetVisibleParameterRange(range[0], range[1]); };
00091
00094 virtual void SetVisibleParameterRangeToWholeParameterRange();
00095
00097
00099 virtual void SetRelativeVisibleParameterRange(double r0, double r1);
00100 virtual void GetRelativeVisibleParameterRange(double &r0, double &r1);
00101 virtual void GetRelativeVisibleParameterRange(double range[2])
00102 { this->GetRelativeVisibleParameterRange(range[0], range[1]); };
00103 virtual void SetRelativeVisibleParameterRange(double range[2])
00104 { this->SetRelativeVisibleParameterRange(range[0], range[1]); };
00106
00108
00111 virtual double* GetWholeValueRange();
00112 virtual void SetWholeValueRange(double r0, double r1);
00113 virtual void GetWholeValueRange(double &r0, double &r1)
00114 { r0 = this->GetWholeValueRange()[0];
00115 r1 = this->GetWholeValueRange()[1]; }
00116 virtual void GetWholeValueRange(double range[2])
00117 { this->GetWholeValueRange(range[0], range[1]); };
00118 virtual void SetWholeValueRange(double range[2])
00119 { this->SetWholeValueRange(range[0], range[1]); };
00121
00123
00125 virtual double* GetVisibleValueRange();
00126 virtual void SetVisibleValueRange(double r0, double r1);
00127 virtual void GetVisibleValueRange(double &r0, double &r1)
00128 { r0 = this->GetVisibleValueRange()[0];
00129 r1 = this->GetVisibleValueRange()[1]; }
00130 virtual void GetVisibleValueRange(double range[2])
00131 { this->GetVisibleValueRange(range[0], range[1]); };
00132 virtual void SetVisibleValueRange(double range[2])
00133 { this->SetVisibleValueRange(range[0], range[1]); };
00135
00137
00139 virtual void SetRelativeVisibleValueRange(double r0, double r1);
00140 virtual void GetRelativeVisibleValueRange(double &r0, double &r1);
00141 virtual void GetRelativeVisibleValueRange(double range[2])
00142 { this->GetRelativeVisibleValueRange(range[0], range[1]); };
00143 virtual void SetRelativeVisibleValueRange(double range[2])
00144 { this->SetRelativeVisibleValueRange(range[0], range[1]); };
00146
00156 virtual void SetLabelPosition(int);
00157
00159
00162 vtkBooleanMacro(ParameterRangeVisibility, int);
00163 virtual void SetParameterRangeVisibility(int);
00164 vtkGetMacro(ParameterRangeVisibility, int);
00166
00168
00169 enum
00170 {
00171 ParameterRangePositionTop = 0,
00172 ParameterRangePositionBottom
00173 };
00174
00175 virtual void SetParameterRangePosition(int);
00176 vtkGetMacro(ParameterRangePosition, int);
00177 virtual void SetParameterRangePositionToTop()
00178 { this->SetParameterRangePosition(
00179 vtkKWParameterValueFunctionEditor::ParameterRangePositionTop); };
00180 virtual void SetParameterRangePositionToBottom()
00181 { this->SetParameterRangePosition(
00182 vtkKWParameterValueFunctionEditor::ParameterRangePositionBottom); };
00184
00186
00189 vtkBooleanMacro(ValueRangeVisibility, int);
00190 virtual void SetValueRangeVisibility(int);
00191 vtkGetMacro(ValueRangeVisibility, int);
00193
00195
00198 vtkGetObjectMacro(ParameterRange, vtkKWRange);
00199 vtkGetObjectMacro(ValueRange, vtkKWRange);
00201
00203
00222 vtkGetVector2Macro(DisplayedWholeParameterRange, double);
00223 virtual void SetDisplayedWholeParameterRange(double r0, double r1);
00224 virtual void SetDisplayedWholeParameterRange(double range[2])
00225 { this->SetDisplayedWholeParameterRange(range[0], range[1]); };
00226 virtual void GetDisplayedVisibleParameterRange(double &r0, double &r1);
00227 virtual void GetDisplayedVisibleParameterRange(double range[2])
00228 { this->GetDisplayedVisibleParameterRange(range[0], range[1]); };
00229 virtual void MapParameterToDisplayedParameter(double p, double *displayed_p);
00230 virtual void MapDisplayedParameterToParameter(double displayed_p, double *p);
00231 virtual int GetFunctionPointDisplayedParameter(int id, double *displayed_p);
00233
00235
00240 enum
00241 {
00242 PointPositionValue = 0,
00243 PointPositionTop,
00244 PointPositionBottom,
00245 PointPositionCenter
00246 };
00247
00248 virtual void SetPointPositionInValueRange(int);
00249 vtkGetMacro(PointPositionInValueRange, int);
00250 virtual void SetPointPositionInValueRangeToValue()
00251 { this->SetPointPositionInValueRange(
00252 vtkKWParameterValueFunctionEditor::PointPositionValue); };
00253 virtual void SetPointPositionInValueRangeToTop()
00254 { this->SetPointPositionInValueRange(
00255 vtkKWParameterValueFunctionEditor::PointPositionTop); };
00256 virtual void SetPointPositionInValueRangeToBottom()
00257 { this->SetPointPositionInValueRange(
00258 vtkKWParameterValueFunctionEditor::PointPositionBottom); };
00259 virtual void SetPointPositionInValueRangeToCenter()
00260 { this->SetPointPositionInValueRange(
00261 vtkKWParameterValueFunctionEditor::PointPositionCenter); };
00263
00265
00268 vtkBooleanMacro(ParameterRangeLabelVisibility, int);
00269 virtual void SetParameterRangeLabelVisibility(int);
00270 vtkGetMacro(ParameterRangeLabelVisibility, int);
00272
00274
00277 vtkBooleanMacro(ValueRangeLabelVisibility, int);
00278 virtual void SetValueRangeLabelVisibility(int);
00279 vtkGetMacro(ValueRangeLabelVisibility, int);
00281
00283
00287 enum
00288 {
00289 RangeLabelPositionDefault = 10,
00290 RangeLabelPositionTop
00291 };
00292
00293 virtual void SetRangeLabelPosition(int);
00294 vtkGetMacro(RangeLabelPosition, int);
00295 virtual void SetRangeLabelPositionToDefault()
00296 { this->SetRangeLabelPosition(
00297 vtkKWParameterValueFunctionEditor::RangeLabelPositionDefault); };
00298 virtual void SetRangeLabelPositionToTop()
00299 { this->SetRangeLabelPosition(
00300 vtkKWParameterValueFunctionEditor::RangeLabelPositionTop); };
00302
00304
00307 enum
00308 {
00309 PointEntriesPositionDefault = 10,
00310 PointEntriesPositionRight
00311 };
00312
00313 virtual void SetPointEntriesPosition(int);
00314 vtkGetMacro(PointEntriesPosition, int);
00315 virtual void SetPointEntriesPositionToDefault()
00316 { this->SetPointEntriesPosition(
00317 vtkKWParameterValueFunctionEditor::PointEntriesPositionDefault); };
00318 virtual void SetPointEntriesPositionToRight()
00319 { this->SetPointEntriesPosition(
00320 vtkKWParameterValueFunctionEditor::PointEntriesPositionRight); };
00322
00324
00329 vtkBooleanMacro(PointEntriesVisibility, int);
00330 virtual void SetPointEntriesVisibility(int);
00331 vtkGetMacro(PointEntriesVisibility, int);
00333
00335
00339 vtkBooleanMacro(ParameterEntryVisibility, int);
00340 virtual void SetParameterEntryVisibility(int);
00341 vtkGetMacro(ParameterEntryVisibility, int);
00343
00345
00348 virtual void SetParameterEntryFormat(const char *);
00349 vtkGetStringMacro(ParameterEntryFormat);
00351
00353 virtual vtkKWEntryWithLabel* GetParameterEntry();
00354
00356
00359 vtkBooleanMacro(UserFrameVisibility, int);
00360 virtual void SetUserFrameVisibility(int);
00361 vtkGetMacro(UserFrameVisibility, int);
00363
00365
00367 vtkGetObjectMacro(UserFrame, vtkKWFrame);
00369
00371
00376 virtual void SetCanvasHeight(int);
00377 virtual void SetCanvasWidth(int);
00378 vtkGetMacro(CanvasHeight, int);
00379 vtkGetMacro(CanvasWidth, int);
00380 vtkBooleanMacro(ExpandCanvasWidth, int);
00381 virtual void SetExpandCanvasWidth(int);
00382 vtkGetMacro(ExpandCanvasWidth, int);
00384
00386
00388 vtkBooleanMacro(CanvasVisibility, int);
00389 virtual void SetCanvasVisibility(int);
00390 vtkGetMacro(CanvasVisibility, int);
00392
00394
00396 vtkBooleanMacro(FunctionLineVisibility, int);
00397 virtual void SetFunctionLineVisibility(int);
00398 vtkGetMacro(FunctionLineVisibility, int);
00400
00402
00403 virtual void SetFunctionLineWidth(int);
00404 vtkGetMacro(FunctionLineWidth, int);
00406
00408
00409 enum
00410 {
00411 LineStyleSolid = 0,
00412 LineStyleDash
00413 };
00414
00415 virtual void SetFunctionLineStyle(int);
00416 vtkGetMacro(FunctionLineStyle, int);
00417 virtual void SetFunctionLineStyleToSolid()
00418 { this->SetFunctionLineStyle(
00419 vtkKWParameterValueFunctionEditor::LineStyleSolid); };
00420 virtual void SetFunctionLineStyleToDash()
00421 { this->SetFunctionLineStyle(
00422 vtkKWParameterValueFunctionEditor::LineStyleDash); };
00424
00426
00427 vtkBooleanMacro(CanvasOutlineVisibility, int);
00428 virtual void SetCanvasOutlineVisibility(int);
00429 vtkGetMacro(CanvasOutlineVisibility, int);
00431
00433
00434 enum
00435 {
00436 CanvasOutlineStyleLeftSide = 1,
00437 CanvasOutlineStyleRightSide = 2,
00438 CanvasOutlineStyleHorizontalSides = 3,
00439 CanvasOutlineStyleTopSide = 4,
00440 CanvasOutlineStyleBottomSide = 8,
00441 CanvasOutlineStyleVerticalSides = 12,
00442 CanvasOutlineStyleAllSides = 15
00443 };
00444
00445 vtkBooleanMacro(CanvasOutlineStyle, int);
00446 virtual void SetCanvasOutlineStyle(int);
00447 vtkGetMacro(CanvasOutlineStyle, int);
00449
00451
00452 vtkBooleanMacro(CanvasBackgroundVisibility, int);
00453 virtual void SetCanvasBackgroundVisibility(int);
00454 vtkGetMacro(CanvasBackgroundVisibility, int);
00456
00458
00461 vtkBooleanMacro(ParameterCursorVisibility, int);
00462 virtual void SetParameterCursorVisibility(int);
00463 vtkGetMacro(ParameterCursorVisibility, int);
00465
00467
00468 virtual void SetParameterCursorPosition(double);
00469 vtkGetMacro(ParameterCursorPosition, double);
00471
00473
00474 vtkGetVector3Macro(ParameterCursorColor, double);
00475 virtual void SetParameterCursorColor(double r, double g, double b);
00476 virtual void SetParameterCursorColor(double rgb[3])
00477 { this->SetParameterCursorColor(rgb[0], rgb[1], rgb[2]); };
00479
00481
00482 enum
00483 {
00484 ParameterCursorInteractionStyleNone = 0,
00485 ParameterCursorInteractionStyleDragWithLeftButton = 1,
00486 ParameterCursorInteractionStyleSetWithRighButton = 2,
00487 ParameterCursorInteractionStyleSetWithControlLeftButton = 4,
00488 ParameterCursorInteractionStyleAll = 7
00489 };
00490
00491 vtkBooleanMacro(ParameterCursorInteractionStyle, int);
00492 virtual void SetParameterCursorInteractionStyle(int);
00493 vtkGetMacro(ParameterCursorInteractionStyle, int);
00495
00497
00498 vtkBooleanMacro(ParameterTicksVisibility, int);
00499 virtual void SetParameterTicksVisibility(int);
00500 vtkGetMacro(ParameterTicksVisibility, int);
00502
00504
00505 virtual void SetNumberOfParameterTicks(int);
00506 vtkGetMacro(NumberOfParameterTicks, int);
00508
00510
00511 virtual void SetParameterTicksFormat(const char *);
00512 vtkGetStringMacro(ParameterTicksFormat);
00514
00516
00517 vtkBooleanMacro(ValueTicksVisibility, int);
00518 virtual void SetValueTicksVisibility(int);
00519 vtkGetMacro(ValueTicksVisibility, int);
00521
00523
00524 virtual void SetNumberOfValueTicks(int);
00525 vtkGetMacro(NumberOfValueTicks, int);
00527
00529
00530 virtual void SetValueTicksCanvasWidth(int);
00531 vtkGetMacro(ValueTicksCanvasWidth, int);
00533
00535
00536 virtual void SetValueTicksFormat(const char *);
00537 vtkGetStringMacro(ValueTicksFormat);
00539
00541
00542 vtkBooleanMacro(ComputeValueTicksFromHistogram, int);
00543 virtual void SetComputeValueTicksFromHistogram(int);
00544 vtkGetMacro(ComputeValueTicksFromHistogram, int);
00546
00548
00549 virtual void SetTicksLength(int);
00550 vtkGetMacro(TicksLength, int);
00552
00554 virtual void Create(vtkKWApplication *app);
00555
00557
00560 vtkSetMacro(LockPointsParameter, int);
00561 vtkBooleanMacro(LockPointsParameter, int);
00562 vtkGetMacro(LockPointsParameter, int);
00564
00566
00569 vtkSetMacro(LockEndPointsParameter, int);
00570 vtkBooleanMacro(LockEndPointsParameter, int);
00571 vtkGetMacro(LockEndPointsParameter, int);
00573
00575
00578 vtkSetMacro(LockPointsValue, int);
00579 vtkBooleanMacro(LockPointsValue, int);
00580 vtkGetMacro(LockPointsValue, int);
00582
00584
00585 vtkSetMacro(DisableAddAndRemove, int);
00586 vtkBooleanMacro(DisableAddAndRemove, int);
00587 vtkGetMacro(DisableAddAndRemove, int);
00589
00591
00593 virtual void SetReadOnly(int);
00594 vtkBooleanMacro(ReadOnly, int);
00596
00598
00602 vtkSetMacro(RescaleBetweenEndPoints, int);
00603 vtkBooleanMacro(RescaleBetweenEndPoints, int);
00604 vtkGetMacro(RescaleBetweenEndPoints, int);
00606
00608
00609 virtual void SetPointRadius(int);
00610 vtkGetMacro(PointRadius, int);
00612
00614
00616 virtual void SetSelectedPointRadius(double);
00617 vtkGetMacro(SelectedPointRadius, double);
00619
00621
00625 enum
00626 {
00627 PointStyleDisc = 0,
00628 PointStyleCursorDown,
00629 PointStyleCursorUp,
00630 PointStyleCursorLeft,
00631 PointStyleCursorRight,
00632 PointStyleRectangle,
00633 PointStyleDefault
00634 };
00635
00636 virtual void SetPointStyle(int);
00637 vtkGetMacro(PointStyle, int);
00638 virtual void SetPointStyleToDisc()
00639 { this->SetPointStyle(
00640 vtkKWParameterValueFunctionEditor::PointStyleDisc); };
00641 virtual void SetPointStyleToCursorDown()
00642 { this->SetPointStyle(
00643 vtkKWParameterValueFunctionEditor::PointStyleCursorDown); };
00644 virtual void SetPointStyleToCursorUp()
00645 { this->SetPointStyle(
00646 vtkKWParameterValueFunctionEditor::PointStyleCursorUp); };
00647 virtual void SetPointStyleToCursorLeft()
00648 { this->SetPointStyle(
00649 vtkKWParameterValueFunctionEditor::PointStyleCursorLeft); };
00650 virtual void SetPointStyleToCursorRight()
00651 { this->SetPointStyle(
00652 vtkKWParameterValueFunctionEditor::PointStyleCursorRight); };
00653 virtual void SetPointStyleToRectangle()
00654 { this->SetPointStyle(
00655 vtkKWParameterValueFunctionEditor::PointStyleRectangle); };
00656 virtual void SetPointStyleToDefault()
00657 { this->SetPointStyle(
00658 vtkKWParameterValueFunctionEditor::PointStyleDefault); };
00659 virtual void SetFirstPointStyle(int);
00660 vtkGetMacro(FirstPointStyle, int);
00661 virtual void SetLastPointStyle(int);
00662 vtkGetMacro(LastPointStyle, int);
00664
00666
00667 virtual void SetPointOutlineWidth(int);
00668 vtkGetMacro(PointOutlineWidth, int);
00670
00672
00678 enum
00679 {
00680 PointMarginNone = 0,
00681 PointMarginLeftSide = 1,
00682 PointMarginRightSide = 2,
00683 PointMarginHorizontalSides = 3,
00684 PointMarginTopSide = 4,
00685 PointMarginBottomSide = 8,
00686 PointMarginVerticalSides = 12,
00687 PointMarginAllSides = 15
00688 };
00689
00690 vtkBooleanMacro(PointMarginToCanvas, int);
00691 virtual void SetPointMarginToCanvas(int);
00692 vtkGetMacro(PointMarginToCanvas, int);
00694
00696
00697 vtkGetMacro(SelectedPoint, int);
00698 virtual void SelectPoint(int id);
00699 virtual void ClearSelection();
00700 virtual int HasSelection();
00701 virtual void SelectNextPoint();
00702 virtual void SelectPreviousPoint();
00703 virtual void SelectFirstPoint();
00704 virtual void SelectLastPoint();
00706
00708
00709 virtual int RemoveSelectedPoint();
00710 virtual int RemovePoint(int id);
00711 virtual int RemovePointAtParameter(double parameter);
00713
00715
00716 virtual int AddPointAtCanvasCoordinates(int x, int y, int *id);
00717 virtual int AddPointAtParameter(double parameter, int *id);
00719
00722 virtual int MergePointsFromEditor(vtkKWParameterValueFunctionEditor *editor);
00723
00725
00730 vtkGetVector3Macro(FrameBackgroundColor, double);
00731 virtual void SetFrameBackgroundColor(double r, double g, double b);
00732 virtual void SetFrameBackgroundColor(double rgb[3])
00733 { this->SetFrameBackgroundColor(rgb[0], rgb[1], rgb[2]); };
00734 virtual void SetBackgroundColor(double r, double g, double b);
00735 virtual void SetBackgroundColor(double rgb[3])
00736 { this->Superclass::SetBackgroundColor(rgb); };
00738
00740
00742 vtkGetVector3Macro(PointColor, double);
00743 virtual void SetPointColor(double r, double g, double b);
00744 virtual void SetPointColor(double rgb[3])
00745 { this->SetPointColor(rgb[0], rgb[1], rgb[2]); };
00747
00749
00751 vtkGetVector3Macro(SelectedPointColor, double);
00752 virtual void SetSelectedPointColor(double r, double g, double b);
00753 virtual void SetSelectedPointColor(double rgb[3])
00754 { this->SetSelectedPointColor(rgb[0], rgb[1], rgb[2]); };
00756
00758
00760 vtkGetVector3Macro(PointTextColor, double);
00761 virtual void SetPointTextColor(double r, double g, double b);
00762 virtual void SetPointTextColor(double rgb[3])
00763 { this->SetPointTextColor(rgb[0], rgb[1], rgb[2]); };
00765
00767
00769 vtkGetVector3Macro(SelectedPointTextColor, double);
00770 virtual void SetSelectedPointTextColor(double r, double g, double b);
00771 virtual void SetSelectedPointTextColor(double rgb[3])
00772 { this->SetSelectedPointTextColor(rgb[0], rgb[1], rgb[2]); };
00774
00776
00778 vtkBooleanMacro(ComputePointColorFromValue, int);
00779 virtual void SetComputePointColorFromValue(int);
00780 vtkGetMacro(ComputePointColorFromValue, int);
00782
00784
00788 vtkBooleanMacro(PointVisibility, int);
00789 virtual void SetPointVisibility(int);
00790 vtkGetMacro(PointVisibility, int);
00792
00794
00795 vtkBooleanMacro(PointIndexVisibility, int);
00796 virtual void SetPointIndexVisibility(int);
00797 vtkGetMacro(PointIndexVisibility, int);
00799
00801
00802 vtkBooleanMacro(SelectedPointIndexVisibility, int);
00803 virtual void SetSelectedPointIndexVisibility(int);
00804 vtkGetMacro(SelectedPointIndexVisibility, int);
00806
00808
00810 vtkBooleanMacro(PointGuidelineVisibility, int);
00811 virtual void SetPointGuidelineVisibility(int);
00812 vtkGetMacro(PointGuidelineVisibility, int);
00814
00816
00818 virtual void SetPointGuidelineStyle(int);
00819 vtkGetMacro(PointGuidelineStyle, int);
00821
00823
00826 vtkGetObjectMacro(Histogram, vtkKWHistogram);
00827 virtual void SetHistogram(vtkKWHistogram*);
00828 vtkGetObjectMacro(SecondaryHistogram, vtkKWHistogram);
00829 virtual void SetSecondaryHistogram(vtkKWHistogram*);
00831
00833
00835 vtkGetVector3Macro(HistogramColor, double);
00836 virtual void SetHistogramColor(double r, double g, double b);
00837 virtual void SetHistogramColor(double rgb[3])
00838 { this->SetHistogramColor(rgb[0], rgb[1], rgb[2]); };
00839 vtkGetVector3Macro(SecondaryHistogramColor, double);
00840 virtual void SetSecondaryHistogramColor(double r, double g, double b);
00841 virtual void SetSecondaryHistogramColor(double rgb[3])
00842 { this->SetSecondaryHistogramColor(rgb[0], rgb[1], rgb[2]); };
00844
00846
00849 vtkBooleanMacro(ComputeHistogramColorFromValue, int);
00850 virtual void SetComputeHistogramColorFromValue(int);
00851 vtkGetMacro(ComputeHistogramColorFromValue, int);
00853
00855
00857 virtual void SetHistogramStyle(int);
00858 vtkGetMacro(HistogramStyle, int);
00859 virtual void SetSecondaryHistogramStyle(int);
00860 vtkGetMacro(SecondaryHistogramStyle, int);
00862
00864
00867 virtual void SetHistogramLogModeOptionMenuVisibility(int);
00868 vtkBooleanMacro(HistogramLogModeOptionMenuVisibility, int);
00869 vtkGetMacro(HistogramLogModeOptionMenuVisibility, int);
00870 virtual void SetHistogramLogModeChangedCommand(
00871 vtkObject* object,const char *method);
00872 virtual void InvokeHistogramLogModeChangedCommand();
00874
00876
00878 vtkBooleanMacro(ChangeMouseCursor, int);
00879 vtkGetMacro(ChangeMouseCursor, int);
00880 vtkSetMacro(ChangeMouseCursor, int);
00882
00884
00902 virtual void SetPointAddedCommand(
00903 vtkObject* object,const char *method);
00904 virtual void SetPointChangingCommand(
00905 vtkObject* object, const char *method);
00906 virtual void SetPointChangedCommand(
00907 vtkObject* object, const char *method);
00908 virtual void SetPointRemovedCommand(
00909 vtkObject* object, const char *method);
00910 virtual void SetSelectionChangedCommand(
00911 vtkObject* object,const char *method);
00912 virtual void SetFunctionChangedCommand(
00913 vtkObject* object, const char *method);
00914 virtual void SetFunctionChangingCommand(
00915 vtkObject* object, const char *method);
00916 virtual void SetVisibleRangeChangedCommand(
00917 vtkObject* object, const char *method);
00918 virtual void SetVisibleRangeChangingCommand(
00919 vtkObject* object, const char *method);
00920 virtual void SetParameterCursorMovingCommand(
00921 vtkObject* object, const char *method);
00922 virtual void SetParameterCursorMovedCommand(
00923 vtkObject* object, const char *method);
00925
00927
00929 virtual void SetDoubleClickOnPointCommand(
00930 vtkObject* object,const char *method);
00932
00934
00938 enum
00939 {
00940 FunctionChangedEvent = 10000,
00941 FunctionChangingEvent,
00942 PointAddedEvent,
00943 PointChangedEvent,
00944 PointChangingEvent,
00945 PointRemovedEvent,
00946 SelectionChangedEvent,
00947 VisibleParameterRangeChangedEvent,
00948 VisibleParameterRangeChangingEvent,
00949 VisibleRangeChangedEvent,
00950 VisibleRangeChangingEvent,
00951 ParameterCursorMovedEvent,
00952 ParameterCursorMovingEvent,
00953 DoubleClickOnPointEvent
00954 };
00955
00957
00959
00962 vtkSetMacro(DisableCommands, int);
00963 vtkGetMacro(DisableCommands, int);
00964 vtkBooleanMacro(DisableCommands, int);
00966
00968
00974 virtual int SynchronizeVisibleParameterRange(
00975 vtkKWParameterValueFunctionEditor *b);
00976 virtual int DoNotSynchronizeVisibleParameterRange(
00977 vtkKWParameterValueFunctionEditor *b);
00979
00981
00988 virtual int SynchronizePoints(vtkKWParameterValueFunctionEditor *b);
00989 virtual int DoNotSynchronizePoints(vtkKWParameterValueFunctionEditor *b);
00991
00993
00998 virtual int SynchronizeSingleSelection(
00999 vtkKWParameterValueFunctionEditor *b);
01000 virtual int DoNotSynchronizeSingleSelection(
01001 vtkKWParameterValueFunctionEditor *b);
01003
01005
01010 virtual int SynchronizeSameSelection(
01011 vtkKWParameterValueFunctionEditor *b);
01012 virtual int DoNotSynchronizeSameSelection(
01013 vtkKWParameterValueFunctionEditor *b);
01015
01018 virtual void SetBalloonHelpString(const char *str);
01019
01021
01022 virtual void ConfigureCallback();
01023 virtual void CanvasEnterCallback();
01024 virtual void VisibleParameterRangeChangingCallback();
01025 virtual void VisibleParameterRangeChangedCallback();
01026 virtual void VisibleValueRangeChangingCallback();
01027 virtual void VisibleValueRangeChangedCallback();
01028 virtual void StartInteractionCallback(int x, int y);
01029 virtual void MovePointCallback(int x, int y, int shift);
01030 virtual void EndInteractionCallback(int x, int y);
01031 virtual void ParameterCursorStartInteractionCallback(int x);
01032 virtual void ParameterCursorEndInteractionCallback();
01033 virtual void ParameterCursorMoveCallback(int x);
01034 virtual void ParameterEntryCallback();
01035 virtual void HistogramLogModeCallback(int mode);
01036 virtual void DoubleClickOnPointCallback(int x, int y);
01038
01040 virtual void Update();
01041
01048 virtual void UpdateEnableState();
01049
01051
01052 static const char *FunctionTag;
01053 static const char *SelectedTag;
01054 static const char *PointTag;
01055 static const char *PointGuidelineTag;
01056 static const char *PointTextTag;
01057 static const char *LineTag;
01058 static const char *HistogramTag;
01059 static const char *FrameForegroundTag;
01060 static const char *FrameBackgroundTag;
01061 static const char *ParameterCursorTag;
01062 static const char *ParameterTicksTag;
01063 static const char *ValueTicksTag;
01064
01066
01068
01069 virtual int FunctionPointCanBeAdded();
01070 virtual int FunctionPointCanBeRemoved(int id);
01071 virtual int FunctionPointParameterIsLocked(int id);
01072 virtual int FunctionPointValueIsLocked(int id);
01073 virtual int FunctionPointCanBeMovedToParameter(int id, double parameter);
01075
01077 virtual int MoveFunctionPoint(int id,double parameter,const double *values);
01078
01079 protected:
01080 vtkKWParameterValueFunctionEditor();
01081 ~vtkKWParameterValueFunctionEditor();
01082
01090 virtual int FunctionLineIsInVisibleRangeBetweenPoints(int id1, int id2);
01091
01093
01094 virtual int GetFunctionPointColorInCanvas(int id, double rgb[3]);
01095 virtual int GetFunctionPointTextColorInCanvas(int id, double rgb[3]);
01096 virtual int GetFunctionPointCanvasCoordinates(int id, int *x, int *y);
01097 virtual int GetFunctionPointCanvasCoordinatesAtParameter(
01098 double parameter, int *x, int *y);
01099 virtual int AddFunctionPointAtCanvasCoordinates(int x, int y, int *id);
01100 virtual int AddFunctionPointAtParameter(double parameter, int *id);
01101 virtual int MoveFunctionPointToCanvasCoordinates(int id,int x,int y);
01102 virtual int MoveFunctionPointToParameter(int id,double parameter,int i=0);
01103 virtual int EqualFunctionPointValues(const double *values1, const double *values2);
01104 virtual int FindFunctionPointAtCanvasCoordinates(
01105 int x, int y, int *id, int *c_x, int *c_y);
01107
01108 virtual void UpdatePointEntries(int id);
01109
01114 virtual void RescaleFunctionBetweenEndPoints(int id, double old_parameter);
01115
01117
01118 vtkSetMacro(DisableRedraw, int);
01119 vtkBooleanMacro(DisableRedraw, int);
01120 vtkGetMacro(DisableRedraw, int);
01122
01124
01129 virtual int MergePointFromEditor(
01130 vtkKWParameterValueFunctionEditor *editor, int editor_id, int *new_id);
01132
01134
01137 virtual int CopyPointFromEditor(
01138 vtkKWParameterValueFunctionEditor *editor, int id);
01140
01141 int ParameterRangeVisibility;
01142 int ValueRangeVisibility;
01143 int PointPositionInValueRange;
01144 int ParameterRangePosition;
01145 int CanvasHeight;
01146 int CanvasWidth;
01147 int ExpandCanvasWidth;
01148 int LockPointsParameter;
01149 int LockEndPointsParameter;
01150 int LockPointsValue;
01151 int RescaleBetweenEndPoints;
01152 int DisableAddAndRemove;
01153 int DisableRedraw;
01154 int PointRadius;
01155 double SelectedPointRadius;
01156 int FunctionLineWidth;
01157 int FunctionLineStyle;
01158 int PointGuidelineStyle;
01159 int PointOutlineWidth;
01160 int PointStyle;
01161 int FirstPointStyle;
01162 int LastPointStyle;
01163 int DisableCommands;
01164 int SelectedPoint;
01165 int CanvasOutlineVisibility;
01166 int CanvasOutlineStyle;
01167 int ParameterCursorInteractionStyle;
01168 int CanvasBackgroundVisibility;
01169 int ParameterCursorVisibility;
01170 int FunctionLineVisibility;
01171 int CanvasVisibility;
01172 int PointVisibility;
01173 int PointIndexVisibility;
01174 int PointGuidelineVisibility;
01175 int SelectedPointIndexVisibility;
01176 int ParameterRangeLabelVisibility;
01177 int ValueRangeLabelVisibility;
01178 int RangeLabelPosition;
01179 int PointEntriesPosition;
01180 int ParameterEntryVisibility;
01181 int PointEntriesVisibility;
01182 int UserFrameVisibility;
01183 int ParameterTicksVisibility;
01184 int ValueTicksVisibility;
01185 int ComputeValueTicksFromHistogram;
01186 int PointMarginToCanvas;
01187 int TicksLength;
01188 int NumberOfParameterTicks;
01189 int NumberOfValueTicks;
01190 int ValueTicksCanvasWidth;
01191 int ChangeMouseCursor;
01192 char* ValueTicksFormat;
01193 char* ParameterTicksFormat;
01194 char* ParameterEntryFormat;
01195 double ParameterCursorPosition;
01196
01197 double FrameBackgroundColor[3];
01198 double ParameterCursorColor[3];
01199 double PointColor[3];
01200 double SelectedPointColor[3];
01201 double PointTextColor[3];
01202 double SelectedPointTextColor[3];
01203 int ComputePointColorFromValue;
01204 int InUserInteraction;
01205
01206
01207
01208 char *PointAddedCommand;
01209 char *PointChangingCommand;
01210 char *PointChangedCommand;
01211 char *PointRemovedCommand;
01212 char *SelectionChangedCommand;
01213 char *FunctionChangedCommand;
01214 char *FunctionChangingCommand;
01215 char *VisibleRangeChangedCommand;
01216 char *VisibleRangeChangingCommand;
01217 char *ParameterCursorMovingCommand;
01218 char *ParameterCursorMovedCommand;
01219 char *DoubleClickOnPointCommand;
01220
01221 virtual void InvokeCommand(const char *command);
01222 virtual void InvokePointCommand(
01223 const char *command, int id, const char *extra = 0);
01224
01225 virtual void InvokePointAddedCommand(int id);
01226 virtual void InvokePointChangingCommand(int id);
01227 virtual void InvokePointChangedCommand(int id);
01228 virtual void InvokePointRemovedCommand(int id, double parameter);
01229 virtual void InvokeSelectionChangedCommand();
01230 virtual void InvokeFunctionChangedCommand();
01231 virtual void InvokeFunctionChangingCommand();
01232 virtual void InvokeVisibleRangeChangedCommand();
01233 virtual void InvokeVisibleRangeChangingCommand();
01234 virtual void InvokeParameterCursorMovingCommand();
01235 virtual void InvokeParameterCursorMovedCommand();
01236 virtual void InvokeDoubleClickOnPointCommand(int id);
01237
01238
01239
01240 vtkKWCanvas *Canvas;
01241 vtkKWRange *ParameterRange;
01242 vtkKWRange *ValueRange;
01243 vtkKWFrame *TopLeftContainer;
01244 vtkKWFrame *TopLeftFrame;
01245 vtkKWFrame *UserFrame;
01246 vtkKWFrame *PointEntriesFrame;
01247 vtkKWLabel *RangeLabel;
01248 vtkKWEntryWithLabel *ParameterEntry;
01249 vtkKWCanvas *ValueTicksCanvas;
01250 vtkKWCanvas *ParameterTicksCanvas;
01251 vtkKWCanvas *GuidelineValueCanvas;
01252
01253
01254
01255 vtkKWHistogram *Histogram;
01256 vtkKWHistogram *SecondaryHistogram;
01257
01258 vtkKWHistogram::ImageDescriptor *HistogramImageDescriptor;
01259 vtkKWHistogram::ImageDescriptor *SecondaryHistogramImageDescriptor;
01260
01261 double HistogramColor[3];
01262 double SecondaryHistogramColor[3];
01263 int ComputeHistogramColorFromValue;
01264 int HistogramStyle;
01265 int SecondaryHistogramStyle;
01266 unsigned long LastHistogramBuildTime;
01267 int HistogramLogModeOptionMenuVisibility;
01268 char *HistogramLogModeChangedCommand;
01269
01270 vtkKWMenuButton *HistogramLogModeOptionMenu;
01271 virtual void CreateHistogramLogModeOptionMenu(vtkKWApplication *app);
01272 virtual void UpdateHistogramLogModeOptionMenu();
01273
01275
01276 virtual void Bind();
01277 virtual void UnBind();
01279
01281
01283 virtual void CreateLabel(vtkKWApplication *app);
01284 virtual void CreateParameterRange(vtkKWApplication *app);
01285 virtual void CreateValueRange(vtkKWApplication *app);
01286 virtual void CreateRangeLabel(vtkKWApplication *app);
01287 virtual void CreatePointEntriesFrame(vtkKWApplication *app);
01288 virtual void CreateParameterEntry(vtkKWApplication *app);
01289 virtual void CreateTopLeftContainer(vtkKWApplication *app);
01290 virtual void CreateTopLeftFrame(vtkKWApplication *app);
01291 virtual void CreateUserFrame(vtkKWApplication *app);
01292 virtual void CreateValueTicksCanvas(vtkKWApplication *app);
01293 virtual void CreateParameterTicksCanvas(vtkKWApplication *app);
01294 virtual void CreateGuidelineValueCanvas(vtkKWApplication *app);
01295 virtual int IsTopLeftFrameUsed();
01296 virtual int IsPointEntriesFrameUsed();
01297 virtual int IsGuidelineValueCanvasUsed();
01299
01301
01302 virtual void Pack();
01303 virtual void PackPointEntries();
01305
01307 virtual void GetCanvasItemCenter(int item_id, int *x, int *y);
01308
01310
01312 virtual void GetCanvasScalingFactors(double factors[2]);
01313 virtual void GetCanvasMargin(
01314 int *margin_left, int *margin_right, int *margin_top, int *margin_bottom);
01315 virtual void GetCanvasScrollRegion(double *x, double *y, double *x2, double *y2);
01316 virtual void GetCanvasHorizontalSlidingBounds(
01317 double p_v_range_ext[2], int bounds[2], int margins[2]);
01319
01321
01330 virtual unsigned long GetRedrawFunctionTime();
01331 virtual void Redraw();
01332 virtual void RedrawSizeDependentElements();
01333 virtual void RedrawPanOnlyDependentElements();
01334 virtual void RedrawFunctionDependentElements();
01335 virtual void RedrawSinglePointDependentElements(int id);
01337
01339
01341 virtual void RedrawFunction();
01342 virtual void RedrawPoint(int id, ostrstream *tk_cmd = 0);
01343 virtual void RedrawLine(int id1, int id2, ostrstream *tk_cmd = 0);
01344 virtual void GetLineCoordinates(int id1, int id2, ostrstream *tk_cmd);
01345
01347
01349 virtual void RedrawRangeFrame();
01350
01352 virtual void RedrawRangeTicks();
01353
01355 virtual void RedrawParameterCursor();
01356
01358
01359 virtual void RedrawHistogram();
01360
01361 virtual void UpdateHistogramImageDescriptor(vtkKWHistogram::ImageDescriptor*);
01362
01364
01365
01366
01367
01368
01369 class Ranges
01370 {
01371 public:
01372 double WholeParameterRange[2];
01373 double VisibleParameterRange[2];
01374 double WholeValueRange[2];
01375 double VisibleValueRange[2];
01376
01377 Ranges();
01378 void GetRangesFrom(vtkKWParameterValueFunctionEditor *);
01379 int HasSameWholeRangesComparedTo(Ranges*);
01380 int NeedResizeComparedTo(Ranges*);
01381 int NeedPanOnlyComparedTo(Ranges*);
01382 };
01383 Ranges LastRanges;
01384 unsigned long LastRedrawFunctionTime;
01385
01386
01387 double DisplayedWholeParameterRange[2];
01388
01389
01390 enum
01391 {
01392 ConstrainedMoveFree,
01393 ConstrainedMoveHorizontal,
01394 ConstrainedMoveVertical
01395 };
01396
01397 int LastSelectionCanvasCoordinateX;
01398 int LastSelectionCanvasCoordinateY;
01399 int LastConstrainedMove;
01400
01403 virtual void UpdateRangeLabel();
01404
01406 virtual void UpdateParameterEntry(int id);
01407
01409
01411 virtual int CanvasHasTag(
01412 const char *tag, int *suffix = 0, vtkKWCanvas *canv = NULL);
01414
01416
01417 virtual void CanvasRemoveTag(const char *tag, const char *canv_name = NULL);
01418 virtual void CanvasRemoveTag(
01419 const char *prefix, int id, const char *canv_name = NULL);
01421
01423 virtual int CanvasCheckTagType(const char *prefix, int id, const char *type);
01424
01425
01426
01427 vtkCallbackCommand *SynchronizeCallbackCommand;
01428 vtkCallbackCommand *SynchronizeCallbackCommand2;
01429
01430 virtual int AddObserversList(int nb_events, int *events, vtkCommand *cmd);
01431 virtual int RemoveObserversList(int nb_events, int *events, vtkCommand *cmd);
01432
01433 virtual void ProcessSynchronizationEvents(
01434 vtkObject *caller, unsigned long event, void *calldata);
01435 static void ProcessSynchronizationEventsFunction(
01436 vtkObject *object, unsigned long event, void *clientdata, void *calldata);
01437
01438 virtual void ProcessSynchronizationEvents2(
01439 vtkObject *caller, unsigned long event, void *calldata);
01440 static void ProcessSynchronizationEventsFunction2(
01441 vtkObject *object, unsigned long event, void *clientdata, void *calldata);
01442
01443 private:
01444 vtkKWParameterValueFunctionEditor(const vtkKWParameterValueFunctionEditor&);
01445 void operator=(const vtkKWParameterValueFunctionEditor&);
01446 };
01447
01448 #endif
01449