/*========================================================================= Program: Visualization Toolkit Module: vtkSliderRepresentation.cxx Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #include "vtkSliderRepresentation.h" #include "vtkCommand.h" #include "vtkObjectFactory.h" #include "vtkRenderer.h" //------------------------------------------------------------------------------ vtkSliderRepresentation::vtkSliderRepresentation() { this->MinimumValue = 0.0; this->Value = 0.0; this->MaximumValue = 1.0; this->CurrentT = 0.0; this->PickedT = 0.0; this->SliderLength = 0.05; this->SliderWidth = 0.05; this->EndCapLength = 0.025; this->EndCapWidth = 0.05; this->TubeWidth = 0.025; // Labels and text this->ShowSliderLabel = 1; this->LabelFormat = new char[8]; snprintf(this->LabelFormat, 8, "%s", "%0.3g"); this->LabelHeight = 0.05; this->TitleHeight = 0.15; } //------------------------------------------------------------------------------ vtkSliderRepresentation::~vtkSliderRepresentation() { delete[] this->LabelFormat; this->LabelFormat = nullptr; } //------------------------------------------------------------------------------ void vtkSliderRepresentation::SetMinimumValue(double minValue) { if (minValue == this->MinimumValue) { return; } if (minValue >= this->MaximumValue) { this->MaximumValue = minValue + 1; } this->MinimumValue = minValue; if (this->Value < this->MinimumValue) { this->Value = this->MinimumValue; this->CurrentT = 0.0; } else if (this->Value > this->MaximumValue) { this->Value = this->MaximumValue; this->CurrentT = 1.0; } this->InvokeEvent(vtkCommand::WidgetValueChangedEvent, nullptr); if (this->Renderer) { this->BuildRepresentation(); } this->Modified(); } //------------------------------------------------------------------------------ void vtkSliderRepresentation::SetMaximumValue(double maxValue) { if (maxValue == this->MaximumValue) { return; } if (maxValue <= this->MinimumValue) { this->MinimumValue = maxValue - 1; } this->MaximumValue = maxValue; if (this->Value < this->MinimumValue) { this->Value = this->MinimumValue; this->CurrentT = 0.0; } else if (this->Value > this->MaximumValue) { this->Value = this->MaximumValue; this->CurrentT = 1.0; } this->InvokeEvent(vtkCommand::WidgetValueChangedEvent, nullptr); if (this->Renderer) { this->BuildRepresentation(); } this->Modified(); } //------------------------------------------------------------------------------ void vtkSliderRepresentation::SetValue(double value) { if (value == this->Value) { return; } if (value < this->MinimumValue) { value = this->MinimumValue; } if (value > this->MaximumValue) { value = this->MaximumValue; } this->Value = value; this->CurrentT = (value - this->MinimumValue) / (this->MaximumValue - this->MinimumValue); this->InvokeEvent(vtkCommand::WidgetValueChangedEvent, nullptr); if (this->Renderer) { this->BuildRepresentation(); } this->Modified(); } //------------------------------------------------------------------------------ void vtkSliderRepresentation::PrintSelf(ostream& os, vtkIndent indent) { // Superclass typedef defined in vtkTypeMacro() found in vtkSetGet.h this->Superclass::PrintSelf(os, indent); os << indent << "Minimum Value: " << this->MinimumValue << "\n"; os << indent << "Maximum Value: " << this->MaximumValue << "\n"; os << indent << "Value: " << this->Value << "\n"; os << indent << "Slider Length: " << this->SliderLength << "\n"; os << indent << "Slider Width: " << this->SliderWidth << "\n"; os << indent << "End Cap Length: " << this->EndCapLength << "\n"; os << indent << "End Cap Width: " << this->EndCapWidth << "\n"; os << indent << "Tube Width: " << this->TubeWidth << "\n"; os << indent << "Show Slider Label: " << (this->ShowSliderLabel ? "On\n" : "Off\n"); os << indent << "Label Format: " << this->LabelFormat << "\n"; os << indent << "Label Height: " << this->LabelHeight << "\n"; os << indent << "Title Height: " << this->TitleHeight << "\n"; }