U
    a+d                     @   s@   d Z ddlmZmZ dadd ZdZed ZG dd	 d	eZdS )
an   Read/Write images using SimpleITK.

Backend: `Insight Toolkit <https://itk.org/>`_

.. note::
    To use this plugin you have to install its backend::

        pip install imageio[itk]

The ItkFormat uses the ITK or SimpleITK library to support a range of
ITK-related formats. It also supports a few common formats (e.g. PNG and JPEG).

Parameters
----------
None

   )Format
has_moduleNc                   C   sh   zdd l atjatjaW nJ tk
rb   zdd latjatj	aW n tk
r\   tdY nX Y nX tS )N    zitk could not be found. Please try   python -m pip install itk or   python -m pip install simpleitk or refer to   https://itkpythonpackage.readthedocs.io/ for further instructions.)
Zitk_itkZimread_read_functionZimwrite_write_functionImportError	SimpleITKZ	ReadImageZ
WriteImage r
   r
   =/tmp/pip-unpacked-wheel-xbmu82vq/imageio/plugins/simpleitk.pyload_lib   s    


r   )z.giplz.iplz.mhaz.mhdz.nhdrZniahdrz.nrrdz.niiz.nii.gzz.imgz.img.gzz.vtkZhdf5ZlsmmncZmnc2Zmghr   Zpic)	z.bmpz.jpegz.jpgz.pngz.tiffz.tifz.dicomz.dcmz.gdcmc                   @   sD   e Zd ZdZdd Zdd ZG dd dejZG dd	 d	ejZd
S )	ItkFormatz$See :mod:`imageio.plugins.simpleitk`c                 C   s,   |j tkrdS tdstdr(|j tkS d S NTzitk.ImageIOBaser	   	extensionITK_FORMATSr   ALL_FORMATSselfrequestr
   r
   r   	_can_read]   s    
zItkFormat._can_readc                 C   s,   |j tkrdS tdstdr(|j tkS d S r   r   r   r
   r
   r   
_can_writeg   s    
zItkFormat._can_writec                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )zItkFormat.ReaderNc                 K   sL   t s
t  d}|d k	r2||f7 }|d k	r2||f7 }t| j f| | _d S )Nr
   )r   r   r   r   get_local_filename_img)r   Z
pixel_typeZfallback_onlykwargsargsr
   r
   r   _openp   s    

zItkFormat.Reader._openc                 C   s   dS )N   r
   r   r
   r
   r   _get_lengthz   s    zItkFormat.Reader._get_lengthc                 C   s   d S Nr
   r    r
   r
   r   _close}   s    zItkFormat.Reader._closec                 C   s$   |dkrd}t |t| ji fS )Nr   z.Index out of range while reading from itk file)
IndexErrorr   ZGetArrayFromImager   r   index	error_msgr
   r
   r   	_get_data   s    zItkFormat.Reader._get_datac                 C   s   d}t |d S Nz5The itk plugin does not support meta data, currently.RuntimeErrorr%   r
   r
   r   _get_meta_data   s    zItkFormat.Reader._get_meta_data)NN)__name__
__module____qualname__r   r!   r#   r(   r,   r
   r
   r
   r   Readero   s
   

	r0   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
zItkFormat.Writerc                 C   s   t s
t  d S r"   )r   r   r    r
   r
   r   r      s    zItkFormat.Writer._openc                 C   s   d S r"   r
   r    r
   r
   r   r#      s    zItkFormat.Writer._closec                 C   s   t |}t|| j  d S r"   )r   ZGetImageFromArrayr   r   r   )r   ZimmetaZ_itk_imgr
   r
   r   _append_data   s    
zItkFormat.Writer._append_datac                 C   s   d}t |d S r)   r*   )r   r1   r'   r
   r
   r   set_meta_data   s    zItkFormat.Writer.set_meta_dataN)r-   r.   r/   r   r#   r2   r3   r
   r
   r
   r   Writer   s   r4   N)	r-   r.   r/   __doc__r   r   r   r0   r4   r
   r
   r
   r   r   Z   s
   
r   )	r5   corer   r   r   r   r   r   r   r
   r
   r
   r   <module>   s   