MCPcopy Create free account
hub / github.com/NatronGitHub/openfx-misc / buildTimes

Function buildTimes

SlitScan/SlitScan.cpp:438–472  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

436// build the set of times needed to render renderWindow
437template<class PIX, int maxValue>
438void
439buildTimes(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
474void
475buildTimesSlit(double time,

Callers

nothing calls this directly

Calls 1

getPixelAddressMethod · 0.80

Tested by

no test coverage detected