protected override void RenderSolidSingleScanLine(IImageByte destImage, IScanlineCache scanLineCache, RGBA_Bytes color) { int y = scanLineCache.y(); int num_spans = scanLineCache.num_spans(); ScanlineSpan scanlineSpan = scanLineCache.begin(); byte[] ManagedCoversArray = scanLineCache.GetCovers(); for (; ; ) { int x = scanlineSpan.x; int num_pix = scanlineSpan.len; int coverIndex = scanlineSpan.cover_index; do { int a = (ManagedCoversArray[coverIndex++] * color.Alpha0To255) >> 8; m_square.draw(destImage.NewGraphics2D().Rasterizer, m_sl, destImage, new RGBA_Bytes(color.Red0To255, color.Green0To255, color.Blue0To255, a), x, y); ++x; } while (--num_pix > 0); if (--num_spans == 0) break; scanlineSpan = scanLineCache.GetNextScanlineSpan(); } }
protected override void RenderSolidSingleScanLine(IImageByte destImage, IScanlineCache scanLineCache, Color color) { int y = scanLineCache.y(); int num_spans = scanLineCache.num_spans(); ScanlineSpan scanlineSpan = scanLineCache.begin(); byte[] ManagedCoversArray = scanLineCache.GetCovers(); for (; ;) { int x = scanlineSpan.x; int num_pix = scanlineSpan.len; int coverIndex = scanlineSpan.cover_index; do { int a = (ManagedCoversArray[coverIndex++] * color.Alpha0To255) >> 8; m_square.draw(destImage.NewGraphics2D().Rasterizer, m_sl, destImage, new Color(color.Red0To255, color.Green0To255, color.Blue0To255, a), x, y); ++x; }while (--num_pix > 0); if (--num_spans == 0) { break; } scanlineSpan = scanLineCache.GetNextScanlineSpan(); } }
private void RenderSolidSingleScanLine(IImageFloat destImage, IScanlineCache scanLine, RGBA_Floats color) { int y = scanLine.y(); int num_spans = scanLine.num_spans(); ScanlineSpan scanlineSpan = scanLine.begin(); byte[] ManagedCoversArray = scanLine.GetCovers(); for (; ;) { int x = scanlineSpan.x; if (scanlineSpan.len > 0) { destImage.blend_solid_hspan(x, y, scanlineSpan.len, color, ManagedCoversArray, scanlineSpan.cover_index); } else { int x2 = (x - (int)scanlineSpan.len - 1); destImage.blend_hline(x, y, x2, color, ManagedCoversArray[scanlineSpan.cover_index]); } if (--num_spans == 0) { break; } scanlineSpan = scanLine.GetNextScanlineSpan(); } }
private void GenerateAndRenderSingleScanline(IScanlineCache scanLineCache, IImageFloat destImageFloat, span_allocator alloc, ISpanGeneratorFloat span_gen) { int y = scanLineCache.y(); int num_spans = scanLineCache.num_spans(); ScanlineSpan scanlineSpan = scanLineCache.begin(); byte[] ManagedCoversArray = scanLineCache.GetCovers(); for (; ;) { int x = scanlineSpan.x; int len = scanlineSpan.len; if (len < 0) { len = -len; } if (tempSpanColorsFloats.Capacity() < len) { tempSpanColorsFloats.Capacity(len); } span_gen.generate(tempSpanColorsFloats.Array, 0, x, y, len); bool useFirstCoverForAll = scanlineSpan.len < 0; destImageFloat.blend_color_hspan(x, y, len, tempSpanColorsFloats.Array, 0, ManagedCoversArray, scanlineSpan.cover_index, useFirstCoverForAll); if (--num_spans == 0) { break; } scanlineSpan = scanLineCache.GetNextScanlineSpan(); } }
private void RenderSolidSingleScanLine(IImageFloat destImage, IScanlineCache scanLine, RGBA_Floats color) { int y = scanLine.y(); int num_spans = scanLine.num_spans(); ScanlineSpan scanlineSpan = scanLine.begin(); byte[] ManagedCoversArray = scanLine.GetCovers(); for (; ; ) { int x = scanlineSpan.x; if (scanlineSpan.len > 0) { destImage.blend_solid_hspan(x, y, scanlineSpan.len, color, ManagedCoversArray, scanlineSpan.cover_index); } else { int x2 = (x - (int)scanlineSpan.len - 1); destImage.blend_hline(x, y, x2, color, ManagedCoversArray[scanlineSpan.cover_index]); } if (--num_spans == 0) break; scanlineSpan = scanLine.GetNextScanlineSpan(); } }
private void GenerateAndRenderSingleScanline(IScanlineCache scanLineCache, IImageFloat destImageFloat, span_allocator alloc, ISpanGeneratorFloat span_gen) { int y = scanLineCache.y(); int num_spans = scanLineCache.num_spans(); ScanlineSpan scanlineSpan = scanLineCache.begin(); byte[] ManagedCoversArray = scanLineCache.GetCovers(); for (; ; ) { int x = scanlineSpan.x; int len = scanlineSpan.len; if (len < 0) len = -len; if (tempSpanColorsFloats.Capacity() < len) { tempSpanColorsFloats.Capacity(len); } span_gen.generate(tempSpanColorsFloats.Array, 0, x, y, len); bool useFirstCoverForAll = scanlineSpan.len < 0; destImageFloat.blend_color_hspan(x, y, len, tempSpanColorsFloats.Array, 0, ManagedCoversArray, scanlineSpan.cover_index, useFirstCoverForAll); if (--num_spans == 0) break; scanlineSpan = scanLineCache.GetNextScanlineSpan(); } }