1 # definitions we don't want to make visible to the world
2 # because they're intended for use specifically by Imager.xs
4 # internal types used in Imager.xs
5 i_channel_list T_IM_CHANNEL_LIST
6 i_sample_list T_IM_SAMPLE_LIST
7 i_fsample_list T_IM_FSAMPLE_LIST
11 Imager::Internal::Hlines T_PTROBJ
13 Imager::Context T_PTROBJ
15 #############################################################################
19 $var = i_sv_off_t(aTHX_ $arg);
26 if (!SvROK($arg) || SvTYPE(SvRV($arg)) != SVt_PVAV) {
27 croak(\"$var is not an array ref\");
29 channels_av = (AV *)SvRV($arg);
30 $var.count = av_len(channels_av) + 1;
32 croak(\"$pname: no channels provided\");
34 $var.channels = malloc_temp(aTHX_ sizeof(int) * $var.count);
35 for (i = 0; i < $var.count; ++i) {
36 SV **entry = av_fetch(channels_av, i, 0);
37 $var.channels[i] = entry ? SvIV(*entry) : 0;
41 /* assumes we have an image */
42 $var.count = im->channels;
49 croak(\"$var must be a scalar or an arrayref\");
54 if (SvTYPE(SvRV($arg)) != SVt_PVAV)
55 croak(\"$var must be a scalar or an arrayref\");
56 av = (AV *)SvRV($arg);
57 $var.count = av_len(av) + 1;
59 croak(\"$pname: no samples provided in $var\");
60 s = malloc_temp(aTHX_ sizeof(i_sample_t) * $var.count);
61 for (i = 0; i < $var.count; ++i) {
62 SV **entry = av_fetch(av, i, 0);
63 s[i] = entry ? SvIV(*entry) : 0;
68 /* non-magic would be preferable here */
69 $var.samples = (const i_sample_t *)SvPVbyte($arg, $var.count);
71 croak(\"$pname: no samples provided in $var\");
77 croak(\"$var must be a scalar or an arrayref\");
82 if (SvTYPE(SvRV($arg)) != SVt_PVAV)
83 croak(\"$var must be a scalar or an arrayref\");
84 av = (AV *)SvRV($arg);
85 $var.count = av_len(av) + 1;
87 croak(\"$pname: no samples provided in $var\");
88 s = malloc_temp(aTHX_ sizeof(i_fsample_t) * $var.count);
89 for (i = 0; i < $var.count; ++i) {
90 SV **entry = av_fetch(av, i, 0);
91 s[i] = entry ? SvNV(*entry) : 0;
96 /* non-magic would be preferable here */
97 $var.samples = (const i_fsample_t *)SvPVbyte($arg, $var.count);
98 if ($var.count % sizeof(double))
99 croak(\"$pname: $var doesn't not contain a integer number of samples\");
100 $var.count /= sizeof(double);
102 croak(\"$pname: no samples provided in $var\");
105 #############################################################################
109 $arg = i_new_sv_off_t(aTHX_ $var);