MCPcopy Create free account
hub / github.com/Kitware/VTK / MouseMoveEvent

Method MouseMoveEvent

Charts/Core/vtkInteractiveArea.cxx:125–166  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

123
124//------------------------------------------------------------------------------
125bool vtkInteractiveArea::MouseMoveEvent(const vtkContextMouseEvent& mouse)
126{
127 if (mouse.GetButton() == this->Actions->Pan())
128 {
129 // Figure out how much the mouse has moved by in plot coordinates - pan
130 vtkVector2d scenePos(mouse.GetScenePos().Cast<double>().GetData());
131 vtkVector2d lastScenePos(mouse.GetLastScenePos().Cast<double>().GetData());
132 vtkVector2d pos(0.0, 0.0);
133 vtkVector2d last(0.0, 0.0);
134
135 // Go from screen to scene coordinates to work out the delta
136 vtkAxis* xAxis = this->BottomAxis;
137 vtkAxis* yAxis = this->LeftAxis;
138 vtkTransform2D* transform = this->Transform->GetTransform();
139 transform->InverseTransformPoints(scenePos.GetData(), pos.GetData(), 1);
140 transform->InverseTransformPoints(lastScenePos.GetData(), last.GetData(), 1);
141 vtkVector2d delta = last - pos;
142 delta[0] /= xAxis->GetScalingFactor();
143 delta[1] /= yAxis->GetScalingFactor();
144
145 // Now move the axis and recalculate the transform
146 delta[0] = delta[0] > 0 ? std::min(delta[0], xAxis->GetMaximumLimit() - xAxis->GetMaximum())
147 : std::max(delta[0], xAxis->GetMinimumLimit() - xAxis->GetMinimum());
148
149 delta[1] = delta[1] > 0 ? std::min(delta[1], yAxis->GetMaximumLimit() - yAxis->GetMaximum())
150 : std::max(delta[1], yAxis->GetMinimumLimit() - yAxis->GetMinimum());
151
152 xAxis->SetMinimum(xAxis->GetMinimum() + delta[0]);
153 xAxis->SetMaximum(xAxis->GetMaximum() + delta[0]);
154 yAxis->SetMinimum(yAxis->GetMinimum() + delta[1]);
155 yAxis->SetMaximum(yAxis->GetMaximum() + delta[1]);
156
157 // Mark the scene as dirty
158 this->Scene->SetDirty(true);
159
160 // ComputeViewTransform is called through Superclass::Paint
161 this->InvokeEvent(vtkCommand::InteractionEvent);
162 return true;
163 }
164
165 return false;
166}
167
168//------------------------------------------------------------------------------
169bool vtkInteractiveArea::MouseButtonPressEvent(const vtkContextMouseEvent& mouse)

Callers

nothing calls this directly

Calls 10

SetDirtyMethod · 0.80
InvokeEventMethod · 0.80
minFunction · 0.50
maxFunction · 0.50
PanMethod · 0.45
GetDataMethod · 0.45
GetTransformMethod · 0.45
SetMinimumMethod · 0.45
SetMaximumMethod · 0.45

Tested by

no test coverage detected