| 63 | 
  | 
        nsamples = npixels/samplefac; | 
| 64 | 
  | 
        if (nsamples < 600) | 
| 65 | 
  | 
                return(-1); | 
| 66 | 
< | 
        thesamples = (BYTE *)malloc((nsamples+1)*3); | 
| 66 | 
> | 
        thesamples = (BYTE *)malloc(nsamples*3); | 
| 67 | 
  | 
        if (thesamples == NULL) | 
| 68 | 
  | 
                return(-1); | 
| 69 | 
  | 
        cursamp = thesamples; | 
| 75 | 
  | 
                cumprob = 0.; | 
| 76 | 
  | 
                while ((cumprob += (1.-cumprob)*nsleft/(npleft-sv)) < rval) | 
| 77 | 
  | 
                        sv++; | 
| 78 | 
< | 
                setskip(cursamp, sv); | 
| 79 | 
< | 
                cursamp += 3; | 
| 80 | 
< | 
                npleft -= sv; | 
| 78 | 
> | 
                if (nsleft == nsamples) | 
| 79 | 
> | 
                        skipcount = sv; | 
| 80 | 
> | 
                else { | 
| 81 | 
> | 
                        setskip(cursamp, sv); | 
| 82 | 
> | 
                        cursamp += 3; | 
| 83 | 
> | 
                } | 
| 84 | 
> | 
                npleft -= sv+1; | 
| 85 | 
  | 
                nsleft--; | 
| 86 | 
  | 
        } | 
| 87 | 
< | 
        setskip(cursamp, 0);            /* dummy tagged onto end */ | 
| 87 | 
> | 
        setskip(cursamp, npleft);       /* tag on end to skip the rest */ | 
| 88 | 
  | 
        cursamp = thesamples; | 
| 85 | 
– | 
        skipcount = nskip(cursamp); | 
| 89 | 
  | 
        return(0); | 
| 90 | 
  | 
} | 
| 91 | 
  | 
 | 
| 94 | 
  | 
register BYTE   col[]; | 
| 95 | 
  | 
{ | 
| 96 | 
  | 
        if (!skipcount--) { | 
| 97 | 
+ | 
                skipcount = nskip(cursamp); | 
| 98 | 
  | 
                cursamp[0] = col[BLU]; | 
| 99 | 
  | 
                cursamp[1] = col[GRN]; | 
| 100 | 
  | 
                cursamp[2] = col[RED]; | 
| 101 | 
  | 
                cursamp += 3; | 
| 98 | 
– | 
                skipcount = nskip(cursamp); | 
| 102 | 
  | 
        } | 
| 103 | 
  | 
} | 
| 104 | 
  | 
 | 
| 109 | 
  | 
{ | 
| 110 | 
  | 
        while (n > skipcount) { | 
| 111 | 
  | 
                cs += skipcount; | 
| 112 | 
+ | 
                n -= skipcount+1; | 
| 113 | 
+ | 
                skipcount = nskip(cursamp); | 
| 114 | 
  | 
                cursamp[0] = cs[0][BLU]; | 
| 115 | 
  | 
                cursamp[1] = cs[0][GRN]; | 
| 116 | 
  | 
                cursamp[2] = cs[0][RED]; | 
| 117 | 
  | 
                cs++; | 
| 113 | 
– | 
                n -= skipcount+1; | 
| 118 | 
  | 
                cursamp += 3; | 
| 115 | 
– | 
                skipcount = nskip(cursamp); | 
| 119 | 
  | 
        } | 
| 120 | 
  | 
        skipcount -= n; | 
| 121 | 
  | 
} |