]> git.imager.perl.org - imager.git/blobdiff - Imager.xs
note probing verbosity in Changes
[imager.git] / Imager.xs
index ac8043449e3a9b6d219775ce9dbb594b45fbc2fa..470dffb8a58a00db46a2ebe91a530c7e62752a0b 100644 (file)
--- a/Imager.xs
+++ b/Imager.xs
@@ -450,9 +450,44 @@ static void io_destroyer(void *p) {
 static bool
 im_SvREFSCALAR(SV *sv) {
   svtype type = SvTYPE(sv);
-  return type == SVt_PV || type == SVt_PVIV || type == SVt_PVNV
-      || type == SVt_PVMG || type == SVt_IV || type == SVt_NV
-      || type == SVt_PVLV || type == SVt_REGEXP;
+
+  switch (type) {
+  case SVt_PV:
+  case SVt_PVIV:
+  case SVt_PVNV:
+  case SVt_PVMG:
+  case SVt_IV:
+  case SVt_NV:
+  case SVt_PVLV:
+#if PERL_VERSION > 10
+  case SVt_REGEXP:
+#endif
+    return 1;
+
+  default:
+    return 0;
+  }
+}
+
+static const char *
+describe_sv(SV *sv) {
+  if (SvOK(sv)) {
+    if (SvROK(sv)) {
+      svtype type = SvTYPE(SvRV(sv));
+      switch (type) {
+      case SVt_PVCV: return "CV";
+      case SVt_PVGV: return "GV";
+      case SVt_PVLV: return "LV";
+      default: return "some reference";
+      }
+    }
+    else {
+      return "non-reference scalar";
+    }
+  }
+  else {
+    return "undef";
+  }
 }
 
 static i_io_glue_t *
@@ -464,11 +499,11 @@ do_io_new_buffer(pTHX_ SV *data_sv) {
 
   SvGETMAGIC(data_sv);
   if (SvROK(data_sv)) {
-    if (im_SvREFSCALAR(data_sv)) {
+    if (im_SvREFSCALAR(SvRV(data_sv))) {
       sv = SvRV(data_sv);
     }
     else {
-      i_push_error(0, "data is not a scalar or a reference to scalar");
+      i_push_errorf(0, "data is not a scalar or a reference to scalar");
       return NULL;
     }
   }
@@ -484,27 +519,6 @@ do_io_new_buffer(pTHX_ SV *data_sv) {
   return io_new_buffer(data_copy, length, free_buffer, data_copy);
 }
 
-static const char *
-describe_sv(SV *sv) {
-  if (SvOK(sv)) {
-    if (SvROK(sv)) {
-      svtype type = SvTYPE(SvRV(sv));
-      switch (type) {
-      case SVt_PVCV: return "CV";
-      case SVt_PVGV: return "GV";
-      case SVt_PVLV: return "LV";
-      default: return "some reference";
-      }
-    }
-    else {
-      return "non-reference scalar";
-    }
-  }
-  else {
-    return "undef";
-  }
-}
-
 static i_io_glue_t *
 do_io_new_cb(pTHX_ SV *writecb, SV *readcb, SV *seekcb, SV *closecb) {
   struct cbdata *cbd;
@@ -1281,12 +1295,12 @@ i_io_raw_read(ig, buffer_sv, size)
         if (size <= 0)
          croak("size negative in call to i_io_raw_read()");
         /* prevent an undefined value warning if they supplied an 
-          undef buffer.
+          undef buffer.
            Orginally conditional on !SvOK(), but this will prevent the
-          downgrade from croaking */
-       sv_setpvn(buffer_sv, "", 0);
+          downgrade from croaking */
+       sv_setpvn(buffer_sv, "", 0);
 #ifdef SvUTF8
-       if (SvUTF8(buffer_sv))
+       if (SvUTF8(buffer_sv))
           sv_utf8_downgrade(buffer_sv, FALSE);
 #endif
        buffer = SvGROW(buffer_sv, size+1);
@@ -1412,12 +1426,12 @@ i_io_read(ig, buffer_sv, size)
         if (size <= 0)
          croak("size negative in call to i_io_read()");
         /* prevent an undefined value warning if they supplied an 
-          undef buffer.
+          undef buffer.
            Orginally conditional on !SvOK(), but this will prevent the
-          downgrade from croaking */
-       sv_setpvn(buffer_sv, "", 0);
+          downgrade from croaking */
+       sv_setpvn(buffer_sv, "", 0);
 #ifdef SvUTF8
-       if (SvUTF8(buffer_sv))
+       if (SvUTF8(buffer_sv))
           sv_utf8_downgrade(buffer_sv, FALSE);
 #endif
        buffer = SvGROW(buffer_sv, size+1);
@@ -2711,6 +2725,12 @@ i_autolevels(im,lsat,usat,skew)
              float     usat
              float     skew
 
+void
+i_autolevels_mono(im,lsat,usat)
+    Imager::ImgRaw     im
+             float     lsat
+             float     usat
+
 void
 i_radnoise(im,xo,yo,rscale,ascale)
     Imager::ImgRaw     im