Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

GUI/Widgets/vtkKWParameterValueFunctionEditor.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Module:    $RCSfile: vtkKWParameterValueFunctionEditor.h,v $
00004 
00005   Copyright (c) Kitware, Inc.
00006   All rights reserved.
00007   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00008 
00009      This software is distributed WITHOUT ANY WARRANTY; without even
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011      PURPOSE.  See the above copyright notice for more information.
00012 
00013 =========================================================================*/
00029 #ifndef __vtkKWParameterValueFunctionEditor_h
00030 #define __vtkKWParameterValueFunctionEditor_h
00031 
00032 #include "vtkKWParameterValueFunctionInterface.h"
00033 
00034 //BTX
00035 #include "vtkKWHistogram.h" // I need this one
00036 //ETX
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 //BTX
00048 class ostrstream;
00049 //ETX
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   //ETX
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   //ETX
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   //ETX
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   //ETX
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   //ETX
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   //ETX
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   //ETX
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   //ETX
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   //ETX
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   //ETX
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   //ETX
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   // Commands
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   // GUI
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   // Histogram
01254 
01255   vtkKWHistogram    *Histogram;
01256   vtkKWHistogram    *SecondaryHistogram;
01257   //BTX
01258   vtkKWHistogram::ImageDescriptor *HistogramImageDescriptor;
01259   vtkKWHistogram::ImageDescriptor *SecondaryHistogramImageDescriptor;
01260   //ETX
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   //ETX
01347 
01349   virtual void RedrawRangeFrame();
01350 
01352   virtual void RedrawRangeTicks();
01353 
01355   virtual void RedrawParameterCursor();
01356 
01358 
01359   virtual void RedrawHistogram();
01360   //BTX 
01361   virtual void UpdateHistogramImageDescriptor(vtkKWHistogram::ImageDescriptor*);
01362   //ETX
01364 
01365   //BTX
01366   // Simple class designed to hold previous ranges and optimize
01367   // the way the editor is refreshed
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   //ETX
01386 
01387   double DisplayedWholeParameterRange[2];
01388 
01389   //BTX
01390   enum
01391   {
01392     ConstrainedMoveFree,
01393     ConstrainedMoveHorizontal,
01394     ConstrainedMoveVertical
01395   };
01396   //ETX
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   // Synchronization callbacks
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&); // Not implemented
01445   void operator=(const vtkKWParameterValueFunctionEditor&); // Not implemented
01446 };
01447 
01448 #endif
01449 

Generated on Tue May 30 12:31:43 2006 for ParaView by doxygen 1.3.5