
    kh$
                     J    d Z ddlZddlmZ ddlmZ ddlmZ  G d de      Zy)	ai  Image object.

Data structure defined in link https://pymupdf.readthedocs.io/en/latest/textpage.html::

    {
        'type': 1,
        'bbox': (x0,y0,x1,y1),
        'width': w,
        'height': h,
        'image': b'',

        # --- discard properties ---
        'ext': 'png',
        'colorspace': n,
        'xref': xref, 'yref': yref, 'bpc': bpc
    }
    N)BytesIO   )docx)Elementc                   `     e Zd ZdZd
def fdZed        Zd Z fdZ	de
f fdZd	 Z xZS )ImagezBase image object.rawc                     |i }|j                  dd      | _        |j                  dd      | _        |j                  dd      }t        |t              r|n"t        j                  |j                               | _        t        | )  |       y )Nwidthg        heightimage    )getr   r   
isinstancebytesbase64	b64decodeencoder   super__init__)selfr	   r   	__class__s      P/var/www/teggl/fontify/venv/lib/python3.12/site-packages/pdf2docx/image/Image.pyr   zImage.__init__   sr    ;bWWWc*
ggh,
 %(6UF<L<LU\\^<\
r   c                      y)z%Get an image placeholder ``<image>``.z<image> )r   s    r   textz
Image.text,   s     r   c                     |j                   | _         |j                  | _        |j                  | _        | j                  |j                         | S )zqUpdate with image block/span.
        
        Args:
            image (Image): Target image block/span.
        )r   r   r   update_bboxbbox)r   r   s     r   
from_imagezImage.from_image2   s<     [[
ll[[
$r   c                     t         |          }|j                  | j                  | j                  t        j                  | j                        j                         d       |S )zStore image with base64 encode.

        * Encode image bytes with base64 -> base64 bytes
        * Decode base64 bytes -> str -> so can be serialized in json format
        )r   r   r   )	r   storeupdater   r   r   	b64encoder   decode)r   resr   s     r   r"   zImage.store?   sQ     gmo

ZZkk%%djj188:
 	 
r   colorc                     | j                   \  }}}}|j                  ||f||f|d       |j                  ||f||f|d       t        |   ||       y)zPlot image bbox with diagonal lines (for debug purpose).
        
        Args: 
            page (fitz.Page): Plotting page.
        g      ?)r'   r   )strokeN)r   	draw_liner   plot)r   pager'   x0y0x1y1r   s          r   r+   z
Image.plotO   s^     BBBx"bcBBx"bcBT%(r   c                    t        j                  |t        | j                        | j                  j
                  | j                  j                  z
  | j                  j                  | j                  j                  z
         y)z#Add image span to a docx paragraph.N)	r   	add_imager   r   r   r/   r-   r0   r.   )r   	paragraphs     r   	make_docxzImage.make_docx[   sS     	y'$**"5tyy||DIILL7PRVR[R[R^R^_c_h_h_k_kRklr   )N)__name__
__module____qualname____doc__dictr   propertyr   r    r"   tupler+   r4   __classcell__)r   s   @r   r   r      sB    4   

 	)u 	)mr   r   )	r8   r   ior   commonr   common.Elementr   r   r   r   r   <module>r@      s(   $    $CmG Cmr   