00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __vtkKWParameterValueFunctionEditor_h
00028 #define __vtkKWParameterValueFunctionEditor_h
00029
00030 #include "vtkKWParameterValueFunctionInterface.h"
00031
00032
00033 #include "vtkKWHistogram.h"
00034 #include <vtksys/ios/iosfwd>
00035
00036
00037 class vtkCallbackCommand;
00038 class vtkKWCanvas;
00039 class vtkKWFrame;
00040 class vtkKWIcon;
00041 class vtkKWLabel;
00042 class vtkKWEntryWithLabel;
00043 class vtkKWRange;
00044 class vtkKWMenuButton;
00045
00046 class KWWidgets_EXPORT vtkKWParameterValueFunctionEditor : public vtkKWParameterValueFunctionInterface
00047 {
00048 public:
00049 vtkTypeRevisionMacro(vtkKWParameterValueFunctionEditor,vtkKWParameterValueFunctionInterface);
00050 void PrintSelf(ostream& os, vtkIndent indent);
00051
00052
00053
00054
00055
00056 virtual double* GetWholeParameterRange();
00057 virtual void SetWholeParameterRange(double r0, double r1);
00058 virtual void GetWholeParameterRange(double &r0, double &r1);
00059 virtual void GetWholeParameterRange(double range[2]);
00060 virtual void SetWholeParameterRange(double range[2]);
00061
00062
00063
00064
00065
00066 virtual void SetWholeParameterRangeToFunctionRange();
00067
00068
00069
00070
00071
00072 virtual double* GetVisibleParameterRange();
00073 virtual void SetVisibleParameterRange(double r0, double r1);
00074 virtual void GetVisibleParameterRange(double &r0, double &r1);
00075 virtual void GetVisibleParameterRange(double range[2]);
00076 virtual void SetVisibleParameterRange(double range[2]);
00077
00078
00079
00080 virtual void SetVisibleParameterRangeToWholeParameterRange();
00081
00082
00083
00084
00085 virtual void SetRelativeVisibleParameterRange(double r0, double r1);
00086 virtual void GetRelativeVisibleParameterRange(double &r0, double &r1);
00087 virtual void GetRelativeVisibleParameterRange(double range[2]);
00088 virtual void SetRelativeVisibleParameterRange(double range[2]);
00089
00090
00091
00092
00093
00094 virtual double* GetWholeValueRange();
00095 virtual void SetWholeValueRange(double r0, double r1);
00096 virtual void GetWholeValueRange(double &r0, double &r1);
00097 virtual void GetWholeValueRange(double range[2]);
00098 virtual void SetWholeValueRange(double range[2]);
00099
00100
00101
00102
00103
00104 virtual double* GetVisibleValueRange();
00105 virtual void SetVisibleValueRange(double r0, double r1);
00106 virtual void GetVisibleValueRange(double &r0, double &r1);
00107 virtual void GetVisibleValueRange(double range[2]);
00108 virtual void SetVisibleValueRange(double range[2]);
00109
00110
00111
00112
00113 virtual void SetRelativeVisibleValueRange(double r0, double r1);
00114 virtual void GetRelativeVisibleValueRange(double &r0, double &r1);
00115 virtual void GetRelativeVisibleValueRange(double range[2]);
00116 virtual void SetRelativeVisibleValueRange(double range[2]);
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128 virtual void SetLabelPosition(int);
00129
00130
00131
00132
00133
00134 vtkBooleanMacro(ParameterRangeVisibility, int);
00135 virtual void SetParameterRangeVisibility(int);
00136 vtkGetMacro(ParameterRangeVisibility, int);
00137
00138
00139
00140
00141 enum
00142 {
00143 ParameterRangePositionTop = 0,
00144 ParameterRangePositionBottom
00145 };
00146
00147 virtual void SetParameterRangePosition(int);
00148 vtkGetMacro(ParameterRangePosition, int);
00149 virtual void SetParameterRangePositionToTop();
00150 virtual void SetParameterRangePositionToBottom();
00151
00152
00153
00154
00155
00156 vtkBooleanMacro(ValueRangeVisibility, int);
00157 virtual void SetValueRangeVisibility(int);
00158 vtkGetMacro(ValueRangeVisibility, int);
00159
00160
00161
00162
00163
00164 vtkGetObjectMacro(ParameterRange, vtkKWRange);
00165 vtkGetObjectMacro(ValueRange, vtkKWRange);
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188 vtkGetVector2Macro(DisplayedWholeParameterRange, double);
00189 virtual void SetDisplayedWholeParameterRange(double r0, double r1);
00190 virtual void SetDisplayedWholeParameterRange(double range[2]);
00191 virtual void GetDisplayedVisibleParameterRange(double &r0, double &r1);
00192 virtual void GetDisplayedVisibleParameterRange(double range[2]);
00193 virtual void MapParameterToDisplayedParameter(double p, double *displayed_p);
00194 virtual void MapDisplayedParameterToParameter(double displayed_p, double *p);
00195 virtual int GetFunctionPointDisplayedParameter(int id, double *displayed_p);
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205 enum
00206 {
00207 PointPositionValue = 0,
00208 PointPositionTop,
00209 PointPositionBottom,
00210 PointPositionCenter
00211 };
00212
00213 virtual void SetPointPositionInValueRange(int);
00214 vtkGetMacro(PointPositionInValueRange, int);
00215 virtual void SetPointPositionInValueRangeToValue();
00216 virtual void SetPointPositionInValueRangeToTop();
00217 virtual void SetPointPositionInValueRangeToBottom();
00218 virtual void SetPointPositionInValueRangeToCenter();
00219
00220
00221
00222
00223
00224 vtkBooleanMacro(ParameterRangeLabelVisibility, int);
00225 virtual void SetParameterRangeLabelVisibility(int);
00226 vtkGetMacro(ParameterRangeLabelVisibility, int);
00227
00228
00229
00230
00231
00232 vtkBooleanMacro(ValueRangeLabelVisibility, int);
00233 virtual void SetValueRangeLabelVisibility(int);
00234 vtkGetMacro(ValueRangeLabelVisibility, int);
00235
00236
00237
00238
00239
00240
00241
00242 enum
00243 {
00244 RangeLabelPositionDefault = 10,
00245 RangeLabelPositionTop
00246 };
00247
00248 virtual void SetRangeLabelPosition(int);
00249 vtkGetMacro(RangeLabelPosition, int);
00250 virtual void SetRangeLabelPositionToDefault();
00251 virtual void SetRangeLabelPositionToTop();
00252
00253
00254
00255
00256
00257
00258
00259 enum
00260 {
00261 PointEntriesPositionDefault = 10,
00262 PointEntriesPositionRight
00263 };
00264
00265 virtual void SetPointEntriesPosition(int);
00266 vtkGetMacro(PointEntriesPosition, int);
00267 virtual void SetPointEntriesPositionToDefault();
00268 virtual void SetPointEntriesPositionToRight();
00269
00270
00271
00272
00273
00274
00275
00276 vtkBooleanMacro(PointEntriesVisibility, int);
00277 virtual void SetPointEntriesVisibility(int);
00278 vtkGetMacro(PointEntriesVisibility, int);
00279
00280
00281
00282
00283
00284
00285 vtkBooleanMacro(ParameterEntryVisibility, int);
00286 virtual void SetParameterEntryVisibility(int);
00287 vtkGetMacro(ParameterEntryVisibility, int);
00288
00289
00290
00291
00292
00293 virtual void SetParameterEntryFormat(const char *);
00294 vtkGetStringMacro(ParameterEntryFormat);
00295
00296
00297
00298 virtual vtkKWEntryWithLabel* GetParameterEntry();
00299
00300
00301
00302
00303
00304 vtkBooleanMacro(UserFrameVisibility, int);
00305 virtual void SetUserFrameVisibility(int);
00306 vtkGetMacro(UserFrameVisibility, int);
00307
00308
00309
00310
00311
00312 vtkGetObjectMacro(UserFrame, vtkKWFrame);
00313
00314
00315
00316
00317
00318
00319
00320
00321 virtual void SetCanvasHeight(int);
00322 virtual void SetCanvasWidth(int);
00323 virtual int GetCanvasHeight();
00324 virtual int GetCanvasWidth();
00325 vtkBooleanMacro(ExpandCanvasWidth, int);
00326 virtual void SetExpandCanvasWidth(int);
00327 vtkGetMacro(ExpandCanvasWidth, int);
00328 vtkGetMacro(CurrentCanvasHeight, int);
00329 vtkGetMacro(CurrentCanvasWidth, int);
00330
00331
00332
00333
00334 vtkBooleanMacro(CanvasVisibility, int);
00335 virtual void SetCanvasVisibility(int);
00336 vtkGetMacro(CanvasVisibility, int);
00337
00338
00339
00340
00341 vtkBooleanMacro(FunctionLineVisibility, int);
00342 virtual void SetFunctionLineVisibility(int);
00343 vtkGetMacro(FunctionLineVisibility, int);
00344
00345
00346
00347 virtual void SetFunctionLineWidth(int);
00348 vtkGetMacro(FunctionLineWidth, int);
00349
00350
00351
00352
00353 enum
00354 {
00355 LineStyleSolid = 0,
00356 LineStyleDash
00357 };
00358
00359 virtual void SetFunctionLineStyle(int);
00360 vtkGetMacro(FunctionLineStyle, int);
00361 virtual void SetFunctionLineStyleToSolid();
00362 virtual void SetFunctionLineStyleToDash();
00363
00364
00365
00366 vtkBooleanMacro(CanvasOutlineVisibility, int);
00367 virtual void SetCanvasOutlineVisibility(int);
00368 vtkGetMacro(CanvasOutlineVisibility, int);
00369
00370
00371
00372
00373 enum
00374 {
00375 CanvasOutlineStyleLeftSide = 1,
00376 CanvasOutlineStyleRightSide = 2,
00377 CanvasOutlineStyleHorizontalSides = 3,
00378 CanvasOutlineStyleTopSide = 4,
00379 CanvasOutlineStyleBottomSide = 8,
00380 CanvasOutlineStyleVerticalSides = 12,
00381 CanvasOutlineStyleAllSides = 15
00382 };
00383
00384 vtkBooleanMacro(CanvasOutlineStyle, int);
00385 virtual void SetCanvasOutlineStyle(int);
00386 vtkGetMacro(CanvasOutlineStyle, int);
00387
00388
00389
00390 vtkBooleanMacro(CanvasBackgroundVisibility, int);
00391 virtual void SetCanvasBackgroundVisibility(int);
00392 vtkGetMacro(CanvasBackgroundVisibility, int);
00393
00394
00395
00396
00397
00398 vtkBooleanMacro(ParameterCursorVisibility, int);
00399 virtual void SetParameterCursorVisibility(int);
00400 vtkGetMacro(ParameterCursorVisibility, int);
00401
00402
00403
00404 virtual void SetParameterCursorPosition(double);
00405 vtkGetMacro(ParameterCursorPosition, double);
00406
00407
00408
00409 vtkGetVector3Macro(ParameterCursorColor, double);
00410 virtual void SetParameterCursorColor(double r, double g, double b);
00411 virtual void SetParameterCursorColor(double rgb[3]);
00412
00413
00414
00415
00416 enum
00417 {
00418 ParameterCursorInteractionStyleNone = 0,
00419 ParameterCursorInteractionStyleDragWithLeftButton = 1,
00420 ParameterCursorInteractionStyleSetWithRighButton = 2,
00421 ParameterCursorInteractionStyleSetWithControlLeftButton = 4,
00422 ParameterCursorInteractionStyleAll = 7
00423 };
00424
00425 vtkBooleanMacro(ParameterCursorInteractionStyle, int);
00426 virtual void SetParameterCursorInteractionStyle(int);
00427 vtkGetMacro(ParameterCursorInteractionStyle, int);
00428
00429
00430
00431 vtkBooleanMacro(ParameterTicksVisibility, int);
00432 virtual void SetParameterTicksVisibility(int);
00433 vtkGetMacro(ParameterTicksVisibility, int);
00434
00435
00436
00437 virtual void SetNumberOfParameterTicks(int);
00438 vtkGetMacro(NumberOfParameterTicks, int);
00439
00440
00441
00442
00443 virtual void SetParameterTicksFormat(const char *);
00444 vtkGetStringMacro(ParameterTicksFormat);
00445
00446
00447
00448 vtkBooleanMacro(ValueTicksVisibility, int);
00449 virtual void SetValueTicksVisibility(int);
00450 vtkGetMacro(ValueTicksVisibility, int);
00451
00452
00453
00454 virtual void SetNumberOfValueTicks(int);
00455 vtkGetMacro(NumberOfValueTicks, int);
00456
00457
00458
00459 virtual void SetValueTicksCanvasWidth(int);
00460 vtkGetMacro(ValueTicksCanvasWidth, int);
00461
00462
00463
00464 virtual void SetValueTicksFormat(const char *);
00465 vtkGetStringMacro(ValueTicksFormat);
00466
00467
00468
00469 vtkBooleanMacro(ComputeValueTicksFromHistogram, int);
00470 virtual void SetComputeValueTicksFromHistogram(int);
00471 vtkGetMacro(ComputeValueTicksFromHistogram, int);
00472
00473
00474
00475 virtual void SetTicksLength(int);
00476 vtkGetMacro(TicksLength, int);
00477
00478
00479
00480
00481 virtual void SetLockPointsParameter(int);
00482 vtkBooleanMacro(LockPointsParameter, int);
00483 vtkGetMacro(LockPointsParameter, int);
00484
00485
00486
00487
00488
00489 virtual void SetLockEndPointsParameter(int);
00490 vtkBooleanMacro(LockEndPointsParameter, int);
00491 vtkGetMacro(LockEndPointsParameter, int);
00492
00493
00494
00495
00496
00497 virtual void SetLockPointsValue(int);
00498 vtkBooleanMacro(LockPointsValue, int);
00499 vtkGetMacro(LockPointsValue, int);
00500
00501
00502
00503 vtkSetMacro(DisableAddAndRemove, int);
00504 vtkBooleanMacro(DisableAddAndRemove, int);
00505 vtkGetMacro(DisableAddAndRemove, int);
00506
00507
00508
00509
00510
00511 vtkSetMacro(EnableDirectMove, int);
00512 vtkBooleanMacro(EnableDirectMove, int);
00513 vtkGetMacro(EnableDirectMove, int);
00514
00515
00516
00517
00518 virtual void SetReadOnly(int);
00519 vtkBooleanMacro(ReadOnly, int);
00520
00521
00522
00523
00524
00525
00526
00527 vtkSetMacro(RescaleBetweenEndPoints, int);
00528 vtkBooleanMacro(RescaleBetweenEndPoints, int);
00529 vtkGetMacro(RescaleBetweenEndPoints, int);
00530
00531
00532
00533 virtual void SetPointRadius(int);
00534 virtual void SetPointRadiusX(int);
00535 vtkGetMacro(PointRadiusX, int);
00536 virtual void SetPointRadiusY(int);
00537 vtkGetMacro(PointRadiusY, int);
00538
00539
00540
00541
00542 virtual void SetSelectedPointRadius(double);
00543 vtkGetMacro(SelectedPointRadius, double);
00544
00545
00546
00547
00548
00549 virtual void SetSelectedPointText(const char *);
00550 vtkGetStringMacro(SelectedPointText);
00551 virtual void SetSelectedPointTextToInt(int);
00552
00553
00554
00555
00556
00557
00558
00559 enum
00560 {
00561 PointStyleDisc = 0,
00562 PointStyleCursorDown,
00563 PointStyleCursorUp,
00564 PointStyleCursorLeft,
00565 PointStyleCursorRight,
00566 PointStyleRectangle,
00567 PointStyleDefault
00568 };
00569
00570 virtual void SetPointStyle(int);
00571 vtkGetMacro(PointStyle, int);
00572 virtual void SetPointStyleToDisc();
00573 virtual void SetPointStyleToCursorDown();
00574 virtual void SetPointStyleToCursorUp();
00575 virtual void SetPointStyleToCursorLeft();
00576 virtual void SetPointStyleToCursorRight();
00577 virtual void SetPointStyleToRectangle();
00578 virtual void SetPointStyleToDefault();
00579 virtual void SetFirstPointStyle(int);
00580 vtkGetMacro(FirstPointStyle, int);
00581 virtual void SetLastPointStyle(int);
00582 vtkGetMacro(LastPointStyle, int);
00583
00584
00585
00586 virtual void SetPointOutlineWidth(int);
00587 vtkGetMacro(PointOutlineWidth, int);
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598 enum
00599 {
00600 PointMarginNone = 0,
00601 PointMarginLeftSide = 1,
00602 PointMarginRightSide = 2,
00603 PointMarginHorizontalSides = 3,
00604 PointMarginTopSide = 4,
00605 PointMarginBottomSide = 8,
00606 PointMarginVerticalSides = 12,
00607 PointMarginAllSides = 15
00608 };
00609
00610 vtkBooleanMacro(PointMarginToCanvas, int);
00611 virtual void SetPointMarginToCanvas(int);
00612 vtkGetMacro(PointMarginToCanvas, int);
00613 virtual void SetPointMarginToCanvasToNone();
00614 virtual void SetPointMarginToCanvasToLeftSide();
00615 virtual void SetPointMarginToCanvasToRightSide();
00616 virtual void SetPointMarginToCanvasToHorizontalSides();
00617 virtual void SetPointMarginToCanvasToTopSide();
00618 virtual void SetPointMarginToCanvasToBottomSide();
00619 virtual void SetPointMarginToCanvasToVerticalSides();
00620 virtual void SetPointMarginToCanvasToAllSides();
00621
00622
00623
00624 vtkGetMacro(SelectedPoint, int);
00625 virtual void SelectPoint(int id);
00626 virtual void ClearSelection();
00627 virtual int HasSelection();
00628 virtual void SelectNextPoint();
00629 virtual void SelectPreviousPoint();
00630 virtual void SelectFirstPoint();
00631 virtual void SelectLastPoint();
00632
00633
00634
00635 virtual int RemoveSelectedPoint();
00636 virtual int RemovePoint(int id);
00637 virtual int RemovePointAtParameter(double parameter);
00638
00639
00640
00641 virtual int AddPointAtCanvasCoordinates(int x, int y, int *id);
00642 virtual int AddPointAtParameter(double parameter, int *id);
00643
00644
00645
00646
00647 virtual int MergePointsFromEditor(vtkKWParameterValueFunctionEditor *editor);
00648
00649
00650
00651
00652
00653
00654
00655 vtkGetVector3Macro(FrameBackgroundColor, double);
00656 virtual void SetFrameBackgroundColor(double r, double g, double b);
00657 virtual void SetFrameBackgroundColor(double rgb[3]);
00658 virtual void SetBackgroundColor(double r, double g, double b);
00659 virtual void SetBackgroundColor(double rgb[3]);
00660
00661
00662
00663
00664 vtkGetVector3Macro(PointColor, double);
00665 virtual void SetPointColor(double r, double g, double b);
00666 virtual void SetPointColor(double rgb[3]);
00667
00668
00669
00670
00671 vtkGetVector3Macro(SelectedPointColor, double);
00672 virtual void SetSelectedPointColor(double r, double g, double b);
00673 virtual void SetSelectedPointColor(double rgb[3]);
00674
00675
00676
00677
00678
00679 vtkGetVector3Macro(SelectedPointColorInInteraction, double);
00680 virtual void SetSelectedPointColorInInteraction(
00681 double r, double g, double b);
00682 virtual void SetSelectedPointColorInInteraction(double rgb[3]);
00683
00684
00685
00686
00687 enum
00688 {
00689 PointColorStyleFill = 0,
00690 PointColorStyleOutline
00691 };
00692
00693 virtual void SetPointColorStyle(int);
00694 vtkGetMacro(PointColorStyle, int);
00695 virtual void SetPointColorStyleToFill();
00696 virtual void SetPointColorStyleToOutline();
00697
00698
00699
00700
00701 vtkGetVector3Macro(PointTextColor, double);
00702 virtual void SetPointTextColor(double r, double g, double b);
00703 virtual void SetPointTextColor(double rgb[3]);
00704
00705
00706
00707
00708 vtkGetVector3Macro(SelectedPointTextColor, double);
00709 virtual void SetSelectedPointTextColor(double r, double g, double b);
00710 virtual void SetSelectedPointTextColor(double rgb[3]);
00711
00712
00713
00714
00715 vtkBooleanMacro(ComputePointColorFromValue, int);
00716 virtual void SetComputePointColorFromValue(int);
00717 vtkGetMacro(ComputePointColorFromValue, int);
00718
00719
00720
00721
00722
00723
00724 vtkBooleanMacro(PointVisibility, int);
00725 virtual void SetPointVisibility(int);
00726 vtkGetMacro(PointVisibility, int);
00727
00728
00729
00730 vtkBooleanMacro(PointIndexVisibility, int);
00731 virtual void SetPointIndexVisibility(int);
00732 vtkGetMacro(PointIndexVisibility, int);
00733
00734
00735
00736 vtkBooleanMacro(SelectedPointIndexVisibility, int);
00737 virtual void SetSelectedPointIndexVisibility(int);
00738 vtkGetMacro(SelectedPointIndexVisibility, int);
00739
00740
00741
00742
00743 vtkBooleanMacro(PointGuidelineVisibility, int);
00744 virtual void SetPointGuidelineVisibility(int);
00745 vtkGetMacro(PointGuidelineVisibility, int);
00746
00747
00748
00749
00750 virtual void SetPointGuidelineStyle(int);
00751 vtkGetMacro(PointGuidelineStyle, int);
00752
00753
00754
00755
00756
00757 vtkGetObjectMacro(Histogram, vtkKWHistogram);
00758 virtual void SetHistogram(vtkKWHistogram*);
00759 vtkGetObjectMacro(SecondaryHistogram, vtkKWHistogram);
00760 virtual void SetSecondaryHistogram(vtkKWHistogram*);
00761
00762
00763
00764
00765
00766
00767
00768
00769
00770
00771 virtual void DisplayHistogramOnly();
00772
00773
00774
00775
00776 vtkGetVector3Macro(HistogramColor, double);
00777 virtual void SetHistogramColor(double r, double g, double b);
00778 virtual void SetHistogramColor(double rgb[3]);
00779 vtkGetVector3Macro(SecondaryHistogramColor, double);
00780 virtual void SetSecondaryHistogramColor(double r, double g, double b);
00781 virtual void SetSecondaryHistogramColor(double rgb[3]);
00782
00783
00784
00785
00786 vtkBooleanMacro(ComputeHistogramColorFromValue, int);
00787 virtual void SetComputeHistogramColorFromValue(int);
00788 vtkGetMacro(ComputeHistogramColorFromValue, int);
00789
00790
00791
00792
00793 enum
00794 {
00795 HistogramStyleBars = 0,
00796 HistogramStyleDots,
00797 HistogramStylePolyLine
00798 };
00799
00800 vtkGetMacro(HistogramStyle, int);
00801 virtual void SetHistogramStyle(int);
00802 virtual void SetHistogramStyleToBars();
00803 virtual void SetHistogramStyleToDots();
00804 virtual void SetHistogramStyleToPolyLine();
00805 vtkGetMacro(SecondaryHistogramStyle, int);
00806 virtual void SetSecondaryHistogramStyle(int);
00807 virtual void SetSecondaryHistogramStyleToBars();
00808 virtual void SetSecondaryHistogramStyleToDots();
00809 virtual void SetSecondaryHistogramStyleToPolyLine();
00810
00811
00812
00813 virtual void SetHistogramPolyLineWidth(int);
00814 vtkGetMacro(HistogramPolyLineWidth, int);
00815
00816
00817
00818
00819
00820 virtual void SetHistogramLogModeOptionMenuVisibility(int);
00821 vtkBooleanMacro(HistogramLogModeOptionMenuVisibility, int);
00822 vtkGetMacro(HistogramLogModeOptionMenuVisibility, int);
00823
00824
00825
00826
00827
00828
00829
00830
00831
00832
00833 virtual void SetHistogramLogModeChangedCommand(
00834 vtkObject *object,const char *method);
00835
00836
00837
00838
00839 vtkBooleanMacro(ChangeMouseCursor, int);
00840 vtkGetMacro(ChangeMouseCursor, int);
00841 vtkSetMacro(ChangeMouseCursor, int);
00842
00843
00844
00845
00846
00847
00848
00849
00850
00851
00852
00853
00854
00855
00856
00857
00858
00859
00860
00861
00862
00863
00864
00865
00866
00867 virtual void SetFunctionStartChangingCommand(
00868 vtkObject *object, const char *method);
00869 virtual void SetFunctionChangedCommand(
00870 vtkObject *object, const char *method);
00871 virtual void SetFunctionChangingCommand(
00872 vtkObject *object, const char *method);
00873
00874
00875
00876
00877
00878
00879
00880
00881
00882
00883
00884
00885
00886
00887
00888
00889
00890
00891
00892
00893
00894
00895
00896
00897
00898
00899
00900
00901
00902
00903
00904
00905
00906 virtual void SetPointAddedCommand(
00907 vtkObject *object,const char *method);
00908 virtual void SetPointChangingCommand(
00909 vtkObject *object, const char *method);
00910 virtual void SetPointChangedCommand(
00911 vtkObject *object, const char *method);
00912 virtual void SetDoubleClickOnPointCommand(
00913 vtkObject *object,const char *method);
00914 virtual void SetPointRemovedCommand(
00915 vtkObject *object, const char *method);
00916
00917
00918
00919
00920
00921
00922
00923
00924
00925 virtual void SetSelectionChangedCommand(
00926 vtkObject *object,const char *method);
00927
00928
00929
00930
00931
00932
00933
00934
00935
00936
00937
00938
00939
00940
00941
00942
00943
00944
00945
00946
00947
00948
00949
00950 virtual void SetVisibleRangeChangedCommand(
00951 vtkObject *object, const char *method);
00952 virtual void SetVisibleRangeChangingCommand(
00953 vtkObject *object, const char *method);
00954
00955
00956
00957
00958
00959
00960
00961
00962
00963
00964
00965
00966
00967 virtual void SetParameterCursorMovingCommand(
00968 vtkObject *object, const char *method);
00969 virtual void SetParameterCursorMovedCommand(
00970 vtkObject *object, const char *method);
00971
00972
00973
00974
00975
00976 vtkSetMacro(DisableCommands, int);
00977 vtkGetMacro(DisableCommands, int);
00978 vtkBooleanMacro(DisableCommands, int);
00979
00980
00981
00982
00983
00984
00985
00986
00987
00988
00989 enum
00990 {
00991 FunctionChangedEvent = 10000,
00992 FunctionStartChangingEvent,
00993 FunctionChangingEvent,
00994 PointAddedEvent,
00995 PointChangedEvent,
00996 PointChangingEvent,
00997 PointRemovedEvent,
00998 SelectionChangedEvent,
00999 VisibleParameterRangeChangedEvent,
01000 VisibleParameterRangeChangingEvent,
01001 VisibleValueRangeChangedEvent,
01002 VisibleValueRangeChangingEvent,
01003 VisibleRangeChangedEvent,
01004 VisibleRangeChangingEvent,
01005 RelativeVisibleRangeChangedEvent,
01006 RelativeVisibleRangeChangingEvent,
01007 ParameterCursorMovedEvent,
01008 ParameterCursorMovingEvent,
01009 DoubleClickOnPointEvent
01010 };
01011
01012
01013
01014
01015
01016
01017
01018
01019
01020 virtual int SynchronizeVisibleParameterRange(
01021 vtkKWParameterValueFunctionEditor *b);
01022 virtual int DoNotSynchronizeVisibleParameterRange(
01023 vtkKWParameterValueFunctionEditor *b);
01024
01025
01026
01027
01028
01029
01030
01031
01032
01033
01034 virtual int SynchronizePoints(vtkKWParameterValueFunctionEditor *b);
01035 virtual int DoNotSynchronizePoints(vtkKWParameterValueFunctionEditor *b);
01036
01037
01038
01039
01040
01041
01042
01043
01044 virtual int SynchronizeSingleSelection(
01045 vtkKWParameterValueFunctionEditor *b);
01046 virtual int DoNotSynchronizeSingleSelection(
01047 vtkKWParameterValueFunctionEditor *b);
01048
01049
01050
01051
01052
01053
01054
01055
01056 virtual int SynchronizeSameSelection(
01057 vtkKWParameterValueFunctionEditor *b);
01058 virtual int DoNotSynchronizeSameSelection(
01059 vtkKWParameterValueFunctionEditor *b);
01060
01061
01062
01063
01064 virtual void SetBalloonHelpString(const char *str);
01065
01066
01067
01068 virtual void Update();
01069
01070
01071
01072
01073
01074
01075
01076
01077 virtual void UpdateEnableState();
01078
01079
01080
01081
01082 static const char *FunctionTag;
01083 static const char *SelectedTag;
01084 static const char *PointTag;
01085 static const char *PointGuidelineTag;
01086 static const char *PointTextTag;
01087 static const char *LineTag;
01088 static const char *HistogramTag;
01089 static const char *SecondaryHistogramTag;
01090 static const char *FrameForegroundTag;
01091 static const char *FrameBackgroundTag;
01092 static const char *ParameterCursorTag;
01093 static const char *ParameterTicksTag;
01094 static const char *ValueTicksTag;
01095
01096
01097
01098
01099 virtual int FunctionPointCanBeAdded();
01100 virtual int FunctionPointCanBeRemoved(int id);
01101 virtual int FunctionPointParameterIsLocked(int id);
01102 virtual int FunctionPointValueIsLocked(int id);
01103 virtual int FunctionPointCanBeMovedToParameter(int id, double parameter);
01104
01105
01106
01107 virtual int MoveFunctionPoint(int id,double parameter,const double *values);
01108
01109
01110
01111 virtual void ConfigureCallback();
01112 virtual void VisibleParameterRangeChangingCallback(double, double);
01113 virtual void VisibleParameterRangeChangedCallback(double, double);
01114 virtual void VisibleValueRangeChangingCallback(double, double);
01115 virtual void VisibleValueRangeChangedCallback(double, double);
01116 virtual void StartInteractionCallback(int x, int y, int shift);
01117 virtual void MovePointCallback(int x, int y, int shift);
01118 virtual void EndInteractionCallback(int x, int y);
01119 virtual void ParameterCursorStartInteractionCallback(int x);
01120 virtual void ParameterCursorEndInteractionCallback();
01121 virtual void ParameterCursorMoveCallback(int x);
01122 virtual void ParameterEntryCallback(const char*);
01123 virtual void HistogramLogModeCallback(int mode);
01124 virtual void DoubleClickOnPointCallback(int x, int y);
01125
01126 protected:
01127 vtkKWParameterValueFunctionEditor();
01128 ~vtkKWParameterValueFunctionEditor();
01129
01130
01131
01132 virtual void CreateWidget();
01133
01134
01135
01136
01137
01138
01139
01140
01141
01142 virtual int FunctionLineIsInVisibleRangeBetweenPoints(int id1, int id2);
01143
01144
01145
01146 virtual int GetFunctionPointColorInCanvas(int id, double rgb[3]);
01147 virtual int GetFunctionPointTextColorInCanvas(int id, double rgb[3]);
01148 virtual int GetFunctionPointCanvasCoordinates(int id, int *x, int *y);
01149 virtual int GetFunctionPointCanvasCoordinatesAtParameter(
01150 double parameter, int *x, int *y);
01151 virtual int AddFunctionPointAtCanvasCoordinates(int x, int y, int *id);
01152 virtual int AddFunctionPointAtParameter(double parameter, int *id);
01153 virtual int MoveFunctionPointToCanvasCoordinates(int id,int x,int y);
01154 virtual int MoveFunctionPointToParameter(int id,double parameter,int i=0);
01155 virtual int EqualFunctionPointValues(
01156 const double *values1, const double *values2);
01157 virtual int FindFunctionPointAtCanvasCoordinates(
01158 int x, int y, int *id, int *c_x, int *c_y);
01159
01160 virtual void UpdatePointEntries(int id);
01161
01162
01163
01164
01165
01166
01167
01168 virtual void RescaleFunctionBetweenEndPoints(int id, double old_parameter);
01169
01170
01171
01172 vtkSetMacro(DisableRedraw, int);
01173 vtkBooleanMacro(DisableRedraw, int);
01174 vtkGetMacro(DisableRedraw, int);
01175
01176
01177
01178
01179
01180
01181 virtual int MergePointFromEditor(
01182 vtkKWParameterValueFunctionEditor *editor, int editor_id, int *new_id);
01183
01184
01185
01186
01187
01188
01189 virtual int CopyPointFromEditor(
01190 vtkKWParameterValueFunctionEditor *editor, int id);
01191
01192 int ParameterRangeVisibility;
01193 int ValueRangeVisibility;
01194 int PointPositionInValueRange;
01195 int ParameterRangePosition;
01196 int PointColorStyle;
01197 int CurrentCanvasHeight;
01198 int CurrentCanvasWidth;
01199 int RequestedCanvasHeight;
01200 int RequestedCanvasWidth;
01201 int ExpandCanvasWidth;
01202 int LockPointsParameter;
01203 int LockEndPointsParameter;
01204 int LockPointsValue;
01205 int RescaleBetweenEndPoints;
01206 int DisableAddAndRemove;
01207 int EnableDirectMove;
01208 int DisableRedraw;
01209 int PointRadiusX;
01210 int PointRadiusY;
01211 double SelectedPointRadius;
01212 int FunctionLineWidth;
01213 int FunctionLineStyle;
01214 int PointGuidelineStyle;
01215 int PointOutlineWidth;
01216 int PointStyle;
01217 int FirstPointStyle;
01218 int LastPointStyle;
01219 int DisableCommands;
01220 int SelectedPoint;
01221 int CanvasOutlineVisibility;
01222 int CanvasOutlineStyle;
01223 int ParameterCursorInteractionStyle;
01224 int CanvasBackgroundVisibility;
01225 int ParameterCursorVisibility;
01226 int FunctionLineVisibility;
01227 int CanvasVisibility;
01228 int PointVisibility;
01229 int PointIndexVisibility;
01230 int PointGuidelineVisibility;
01231 int SelectedPointIndexVisibility;
01232 int ParameterRangeLabelVisibility;
01233 int ValueRangeLabelVisibility;
01234 int RangeLabelPosition;
01235 int PointEntriesPosition;
01236 int ParameterEntryVisibility;
01237 int PointEntriesVisibility;
01238 int UserFrameVisibility;
01239 int ParameterTicksVisibility;
01240 int ValueTicksVisibility;
01241 int ComputeValueTicksFromHistogram;
01242 int PointMarginToCanvas;
01243 int TicksLength;
01244 int NumberOfParameterTicks;
01245 int NumberOfValueTicks;
01246 int ValueTicksCanvasWidth;
01247 int ChangeMouseCursor;
01248 char* ValueTicksFormat;
01249 char* ParameterTicksFormat;
01250 char* ParameterEntryFormat;
01251 double ParameterCursorPosition;
01252 char* SelectedPointText;
01253
01254 double FrameBackgroundColor[3];
01255 double ParameterCursorColor[3];
01256 double PointColor[3];
01257 double SelectedPointColor[3];
01258 double SelectedPointColorInInteraction[3];
01259 double PointTextColor[3];
01260 double SelectedPointTextColor[3];
01261 int ComputePointColorFromValue;
01262 int InUserInteraction;
01263
01264
01265
01266 char *PointAddedCommand;
01267 char *PointChangingCommand;
01268 char *PointChangedCommand;
01269 char *PointRemovedCommand;
01270 char *SelectionChangedCommand;
01271 char *FunctionChangedCommand;
01272 char *FunctionChangingCommand;
01273 char *FunctionStartChangingCommand;
01274 char *VisibleRangeChangedCommand;
01275 char *VisibleRangeChangingCommand;
01276 char *ParameterCursorMovingCommand;
01277 char *ParameterCursorMovedCommand;
01278 char *DoubleClickOnPointCommand;
01279
01280 virtual void InvokeObjectMethodCommand(const char *command);
01281 virtual void InvokeHistogramLogModeChangedCommand(int mode);
01282 virtual void InvokePointCommand(
01283 const char *command, int id, const char *extra = 0);
01284
01285 virtual void InvokePointAddedCommand(int id);
01286 virtual void InvokePointChangingCommand(int id);
01287 virtual void InvokePointChangedCommand(int id);
01288 virtual void InvokePointRemovedCommand(int id, double parameter);
01289 virtual void InvokeDoubleClickOnPointCommand(int id);
01290 virtual void InvokeSelectionChangedCommand();
01291 virtual void InvokeFunctionChangedCommand();
01292 virtual void InvokeFunctionChangingCommand();
01293 virtual void InvokeFunctionStartChangingCommand();
01294 virtual void InvokeVisibleRangeChangedCommand();
01295 virtual void InvokeVisibleRangeChangingCommand();
01296 virtual void InvokeParameterCursorMovingCommand(double pos);
01297 virtual void InvokeParameterCursorMovedCommand(double pos);
01298
01299
01300
01301 vtkKWCanvas *Canvas;
01302 vtkKWRange *ParameterRange;
01303 vtkKWRange *ValueRange;
01304 vtkKWFrame *TopLeftContainer;
01305 vtkKWFrame *TopLeftFrame;
01306 vtkKWFrame *UserFrame;
01307 vtkKWFrame *PointEntriesFrame;
01308 vtkKWLabel *RangeLabel;
01309 vtkKWEntryWithLabel *ParameterEntry;
01310 vtkKWCanvas *ValueTicksCanvas;
01311 vtkKWCanvas *ParameterTicksCanvas;
01312 vtkKWCanvas *GuidelineValueCanvas;
01313
01314
01315
01316 vtkKWHistogram *Histogram;
01317 vtkKWHistogram *SecondaryHistogram;
01318
01319 vtkKWHistogram::ImageDescriptor *HistogramImageDescriptor;
01320 vtkKWHistogram::ImageDescriptor *SecondaryHistogramImageDescriptor;
01321
01322 double HistogramColor[3];
01323 double SecondaryHistogramColor[3];
01324 int ComputeHistogramColorFromValue;
01325 int HistogramStyle;
01326 int SecondaryHistogramStyle;
01327 unsigned long LastHistogramBuildTime;
01328 int HistogramLogModeOptionMenuVisibility;
01329 char *HistogramLogModeChangedCommand;
01330 int HistogramPolyLineWidth;
01331
01332 vtkKWMenuButton *HistogramLogModeOptionMenu;
01333 virtual void CreateHistogramLogModeOptionMenu();
01334 virtual void UpdateHistogramLogModeOptionMenu();
01335
01336
01337
01338 virtual void Bind();
01339 virtual void UnBind();
01340
01341
01342
01343
01344 virtual void CreateLabel();
01345 virtual void CreateParameterRange();
01346 virtual void CreateValueRange();
01347 virtual void CreateRangeLabel();
01348 virtual void CreatePointEntriesFrame();
01349 virtual void CreateParameterEntry();
01350 virtual void CreateTopLeftContainer();
01351 virtual void CreateTopLeftFrame();
01352 virtual void CreateUserFrame();
01353 virtual void CreateValueTicksCanvas();
01354 virtual void CreateParameterTicksCanvas();
01355 virtual void CreateGuidelineValueCanvas();
01356 virtual int IsTopLeftFrameUsed();
01357 virtual int IsPointEntriesFrameUsed();
01358 virtual int IsGuidelineValueCanvasUsed();
01359
01360
01361
01362 virtual void Pack();
01363 virtual void PackPointEntries();
01364
01365
01366
01367 virtual void GetCanvasItemCenter(int item_id, int *x, int *y);
01368
01369
01370
01371
01372 virtual void GetCanvasScalingFactors(double factors[2]);
01373 virtual void GetCanvasMargin(
01374 int *margin_left, int *margin_right, int *margin_top, int *margin_bottom);
01375 virtual void GetCanvasScrollRegion(double *x, double *y, double *x2, double *y2);
01376 virtual void GetCanvasHorizontalSlidingBounds(
01377 double p_v_range_ext[2], int bounds[2], int margins[2]);
01378
01379
01380
01381
01382
01383
01384
01385
01386
01387
01388
01389
01390 virtual unsigned long GetRedrawFunctionTime();
01391 virtual void Redraw();
01392 virtual void RedrawSizeDependentElements();
01393 virtual void RedrawPanOnlyDependentElements();
01394 virtual void RedrawFunctionDependentElements();
01395 virtual void RedrawSinglePointDependentElements(int id);
01396
01397
01398
01399
01400
01401 virtual void RedrawFunction();
01402 virtual void RedrawPoint(int id, vtksys_ios::ostream *tk_cmd = 0);
01403 virtual void RedrawLine(int id1, int id2, vtksys_ios::ostream *tk_cmd = 0);
01404 virtual void GetLineCoordinates(int id1, int id2, vtksys_ios::ostream *tk_cmd);
01405
01406
01407
01408
01409 virtual void RedrawRangeFrame();
01410
01411
01412
01413 virtual void RedrawRangeTicks();
01414
01415
01416
01417 virtual void RedrawParameterCursor();
01418
01419
01420
01421 virtual void RedrawHistogram();
01422
01423 virtual void UpdateHistogramImageDescriptor(vtkKWHistogram::ImageDescriptor*);
01424
01425
01426
01427
01428
01429
01430 class Ranges
01431 {
01432 public:
01433 double WholeParameterRange[2];
01434 double VisibleParameterRange[2];
01435 double WholeValueRange[2];
01436 double VisibleValueRange[2];
01437
01438 Ranges();
01439 void GetRangesFrom(vtkKWParameterValueFunctionEditor *);
01440 int HasSameWholeRangesComparedTo(Ranges*);
01441 int NeedResizeComparedTo(Ranges*);
01442 int NeedPanOnlyComparedTo(Ranges*);
01443 };
01444 Ranges LastRanges;
01445 unsigned long LastRedrawFunctionTime;
01446 int LastRedrawFunctionSize;
01447
01448
01449 double DisplayedWholeParameterRange[2];
01450
01451
01452 enum
01453 {
01454 ConstrainedMoveFree,
01455 ConstrainedMoveHorizontal,
01456 ConstrainedMoveVertical
01457 };
01458
01459 int LastSelectionCanvasCoordinateX;
01460 int LastSelectionCanvasCoordinateY;
01461 int LastConstrainedMove;
01462
01463
01464
01465
01466 virtual void UpdateRangeLabel();
01467
01468
01469
01470 virtual void UpdateParameterEntry(int id);
01471
01472
01473
01474
01475
01476 virtual int CanvasHasTag(
01477 const char *tag, int *suffix = 0, vtkKWCanvas *canv = NULL);
01478
01479
01480
01481 virtual void CanvasRemoveTag(const char *tag, const char *canv_name = NULL);
01482 virtual void CanvasRemoveTag(
01483 const char *prefix, int id, const char *canv_name = NULL);
01484
01485
01486
01487 virtual int CanvasCheckTagType(const char *prefix, int id, const char *type);
01488
01489
01490
01491
01492
01493 int FindClosestItemWithTagAtCanvasCoordinates(
01494 int x, int y, int halo, const char *tag, int *c_x, int *c_y, char *found);
01495
01496
01497
01498 vtkCallbackCommand *SynchronizeCallbackCommand;
01499 vtkCallbackCommand *SynchronizeCallbackCommand2;
01500
01501 virtual int AddObserversList(int nb_events, int *events, vtkCommand *cmd);
01502 virtual int RemoveObserversList(int nb_events, int *events, vtkCommand *cmd);
01503
01504 virtual void ProcessSynchronizationEvents(
01505 vtkObject *caller, unsigned long event, void *calldata);
01506 static void ProcessSynchronizationEventsFunction(
01507 vtkObject *object, unsigned long event, void *clientdata, void *calldata);
01508
01509 virtual void ProcessSynchronizationEvents2(
01510 vtkObject *caller, unsigned long event, void *calldata);
01511 static void ProcessSynchronizationEventsFunction2(
01512 vtkObject *object, unsigned long event, void *clientdata, void *calldata);
01513
01514 private:
01515
01516 vtkKWParameterValueFunctionEditor(const vtkKWParameterValueFunctionEditor&);
01517 void operator=(const vtkKWParameterValueFunctionEditor&);
01518 };
01519
01520 #endif
01521