2 * $Source: x:/prj/tech/libsrc/g2/RCS/g2ring.c $
5 * $Date: 1997/10/31 17:49:41 $
12 bool gd_secret_hack_nest_rings
;
14 int g2_ring (fix x0
, fix y0
, fix co
, fix ci
)
16 grs_raster
*r0
, *r
, *r0i
, *ri
;
18 int y_in_min
, y_in_max
;
19 fix a_o
, b_o
, a_i
, b_i
;
20 gdulin_func
*uhline_func
;
30 b_o
= fix_div(a_o
, grd_cap
->aspect
);
31 b_i
= fix_div(a_i
, grd_cap
->aspect
);
33 r0
= gr_rasterize_fix_elipse(x0
, y0
, a_o
, b_o
);
36 uhline_func
=gd_uhline_expose(0,0,0);
40 r0i
= gr_rasterize_fix_elipse(x0
, y0
, a_i
, b_i
);
45 while (y
< y_in_min
) {
46 gd_hline_opt(r
->left
, y
, r
->right
, uhline_func
);
50 if (gd_secret_hack_nest_rings
) {
51 while (y
< y_in_max
) {
52 gd_hline_opt(r
->left
, y
, ri
->left
-1, uhline_func
);
53 gd_hline_opt(ri
->right
+1, y
, r
->right
, uhline_func
);
59 // make sure we don't have any dropouts/gaps in the ring,
60 // since while that might be "correct" it will show our
61 // horizontal scan bias
74 if (y_in_max
== y_max
)
76 while (y
< y_in_max
) {
90 gd_hline_opt(r
->left
, y
, r
->right
, uhline_func
);
92 gd_hline_opt(r
->left
, y
, xli
, uhline_func
);
93 gd_hline_opt(xri
, y
, r
->right
, uhline_func
);
107 gd_hline_opt(r
->left
, y
, r
->right
, uhline_func
);