| 436 | // build the set of times needed to render renderWindow |
| 437 | template<class PIX, int maxValue> |
| 438 | void |
| 439 | buildTimes(const ImageEffect& effect, |
| 440 | const Image* retimeMap, |
| 441 | double time, |
| 442 | const OfxRectI& renderWindow, |
| 443 | double retimeGain, |
| 444 | double retimeOffset, |
| 445 | bool retimeAbsolute, |
| 446 | FilterEnum filter, |
| 447 | std::set<double> *sourceImagesTimes) |
| 448 | { |
| 449 | for (int y = renderWindow.y1; y < renderWindow.y2; ++y) { |
| 450 | if ( effect.abort() ) { |
| 451 | return; |
| 452 | } |
| 453 | for (int x = renderWindow.x1; x < renderWindow.x2; ++x) { |
| 454 | PIX* mapPix = retimeGain != 0. ? (PIX*)retimeMap->getPixelAddress(x, y) : NULL; |
| 455 | double mapVal = mapPix ? (double)(*mapPix) / maxValue : 0.; |
| 456 | double srcTime = retimeGain * mapVal + retimeOffset; |
| 457 | if (!retimeAbsolute) { |
| 458 | srcTime += time; |
| 459 | } |
| 460 | if (srcTime == (int)srcTime) { |
| 461 | sourceImagesTimes->insert(srcTime); |
| 462 | } else { |
| 463 | if (filter == eFilterNearest) { |
| 464 | sourceImagesTimes->insert( std::floor(srcTime + 0.5) ); |
| 465 | } else { |
| 466 | sourceImagesTimes->insert( std::floor(srcTime) ); |
| 467 | sourceImagesTimes->insert( std::ceil(srcTime) ); |
| 468 | } |
| 469 | } |
| 470 | } |
| 471 | } |
| 472 | } |
| 473 | |
| 474 | void |
| 475 | buildTimesSlit(double time, |
nothing calls this directly
no test coverage detected