
    BPc                        d Z ddlmZ ddlZddlZddlmZ ddlmZ 	 ddl	m
Z ddlmZ ddlmZ n# e$ r ddlZddlZddlmZ Y nw xY w G d d	ej                  Zd
 Zedk    r e                                             dS dS )z>
Embed images so they are base64 encoded data inside the svg.
    )unicode_literalsN)Image)inkex_gettext)encodebytes)encodestringc                   $    e Zd ZdZd Zd Zd ZdS )
EmbedImagez6Allow selected image tags to become embeded image tagsc                 J    |                     dt          j        d           d S )Nz--selectedonlyzembed only selected images)typehelp)add_argumentinkexBoolean)selfparss     -/usr/share/inkscape/extensions/image_embed.pyadd_argumentszEmbedImage.add_arguments/   s3    5=7S 	 	
 	
 	
 	
 	
    c                     | j         j        r%| j        j                            t
                    }n| j                            d          }|D ]}|                     |           d S )Nz//svg:image)optionsselectedonlysvg	selectiongetr   xpathembed_image)r   imagesnodes      r   effectzEmbedImage.effect4   sn     <$ 	3X'++E22FFX^^M22F 	# 	#DT""""	# 	#r   c                    |                     d          }||dd         dk    rdS |Ht          j        t          d                    |                                                               dS t          j        |          }t          j        |j	                  }	 t          j	                            | j        j                  }n# t          $ r d}Y nw xY w|                     |pd|          }t          j	                            |          s|                     d|          }t          j	                            |          s6t          j        t          d	                              |                     dS t#          |d
          5 }t%          ||                    d                    }|                    d           |rr|                    dd                    |t-          |                                                              d                               |                    d           n$t          j        t          d          |z             ddd           dS # 1 swxY w Y   dS )z0Embed the data of the selected Image Tag elementz
xlink:hrefN   zdata:z*Attribute "xlink:href" not set on node {}. )cwdzsodipodi:absrefz+File not found "{}". Unable to embed image.rb
   r   zdata:{};base64,{}asciizZ%s is not of type image/png, image/jpeg, image/bmp, image/gif, image/tiff, or image/x-icon)r   r   errormsg_formatget_idurlparseurlliburl2pathnamepathosdirnamer   
input_file	TypeErrorabsolute_hrefisfileopenget_typereadseeksetr   decodepop)	r   r   xlinkurlhrefr#   r.   handle	file_types	            r   r   zEmbedImage.embed_image?   s   &&rrg!5!5F=N>EEdkkmmTTUU   F&&"38,,	'//$,"9::CC 	 	 	CCC	 !!$*"#!66 w~~d## 	588-t44Dw~~d## 	N?@@GGMM   F$ 	 v{{277IKKNNN  '..!;v{{}}#=#=#D#DW#M#M    *++++L  	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s%    )C
 
CCCI--I14I1N)__name__
__module____qualname____doc__r   r   r    r   r   r	   r	   ,   sG        @@
 
 

	# 	# 	#7 7 7 7 7r   r	   c                     dD ]\  }}|                     |          r|c S dD ]\  }}|                     |          r|c S dS )z-Basic magic header checker, returns mime type))s   PNGz	image/png)s   z
image/jpeg)s   BMz	image/bmp)s   GIF87a	image/gif)s   GIF89arG   )s   MM *
image/tiff)s   II* rH   ))z.icozimage/x-icon)z.svgzimage/svg+xmlN)
startswithendswith)r.   headerheadmimeexts        r   r6   r6   y   s{     
 

d T"" 	KKK	  	T
 == 	KKK	4r   __main__)rD   
__future__r   r/   r   r   inkex.localizationr   r(   urllib.requestrequestr,   urllib.parseparser+   base64r   ImportErrorr   EffectExtensionr	   r6   rA   runrE   r   r   <module>rZ      sT  *  ( ' ' ' ' ' 				        1 1 1 1 1 13############""""""" 3 3 3MMMOOO22222222	3J J J J J& J J JZ  2 zJLL s   1 AA