-static inline double find_aa_density(const RgbImage *ri,
- Point p, long background,
- long foreground, int fg_extra) {
+static double aa_bg_chan[3], aa_scale_chan[3], aa_alpha_mean_max;
+static Rgb aa_background, aa_foreground;
+
+static void find_aa_density_prep(Rgb bg, Rgb fg, int fg_extra) {
+ int i;
+ unsigned char fg_chan[3];
+
+ aa_background= bg;
+ aa_foreground= fg;
+ aa_alpha_mean_max= fg_extra ? 0.999 : 1.0;
+
+ for (i=0; i<3; i++) {
+ aa_bg_chan[i]= (aa_background >> (i*8)) & 0xff;
+ fg_chan[i]= aa_foreground >> (i*8);
+ aa_scale_chan[i]= 1.0 / (fg_chan[i] + fg_extra - aa_bg_chan[i]);
+ }
+}
+
+static inline double find_aa_density(const RgbImage *ri, Point p) {