o
    vh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re  dS 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BelgiumChinaCubaDenmarkFinlandFranceGermanyGreeceIrelandItalyJapan
LuxembourgHolland	PalestinePortugal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strokeColorr2   self r;   ^/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/reportlab/graphics/widgets/flags.pyr4   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   r3   2   r   
          @333333?middler7   
textAnchorfontSize)r   r.   xyaddr	   r5   	__class____name__r   black)r:   DetlabelFontSizer;   r;   r<   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 ]%}||fD ]}|td  }	||t|	  ||t|	  |d }q/q)t|| j	| j
|d d}
|| j || j| j | j| j  ||
 |S )	N      g     f@$   Z      r>   r7   r8   strokeWidth)floatr5   r   r   r   r   rangeappendr   r7   r8   rotater2   shiftrF   dxrG   dyrH   )r:   sgRrPr2   iradiusthetastarr;   r;   r<   drawj   s,   
$

z	Star.drawN)rJ   
__module____qualname____doc__AttrMapr   AttrMapValueisNumber_attrMap_sizer4   rO   rg   r;   r;   r;   r<   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)r1   r7   borderkindc                 K   s2   t |  d | _d| _tj| _d| _| | d S )Nr3      )	r   r4   rr   r5   r   whiter7   rq   setProperties)r:   kwr;   r;   r<   r4      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 ur|qS Nr;   ).0rF   r;   r;   r<   
<listcomp>   s    z+Flag.availableFlagNames.<locals>.<listcomp>rr   )rn   validate_enumr9   r;   r;   r<   availableFlagNames   s   zFlag.availableFlagNamesc                 C   s2   t }t }|tdd|d |tjtjdd |S )Nr   rP   rU   )ro   r   rH   r   r   purplerK   r:   r^   r_   r;   r;   r<   
_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   _widthrP      _heightwidthheightr7   r8   rV   )r5   r   rH   rF   r\   rG   r]   rV   insertr   getattrr8   r[   scalero   )r:   fr^   r_   rF   rG   sWr;   r;   r<   _borderDraw   s   
&8zFlag._borderDrawc                 C   sB   | j pd}| j|}|st| d|  }| | j|< | |S )NNone_Flag_)rr   _cachegetr   _exploder   )r:   rr   r   r;   r;   r<   rg      s   

z	Flag.drawc                 C   s
   t  | S rw   )copyr9   r;   r;   r<   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=   r3   r   r?   r@   rA   rB   rC         @SAMPLEHelvetica-Bold)r7   rD   rE   fontName)r   r|   timeintlenrp   rr   rF   rG   rH   r	   r5   r   rK   gold)r:   rL   namer   fxrN   r;   r;   r<   rO      s(   

 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 )NrP   r   rU   ?gffffff?g̼?g      .@      $@   g?r   ffffff?gzG?g{Gz?r   333333??皙?皙?皙?)
ro   r   rH   r   r   navyrK   r   	mintcreamredr:   r^   r_   wr;   r;   r<   _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 ])}|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 ]4}tdD ]-}t
 }|	|_d|d  |	d  | ||  |_tj|_||d |  |
 |_|| q|qvtdD ]:}tdD ]3}t
 }|	|_d|d  |	d  |d  ||  |_tj|_||d |  |d  |
 |_|| qq|S )Nr   rP   rU      g      *@   r      g?g
ףp=
?r@         "@g      @rT   r   g      6@rs            ,@g      2@)ro   r   r   r   r   rK   rH   rX   r   darkbluer.   r5   rF   r7   rG   )r:   r^   r_   boxstripecounterstripeheightstripecolorredorwhitelineblueboxlsslss2s9s7starxcounterstarycounterlsr;   r;   r<   	_Flag_USA   sP   

"&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   rP   rU         @r@   r   )ro   r   r   r   r   rK   rH   	limegreen)r:   r^   r_   r   greenboxblackboxr;   r;   r<   _Flag_Afghanistan     



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   rP   rU   r@   r   r   )ro   r   r   r   r   rK   rH   r   )r:   r^   r_   r   redbox1redbox2r;   r;   r<   _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   rP   rU   r   r@   r   r   )ro   r   r   r   rK   rH   r   r   )r:   r^   r_   r   box1box2box3r;   r;   r<   _Flag_Belgium2  s&   




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   rU   g      4@r@   c           	      S   sL   t  }tj|_||_|| d |_| | | |_|| | |_|| d S )NrP   )	r.   r   r6   r7   r2   r5   rF   rG   rH   )	rF   rG   r5   r2   r_   r   x0y0r^   r;   r;   r<   addStarN  s   z!Flag._Flag_China.<locals>.addStarrT   r   r?   rs   gbXoB@   g~ )m @r   g '0@   g01J@)ro   r   r   rH   r   r   r   )r:   r^   r_   r   r   r;   r;   r<   _Flag_ChinaH  s   	zFlag._Flag_Chinac              
   C   s   t }t }t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 )NrT   r         @rP   r   r   r@   pointsr7   r8   rV         @r   r   rU   )ro   r   rX   r   r   r   r   rH   r   r   r.   rF   rG   r5   rt   r7   rK   )r:   r^   r_   rc   striperedwedgerf   r   r;   r;   r<   
_Flag_Cuba^  s4   



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   rU   r   rP   g      @r   r@   g      (@)	ro   r   r   r   r   r   rK   rH   r   )r:   r^   r_   r   r   	whitebox1	whitebox2r;   r;   r<   _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   rP   rU   g333333?r   r   r   )ro   r   r   r   
ghostwhiterK   rH   r   )r:   r^   r_   r   	blueline1	blueline2r;   r;   r<   _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   )
ro   r   r   r   r   rK   rH   bluer   r   )r:   r^   r_   r   r   whiteboxredboxr;   r;   r<   _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   )ro   r   r   r   r   rK   rH   	orangered)r:   r^   r_   r   	blackbox1r   r;   r;   r<   _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 ])}|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   rP   rU   	   r   r   r   r   rT   r   )
ro   r   r   r   r   rK   rH   rX   deepskybluer   )r:   r^   r_   r   r   r   r   blueorwhitelinebluebox1
whiteline1
whiteline2r;   r;   r<   _Flag_Greece  s8   



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   )	ro   r   r   r   forestgreenrK   rH   r   
darkorange)r:   r^   r_   r   r   	orangeboxr;   r;   r<   _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   rP   rU   r   r   r   )ro   r   rH   r   r   r   r   r   r~   r;   r;   r<   _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   rU   r@   r   cxcyra   r7   r8   rV   )	ro   r   r   rH   r   r   r   r
   r   r   r;   r;   r<   _Flag_Japan  s   (zFlag._Flag_Japanc              	   C      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   )	ro   r   r   r   r   rK   rH   r   
dodgerbluer:   r^   r_   r   r   r   r;   r;   r<   _Flag_Luxembourg	  r   zFlag._Flag_Luxembourgc              	   C   r   r   )	ro   r   r   r   r   rK   rH   r   r   r  r;   r;   r<   _Flag_Holland  r   zFlag._Flag_Hollandc                 C   s   t  S rw   )r   r9   r;   r;   r<   _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   rP   )	ro   r   r   rH   r   r   r   r   r   )r:   r^   r_   r   tr;   r;   r<   _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@   )ro   r   r   rH   r   r   r   r6   r   r;   r;   r<   _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   )	ro   r   r   r   r   r  rK   rH   r   )r:   r^   r_   r   r   r   r;   r;   r<   _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   rU   r   rP   r   r   r   r   r   )
ro   r   r   r   r   r   rK   rH   r   r   )r:   r^   r_   r   r   r   r   r   r;   r;   r<   _Flag_NorwayS  s8   








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   rP   rU   r@   r   r   )
ro   r   r   r   r   rK   rH   r   r   r   )r:   r^   r_   r   r   	bluewedger;   r;   r<   _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   rP   rU   r   r@   r   )
ro   r   r   r   r   rH   r   rK   r   r   )r:   r^   r_   r   r   r   r   r;   r;   r<   _Flag_Palestine  s2   



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   rP   rU   r   r@   r   r   g(\?gQ?   r         ?)ro   r   r   r   r   rK   rH   r
   r   r.   r2   r5   rF   rG   r7   r8   )r:   r^   r_   r   whitecircle	redcirclewsr;   r;   r<   _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   rU   r@   g      @rP   r   )
ro   r   r   rH   r   r   r   rK   r   r   r~   r;   r;   r<   _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 ])}||
 }t	 }t
|| | |_t|| | |_|d |_tj|_|| q7|S )	Nr   r   rU   r@   r   r   rP   r   )ro   r   r   rH   r   r   r   r   rX   r.   r   rF   r   rG   r5   r   r7   )r:   r^   r_   r   centerxcenteryrd   yradiusxradiusnStarsdeltarc   radgsr;   r;   r<   _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 ]E}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   r7   r5   rF   rG   rH   )rF   rG   r5   r_   r   r^   mstr;   r;   r<   r     s   
z"Flag._Flag_Brazil.<locals>.addStarr   rU   g333333?r@   r   g      @r   rP   g      !@r>   gfffffX@g5^I@   i`  r   gH@r3   r   gjt@   gau@g	@r   g      !r   g      g      g      r   g      g      g      ?g      rs   g      r   irT   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   rE   r8   r7   )ro   r   r   rH   r   r   greenr   r6   r
   r   r   r   r   rX   r   r   r   r	   rZ   )r:   r^   r_   r  r   r   sTmpnTmpr  rd   r  r  rc   r  rF   rG   zg2r;   r;   r<   _Flag_Brazil  s   @&"&D"


zFlag._Flag_BrazilN)/rJ   rh   ri   rj   rk   r   rl   isColor	isBoolean	validFlagrn   r   r4   r|   r   r   rg   r   rO   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+  r;   r;   r;   r<   rp      sV    	

,!
 rp   c                 C   s   t  }| |_|S rw   )rp   rr   )r   flagr;   r;   r<   makeFlag2  s   r0  c            
      C   s   d} d}g d}d }}d}d}|D ]e}|st dd}t|}||}	||	d	  |_||_|| |t|j|jd
  |jd|   |tj	d| d |	d	 rT|d }|	d	 r\|dk sb||d krwt
|d| d|d   |}|d }d}qd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  rP   r@   rA   rB   rC   }   r   zflags%02d.pdfzflags.py - Page #%drs   )r   r0  indexrF   rG   rH   r	   r5   r   rK   r   
drawToFile)
rN   XflagsrG   Y0r   rL   r   r/  rc   r;   r;   r<   test7  s0   

 
r8  __main__) __version__rj   reportlab.libr   reportlab.lib.validatorsreportlab.lib.attrmapreportlab.graphics.shapesr   r   r   r   r   r	   r
   r   reportlab.graphicsr   *reportlab.graphics.widgets.signsandsymbolsr   r   mathr   r   r   OneOfr.  ro   r.   rp   r0  r8  rJ   r;   r;   r;   r<   <module>   sj   (9     37
