Branch Coverage

Imager.xs
Criterion Covered Total %
branch 721 1344 53.6


line true false branch
171 0 3 if (!sv_derived_from(sv, "Imager::Color")) {
174 3 0 return *INT2PTR(i_color *, SvIV((SV *)SvRV(sv)));
185 0 0 if ( !hv_exists(hv,key,strlen(key)) ) return 0;
188 0 0 *store=SvPV(*svpp, PL_na );
200 0 0 if ( !hv_exists(hv,key,strlen(key)) ) return 0;
203 0 0 *store=(int)SvIV(*svpp);
214 0 0 if ( !hv_exists(hv,key,strlen(key)) ) return 0;
216 0 0 *store=(double)SvNV(*svpp);
227 0 0 if ( !hv_exists(hv,key,strlen(key)) ) return 0;
230 0 0 *store = INT2PTR(void*, SvIV(*svpp));
242 0 0 if ( !hv_exists(hv,key,strlen(key)) ) return 0;
246 0 0 if (sv_derived_from(*svpp,type)) {
247 0 0 IV tmp = SvIV((SV*)SvRV(*svpp));
321 4 105 if (!SvOK(cbd->readcb)) {
4 0 if (!SvOK(cbd->readcb)) {
4 0 if (!SvOK(cbd->readcb)) {
329 0 105 EXTEND(SP, 2);
330 0 105 PUSHMARK(SP);
339 0 105 if (count != 1)
344 12 93 if (SvOK(data)) {
12 0 if (SvOK(data)) {
0 12 if (SvOK(data)) {
346 93 0 char *ptr = SvPVbyte(data, len);
347 0 93 if (len > maxread)
359 105 0 FREETMPS;
373 3 5 if (!SvOK(cbd->seekcb)) {
3 0 if (!SvOK(cbd->seekcb)) {
3 0 if (!SvOK(cbd->seekcb)) {
381 0 5 EXTEND(SP, 2);
382 0 5 PUSHMARK(SP);
391 0 5 if (count != 1)
394 5 0 result = POPi;
397 5 0 FREETMPS;
412 9 4950 if (!SvOK(cbd->writecb)) {
9 0 if (!SvOK(cbd->writecb)) {
9 0 if (!SvOK(cbd->writecb)) {
420 0 4950 EXTEND(SP, 1);
421 0 4950 PUSHMARK(SP);
428 0 4950 if (count != 1)
432 4950 0 success = SvTRUE(sv);
0 4950 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
45 4905 success = SvTRUE(sv);
45 0 success = SvTRUE(sv);
0 45 success = SvTRUE(sv);
0 4905 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
4905 0 success = SvTRUE(sv);
4905 0 success = SvTRUE(sv);
1 4904 success = SvTRUE(sv);
0 1 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
4904 1 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
436 4950 0 FREETMPS;
439 4904 46 return success ? size : -1;
454 12 20 if (SvOK(cbd->closecb)) {
12 0 if (SvOK(cbd->closecb)) {
0 12 if (SvOK(cbd->closecb)) {
460 0 20 PUSHMARK(SP);
467 20 0 if (count) {
469 20 0 success = SvTRUE(sv);
0 20 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 20 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 20 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
20 0 success = SvTRUE(sv);
20 0 success = SvTRUE(sv);
13 7 success = SvTRUE(sv);
0 13 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
7 13 success = SvTRUE(sv);
0 0 success = SvTRUE(sv);
475 20 0 FREETMPS;
479 19 13 return success ? 0 : -1;
497 9 0 switch (type) {
517 277 163 if (SvOK(sv)) {
277 0 if (SvOK(sv)) {
0 277 if (SvOK(sv)) {
518 162 1 if (SvROK(sv)) {
543 0 187 SvGETMAGIC(data_sv);
0 0 SvGETMAGIC(data_sv);
544 9 178 if (SvROK(data_sv)) {
545 9 0 if (im_SvREFSCALAR(SvRV(data_sv))) {
559 182 5 data = SvPVbyte(sv, length);
590 30 6 if (push_errors)
593 112 1 for (i = 0; i < count; ++i)
594 35 77 if (strEQ(names[i].name, name))
597 1 0 if (push_errors) {
670 0 24 if (sv && *sv && (str = SvPV(*sv, len))) {
0 0 if (sv && *sv && (str = SvPV(*sv, len))) {
0 0 if (sv && *sv && (str = SvPV(*sv, len))) {
0 0 if (sv && *sv && (str = SvPV(*sv, len))) {
674 0 0 if (failed)
676 0 0 if (quant->transp != tr_none) {
679 0 0 if (sv && *sv)
0 0 if (sv && *sv)
680 0 0 quant->tr_threshold = SvIV(*sv);
682 0 0 if (quant->transp == tr_errdiff) {
684 0 0 if (sv && *sv && (str = SvPV(*sv, len)))
0 0 if (sv && *sv && (str = SvPV(*sv, len)))
0 0 if (sv && *sv && (str = SvPV(*sv, len)))
0 0 if (sv && *sv && (str = SvPV(*sv, len)))
686 0 0 if (failed)
689 0 0 if (quant->transp == tr_ordered) {
692 0 0 if (sv && *sv && (str = SvPV(*sv, len))) {
0 0 if (sv && *sv && (str = SvPV(*sv, len))) {
0 0 if (sv && *sv && (str = SvPV(*sv, len))) {
0 0 if (sv && *sv && (str = SvPV(*sv, len))) {
694 0 0 if (failed)
698 0 0 if (quant->tr_orddith == od_custom) {
700 0 0 if (sv && *sv && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
0 0 if (sv && *sv && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
0 0 if (sv && *sv && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
703 0 0 if (len > sizeof(quant->tr_custom))
705 0 0 for (i = 0; i < len; ++i) {
707 0 0 if (sv2 && *sv2) {
0 0 if (sv2 && *sv2) {
708 0 0 quant->tr_custom[i] = SvIV(*sv2);
711 0 0 while (i < sizeof(quant->tr_custom))
719 20 4 if (sv && *sv && (str = SvPV(*sv, len))) {
20 0 if (sv && *sv && (str = SvPV(*sv, len))) {
20 0 if (sv && *sv && (str = SvPV(*sv, len))) {
20 0 if (sv && *sv && (str = SvPV(*sv, len))) {
722 1 19 if (failed)
726 8 15 if (sv && *sv && SvROK(*sv) && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
8 0 if (sv && *sv && SvROK(*sv) && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
8 0 if (sv && *sv && SvROK(*sv) && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
8 0 if (sv && *sv && SvROK(*sv) && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
732 0 8 if (quant->mc_count > quant->mc_size)
734 35 8 for (i = 0; i < quant->mc_count; ++i) {
736 35 0 if (sv1 && *sv1 && SvROK(*sv1) && sv_derived_from(*sv1, "Imager::Color")) {
35 0 if (sv1 && *sv1 && SvROK(*sv1) && sv_derived_from(*sv1, "Imager::Color")) {
35 0 if (sv1 && *sv1 && SvROK(*sv1) && sv_derived_from(*sv1, "Imager::Color")) {
35 0 if (sv1 && *sv1 && SvROK(*sv1) && sv_derived_from(*sv1, "Imager::Color")) {
737 35 0 i_color *col = INT2PTR(i_color *, SvIV((SV*)SvRV(*sv1)));
740 0 0 else if (push_errors) {
747 0 23 if (sv && *sv) {
0 0 if (sv && *sv) {
748 0 0 i = SvIV(*sv);
749 0 0 if (i <= quant->mc_size && i >= quant->mc_count)
0 0 if (i <= quant->mc_size && i >= quant->mc_count)
755 9 14 if (sv && *sv && (str = SvPV(*sv, len))) {
9 0 if (sv && *sv && (str = SvPV(*sv, len))) {
9 0 if (sv && *sv && (str = SvPV(*sv, len))) {
9 0 if (sv && *sv && (str = SvPV(*sv, len))) {
757 0 9 if (failed)
761 1 22 if (sv && *sv && (str = SvPV(*sv, len))) {
1 0 if (sv && *sv && (str = SvPV(*sv, len))) {
1 0 if (sv && *sv && (str = SvPV(*sv, len))) {
1 0 if (sv && *sv && (str = SvPV(*sv, len))) {
763 0 1 if (failed)
766 6 17 if (quant->translate == pt_errdiff && quant->errdiff == ed_custom) {
1 5 if (quant->translate == pt_errdiff && quant->errdiff == ed_custom) {
769 1 0 if (sv && *sv)
1 0 if (sv && *sv)
770 1 0 quant->ed_width = SvIV(*sv);
772 1 0 if (sv && *sv)
1 0 if (sv && *sv)
773 1 0 quant->ed_height = SvIV(*sv);
775 0 1 if (sv && *sv)
0 0 if (sv && *sv)
776 0 0 quant->ed_orig = SvIV(*sv);
777 1 0 if (quant->ed_width > 0 && quant->ed_height > 0) {
1 0 if (quant->ed_width > 0 && quant->ed_height > 0) {
781 1 0 if (sv && *sv && SvROK(*sv) && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
1 0 if (sv && *sv && SvROK(*sv) && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
1 0 if (sv && *sv && SvROK(*sv) && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
1 0 if (sv && *sv && SvROK(*sv) && SvTYPE(SvRV(*sv)) == SVt_PVAV) {
785 0 1 if (len > (size_t)quant->ed_width * quant->ed_height)
787 4 1 for (avi = 0; avi < len; ++avi) {
789 4 0 if (sv2 && *sv2) {
4 0 if (sv2 && *sv2) {
790 4 0 IV iv = SvIV(*sv2);
791 4 0 if (push_errors && iv < 0) {
0 4 if (push_errors && iv < 0) {
801 1 0 if (!sum) {
806 1 0 if (push_errors) {
814 0 22 if (sv && *sv)
0 0 if (sv && *sv)
815 0 0 quant->perturb = SvIV(*sv);
823 0 24 if (quant->ed_map)
830 2 22 if (!result) {
850 7 10 if (!sv || !*sv || !SvROK(*sv) || SvTYPE(SvRV(*sv)) != SVt_PVAV) {
7 0 if (!sv || !*sv || !SvROK(*sv) || SvTYPE(SvRV(*sv)) != SVt_PVAV) {
7 0 if (!sv || !*sv || !SvROK(*sv) || SvTYPE(SvRV(*sv)) != SVt_PVAV) {
0 7 if (!sv || !*sv || !SvROK(*sv) || SvTYPE(SvRV(*sv)) != SVt_PVAV) {
858 251 7 for (i = 0; i < quant->mc_count; ++i) {
877 67 6 if (looks_like_number(sv)) {
878 67 0 IV work = SvIV(sv);
879 67 0 if (work < (IV)i_pfm_evenodd || work > (IV)i_pfm_nonzero)
0 67 if (work < (IV)i_pfm_evenodd || work > (IV)i_pfm_nonzero)
884 6 0 return (i_poly_fill_mode_t)lookup_name
896 0 6 SvGETMAGIC(sv);
0 0 SvGETMAGIC(sv);
897 0 6 if (!SvOK(sv) || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV)
0 0 if (!SvOK(sv) || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV)
0 0 if (!SvOK(sv) || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV)
6 0 if (!SvOK(sv) || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV)
0 6 if (!SvOK(sv) || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV)
902 0 6 if (polys->count < 1)
905 14 6 for (i = 0; i < polys->count; ++i) {
914 0 14 if (!poly_sv)
917 0 14 SvGETMAGIC(*poly_sv);
0 0 SvGETMAGIC(*poly_sv);
918 0 14 if (!SvOK(*poly_sv) || !SvROK(*poly_sv) || SvTYPE(SvRV(*poly_sv)) != SVt_PVAV)
0 0 if (!SvOK(*poly_sv) || !SvROK(*poly_sv) || SvTYPE(SvRV(*poly_sv)) != SVt_PVAV)
0 0 if (!SvOK(*poly_sv) || !SvROK(*poly_sv) || SvTYPE(SvRV(*poly_sv)) != SVt_PVAV)
14 0 if (!SvOK(*poly_sv) || !SvROK(*poly_sv) || SvTYPE(SvRV(*poly_sv)) != SVt_PVAV)
0 14 if (!SvOK(*poly_sv) || !SvROK(*poly_sv) || SvTYPE(SvRV(*poly_sv)) != SVt_PVAV)
922 0 14 if (av_len(poly_av) != 1)
926 0 14 if (!x_sv)
928 0 14 if (!y_sv)
930 0 14 SvGETMAGIC(*x_sv);
0 0 SvGETMAGIC(*x_sv);
931 0 14 SvGETMAGIC(*y_sv);
0 0 SvGETMAGIC(*y_sv);
932 0 14 if (!SvOK(*x_sv) || !SvROK(*x_sv) || SvTYPE(SvRV(*x_sv)) != SVt_PVAV)
0 0 if (!SvOK(*x_sv) || !SvROK(*x_sv) || SvTYPE(SvRV(*x_sv)) != SVt_PVAV)
0 0 if (!SvOK(*x_sv) || !SvROK(*x_sv) || SvTYPE(SvRV(*x_sv)) != SVt_PVAV)
14 0 if (!SvOK(*x_sv) || !SvROK(*x_sv) || SvTYPE(SvRV(*x_sv)) != SVt_PVAV)
0 14 if (!SvOK(*x_sv) || !SvROK(*x_sv) || SvTYPE(SvRV(*x_sv)) != SVt_PVAV)
934 0 14 if (!SvOK(*y_sv) || !SvROK(*y_sv) || SvTYPE(SvRV(*y_sv)) != SVt_PVAV)
0 0 if (!SvOK(*y_sv) || !SvROK(*y_sv) || SvTYPE(SvRV(*y_sv)) != SVt_PVAV)
0 0 if (!SvOK(*y_sv) || !SvROK(*y_sv) || SvTYPE(SvRV(*y_sv)) != SVt_PVAV)
14 0 if (!SvOK(*y_sv) || !SvROK(*y_sv) || SvTYPE(SvRV(*y_sv)) != SVt_PVAV)
0 14 if (!SvOK(*y_sv) || !SvROK(*y_sv) || SvTYPE(SvRV(*y_sv)) != SVt_PVAV)
938 0 14 if (av_len(x_av) != av_len(y_av))
944 56 14 for (j = 0; j < point_count; ++j) {
947 56 0 x_data[j] = x_item_sv ? SvNV(*x_item_sv) : 0;
20 36 x_data[j] = x_item_sv ? SvNV(*x_item_sv) : 0;
948 56 0 y_data[j] = y_item_sv ? SvNV(*y_item_sv) : 0;
20 36 y_data[j] = y_item_sv ? SvNV(*y_item_sv) : 0;
973 0 14 if (*count < 1)
976 17 14 for(i = 0; i < *count; i++) {
978 17 0 if (!sv1 || !*sv1 || !SvROK(*sv1)
17 0 if (!sv1 || !*sv1 || !SvROK(*sv1)
17 0 if (!sv1 || !*sv1 || !SvROK(*sv1)
979 0 17 || SvTYPE(SvRV(*sv1)) != SVt_PVAV) {
984 0 17 if (av_len(aseg) != 7-1) {
988 51 17 for (j = 0; j < 3; ++j) {
990 51 0 if (!sv2 || !*sv2) {
0 51 if (!sv2 || !*sv2) {
994 27 24 work[j] = SvNV(*sv2);
999 34 17 for (j = 0; j < 2; ++j) {
1001 34 0 if (!sv3 || !*sv3 || !SvROK(*sv3) ||
34 0 if (!sv3 || !*sv3 || !SvROK(*sv3) ||
1003 0 5 && !sv_derived_from(*sv3, "Imager::Color::Float"))) {
1007 5 29 if (sv_derived_from(*sv3, "Imager::Color::Float")) {
1008 5 0 segs[i].c[j] = *INT2PTR(i_fcolor *, SvIV((SV *)SvRV(*sv3)));
1011 29 0 i_color c = *INT2PTR(i_color *, SvIV((SV *)SvRV(*sv3)));
1013 116 29 for (ch = 0; ch < MAXCHANNELS; ++ch) {
1018 34 17 for (j = 0; j < 2; ++j) {
1020 34 0 if (!sv2 || !*sv2) {
0 34 if (!sv2 || !*sv2) {
1024 30 4 worki[j] = SvIV(*sv2);
1041 335 0 int color_count = i_colorcount(im);
1044 0 335 if (color_count == -1)
1047 60730 331 for (i = 0; i < count; ++i) {
1048 4 60726 if (indexes[i] >= color_count) {
1110 1360 15 for (y = hlines->start_y; y < hlines->limit_y; ++y) {
1112 19 1341 if (entry) {
1115 19 0 if (entry->count)
1119 42 19 for (i = 0; i < entry->count; ++i) {
1137 20 0 return (off_t)SvIV(sv);
1178 40 0 SvGROW(t->sv, SvCUR(t->sv)+sizeof(i_trim_colors_t)+1);
40 0 SvGROW(t->sv, SvCUR(t->sv)+sizeof(i_trim_colors_t)+1);
1190 0 36 if (!trim_color_list_grow(aTHX_ &t))
1210 0 4 if (!trim_color_list_grow(aTHX_ &t))
1233 11 0 if (i < 0 || i >= t.count) {
1 10 if (i < 0 || i >= t.count) {
1241 4 6 if (e->is_float) {
1258 0 75 SvGETMAGIC(sv);
0 0 SvGETMAGIC(sv);
1259 0 75 if (!SvROK(sv))
1262 75 0 if (!SvPOK(t->sv) || SvMAGIC(t->sv))
0 75 if (!SvPOK(t->sv) || SvMAGIC(t->sv))
1265 0 75 if (len % sizeof(i_trim_colors_t) != 0)
1336 0 2000 EXTEND(SP, 1);
1348 0 1924 EXTEND(SP, 4);
1409 0 1444 EXTEND(SP, MAXCHANNELS);
1410 5776 1444 for (ch = 0; ch < MAXCHANNELS; ++ch) {
1427 0 1 EXTEND(SP, 1);
1499 0 179 if (!RETVAL)
1542 7 0 if (i_get_image_file_limits(&width, &height, &bytes)) {
1543 0 7 EXTEND(SP, 3);
1562 0 12 if (!i_trim_rect(im, transp_threshold, cls.count, cls.colors, &left, &top, &right, &bottom))
1564 0 12 EXTEND(SP, 4);
1586 0 8 if (!RETVAL)
1641 7 1 data = SvPVbyte(data_sv, size);
1655 0 16 if (size <= 0)
1663 0 16 if (SvUTF8(buffer_sv))
1666 16 0 buffer = SvGROW(buffer_sv, size+1);
7 9 buffer = SvGROW(buffer_sv, size+1);
1668 12 4 if (result >= 0) {
1672 0 12 EXTEND(SP, 1);
1676 0 16 SvSETMAGIC(ST(1));
1687 0 4 if (size <= 0)
1690 4 0 buffer = SvGROW(buffer_sv, size+1);
0 4 buffer = SvGROW(buffer_sv, size+1);
1692 2 2 if (result >= 0) {
1696 0 2 EXTEND(SP, 1);
1767 21 0 buffer = SvGROW(buffer_sv, size+1);
0 21 buffer = SvGROW(buffer_sv, size+1);
1769 16 5 if (result >= 0) {
1773 0 16 EXTEND(SP, 1);
1790 0 7 if (size <= 0)
1798 0 7 if (SvUTF8(buffer_sv))
1801 7 0 buffer = SvGROW(buffer_sv, size+1);
6 1 buffer = SvGROW(buffer_sv, size+1);
1803 6 1 if (result >= 0) {
1807 0 6 EXTEND(SP, 1);
1811 0 7 SvSETMAGIC(ST(1));
1822 0 13 if (size == 0)
1825 13 0 buffer = SvGROW(buffer_sv, size+1);
0 13 buffer = SvGROW(buffer_sv, size+1);
1827 10 3 if (result > 0) {
1831 0 10 EXTEND(SP, 1);
1849 0 7 if (size < 2)
1854 7 0 if (result > 0) {
1858 0 7 EXTEND(SP, 1);
1870 8203 5 data = SvPVbyte(data_sv, size);
1908 395 79 while( (item=i_format_list[i++]) != NULL ) {
1909 0 395 EXTEND(SP, 1);
1931 19 37 const char *name = SvOK(name_sv) ? SvPV_nolen(name_sv) : NULL;
19 0 const char *name = SvOK(name_sv) ? SvPV_nolen(name_sv) : NULL;
0 19 const char *name = SvOK(name_sv) ? SvPV_nolen(name_sv) : NULL;
37 0 const char *name = SvOK(name_sv) ? SvPV_nolen(name_sv) : NULL;
1952 0 39 EXTEND(SP, 4);
1978 0 0 EXTEND(SP, 1);
1979 0 0 PUSHs(im->idata ?
2003 3 2 if (!i_img_alpha_channel(im, &RETVAL))
2016 11 13 if (result) {
2017 0 11 if (GIMME_V == G_ARRAY) {
5 6 if (GIMME_V == G_ARRAY) {
2018 0 5 EXTEND(SP, 2);
2023 0 6 EXTEND(SP, 1);
2188 0 0 if (size_x != size_y)
2203 0 63 if (size_x != size_y)
2220 0 4 if (size_x != size_y)
2361 10 1 if (in_count > 0) {
2364 19 10 for (i = 0; i < in_count; ++i) {
2366 19 0 if (!psv || !*psv || !sv_derived_from(*psv, "Imager::ImgRaw")) {
19 0 if (!psv || !*psv || !sv_derived_from(*psv, "Imager::ImgRaw")) {
0 19 if (!psv || !*psv || !sv_derived_from(*psv, "Imager::ImgRaw")) {
2371 19 0 tmp = SvIV((SV*)SvRV(*psv));
2373 4 15 if (channels_av &&
4 0 if (channels_av &&
2374 4 0 (psv = av_fetch(channels_av, i, 0)) != NULL &&
2376 4 0 channels[i] = SvIV(*psv);
2411 5 10 for (i = 2; i < items; ++i) {
2413 5 0 if (sv_derived_from(sv1, "Imager::Color")) {
2414 5 0 IV tmp = SvIV((SV*)SvRV(sv1));
2417 0 0 else if (sv_derived_from(sv1, "Imager::Color::Float")) {
2418 0 0 IV tmp = SvIV((SV*)SvRV(sv1));
2441 0 3 if (len > 9)
2443 27 3 for (i = 0; i < len; ++i) {
2445 3 24 matrix[i] = SvNV(sv1);
2447 0 3 for (; i < 9; ++i)
2451 1 3 for (i = 4; i < items; ++i) {
2453 1 0 if (sv_derived_from(sv1, "Imager::Color")) {
2454 1 0 IV tmp = SvIV((SV*)SvRV(sv1));
2457 0 0 else if (sv_derived_from(sv1, "Imager::Color::Float")) {
2458 0 0 IV tmp = SvIV((SV*)SvRV(sv1));
2495 300 64 for(i = 0; i < len; i++) {
2497 292 8 c_coef[i] = (double)SvNV(sv1);
2520 68 28 for (j=0; j < outchan; ++j) {
2522 68 0 if (temp && SvROK(*temp) && SvTYPE(SvRV(*temp)) == SVt_PVAV) {
67 1 if (temp && SvROK(*temp) && SvTYPE(SvRV(*temp)) == SVt_PVAV) {
67 0 if (temp && SvROK(*temp) && SvTYPE(SvRV(*temp)) == SVt_PVAV) {
2525 28 39 if (len > inchan)
2534 67 28 for (j = 0; j < outchan; ++j) {
2537 179 67 for (i = 0; i < len; ++i) {
2539 179 0 if (temp)
2540 22 157 coeff[i+j*inchan] = SvNV(*temp);
2544 0 67 while (i < inchan)
2566 0 9 if (im->channels < len)
2569 27 9 for (j=0; j
2571 27 0 if (temp && SvROK(*temp) && (SvTYPE(SvRV(*temp)) == SVt_PVAV) ) {
23 4 if (temp && SvROK(*temp) && (SvTYPE(SvRV(*temp)) == SVt_PVAV) ) {
23 0 if (temp && SvROK(*temp) && (SvTYPE(SvRV(*temp)) == SVt_PVAV) ) {
2573 5 18 if(av_len(avsub) != 255)
2576 4608 18 for (i=0; i<256 ; i++) {
2579 4608 0 val = temp ? SvIV(*temp) : 0;
4608 0 val = temp ? SvIV(*temp) : 0;
2580 0 4608 if (val<0) val = 0;
2581 0 4608 if (val>255) val = 255;
2616 0 916 SvGETMAGIC(sv);
0 0 SvGETMAGIC(sv);
2617 0 916 RETVAL = SvOK(sv) && SvROK(sv) &&
0 0 RETVAL = SvOK(sv) && SvROK(sv) &&
0 0 RETVAL = SvOK(sv) && SvROK(sv) &&
2619 37 67 || sv_derived_from(sv, "Imager::Color::Float"));
2841 1 0 bits = (const unsigned char *)SvPV(bits_sv, bits_size);
2842 1 0 mask = (const unsigned char *)SvPV(mask_sv, mask_size);
2843 0 1 if (bits_size == 0) {
2847 0 1 if (mask_size == 0) {
2851 0 1 if (bits_size != mask_size) {
2855 0 1 if (!*name) {
2879 1 0 if (imgs) {
2880 1 0 EXTEND(SP, count);
0 1 EXTEND(SP, count);
2881 3 1 for (i = 0; i < count; ++i) {
2984 1 4 if (col_cnt <= 0) {
2987 4 0 EXTEND(SP, col_cnt);
0 4 EXTEND(SP, col_cnt);
2988 9 4 for (i = 0; i < col_cnt; i++) {
3005 0 0 if (result) {
3007 0 0 EXTEND(SP, 1);
3040 26 28 for (i = 0; i < in_imgs_count; ++i) {
3042 0 26 if (!sv_derived_from(sv1, "Imager::ImgRaw")) {
3046 25 3 if (in_imgs_count > 0) {
3048 26 25 for (i = 0; i < in_imgs_count; ++i) {
3050 0 26 if (!sv_derived_from(sv1, "Imager::ImgRaw")) {
3053 26 0 tmp = SvIV((SV*)SvRV(sv1));
3062 25 3 if (SvOK(sv_width))
25 0 if (SvOK(sv_width))
0 25 if (SvOK(sv_width))
3063 3 0 width = SvIV(sv_width);
3064 25 0 else if (in_imgs_count)
3069 25 3 if (SvOK(sv_height))
25 0 if (SvOK(sv_height))
0 25 if (SvOK(sv_height))
3070 3 0 height = SvIV(sv_height);
3071 25 0 else if (in_imgs_count)
3076 28 0 ops = (struct rm_op *)SvPV(sv_ops, ops_len);
3077 0 28 if (ops_len % sizeof(struct rm_op))
3083 248 28 for (i = 0; i < n_regs_count; ++i) {
3085 102 146 if (SvOK(sv1))
102 0 if (SvOK(sv1))
0 102 if (SvOK(sv1))
3086 21 125 n_regs[i] = SvNV(sv1);
3095 25 3 if (in_imgs)
3099 27 1 if (result) {
3101 0 27 EXTEND(SP, 1);
3215 1 0 if (size_xo != size_yo || size_xo != size_ac)
0 1 if (size_xo != size_yo || size_xo != size_ac)
3217 0 1 if (size_xo < 2)
3249 9 0 if (!SvROK(ST(10)) || ! SvTYPE(SvRV(ST(10))))
0 9 if (!SvROK(ST(10)) || ! SvTYPE(SvRV(ST(10))))
3276 5 0 if (!SvROK(ST(9)) || ! SvTYPE(SvRV(ST(9))))
0 5 if (!SvROK(ST(9)) || ! SvTYPE(SvRV(ST(9))))
3302 460 348 while (errors[i].msg) {
3305 0 460 if (!av_store(av, 0, sv)) {
3309 0 460 if (!av_store(av, 1, sv)) {
3312 0 460 XPUSHs(sv_2mortal(newRV_noinc((SV*)av)));
3339 0 1 if (items != 5)
3341 1 0 if (!SvROK(ST(1)) || ! SvTYPE(SvRV(ST(1))))
0 1 if (!SvROK(ST(1)) || ! SvTYPE(SvRV(ST(1))))
3343 1 0 if (!SvROK(ST(2)) || ! SvTYPE(SvRV(ST(2))))
0 1 if (!SvROK(ST(2)) || ! SvTYPE(SvRV(ST(2))))
3345 1 0 if (!SvROK(ST(3)) || ! SvTYPE(SvRV(ST(3))))
0 1 if (!SvROK(ST(3)) || ! SvTYPE(SvRV(ST(3))))
3350 1 0 dmeasure = (int)SvIV(ST(4));
3352 0 1 num = av_len(axx) < av_len(ayy) ? av_len(axx) : av_len(ayy);
3353 0 1 num = num <= av_len(ac) ? num : av_len(ac);
3355 0 1 if (num < 2) croak("Usage: i_nearest_color array refs must have more than 1 entry each");
3359 3 1 for(i = 0; i
3360 3 0 xo[i] = (i_img_dim)SvIV(* av_fetch(axx, i, 0));
3361 3 0 yo[i] = (i_img_dim)SvIV(* av_fetch(ayy, i, 0));
3363 0 3 if ( !sv_derived_from(sv, "Imager::Color") ) {
3367 3 0 ival[i] = *INT2PTR(i_color *, SvIV((SV *)SvRV(sv)));
3384 0 0 if (rc!=NULL) {
3385 0 0 if (evstr!=NULL) {
3386 0 0 EXTEND(SP,2);
3390 0 0 EXTEND(SP,1);
3411 0 0 while( functions[i].name != NULL) {
3412 0 0 EXTEND(SP,1);
3414 0 0 EXTEND(SP,1);
3434 38 374 if (i_gpix(im, x, y, RETVAL) != 0) {
3468 1 18 if (!ip_handle_quant_opts2(aTHX_ &quant, quant_hv)) {
3472 17 1 if (RETVAL) {
3491 0 5 if (count <= 0)
3494 5 5 for (i = 0; i < count; ++i) {
3496 5 0 if (SvROK(img_sv) && sv_derived_from(img_sv, "Imager::ImgRaw")) {
5 0 if (SvROK(img_sv) && sv_derived_from(img_sv, "Imager::ImgRaw")) {
3497 5 0 imgs[i] = INT2PTR(i_img *, SvIV((SV*)SvRV(img_sv)));
3506 1 4 if (!ip_handle_quant_opts2(aTHX_ &quant, quant_hv)) {
3510 4 0 EXTEND(SP, quant.mc_count);
0 4 EXTEND(SP, quant.mc_count);
3511 278 4 for (i = 0; i < quant.mc_count; ++i) {
3528 10 0 if (l < r) {
3530 10 0 count = i_gpal(im, l, r, y, work);
3531 2 8 if (GIMME_V == G_ARRAY) {
8 2 if (GIMME_V == G_ARRAY) {
3532 8 0 EXTEND(SP, count);
0 8 EXTEND(SP, count);
3533 312 8 for (i = 0; i < count; ++i) {
3538 0 2 EXTEND(SP, 1);
3544 0 0 if (GIMME_V != G_ARRAY) {
0 0 if (GIMME_V != G_ARRAY) {
3545 0 0 EXTEND(SP, 1);
3559 331 0 if (items > 3) {
3561 60722 331 for (i=0; i < items-3; ++i) {
3562 60720 2 work[i] = SvIV(ST(i+3));
3565 329 0 RETVAL = i_ppal(im, l, l+items-3, y, work);
3583 4 0 work = (i_palidx const *)SvPV(data, len);
3585 4 0 if (len > 0) {
3587 2 0 RETVAL = i_ppal(im, l, l+len, y, work);
3602 0 35 if (items < 2)
3605 113 35 for (i=0; i < items-1; ++i) {
3606 113 0 if (sv_isobject(ST(i+1))
3607 113 0 && sv_derived_from(ST(i+1), "Imager::Color")) {
3608 113 0 IV tmp = SvIV((SV *)SvRV(ST(i+1)));
3616 35 0 RETVAL = i_addcolors(im, colors, items-1);
3629 0 9 if (items < 3)
3632 13 9 for (i=0; i < items-2; ++i) {
3633 13 0 if (sv_isobject(ST(i+2))
3634 13 0 && sv_derived_from(ST(i+2), "Imager::Color")) {
3635 13 0 IV tmp = SvIV((SV *)SvRV(ST(i+2)));
3643 9 0 RETVAL = i_setcolors(im, index, colors, items-2);
3657 0 20 if (count < 1)
3660 20 0 if (i_getcolors(im, index, colors, count)) {
20 0 if (i_getcolors(im, index, colors, count)) {
3661 20 0 EXTEND(SP, count);
0 20 EXTEND(SP, count);
3662 193 20 for (i = 0; i < count; ++i) {
3681 9 0 if (!i_findcolor(im, color, &RETVAL)) {
2 7 if (!i_findcolor(im, color, &RETVAL)) {
3710 322 0 if (l < r) {
3713 25 297 if (GIMME_V == G_ARRAY) {
42 280 if (GIMME_V == G_ARRAY) {
3714 42 0 EXTEND(SP, count);
0 42 EXTEND(SP, count);
3715 2017 42 for (i = 0; i < count; ++i)
3719 0 280 EXTEND(SP, 1);
3725 0 0 if (GIMME_V != G_ARRAY) {
0 0 if (GIMME_V != G_ARRAY) {
3745 0 6 if (items < 8)
3747 6 0 if (l < r) {
3749 6 0 count = i_gsamp_bits(im, l, r, y, data, channels.channels, channels.count, bits);
3750 70 6 for (i = 0; i < count; ++i) {
3781 0 2 if (data_offset < 0) {
3784 0 2 if (data_offset > data_count) {
3787 1 1 if (pixel_count == -1 ||
0 1 if (pixel_count == -1 ||
3794 42 2 for (i = 0; i < data_used; ++i)
3795 0 42 data[i] = SvUV(*av_fetch(data_av, data_offset + i, 0));
3797 2 0 RETVAL = i_psamp_bits(im, l, l + pixel_count, y, data, channels.channels,
3800 2 0 if (data)
3818 1 81 if (offset < 0) {
3822 4 77 if (offset > 0) {
3823 1 3 if (offset > data.count) {
3830 6 74 if (width == -1 ||
4 2 if (width == -1 ||
3852 1 81 if (offset < 0) {
3856 4 77 if (offset > 0) {
3857 1 3 if (offset > data.count) {
3864 6 74 if (width == -1 ||
4 2 if (width == -1 ||
3883 10 7 if (SvOK(ST(1))) {
10 0 if (SvOK(ST(1))) {
0 10 if (SvOK(ST(1))) {
3884 7 0 if (!sv_isobject(ST(1))
3885 0 7 || !sv_derived_from(ST(1), "Imager::ImgRaw")) {
3888 7 0 mask = INT2PTR(i_img *, SvIV((SV *)SvRV(ST(1))));
3907 552 0 if (items > 3) {
3908 158 394 if (items == 4 && SvOK(ST(3)) && !SvROK(ST(3))) {
0 158 if (items == 4 && SvOK(ST(3)) && !SvROK(ST(3))) {
0 0 if (items == 4 && SvOK(ST(3)) && !SvROK(ST(3))) {
0 0 if (items == 4 && SvOK(ST(3)) && !SvROK(ST(3))) {
152 6 if (items == 4 && SvOK(ST(3)) && !SvROK(ST(3))) {
3910 152 0 work = (i_color *)SvPV(ST(3), len);
3912 0 152 if (count * sizeof(i_color) != len) {
3919 26476 400 for (i=0; i < items-3; ++i) {
3920 26476 0 if (sv_isobject(ST(i+3))
3921 26476 0 && sv_derived_from(ST(i+3), "Imager::Color")) {
3922 26476 0 IV tmp = SvIV((SV *)SvRV(ST(i+3)));
3958 15 0 if (l < r) {
3961 3 12 if (GIMME_V == G_ARRAY) {
13 2 if (GIMME_V == G_ARRAY) {
3962 13 0 EXTEND(SP, count);
0 13 EXTEND(SP, count);
3963 614 13 for (i = 0; i < count; ++i)
3967 0 2 EXTEND(SP, 1);
3973 0 0 if (GIMME_V != G_ARRAY) {
0 0 if (GIMME_V != G_ARRAY) {
3989 226 0 if (items > 3) {
3990 8 218 if (items == 4 && SvOK(ST(3)) && !SvROK(ST(3))) {
0 8 if (items == 4 && SvOK(ST(3)) && !SvROK(ST(3))) {
0 0 if (items == 4 && SvOK(ST(3)) && !SvROK(ST(3))) {
0 0 if (items == 4 && SvOK(ST(3)) && !SvROK(ST(3))) {
2 6 if (items == 4 && SvOK(ST(3)) && !SvROK(ST(3))) {
3992 2 0 work = (i_fcolor *)SvPV(ST(3), len);
3994 0 2 if (count * sizeof(i_fcolor) != len) {
4001 20769 224 for (i=0; i < items-3; ++i) {
4002 20769 0 if (sv_isobject(ST(i+3))
4003 20769 0 && sv_derived_from(ST(i+3), "Imager::Color::Float")) {
4004 20769 0 IV tmp = SvIV((SV *)SvRV(ST(i+3)));
4031 6 46 if (i_gpixf(im, x, y, RETVAL) != 0) {
4048 21 0 if (l < r) {
4052 5 16 if (GIMME_V == G_ARRAY) {
17 4 if (GIMME_V == G_ARRAY) {
4053 17 0 EXTEND(SP, count);
0 17 EXTEND(SP, count);
4054 111 17 for (i = 0; i < count; ++i) {
4059 4 0 else if (count) {
4060 0 4 EXTEND(SP, 1);
4077 88 22 for (i = 0; i < MAXCHANNELS; ++i)
4079 22 0 if (l < r) {
4081 694 22 for (i = 0; i < r-l; ++i)
4084 10 12 if (GIMME_V == G_ARRAY) {
19 3 if (GIMME_V == G_ARRAY) {
4085 19 0 EXTEND(SP, count);
0 19 EXTEND(SP, count);
4086 666 19 for (i = 0; i < count; ++i) {
4091 3 0 else if (count) {
4092 0 3 EXTEND(SP, 1);
4134 0 31 SvGETMAGIC(name_sv);
0 0 SvGETMAGIC(name_sv);
4135 2 29 if (SvOK(name_sv))
2 0 if (SvOK(name_sv))
0 2 if (SvOK(name_sv))
4136 25 4 name = SvPV_nomg(name_sv, len);
4155 0 19 SvGETMAGIC(name_sv);
0 0 SvGETMAGIC(name_sv);
4156 1 18 if (SvOK(name_sv))
1 0 if (SvOK(name_sv))
0 1 if (SvOK(name_sv))
4157 18 0 name = SvPV_nomg(name_sv, len);
4160 0 19 SvGETMAGIC(data_sv);
0 0 SvGETMAGIC(data_sv);
4161 1 18 if (SvOK(data_sv))
1 0 if (SvOK(data_sv))
0 1 if (SvOK(data_sv))
4162 18 0 data = SvPV(data_sv, len);
4179 161 142 if (i_tags_find(&im->tags, name, start, &entry)) {
4195 3 1 if (i_tags_findn(&im->tags, code, start, &entry)) {
4236 160 0 if (index >= 0 && index < im->tags.count) {
160 0 if (index >= 0 && index < im->tags.count) {
4238 0 160 EXTEND(SP, 5);
4240 158 2 if (entry->name) {
4246 43 117 if (entry->data) {
4263 1 1 if (SvIOK(what_sv)) {
4264 1 0 code = SvIV(what_sv);
4268 1 0 name = SvPV_nolen(what_sv);
4271 2 0 if (i_tags_get_string(&im->tags, name, code, buffer, sizeof(buffer))) {
4272 0 2 EXTEND(SP, 1);
4325 23 6 SvGETMAGIC(cust_hatch_sv);
0 23 SvGETMAGIC(cust_hatch_sv);
4326 28 1 if (SvOK(cust_hatch_sv)) {
28 0 if (SvOK(cust_hatch_sv)) {
0 28 if (SvOK(cust_hatch_sv)) {
4327 1 0 cust_hatch = (unsigned char *)SvPV_nomg(cust_hatch_sv, len);
4348 0 2 SvGETMAGIC(cust_hatch_sv);
0 0 SvGETMAGIC(cust_hatch_sv);
4349 2 0 if (SvOK(cust_hatch_sv)) {
2 0 if (SvOK(cust_hatch_sv)) {
0 2 if (SvOK(cust_hatch_sv)) {
4350 0 0 cust_hatch = (unsigned char *)SvPV(cust_hatch_sv, len);
4373 8 1 SvGETMAGIC(matrix_sv);
0 8 SvGETMAGIC(matrix_sv);
4374 8 1 if (!SvOK(matrix_sv)) {
8 0 if (!SvOK(matrix_sv)) {
8 0 if (!SvOK(matrix_sv)) {
4378 1 0 if (!SvROK(matrix_sv) || SvTYPE(SvRV(matrix_sv)) != SVt_PVAV)
0 1 if (!SvROK(matrix_sv) || SvTYPE(SvRV(matrix_sv)) != SVt_PVAV)
4382 0 1 if (len > 9)
4384 9 1 for (i = 0; i < len; ++i) {
4386 4 5 matrix[i] = SvNV(sv1);
4388 0 1 for (; i < 9; ++i)