| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /tmp/calpy/PIL/__pycache__/ |
Upload File : |
�
Υ=jG8 � � � d dl mZ d dlZd dlZd dlZd dlmZ ddlmZm Z m
Z
mZ dZerd dl
mZ d dlmZ G d � d
� � Zd&d�Zd'd�Zd(d�Z G d� de j � � Zd)d�Zd*d#�Z ej ej ee� � ej ej e� � ej ej g d$�� � ej ej d%� � dS )+� )�annotationsN)�cast� )�Image� ImageFile�ImagePalette�_binaryF)�Callable)�IOc �L � e Zd ZdZddd �Zdd�Zdd�Zdd�Zdd�Zdd�Z dd�Z
dS )� BoxReaderz}
A small helper class to read fields stored in JPEG2000 header boxes
and to easily step into and read sub-boxes.
����fp� IO[bytes]�length�int�return�Nonec �F � || _ |dk | _ || _ d| _ d S )Nr r )r �
has_lengthr �remaining_in_box)�selfr r s �H/tmp/claude-1015/pip-target-jmvfl800/lib/python/PIL/Jpeg2KImagePlugin.py�__init__zBoxReader.__init__% s) � ���� �A�+������ "����� � num_bytes�boolc � � | j r'| j � � � |z | j k rdS | j dk r|| j k S dS )NFr T)r r �tellr r )r r s r � _can_readzBoxReader._can_read+ sM � ��?� �t�w�|�|�~�~� �9�D�K�G�G��5�� �A�%�%��� 5�5�5��4r �bytesc �, � | � |� � sd}t |� � �| j � |� � }t |� � |k r%d|� dt |� � � d�}t |� � �| j dk r| xj |z c_ |S )NzNot enough data in headerzExpected to read z bytes but only got �.r )r �SyntaxErrorr �read�len�OSErrorr )r r �msg�datas r �_read_byteszBoxReader._read_bytes5 s� � ��~�~�i�(�(� #�-�C��c�"�"�"��w�|�|�I�&�&���t�9�9�y� � �Q�i�Q�Q�S��Y�Y�Q�Q�Q�C��#�,�,��� �1�$�$��!�!�Y�.�!�!��r �field_format�str�tuple[int | bytes, ...]c �~ � t j |� � }| � |� � }t j ||� � S �N)�struct�calcsizer* �unpack)r r+ �sizer) s r �read_fieldszBoxReader.read_fieldsC s6 � ���|�,�,������%�%���}�\�4�0�0�0r c �~ � | j }| � |� � }t t j |� � |� � S r/ )r r* r
�io�BytesIO)r r3 r) s r �
read_boxeszBoxReader.read_boxesH s7 � ��$������%�%�����D�)�)�4�0�0�0r c �h � | j r*| j � � � | j z | j k S dS )NT)r r r r r )r s r �has_next_boxzBoxReader.has_next_boxM s0 � ��?� ��7�<�<�>�>�D�$9�9�D�K�G�G��4r c �� � | j dk r*| j � | j t j � � d| _ t t t t f | � d� � � � \ }}|dk r1t t | � d� � d � � }d}nd}||k s| �
||z
� � sd}t |� � �||z
| _ |S ) Nr r z>I4sr z>Q� � zInvalid header length)r r �seek�os�SEEK_CURr �tupler r! r4 r r$ )r �lbox�tbox�hlenr( s r �
next_box_typezBoxReader.next_box_typeS s� � �� �1�$�$��G�L�L��.���<�<�<� "��� �%��U�
�+�T�-=�-=�f�-E�-E�F�F�
��d��1�9�9���T�-�-�d�3�3�A�6�7�7�D��D�D��D��$�;�;�d�n�n�T�D�[�9�9�;�)�C��c�"�"�"� $�t�����r N)r )r r r r r r )r r r r )r r r r! )r+ r, r r- )r r
)r r )r r! )�__name__�
__module__�__qualname__�__doc__r r r* r4 r8 r: rE � r r r
r
s� � � � � � �� �
#� #� #� #� #�� � � �� � � �1� 1� 1� 1�
1� 1� 1� 1�
� � � �� � � � � r r
r r r �tuple[tuple[int, int], str]c � � | � d� � }t j |� � }|| � |dz
� � z }t j d|� � \ }}}}}}} } } } }
||z
||z
f}|
dk r.t j d|d� � }|d dz dz dk rd }
n/d
}
n,|
dk rd}
n#|
dk rd
}
n|
dk rd}
nd}t |� � �||
fS )z�Parse the JPEG 2000 codestream to extract the size and component
count from the SIZ marker segment, returning a PIL (size, mode) tuple.� z>HHIIIIIIIIHr z>B�&