* Update Range, so outRange can be split into `numberOfTick` * rounded values, including bounds. * * @see SnapTicksToRoundValues */
| 253 | * @see SnapTicksToRoundValues |
| 254 | */ |
| 255 | void AdjustAndSplitRange(double inRange[2], int inNumTicks, double outRange[2], int& numberOfTicks) |
| 256 | { |
| 257 | // Handle the range |
| 258 | double sRange[2]; |
| 259 | if (inRange[0] < inRange[1]) |
| 260 | { |
| 261 | sRange[0] = inRange[0]; |
| 262 | sRange[1] = inRange[1]; |
| 263 | } |
| 264 | else if (inRange[0] > inRange[1]) |
| 265 | { |
| 266 | sRange[1] = inRange[0]; |
| 267 | sRange[0] = inRange[1]; |
| 268 | } |
| 269 | else // they're equal, so perturb them by 1 percent |
| 270 | { |
| 271 | double perturb = 100.; |
| 272 | if (inRange[0] == 0.0) |
| 273 | { // if they are both zero, then just perturb about zero |
| 274 | sRange[0] = -1 / perturb; |
| 275 | sRange[1] = 1 / perturb; |
| 276 | } |
| 277 | else |
| 278 | { |
| 279 | sRange[0] = inRange[0] - inRange[0] / perturb; |
| 280 | sRange[1] = inRange[0] + inRange[0] / perturb; |
| 281 | } |
| 282 | } |
| 283 | |
| 284 | double interval; |
| 285 | numberOfTicks = details::SnapTicksToRoundValues(sRange, inNumTicks, interval); |
| 286 | |
| 287 | // round range to start on a multiple of Interval. |
| 288 | outRange[0] = static_cast<int>(sRange[0] / interval) * interval; |
| 289 | outRange[1] = outRange[0] + (numberOfTicks - 1) * interval; |
| 290 | |
| 291 | // Adjust if necessary |
| 292 | if (inRange[0] > inRange[1]) |
| 293 | { |
| 294 | sRange[0] = outRange[1]; |
| 295 | outRange[1] = outRange[0]; |
| 296 | outRange[0] = sRange[0]; |
| 297 | interval = -interval; |
| 298 | } |
| 299 | } |
| 300 | |
| 301 | }; |
| 302 |
no test coverage detected