00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00030 #ifndef __vtkKWRange_h
00031 #define __vtkKWRange_h
00032
00033 #include "vtkKWWidgetWithLabel.h"
00034
00035 class vtkKWCanvas;
00036 class vtkKWEntry;
00037 class vtkKWFrame;
00038 class vtkKWPushButtonSet;
00039
00040 class KWWidgets_EXPORT vtkKWRange : public vtkKWWidgetWithLabel
00041 {
00042
00043 public:
00044 static vtkKWRange* New();
00045 vtkTypeRevisionMacro(vtkKWRange,vtkKWWidgetWithLabel);
00046 void PrintSelf(ostream& os, vtkIndent indent);
00047
00049
00050 vtkGetVector2Macro(WholeRange, double);
00051 virtual void SetWholeRange(double r0, double r1);
00052 virtual void SetWholeRange(const double range[2])
00053 { this->SetWholeRange(range[0], range[1]); };
00055
00057
00058 vtkGetVector2Macro(Range, double);
00059 virtual void SetRange(double r0, double r1);
00060 virtual void SetRange(const double range[2])
00061 { this->SetRange(range[0], range[1]); };
00063
00065
00067 virtual void GetRelativeRange(double &r0, double &r1);
00068 virtual void GetRelativeRange(double range[2])
00069 { this->GetRelativeRange(range[0], range[1]); };
00070 virtual void SetRelativeRange(double r0, double r1);
00071 virtual void SetRelativeRange(const double range[2])
00072 { this->SetRelativeRange(range[0], range[1]); };
00074
00076
00088 virtual void SetResolution(double r);
00089 vtkGetMacro(Resolution, double);
00091
00093
00094 virtual void SetAdjustResolution(int);
00095 vtkBooleanMacro(AdjustResolution, int);
00096 vtkGetMacro(AdjustResolution, int);
00098
00100
00101 enum
00102 {
00103 OrientationHorizontal = 0,
00104 OrientationVertical = 1
00105 };
00106
00107 virtual void SetOrientation(int);
00108 vtkGetMacro(Orientation, int);
00109 virtual void SetOrientationToHorizontal()
00110 { this->SetOrientation(vtkKWRange::OrientationHorizontal); };
00111 virtual void SetOrientationToVertical()
00112 { this->SetOrientation(vtkKWRange::OrientationVertical); };
00114
00116
00118 virtual void SetInverted(int);
00119 vtkBooleanMacro(Inverted, int);
00120 vtkGetMacro(Inverted, int);
00122
00124
00127 virtual void SetThickness(int);
00128 vtkGetMacro(Thickness, int);
00130
00132
00135 virtual void SetInternalThickness(double);
00136 vtkGetMacro(InternalThickness, double);
00138
00140
00143 virtual void SetRequestedLength(int);
00144 vtkGetMacro(RequestedLength, int);
00146
00148
00149 virtual void SetSliderSize(int);
00150 vtkGetMacro(SliderSize, int);
00152
00154
00155 vtkSetMacro(SliderCanPush, int);
00156 vtkBooleanMacro(SliderCanPush, int);
00157 vtkGetMacro(SliderCanPush, int);
00159
00161
00163 vtkGetVector3Macro(RangeColor, double);
00164 virtual void SetRangeColor(double r, double g, double b);
00165 virtual void SetRangeColor(double rgb[3])
00166 { this->SetRangeColor(rgb[0], rgb[1], rgb[2]); };
00168
00170
00173 vtkGetVector3Macro(RangeInteractionColor, double);
00174 virtual void SetRangeInteractionColor(double r, double g, double b);
00175 virtual void SetRangeInteractionColor(double rgb[3])
00176 { this->SetRangeInteractionColor(rgb[0], rgb[1], rgb[2]); };
00178
00180
00182 vtkGetVector3Macro(Slider1Color, double);
00183 virtual void SetSlider1Color(double r, double g, double b);
00184 virtual void SetSlider1Color(double rgb[3])
00185 { this->SetSlider1Color(rgb[0], rgb[1], rgb[2]); };
00187
00189
00192 vtkGetVector3Macro(SliderInteractionColor, double);
00193 virtual void SetSliderInteractionColor(double r, double g, double b);
00194 virtual void SetSliderInteractionColor(double rgb[3])
00195 { this->SetSliderInteractionColor(rgb[0], rgb[1], rgb[2]); };
00197
00199
00201 vtkGetVector3Macro(Slider2Color, double);
00202 virtual void SetSlider2Color(double r, double g, double b);
00203 virtual void SetSlider2Color(double rgb[3])
00204 { this->SetSlider2Color(rgb[0], rgb[1], rgb[2]); };
00206
00208
00209 virtual void SetEntriesVisibility(int);
00210 vtkBooleanMacro(EntriesVisibility, int);
00211 vtkGetMacro(EntriesVisibility, int);
00213
00215
00216 virtual vtkKWEntry* GetEntry1()
00217 { return this->Entries[0]; };
00218 virtual vtkKWEntry* GetEntry2()
00219 { return this->Entries[1]; };
00221
00223
00224 virtual void SetEntriesWidth(int width);
00225 vtkGetMacro(EntriesWidth, int);
00227
00229
00233 enum
00234 {
00235 EntryPositionDefault = 0,
00236 EntryPositionTop,
00237 EntryPositionBottom,
00238 EntryPositionLeft,
00239 EntryPositionRight
00240 };
00241
00242 virtual void SetEntry1Position(int);
00243 vtkGetMacro(Entry1Position, int);
00244 virtual void SetEntry1PositionToDefault()
00245 { this->SetEntry1Position(vtkKWRange::EntryPositionDefault); };
00246 virtual void SetEntry1PositionToTop()
00247 { this->SetEntry1Position(vtkKWRange::EntryPositionTop); };
00248 virtual void SetEntry1PositionToBottom()
00249 { this->SetEntry1Position(vtkKWRange::EntryPositionBottom); };
00250 virtual void SetEntry1PositionToLeft()
00251 { this->SetEntry1Position(vtkKWRange::EntryPositionLeft); };
00252 virtual void SetEntry1PositionToRight()
00253 { this->SetEntry1Position(vtkKWRange::EntryPositionRight); };
00254 virtual void SetEntry2Position(int);
00255 vtkGetMacro(Entry2Position, int);
00256 virtual void SetEntry2PositionToDefault()
00257 { this->SetEntry2Position(vtkKWRange::EntryPositionDefault); };
00258 virtual void SetEntry2PositionToTop()
00259 { this->SetEntry2Position(vtkKWRange::EntryPositionTop); };
00260 virtual void SetEntry2PositionToBottom()
00261 { this->SetEntry2Position(vtkKWRange::EntryPositionBottom); };
00262 virtual void SetEntry2PositionToLeft()
00263 { this->SetEntry2Position(vtkKWRange::EntryPositionLeft); };
00264 virtual void SetEntry2PositionToRight()
00265 { this->SetEntry2Position(vtkKWRange::EntryPositionRight); };
00267
00269
00301 virtual void SetCommand(vtkObject *object, const char *method);
00302 virtual void SetStartCommand(vtkObject *object, const char *method);
00303 virtual void SetEndCommand(vtkObject *object, const char *method);
00304 virtual void SetEntriesCommand(vtkObject *object, const char *method);
00306
00308
00311 vtkSetMacro(DisableCommands, int);
00312 vtkGetMacro(DisableCommands, int);
00313 vtkBooleanMacro(DisableCommands, int);
00315
00317
00327 enum
00328 {
00329 RangeValueChangingEvent = 10000,
00330 RangeValueChangedEvent,
00331 RangeValueStartChangingEvent
00332 };
00333
00335
00337
00339 vtkBooleanMacro(SymmetricalInteraction, int);
00340 vtkGetMacro(SymmetricalInteraction, int);
00341 vtkSetMacro(SymmetricalInteraction, int);
00343
00346 virtual void SetBalloonHelpString(const char *str);
00347
00349
00350 vtkGetObjectMacro(Canvas, vtkKWCanvas);
00352
00359 virtual void UpdateEnableState();
00360
00362
00364 vtkSetMacro(ClampRange, int);
00365 vtkGetMacro(ClampRange, int);
00366 vtkBooleanMacro(ClampRange, int);
00368
00370
00371 enum
00372 {
00373 SliderIndex0 = 0,
00374 SliderIndex1 = 1
00375 };
00376
00377 virtual void ConfigureCallback();
00378 virtual void MaximizeRangeCallback();
00379 virtual void EnlargeRangeCallback();
00380 virtual void ShrinkRangeCallback();
00381 virtual void EntriesUpdateCallback(int i);
00382 virtual void StartRangeInteractionCallback(int x, int y);
00383 virtual void StartSliderInteractionCallback(int slider_idx, int x, int y);
00384 virtual void EndInteractionCallback();
00385 virtual void SliderMotionCallback(
00386 int slider_idx, int x, int y, int shift, int ctrl);
00387 virtual void RangeMotionCallback(int x, int y, int shift, int ctrl);
00389
00390
00391
00392 protected:
00393 vtkKWRange();
00394 ~vtkKWRange();
00395
00397 virtual void CreateWidget();
00398
00399 double WholeRange[2];
00400 double Range[2];
00401 double WholeRangeAdjusted[2];
00402 double RangeAdjusted[2];
00403 double Resolution;
00404 int AdjustResolution;
00405 int SymmetricalInteraction;
00406 int Inverted;
00407 int Thickness;
00408 double InternalThickness;
00409 int RequestedLength;
00410 int Orientation;
00411 int DisableCommands;
00412 int SliderSize;
00413 double RangeColor[3];
00414 double RangeInteractionColor[3];
00415 double Slider1Color[3];
00416 double Slider2Color[3];
00417 double SliderInteractionColor[3];
00418 int EntriesVisibility;
00419 int Entry1Position;
00420 int Entry2Position;
00421 int EntriesWidth;
00422 int SliderCanPush;
00423
00424 int ClampRange;
00425
00426 char *Command;
00427 char *StartCommand;
00428 char *EndCommand;
00429 char *EntriesCommand;
00430
00431 virtual void InvokeRangeCommand(const char *command, double r0, double r1);
00432 virtual void InvokeCommand(double r0, double r1);
00433 virtual void InvokeStartCommand(double r0, double r1);
00434 virtual void InvokeEndCommand(double r0, double r1);
00435 virtual void InvokeEntriesCommand(double r0, double r1);
00436
00437 vtkKWFrame *CanvasFrame;
00438 vtkKWCanvas *Canvas;
00439 vtkKWEntry *Entries[2];
00440
00441 virtual void CreateEntries();
00442 virtual void UpdateEntriesValue(double range[2]);
00443 virtual void ConstrainResolution();
00444
00446
00447 virtual void Bind();
00448 virtual void UnBind();
00450
00452
00453 virtual void ConstrainRangeToResolution(
00454 double range[2], double res, int adjust = 1);
00455 virtual void ConstrainRangeToWholeRange(
00456 double range[2], double whole_range[2], double *old_range_hint = 0);
00457 virtual void ConstrainWholeRange();
00458 virtual void ConstrainRange(double *old_range_hint = 0);
00459 virtual void ConstrainRanges();
00461
00463 virtual void Pack();
00464
00466
00467 enum
00468 {
00469 RangeInteraction,
00470 Slider1Interaction,
00471 Slider2Interaction
00472 };
00474
00477 virtual void StartInteraction(int inter_type, int x, int y);
00478
00480
00481 enum
00482 {
00483 DarkShadowColor,
00484 LightShadowColor,
00485 BackgroundColor,
00486 HighlightColor
00487 };
00488
00489 virtual void GetColorShade(
00490 int type, double rgb[3], double &r, double &g, double &b);
00491 virtual void GetWholeRangeColor(int type, double &r, double &g, double &b);
00492 virtual void GetRangeColor(int type, double &r, double &g, double &b);
00493 virtual void GetSliderColor(int slider_idx, int type, double &r, double &g, double &b);
00495
00497
00498 virtual void RedrawCanvas();
00499 virtual void RedrawWholeRange();
00500 virtual void RedrawRange();
00501 virtual void RedrawSliders();
00502 virtual void RedrawSlider(int x, int slider_idx);
00503 virtual void UpdateRangeColors();
00504 virtual void UpdateSliderColors(int slider_idx);
00505 virtual void UpdateColors();
00507
00509 virtual int HasTag(const char *tag, const char *suffix = 0);
00510
00512 virtual void GetSlidersPositions(int pos[2]);
00513
00514
00515
00516 private:
00517
00518 int InInteraction;
00519 int StartInteractionPos;
00520 double StartInteractionRange[2];
00521
00522 vtkKWRange(const vtkKWRange&);
00523 void operator=(const vtkKWRange&);
00524 };
00525
00526 #endif
00527
00528