o
    i                     @   s   d Z ddlmZ ddlmZ ddlmZ zddlZedd ej	
 dD Zd	ZW n ey6   d
ZY nw ediZdedefddZdededefddZdededefddZeeiZdS )zFInterface for *Pixel Data* encoding, not intended to be used directly.    )cast)EncodeRunner)RLELosslessNc                 c   s    | ]}t |V  qd S )N)int).0x r   R/mnt/sdb/aimis/docanh/lib/python3.10/site-packages/pydicom/pixels/encoders/gdcm.py	<genexpr>   s    r
   .TF)zgdcm>=3.0.10uidreturnc                 C   s   t rtdk rdS | tv S )zeReturn ``True`` if a pixel data encoder for `uid` is available for use,
    ``False`` otherwise.
    )   r   
   F)	HAVE_GDCMGDCM_VERSIONENCODER_DEPENDENCIES)r   r   r   r	   is_available   s   r   srcrunnerc                 C   s,   | dd}|dkrtdt|j | |S )a7  Return the encoded image data in `src`.

    Parameters
    ----------
    src : bytes
        The raw image frame data to be encoded.
    runner : pydicom.pixels.encoders.base.EncodeRunner
        The runner managing the encoding process.

    Returns
    -------
    bytes
        The encoded image data.
    	byteorder<>z$Unsupported option "byteorder = '>'")
get_option
ValueError	_ENCODERStransfer_syntax)r   r   r   r   r   r	   encode_pixel_data!   s   r   c                 C   s  |j dkr	tdtj|j}|tjjkrtd|j dtjj}t	 }|
 }|d ||j|jdf |t| |t| t|j|j |j|jd |j}|| |jdkri|d ttdd	}||  || t }tj|j}	|t|	 || | }
|
st d
|! }|" # }|du s|$ dkrt d|%d& ' }t(t)|*ddS )a9  Return RLE encoded image data from `src`.

    Parameters
    ----------
    src : bytes
        The raw image frame data to be encoded.
    runner : pydicom.pixels.encoders.base.EncodeRunner
        The runner managing the encoding process.

    Returns
    -------
    bytes
        The encoded image data.
        z&Unable to encode more than 32-bit dataz$Invalid photometric interpretation ''      r   i     z<ImageChangeTransferSyntax.Change() returned a failure resultNz8Unexpected number of fragments found in the 'Pixel Data'zutf-8surrogateescape)+bits_allocatedr   gdcmPhotometricInterpretation	GetPITypephotometric_interpretationPI_ENDTransferSyntaxImplicitVRLittleEndianImageWriterGetImageSetNumberOfDimensionsSetDimensionscolumnsrowsSetPhotometricInterpretationSetTransferSyntaxPixelFormatsamples_per_pixelbits_storedpixel_representationSetPixelFormatSetPlanarConfigurationDataElementTagSetByteStringValueSetDataElementImageChangeTransferSyntax	GetTSTyper   SetInputChangeRuntimeError	GetOutputGetDataElementGetSequenceOfFragmentsGetNumberOfFragmentsGetFragmentGetByteValue	GetBufferr   bytesencode)r   r   pitswriterimagepixel_formatelem	converterrleresultseqfragmentr   r   r	   _rle_encode7   sT   







rW   )__doc__typingr   pydicom.pixels.encoders.baser   pydicom.uidr   r%   tupleVersion
GetVersionsplitr   r   ImportErrorr   strboolr   rJ   r   rW   r   r   r   r   r	   <module>   s"   
X