U
    '1ev                     @   s  d Z dZddlmZ ddlT ddlT ddlmZmZm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZ ddlZdd	lmZmZmZ edd
dddddddddddddddddddddd d!d"d#d$d%Zd&ZG d'd( d(eZG d)d* d*eZd+d, Zd-d. Zed/kre  dS )0z3.3.0a  This file is a collection of flag graphics as widgets.

All flags are represented at the ratio of 1:2, even where the official ratio for the flag is something else
(such as 3:5 for the German national flag). The only exceptions are for where this would look _very_ wrong,
such as the Danish flag whose (ratio is 28:37), or the Swiss flag (which is square).

Unless otherwise stated, these flags are all the 'national flags' of the countries, rather than their
state flags, naval flags, ensigns or any other variants. (National flags are the flag flown by civilians
of a country and the ones usually used to represent a country abroad. State flags are the variants used by
the government and by diplomatic missions overseas).

To check on how close these are to the 'official' representations of flags, check the World Flag Database at
http://www.flags.ndirect.co.uk/

The flags this file contains are:

EU Members:
United Kingdom, Austria, Belgium, Denmark, Finland, France, Germany, Greece, Ireland, Italy, Luxembourg,
Holland (The Netherlands), Spain, Sweden

Others:
USA, Czech Republic, European Union, Switzerland, Turkey, Brazil

(Brazilian flag contributed by Publio da Costa Melo [publio@planetarium.com.br]).
    )colors)*)LineRectPolygonDrawingGroupStringCircleWedge)	renderPDF)_SymbolN)sincospiUKUSAAfghanistanAustriaBelgiumZChinaCubaDenmarkFinlandFranceGermanyGreeceIrelandItalyZJapan
LuxembourgHolland	PalestinePortugalZRussiaSpainSwedenNorwayCzechRepublicTurkeySwitzerlandEUBrazil      Y@c                   @   s@   e Zd ZdZeeeedddZdZ	dd Z
dd	 Zd
d ZdS )StarzyThis draws a 5-pointed star.

        possible attributes:
        'x', 'y', 'size', 'fillColor', 'strokeColor'

        zangle in degreesdesc)BASEangler*   c                 C   s(   t |  d| _tj| _d | _d| _d S )Nd   r   )r   __init__sizer   yellow	fillColorstrokeColorr/   self r8   D/tmp/pip-unpacked-wheel-109iniqw/reportlab/graphics/widgets/flags.pyr1   W   s
    
zStar.__init__c              
   C   sd   t dd}t }d|_d|_|| d}|t|j|jd  |jd|  |jjt	j
d|d	 |S )
N   r0   2   r   
          @333333?middler4   
textAnchorfontSize)r   r+   xyaddr	   r2   	__class____name__r   black)r7   DetlabelFontSizer8   r8   r9   demo^   s    

   z	Star.democ                 C   s   t | j}t }t | jd }|tdtd   tdtd   }g }d}tdD ]J}||fD ]<}|td  }	||t|	  ||t|	  |d }q^qRt|| j	| j
|d d}
|| j || j| j | j| j  ||
 |S )	N      g     f@$   Z      r;   r4   r5   strokeWidth)floatr2   r   r   r   r   rangeappendr   r4   r5   rotater/   shiftrC   dxrD   dyrE   )r7   sgRrPr/   iradiusthetastarr8   r8   r9   drawj   s*    
$
z	Star.drawN)rG   
__module____qualname____doc__AttrMapr   AttrMapValueZisNumber_attrMap_sizer1   rL   rd   r8   r8   r8   r9   r+   K   s   
r+   c                   @   sR  e Zd ZdZeeeeddeedee	dddZ
i Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Z d1d2 Z!d3d4 Z"d5d6 Z#d7d8 Z$d9d: Z%d;d< Z&d=d> Z'd?d@ Z(dAdB Z)dCdD Z*dEdF Z+dGdH Z,dIdJ Z-dKdL Z.dMS )NFlaga   This is a generic flag class that all the flags in this file use as a basis.

        This class basically provides edges and a tidy-up routine to hide any bits of
        line that overlap the 'outside' of the flag

        possible attributes:
        'x', 'y', 'size', 'fillColor'
    zBackground colorr,   zWhether a background is drawnz
Which flag)r.   r4   borderkindc                 K   s2   t |  d | _d| _tj| _d| _| | d S )Nr0      )	r   r1   rn   r2   r   whiter4   rm   ZsetProperties)r7   kwr8   r8   r9   r1      s    
zFlag.__init__c                 C   s   dd | j d jjD S )z*return a list of the things we can displayc                 S   s   g | ]}|d k	r|qS Nr8   ).0rC   r8   r8   r9   
<listcomp>   s      z+Flag.availableFlagNames.<locals>.<listcomp>rn   )rj   validateZ_enumr6   r8   r8   r9   availableFlagNames   s    zFlag.availableFlagNamesc                 C   s2   t }t }|tdd|d |tjtjdd |S )Nr   rM   rR   )rk   r   rE   r   r   ZpurplerH   r7   r[   r\   r8   r8   r9   
_Flag_None   s    $zFlag._Flag_Nonec                 C   s   | j }t }|| | j| j | j| j | jd   }}}|dt	| | t
| dd| d|  t
| d|d|  d | j|d d ||| ||t |t  |S )Nr=   r   _widthrM      Z_heightwidthheightr4   r5   rS   )r2   r   rE   rC   rY   rD   rZ   rS   insertr   getattrr5   rX   Zscalerk   )r7   fr[   r\   rC   rD   ZsWr8   r8   r9   _borderDraw   s    
&8  zFlag._borderDrawc                 C   sB   | j pd}| j|}|s8t| d|  }| | j|< | |S )NNoneZ_Flag_)rn   _cachegetr   Z_exploder   )r7   rn   r   r8   r8   r9   rd      s    
z	Flag.drawc                 C   s
   t  | S rr   )copyr6   r8   r8   r9   clone   s    z
Flag.clonec                 C   s   t dd}|  }dd l}|t| t|  }t }||_d|_d|_|	| d}|	t
|j|jd  |jd|  |tjd|d t|jd	 }|	t
|j|j |j|jd  d
tjd|dd |S )Nr:   r0   r   r<   r=   r>   r?   r@         @ZSAMPLEHelvetica-Bold)r4   rA   rB   fontName)r   rv   timeintlenrl   rn   rC   rD   rE   r	   r2   r   rH   gold)r7   rI   namer   ZfxrK   r8   r8   r9   rL      s2    

      z	Flag.democ                 C   s  t }t }|d }|tdd||tjtjdd |tdd|d d||d ||||d  |d|d gtjd dd |td|d d||d |||d |d||d  dgtjd dd |td||d  ||d d	  |d
 ||d d  |d
 d|gtj	d dd |tdd||d d  |d ||d d  |d |d dgtj	d dd |t||||d d  |d
 ||d d  |d
 ||d  |gtj	d dd |t||d ||d d	  |d ||d d  |d |dgtj	d dd |t|d d dd| d |tjd dd |td|d ||d tjd dd |t|d d dd| d |tj	d dd |td|d ||d tj	d dd |S )NrM   r   rR   ?gffffff?g̼?g      .@      $@   g?rz   ffffff?gzG?g{Gz?r{   333333??皙?皙?皙?)
rk   r   rE   r   r   navyrH   r   	mintcreamredr7   r[   r\   wr8   r8   r9   _Flag_UK   s     DDPLPL.&.&zFlag._Flag_UKc              
   C   s  t }t }tdd|d |tjtjdd}|| tdddD ]R}|d }|d dks^tj}ntj}td|||  |d ||d dd}|| q>td||d	  d
| |d	 tj	d dd}|| |d }	|	d }
|d }|d }tdD ]h}tdD ]Z}t
 }|	|_d|d  |	d  | ||  |_tj|_||d |  |
 |_|| qqtdD ]x}tdD ]h}t
 }|	|_d|d  |	d  |d  ||  |_tj|_||d |  |d  |
 |_|| qjq^|S )Nr   rM   rR      g      *@   r{      g?g
ףp=
?r=         "@g      @rQ   r   g      6@ro            ,@g      2@)rk   r   r   r   r   rH   rE   rU   r   darkbluer+   r2   rC   r4   rD   )r7   r[   r\   boxstripecounterstripeheightstripecolorZredorwhitelineblueboxZlssZlss2Zs9Zs7ZstarxcounterZstarycounterZlsr8   r8   r9   	_Flag_USA   sT    
    
"&zFlag._Flag_USAc              	   C   s   t }t }tdd|d |tjtjdd}|| td|d d |d |d tjd dd}|| tdd|d |d tjd dd}|| |S Nr   rM   rR         @r=   r{   )rk   r   r   r   r   rH   rE   	limegreen)r7   r[   r\   r   greenboxblackboxr8   r8   r9   _Flag_Afghanistan  s*      
  
  
zFlag._Flag_Afghanistanc              	   C   s   t }t }tdd|d |tjtjdd}|| tdd|d |d tjd dd}|| td|d d |d |d tjd dd}|| |S Nr   rM   rR   r=   r   r{   )rk   r   r   r   r   rH   rE   r   )r7   r[   r\   r   redbox1Zredbox2r8   r8   r9   _Flag_Austria   s(     
  
  
zFlag._Flag_Austriac              	   C   s   t }t }tdd|d |tjtjdd}|| tdd|d d |tjd dd}|| t|d d d|d d |tjd dd}|| t|d d d|d d |tjd dd}|| |S Nr   rM   rR   r   r=   r{   r   )rk   r   r   r   rH   rE   r   r   )r7   r[   r\   r   box1box2Zbox3r8   r8   r9   _Flag_Belgium2  s6      
  
  
  
zFlag._Flag_Belgiumc                 C   s   t }t }|d  | _}|tdd||tjd dd ||d d|d fdd}|ddd	d |d
ddd |dd	dd |dddd |d
ddd |S )N      ?r   rR   g      4@r=   c           	      S   sL   t  }tj|_||_|| d |_| | | |_|| | |_|| d S )NrM   )	r+   r   r3   r4   r/   r2   rC   rD   rE   )	rC   rD   r2   r/   r\   r   Zx0Zy0r[   r8   r8   r9   addStarN  s    z!Flag._Flag_China.<locals>.addStarrQ   rz   r<   ro   gbXoB@   g~ )m @r   g '0@   g01J@)rk   r   ry   rE   r   r   r   )r7   r[   r\   r   r   r8   r8   r9   _Flag_ChinaH  s    	zFlag._Flag_Chinac              
   C   s   t }t }tdD ]D}td|| d |d |d tjtjg|d  d dd}|| qtddd| d |d d|gtj	d dd}|| t
 }d	| d
 |_|d |_d| d
 |_tj|_|| tdd|d |d tjdd}|| |S )NrQ   r         @rM   r{   r   r=   Zpointsr4   r5   rS         @r   rz   rR   )rk   r   rU   r   r   r   r   rE   r   r   r+   rC   rD   r2   rp   r4   rH   )r7   r[   r\   r`   Zstriperedwedgerc   r   r8   r8   r9   
_Flag_Cuba^  s8      



zFlag._Flag_Cubac              	   C   s   t }t }|d  | _}tdd||tjtjdd}|| t|d d d|d |tjd dd}|| td|d |d	  ||d tjd dd}|| |S 
Nffffff?r   rR   r   rM   g      @r{   r=   g      (@)	rk   r   ry   r   r   r   rH   rE   r   )r7   r[   r\   r   r   Z	whitebox1Z	whitebox2r8   r8   r9   _Flag_Denmark|  s,    
  
  
  
zFlag._Flag_Denmarkc              	   C   s   t }t }tdd|d |tjtjdd}|| t|d dd| |tjd dd}|| td|d |d |d tjd dd}|| |S )Nr   rM   rR   g333333?r   r{   r   )rk   r   r   r   
ghostwhiterH   rE   r   )r7   r[   r\   r   	blueline1	blueline2r8   r8   r9   _Flag_Finland  s*      
  
  
zFlag._Flag_Finlandc              	   C   s   t }t }tdd|d |tjtjdd}|| tdd|d d |tjd dd}|| t|d d d|d d |tjd dd}|| t|d d d|d d |tj	d dd}|| |S r   )
rk   r   r   r   r   rH   rE   bluer   r   )r7   r[   r\   r   r   whiteboxredboxr8   r8   r9   _Flag_France  s.    
  
  

zFlag._Flag_Francec              	   C   s   t }t }tdd|d |tjtjdd}|| td|d d |d |d tjd dd}|| td|d |d |d tjd dd}|| |S r   )rk   r   r   r   r   rH   rE   Z	orangered)r7   r[   r\   r   Z	blackbox1r   r8   r8   r9   _Flag_Germany  s*      
  
  
zFlag._Flag_Germanyc              
   C   s(  t }t }tdd|d |tjtjdd}|| tdddD ]R}|d }|d dks^tj}ntj	}td|||  |d ||d dd}|| q>td||d	  |d	 |d	 tjd dd}|| td||d
  |d	 |tj	d dd}	||	 t|d ||d	  ||d	 tj	d dd}
||
 |S )Nr   rM   rR   	   r   r   r   r{   rQ   rz   )
rk   r   r   r   r   rH   rE   rU   Zdeepskybluer   )r7   r[   r\   r   r   r   r   ZblueorwhitelineZbluebox1
whiteline1
whiteline2r8   r8   r9   _Flag_Greece  sJ     
    
  
  
zFlag._Flag_Greecec              	   C   s   t }t }tdd|d |tjtjdd}|| t|d d dd|d  d |tjd dd}|| td|d  d d|d d |tjd dd}|| |S r   )	rk   r   r   r   forestgreenrH   rE   r   Z
darkorange)r7   r[   r\   r   r   Z	orangeboxr8   r8   r9   _Flag_Ireland  s*      
  
  
zFlag._Flag_Irelandc                 C   s   t }t }|tdd|d |tjd dd |td| d d|d d |tjd dd |td| d d|d d |tjd dd |S )Nr   rM   rR   r   r   r{   )rk   r   rE   r   r   r   r   r   rw   r8   r8   r9   _Flag_Italy  s    "..zFlag._Flag_Italyc                 C   sb   t }t }|d  }| _|tdd||tjd dd |t|d |d d| tjd dd |S )Nr   r   rR   r=   r   Zcxcyr^   r4   r5   rS   )	rk   r   ry   rE   r   r   r   r
   r   r   r8   r8   r9   _Flag_Japan  s    (zFlag._Flag_Japanc              	   C   s   t }t }tdd|d |tjtjdd}|| td|d d |d |d tjd dd}|| tdd|d |d tjd dd}|| |S r   )	rk   r   r   r   r   rH   rE   r   
dodgerbluer7   r[   r\   r   r   r   r8   r8   r9   _Flag_Luxembourg	  s*      
  
  
zFlag._Flag_Luxembourgc              	   C   s   t }t }tdd|d |tjtjdd}|| td|d d |d |d tjd dd}|| tdd|d |d tjd dd}|| |S r   )	rk   r   r   r   r   rH   rE   r   r   r   r8   r8   r9   _Flag_Holland  s*      
  
  
zFlag._Flag_Hollandc                 C   s   t  S rr   )r   r6   r8   r8   r9   _Flag_Portugal+  s    zFlag._Flag_Portugalc                 C   s   t }t }|d  }| _|d }|tdd||tjd dd |td|||tjd dd |tdd| ||tjd dd |S )Nr   r   r   r{   rM   )	rk   r   ry   rE   r   r   r   r   r   )r7   r[   r\   r   tr8   r8   r9   _Flag_Russia.  s    "zFlag._Flag_Russiac                 C   s`   t }t }|d  }| _|tdd||tjd dd |td|d ||d tjd dd |S )Nr   r   r{   r   r=   )rk   r   ry   rE   r   r   r   r3   r   r8   r8   r9   _Flag_Spain8  s    &zFlag._Flag_Spainc              	   C   s   t }t }|d | _tdd| j|tjtjdd}|| t|d d d|d |tjd dd}|| td|d |d	  | j|d tjd dd}|| |S r   )	rk   r   ry   r   r   r   rH   rE   r   )r7   r[   r\   r   r   r   r8   r8   r9   _Flag_Sweden@  s,    
  
  

zFlag._Flag_Swedenc              	   C   s  t }t }|d | _tdd| j|tjtjdd}|| tdd| j|tjtjdd}|| t|d d d|d |tjd dd}|| td|d | j|d tjd dd}|| t|d d dd	| |tj	d dd}|| td|d
 | j|d	 tj	d dd}|| |S )Nr   r   rR   r   rM   r{   r   r   r   r   )
rk   r   ry   r   r   r   rH   rE   r   r   )r7   r[   r\   r   r   r   r   r   r8   r8   r9   _Flag_NorwayS  sP    
  
  
  
  
  
  
zFlag._Flag_Norwayc              	   C   s   t }t }tdd|d |tjtjdd}|| tdd|d |d tjd dd}|| tdd||d d|gtj	d dd}|| |S )Nr   rM   rR   r=   r{   r   )
rk   r   r   r   r   rH   rE   r   r   r   )r7   r[   r\   r   r   Z	bluewedger8   r8   r9   _Flag_CzechRepublicq  s*    

  
zFlag._Flag_CzechRepublicc              	   C   s   t }t }td|d |d |d tjd dd}|| tdd|d |d tjd dd}|| tdd| d |d |d tjd dd}|| tddd| d |d d|gtj	d dd}|| |S )Nr   r   rM   rR   r{   r=   r   )
rk   r   r   r   r   rE   r   rH   r   r   )r7   r[   r\   r   r   r   r   r8   r8   r9   _Flag_Palestine  s6    


  
zFlag._Flag_Palestinec              	   C   s   t }t }tdd|d |tjtjdd}|| t|d d |d |d tjd dd}|| t|d d |d |d	 tjd dd}|| t	 }d
|_
|d |_|d d |jd  |_|d |_tj|_d |_|| |S )Nr   rM   rR   r   r=   r   r   g(\?gQ?   r         ?)rk   r   r   r   r   rH   rE   r
   r   r+   r/   r2   rC   rD   r4   r5   )r7   r[   r\   r   ZwhitecircleZ	redcirclewsr8   r8   r9   _Flag_Turkey  s:    





zFlag._Flag_Turkeyc                 C   s   t }t }|| _|tdd||tjtjdd |t|d |d |d ||d  tj	tj	|d d |t|d |d ||d  |d tj	tj	|d d |S )Nr   rR   r=   g      @rM   r   )
rk   r   ry   rE   r   r   r   rH   r   r   rw   r8   r8   r9   _Flag_Switzerland  s     "  "  zFlag._Flag_Switzerlandc                 C   s   t }t }d|  }| _|tdd||tjd dd |d }|d }|d }|}|}d}	dt |	 }
t|	D ]R}||
 }t	 }t
|| | |_t|| | |_|d |_tj|_|| qn|S )	Nr   r   rR   r=   r   r   rM   r   )rk   r   ry   rE   r   r   r   r   rU   r+   r   rC   r   rD   r2   r   r4   )r7   r[   r\   r   centerxcenteryra   ZyradiusZxradiusZnStarsdeltar`   radZgsr8   r8   r9   _Flag_EU  s(    
zFlag._Flag_EUc                 C   s  t }t }|d }|d  | _}||||fdd}|tdd||tjd dd |td| |d |d |d|  |d|  |d |d d| gtjd dd	 |t	|d |d d
| tj
d dd |t|d d|  dd| ddd| tjd dd	 |t|d |d d| ddd| tjd dd	 |t|d d|  dd| ddd| tj
d dd	 |tdd||d d|  tjd dd |td| |d |d |d d|  |d|  |d |d d| gtjd dd	 |t|d |d d| ddd| tj
d dd	 |dd
d |ddd |ddd |d d!d |dd"d |d#d$d |d$d%d& |dd'd& |d(d)d& |d*d+d& |d,d-d& |d.d/d& |d#d"d& |d!d0d& |d1d2d& |d3d4d5 |dd!d5 |d6d!d5 |d,dd5 |d,d!d5 |d7d!d5 |d8d0d5 |d9d:d5 |d;d0d< |d=d>d< |dd?d@ dA}t|}dB| }dC| }	|d d|  }
d}t|D ]}dt ||  dD }t||	 |
 }t||	 | }|d7krdE| }ndF| }tt|||| dG|d tjdH}|| || q|S )INr   r   c                 S   sR   t  }tj|_|| |_|d | d|   |_|d |d|   |_|| d S )Nr=   r   )r+   r   r   r4   r2   rC   rD   rE   )rC   rD   r2   r\   r   r[   mstr8   r8   r9   r     s    
z"Flag._Flag_Brazil.<locals>.addStarr   rR   g333333?r=   r   g      @r   rM   g      !@r;   gfffffX@g5^I@   i`  r   gH@r0   r   gjt@   gau@g	@r   g      !r   g      g      g      r   g      g      g      ?g      ro   g      rz   irQ   g      g      @g	igr   g      r   r   r   g!r   r   gɿgQ?gir   zORDEM E PROGRESSOg:I%:?g@gGe@n@r   r   r   )r   rB   r5   r4   )rk   r   ry   rE   r   r   Zgreenr   r3   r
   r   r   r   r   rU   r   r   r   r	   rW   )r7   r[   r\   r   r   r   ZsTmpZnTmpr   ra   r   r   r`   r   rC   rD   zZg2r8   r8   r9   _Flag_Brazil  s    @    &  "  &    D  "  

  
zFlag._Flag_BrazilN)/rG   re   rf   rg   rh   r   ri   ZisColorZ	isBoolean	validFlagrj   r   r1   rv   rx   r   rd   r   rL   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   r   r   r   r8   r8   r8   r9   rl      sT   	

,!
 rl   c                 C   s   t  }| |_|S rr   )rl   rn   )r   flagr8   r8   r9   makeFlag2  s    r   c            
      C   s"  d} d}ddddddd	d
dddddddddddddddddg}d }}d}d}|D ]}|sdt dd }t|}||}	||	d!  |_||_|| |t|j|jd"  |jd#|   |tj	d$| d% |	d! r|d& }|	d! r|dk s||d' krRt
|d(| d)|d*   |}|d* }d}qRdS )+zfThis function produces three pdf files with examples of all the signs and symbols from this file.
    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'   r(   r)   i  r   Ni  i  rM   r=   r>   r?   r@   }   r   zflags%02d.pdfzflags.py - Page #%dro   )r   r   indexrC   rD   rE   r	   r2   r   rH   r   Z
drawToFile)
rK   XflagsrD   ZY0r   rI   r   r   r`   r8   r8   r9   test7  sh     


     r  __main__) __version__rg   Zreportlab.libr   Zreportlab.lib.validatorsZreportlab.lib.attrmapZreportlab.graphics.shapesr   r   r   r   r   r	   r
   r   Zreportlab.graphicsr   Z*reportlab.graphics.widgets.signsandsymbolsr   r   mathr   r   r   ZOneOfr   rk   r+   rl   r   r  rG   r8   r8   r8   r9   <module>   sf   (9     37
