U
    Pe                     @   sr   d Z ddlZddlmZ ddlmZmZmZmZm	Z	 ddl
mZ ddlmZ G dd deZed	krne   dS )
z
Icon generator
==============

This tool will help you to generate all the icons wanted for Google Play Store,
App Store, Amazon store.
    N)Image)existsjoinrealpathbasenamedirname)makedirs)ArgumentParserc                   @   st   e Zd Zddddddddd	d
dddgddddddddgddddgddZdd Zdd Zd$dd Zd!d" Zd#S )%	ConverterZios)zApp store high resolutionz{}-appstore-1024.png   )zApp store normal resolutionz{}-appstore-512.png   )ziPhone (iOS 7)z	{}-60.pngx   )ziPhone @2 (iOS 7){}-60@2x.pngr   )ziPad (iOS 7)z	{}-76.pngL   )ziPad @2 (iOS 7)r      )ziPhone (iOS >= 6.1)z	{}-57.png9   )ziPhone @2 (iOS >= 6.1)z{}-57@2x.pngr   )ziPad (iOS >= 6.1)	{}-72.pngH   )ziPad @2 (iOS >= 6.1)z{}-72@2x.pngr   )ziTunes Artwork (ad-hoc)ZiTunesArtworkr   )ziTunes Artwork @2 (ad-hoc)ziTunesArtwork@2xr   )directory_namesizesZandroid)zGoogle Play iconz{}-googleplay-512.pngr   )zLauncher icon MDPIz	{}-48.png0   )zLauncher icon HDPIr   r   )zLauncher icon XHDPIz	{}-96.png`   )zLauncher icon XXHDPIz
{}-144.pngr   )zLauncher icon XXXHDPIz
{}-192.png   Zamazon)z
Small iconz
{}-114.pngr   )z
Large iconz
{}-512.pngr   )ZappstoreZ	playstoreZamazonstorec                 C   s  t dd}|jdtd dd |jdtddd |jd	td
d | }t|jsbtd t	d |j
d krxt|j|_
t|jddd }t|j}| ||j |  D ]b\}}|\}}}	td||	|	 tt|j
|}
t|
st|
 t|
|d}| |||	 qd S )Nz!Generate icons for various stores)descriptionz--dirzWOutput directory to generate all the icons,defaults to the directory of the source icon)typedefaulthelpz--forceFz5Generate all icons even if the source is not perfect.iconz(Base icon (must be 1024x1024 or 512x512))r   r   zError: No such icon file   .r   zGenerate {}: {}x{}ZIcon)r	   add_argumentstrbool
parse_argsr   r   printsysexitdirr   r   rsplitr   openensure_qualityforceiterateformatr   r   r   
convert_to)selfparserargsZbase_fnsourcer   Zsizeinfor   Z
pattern_fnsizedest_diricon_fn r7   =/tmp/pip-unpacked-wheel-xzebddm3/kivy/tools/generate-icons.pyrun7   s:    





zConverter.runc                 C   s   | ||f}||d d S )NZpng)resizesave)r0   r3   r6   r4   destr7   r7   r8   r/   Y   s    zConverter.convert_toFc                 C   sl   g }|j \}}||kr |d |dkr2|d |s:d S td |D ]}td| qF|shtd d S )Nz#Width and height should be the same)r   r   z4Source image is recommended to be 1024 (512 minimum)zQuality check failedz- {}r   )r4   appendr%   r.   r&   r'   )r0   imager,   messageswhmessager7   r7   r8   r+   ]   s    

zConverter.ensure_qualityc                 c   s4   t j D ]$\}}|d D ]}|d |fV  qq
d S )Nr   r   )r
   
convertersitems)r0   storeZinfosr4   r7   r7   r8   r-   n   s    zConverter.iterateN)F)__name__
__module____qualname__rC   r9   r/   r+   r-   r7   r7   r7   r8   r
      sD   %"
r
   __main__)__doc__r&   ZPILr   os.pathr   r   r   r   r   osr   argparser	   objectr
   rF   r9   r7   r7   r7   r8   <module>   s   d