changeset 17086:3db796f89695

Rename private core_imfnc functions to follow the __fnc__ convention style.
author Carnë Draug <carandraug@octave.org>
date Fri, 26 Jul 2013 00:47:23 +0100
parents d3ebc3f9bdbf
children bb3a1ec7cc4b
files scripts/image/imfinfo.m scripts/image/imformats.m scripts/image/imread.m scripts/image/imwrite.m scripts/image/module.mk scripts/image/private/__imfinfo__.m scripts/image/private/__imread__.m scripts/image/private/__imwrite__.m scripts/image/private/core_imfinfo.m scripts/image/private/core_imread.m scripts/image/private/core_imwrite.m scripts/image/private/imwrite_filename.m
diffstat 12 files changed, 373 insertions(+), 373 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/image/imfinfo.m	Thu Jul 25 18:18:32 2013 -0400
+++ b/scripts/image/imfinfo.m	Fri Jul 26 00:47:23 2013 +0100
@@ -120,5 +120,5 @@
   elseif (nargin > 1 && ! ischar (varargin{2}))
     error ("imfinfo: EXT must be a string");
   endif
-  info = imageIO (@core_imfinfo, "info", varargin, varargin{:});
+  info = imageIO (@__imfinfo__, "info", varargin, varargin{:});
 endfunction
--- a/scripts/image/imformats.m	Thu Jul 25 18:18:32 2013 -0400
+++ b/scripts/image/imformats.m	Fri Jul 26 00:47:23 2013 +0100
@@ -241,9 +241,9 @@
   endfor
 
   ## the default info, read, and write functions
-  [formats.info ] = deal (@core_imfinfo);
-  [formats.read ] = deal (@core_imread);
-  [formats.write] = deal (@core_imwrite);
+  [formats.info ] = deal (@__imfinfo__);
+  [formats.read ] = deal (@__imread__);
+  [formats.write] = deal (@__imwrite__);
 
   ## fills rest of format information by checking with GraphicsMagick
   formats = __magick_formats__ (formats);
@@ -270,7 +270,7 @@
 function bool = isa_magick (coder, filename)
   bool = false;
   try
-    info = core_imfinfo (filename);
+    info = __imfinfo__ (filename);
     bool = strcmp (coder, info.Format);
   end_try_catch
 endfunction
--- a/scripts/image/imread.m	Thu Jul 25 18:18:32 2013 -0400
+++ b/scripts/image/imread.m	Fri Jul 26 00:47:23 2013 +0100
@@ -93,7 +93,7 @@
     filename{2} = varargin{2};
   endif
 
-  [varargout{1:nargout}] = imageIO (@core_imread, "read", filename, varargin{:});
+  [varargout{1:nargout}] = imageIO (@__imread__, "read", filename, varargin{:});
 endfunction
 
 %!testif HAVE_MAGICK
--- a/scripts/image/imwrite.m	Thu Jul 25 18:18:32 2013 -0400
+++ b/scripts/image/imwrite.m	Fri Jul 26 00:47:23 2013 +0100
@@ -78,7 +78,7 @@
     endif
     warning ("imwrite: unlisted image format %s (see imformats). Trying to save anyway.",
              ext);
-    core_imwrite (varargin{:});
+    __imwrite__ (varargin{:});
   else
     fmt.write (varargin{:});
   endif
--- a/scripts/image/module.mk	Thu Jul 25 18:18:32 2013 -0400
+++ b/scripts/image/module.mk	Fri Jul 26 00:47:23 2013 +0100
@@ -1,9 +1,9 @@
 FCN_FILE_DIRS += image
 
 image_PRIVATE_FCN_FILES = \
-  image/private/core_imfinfo.m \
-  image/private/core_imread.m \
-  image/private/core_imwrite.m \
+  image/private/__imfinfo__.m \
+  image/private/__imread__.m \
+  image/private/__imwrite__.m \
   image/private/imageIO.m \
   image/private/imwrite_filename.m \
   image/private/ind2x.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/image/private/__imfinfo__.m	Fri Jul 26 00:47:23 2013 +0100
@@ -0,0 +1,71 @@
+## Copyright (C) 2008-2012 Soren Hauberg
+## Copyright (C) 2013 Carnë Draug
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## This function does al the work of imfinfo. It exists here as private
+## function so that imfinfo can use other functions if imformats is
+## configured to. It is also needed so that imformats can create a
+## function handle for it.
+
+## Author: Soren Hauberg <hauberg@gmail.com>
+
+function info = __imfinfo__ (filename, ext)
+
+  if (nargin < 1 || nargin > 2)
+    print_usage ("imfinfo");
+  endif
+
+  if (! ischar (filename))
+    error ("imfinfo: FILENAME must be a string");
+  elseif (nargin >= 2 && ! ischar (ext))
+    error ("imfinfo: EXT must be a string");
+  endif
+  filename = tilde_expand (filename);
+
+  delete_file = false;
+  unwind_protect
+
+    fn = file_in_path (IMAGE_PATH, filename);
+    if (isempty (fn))
+      ## We couldn't find the file so...
+      if (nargin >= 2)
+        ## try adding a possible file extesion
+        filename  = [filename "." ext];
+        fn        = file_in_path (IMAGE_PATH, filename);
+        if (isempty (fn))
+          error ("imfinfo: cannot find file %s", filename);
+        endif
+      else
+        ## try filename as an URL
+        [fn, status, msg] = urlwrite (filename, tmpnam ());
+        if (! status)
+          error ("imfinfo: cannot find or download %s: %s", filename, msg);
+        endif
+        delete_file = true;
+      endif
+    endif
+
+    info = __magick_finfo__ (fn);
+
+  unwind_protect_cleanup
+    if (delete_file)
+      unlink (fn);
+    endif
+  end_unwind_protect
+
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/image/private/__imread__.m	Fri Jul 26 00:47:23 2013 +0100
@@ -0,0 +1,185 @@
+## Copyright (C) 2013 Carnë Draug
+## Copyright (C) 2008-2012 Thomas L. Scofield
+## Copyright (C) 2008 Kristian Rumberg
+## Copyright (C) 2006 Thomas Weber
+## Copyright (C) 2005 Stefan van der Walt
+## Copyright (C) 2002 Andy Adler
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## This function does all the work of imread. It exists here as private
+## function so that imread can use other functions if imformats is
+## configured to. It is also needed so that imformats can create a
+## function handle for it.
+
+## Author: Carnë Draug <carandraug@octave.org>
+## Author: Thomas L. Scofield <scofield@calvin.edu>
+## Author: Kristian Rumberg <kristianrumberg@gmail.com>
+## Author: Thomas Weber <thomas.weber.mail@gmail.com>
+## Author: Stefan van der Walt <stefan@sun.ac.za>
+## Author: Andy Adler
+
+function varargout = __imread__ (filename, varargin)
+
+  if (nargin < 1)
+    print_usage ("imread");
+  elseif (! ischar (filename))
+    error ("imread: FILENAME must be a string");
+  endif
+
+  ## keep track of the varargin offset we're looking at each moment
+  offset    = 1;
+
+  filename  = tilde_expand (filename);
+  fn        = file_in_path (IMAGE_PATH, filename);
+  if (isempty (fn) && nargin >= offset + 1 && ischar (varargin{offset}))
+    ## if we can't find the file, check if the next input is the file extension
+    filename  = [filename "." varargin{offset}];
+    fn        = file_in_path (IMAGE_PATH, filename);
+    offset++;
+  endif
+  if (isempty (fn))
+    error ("imread: cannot find %s", filename);
+  endif
+
+  ## set default for options
+  options = struct ("index", 1);
+
+  ## Index is the only option that can be defined without the parameter/value
+  ## pair style. When defining it here, the string "all" is invalid though.
+  if (nargin >= offset + 1 && ! ischar (varargin{offset}))
+    if (! is_valid_index_option (options.index))
+      error ("imread: IDX must be a numeric vector");
+    endif
+    options.index = varargin{offset};
+    offset++;
+  endif
+
+  if (rem (numel (varargin) - offset + 1, 2) != 0)
+    error ("imread: no pair for all arguments (even number left)");
+  endif
+
+  for idx = offset:2:(numel (varargin) - offset + 1)
+
+    switch (tolower (varargin{idx}))
+
+      case {"frames", "index"},
+        options.index = varargin{idx+1};
+        if (! (is_valid_index_option (options.index)) &&
+            ! (ischar (options.index) && strcmpi (options.index, "all")))
+          error ("imread: value for %s must be a vector or the string `all'");
+        endif
+
+## FIXME: commented until it's implemented in __magick_read__
+##      case "pixelregion",
+##        options.region = varargin{idx+1};
+##        if (! iscell (options.region) || numel (options.region) != 2)
+##          error ("imread: value for %s must be a 2 element cell array",
+##                 varargin{idx});
+##        endif
+##        for reg_idx = 1:2
+##          if (numel (options.region{reg_idx}) == 3)
+##            ## do nothing
+##          elseif (numel (options.region{reg_idx}) == 2)
+##            options.region{reg_idx}(3) = options.region{reg_idx}(2);
+##            options.region{reg_idx}(2) = 1;
+##          else
+##            error ("imread: range for %s must be a 2 or 3 element vector",
+##                   varargin{idx});
+##          endif
+##          options.region{reg_idx} = floor (options.region{reg_idx}(1)): ...
+##                                    floor (options.region{reg_idx}(2)): ...
+##                                    floor (options.region{reg_idx}(3));
+##        endfor
+
+      case "info",
+        ## We ignore this option. This parameter exists in Matlab to
+        ## speed up the reading of multipage TIFF.  It makes no difference
+        ## for us since we're already quite efficient.
+
+      otherwise
+        error ("imread: invalid PARAMETER `%s'", varargin{idx});
+
+    endswitch
+  endfor
+
+  try
+    [varargout{1:nargout}] = __magick_read__ (fn, options);
+
+  catch
+    ## If we can't read it with Magick, maybe the image is in Octave's
+    ## native image format.  This is from back before Octave had 'imread'
+    ## and 'imwrite'. Then we had the functions 'loadimage' and 'saveimage'.
+    ##
+    ## This "image format" seems to be any file that can be read with
+    ## load() and contains 2 variables.  The variable named "map" is a
+    ## colormap and must exist whether the image is indexed or not. The
+    ## other variable must be named "img" or "X" for a "normal" or
+    ## indexed image.
+    ##
+    ## FIXME: this has been deprecated for the next major release (3.8 or 4.0).
+    ##        If someone wants to revive this as yet another image format, a
+    ##        separate Octave package can be written for it, that register the
+    ##        format through imformats.
+
+    magick_error = lasterr ();
+
+    img_field = false;
+    x_field   = false;
+    map_field = false;
+
+    try
+      vars = load (fn);
+      if (isstruct (vars))
+        img_field = isfield (vars, "img");
+        x_field   = isfield (vars, "X");
+        map_field = isfield (vars, "map");
+      endif
+    catch
+      error ("imread: invalid image file: %s", magick_error);
+    end_try_catch
+
+    if (map_field && (img_field || x_field))
+      varargout{2} = vars.map;
+      if (img_field)
+        varargout{1} = vars.img;
+      else
+        varargout{1} = vars.X;
+      endif
+      persistent warned = false;
+      if (! warned)
+        warning ("Octave's native image format has been deprecated.");
+        warned = true;
+      endif
+    else
+      error ("imread: invalid Octave image file format");
+    endif
+
+  end_try_catch
+
+endfunction
+
+## Tests if the value passed to the Index or Frames is valid. This option
+## can be defined in two places, but only in one place can it also be the
+## string "all"
+function bool = is_valid_index_option (arg)
+  ## is the index option
+  bool = false;
+  if (isvector (arg) && isnumeric (arg) && isreal (arg))
+    bool = true;
+  endif
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/image/private/__imwrite__.m	Fri Jul 26 00:47:23 2013 +0100
@@ -0,0 +1,105 @@
+## Copyright (C) 2008-2012 John W. Eaton
+## Copyright (C) 2013 Carnë Draug
+##
+## This file is part of Octave.
+##
+## Octave is free software; you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or (at
+## your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <http://www.gnu.org/licenses/>.
+
+## This function does all the work of imwrite. It exists here as private
+## function so that imwrite can use other functions if imformats is
+## configured to. It is also needed so that imformats can create a
+## function handle for it.
+
+function __imwrite__ (img, varargin)
+
+  if (nargin < 2 || ! (isnumeric (img) || islogical (img)))
+    print_usage ("imwrite");
+  endif
+
+  [filename, ext, map, param_list] = imwrite_filename (varargin{:});
+
+  if (rem (numel (param_list), 2) != 0)
+    error ("imwrite: no pair for all arguments (even number left)");
+  endif
+
+  ## set default for options
+  options        = struct ("writemode", "overwrite",
+                           "quality",   75);
+
+  for idx = 1:2:numel (param_list)
+
+    switch (tolower (param_list{idx}))
+
+      case "writemode",
+        options.writemode = param_list{idx+1};
+        if (! ischar (options.writemode) ||
+            ! any (strcmpi (options.writemode, {"append", "overwrite"})))
+          error ("imwrite: value for %s option must be \"append\" or \"overwrite\"",
+                 param_list{idx});
+        endif
+        options.writemode = tolower (options.writemode);
+
+      case "quality",
+        options.quality = param_list{idx+1};
+        if (! isnumeric (options.quality) || ! isscalar (options.quality) ||
+            options.quality < 0 || options.quality > 100)
+          error ("imwrite: value for %s option must be a scalar between 0 and 100",
+                 param_list{idx});
+        endif
+        options.quality = round (options.quality);
+
+      otherwise
+        error ("imwrite: invalid PARAMETER `%s'", varargin{idx});
+
+    endswitch
+  endfor
+
+  if (isempty (img))
+    error ("imwrite: invalid empty image");
+  elseif (issparse (img) || issparse (map))
+    error ("imwrite: sparse images not supported");
+  endif
+
+  if (! isempty (map))
+    if (! iscolormap (map))
+      error ("imwrite: invalid MAP for indexed image");
+    elseif (ndims (img) != 2 && ndims (img) != 4)
+      error ("imwrite: indexed image must have 2 or 4 dimensions (found %i)", ndims (img));
+    endif
+    ## FIXME: we should really be writing indexed images but that needs
+    ##        to be implemented in  __magick_write__(). So we convert
+    ##        them to RGB and write them "normally".
+    warned = false;
+    if (! warned)
+      warning ("imwrite: saving of indexed images is not yet implemented. Will save a RGB image.");
+      warned = true;
+    endif
+    img = ind2rgb (img, map);
+    map = [];
+  endif
+
+  if (ndims (img) > 4)
+    error ("imwrite: invalid %d-dimensional image data", ndims (img));
+  elseif (all (size (img, 3) != [1 3]))
+    ## This test needs to be adjusted if one day we implement alternative
+    ## colorspaces. In the mean time, we only have grayscale and RGB images,
+    ## but CMYK means length 4 in the 3rd dimension.
+    error ("imwrite: IMG 3rd dimension must be 1 or 3");
+  endif
+
+  ## FIXME: do we need to convert the image class?
+  __magick_write__ (filename, ext, img, map, options);
+
+endfunction
--- a/scripts/image/private/core_imfinfo.m	Thu Jul 25 18:18:32 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-## Copyright (C) 2008-2012 Soren Hauberg
-## Copyright (C) 2013 Carnë Draug
-##
-## This file is part of Octave.
-##
-## Octave is free software; you can redistribute it and/or modify it
-## under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 3 of the License, or (at
-## your option) any later version.
-##
-## Octave is distributed in the hope that it will be useful, but
-## WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-## General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with Octave; see the file COPYING.  If not, see
-## <http://www.gnu.org/licenses/>.
-
-## This function does al the work of imfinfo. It exists here as private
-## function so that imfinfo can use other functions if imformats is
-## configured to. It is also needed so that imformats can create a
-## function handle for it.
-
-## Author: Soren Hauberg <hauberg@gmail.com>
-
-function info = core_imfinfo (filename, ext)
-
-  if (nargin < 1 || nargin > 2)
-    print_usage ("imfinfo");
-  endif
-
-  if (! ischar (filename))
-    error ("imfinfo: FILENAME must be a string");
-  elseif (nargin >= 2 && ! ischar (ext))
-    error ("imfinfo: EXT must be a string");
-  endif
-  filename = tilde_expand (filename);
-
-  delete_file = false;
-  unwind_protect
-
-    fn = file_in_path (IMAGE_PATH, filename);
-    if (isempty (fn))
-      ## We couldn't find the file so...
-      if (nargin >= 2)
-        ## try adding a possible file extesion
-        filename  = [filename "." ext];
-        fn        = file_in_path (IMAGE_PATH, filename);
-        if (isempty (fn))
-          error ("imfinfo: cannot find file %s", filename);
-        endif
-      else
-        ## try filename as an URL
-        [fn, status, msg] = urlwrite (filename, tmpnam ());
-        if (! status)
-          error ("imfinfo: cannot find or download %s: %s", filename, msg);
-        endif
-        delete_file = true;
-      endif
-    endif
-
-    info = __magick_finfo__ (fn);
-
-  unwind_protect_cleanup
-    if (delete_file)
-      unlink (fn);
-    endif
-  end_unwind_protect
-
-endfunction
--- a/scripts/image/private/core_imread.m	Thu Jul 25 18:18:32 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-## Copyright (C) 2013 Carnë Draug
-## Copyright (C) 2008-2012 Thomas L. Scofield
-## Copyright (C) 2008 Kristian Rumberg
-## Copyright (C) 2006 Thomas Weber
-## Copyright (C) 2005 Stefan van der Walt
-## Copyright (C) 2002 Andy Adler
-##
-## This file is part of Octave.
-##
-## Octave is free software; you can redistribute it and/or modify it
-## under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 3 of the License, or (at
-## your option) any later version.
-##
-## Octave is distributed in the hope that it will be useful, but
-## WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-## General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with Octave; see the file COPYING.  If not, see
-## <http://www.gnu.org/licenses/>.
-
-## This function does all the work of imread. It exists here as private
-## function so that imread can use other functions if imformats is
-## configured to. It is also needed so that imformats can create a
-## function handle for it.
-
-## Author: Carnë Draug <carandraug@octave.org>
-## Author: Thomas L. Scofield <scofield@calvin.edu>
-## Author: Kristian Rumberg <kristianrumberg@gmail.com>
-## Author: Thomas Weber <thomas.weber.mail@gmail.com>
-## Author: Stefan van der Walt <stefan@sun.ac.za>
-## Author: Andy Adler
-
-function varargout = core_imread (filename, varargin)
-
-  if (nargin < 1)
-    print_usage ("imread");
-  elseif (! ischar (filename))
-    error ("imread: FILENAME must be a string");
-  endif
-
-  ## keep track of the varargin offset we're looking at each moment
-  offset    = 1;
-
-  filename  = tilde_expand (filename);
-  fn        = file_in_path (IMAGE_PATH, filename);
-  if (isempty (fn) && nargin >= offset + 1 && ischar (varargin{offset}))
-    ## if we can't find the file, check if the next input is the file extension
-    filename  = [filename "." varargin{offset}];
-    fn        = file_in_path (IMAGE_PATH, filename);
-    offset++;
-  endif
-  if (isempty (fn))
-    error ("imread: cannot find %s", filename);
-  endif
-
-  ## set default for options
-  options = struct ("index", 1);
-
-  ## Index is the only option that can be defined without the parameter/value
-  ## pair style. When defining it here, the string "all" is invalid though.
-  if (nargin >= offset + 1 && ! ischar (varargin{offset}))
-    if (! is_valid_index_option (options.index))
-      error ("imread: IDX must be a numeric vector");
-    endif
-    options.index = varargin{offset};
-    offset++;
-  endif
-
-  if (rem (numel (varargin) - offset + 1, 2) != 0)
-    error ("imread: no pair for all arguments (even number left)");
-  endif
-
-  for idx = offset:2:(numel (varargin) - offset + 1)
-
-    switch (tolower (varargin{idx}))
-
-      case {"frames", "index"},
-        options.index = varargin{idx+1};
-        if (! (is_valid_index_option (options.index)) &&
-            ! (ischar (options.index) && strcmpi (options.index, "all")))
-          error ("imread: value for %s must be a vector or the string `all'");
-        endif
-
-## FIXME: commented until it's implemented in __magick_read__
-##      case "pixelregion",
-##        options.region = varargin{idx+1};
-##        if (! iscell (options.region) || numel (options.region) != 2)
-##          error ("imread: value for %s must be a 2 element cell array",
-##                 varargin{idx});
-##        endif
-##        for reg_idx = 1:2
-##          if (numel (options.region{reg_idx}) == 3)
-##            ## do nothing
-##          elseif (numel (options.region{reg_idx}) == 2)
-##            options.region{reg_idx}(3) = options.region{reg_idx}(2);
-##            options.region{reg_idx}(2) = 1;
-##          else
-##            error ("imread: range for %s must be a 2 or 3 element vector",
-##                   varargin{idx});
-##          endif
-##          options.region{reg_idx} = floor (options.region{reg_idx}(1)): ...
-##                                    floor (options.region{reg_idx}(2)): ...
-##                                    floor (options.region{reg_idx}(3));
-##        endfor
-
-      case "info",
-        ## We ignore this option. This parameter exists in Matlab to
-        ## speed up the reading of multipage TIFF.  It makes no difference
-        ## for us since we're already quite efficient.
-
-      otherwise
-        error ("imread: invalid PARAMETER `%s'", varargin{idx});
-
-    endswitch
-  endfor
-
-  try
-    [varargout{1:nargout}] = __magick_read__ (fn, options);
-
-  catch
-    ## If we can't read it with Magick, maybe the image is in Octave's
-    ## native image format.  This is from back before Octave had 'imread'
-    ## and 'imwrite'. Then we had the functions 'loadimage' and 'saveimage'.
-    ##
-    ## This "image format" seems to be any file that can be read with
-    ## load() and contains 2 variables.  The variable named "map" is a
-    ## colormap and must exist whether the image is indexed or not. The
-    ## other variable must be named "img" or "X" for a "normal" or
-    ## indexed image.
-    ##
-    ## FIXME: this has been deprecated for the next major release (3.8 or 4.0).
-    ##        If someone wants to revive this as yet another image format, a
-    ##        separate Octave package can be written for it, that register the
-    ##        format through imformats.
-
-    magick_error = lasterr ();
-
-    img_field = false;
-    x_field   = false;
-    map_field = false;
-
-    try
-      vars = load (fn);
-      if (isstruct (vars))
-        img_field = isfield (vars, "img");
-        x_field   = isfield (vars, "X");
-        map_field = isfield (vars, "map");
-      endif
-    catch
-      error ("imread: invalid image file: %s", magick_error);
-    end_try_catch
-
-    if (map_field && (img_field || x_field))
-      varargout{2} = vars.map;
-      if (img_field)
-        varargout{1} = vars.img;
-      else
-        varargout{1} = vars.X;
-      endif
-      persistent warned = false;
-      if (! warned)
-        warning ("Octave's native image format has been deprecated.");
-        warned = true;
-      endif
-    else
-      error ("imread: invalid Octave image file format");
-    endif
-
-  end_try_catch
-
-endfunction
-
-## Tests if the value passed to the Index or Frames is valid. This option
-## can be defined in two places, but only in one place can it also be the
-## string "all"
-function bool = is_valid_index_option (arg)
-  ## is the index option
-  bool = false;
-  if (isvector (arg) && isnumeric (arg) && isreal (arg))
-    bool = true;
-  endif
-endfunction
--- a/scripts/image/private/core_imwrite.m	Thu Jul 25 18:18:32 2013 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-## Copyright (C) 2008-2012 John W. Eaton
-## Copyright (C) 2013 Carnë Draug
-##
-## This file is part of Octave.
-##
-## Octave is free software; you can redistribute it and/or modify it
-## under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 3 of the License, or (at
-## your option) any later version.
-##
-## Octave is distributed in the hope that it will be useful, but
-## WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-## General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with Octave; see the file COPYING.  If not, see
-## <http://www.gnu.org/licenses/>.
-
-## This function does all the work of imwrite. It exists here as private
-## function so that imwrite can use other functions if imformats is
-## configured to. It is also needed so that imformats can create a
-## function handle for it.
-
-function core_imwrite (img, varargin)
-
-  if (nargin < 2 || ! (isnumeric (img) || islogical (img)))
-    print_usage ("imwrite");
-  endif
-
-  [filename, ext, map, param_list] = imwrite_filename (varargin{:});
-
-  if (rem (numel (param_list), 2) != 0)
-    error ("imwrite: no pair for all arguments (even number left)");
-  endif
-
-  ## set default for options
-  options        = struct ("writemode", "overwrite",
-                           "quality",   75);
-
-  for idx = 1:2:numel (param_list)
-
-    switch (tolower (param_list{idx}))
-
-      case "writemode",
-        options.writemode = param_list{idx+1};
-        if (! ischar (options.writemode) ||
-            ! any (strcmpi (options.writemode, {"append", "overwrite"})))
-          error ("imwrite: value for %s option must be \"append\" or \"overwrite\"",
-                 param_list{idx});
-        endif
-        options.writemode = tolower (options.writemode);
-
-      case "quality",
-        options.quality = param_list{idx+1};
-        if (! isnumeric (options.quality) || ! isscalar (options.quality) ||
-            options.quality < 0 || options.quality > 100)
-          error ("imwrite: value for %s option must be a scalar between 0 and 100",
-                 param_list{idx});
-        endif
-        options.quality = round (options.quality);
-
-      otherwise
-        error ("imwrite: invalid PARAMETER `%s'", varargin{idx});
-
-    endswitch
-  endfor
-
-  if (isempty (img))
-    error ("imwrite: invalid empty image");
-  elseif (issparse (img) || issparse (map))
-    error ("imwrite: sparse images not supported");
-  endif
-
-  if (! isempty (map))
-    if (! iscolormap (map))
-      error ("imwrite: invalid MAP for indexed image");
-    elseif (ndims (img) != 2 && ndims (img) != 4)
-      error ("imwrite: indexed image must have 2 or 4 dimensions (found %i)", ndims (img));
-    endif
-    ## FIXME: we should really be writing indexed images but that needs
-    ##        to be implemented in  __magick_write__(). So we convert
-    ##        them to RGB and write them "normally".
-    warned = false;
-    if (! warned)
-      warning ("imwrite: saving of indexed images is not yet implemented. Will save a RGB image.");
-      warned = true;
-    endif
-    img = ind2rgb (img, map);
-    map = [];
-  endif
-
-  if (ndims (img) > 4)
-    error ("imwrite: invalid %d-dimensional image data", ndims (img));
-  elseif (all (size (img, 3) != [1 3]))
-    ## This test needs to be adjusted if one day we implement alternative
-    ## colorspaces. In the mean time, we only have grayscale and RGB images,
-    ## but CMYK means length 4 in the 3rd dimension.
-    error ("imwrite: IMG 3rd dimension must be 1 or 3");
-  endif
-
-  ## FIXME: do we need to convert the image class?
-  __magick_write__ (filename, ext, img, map, options);
-
-endfunction
--- a/scripts/image/private/imwrite_filename.m	Thu Jul 25 18:18:32 2013 -0400
+++ b/scripts/image/private/imwrite_filename.m	Fri Jul 26 00:47:23 2013 +0100
@@ -18,9 +18,9 @@
 
 ## The input check for imwrite needs to be done twice, once when imwrite
 ## is called the first time to find where the filename is, and a second
-## time by core_imwrite after imformats decides what function to use.
+## time by __imwrite__ after imformats decides what function to use.
 ## Because a user can, and is encouraged to, get a function handle to
-## core_imwrite, the input check is also done there.
+## __imwrite__, the input check is also done there.
 ## In addition, the input check for imwrite is not that straightforward
 ## in order to support the multiple ways the function can be called,
 ## and interpretations of Matlab documentation.