ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/CV/CV.xs
(Generate patch)

Comparing CV/CV.xs (file contents):
Revision 1.10 by root, Tue Feb 8 10:34:19 2005 UTC vs.
Revision 1.14 by root, Tue Feb 8 12:51:12 2005 UTC

251 av = (AV *) SvRV (ar); 251 av = (AV *) SvRV (ar);
252 result = newAV (); 252 result = newAV ();
253 253
254 for (i = 0; i <= av_len (av); ++i) 254 for (i = 0; i <= av_len (av); ++i)
255 { 255 {
256 int bigst = 1; 256 int bigst, j;
257 int j = 0;
258 SV *sv = *av_fetch (av, i, 1); 257 SV *sv = *av_fetch (av, i, 1);
259 STRLEN len; 258 STRLEN len;
260 char *buf = SvPVbyte (sv, len); 259 char *buf = SvPVbyte (sv, len);
260
261 int tmphist[256]; 261 int tmphist[256];
262 char *hist; 262 char *hist;
263 263
264 SV *histsv = newSV (257);//("", 0); 264 SV *histsv = newSV (257);
265 sv_upgrade (histsv, SVt_PV); 265 SvPOK_on (histsv);
266 SvCUR_set (histsv, 256); 266 SvCUR_set (histsv, 256);
267 hist = SvPV_nolen (histsv); 267 hist = SvPVX (histsv);
268 268
269 Zero (tmphist, 256, int); 269 Zero (tmphist, 256, int);
270 270
271 j = len;
272
271 while (len--) 273 while (len--)
272 ++tmphist[*buf++]; 274 ++tmphist[(unsigned char)*buf++ & 0xda];
275
276 len = j;
273 277
278 bigst = 1;
274 for (j = 0; j < 256; ++j) 279 for (j = 0; j < 256; ++j)
275 if (tmphist[j] > bigst) 280 if (tmphist[j] > bigst)
276 bigst = tmphist[j]; 281 bigst = tmphist[j];
277 282
278 for (j = 0; j < 256; ++j) 283 for (j = 0; j < 256; ++j)
279 hist[j] = tmphist[j] * 255 / bigst; 284 hist[j] = tmphist[j] * 255 / (len == 0 ? 1 : len);//bigst;
280 285
281 av_push (result, histsv); 286 av_push (result, histsv);
282 } 287 }
283 288
284 RETVAL = newRV_noinc ((SV *)result); 289 RETVAL = newRV_noinc ((SV *)result);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines