------------------------------------------------------------------------------
| 123 | |
| 124 | //------------------------------------------------------------------------------ |
| 125 | bool 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 | //------------------------------------------------------------------------------ |
| 169 | bool vtkInteractiveArea::MouseButtonPressEvent(const vtkContextMouseEvent& mouse) |
nothing calls this directly
no test coverage detected