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

Comparing CV/CV.xs (file contents):
Revision 1.8 by root, Mon Apr 5 20:55:10 2004 UTC vs.
Revision 1.15 by root, Tue Feb 8 16:27:10 2005 UTC

97 } 97 }
98} 98}
99 99
100///////////////////////////////////////////////////////////////////////////// 100/////////////////////////////////////////////////////////////////////////////
101 101
102MODULE = Gtk2::CV PACKAGE = Gtk2::CV::ImageWindow 102MODULE = Gtk2::CV PACKAGE = Gtk2::CV
103 103
104PROTOTYPES: ENABLE 104PROTOTYPES: ENABLE
105 105
106GdkPixbuf_noinc * 106GdkPixbuf_noinc *
107transpose (GdkPixbuf *pb) 107transpose (GdkPixbuf *pb)
235 } 235 }
236 } 236 }
237} 237}
238 OUTPUT: 238 OUTPUT:
239 RETVAL 239 RETVAL
240
241SV *
242make_histogram (SV *ar)
243 CODE:
244{
245 int i;
246 AV *av, *result;
247
248 if (!SvROK (ar) || SvTYPE (SvRV (ar)) != SVt_PVAV)
249 croak ("Not an array ref as first argument to make_histogram");
250
251 av = (AV *) SvRV (ar);
252 result = newAV ();
253
254 for (i = 0; i <= av_len (av); ++i)
255 {
256 const int HISTSIZE = 64;
257
258 int j;
259 SV *sv = *av_fetch (av, i, 1);
260 STRLEN len;
261 char *buf = SvPVbyte (sv, len);
262
263 int tmphist[HISTSIZE];
264 float *hist;
265
266 SV *histsv = newSV (HISTSIZE * sizeof (float) + 1);
267 SvPOK_on (histsv);
268 SvCUR_set (histsv, HISTSIZE * sizeof (float));
269 hist = (float *)SvPVX (histsv);
270
271 Zero (tmphist, sizeof (tmphist), char);
272
273 for (j = len; j--; )
274 {
275 unsigned int idx
276 = ((*buf & 0xc0) >> 2)
277 | ((*buf & 0x18) >> 1)
278 | (*buf & 0x03);
279
280 ++tmphist[idx];
281 ++buf;
282 }
283
284 for (j = 0; j < HISTSIZE; ++j)
285 hist[j] = (float)tmphist[j] / (len + 1e-30);
286
287 av_push (result, histsv);
288 }
289
290 RETVAL = newRV_noinc ((SV *)result);
291}
292 OUTPUT:
293 RETVAL
294
295
240 296
241############################################################################# 297#############################################################################
242 298
243MODULE = Gtk2::CV PACKAGE = Gtk2::CV::PostScript 299MODULE = Gtk2::CV PACKAGE = Gtk2::CV::PostScript
244 300
345 } 401 }
346} 402}
347 OUTPUT: 403 OUTPUT:
348 RETVAL 404 RETVAL
349 405
406SV *
407hv84_to_av (unsigned char *hv84)
408 CODE:
409{
410 int i = 72 / 3;
411 AV *av = newAV ();
350 412
413 RETVAL = (SV *)newRV_noinc ((SV *)av);
414 while (i--)
415 {
416 int h = *hv84++;
417 int v1 = *hv84++;
418 int v2 = *hv84++;
351 419
420 av_push (av, newSViv (v1));
421 av_push (av, newSViv ((h >> 4) * 255 / 15));
422 av_push (av, newSViv (v2));
423 av_push (av, newSViv ((h & 15) * 255 / 15));
424 }
425}
426 OUTPUT:
427 RETVAL
352 428
429
430

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines