MCPcopy Create free account
hub / github.com/beefytech/Beef / ChamferedDistanceTransformSlow

Function ChamferedDistanceTransformSlow

BeefySysLib/img/ImgEffects.cpp:563–599  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

561}
562
563static void ChamferedDistanceTransformSlow(uint32* out, int width, int height, int startX, int startY, int endX, int endY)
564 {
565 AutoPerf gPerf("ImgEffects - ChamferedDistanceTransform");
566
567 int kernelCountFwd = sizeof(gKernelValsFwd) / sizeof(int);
568 int kernelCountRev = sizeof(gKernelValsRev) / sizeof(int);
569
570 for (int y = startY; y < endY; y++)
571 {
572 for (int x = startX; x < endX; x++)
573 {
574 for (int kernIdx = 0; kernIdx < kernelCountFwd; kernIdx++)
575 {
576 int cx = BFClamp(x + gKernelOfsFwd[kernIdx][0], 0, width - 1);
577 int cy = BFClamp(y + gKernelOfsFwd[kernIdx][1], 0, height - 1);
578 int aVal = out[cx+cy*width] + gKernelValsFwd[kernIdx];
579 if (aVal < (int) out[x+y*width])
580 out[x+y*width] = aVal;
581 }
582 }
583 }
584
585 for (int y = endY - 1; y >= startY; y--)
586 {
587 for (int x = endX - 1; x >= startX; x--)
588 {
589 for (int kernIdx = 0; kernIdx < kernelCountRev; kernIdx++)
590 {
591 int cx = BFClamp(x + gKernelOfsRev[kernIdx][0], 0, width - 1);
592 int cy = BFClamp(y + gKernelOfsRev[kernIdx][1], 0, height - 1);
593 int aVal = out[cx+cy*width] + gKernelValsRev[kernIdx];
594 if (aVal < (int) out[x+y*width])
595 out[x+y*width] = aVal;
596 }
597 }
598 }
599}
600
601static void ChamferedDistanceTransform(uint32* out, int width, int height)
602{

Callers 1

Calls 1

BFClampFunction · 0.85

Tested by

no test coverage detected