public static void stbtt__sort_edges_ins_sort(stbtt__edge *p, int n) { int i = 0; int j = 0; for (i = 1; (i) < (n); ++i) { stbtt__edge t = p[i]; stbtt__edge *a = &t; j = i; while ((j) > (0)) { stbtt__edge *b = &p[j - 1]; int c = a->y0 < b->y0 ? 1 : 0; if (c == 0) { break; } p[j] = p[j - 1]; --j; } if (i != j) { p[j] = t; } } }
public static void stbtt__sort_edges_ins_sort(stbtt__edge *p, int n) { int i = 0; int j = 0; for (i = (int)(1); (i) < (n); ++i) { stbtt__edge t = (stbtt__edge)(p[i]); stbtt__edge *a = &t; j = (int)(i); while ((j) > (0)) { stbtt__edge *b = &p[j - 1]; int c = (int)(a->y0 < b->y0 ? 1 : 0); if (c == 0) { break; } p[j] = (stbtt__edge)(p[j - 1]); --j; } if (i != j) { p[j] = (stbtt__edge)(t); } } }
public void stbtt__rasterize(stbtt__point[] pts, int[] wcount, int windings, float scale_x, float scale_y, float shift_x, float shift_y, int off_x, int off_y, int invert) { var y_scale_inv = invert != 0 ? -scale_y : scale_y; var n = 0; var i = 0; var j = 0; var k = 0; var m = 0; var vsubsample = 1; n = 0; for (i = 0; i < windings; ++i) { n += wcount[i]; } var e = new stbtt__edge[n + 1]; for (i = 0; i < e.Length; ++i) { e[i] = new stbtt__edge(); } n = 0; m = 0; for (i = 0; i < windings; ++i) { var p = new FakePtr <stbtt__point>(pts, m); m += wcount[i]; j = wcount[i] - 1; for (k = 0; k < wcount[i]; j = k++) { var a = k; var b = j; if (p[j].y == p[k].y) { continue; } e[n].invert = 0; if (invert != 0 && p[j].y > p[k].y || invert == 0 && p[j].y < p[k].y) { e[n].invert = 1; a = j; b = k; } e[n].x0 = p[a].x * scale_x + shift_x; e[n].y0 = (p[a].y * y_scale_inv + shift_y) * vsubsample; e[n].x1 = p[b].x * scale_x + shift_x; e[n].y1 = (p[b].y * y_scale_inv + shift_y) * vsubsample; ++n; } } var ptr = new FakePtr <stbtt__edge>(e); stbtt__sort_edges(ptr, n); stbtt__rasterize_sorted_edges(ptr, n, vsubsample, off_x, off_y); }
public static void stbtt__sort_edges_quicksort(stbtt__edge *p, int n) { while ((n) > (12)) { stbtt__edge t = new stbtt__edge(); int c01 = 0; int c12 = 0; int c = 0; int m = 0; int i = 0; int j = 0; m = n >> 1; c01 = ((&p[0])->y0) < ((&p[m])->y0) ? 1 : 0; c12 = ((&p[m])->y0) < ((&p[n - 1])->y0) ? 1 : 0; if (c01 != c12) { int z = 0; c = ((&p[0])->y0) < ((&p[n - 1])->y0) ? 1 : 0; z = ((c) == (c12)) ? 0 : n - 1; t = p[z]; p[z] = p[m]; p[m] = t; } t = p[0]; p[0] = p[m]; p[m] = t; i = 1; j = n - 1; for (; ;) { for (; ; ++i) { if (!(((&p[i])->y0) < ((&p[0])->y0))) { break; } } for (; ; --j) { if (!(((&p[0])->y0) < ((&p[j])->y0))) { break; } } if ((i) >= (j)) { break; } t = p[i]; p[i] = p[j]; p[j] = t; ++i; --j; } if ((j) < (n - i)) { stbtt__sort_edges_quicksort(p, j); p = p + i; n = n - i; } else { stbtt__sort_edges_quicksort(p + i, n - i); n = j; } } }
public static void stbtt__sort_edges_quicksort(stbtt__edge *p, int n) { while (n > 12) { var t = new stbtt__edge(); var c01 = 0; var c12 = 0; var c = 0; var m = 0; var i = 0; var j = 0; m = n >> 1; c01 = (&p[0])->y0 < (&p[m])->y0 ? 1 : 0; c12 = (&p[m])->y0 < (&p[n - 1])->y0 ? 1 : 0; if (c01 != c12) { var z = 0; c = (&p[0])->y0 < (&p[n - 1])->y0 ? 1 : 0; z = c == c12 ? 0 : n - 1; t = p[z]; p[z] = p[m]; p[m] = t; } t = p[0]; p[0] = p[m]; p[m] = t; i = 1; j = n - 1; for (; ;) { for (; ; ++i) { if (!((&p[i])->y0 < (&p[0])->y0)) { break; } } for (; ; --j) { if (!((&p[0])->y0 < (&p[j])->y0)) { break; } } if (i >= j) { break; } t = p[i]; p[i] = p[j]; p[j] = t; ++i; --j; } if (j < n - i) { stbtt__sort_edges_quicksort(p, j); p = p + i; n = n - i; } else { stbtt__sort_edges_quicksort(p + i, n - i); n = j; } } }
public static void stbtt__sort_edges_quicksort(stbtt__edge *p, int n) { while ((n) > (12)) { stbtt__edge t = new stbtt__edge(); int c01 = 0; int c12 = 0; int c = 0; int m = 0; int i = 0; int j = 0; m = (int)(n >> 1); c01 = (int)(((&p[0])->y0) < ((&p[m])->y0) ? 1 : 0); c12 = (int)(((&p[m])->y0) < ((&p[n - 1])->y0) ? 1 : 0); if (c01 != c12) { int z = 0; c = (int)(((&p[0])->y0) < ((&p[n - 1])->y0) ? 1 : 0); z = (int)(((c) == (c12)) ? 0 : n - 1); t = (stbtt__edge)(p[z]); p[z] = (stbtt__edge)(p[m]); p[m] = (stbtt__edge)(t); } t = (stbtt__edge)(p[0]); p[0] = (stbtt__edge)(p[m]); p[m] = (stbtt__edge)(t); i = (int)(1); j = (int)(n - 1); for (; ;) { for (; ; ++i) { if (!(((&p[i])->y0) < ((&p[0])->y0))) { break; } } for (; ; --j) { if (!(((&p[0])->y0) < ((&p[j])->y0))) { break; } } if ((i) >= (j)) { break; } t = (stbtt__edge)(p[i]); p[i] = (stbtt__edge)(p[j]); p[j] = (stbtt__edge)(t); ++i; --j; } if ((j) < (n - i)) { stbtt__sort_edges_quicksort(p, (int)(j)); p = p + i; n = (int)(n - i); } else { stbtt__sort_edges_quicksort(p + i, (int)(n - i)); n = (int)(j); } } }
public static void stbtt__sort_edges_quicksort(stbtt__edge *p, int n) { while ((n) > (12)) { stbtt__edge t = new stbtt__edge(); int c01 = 0; int c12 = 0; int c = 0; int m = 0; int i = 0; int j = 0; m = (int)(n >> 1); c01 = (int)(((&p[0])->y0) < ((&p[m])->y0) ? 1 : 0); c12 = (int)(((&p[m])->y0) < ((&p[n - 1])->y0) ? 1 : 0); if (c01 != c12) { int z = 0; c = (int)(((&p[0])->y0) < ((&p[n - 1])->y0) ? 1 : 0); z = (int)(((c) == (c12)) ? 0 : n - 1); t = (stbtt__edge)(p[z]); p[z] = (stbtt__edge)(p[m]); p[m] = (stbtt__edge)(t); } t = (stbtt__edge)(p[0]); p[0] = (stbtt__edge)(p[m]); p[m] = (stbtt__edge)(t); i = (int)(1); j = (int)(n - 1); for (; ;) { #pragma warning disable CS1717 // Assignment made to same variable for (i = (int)(i); ; ++i) { if (!(((&p[i])->y0) < ((&p[0])->y0))) { break; } } for (j = (int)(j); ; --j) { if (!(((&p[0])->y0) < ((&p[j])->y0))) { break; } } if ((i) >= (j)) { break; } t = (stbtt__edge)(p[i]); p[i] = (stbtt__edge)(p[j]); p[j] = (stbtt__edge)(t); ++i; --j; #pragma warning restore CS1717 // Assignment made to same variable } if ((j) < (n - i)) { stbtt__sort_edges_quicksort(p, (int)(j)); p = p + i; n = (int)(n - i); } else { stbtt__sort_edges_quicksort(p + i, (int)(n - i)); n = (int)(j); } } }