o
    Q'j|                     @   s   d Z ddlmZmZmZmZ ddlZddlZedZ	dd Z
ejejeZdZdZd	Zd
ZdZdd Zdd Zdd ZdddddedfddZedkrkejejeddd eddddddd  ed! dS dS )"zPlappi ad-creative renderer. Overlays headline/sub/CTA/badge + logo on a base image.
Brand: navy scrim + white headline + coral/yellow accent. Output 1080x1080 (or given size).
    )Image	ImageDraw	ImageFontImageFilterNu,   [🀀-🫿☀-⛿✀-➿🇦-🇿⬀-⯿️]c                 C   s    | rt d| dd S | S )N z   )_EMOJIsubreplacestrip)t r   O/home/nk/hobo-godmode/otto/projekte/plappi/marketing/ad-assets/make_creative.py_clean	   s    r   )       8   )   k   J   )r      f   )r   r   r   )         c                 C   s6   | rdnd}zt ||W S  ty   t   Y S w )Nz4/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttfz//usr/share/fonts/truetype/dejavu/DejaVuSans.ttf)r   truetype	Exceptionload_default)boldsizepr   r   r   _font   s
   r!   c           	      C   s   |\}}| j \}}t|| || }| t|| d t|| d ftj} | j| d }| j| d }| |||| || fS )N      )	r   maxresizeintr   LANCZOSwidthheightcrop)	imr   twthiwihsxyr   r   r   _cover   s
   *r3   c           	      C   sf   |  }g }d}|D ]}|d |  }| j||d|kr |}q
|r'|| |}q
|r1|| |S )Nr   r   font)splitr   
textlengthappend)	drawtextr5   maxwwordslinescurwr   r   r   r   _wrap    s   r@   )8  rA   bottomTc
           !      C   sZ  t tjt| d}
t|
|d}
|\}}t dd|fd}t	|D ]<}|dkrF|| dkrCt
dtd|| d d	 d
  nd}nt
dtdd||  d d
  }|d|ftd| q&|||f}t d||ftd }|| t |
|}
t|
}d}|rtdd}|j||d}|j|||| d |d gd|d |j|d |d f||td |	rz#t tjtdd}|d |
|||j | |d f W n	 ty   Y nw tdd}tdd}t||||d|  }|rt||||d|  ng }d}d }|rd!nd}t|| |r%d"t||  nd |r.d#| nd }|| | }|D ]}|j||f||td ||7 }q9|rh|d"7 }|D ]}|j||f||td ||7 }qU|r|d#7 }tdd}|j||d} |j||||  d$ || gd%|d |j|d& |d' f||td |
djtjt|d(d) |S )*NRGBRGBALr"   r   rB   g?r   g333333?g?g?   )r   F   T"   r4   ,   :      )radiusfill      )r5   rM   zplappi_06.png)   x      F&   r#   P   2   T   r   (   H   *   $      \   )quality) r   openospathjoinHEREconvertr3   newranger&   r$   putpixelminr%   NAVYputalphaalpha_compositer   Drawr!   r7   rounded_rectangler:   	thumbnailr(   r   r@   lenWHITESOFTsave)!baseoutheadliner	   ctabadger   scrimaccentlogor+   WHgradr2   aoverlaydMbfbwlghfsfhlinesslineslhshcta_hblocklncfcwr   r   r   creative+   sX   4"


$
" 8"" $r   __main__	creatives)exist_okzplappi_27.jpegzcreatives/_test.jpgz#Mehr Sprache. Ganz ohne Bildschirm.u:   Plappi bringt Kinder zum aktiven Sprechen — 27 Sprachen.u   Jetzt auf die Warteliste  →u   🚀 Kickstarter · 24. Juni)r	   ru   rv   zwrote creatives/_test.jpg)__doc__PILr   r   r   r   r_   recompiler   r   r`   dirnameabspath__file__rb   rh   CORALYELLOWro   rp   r!   r3   r@   r   __name__makedirsra   printr   r   r   r   <module>   s4   

4