| 54 | } |
| 55 | |
| 56 | bool interaction::InteractionContext::DoMove(double deltaX, double deltaY) { |
| 57 | // chart_->GetLogTracer()->trace("DoMove deltaX %lf ", deltaX); |
| 58 | // long timestamp = xg::CurrentTimestampAtMM(); |
| 59 | double ratio = deltaX / this->chart_->GetCoord().GetWidth(); |
| 60 | |
| 61 | double rangeStart = range_[0]; |
| 62 | double rangeEnd = range_[1]; |
| 63 | |
| 64 | double rangeLen = rangeEnd - rangeStart; |
| 65 | double rangeOffset = rangeLen * ratio; |
| 66 | |
| 67 | double newRangeStart = rangeStart - rangeOffset; |
| 68 | double newRangeEnd = rangeEnd - rangeOffset; |
| 69 | |
| 70 | std::array<double, 2> newRange; |
| 71 | if(newRangeStart < 0) { |
| 72 | newRange = {0, rangeLen}; |
| 73 | } else if(newRangeEnd > 1) { |
| 74 | newRange = {1 - rangeLen, 1}; |
| 75 | } else { |
| 76 | newRange = {newRangeStart, newRangeEnd}; |
| 77 | } |
| 78 | bool ret = this->UpdateRange(newRange); |
| 79 | return ret; |
| 80 | } |
| 81 | |
| 82 | bool interaction::InteractionContext::DoZoom(double leftScale, double rightScale, double zoom) { |
| 83 | double rangeStart = range_[0]; |
no test coverage detected