733 {
734 PixelT* pixels = canvas.
pixels;
737
742
743 fl::i32 r_ii8 = r8 - 128;
744 fl::i32 r_io8 = r8 + 128;
745 fl::i32 r_oi8 = r8 + t8 - 128;
746 fl::i32 r_oo8 = r8 + t8 + 128;
747
748 if (r_ii8 < 0) r_ii8 = 0;
749 if (r_io8 < 0) r_io8 = 0;
750
751 fl::i32 ii2 = r_ii8 * r_ii8;
752 fl::i32 io2 = r_io8 * r_io8;
753 fl::i32 oi2 = r_oi8 * r_oi8;
754 fl::i32 oo2 = r_oo8 * r_oo8;
755
756 fl::i32 inner_band = io2 - ii2;
757 fl::i32 outer_band = oo2 - oi2;
758
759 int ri = (r_oo8 >> 8) + 1;
760 int cxi = cx8 >> 8;
761 int cyi = cy8 >> 8;
762
763 int xmin = cxi - ri; if (xmin < 0) xmin = 0;
764 int xmax = cxi + ri;
if (xmax >=
width) xmax =
width - 1;
765 if (xmin > xmax) return;
766 if (cyi + ri < 0 || cyi - ri >=
height)
return;
767
768 fl::i32 dx8 = (static_cast<fl::i32>(xmin) << 8) - cx8;
769 fl::i32 dx2 = dx8 * dx8;
770
772 gc.
xdelta0 = 512 * dx8 + 65536;
780
781 fl::i32 cyfrac = (static_cast<fl::i32>(cyi) << 8) - cy8;
782 fl::i32 d2c = dx2 + cyfrac * cyfrac;
783
784 if (cyi >= 0 && cyi <
height)
786
787 fl::i32 botd2 = d2c, botdelta = 512 * cyfrac + 65536;
788 fl::i32 topd2 = d2c, topdelta = -512 * cyfrac + 65536;
789 botd2 += botdelta; botdelta += 131072;
790 topd2 += topdelta; topdelta += 131072;
791
792 for (int dy = 1; dy <= ri; ++dy) {
793 bool cbot = (botd2 - dx2 <= oo2);
794 bool ctop = (topd2 - dx2 <= oo2);
795 if (!cbot && !ctop) break;
796 int pyb = cyi + dy, pyt = cyi - dy;
797 if (cbot && pyb >= 0 && pyb <
height)
799 if (ctop && pyt >= 0 && pyt <
height)
801 botd2 += botdelta; botdelta += 131072;
802 topd2 += topdelta; topdelta += 131072;
803 }
804}
fl::i32 toFixed8(Coord val)
Convert any Coord type to 8.8 fixed-point (fl::i32).
void renderRingRow(PixelT *buf, int w, int py, fl::i32 d2_row, const RingCtx< PixelT > &g)
Render one scanline of a ring using incremental d² with phase-based scanning.
void computeBandShift(fl::i32 band, fl::u8 &shift_out, fl::u16 &inv_out)
Precompute right-shift and reciprocal multiplier for AA division.
Ring context: bundles all per-circle constants into a struct passed by reference.